diff --git a/addons/web/static/lib/pdfjs/build/pdf.js b/addons/web/static/lib/pdfjs/build/pdf.js index dcefe070ccf..69bed461cbb 100644 --- a/addons/web/static/lib/pdfjs/build/pdf.js +++ b/addons/web/static/lib/pdfjs/build/pdf.js @@ -1,8 +1,8 @@ /** * @licstart The following is the entire license notice for the - * Javascript code in this page + * JavaScript code in this page * - * Copyright 2019 Mozilla Foundation + * Copyright 2022 Mozilla Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ * limitations under the License. * * @licend The above is the entire license notice for the - * Javascript code in this page + * JavaScript code in this page */ (function webpackUniversalModuleDefinition(root, factory) { @@ -29,257 +29,92 @@ exports["pdfjs-dist/build/pdf"] = factory(); else root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __w_pdfjs_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __w_pdfjs_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __w_pdfjs_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __w_pdfjs_require__.d = function(exports, name, getter) { -/******/ if(!__w_pdfjs_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __w_pdfjs_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __w_pdfjs_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __w_pdfjs_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __w_pdfjs_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __w_pdfjs_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __w_pdfjs_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __w_pdfjs_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var pdfjsVersion = '2.2.228'; -var pdfjsBuild = 'd7afb74a'; - -var pdfjsSharedUtil = __w_pdfjs_require__(1); - -var pdfjsDisplayAPI = __w_pdfjs_require__(147); - -var pdfjsDisplayTextLayer = __w_pdfjs_require__(162); - -var pdfjsDisplayAnnotationLayer = __w_pdfjs_require__(163); - -var pdfjsDisplayDisplayUtils = __w_pdfjs_require__(151); - -var pdfjsDisplaySVG = __w_pdfjs_require__(164); - -var pdfjsDisplayWorkerOptions = __w_pdfjs_require__(156); - -var pdfjsDisplayAPICompatibility = __w_pdfjs_require__(153); - -{ - var isNodeJS = __w_pdfjs_require__(4); - - if (isNodeJS()) { - var PDFNodeStream = __w_pdfjs_require__(165).PDFNodeStream; - - pdfjsDisplayAPI.setPDFNetworkStreamFactory(function (params) { - return new PDFNodeStream(params); - }); - } else { - var PDFNetworkStream = __w_pdfjs_require__(168).PDFNetworkStream; - - var PDFFetchStream; - - if (pdfjsDisplayDisplayUtils.isFetchSupported()) { - PDFFetchStream = __w_pdfjs_require__(169).PDFFetchStream; - } - - pdfjsDisplayAPI.setPDFNetworkStreamFactory(function (params) { - if (PDFFetchStream && pdfjsDisplayDisplayUtils.isValidFetchUrl(params.url)) { - return new PDFFetchStream(params); - } - - return new PDFNetworkStream(params); - }); - } -} -exports.build = pdfjsDisplayAPI.build; -exports.version = pdfjsDisplayAPI.version; -exports.getDocument = pdfjsDisplayAPI.getDocument; -exports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort; -exports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport; -exports.PDFWorker = pdfjsDisplayAPI.PDFWorker; -exports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer; -exports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer; -exports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability; -exports.PasswordResponses = pdfjsSharedUtil.PasswordResponses; -exports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException; -exports.MissingPDFException = pdfjsSharedUtil.MissingPDFException; -exports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics; -exports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding; -exports.CMapCompressionType = pdfjsSharedUtil.CMapCompressionType; -exports.PermissionFlag = pdfjsSharedUtil.PermissionFlag; -exports.UnexpectedResponseException = pdfjsSharedUtil.UnexpectedResponseException; -exports.OPS = pdfjsSharedUtil.OPS; -exports.VerbosityLevel = pdfjsSharedUtil.VerbosityLevel; -exports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES; -exports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl; -exports.createObjectURL = pdfjsSharedUtil.createObjectURL; -exports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters; -exports.shadow = pdfjsSharedUtil.shadow; -exports.Util = pdfjsSharedUtil.Util; -exports.ReadableStream = pdfjsSharedUtil.ReadableStream; -exports.URL = pdfjsSharedUtil.URL; -exports.RenderingCancelledException = pdfjsDisplayDisplayUtils.RenderingCancelledException; -exports.getFilenameFromUrl = pdfjsDisplayDisplayUtils.getFilenameFromUrl; -exports.LinkTarget = pdfjsDisplayDisplayUtils.LinkTarget; -exports.addLinkAttributes = pdfjsDisplayDisplayUtils.addLinkAttributes; -exports.loadScript = pdfjsDisplayDisplayUtils.loadScript; -exports.PDFDateString = pdfjsDisplayDisplayUtils.PDFDateString; -exports.GlobalWorkerOptions = pdfjsDisplayWorkerOptions.GlobalWorkerOptions; -exports.apiCompatibilityParams = pdfjsDisplayAPICompatibility.apiCompatibilityParams; - -/***/ }), +})(globalThis, () => { +return /******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ([ +/* 0 */, /* 1 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); +exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.LINE_FACTOR = exports.LINE_DESCENT_FACTOR = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationEditorType = exports.AnnotationEditorPrefix = exports.AnnotationEditorParamsType = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; exports.arrayByteLength = arrayByteLength; exports.arraysToBytes = arraysToBytes; exports.assert = assert; exports.bytesToString = bytesToString; exports.createPromiseCapability = createPromiseCapability; +exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.escapeString = escapeString; +exports.getModificationDate = getModificationDate; exports.getVerbosityLevel = getVerbosityLevel; exports.info = info; exports.isArrayBuffer = isArrayBuffer; exports.isArrayEqual = isArrayEqual; -exports.isBool = isBool; -exports.isEmptyObj = isEmptyObj; -exports.isNum = isNum; -exports.isString = isString; -exports.isSpace = isSpace; -exports.isSameOrigin = isSameOrigin; -exports.createValidAbsoluteUrl = createValidAbsoluteUrl; -exports.isLittleEndian = isLittleEndian; -exports.isEvalSupported = isEvalSupported; -exports.log2 = log2; -exports.readInt8 = readInt8; -exports.readUint16 = readUint16; -exports.readUint32 = readUint32; -exports.removeNullCharacters = removeNullCharacters; +exports.isAscii = isAscii; +exports.objectFromMap = objectFromMap; +exports.objectSize = objectSize; exports.setVerbosityLevel = setVerbosityLevel; exports.shadow = shadow; exports.string32 = string32; exports.stringToBytes = stringToBytes; exports.stringToPDFString = stringToPDFString; +exports.stringToUTF16BEString = stringToUTF16BEString; exports.stringToUTF8String = stringToUTF8String; +exports.unreachable = unreachable; exports.utf8StringToString = utf8StringToString; exports.warn = warn; -exports.unreachable = unreachable; -Object.defineProperty(exports, "ReadableStream", { - enumerable: true, - get: function get() { - return _streams_polyfill.ReadableStream; - } -}); -Object.defineProperty(exports, "URL", { - enumerable: true, - get: function get() { - return _url_polyfill.URL; - } -}); -exports.createObjectURL = exports.FormatError = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.NativeImageDecoding = exports.MissingPDFException = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = void 0; __w_pdfjs_require__(2); -var _streams_polyfill = __w_pdfjs_require__(143); - -var _url_polyfill = __w_pdfjs_require__(145); - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; +const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; exports.IDENTITY_MATRIX = IDENTITY_MATRIX; -var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; +const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; -var NativeImageDecoding = { - NONE: 'none', - DECODE: 'decode', - DISPLAY: 'display' +const LINE_FACTOR = 1.35; +exports.LINE_FACTOR = LINE_FACTOR; +const LINE_DESCENT_FACTOR = 0.35; +exports.LINE_DESCENT_FACTOR = LINE_DESCENT_FACTOR; +const RenderingIntentFlag = { + ANY: 0x01, + DISPLAY: 0x02, + PRINT: 0x04, + ANNOTATIONS_FORMS: 0x10, + ANNOTATIONS_STORAGE: 0x20, + ANNOTATIONS_DISABLE: 0x40, + OPLIST: 0x100 }; -exports.NativeImageDecoding = NativeImageDecoding; -var PermissionFlag = { +exports.RenderingIntentFlag = RenderingIntentFlag; +const AnnotationMode = { + DISABLE: 0, + ENABLE: 1, + ENABLE_FORMS: 2, + ENABLE_STORAGE: 3 +}; +exports.AnnotationMode = AnnotationMode; +const AnnotationEditorPrefix = "pdfjs_internal_editor_"; +exports.AnnotationEditorPrefix = AnnotationEditorPrefix; +const AnnotationEditorType = { + DISABLE: -1, + NONE: 0, + FREETEXT: 3, + INK: 15 +}; +exports.AnnotationEditorType = AnnotationEditorType; +const AnnotationEditorParamsType = { + FREETEXT_SIZE: 1, + FREETEXT_COLOR: 2, + FREETEXT_OPACITY: 3, + INK_COLOR: 11, + INK_THICKNESS: 12, + INK_OPACITY: 13 +}; +exports.AnnotationEditorParamsType = AnnotationEditorParamsType; +const PermissionFlag = { PRINT: 0x04, MODIFY_CONTENTS: 0x08, COPY: 0x10, @@ -290,7 +125,7 @@ var PermissionFlag = { PRINT_HIGH_QUALITY: 0x800 }; exports.PermissionFlag = PermissionFlag; -var TextRenderingMode = { +const TextRenderingMode = { FILL: 0, STROKE: 1, FILL_STROKE: 2, @@ -303,13 +138,13 @@ var TextRenderingMode = { ADD_TO_PATH_FLAG: 4 }; exports.TextRenderingMode = TextRenderingMode; -var ImageKind = { +const ImageKind = { GRAYSCALE_1BPP: 1, RGB_24BPP: 2, RGBA_32BPP: 3 }; exports.ImageKind = ImageKind; -var AnnotationType = { +const AnnotationType = { TEXT: 1, LINK: 2, FREETEXT: 3, @@ -338,7 +173,30 @@ var AnnotationType = { REDACT: 26 }; exports.AnnotationType = AnnotationType; -var AnnotationFlag = { +const AnnotationStateModelType = { + MARKED: "Marked", + REVIEW: "Review" +}; +exports.AnnotationStateModelType = AnnotationStateModelType; +const AnnotationMarkedState = { + MARKED: "Marked", + UNMARKED: "Unmarked" +}; +exports.AnnotationMarkedState = AnnotationMarkedState; +const AnnotationReviewState = { + ACCEPTED: "Accepted", + REJECTED: "Rejected", + CANCELLED: "Cancelled", + COMPLETED: "Completed", + NONE: "None" +}; +exports.AnnotationReviewState = AnnotationReviewState; +const AnnotationReplyType = { + GROUP: "Group", + REPLY: "R" +}; +exports.AnnotationReplyType = AnnotationReplyType; +const AnnotationFlag = { INVISIBLE: 0x01, HIDDEN: 0x02, PRINT: 0x04, @@ -351,7 +209,7 @@ var AnnotationFlag = { LOCKEDCONTENTS: 0x200 }; exports.AnnotationFlag = AnnotationFlag; -var AnnotationFieldFlag = { +const AnnotationFieldFlag = { READONLY: 0x0000001, REQUIRED: 0x0000002, NOEXPORT: 0x0000004, @@ -373,7 +231,7 @@ var AnnotationFieldFlag = { COMMITONSELCHANGE: 0x4000000 }; exports.AnnotationFieldFlag = AnnotationFieldFlag; -var AnnotationBorderStyleType = { +const AnnotationBorderStyleType = { SOLID: 1, DASHED: 2, BEVELED: 3, @@ -381,46 +239,77 @@ var AnnotationBorderStyleType = { UNDERLINE: 5 }; exports.AnnotationBorderStyleType = AnnotationBorderStyleType; -var StreamType = { - UNKNOWN: 0, - FLATE: 1, - LZW: 2, - DCT: 3, - JPX: 4, - JBIG: 5, - A85: 6, - AHX: 7, - CCF: 8, - RL: 9 +const AnnotationActionEventType = { + E: "Mouse Enter", + X: "Mouse Exit", + D: "Mouse Down", + U: "Mouse Up", + Fo: "Focus", + Bl: "Blur", + PO: "PageOpen", + PC: "PageClose", + PV: "PageVisible", + PI: "PageInvisible", + K: "Keystroke", + F: "Format", + V: "Validate", + C: "Calculate" +}; +exports.AnnotationActionEventType = AnnotationActionEventType; +const DocumentActionEventType = { + WC: "WillClose", + WS: "WillSave", + DS: "DidSave", + WP: "WillPrint", + DP: "DidPrint" +}; +exports.DocumentActionEventType = DocumentActionEventType; +const PageActionEventType = { + O: "PageOpen", + C: "PageClose" +}; +exports.PageActionEventType = PageActionEventType; +const StreamType = { + UNKNOWN: "UNKNOWN", + FLATE: "FLATE", + LZW: "LZW", + DCT: "DCT", + JPX: "JPX", + JBIG: "JBIG", + A85: "A85", + AHX: "AHX", + CCF: "CCF", + RLX: "RLX" }; exports.StreamType = StreamType; -var FontType = { - UNKNOWN: 0, - TYPE1: 1, - TYPE1C: 2, - CIDFONTTYPE0: 3, - CIDFONTTYPE0C: 4, - TRUETYPE: 5, - CIDFONTTYPE2: 6, - TYPE3: 7, - OPENTYPE: 8, - TYPE0: 9, - MMTYPE1: 10 +const FontType = { + UNKNOWN: "UNKNOWN", + TYPE1: "TYPE1", + TYPE1STANDARD: "TYPE1STANDARD", + TYPE1C: "TYPE1C", + CIDFONTTYPE0: "CIDFONTTYPE0", + CIDFONTTYPE0C: "CIDFONTTYPE0C", + TRUETYPE: "TRUETYPE", + CIDFONTTYPE2: "CIDFONTTYPE2", + TYPE3: "TYPE3", + OPENTYPE: "OPENTYPE", + TYPE0: "TYPE0", + MMTYPE1: "MMTYPE1" }; exports.FontType = FontType; -var VerbosityLevel = { +const VerbosityLevel = { ERRORS: 0, WARNINGS: 1, INFOS: 5 }; exports.VerbosityLevel = VerbosityLevel; -var CMapCompressionType = { +const CMapCompressionType = { NONE: 0, BINARY: 1, STREAM: 2 }; exports.CMapCompressionType = CMapCompressionType; -var OPS = { +const OPS = { dependency: 1, setLineWidth: 2, setLineCap: 3, @@ -514,21 +403,37 @@ var OPS = { constructPath: 91 }; exports.OPS = OPS; -var UNSUPPORTED_FEATURES = { - unknown: 'unknown', - forms: 'forms', - javaScript: 'javaScript', - smask: 'smask', - shadingPattern: 'shadingPattern', - font: 'font' +const UNSUPPORTED_FEATURES = { + unknown: "unknown", + forms: "forms", + javaScript: "javaScript", + signatures: "signatures", + smask: "smask", + shadingPattern: "shadingPattern", + font: "font", + errorTilingPattern: "errorTilingPattern", + errorExtGState: "errorExtGState", + errorXObject: "errorXObject", + errorFontLoadType3: "errorFontLoadType3", + errorFontState: "errorFontState", + errorFontMissing: "errorFontMissing", + errorFontTranslate: "errorFontTranslate", + errorColorSpace: "errorColorSpace", + errorOperatorList: "errorOperatorList", + errorFontToUnicode: "errorFontToUnicode", + errorFontLoadNative: "errorFontLoadNative", + errorFontBuildPath: "errorFontBuildPath", + errorFontGetPath: "errorFontGetPath", + errorMarkedContent: "errorMarkedContent", + errorContentSubStream: "errorContentSubStream" }; exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; -var PasswordResponses = { +const PasswordResponses = { NEED_PASSWORD: 1, INCORRECT_PASSWORD: 2 }; exports.PasswordResponses = PasswordResponses; -var verbosity = VerbosityLevel.WARNINGS; +let verbosity = VerbosityLevel.WARNINGS; function setVerbosityLevel(level) { if (Number.isInteger(level)) { @@ -542,13 +447,13 @@ function getVerbosityLevel() { function info(msg) { if (verbosity >= VerbosityLevel.INFOS) { - console.log('Info: ' + msg); + console.log(`Info: ${msg}`); } } function warn(msg) { if (verbosity >= VerbosityLevel.WARNINGS) { - console.log('Warning: ' + msg); + console.log(`Warning: ${msg}`); } } @@ -562,32 +467,17 @@ function assert(cond, msg) { } } -function isSameOrigin(baseUrl, otherUrl) { - try { - var base = new _url_polyfill.URL(baseUrl); - - if (!base.origin || base.origin === 'null') { - return false; - } - } catch (e) { - return false; - } - - var other = new _url_polyfill.URL(otherUrl, base); - return base.origin === other.origin; -} - function _isValidProtocol(url) { if (!url) { return false; } switch (url.protocol) { - case 'http:': - case 'https:': - case 'ftp:': - case 'mailto:': - case 'tel:': + case "http:": + case "https:": + case "ftp:": + case "mailto:": + case "tel:": return true; default: @@ -595,13 +485,32 @@ function _isValidProtocol(url) { } } -function createValidAbsoluteUrl(url, baseUrl) { +function createValidAbsoluteUrl(url) { + let baseUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + if (!url) { return null; } try { - var absoluteUrl = baseUrl ? new _url_polyfill.URL(url, baseUrl) : new _url_polyfill.URL(url); + if (options && typeof url === "string") { + if (options.addDefaultProtocol && url.startsWith("www.")) { + const dots = url.match(/\./g); + + if (dots && dots.length >= 2) { + url = `http://${url}`; + } + } + + if (options.tryConvertEncoding) { + try { + url = stringToUTF8String(url); + } catch (ex) {} + } + } + + const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); if (_isValidProtocol(absoluteUrl)) { return absoluteUrl; @@ -613,7 +522,7 @@ function createValidAbsoluteUrl(url, baseUrl) { function shadow(obj, prop, value) { Object.defineProperty(obj, prop, { - value: value, + value, enumerable: true, configurable: true, writable: false @@ -621,137 +530,122 @@ function shadow(obj, prop, value) { return value; } -var PasswordException = function PasswordExceptionClosure() { - function PasswordException(msg, code) { - this.name = 'PasswordException'; - this.message = msg; +const BaseException = function BaseExceptionClosure() { + function BaseException(message, name) { + if (this.constructor === BaseException) { + unreachable("Cannot initialize BaseException."); + } + + this.message = message; + this.name = name; + } + + BaseException.prototype = new Error(); + BaseException.constructor = BaseException; + return BaseException; +}(); + +exports.BaseException = BaseException; + +class PasswordException extends BaseException { + constructor(msg, code) { + super(msg, "PasswordException"); this.code = code; } - PasswordException.prototype = new Error(); - PasswordException.constructor = PasswordException; - return PasswordException; -}(); +} exports.PasswordException = PasswordException; -var UnknownErrorException = function UnknownErrorExceptionClosure() { - function UnknownErrorException(msg, details) { - this.name = 'UnknownErrorException'; - this.message = msg; +class UnknownErrorException extends BaseException { + constructor(msg, details) { + super(msg, "UnknownErrorException"); this.details = details; } - UnknownErrorException.prototype = new Error(); - UnknownErrorException.constructor = UnknownErrorException; - return UnknownErrorException; -}(); +} exports.UnknownErrorException = UnknownErrorException; -var InvalidPDFException = function InvalidPDFExceptionClosure() { - function InvalidPDFException(msg) { - this.name = 'InvalidPDFException'; - this.message = msg; +class InvalidPDFException extends BaseException { + constructor(msg) { + super(msg, "InvalidPDFException"); } - InvalidPDFException.prototype = new Error(); - InvalidPDFException.constructor = InvalidPDFException; - return InvalidPDFException; -}(); +} exports.InvalidPDFException = InvalidPDFException; -var MissingPDFException = function MissingPDFExceptionClosure() { - function MissingPDFException(msg) { - this.name = 'MissingPDFException'; - this.message = msg; +class MissingPDFException extends BaseException { + constructor(msg) { + super(msg, "MissingPDFException"); } - MissingPDFException.prototype = new Error(); - MissingPDFException.constructor = MissingPDFException; - return MissingPDFException; -}(); +} exports.MissingPDFException = MissingPDFException; -var UnexpectedResponseException = function UnexpectedResponseExceptionClosure() { - function UnexpectedResponseException(msg, status) { - this.name = 'UnexpectedResponseException'; - this.message = msg; +class UnexpectedResponseException extends BaseException { + constructor(msg, status) { + super(msg, "UnexpectedResponseException"); this.status = status; } - UnexpectedResponseException.prototype = new Error(); - UnexpectedResponseException.constructor = UnexpectedResponseException; - return UnexpectedResponseException; -}(); +} exports.UnexpectedResponseException = UnexpectedResponseException; -var FormatError = function FormatErrorClosure() { - function FormatError(msg) { - this.message = msg; +class FormatError extends BaseException { + constructor(msg) { + super(msg, "FormatError"); } - FormatError.prototype = new Error(); - FormatError.prototype.name = 'FormatError'; - FormatError.constructor = FormatError; - return FormatError; -}(); +} exports.FormatError = FormatError; -var AbortException = function AbortExceptionClosure() { - function AbortException(msg) { - this.name = 'AbortException'; - this.message = msg; +class AbortException extends BaseException { + constructor(msg) { + super(msg, "AbortException"); } - AbortException.prototype = new Error(); - AbortException.constructor = AbortException; - return AbortException; -}(); - -exports.AbortException = AbortException; -var NullCharactersRegExp = /\x00/g; - -function removeNullCharacters(str) { - if (typeof str !== 'string') { - warn('The argument for removeNullCharacters must be a string.'); - return str; - } - - return str.replace(NullCharactersRegExp, ''); } +exports.AbortException = AbortException; + function bytesToString(bytes) { - assert(bytes !== null && _typeof(bytes) === 'object' && bytes.length !== undefined, 'Invalid argument for bytesToString'); - var length = bytes.length; - var MAX_ARGUMENT_COUNT = 8192; + if (typeof bytes !== "object" || bytes === null || bytes.length === undefined) { + unreachable("Invalid argument for bytesToString"); + } + + const length = bytes.length; + const MAX_ARGUMENT_COUNT = 8192; if (length < MAX_ARGUMENT_COUNT) { return String.fromCharCode.apply(null, bytes); } - var strBuf = []; + const strBuf = []; - for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) { - var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); - var chunk = bytes.subarray(i, chunkEnd); + for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) { + const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); + const chunk = bytes.subarray(i, chunkEnd); strBuf.push(String.fromCharCode.apply(null, chunk)); } - return strBuf.join(''); + return strBuf.join(""); } function stringToBytes(str) { - assert(typeof str === 'string', 'Invalid argument for stringToBytes'); - var length = str.length; - var bytes = new Uint8Array(length); + if (typeof str !== "string") { + unreachable("Invalid argument for stringToBytes"); + } - for (var i = 0; i < length; ++i) { - bytes[i] = str.charCodeAt(i) & 0xFF; + const length = str.length; + const bytes = new Uint8Array(length); + + for (let i = 0; i < length; ++i) { + bytes[i] = str.charCodeAt(i) & 0xff; } return bytes; @@ -762,41 +656,41 @@ function arrayByteLength(arr) { return arr.length; } - assert(arr.byteLength !== undefined); - return arr.byteLength; + if (arr.byteLength !== undefined) { + return arr.byteLength; + } + + unreachable("Invalid argument for arrayByteLength"); } function arraysToBytes(arr) { - if (arr.length === 1 && arr[0] instanceof Uint8Array) { + const length = arr.length; + + if (length === 1 && arr[0] instanceof Uint8Array) { return arr[0]; } - var resultLength = 0; - var i, - ii = arr.length; - var item, itemLength; + let resultLength = 0; - for (i = 0; i < ii; i++) { - item = arr[i]; - itemLength = arrayByteLength(item); - resultLength += itemLength; + for (let i = 0; i < length; i++) { + resultLength += arrayByteLength(arr[i]); } - var pos = 0; - var data = new Uint8Array(resultLength); + let pos = 0; + const data = new Uint8Array(resultLength); - for (i = 0; i < ii; i++) { - item = arr[i]; + for (let i = 0; i < length; i++) { + let item = arr[i]; if (!(item instanceof Uint8Array)) { - if (typeof item === 'string') { + if (typeof item === "string") { item = stringToBytes(item); } else { item = new Uint8Array(item); } } - itemLength = item.byteLength; + const itemLength = item.byteLength; data.set(item, pos); pos += itemLength; } @@ -808,103 +702,162 @@ function string32(value) { return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); } -function log2(x) { - if (x <= 0) { - return 0; +function objectSize(obj) { + return Object.keys(obj).length; +} + +function objectFromMap(map) { + const obj = Object.create(null); + + for (const [key, value] of map) { + obj[key] = value; } - return Math.ceil(Math.log2(x)); -} - -function readInt8(data, start) { - return data[start] << 24 >> 24; -} - -function readUint16(data, offset) { - return data[offset] << 8 | data[offset + 1]; -} - -function readUint32(data, offset) { - return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0; + return obj; } function isLittleEndian() { - var buffer8 = new Uint8Array(4); + const buffer8 = new Uint8Array(4); buffer8[0] = 1; - var view32 = new Uint32Array(buffer8.buffer, 0, 1); + const view32 = new Uint32Array(buffer8.buffer, 0, 1); return view32[0] === 1; } function isEvalSupported() { try { - new Function(''); + new Function(""); return true; } catch (e) { return false; } } -var Util = function UtilClosure() { - function Util() {} +class FeatureTest { + static get isLittleEndian() { + return shadow(this, "isLittleEndian", isLittleEndian()); + } - var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')']; + static get isEvalSupported() { + return shadow(this, "isEvalSupported", isEvalSupported()); + } - Util.makeCssRgb = function Util_makeCssRgb(r, g, b) { - rgbBuf[1] = r; - rgbBuf[3] = g; - rgbBuf[5] = b; - return rgbBuf.join(''); - }; + static get isOffscreenCanvasSupported() { + return shadow(this, "isOffscreenCanvasSupported", typeof OffscreenCanvas !== "undefined"); + } - Util.transform = function Util_transform(m1, m2) { +} + +exports.FeatureTest = FeatureTest; +const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0")); + +class Util { + static makeHexColor(r, g, b) { + return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`; + } + + static scaleMinMax(transform, minMax) { + let temp; + + if (transform[0]) { + if (transform[0] < 0) { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + } + + minMax[0] *= transform[0]; + minMax[1] *= transform[0]; + + if (transform[3] < 0) { + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + } + + minMax[2] *= transform[3]; + minMax[3] *= transform[3]; + } else { + temp = minMax[0]; + minMax[0] = minMax[2]; + minMax[2] = temp; + temp = minMax[1]; + minMax[1] = minMax[3]; + minMax[3] = temp; + + if (transform[1] < 0) { + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + } + + minMax[2] *= transform[1]; + minMax[3] *= transform[1]; + + if (transform[2] < 0) { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + } + + minMax[0] *= transform[2]; + minMax[1] *= transform[2]; + } + + minMax[0] += transform[4]; + minMax[1] += transform[4]; + minMax[2] += transform[5]; + minMax[3] += transform[5]; + } + + static transform(m1, m2) { return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]]; - }; + } - Util.applyTransform = function Util_applyTransform(p, m) { - var xt = p[0] * m[0] + p[1] * m[2] + m[4]; - var yt = p[0] * m[1] + p[1] * m[3] + m[5]; + static applyTransform(p, m) { + const xt = p[0] * m[0] + p[1] * m[2] + m[4]; + const yt = p[0] * m[1] + p[1] * m[3] + m[5]; return [xt, yt]; - }; + } - Util.applyInverseTransform = function Util_applyInverseTransform(p, m) { - var d = m[0] * m[3] - m[1] * m[2]; - var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; - var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; + static applyInverseTransform(p, m) { + const d = m[0] * m[3] - m[1] * m[2]; + const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; + const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; return [xt, yt]; - }; + } - Util.getAxialAlignedBoundingBox = function Util_getAxialAlignedBoundingBox(r, m) { - var p1 = Util.applyTransform(r, m); - var p2 = Util.applyTransform(r.slice(2, 4), m); - var p3 = Util.applyTransform([r[0], r[3]], m); - var p4 = Util.applyTransform([r[2], r[1]], m); + static getAxialAlignedBoundingBox(r, m) { + const p1 = Util.applyTransform(r, m); + const p2 = Util.applyTransform(r.slice(2, 4), m); + const p3 = Util.applyTransform([r[0], r[3]], m); + const p4 = Util.applyTransform([r[2], r[1]], m); return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])]; - }; + } - Util.inverseTransform = function Util_inverseTransform(m) { - var d = m[0] * m[3] - m[1] * m[2]; + static inverseTransform(m) { + const d = m[0] * m[3] - m[1] * m[2]; return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d]; - }; + } - Util.apply3dTransform = function Util_apply3dTransform(m, v) { + static apply3dTransform(m, v) { return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]]; - }; + } - Util.singularValueDecompose2dScale = function Util_singularValueDecompose2dScale(m) { - var transpose = [m[0], m[2], m[1], m[3]]; - var a = m[0] * transpose[0] + m[1] * transpose[2]; - var b = m[0] * transpose[1] + m[1] * transpose[3]; - var c = m[2] * transpose[0] + m[3] * transpose[2]; - var d = m[2] * transpose[1] + m[3] * transpose[3]; - var first = (a + d) / 2; - var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2; - var sx = first + second || 1; - var sy = first - second || 1; + static singularValueDecompose2dScale(m) { + const transpose = [m[0], m[2], m[1], m[3]]; + const a = m[0] * transpose[0] + m[1] * transpose[2]; + const b = m[0] * transpose[1] + m[1] * transpose[3]; + const c = m[2] * transpose[0] + m[3] * transpose[2]; + const d = m[2] * transpose[1] + m[3] * transpose[3]; + const first = (a + d) / 2; + const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2; + const sx = first + second || 1; + const sy = first - second || 1; return [Math.sqrt(sx), Math.sqrt(sy)]; - }; + } - Util.normalizeRect = function Util_normalizeRect(rect) { - var r = rect.slice(0); + static normalizeRect(rect) { + const r = rect.slice(0); if (rect[0] > rect[2]) { r[0] = rect[2]; @@ -917,59 +870,160 @@ var Util = function UtilClosure() { } return r; - }; + } - Util.intersect = function Util_intersect(rect1, rect2) { - function compare(a, b) { - return a - b; + static intersect(rect1, rect2) { + const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2])); + const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2])); + + if (xLow > xHigh) { + return null; } - var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare), - orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare), - result = []; - rect1 = Util.normalizeRect(rect1); - rect2 = Util.normalizeRect(rect2); + const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3])); + const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3])); - if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) { - result[0] = orderedX[1]; - result[2] = orderedX[2]; - } else { - return false; + if (yLow > yHigh) { + return null; } - if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) { - result[1] = orderedY[1]; - result[3] = orderedY[2]; - } else { - return false; + return [xLow, yLow, xHigh, yHigh]; + } + + static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) { + const tvalues = [], + bounds = [[], []]; + let a, b, c, t, t1, t2, b2ac, sqrtb2ac; + + for (let i = 0; i < 2; ++i) { + if (i === 0) { + b = 6 * x0 - 12 * x1 + 6 * x2; + a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3; + c = 3 * x1 - 3 * x0; + } else { + b = 6 * y0 - 12 * y1 + 6 * y2; + a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3; + c = 3 * y1 - 3 * y0; + } + + if (Math.abs(a) < 1e-12) { + if (Math.abs(b) < 1e-12) { + continue; + } + + t = -c / b; + + if (0 < t && t < 1) { + tvalues.push(t); + } + + continue; + } + + b2ac = b * b - 4 * c * a; + sqrtb2ac = Math.sqrt(b2ac); + + if (b2ac < 0) { + continue; + } + + t1 = (-b + sqrtb2ac) / (2 * a); + + if (0 < t1 && t1 < 1) { + tvalues.push(t1); + } + + t2 = (-b - sqrtb2ac) / (2 * a); + + if (0 < t2 && t2 < 1) { + tvalues.push(t2); + } } - return result; - }; + let j = tvalues.length, + mt; + const jlen = j; - return Util; -}(); + while (j--) { + t = tvalues[j]; + mt = 1 - t; + bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3; + bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3; + } + + bounds[0][jlen] = x0; + bounds[1][jlen] = y0; + bounds[0][jlen + 1] = x3; + bounds[1][jlen + 1] = y3; + bounds[0].length = bounds[1].length = jlen + 2; + return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])]; + } + +} exports.Util = Util; -var PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC]; +const PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]; function stringToPDFString(str) { - var i, - n = str.length, - strBuf = []; + if (str[0] >= "\xEF") { + let encoding; - if (str[0] === '\xFE' && str[1] === '\xFF') { - for (i = 2; i < n; i += 2) { - strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1))); + if (str[0] === "\xFE" && str[1] === "\xFF") { + encoding = "utf-16be"; + } else if (str[0] === "\xFF" && str[1] === "\xFE") { + encoding = "utf-16le"; + } else if (str[0] === "\xEF" && str[1] === "\xBB" && str[2] === "\xBF") { + encoding = "utf-8"; } - } else { - for (i = 0; i < n; ++i) { - var code = PDFStringTranslateTable[str.charCodeAt(i)]; - strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); + + if (encoding) { + try { + const decoder = new TextDecoder(encoding, { + fatal: true + }); + const buffer = stringToBytes(str); + return decoder.decode(buffer); + } catch (ex) { + warn(`stringToPDFString: "${ex}".`); + } } } - return strBuf.join(''); + const strBuf = []; + + for (let i = 0, ii = str.length; i < ii; i++) { + const code = PDFStringTranslateTable[str.charCodeAt(i)]; + strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); + } + + return strBuf.join(""); +} + +function escapeString(str) { + return str.replace(/([()\\\n\r])/g, match => { + if (match === "\n") { + return "\\n"; + } else if (match === "\r") { + return "\\r"; + } + + return `\\${match}`; + }); +} + +function isAscii(str) { + return /^[\x00-\x7F]*$/.test(str); +} + +function stringToUTF16BEString(str) { + const buf = ["\xFE\xFF"]; + + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.charCodeAt(i); + buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff)); + } + + return buf.join(""); } function stringToUTF8String(str) { @@ -980,28 +1034,8 @@ function utf8StringToString(str) { return unescape(encodeURIComponent(str)); } -function isEmptyObj(obj) { - for (var key in obj) { - return false; - } - - return true; -} - -function isBool(v) { - return typeof v === 'boolean'; -} - -function isNum(v) { - return typeof v === 'number'; -} - -function isString(v) { - return typeof v === 'string'; -} - function isArrayBuffer(v) { - return _typeof(v) === 'object' && v !== null && v.byteLength !== undefined; + return typeof v === "object" && v !== null && v.byteLength !== undefined; } function isArrayEqual(arr1, arr2) { @@ -1009,22 +1043,29 @@ function isArrayEqual(arr1, arr2) { return false; } - return arr1.every(function (element, index) { - return element === arr2[index]; - }); + for (let i = 0, ii = arr1.length; i < ii; i++) { + if (arr1[i] !== arr2[i]) { + return false; + } + } + + return true; } -function isSpace(ch) { - return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A; +function getModificationDate() { + let date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date(); + const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")]; + return buffer.join(""); } function createPromiseCapability() { - var capability = Object.create(null); - var isSettled = false; - Object.defineProperty(capability, 'settled', { - get: function get() { + const capability = Object.create(null); + let isSettled = false; + Object.defineProperty(capability, "settled", { + get() { return isSettled; } + }); capability.promise = new Promise(function (resolve, reject) { capability.resolve = function (data) { @@ -1040,8862 +1081,3448 @@ function createPromiseCapability() { return capability; } -var createObjectURL = function createObjectURLClosure() { - var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - return function createObjectURL(data, contentType) { - var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - if (!forceDataSchema && _url_polyfill.URL.createObjectURL) { - var blob = new Blob([data], { - type: contentType - }); - return _url_polyfill.URL.createObjectURL(blob); - } - - var buffer = 'data:' + contentType + ';base64,'; - - for (var i = 0, ii = data.length; i < ii; i += 3) { - var b1 = data[i] & 0xFF; - var b2 = data[i + 1] & 0xFF; - var b3 = data[i + 2] & 0xFF; - var d1 = b1 >> 2, - d2 = (b1 & 3) << 4 | b2 >> 4; - var d3 = i + 1 < ii ? (b2 & 0xF) << 2 | b3 >> 6 : 64; - var d4 = i + 2 < ii ? b3 & 0x3F : 64; - buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4]; - } - - return buffer; - }; -}(); - -exports.createObjectURL = createObjectURL; - /***/ }), /* 2 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } +var _is_node = __w_pdfjs_require__(3); -var globalScope = __w_pdfjs_require__(3); - -if (!globalScope._pdfjsCompatibilityChecked) { - globalScope._pdfjsCompatibilityChecked = true; - - var isNodeJS = __w_pdfjs_require__(4); - - var hasDOM = (typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object' && (typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object'; +if (!globalThis._pdfjsCompatibilityChecked) { + globalThis._pdfjsCompatibilityChecked = true; (function checkNodeBtoa() { - if (globalScope.btoa || !isNodeJS()) { + if (globalThis.btoa || !_is_node.isNodeJS) { return; } - globalScope.btoa = function (chars) { - return Buffer.from(chars, 'binary').toString('base64'); + globalThis.btoa = function (chars) { + return Buffer.from(chars, "binary").toString("base64"); }; })(); (function checkNodeAtob() { - if (globalScope.atob || !isNodeJS()) { + if (globalThis.atob || !_is_node.isNodeJS) { return; } - globalScope.atob = function (input) { - return Buffer.from(input, 'base64').toString('binary'); + globalThis.atob = function (input) { + return Buffer.from(input, "base64").toString("binary"); }; })(); - (function checkChildNodeRemove() { - if (!hasDOM) { + (function checkDOMMatrix() { + if (globalThis.DOMMatrix || !_is_node.isNodeJS) { return; } - if (typeof Element.prototype.remove !== 'undefined') { - return; - } - - Element.prototype.remove = function () { - if (this.parentNode) { - this.parentNode.removeChild(this); - } - }; + globalThis.DOMMatrix = require("dommatrix/dist/dommatrix.js"); })(); - (function checkDOMTokenListAddRemove() { - if (!hasDOM || isNodeJS()) { + (function checkReadableStream() { + if (globalThis.ReadableStream || !_is_node.isNodeJS) { return; } - var div = document.createElement('div'); - div.classList.add('testOne', 'testTwo'); - - if (div.classList.contains('testOne') === true && div.classList.contains('testTwo') === true) { - return; - } - - var OriginalDOMTokenListAdd = DOMTokenList.prototype.add; - var OriginalDOMTokenListRemove = DOMTokenList.prototype.remove; - - DOMTokenList.prototype.add = function () { - for (var _len = arguments.length, tokens = new Array(_len), _key = 0; _key < _len; _key++) { - tokens[_key] = arguments[_key]; - } - - for (var _i = 0, _tokens = tokens; _i < _tokens.length; _i++) { - var token = _tokens[_i]; - OriginalDOMTokenListAdd.call(this, token); - } - }; - - DOMTokenList.prototype.remove = function () { - for (var _len2 = arguments.length, tokens = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - tokens[_key2] = arguments[_key2]; - } - - for (var _i2 = 0, _tokens2 = tokens; _i2 < _tokens2.length; _i2++) { - var token = _tokens2[_i2]; - OriginalDOMTokenListRemove.call(this, token); - } - }; + globalThis.ReadableStream = require("web-streams-polyfill/dist/ponyfill.js").ReadableStream; })(); - (function checkDOMTokenListToggle() { - if (!hasDOM || isNodeJS()) { + (function checkArrayAt() { + if (Array.prototype.at) { return; } - var div = document.createElement('div'); - - if (div.classList.toggle('test', 0) === false) { - return; - } - - DOMTokenList.prototype.toggle = function (token) { - var force = arguments.length > 1 ? !!arguments[1] : !this.contains(token); - return this[force ? 'add' : 'remove'](token), force; - }; + __w_pdfjs_require__(4); })(); - (function checkStringStartsWith() { - if (String.prototype.startsWith) { + (function checkTypedArrayAt() { + if (Uint8Array.prototype.at) { return; } - __w_pdfjs_require__(5); + __w_pdfjs_require__(76); })(); - (function checkStringEndsWith() { - if (String.prototype.endsWith) { + (function checkStructuredClone() { + if (globalThis.structuredClone) { return; } - __w_pdfjs_require__(36); - })(); - - (function checkStringIncludes() { - if (String.prototype.includes) { - return; - } - - __w_pdfjs_require__(38); - })(); - - (function checkArrayIncludes() { - if (Array.prototype.includes) { - return; - } - - __w_pdfjs_require__(40); - })(); - - (function checkArrayFrom() { - if (Array.from) { - return; - } - - __w_pdfjs_require__(47); - })(); - - (function checkObjectAssign() { - if (Object.assign) { - return; - } - - __w_pdfjs_require__(70); - })(); - - (function checkMathLog2() { - if (Math.log2) { - return; - } - - Math.log2 = __w_pdfjs_require__(75); - })(); - - (function checkNumberIsNaN() { - if (Number.isNaN) { - return; - } - - Number.isNaN = __w_pdfjs_require__(77); - })(); - - (function checkNumberIsInteger() { - if (Number.isInteger) { - return; - } - - Number.isInteger = __w_pdfjs_require__(79); - })(); - - (function checkPromise() { - if (globalScope.Promise && globalScope.Promise.prototype && globalScope.Promise.prototype["finally"]) { - return; - } - - globalScope.Promise = __w_pdfjs_require__(82); - })(); - - (function checkWeakMap() { - if (globalScope.WeakMap) { - return; - } - - globalScope.WeakMap = __w_pdfjs_require__(102); - })(); - - (function checkWeakSet() { - if (globalScope.WeakSet) { - return; - } - - globalScope.WeakSet = __w_pdfjs_require__(119); - })(); - - (function checkStringCodePointAt() { - if (String.codePointAt) { - return; - } - - String.codePointAt = __w_pdfjs_require__(123); - })(); - - (function checkStringFromCodePoint() { - if (String.fromCodePoint) { - return; - } - - String.fromCodePoint = __w_pdfjs_require__(125); - })(); - - (function checkSymbol() { - if (globalScope.Symbol) { - return; - } - - __w_pdfjs_require__(127); - })(); - - (function checkStringPadStart() { - if (String.prototype.padStart) { - return; - } - - __w_pdfjs_require__(134); - })(); - - (function checkStringPadEnd() { - if (String.prototype.padEnd) { - return; - } - - __w_pdfjs_require__(138); - })(); - - (function checkObjectValues() { - if (Object.values) { - return; - } - - Object.values = __w_pdfjs_require__(140); + __w_pdfjs_require__(86); })(); } /***/ }), /* 3 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports) => { "use strict"; -module.exports = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : {}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isNodeJS = void 0; +const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser"); +exports.isNodeJS = isNodeJS; /***/ }), /* 4 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -module.exports = function isNodeJS() { - return (typeof process === "undefined" ? "undefined" : _typeof(process)) === 'object' && process + '' === '[object process]' && !process.versions['nw'] && !process.versions['electron']; -}; +__w_pdfjs_require__(5); +var entryUnbind = __w_pdfjs_require__(75); +module.exports = entryUnbind('Array', 'at'); /***/ }), /* 5 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -__w_pdfjs_require__(6); - -module.exports = __w_pdfjs_require__(9).String.startsWith; +var $ = __w_pdfjs_require__(6); +var toObject = __w_pdfjs_require__(41); +var lengthOfArrayLike = __w_pdfjs_require__(65); +var toIntegerOrInfinity = __w_pdfjs_require__(63); +var addToUnscopables = __w_pdfjs_require__(70); +$({ + target: 'Array', + proto: true +}, { + at: function at(index) { + var O = toObject(this); + var len = lengthOfArrayLike(O); + var relativeIndex = toIntegerOrInfinity(index); + var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex; + return k < 0 || k >= len ? undefined : O[k]; + } +}); +addToUnscopables('at'); /***/ }), /* 6 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(7); - -var toLength = __w_pdfjs_require__(28); - -var context = __w_pdfjs_require__(30); - -var STARTS_WITH = 'startsWith'; -var $startsWith = ''[STARTS_WITH]; -$export($export.P + $export.F * __w_pdfjs_require__(35)(STARTS_WITH), 'String', { - startsWith: function startsWith(searchString) { - var that = context(this, searchString, STARTS_WITH); - var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length)); - var search = String(searchString); - return $startsWith ? $startsWith.call(that, search, index) : that.slice(index, index + search.length) === search; +var global = __w_pdfjs_require__(7); +var getOwnPropertyDescriptor = (__w_pdfjs_require__(8).f); +var createNonEnumerableProperty = __w_pdfjs_require__(45); +var defineBuiltIn = __w_pdfjs_require__(49); +var defineGlobalProperty = __w_pdfjs_require__(39); +var copyConstructorProperties = __w_pdfjs_require__(57); +var isForced = __w_pdfjs_require__(69); +module.exports = function (options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = global; + } else if (STATIC) { + target = global[TARGET] || defineGlobalProperty(TARGET, {}); + } else { + target = (global[TARGET] || {}).prototype; + } + if (target) + for (key in source) { + sourceProperty = source[key]; + if (options.dontCallGetSet) { + descriptor = getOwnPropertyDescriptor(target, key); + targetProperty = descriptor && descriptor.value; + } else + targetProperty = target[key]; + FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); + if (!FORCED && targetProperty !== undefined) { + if (typeof sourceProperty == typeof targetProperty) + continue; + copyConstructorProperties(sourceProperty, targetProperty); + } + if (options.sham || targetProperty && targetProperty.sham) { + createNonEnumerableProperty(sourceProperty, 'sham', true); + } + defineBuiltIn(target, key, sourceProperty, options); } -}); +}; /***/ }), /* 7 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var global = __w_pdfjs_require__(8); - -var core = __w_pdfjs_require__(9); - -var hide = __w_pdfjs_require__(10); - -var redefine = __w_pdfjs_require__(20); - -var ctx = __w_pdfjs_require__(26); - -var PROTOTYPE = 'prototype'; - -var $export = function $export(type, name, source) { - var IS_FORCED = type & $export.F; - var IS_GLOBAL = type & $export.G; - var IS_STATIC = type & $export.S; - var IS_PROTO = type & $export.P; - var IS_BIND = type & $export.B; - var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]; - var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); - var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); - var key, own, out, exp; - if (IS_GLOBAL) source = name; - - for (key in source) { - own = !IS_FORCED && target && target[key] !== undefined; - out = (own ? target : source)[key]; - exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; - if (target) redefine(target, key, out, type & $export.U); - if (exports[key] != out) hide(exports, key, exp); - if (IS_PROTO && expProto[key] != out) expProto[key] = out; - } +var check = function (it) { + return it && it.Math == Math && it; }; - -global.core = core; -$export.F = 1; -$export.G = 2; -$export.S = 4; -$export.P = 8; -$export.B = 16; -$export.W = 32; -$export.U = 64; -$export.R = 128; -module.exports = $export; +module.exports = check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || check(typeof self == 'object' && self) || check(typeof global == 'object' && global) || (function () { + return this; +}()) || Function('return this')(); /***/ }), /* 8 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; - - -var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); -if (typeof __g == 'number') __g = global; +var DESCRIPTORS = __w_pdfjs_require__(9); +var call = __w_pdfjs_require__(11); +var propertyIsEnumerableModule = __w_pdfjs_require__(13); +var createPropertyDescriptor = __w_pdfjs_require__(14); +var toIndexedObject = __w_pdfjs_require__(15); +var toPropertyKey = __w_pdfjs_require__(20); +var hasOwn = __w_pdfjs_require__(40); +var IE8_DOM_DEFINE = __w_pdfjs_require__(43); +var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; +exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPropertyKey(P); + if (IE8_DOM_DEFINE) + try { + return $getOwnPropertyDescriptor(O, P); + } catch (error) { + } + if (hasOwn(O, P)) + return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]); +}; /***/ }), /* 9 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var core = module.exports = { - version: '2.6.9' -}; -if (typeof __e == 'number') __e = core; +var fails = __w_pdfjs_require__(10); +module.exports = !fails(function () { + return Object.defineProperty({}, 1, { + get: function () { + return 7; + } + })[1] != 7; +}); /***/ }), /* 10 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var dP = __w_pdfjs_require__(11); - -var createDesc = __w_pdfjs_require__(19); - -module.exports = __w_pdfjs_require__(15) ? function (object, key, value) { - return dP.f(object, key, createDesc(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; +module.exports = function (exec) { + try { + return !!exec(); + } catch (error) { + return true; + } }; /***/ }), /* 11 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var anObject = __w_pdfjs_require__(12); - -var IE8_DOM_DEFINE = __w_pdfjs_require__(14); - -var toPrimitive = __w_pdfjs_require__(18); - -var dP = Object.defineProperty; -exports.f = __w_pdfjs_require__(15) ? Object.defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return dP(O, P, Attributes); - } catch (e) {} - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; +var NATIVE_BIND = __w_pdfjs_require__(12); +var call = Function.prototype.call; +module.exports = NATIVE_BIND ? call.bind(call) : function () { + return call.apply(call, arguments); }; /***/ }), /* 12 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var isObject = __w_pdfjs_require__(13); - -module.exports = function (it) { - if (!isObject(it)) throw TypeError(it + ' is not an object!'); - return it; -}; +var fails = __w_pdfjs_require__(10); +module.exports = !fails(function () { + var test = function () { + }.bind(); + return typeof test != 'function' || test.hasOwnProperty('prototype'); +}); /***/ }), /* 13 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports) => { "use strict"; - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -module.exports = function (it) { - return _typeof(it) === 'object' ? it !== null : typeof it === 'function'; -}; +var $propertyIsEnumerable = {}.propertyIsEnumerable; +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; +var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1); +exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; +} : $propertyIsEnumerable; /***/ }), /* 14 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -module.exports = !__w_pdfjs_require__(15) && !__w_pdfjs_require__(16)(function () { - return Object.defineProperty(__w_pdfjs_require__(17)('div'), 'a', { - get: function get() { - return 7; - } - }).a != 7; -}); - -/***/ }), -/* 15 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -module.exports = !__w_pdfjs_require__(16)(function () { - return Object.defineProperty({}, 'a', { - get: function get() { - return 7; - } - }).a != 7; -}); - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -module.exports = function (exec) { - try { - return !!exec(); - } catch (e) { - return true; - } +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; }; /***/ }), -/* 17 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var isObject = __w_pdfjs_require__(13); - -var document = __w_pdfjs_require__(8).document; - -var is = isObject(document) && isObject(document.createElement); +/* 15 */ +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { +var IndexedObject = __w_pdfjs_require__(16); +var requireObjectCoercible = __w_pdfjs_require__(19); module.exports = function (it) { - return is ? document.createElement(it) : {}; + return IndexedObject(requireObjectCoercible(it)); +}; + +/***/ }), +/* 16 */ +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { + +var uncurryThis = __w_pdfjs_require__(17); +var fails = __w_pdfjs_require__(10); +var classof = __w_pdfjs_require__(18); +var $Object = Object; +var split = uncurryThis(''.split); +module.exports = fails(function () { + return !$Object('z').propertyIsEnumerable(0); +}) ? function (it) { + return classof(it) == 'String' ? split(it, '') : $Object(it); +} : $Object; + +/***/ }), +/* 17 */ +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { + +var NATIVE_BIND = __w_pdfjs_require__(12); +var FunctionPrototype = Function.prototype; +var bind = FunctionPrototype.bind; +var call = FunctionPrototype.call; +var uncurryThis = NATIVE_BIND && bind.bind(call, call); +module.exports = NATIVE_BIND ? function (fn) { + return fn && uncurryThis(fn); +} : function (fn) { + return fn && function () { + return call.apply(fn, arguments); + }; }; /***/ }), /* 18 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var isObject = __w_pdfjs_require__(13); - -module.exports = function (it, S) { - if (!isObject(it)) return it; - var fn, val; - if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; - if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - throw TypeError("Can't convert object to primitive value"); +var uncurryThis = __w_pdfjs_require__(17); +var toString = uncurryThis({}.toString); +var stringSlice = uncurryThis(''.slice); +module.exports = function (it) { + return stringSlice(toString(it), 8, -1); }; /***/ }), /* 19 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; +var $TypeError = TypeError; +module.exports = function (it) { + if (it == undefined) + throw $TypeError("Can't call method on " + it); + return it; }; /***/ }), /* 20 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var global = __w_pdfjs_require__(8); - -var hide = __w_pdfjs_require__(10); - -var has = __w_pdfjs_require__(21); - -var SRC = __w_pdfjs_require__(22)('src'); - -var $toString = __w_pdfjs_require__(23); - -var TO_STRING = 'toString'; -var TPL = ('' + $toString).split(TO_STRING); - -__w_pdfjs_require__(9).inspectSource = function (it) { - return $toString.call(it); +var toPrimitive = __w_pdfjs_require__(21); +var isSymbol = __w_pdfjs_require__(24); +module.exports = function (argument) { + var key = toPrimitive(argument, 'string'); + return isSymbol(key) ? key : key + ''; }; -(module.exports = function (O, key, val, safe) { - var isFunction = typeof val == 'function'; - if (isFunction) has(val, 'name') || hide(val, 'name', key); - if (O[key] === val) return; - if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); - - if (O === global) { - O[key] = val; - } else if (!safe) { - delete O[key]; - hide(O, key, val); - } else if (O[key]) { - O[key] = val; - } else { - hide(O, key, val); - } -})(Function.prototype, TO_STRING, function toString() { - return typeof this == 'function' && this[SRC] || $toString.call(this); -}); - /***/ }), /* 21 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var hasOwnProperty = {}.hasOwnProperty; - -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); +var call = __w_pdfjs_require__(11); +var isObject = __w_pdfjs_require__(22); +var isSymbol = __w_pdfjs_require__(24); +var getMethod = __w_pdfjs_require__(31); +var ordinaryToPrimitive = __w_pdfjs_require__(34); +var wellKnownSymbol = __w_pdfjs_require__(35); +var $TypeError = TypeError; +var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); +module.exports = function (input, pref) { + if (!isObject(input) || isSymbol(input)) + return input; + var exoticToPrim = getMethod(input, TO_PRIMITIVE); + var result; + if (exoticToPrim) { + if (pref === undefined) + pref = 'default'; + result = call(exoticToPrim, input, pref); + if (!isObject(result) || isSymbol(result)) + return result; + throw $TypeError("Can't convert object to primitive value"); + } + if (pref === undefined) + pref = 'number'; + return ordinaryToPrimitive(input, pref); }; /***/ }), /* 22 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var id = 0; -var px = Math.random(); - -module.exports = function (key) { - return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +var isCallable = __w_pdfjs_require__(23); +module.exports = function (it) { + return typeof it == 'object' ? it !== null : isCallable(it); }; /***/ }), /* 23 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -module.exports = __w_pdfjs_require__(24)('native-function-to-string', Function.toString); +module.exports = function (argument) { + return typeof argument == 'function'; +}; /***/ }), /* 24 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var core = __w_pdfjs_require__(9); - -var global = __w_pdfjs_require__(8); - -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || (global[SHARED] = {}); -(module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: core.version, - mode: __w_pdfjs_require__(25) ? 'pure' : 'global', - copyright: '© 2019 Denis Pushkarev (zloirock.ru)' -}); +var getBuiltIn = __w_pdfjs_require__(25); +var isCallable = __w_pdfjs_require__(23); +var isPrototypeOf = __w_pdfjs_require__(26); +var USE_SYMBOL_AS_UID = __w_pdfjs_require__(27); +var $Object = Object; +module.exports = USE_SYMBOL_AS_UID ? function (it) { + return typeof it == 'symbol'; +} : function (it) { + var $Symbol = getBuiltIn('Symbol'); + return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it)); +}; /***/ }), /* 25 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = false; +var global = __w_pdfjs_require__(7); +var isCallable = __w_pdfjs_require__(23); +var aFunction = function (argument) { + return isCallable(argument) ? argument : undefined; +}; +module.exports = function (namespace, method) { + return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method]; +}; /***/ }), /* 26 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var aFunction = __w_pdfjs_require__(27); - -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - - switch (length) { - case 1: - return function (a) { - return fn.call(that, a); - }; - - case 2: - return function (a, b) { - return fn.call(that, a, b); - }; - - case 3: - return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - - return function () { - return fn.apply(that, arguments); - }; -}; +var uncurryThis = __w_pdfjs_require__(17); +module.exports = uncurryThis({}.isPrototypeOf); /***/ }), /* 27 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = function (it) { - if (typeof it != 'function') throw TypeError(it + ' is not a function!'); - return it; -}; +var NATIVE_SYMBOL = __w_pdfjs_require__(28); +module.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == 'symbol'; /***/ }), /* 28 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var toInteger = __w_pdfjs_require__(29); - -var min = Math.min; - -module.exports = function (it) { - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; -}; +var V8_VERSION = __w_pdfjs_require__(29); +var fails = __w_pdfjs_require__(10); +module.exports = !!Object.getOwnPropertySymbols && !fails(function () { + var symbol = Symbol(); + return !String(symbol) || !(Object(symbol) instanceof Symbol) || !Symbol.sham && V8_VERSION && V8_VERSION < 41; +}); /***/ }), /* 29 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var ceil = Math.ceil; -var floor = Math.floor; - -module.exports = function (it) { - return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); -}; +var global = __w_pdfjs_require__(7); +var userAgent = __w_pdfjs_require__(30); +var process = global.process; +var Deno = global.Deno; +var versions = process && process.versions || Deno && Deno.version; +var v8 = versions && versions.v8; +var match, version; +if (v8) { + match = v8.split('.'); + version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); +} +if (!version && userAgent) { + match = userAgent.match(/Edge\/(\d+)/); + if (!match || match[1] >= 74) { + match = userAgent.match(/Chrome\/(\d+)/); + if (match) + version = +match[1]; + } +} +module.exports = version; /***/ }), /* 30 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var isRegExp = __w_pdfjs_require__(31); - -var defined = __w_pdfjs_require__(34); - -module.exports = function (that, searchString, NAME) { - if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!"); - return String(defined(that)); -}; +var getBuiltIn = __w_pdfjs_require__(25); +module.exports = getBuiltIn('navigator', 'userAgent') || ''; /***/ }), /* 31 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var isObject = __w_pdfjs_require__(13); - -var cof = __w_pdfjs_require__(32); - -var MATCH = __w_pdfjs_require__(33)('match'); - -module.exports = function (it) { - var isRegExp; - return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp'); +var aCallable = __w_pdfjs_require__(32); +module.exports = function (V, P) { + var func = V[P]; + return func == null ? undefined : aCallable(func); }; /***/ }), /* 32 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var toString = {}.toString; - -module.exports = function (it) { - return toString.call(it).slice(8, -1); +var isCallable = __w_pdfjs_require__(23); +var tryToString = __w_pdfjs_require__(33); +var $TypeError = TypeError; +module.exports = function (argument) { + if (isCallable(argument)) + return argument; + throw $TypeError(tryToString(argument) + ' is not a function'); }; /***/ }), /* 33 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var store = __w_pdfjs_require__(24)('wks'); - -var uid = __w_pdfjs_require__(22); - -var _Symbol = __w_pdfjs_require__(8).Symbol; - -var USE_SYMBOL = typeof _Symbol == 'function'; - -var $exports = module.exports = function (name) { - return store[name] || (store[name] = USE_SYMBOL && _Symbol[name] || (USE_SYMBOL ? _Symbol : uid)('Symbol.' + name)); +var $String = String; +module.exports = function (argument) { + try { + return $String(argument); + } catch (error) { + return 'Object'; + } }; -$exports.store = store; - /***/ }), /* 34 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; +var call = __w_pdfjs_require__(11); +var isCallable = __w_pdfjs_require__(23); +var isObject = __w_pdfjs_require__(22); +var $TypeError = TypeError; +module.exports = function (input, pref) { + var fn, val; + if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) + return val; + if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) + return val; + if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) + return val; + throw $TypeError("Can't convert object to primitive value"); }; /***/ }), /* 35 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var MATCH = __w_pdfjs_require__(33)('match'); - -module.exports = function (KEY) { - var re = /./; - - try { - '/./'[KEY](re); - } catch (e) { - try { - re[MATCH] = false; - return !'/./'[KEY](re); - } catch (f) {} +var global = __w_pdfjs_require__(7); +var shared = __w_pdfjs_require__(36); +var hasOwn = __w_pdfjs_require__(40); +var uid = __w_pdfjs_require__(42); +var NATIVE_SYMBOL = __w_pdfjs_require__(28); +var USE_SYMBOL_AS_UID = __w_pdfjs_require__(27); +var WellKnownSymbolsStore = shared('wks'); +var Symbol = global.Symbol; +var symbolFor = Symbol && Symbol['for']; +var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid; +module.exports = function (name) { + if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) { + var description = 'Symbol.' + name; + if (NATIVE_SYMBOL && hasOwn(Symbol, name)) { + WellKnownSymbolsStore[name] = Symbol[name]; + } else if (USE_SYMBOL_AS_UID && symbolFor) { + WellKnownSymbolsStore[name] = symbolFor(description); + } else { + WellKnownSymbolsStore[name] = createWellKnownSymbol(description); } - - return true; + } + return WellKnownSymbolsStore[name]; }; /***/ }), /* 36 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(37); - -module.exports = __w_pdfjs_require__(9).String.endsWith; +var IS_PURE = __w_pdfjs_require__(37); +var store = __w_pdfjs_require__(38); +(module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); +})('versions', []).push({ + version: '3.24.1', + mode: IS_PURE ? 'pure' : 'global', + copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)', + license: 'https://github.com/zloirock/core-js/blob/v3.24.1/LICENSE', + source: 'https://github.com/zloirock/core-js' +}); /***/ }), /* 37 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var $export = __w_pdfjs_require__(7); - -var toLength = __w_pdfjs_require__(28); - -var context = __w_pdfjs_require__(30); - -var ENDS_WITH = 'endsWith'; -var $endsWith = ''[ENDS_WITH]; -$export($export.P + $export.F * __w_pdfjs_require__(35)(ENDS_WITH), 'String', { - endsWith: function endsWith(searchString) { - var that = context(this, searchString, ENDS_WITH); - var endPosition = arguments.length > 1 ? arguments[1] : undefined; - var len = toLength(that.length); - var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len); - var search = String(searchString); - return $endsWith ? $endsWith.call(that, search, end) : that.slice(end - search.length, end) === search; - } -}); +module.exports = false; /***/ }), /* 38 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(39); - -module.exports = __w_pdfjs_require__(9).String.includes; +var global = __w_pdfjs_require__(7); +var defineGlobalProperty = __w_pdfjs_require__(39); +var SHARED = '__core-js_shared__'; +var store = global[SHARED] || defineGlobalProperty(SHARED, {}); +module.exports = store; /***/ }), /* 39 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(7); - -var context = __w_pdfjs_require__(30); - -var INCLUDES = 'includes'; -$export($export.P + $export.F * __w_pdfjs_require__(35)(INCLUDES), 'String', { - includes: function includes(searchString) { - return !!~context(this, searchString, INCLUDES).indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined); - } -}); +var global = __w_pdfjs_require__(7); +var defineProperty = Object.defineProperty; +module.exports = function (key, value) { + try { + defineProperty(global, key, { + value: value, + configurable: true, + writable: true + }); + } catch (error) { + global[key] = value; + } + return value; +}; /***/ }), /* 40 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(41); - -module.exports = __w_pdfjs_require__(9).Array.includes; +var uncurryThis = __w_pdfjs_require__(17); +var toObject = __w_pdfjs_require__(41); +var hasOwnProperty = uncurryThis({}.hasOwnProperty); +module.exports = Object.hasOwn || function hasOwn(it, key) { + return hasOwnProperty(toObject(it), key); +}; /***/ }), /* 41 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(7); - -var $includes = __w_pdfjs_require__(42)(true); - -$export($export.P, 'Array', { - includes: function includes(el) { - return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); - } -}); - -__w_pdfjs_require__(46)('includes'); +var requireObjectCoercible = __w_pdfjs_require__(19); +var $Object = Object; +module.exports = function (argument) { + return $Object(requireObjectCoercible(argument)); +}; /***/ }), /* 42 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var toIObject = __w_pdfjs_require__(43); - -var toLength = __w_pdfjs_require__(28); - -var toAbsoluteIndex = __w_pdfjs_require__(45); - -module.exports = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - if (value != value) return true; - } else for (; length > index; index++) { - if (IS_INCLUDES || index in O) { - if (O[index] === el) return IS_INCLUDES || index || 0; - } - } - return !IS_INCLUDES && -1; - }; +var uncurryThis = __w_pdfjs_require__(17); +var id = 0; +var postfix = Math.random(); +var toString = uncurryThis(1.0.toString); +module.exports = function (key) { + return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36); }; /***/ }), /* 43 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var IObject = __w_pdfjs_require__(44); - -var defined = __w_pdfjs_require__(34); - -module.exports = function (it) { - return IObject(defined(it)); -}; +var DESCRIPTORS = __w_pdfjs_require__(9); +var fails = __w_pdfjs_require__(10); +var createElement = __w_pdfjs_require__(44); +module.exports = !DESCRIPTORS && !fails(function () { + return Object.defineProperty(createElement('div'), 'a', { + get: function () { + return 7; + } + }).a != 7; +}); /***/ }), /* 44 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var cof = __w_pdfjs_require__(32); - -module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { - return cof(it) == 'String' ? it.split('') : Object(it); +var global = __w_pdfjs_require__(7); +var isObject = __w_pdfjs_require__(22); +var document = global.document; +var EXISTS = isObject(document) && isObject(document.createElement); +module.exports = function (it) { + return EXISTS ? document.createElement(it) : {}; }; /***/ }), /* 45 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var toInteger = __w_pdfjs_require__(29); - -var max = Math.max; -var min = Math.min; - -module.exports = function (index, length) { - index = toInteger(index); - return index < 0 ? max(index + length, 0) : min(index, length); +var DESCRIPTORS = __w_pdfjs_require__(9); +var definePropertyModule = __w_pdfjs_require__(46); +var createPropertyDescriptor = __w_pdfjs_require__(14); +module.exports = DESCRIPTORS ? function (object, key, value) { + return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; }; /***/ }), /* 46 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; - - -var UNSCOPABLES = __w_pdfjs_require__(33)('unscopables'); - -var ArrayProto = Array.prototype; -if (ArrayProto[UNSCOPABLES] == undefined) __w_pdfjs_require__(10)(ArrayProto, UNSCOPABLES, {}); - -module.exports = function (key) { - ArrayProto[UNSCOPABLES][key] = true; +var DESCRIPTORS = __w_pdfjs_require__(9); +var IE8_DOM_DEFINE = __w_pdfjs_require__(43); +var V8_PROTOTYPE_DEFINE_BUG = __w_pdfjs_require__(47); +var anObject = __w_pdfjs_require__(48); +var toPropertyKey = __w_pdfjs_require__(20); +var $TypeError = TypeError; +var $defineProperty = Object.defineProperty; +var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; +var ENUMERABLE = 'enumerable'; +var CONFIGURABLE = 'configurable'; +var WRITABLE = 'writable'; +exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { + var current = $getOwnPropertyDescriptor(O, P); + if (current && current[WRITABLE]) { + O[P] = Attributes.value; + Attributes = { + configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE], + enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], + writable: false + }; + } + } + return $defineProperty(O, P, Attributes); +} : $defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (IE8_DOM_DEFINE) + try { + return $defineProperty(O, P, Attributes); + } catch (error) { + } + if ('get' in Attributes || 'set' in Attributes) + throw $TypeError('Accessors not supported'); + if ('value' in Attributes) + O[P] = Attributes.value; + return O; }; /***/ }), /* 47 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(48); - -__w_pdfjs_require__(63); - -module.exports = __w_pdfjs_require__(9).Array.from; - -/***/ }), -/* 48 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var $at = __w_pdfjs_require__(49)(true); - -__w_pdfjs_require__(50)(String, 'String', function (iterated) { - this._t = String(iterated); - this._i = 0; -}, function () { - var O = this._t; - var index = this._i; - var point; - if (index >= O.length) return { - value: undefined, - done: true - }; - point = $at(O, index); - this._i += point.length; - return { - value: point, - done: false - }; +var DESCRIPTORS = __w_pdfjs_require__(9); +var fails = __w_pdfjs_require__(10); +module.exports = DESCRIPTORS && fails(function () { + return Object.defineProperty(function () { + }, 'prototype', { + value: 42, + writable: false + }).prototype != 42; }); +/***/ }), +/* 48 */ +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { + +var isObject = __w_pdfjs_require__(22); +var $String = String; +var $TypeError = TypeError; +module.exports = function (argument) { + if (isObject(argument)) + return argument; + throw $TypeError($String(argument) + ' is not an object'); +}; + /***/ }), /* 49 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var toInteger = __w_pdfjs_require__(29); - -var defined = __w_pdfjs_require__(34); - -module.exports = function (TO_STRING) { - return function (that, pos) { - var s = String(defined(that)); - var i = toInteger(pos); - var l = s.length; - var a, b; - if (i < 0 || i >= l) return TO_STRING ? '' : undefined; - a = s.charCodeAt(i); - return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; - }; +var isCallable = __w_pdfjs_require__(23); +var definePropertyModule = __w_pdfjs_require__(46); +var makeBuiltIn = __w_pdfjs_require__(50); +var defineGlobalProperty = __w_pdfjs_require__(39); +module.exports = function (O, key, value, options) { + if (!options) + options = {}; + var simple = options.enumerable; + var name = options.name !== undefined ? options.name : key; + if (isCallable(value)) + makeBuiltIn(value, name, options); + if (options.global) { + if (simple) + O[key] = value; + else + defineGlobalProperty(key, value); + } else { + try { + if (!options.unsafe) + delete O[key]; + else if (O[key]) + simple = true; + } catch (error) { + } + if (simple) + O[key] = value; + else + definePropertyModule.f(O, key, { + value: value, + enumerable: false, + configurable: !options.nonConfigurable, + writable: !options.nonWritable + }); + } + return O; }; /***/ }), /* 50 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var LIBRARY = __w_pdfjs_require__(25); - -var $export = __w_pdfjs_require__(7); - -var redefine = __w_pdfjs_require__(20); - -var hide = __w_pdfjs_require__(10); - -var Iterators = __w_pdfjs_require__(51); - -var $iterCreate = __w_pdfjs_require__(52); - -var setToStringTag = __w_pdfjs_require__(60); - -var getPrototypeOf = __w_pdfjs_require__(61); - -var ITERATOR = __w_pdfjs_require__(33)('iterator'); - -var BUGGY = !([].keys && 'next' in [].keys()); -var FF_ITERATOR = '@@iterator'; -var KEYS = 'keys'; -var VALUES = 'values'; - -var returnThis = function returnThis() { - return this; -}; - -module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { - $iterCreate(Constructor, NAME, next); - - var getMethod = function getMethod(kind) { - if (!BUGGY && kind in proto) return proto[kind]; - - switch (kind) { - case KEYS: - return function keys() { - return new Constructor(this, kind); - }; - - case VALUES: - return function values() { - return new Constructor(this, kind); - }; - } - - return function entries() { - return new Constructor(this, kind); - }; - }; - - var TAG = NAME + ' Iterator'; - var DEF_VALUES = DEFAULT == VALUES; - var VALUES_BUG = false; - var proto = Base.prototype; - var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; - var $default = $native || getMethod(DEFAULT); - var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; - var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; - var methods, key, IteratorPrototype; - - if ($anyNative) { - IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); - - if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { - setToStringTag(IteratorPrototype, TAG, true); - if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); - } - } - - if (DEF_VALUES && $native && $native.name !== VALUES) { - VALUES_BUG = true; - - $default = function values() { - return $native.call(this); - }; - } - - if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { - hide(proto, ITERATOR, $default); - } - - Iterators[NAME] = $default; - Iterators[TAG] = returnThis; - - if (DEFAULT) { - methods = { - values: DEF_VALUES ? $default : getMethod(VALUES), - keys: IS_SET ? $default : getMethod(KEYS), - entries: $entries - }; - if (FORCED) for (key in methods) { - if (!(key in proto)) redefine(proto, key, methods[key]); - } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); - } - - return methods; +var fails = __w_pdfjs_require__(10); +var isCallable = __w_pdfjs_require__(23); +var hasOwn = __w_pdfjs_require__(40); +var DESCRIPTORS = __w_pdfjs_require__(9); +var CONFIGURABLE_FUNCTION_NAME = (__w_pdfjs_require__(51).CONFIGURABLE); +var inspectSource = __w_pdfjs_require__(52); +var InternalStateModule = __w_pdfjs_require__(53); +var enforceInternalState = InternalStateModule.enforce; +var getInternalState = InternalStateModule.get; +var defineProperty = Object.defineProperty; +var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () { + return defineProperty(function () { + }, 'length', { value: 8 }).length !== 8; +}); +var TEMPLATE = String(String).split('String'); +var makeBuiltIn = module.exports = function (value, name, options) { + if (String(name).slice(0, 7) === 'Symbol(') { + name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']'; + } + if (options && options.getter) + name = 'get ' + name; + if (options && options.setter) + name = 'set ' + name; + if (!hasOwn(value, 'name') || CONFIGURABLE_FUNCTION_NAME && value.name !== name) { + if (DESCRIPTORS) + defineProperty(value, 'name', { + value: name, + configurable: true + }); + else + value.name = name; + } + if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) { + defineProperty(value, 'length', { value: options.arity }); + } + try { + if (options && hasOwn(options, 'constructor') && options.constructor) { + if (DESCRIPTORS) + defineProperty(value, 'prototype', { writable: false }); + } else if (value.prototype) + value.prototype = undefined; + } catch (error) { + } + var state = enforceInternalState(value); + if (!hasOwn(state, 'source')) { + state.source = TEMPLATE.join(typeof name == 'string' ? name : ''); + } + return value; }; +Function.prototype.toString = makeBuiltIn(function toString() { + return isCallable(this) && getInternalState(this).source || inspectSource(this); +}, 'toString'); /***/ }), /* 51 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = {}; +var DESCRIPTORS = __w_pdfjs_require__(9); +var hasOwn = __w_pdfjs_require__(40); +var FunctionPrototype = Function.prototype; +var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor; +var EXISTS = hasOwn(FunctionPrototype, 'name'); +var PROPER = EXISTS && function something() { +}.name === 'something'; +var CONFIGURABLE = EXISTS && (!DESCRIPTORS || DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable); +module.exports = { + EXISTS: EXISTS, + PROPER: PROPER, + CONFIGURABLE: CONFIGURABLE +}; /***/ }), /* 52 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var create = __w_pdfjs_require__(53); - -var descriptor = __w_pdfjs_require__(19); - -var setToStringTag = __w_pdfjs_require__(60); - -var IteratorPrototype = {}; - -__w_pdfjs_require__(10)(IteratorPrototype, __w_pdfjs_require__(33)('iterator'), function () { - return this; -}); - -module.exports = function (Constructor, NAME, next) { - Constructor.prototype = create(IteratorPrototype, { - next: descriptor(1, next) - }); - setToStringTag(Constructor, NAME + ' Iterator'); -}; +var uncurryThis = __w_pdfjs_require__(17); +var isCallable = __w_pdfjs_require__(23); +var store = __w_pdfjs_require__(38); +var functionToString = uncurryThis(Function.toString); +if (!isCallable(store.inspectSource)) { + store.inspectSource = function (it) { + return functionToString(it); + }; +} +module.exports = store.inspectSource; /***/ }), /* 53 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var anObject = __w_pdfjs_require__(12); - -var dPs = __w_pdfjs_require__(54); - -var enumBugKeys = __w_pdfjs_require__(58); - -var IE_PROTO = __w_pdfjs_require__(57)('IE_PROTO'); - -var Empty = function Empty() {}; - -var PROTOTYPE = 'prototype'; - -var _createDict = function createDict() { - var iframe = __w_pdfjs_require__(17)('iframe'); - - var i = enumBugKeys.length; - var lt = '<'; - var gt = '>'; - var iframeDocument; - iframe.style.display = 'none'; - - __w_pdfjs_require__(59).appendChild(iframe); - - iframe.src = 'javascript:'; - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); - iframeDocument.close(); - _createDict = iframeDocument.F; - - while (i--) { - delete _createDict[PROTOTYPE][enumBugKeys[i]]; - } - - return _createDict(); +var NATIVE_WEAK_MAP = __w_pdfjs_require__(54); +var global = __w_pdfjs_require__(7); +var uncurryThis = __w_pdfjs_require__(17); +var isObject = __w_pdfjs_require__(22); +var createNonEnumerableProperty = __w_pdfjs_require__(45); +var hasOwn = __w_pdfjs_require__(40); +var shared = __w_pdfjs_require__(38); +var sharedKey = __w_pdfjs_require__(55); +var hiddenKeys = __w_pdfjs_require__(56); +var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; +var TypeError = global.TypeError; +var WeakMap = global.WeakMap; +var set, get, has; +var enforce = function (it) { + return has(it) ? get(it) : set(it, {}); }; - -module.exports = Object.create || function create(O, Properties) { - var result; - - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - result[IE_PROTO] = O; - } else result = _createDict(); - - return Properties === undefined ? result : dPs(result, Properties); +var getterFor = function (TYPE) { + return function (it) { + var state; + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw TypeError('Incompatible receiver, ' + TYPE + ' required'); + } + return state; + }; +}; +if (NATIVE_WEAK_MAP || shared.state) { + var store = shared.state || (shared.state = new WeakMap()); + var wmget = uncurryThis(store.get); + var wmhas = uncurryThis(store.has); + var wmset = uncurryThis(store.set); + set = function (it, metadata) { + if (wmhas(store, it)) + throw new TypeError(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + wmset(store, it, metadata); + return metadata; + }; + get = function (it) { + return wmget(store, it) || {}; + }; + has = function (it) { + return wmhas(store, it); + }; +} else { + var STATE = sharedKey('state'); + hiddenKeys[STATE] = true; + set = function (it, metadata) { + if (hasOwn(it, STATE)) + throw new TypeError(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + createNonEnumerableProperty(it, STATE, metadata); + return metadata; + }; + get = function (it) { + return hasOwn(it, STATE) ? it[STATE] : {}; + }; + has = function (it) { + return hasOwn(it, STATE); + }; +} +module.exports = { + set: set, + get: get, + has: has, + enforce: enforce, + getterFor: getterFor }; /***/ }), /* 54 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var dP = __w_pdfjs_require__(11); - -var anObject = __w_pdfjs_require__(12); - -var getKeys = __w_pdfjs_require__(55); - -module.exports = __w_pdfjs_require__(15) ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = getKeys(Properties); - var length = keys.length; - var i = 0; - var P; - - while (length > i) { - dP.f(O, P = keys[i++], Properties[P]); - } - - return O; -}; +var global = __w_pdfjs_require__(7); +var isCallable = __w_pdfjs_require__(23); +var inspectSource = __w_pdfjs_require__(52); +var WeakMap = global.WeakMap; +module.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap)); /***/ }), /* 55 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $keys = __w_pdfjs_require__(56); - -var enumBugKeys = __w_pdfjs_require__(58); - -module.exports = Object.keys || function keys(O) { - return $keys(O, enumBugKeys); +var shared = __w_pdfjs_require__(36); +var uid = __w_pdfjs_require__(42); +var keys = shared('keys'); +module.exports = function (key) { + return keys[key] || (keys[key] = uid(key)); }; /***/ }), /* 56 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var has = __w_pdfjs_require__(21); - -var toIObject = __w_pdfjs_require__(43); - -var arrayIndexOf = __w_pdfjs_require__(42)(false); - -var IE_PROTO = __w_pdfjs_require__(57)('IE_PROTO'); - -module.exports = function (object, names) { - var O = toIObject(object); - var i = 0; - var result = []; - var key; - - for (key in O) { - if (key != IE_PROTO) has(O, key) && result.push(key); - } - - while (names.length > i) { - if (has(O, key = names[i++])) { - ~arrayIndexOf(result, key) || result.push(key); - } - } - - return result; -}; +module.exports = {}; /***/ }), /* 57 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var shared = __w_pdfjs_require__(24)('keys'); - -var uid = __w_pdfjs_require__(22); - -module.exports = function (key) { - return shared[key] || (shared[key] = uid(key)); +var hasOwn = __w_pdfjs_require__(40); +var ownKeys = __w_pdfjs_require__(58); +var getOwnPropertyDescriptorModule = __w_pdfjs_require__(8); +var definePropertyModule = __w_pdfjs_require__(46); +module.exports = function (target, source, exceptions) { + var keys = ownKeys(source); + var defineProperty = definePropertyModule.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { + defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } + } }; /***/ }), /* 58 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'.split(','); +var getBuiltIn = __w_pdfjs_require__(25); +var uncurryThis = __w_pdfjs_require__(17); +var getOwnPropertyNamesModule = __w_pdfjs_require__(59); +var getOwnPropertySymbolsModule = __w_pdfjs_require__(68); +var anObject = __w_pdfjs_require__(48); +var concat = uncurryThis([].concat); +module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { + var keys = getOwnPropertyNamesModule.f(anObject(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys; +}; /***/ }), /* 59 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; - - -var document = __w_pdfjs_require__(8).document; - -module.exports = document && document.documentElement; +var internalObjectKeys = __w_pdfjs_require__(60); +var enumBugKeys = __w_pdfjs_require__(67); +var hiddenKeys = enumBugKeys.concat('length', 'prototype'); +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys(O, hiddenKeys); +}; /***/ }), /* 60 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var def = __w_pdfjs_require__(11).f; - -var has = __w_pdfjs_require__(21); - -var TAG = __w_pdfjs_require__(33)('toStringTag'); - -module.exports = function (it, tag, stat) { - if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { - configurable: true, - value: tag - }); +var uncurryThis = __w_pdfjs_require__(17); +var hasOwn = __w_pdfjs_require__(40); +var toIndexedObject = __w_pdfjs_require__(15); +var indexOf = (__w_pdfjs_require__(61).indexOf); +var hiddenKeys = __w_pdfjs_require__(56); +var push = uncurryThis([].push); +module.exports = function (object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + for (key in O) + !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key); + while (names.length > i) + if (hasOwn(O, key = names[i++])) { + ~indexOf(result, key) || push(result, key); + } + return result; }; /***/ }), /* 61 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var has = __w_pdfjs_require__(21); - -var toObject = __w_pdfjs_require__(62); - -var IE_PROTO = __w_pdfjs_require__(57)('IE_PROTO'); - -var ObjectProto = Object.prototype; - -module.exports = Object.getPrototypeOf || function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) return O[IE_PROTO]; - - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } - - return O instanceof Object ? ObjectProto : null; +var toIndexedObject = __w_pdfjs_require__(15); +var toAbsoluteIndex = __w_pdfjs_require__(62); +var lengthOfArrayLike = __w_pdfjs_require__(65); +var createMethod = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = lengthOfArrayLike(O); + var index = toAbsoluteIndex(fromIndex, length); + var value; + if (IS_INCLUDES && el != el) + while (length > index) { + value = O[index++]; + if (value != value) + return true; + } + else + for (; length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) + return IS_INCLUDES || index || 0; + } + return !IS_INCLUDES && -1; + }; +}; +module.exports = { + includes: createMethod(true), + indexOf: createMethod(false) }; /***/ }), /* 62 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var defined = __w_pdfjs_require__(34); - -module.exports = function (it) { - return Object(defined(it)); +var toIntegerOrInfinity = __w_pdfjs_require__(63); +var max = Math.max; +var min = Math.min; +module.exports = function (index, length) { + var integer = toIntegerOrInfinity(index); + return integer < 0 ? max(integer + length, 0) : min(integer, length); }; /***/ }), /* 63 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var ctx = __w_pdfjs_require__(26); - -var $export = __w_pdfjs_require__(7); - -var toObject = __w_pdfjs_require__(62); - -var call = __w_pdfjs_require__(64); - -var isArrayIter = __w_pdfjs_require__(65); - -var toLength = __w_pdfjs_require__(28); - -var createProperty = __w_pdfjs_require__(66); - -var getIterFn = __w_pdfjs_require__(67); - -$export($export.S + $export.F * !__w_pdfjs_require__(69)(function (iter) { - Array.from(iter); -}), 'Array', { - from: function from(arrayLike) { - var O = toObject(arrayLike); - var C = typeof this == 'function' ? this : Array; - var aLen = arguments.length; - var mapfn = aLen > 1 ? arguments[1] : undefined; - var mapping = mapfn !== undefined; - var index = 0; - var iterFn = getIterFn(O); - var length, result, step, iterator; - if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); - - if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) { - for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) { - createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); - } - } else { - length = toLength(O.length); - - for (result = new C(length); length > index; index++) { - createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); - } - } - - result.length = index; - return result; - } -}); +var trunc = __w_pdfjs_require__(64); +module.exports = function (argument) { + var number = +argument; + return number !== number || number === 0 ? 0 : trunc(number); +}; /***/ }), /* 64 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var anObject = __w_pdfjs_require__(12); - -module.exports = function (iterator, fn, value, entries) { - try { - return entries ? fn(anObject(value)[0], value[1]) : fn(value); - } catch (e) { - var ret = iterator['return']; - if (ret !== undefined) anObject(ret.call(iterator)); - throw e; - } +var ceil = Math.ceil; +var floor = Math.floor; +module.exports = Math.trunc || function trunc(x) { + var n = +x; + return (n > 0 ? floor : ceil)(n); }; /***/ }), /* 65 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var Iterators = __w_pdfjs_require__(51); - -var ITERATOR = __w_pdfjs_require__(33)('iterator'); - -var ArrayProto = Array.prototype; - -module.exports = function (it) { - return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); +var toLength = __w_pdfjs_require__(66); +module.exports = function (obj) { + return toLength(obj.length); }; /***/ }), /* 66 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $defineProperty = __w_pdfjs_require__(11); - -var createDesc = __w_pdfjs_require__(19); - -module.exports = function (object, index, value) { - if (index in object) $defineProperty.f(object, index, createDesc(0, value));else object[index] = value; +var toIntegerOrInfinity = __w_pdfjs_require__(63); +var min = Math.min; +module.exports = function (argument) { + return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; }; /***/ }), /* 67 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var classof = __w_pdfjs_require__(68); - -var ITERATOR = __w_pdfjs_require__(33)('iterator'); - -var Iterators = __w_pdfjs_require__(51); - -module.exports = __w_pdfjs_require__(9).getIteratorMethod = function (it) { - if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)]; -}; +module.exports = [ + 'constructor', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'toLocaleString', + 'toString', + 'valueOf' +]; /***/ }), /* 68 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var cof = __w_pdfjs_require__(32); - -var TAG = __w_pdfjs_require__(33)('toStringTag'); - -var ARG = cof(function () { - return arguments; -}()) == 'Arguments'; - -var tryGet = function tryGet(it, key) { - try { - return it[key]; - } catch (e) {} -}; - -module.exports = function (it) { - var O, T, B; - return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T : ARG ? cof(O) : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; -}; - -/***/ }), -/* 69 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var ITERATOR = __w_pdfjs_require__(33)('iterator'); - -var SAFE_CLOSING = false; - -try { - var riter = [7][ITERATOR](); - - riter['return'] = function () { - SAFE_CLOSING = true; - }; - - Array.from(riter, function () { - throw 2; - }); -} catch (e) {} - -module.exports = function (exec, skipClosing) { - if (!skipClosing && !SAFE_CLOSING) return false; - var safe = false; - - try { - var arr = [7]; - var iter = arr[ITERATOR](); - - iter.next = function () { - return { - done: safe = true - }; - }; - - arr[ITERATOR] = function () { - return iter; - }; - - exec(arr); - } catch (e) {} - - return safe; -}; - -/***/ }), -/* 70 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -__w_pdfjs_require__(71); - -module.exports = __w_pdfjs_require__(9).Object.assign; - -/***/ }), -/* 71 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var $export = __w_pdfjs_require__(7); - -$export($export.S + $export.F, 'Object', { - assign: __w_pdfjs_require__(72) -}); - -/***/ }), -/* 72 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var DESCRIPTORS = __w_pdfjs_require__(15); - -var getKeys = __w_pdfjs_require__(55); - -var gOPS = __w_pdfjs_require__(73); - -var pIE = __w_pdfjs_require__(74); - -var toObject = __w_pdfjs_require__(62); - -var IObject = __w_pdfjs_require__(44); - -var $assign = Object.assign; -module.exports = !$assign || __w_pdfjs_require__(16)(function () { - var A = {}; - var B = {}; - var S = Symbol(); - var K = 'abcdefghijklmnopqrst'; - A[S] = 7; - K.split('').forEach(function (k) { - B[k] = k; - }); - return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; -}) ? function assign(target, source) { - var T = toObject(target); - var aLen = arguments.length; - var index = 1; - var getSymbols = gOPS.f; - var isEnum = pIE.f; - - while (aLen > index) { - var S = IObject(arguments[index++]); - var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S); - var length = keys.length; - var j = 0; - var key; - - while (length > j) { - key = keys[j++]; - if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key]; - } - } - - return T; -} : $assign; - -/***/ }), -/* 73 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - +/***/ ((__unused_webpack_module, exports) => { exports.f = Object.getOwnPropertySymbols; +/***/ }), +/* 69 */ +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { + +var fails = __w_pdfjs_require__(10); +var isCallable = __w_pdfjs_require__(23); +var replacement = /#|\.prototype\./; +var isForced = function (feature, detection) { + var value = data[normalize(feature)]; + return value == POLYFILL ? true : value == NATIVE ? false : isCallable(detection) ? fails(detection) : !!detection; +}; +var normalize = isForced.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); +}; +var data = isForced.data = {}; +var NATIVE = isForced.NATIVE = 'N'; +var POLYFILL = isForced.POLYFILL = 'P'; +module.exports = isForced; + +/***/ }), +/* 70 */ +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { + +var wellKnownSymbol = __w_pdfjs_require__(35); +var create = __w_pdfjs_require__(71); +var defineProperty = (__w_pdfjs_require__(46).f); +var UNSCOPABLES = wellKnownSymbol('unscopables'); +var ArrayPrototype = Array.prototype; +if (ArrayPrototype[UNSCOPABLES] == undefined) { + defineProperty(ArrayPrototype, UNSCOPABLES, { + configurable: true, + value: create(null) + }); +} +module.exports = function (key) { + ArrayPrototype[UNSCOPABLES][key] = true; +}; + +/***/ }), +/* 71 */ +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { + +var anObject = __w_pdfjs_require__(48); +var definePropertiesModule = __w_pdfjs_require__(72); +var enumBugKeys = __w_pdfjs_require__(67); +var hiddenKeys = __w_pdfjs_require__(56); +var html = __w_pdfjs_require__(74); +var documentCreateElement = __w_pdfjs_require__(44); +var sharedKey = __w_pdfjs_require__(55); +var GT = '>'; +var LT = '<'; +var PROTOTYPE = 'prototype'; +var SCRIPT = 'script'; +var IE_PROTO = sharedKey('IE_PROTO'); +var EmptyConstructor = function () { +}; +var scriptTag = function (content) { + return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; +}; +var NullProtoObjectViaActiveX = function (activeXDocument) { + activeXDocument.write(scriptTag('')); + activeXDocument.close(); + var temp = activeXDocument.parentWindow.Object; + activeXDocument = null; + return temp; +}; +var NullProtoObjectViaIFrame = function () { + var iframe = documentCreateElement('iframe'); + var JS = 'java' + SCRIPT + ':'; + var iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + iframe.src = String(JS); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(scriptTag('document.F=Object')); + iframeDocument.close(); + return iframeDocument.F; +}; +var activeXDocument; +var NullProtoObject = function () { + try { + activeXDocument = new ActiveXObject('htmlfile'); + } catch (error) { + } + NullProtoObject = typeof document != 'undefined' ? document.domain && activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame() : NullProtoObjectViaActiveX(activeXDocument); + var length = enumBugKeys.length; + while (length--) + delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; + return NullProtoObject(); +}; +hiddenKeys[IE_PROTO] = true; +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + EmptyConstructor[PROTOTYPE] = anObject(O); + result = new EmptyConstructor(); + EmptyConstructor[PROTOTYPE] = null; + result[IE_PROTO] = O; + } else + result = NullProtoObject(); + return Properties === undefined ? result : definePropertiesModule.f(result, Properties); +}; + +/***/ }), +/* 72 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +var DESCRIPTORS = __w_pdfjs_require__(9); +var V8_PROTOTYPE_DEFINE_BUG = __w_pdfjs_require__(47); +var definePropertyModule = __w_pdfjs_require__(46); +var anObject = __w_pdfjs_require__(48); +var toIndexedObject = __w_pdfjs_require__(15); +var objectKeys = __w_pdfjs_require__(73); +exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var props = toIndexedObject(Properties); + var keys = objectKeys(Properties); + var length = keys.length; + var index = 0; + var key; + while (length > index) + definePropertyModule.f(O, key = keys[index++], props[key]); + return O; +}; + +/***/ }), +/* 73 */ +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { + +var internalObjectKeys = __w_pdfjs_require__(60); +var enumBugKeys = __w_pdfjs_require__(67); +module.exports = Object.keys || function keys(O) { + return internalObjectKeys(O, enumBugKeys); +}; + /***/ }), /* 74 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -exports.f = {}.propertyIsEnumerable; +var getBuiltIn = __w_pdfjs_require__(25); +module.exports = getBuiltIn('document', 'documentElement'); /***/ }), /* 75 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(76); - -module.exports = __w_pdfjs_require__(9).Math.log2; +var global = __w_pdfjs_require__(7); +var uncurryThis = __w_pdfjs_require__(17); +module.exports = function (CONSTRUCTOR, METHOD) { + return uncurryThis(global[CONSTRUCTOR].prototype[METHOD]); +}; /***/ }), /* 76 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(7); - -$export($export.S, 'Math', { - log2: function log2(x) { - return Math.log(x) / Math.LN2; - } -}); +__w_pdfjs_require__(77); /***/ }), /* 77 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -__w_pdfjs_require__(78); - -module.exports = __w_pdfjs_require__(9).Number.isNaN; +var ArrayBufferViewCore = __w_pdfjs_require__(78); +var lengthOfArrayLike = __w_pdfjs_require__(65); +var toIntegerOrInfinity = __w_pdfjs_require__(63); +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +exportTypedArrayMethod('at', function at(index) { + var O = aTypedArray(this); + var len = lengthOfArrayLike(O); + var relativeIndex = toIntegerOrInfinity(index); + var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex; + return k < 0 || k >= len ? undefined : O[k]; +}); /***/ }), /* 78 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var $export = __w_pdfjs_require__(7); - -$export($export.S, 'Number', { - isNaN: function isNaN(number) { - return number != number; +var NATIVE_ARRAY_BUFFER = __w_pdfjs_require__(79); +var DESCRIPTORS = __w_pdfjs_require__(9); +var global = __w_pdfjs_require__(7); +var isCallable = __w_pdfjs_require__(23); +var isObject = __w_pdfjs_require__(22); +var hasOwn = __w_pdfjs_require__(40); +var classof = __w_pdfjs_require__(80); +var tryToString = __w_pdfjs_require__(33); +var createNonEnumerableProperty = __w_pdfjs_require__(45); +var defineBuiltIn = __w_pdfjs_require__(49); +var defineProperty = (__w_pdfjs_require__(46).f); +var isPrototypeOf = __w_pdfjs_require__(26); +var getPrototypeOf = __w_pdfjs_require__(82); +var setPrototypeOf = __w_pdfjs_require__(84); +var wellKnownSymbol = __w_pdfjs_require__(35); +var uid = __w_pdfjs_require__(42); +var InternalStateModule = __w_pdfjs_require__(53); +var enforceInternalState = InternalStateModule.enforce; +var getInternalState = InternalStateModule.get; +var Int8Array = global.Int8Array; +var Int8ArrayPrototype = Int8Array && Int8Array.prototype; +var Uint8ClampedArray = global.Uint8ClampedArray; +var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype; +var TypedArray = Int8Array && getPrototypeOf(Int8Array); +var TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype); +var ObjectPrototype = Object.prototype; +var TypeError = global.TypeError; +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG'); +var TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor'; +var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera'; +var TYPED_ARRAY_TAG_REQUIRED = false; +var NAME, Constructor, Prototype; +var TypedArrayConstructorsList = { + Int8Array: 1, + Uint8Array: 1, + Uint8ClampedArray: 1, + Int16Array: 2, + Uint16Array: 2, + Int32Array: 4, + Uint32Array: 4, + Float32Array: 4, + Float64Array: 8 +}; +var BigIntArrayConstructorsList = { + BigInt64Array: 8, + BigUint64Array: 8 +}; +var isView = function isView(it) { + if (!isObject(it)) + return false; + var klass = classof(it); + return klass === 'DataView' || hasOwn(TypedArrayConstructorsList, klass) || hasOwn(BigIntArrayConstructorsList, klass); +}; +var getTypedArrayConstructor = function (it) { + var proto = getPrototypeOf(it); + if (!isObject(proto)) + return; + var state = getInternalState(proto); + return state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto); +}; +var isTypedArray = function (it) { + if (!isObject(it)) + return false; + var klass = classof(it); + return hasOwn(TypedArrayConstructorsList, klass) || hasOwn(BigIntArrayConstructorsList, klass); +}; +var aTypedArray = function (it) { + if (isTypedArray(it)) + return it; + throw TypeError('Target is not a typed array'); +}; +var aTypedArrayConstructor = function (C) { + if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) + return C; + throw TypeError(tryToString(C) + ' is not a typed array constructor'); +}; +var exportTypedArrayMethod = function (KEY, property, forced, options) { + if (!DESCRIPTORS) + return; + if (forced) + for (var ARRAY in TypedArrayConstructorsList) { + var TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) + try { + delete TypedArrayConstructor.prototype[KEY]; + } catch (error) { + try { + TypedArrayConstructor.prototype[KEY] = property; + } catch (error2) { + } + } } -}); + if (!TypedArrayPrototype[KEY] || forced) { + defineBuiltIn(TypedArrayPrototype, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options); + } +}; +var exportTypedArrayStaticMethod = function (KEY, property, forced) { + var ARRAY, TypedArrayConstructor; + if (!DESCRIPTORS) + return; + if (setPrototypeOf) { + if (forced) + for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) + try { + delete TypedArrayConstructor[KEY]; + } catch (error) { + } + } + if (!TypedArray[KEY] || forced) { + try { + return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property); + } catch (error) { + } + } else + return; + } + for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) { + defineBuiltIn(TypedArrayConstructor, KEY, property); + } + } +}; +for (NAME in TypedArrayConstructorsList) { + Constructor = global[NAME]; + Prototype = Constructor && Constructor.prototype; + if (Prototype) + enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; + else + NATIVE_ARRAY_BUFFER_VIEWS = false; +} +for (NAME in BigIntArrayConstructorsList) { + Constructor = global[NAME]; + Prototype = Constructor && Constructor.prototype; + if (Prototype) + enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; +} +if (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) { + TypedArray = function TypedArray() { + throw TypeError('Incorrect invocation'); + }; + if (NATIVE_ARRAY_BUFFER_VIEWS) + for (NAME in TypedArrayConstructorsList) { + if (global[NAME]) + setPrototypeOf(global[NAME], TypedArray); + } +} +if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) { + TypedArrayPrototype = TypedArray.prototype; + if (NATIVE_ARRAY_BUFFER_VIEWS) + for (NAME in TypedArrayConstructorsList) { + if (global[NAME]) + setPrototypeOf(global[NAME].prototype, TypedArrayPrototype); + } +} +if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) { + setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype); +} +if (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) { + TYPED_ARRAY_TAG_REQUIRED = true; + defineProperty(TypedArrayPrototype, TO_STRING_TAG, { + get: function () { + return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined; + } + }); + for (NAME in TypedArrayConstructorsList) + if (global[NAME]) { + createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME); + } +} +module.exports = { + NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS, + TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG, + aTypedArray: aTypedArray, + aTypedArrayConstructor: aTypedArrayConstructor, + exportTypedArrayMethod: exportTypedArrayMethod, + exportTypedArrayStaticMethod: exportTypedArrayStaticMethod, + getTypedArrayConstructor: getTypedArrayConstructor, + isView: isView, + isTypedArray: isTypedArray, + TypedArray: TypedArray, + TypedArrayPrototype: TypedArrayPrototype +}; /***/ }), /* 79 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -__w_pdfjs_require__(80); - -module.exports = __w_pdfjs_require__(9).Number.isInteger; +module.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined'; /***/ }), /* 80 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(7); - -$export($export.S, 'Number', { - isInteger: __w_pdfjs_require__(81) -}); +var TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(81); +var isCallable = __w_pdfjs_require__(23); +var classofRaw = __w_pdfjs_require__(18); +var wellKnownSymbol = __w_pdfjs_require__(35); +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var $Object = Object; +var CORRECT_ARGUMENTS = classofRaw((function () { + return arguments; +}())) == 'Arguments'; +var tryGet = function (it, key) { + try { + return it[key]; + } catch (error) { + } +}; +module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result; +}; /***/ }), /* 81 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var isObject = __w_pdfjs_require__(13); - -var floor = Math.floor; - -module.exports = function isInteger(it) { - return !isObject(it) && isFinite(it) && floor(it) === it; -}; +var wellKnownSymbol = __w_pdfjs_require__(35); +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var test = {}; +test[TO_STRING_TAG] = 'z'; +module.exports = String(test) === '[object z]'; /***/ }), /* 82 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(83); - -__w_pdfjs_require__(48); - -__w_pdfjs_require__(84); - -__w_pdfjs_require__(87); - -__w_pdfjs_require__(100); - -__w_pdfjs_require__(101); - -module.exports = __w_pdfjs_require__(9).Promise; +var hasOwn = __w_pdfjs_require__(40); +var isCallable = __w_pdfjs_require__(23); +var toObject = __w_pdfjs_require__(41); +var sharedKey = __w_pdfjs_require__(55); +var CORRECT_PROTOTYPE_GETTER = __w_pdfjs_require__(83); +var IE_PROTO = sharedKey('IE_PROTO'); +var $Object = Object; +var ObjectPrototype = $Object.prototype; +module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) { + var object = toObject(O); + if (hasOwn(object, IE_PROTO)) + return object[IE_PROTO]; + var constructor = object.constructor; + if (isCallable(constructor) && object instanceof constructor) { + return constructor.prototype; + } + return object instanceof $Object ? ObjectPrototype : null; +}; /***/ }), /* 83 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var classof = __w_pdfjs_require__(68); - -var test = {}; -test[__w_pdfjs_require__(33)('toStringTag')] = 'z'; - -if (test + '' != '[object z]') { - __w_pdfjs_require__(20)(Object.prototype, 'toString', function toString() { - return '[object ' + classof(this) + ']'; - }, true); -} +var fails = __w_pdfjs_require__(10); +module.exports = !fails(function () { + function F() { + } + F.prototype.constructor = null; + return Object.getPrototypeOf(new F()) !== F.prototype; +}); /***/ }), /* 84 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $iterators = __w_pdfjs_require__(85); - -var getKeys = __w_pdfjs_require__(55); - -var redefine = __w_pdfjs_require__(20); - -var global = __w_pdfjs_require__(8); - -var hide = __w_pdfjs_require__(10); - -var Iterators = __w_pdfjs_require__(51); - -var wks = __w_pdfjs_require__(33); - -var ITERATOR = wks('iterator'); -var TO_STRING_TAG = wks('toStringTag'); -var ArrayValues = Iterators.Array; -var DOMIterables = { - CSSRuleList: true, - CSSStyleDeclaration: false, - CSSValueList: false, - ClientRectList: false, - DOMRectList: false, - DOMStringList: false, - DOMTokenList: true, - DataTransferItemList: false, - FileList: false, - HTMLAllCollection: false, - HTMLCollection: false, - HTMLFormElement: false, - HTMLSelectElement: false, - MediaList: true, - MimeTypeArray: false, - NamedNodeMap: false, - NodeList: true, - PaintRequestList: false, - Plugin: false, - PluginArray: false, - SVGLengthList: false, - SVGNumberList: false, - SVGPathSegList: false, - SVGPointList: false, - SVGStringList: false, - SVGTransformList: false, - SourceBufferList: false, - StyleSheetList: true, - TextTrackCueList: false, - TextTrackList: false, - TouchList: false -}; - -for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) { - var NAME = collections[i]; - var explicit = DOMIterables[NAME]; - var Collection = global[NAME]; - var proto = Collection && Collection.prototype; - var key; - - if (proto) { - if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues); - if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); - Iterators[NAME] = ArrayValues; - if (explicit) for (key in $iterators) { - if (!proto[key]) redefine(proto, key, $iterators[key], true); - } - } -} +var uncurryThis = __w_pdfjs_require__(17); +var anObject = __w_pdfjs_require__(48); +var aPossiblePrototype = __w_pdfjs_require__(85); +module.exports = Object.setPrototypeOf || ('__proto__' in {} ? (function () { + var CORRECT_SETTER = false; + var test = {}; + var setter; + try { + setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set); + setter(test, []); + CORRECT_SETTER = test instanceof Array; + } catch (error) { + } + return function setPrototypeOf(O, proto) { + anObject(O); + aPossiblePrototype(proto); + if (CORRECT_SETTER) + setter(O, proto); + else + O.__proto__ = proto; + return O; + }; +}()) : undefined); /***/ }), /* 85 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var addToUnscopables = __w_pdfjs_require__(46); - -var step = __w_pdfjs_require__(86); - -var Iterators = __w_pdfjs_require__(51); - -var toIObject = __w_pdfjs_require__(43); - -module.exports = __w_pdfjs_require__(50)(Array, 'Array', function (iterated, kind) { - this._t = toIObject(iterated); - this._i = 0; - this._k = kind; -}, function () { - var O = this._t; - var kind = this._k; - var index = this._i++; - - if (!O || index >= O.length) { - this._t = undefined; - return step(1); - } - - if (kind == 'keys') return step(0, index); - if (kind == 'values') return step(0, O[index]); - return step(0, [index, O[index]]); -}, 'values'); -Iterators.Arguments = Iterators.Array; -addToUnscopables('keys'); -addToUnscopables('values'); -addToUnscopables('entries'); +var isCallable = __w_pdfjs_require__(23); +var $String = String; +var $TypeError = TypeError; +module.exports = function (argument) { + if (typeof argument == 'object' || isCallable(argument)) + return argument; + throw $TypeError("Can't set " + $String(argument) + ' as a prototype'); +}; /***/ }), /* 86 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = function (done, value) { - return { - value: value, - done: !!done - }; -}; +__w_pdfjs_require__(87); +__w_pdfjs_require__(93); +__w_pdfjs_require__(95); +__w_pdfjs_require__(117); +__w_pdfjs_require__(119); +var path = __w_pdfjs_require__(128); +module.exports = path.structuredClone; /***/ }), /* 87 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var LIBRARY = __w_pdfjs_require__(25); - -var global = __w_pdfjs_require__(8); - -var ctx = __w_pdfjs_require__(26); - -var classof = __w_pdfjs_require__(68); - -var $export = __w_pdfjs_require__(7); - -var isObject = __w_pdfjs_require__(13); - -var aFunction = __w_pdfjs_require__(27); - -var anInstance = __w_pdfjs_require__(88); - -var forOf = __w_pdfjs_require__(89); - -var speciesConstructor = __w_pdfjs_require__(90); - -var task = __w_pdfjs_require__(91).set; - -var microtask = __w_pdfjs_require__(93)(); - -var newPromiseCapabilityModule = __w_pdfjs_require__(94); - -var perform = __w_pdfjs_require__(95); - -var userAgent = __w_pdfjs_require__(96); - -var promiseResolve = __w_pdfjs_require__(97); - -var PROMISE = 'Promise'; -var TypeError = global.TypeError; -var process = global.process; -var versions = process && process.versions; -var v8 = versions && versions.v8 || ''; -var $Promise = global[PROMISE]; -var isNode = classof(process) == 'process'; - -var empty = function empty() {}; - -var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper; -var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f; -var USE_NATIVE = !!function () { - try { - var promise = $Promise.resolve(1); - - var FakePromise = (promise.constructor = {})[__w_pdfjs_require__(33)('species')] = function (exec) { - exec(empty, empty); - }; - - return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise && v8.indexOf('6.6') !== 0 && userAgent.indexOf('Chrome/66') === -1; - } catch (e) {} -}(); - -var isThenable = function isThenable(it) { - var then; - return isObject(it) && typeof (then = it.then) == 'function' ? then : false; -}; - -var notify = function notify(promise, isReject) { - if (promise._n) return; - promise._n = true; - var chain = promise._c; - microtask(function () { - var value = promise._v; - var ok = promise._s == 1; - var i = 0; - - var run = function run(reaction) { - var handler = ok ? reaction.ok : reaction.fail; - var resolve = reaction.resolve; - var reject = reaction.reject; - var domain = reaction.domain; - var result, then, exited; - - try { - if (handler) { - if (!ok) { - if (promise._h == 2) onHandleUnhandled(promise); - promise._h = 1; - } - - if (handler === true) result = value;else { - if (domain) domain.enter(); - result = handler(value); - - if (domain) { - domain.exit(); - exited = true; - } - } - - if (result === reaction.promise) { - reject(TypeError('Promise-chain cycle')); - } else if (then = isThenable(result)) { - then.call(result, resolve, reject); - } else resolve(result); - } else reject(value); - } catch (e) { - if (domain && !exited) domain.exit(); - reject(e); - } - }; - - while (chain.length > i) { - run(chain[i++]); - } - - promise._c = []; - promise._n = false; - if (isReject && !promise._h) onUnhandled(promise); - }); -}; - -var onUnhandled = function onUnhandled(promise) { - task.call(global, function () { - var value = promise._v; - var unhandled = isUnhandled(promise); - var result, handler, console; - - if (unhandled) { - result = perform(function () { - if (isNode) { - process.emit('unhandledRejection', value, promise); - } else if (handler = global.onunhandledrejection) { - handler({ - promise: promise, - reason: value - }); - } else if ((console = global.console) && console.error) { - console.error('Unhandled promise rejection', value); - } - }); - promise._h = isNode || isUnhandled(promise) ? 2 : 1; - } - - promise._a = undefined; - if (unhandled && result.e) throw result.v; - }); -}; - -var isUnhandled = function isUnhandled(promise) { - return promise._h !== 1 && (promise._a || promise._c).length === 0; -}; - -var onHandleUnhandled = function onHandleUnhandled(promise) { - task.call(global, function () { - var handler; - - if (isNode) { - process.emit('rejectionHandled', promise); - } else if (handler = global.onrejectionhandled) { - handler({ - promise: promise, - reason: promise._v - }); - } - }); -}; - -var $reject = function $reject(value) { - var promise = this; - if (promise._d) return; - promise._d = true; - promise = promise._w || promise; - promise._v = value; - promise._s = 2; - if (!promise._a) promise._a = promise._c.slice(); - notify(promise, true); -}; - -var $resolve = function $resolve(value) { - var promise = this; - var then; - if (promise._d) return; - promise._d = true; - promise = promise._w || promise; - - try { - if (promise === value) throw TypeError("Promise can't be resolved itself"); - - if (then = isThenable(value)) { - microtask(function () { - var wrapper = { - _w: promise, - _d: false - }; - - try { - then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1)); - } catch (e) { - $reject.call(wrapper, e); - } - }); - } else { - promise._v = value; - promise._s = 1; - notify(promise, false); - } - } catch (e) { - $reject.call({ - _w: promise, - _d: false - }, e); - } -}; - -if (!USE_NATIVE) { - $Promise = function Promise(executor) { - anInstance(this, $Promise, PROMISE, '_h'); - aFunction(executor); - Internal.call(this); - - try { - executor(ctx($resolve, this, 1), ctx($reject, this, 1)); - } catch (err) { - $reject.call(this, err); - } +var toIndexedObject = __w_pdfjs_require__(15); +var addToUnscopables = __w_pdfjs_require__(70); +var Iterators = __w_pdfjs_require__(88); +var InternalStateModule = __w_pdfjs_require__(53); +var defineProperty = (__w_pdfjs_require__(46).f); +var defineIterator = __w_pdfjs_require__(89); +var IS_PURE = __w_pdfjs_require__(37); +var DESCRIPTORS = __w_pdfjs_require__(9); +var ARRAY_ITERATOR = 'Array Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); +module.exports = defineIterator(Array, 'Array', function (iterated, kind) { + setInternalState(this, { + type: ARRAY_ITERATOR, + target: toIndexedObject(iterated), + index: 0, + kind: kind + }); +}, function () { + var state = getInternalState(this); + var target = state.target; + var kind = state.kind; + var index = state.index++; + if (!target || index >= target.length) { + state.target = undefined; + return { + value: undefined, + done: true }; - - Internal = function Promise(executor) { - this._c = []; - this._a = undefined; - this._s = 0; - this._d = false; - this._v = undefined; - this._h = 0; - this._n = false; + } + if (kind == 'keys') + return { + value: index, + done: false }; - - Internal.prototype = __w_pdfjs_require__(98)($Promise.prototype, { - then: function then(onFulfilled, onRejected) { - var reaction = newPromiseCapability(speciesConstructor(this, $Promise)); - reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; - reaction.fail = typeof onRejected == 'function' && onRejected; - reaction.domain = isNode ? process.domain : undefined; - - this._c.push(reaction); - - if (this._a) this._a.push(reaction); - if (this._s) notify(this, false); - return reaction.promise; - }, - 'catch': function _catch(onRejected) { - return this.then(undefined, onRejected); - } - }); - - OwnPromiseCapability = function OwnPromiseCapability() { - var promise = new Internal(); - this.promise = promise; - this.resolve = ctx($resolve, promise, 1); - this.reject = ctx($reject, promise, 1); + if (kind == 'values') + return { + value: target[index], + done: false }; - - newPromiseCapabilityModule.f = newPromiseCapability = function newPromiseCapability(C) { - return C === $Promise || C === Wrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C); - }; -} - -$export($export.G + $export.W + $export.F * !USE_NATIVE, { - Promise: $Promise -}); - -__w_pdfjs_require__(60)($Promise, PROMISE); - -__w_pdfjs_require__(99)(PROMISE); - -Wrapper = __w_pdfjs_require__(9)[PROMISE]; -$export($export.S + $export.F * !USE_NATIVE, PROMISE, { - reject: function reject(r) { - var capability = newPromiseCapability(this); - var $$reject = capability.reject; - $$reject(r); - return capability.promise; - } -}); -$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, { - resolve: function resolve(x) { - return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x); - } -}); -$export($export.S + $export.F * !(USE_NATIVE && __w_pdfjs_require__(69)(function (iter) { - $Promise.all(iter)['catch'](empty); -})), PROMISE, { - all: function all(iterable) { - var C = this; - var capability = newPromiseCapability(C); - var resolve = capability.resolve; - var reject = capability.reject; - var result = perform(function () { - var values = []; - var index = 0; - var remaining = 1; - forOf(iterable, false, function (promise) { - var $index = index++; - var alreadyCalled = false; - values.push(undefined); - remaining++; - C.resolve(promise).then(function (value) { - if (alreadyCalled) return; - alreadyCalled = true; - values[$index] = value; - --remaining || resolve(values); - }, reject); - }); - --remaining || resolve(values); - }); - if (result.e) reject(result.v); - return capability.promise; - }, - race: function race(iterable) { - var C = this; - var capability = newPromiseCapability(C); - var reject = capability.reject; - var result = perform(function () { - forOf(iterable, false, function (promise) { - C.resolve(promise).then(capability.resolve, reject); - }); - }); - if (result.e) reject(result.v); - return capability.promise; - } -}); + return { + value: [ + index, + target[index] + ], + done: false + }; +}, 'values'); +var values = Iterators.Arguments = Iterators.Array; +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); +if (!IS_PURE && DESCRIPTORS && values.name !== 'values') + try { + defineProperty(values, 'name', { value: 'values' }); + } catch (error) { + } /***/ }), /* 88 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -module.exports = function (it, Constructor, name, forbiddenField) { - if (!(it instanceof Constructor) || forbiddenField !== undefined && forbiddenField in it) { - throw TypeError(name + ': incorrect invocation!'); - } - - return it; -}; +module.exports = {}; /***/ }), /* 89 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var ctx = __w_pdfjs_require__(26); - -var call = __w_pdfjs_require__(64); - -var isArrayIter = __w_pdfjs_require__(65); - -var anObject = __w_pdfjs_require__(12); - -var toLength = __w_pdfjs_require__(28); - -var getIterFn = __w_pdfjs_require__(67); - -var BREAK = {}; -var RETURN = {}; - -var _exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { - var iterFn = ITERATOR ? function () { - return iterable; - } : getIterFn(iterable); - var f = ctx(fn, that, entries ? 2 : 1); - var index = 0; - var length, step, iterator, result; - if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!'); - if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) { - result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); - if (result === BREAK || result === RETURN) return result; - } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) { - result = call(iterator, f, step.value, entries); - if (result === BREAK || result === RETURN) return result; - } +var $ = __w_pdfjs_require__(6); +var call = __w_pdfjs_require__(11); +var IS_PURE = __w_pdfjs_require__(37); +var FunctionName = __w_pdfjs_require__(51); +var isCallable = __w_pdfjs_require__(23); +var createIteratorConstructor = __w_pdfjs_require__(90); +var getPrototypeOf = __w_pdfjs_require__(82); +var setPrototypeOf = __w_pdfjs_require__(84); +var setToStringTag = __w_pdfjs_require__(92); +var createNonEnumerableProperty = __w_pdfjs_require__(45); +var defineBuiltIn = __w_pdfjs_require__(49); +var wellKnownSymbol = __w_pdfjs_require__(35); +var Iterators = __w_pdfjs_require__(88); +var IteratorsCore = __w_pdfjs_require__(91); +var PROPER_FUNCTION_NAME = FunctionName.PROPER; +var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; +var IteratorPrototype = IteratorsCore.IteratorPrototype; +var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; +var ITERATOR = wellKnownSymbol('iterator'); +var KEYS = 'keys'; +var VALUES = 'values'; +var ENTRIES = 'entries'; +var returnThis = function () { + return this; +}; +module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor(IteratorConstructor, NAME, next); + var getIterationMethod = function (KIND) { + if (KIND === DEFAULT && defaultIterator) + return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) + return IterablePrototype[KIND]; + switch (KIND) { + case KEYS: + return function keys() { + return new IteratorConstructor(this, KIND); + }; + case VALUES: + return function values() { + return new IteratorConstructor(this, KIND); + }; + case ENTRIES: + return function entries() { + return new IteratorConstructor(this, KIND); + }; + } + return function () { + return new IteratorConstructor(this); + }; + }; + var TO_STRING_TAG = NAME + ' Iterator'; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype['@@iterator'] || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + if (anyNativeIterator) { + CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); + if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { + if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { + if (setPrototypeOf) { + setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); + } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) { + defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis); + } + } + setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); + if (IS_PURE) + Iterators[TO_STRING_TAG] = returnThis; + } + } + if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { + if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) { + createNonEnumerableProperty(IterablePrototype, 'name', VALUES); + } else { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { + return call(nativeIterator, this); + }; + } + } + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) + for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + defineBuiltIn(IterablePrototype, KEY, methods[KEY]); + } + } + else + $({ + target: NAME, + proto: true, + forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME + }, methods); + } + if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { + defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT }); + } + Iterators[NAME] = defaultIterator; + return methods; }; - -_exports.BREAK = BREAK; -_exports.RETURN = RETURN; /***/ }), /* 90 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var anObject = __w_pdfjs_require__(12); - -var aFunction = __w_pdfjs_require__(27); - -var SPECIES = __w_pdfjs_require__(33)('species'); - -module.exports = function (O, D) { - var C = anObject(O).constructor; - var S; - return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); +var IteratorPrototype = (__w_pdfjs_require__(91).IteratorPrototype); +var create = __w_pdfjs_require__(71); +var createPropertyDescriptor = __w_pdfjs_require__(14); +var setToStringTag = __w_pdfjs_require__(92); +var Iterators = __w_pdfjs_require__(88); +var returnThis = function () { + return this; +}; +module.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) { + var TO_STRING_TAG = NAME + ' Iterator'; + IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) }); + setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); + Iterators[TO_STRING_TAG] = returnThis; + return IteratorConstructor; }; /***/ }), /* 91 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var ctx = __w_pdfjs_require__(26); - -var invoke = __w_pdfjs_require__(92); - -var html = __w_pdfjs_require__(59); - -var cel = __w_pdfjs_require__(17); - -var global = __w_pdfjs_require__(8); - -var process = global.process; -var setTask = global.setImmediate; -var clearTask = global.clearImmediate; -var MessageChannel = global.MessageChannel; -var Dispatch = global.Dispatch; -var counter = 0; -var queue = {}; -var ONREADYSTATECHANGE = 'onreadystatechange'; -var defer, channel, port; - -var run = function run() { - var id = +this; - - if (queue.hasOwnProperty(id)) { - var fn = queue[id]; - delete queue[id]; - fn(); - } -}; - -var listener = function listener(event) { - run.call(event.data); -}; - -if (!setTask || !clearTask) { - setTask = function setImmediate(fn) { - var args = []; - var i = 1; - - while (arguments.length > i) { - args.push(arguments[i++]); - } - - queue[++counter] = function () { - invoke(typeof fn == 'function' ? fn : Function(fn), args); - }; - - defer(counter); - return counter; - }; - - clearTask = function clearImmediate(id) { - delete queue[id]; - }; - - if (__w_pdfjs_require__(32)(process) == 'process') { - defer = function defer(id) { - process.nextTick(ctx(run, id, 1)); - }; - } else if (Dispatch && Dispatch.now) { - defer = function defer(id) { - Dispatch.now(ctx(run, id, 1)); - }; - } else if (MessageChannel) { - channel = new MessageChannel(); - port = channel.port2; - channel.port1.onmessage = listener; - defer = ctx(port.postMessage, port, 1); - } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) { - defer = function defer(id) { - global.postMessage(id + '', '*'); - }; - - global.addEventListener('message', listener, false); - } else if (ONREADYSTATECHANGE in cel('script')) { - defer = function defer(id) { - html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () { - html.removeChild(this); - run.call(id); - }; - }; - } else { - defer = function defer(id) { - setTimeout(ctx(run, id, 1), 0); - }; - } +var fails = __w_pdfjs_require__(10); +var isCallable = __w_pdfjs_require__(23); +var create = __w_pdfjs_require__(71); +var getPrototypeOf = __w_pdfjs_require__(82); +var defineBuiltIn = __w_pdfjs_require__(49); +var wellKnownSymbol = __w_pdfjs_require__(35); +var IS_PURE = __w_pdfjs_require__(37); +var ITERATOR = wellKnownSymbol('iterator'); +var BUGGY_SAFARI_ITERATORS = false; +var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; +if ([].keys) { + arrayIterator = [].keys(); + if (!('next' in arrayIterator)) + BUGGY_SAFARI_ITERATORS = true; + else { + PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) + IteratorPrototype = PrototypeOfArrayIteratorPrototype; + } +} +var NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () { + var test = {}; + return IteratorPrototype[ITERATOR].call(test) !== test; +}); +if (NEW_ITERATOR_PROTOTYPE) + IteratorPrototype = {}; +else if (IS_PURE) + IteratorPrototype = create(IteratorPrototype); +if (!isCallable(IteratorPrototype[ITERATOR])) { + defineBuiltIn(IteratorPrototype, ITERATOR, function () { + return this; + }); } - module.exports = { - set: setTask, - clear: clearTask + IteratorPrototype: IteratorPrototype, + BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS }; /***/ }), /* 92 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = function (fn, args, that) { - var un = that === undefined; - - switch (args.length) { - case 0: - return un ? fn() : fn.call(that); - - case 1: - return un ? fn(args[0]) : fn.call(that, args[0]); - - case 2: - return un ? fn(args[0], args[1]) : fn.call(that, args[0], args[1]); - - case 3: - return un ? fn(args[0], args[1], args[2]) : fn.call(that, args[0], args[1], args[2]); - - case 4: - return un ? fn(args[0], args[1], args[2], args[3]) : fn.call(that, args[0], args[1], args[2], args[3]); - } - - return fn.apply(that, args); +var defineProperty = (__w_pdfjs_require__(46).f); +var hasOwn = __w_pdfjs_require__(40); +var wellKnownSymbol = __w_pdfjs_require__(35); +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +module.exports = function (target, TAG, STATIC) { + if (target && !STATIC) + target = target.prototype; + if (target && !hasOwn(target, TO_STRING_TAG)) { + defineProperty(target, TO_STRING_TAG, { + configurable: true, + value: TAG + }); + } }; /***/ }), /* 93 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var global = __w_pdfjs_require__(8); - -var macrotask = __w_pdfjs_require__(91).set; - -var Observer = global.MutationObserver || global.WebKitMutationObserver; -var process = global.process; -var Promise = global.Promise; -var isNode = __w_pdfjs_require__(32)(process) == 'process'; - -module.exports = function () { - var head, last, notify; - - var flush = function flush() { - var parent, fn; - if (isNode && (parent = process.domain)) parent.exit(); - - while (head) { - fn = head.fn; - head = head.next; - - try { - fn(); - } catch (e) { - if (head) notify();else last = undefined; - throw e; - } - } - - last = undefined; - if (parent) parent.enter(); - }; - - if (isNode) { - notify = function notify() { - process.nextTick(flush); - }; - } else if (Observer && !(global.navigator && global.navigator.standalone)) { - var toggle = true; - var node = document.createTextNode(''); - new Observer(flush).observe(node, { - characterData: true - }); - - notify = function notify() { - node.data = toggle = !toggle; - }; - } else if (Promise && Promise.resolve) { - var promise = Promise.resolve(undefined); - - notify = function notify() { - promise.then(flush); - }; - } else { - notify = function notify() { - macrotask.call(global, flush); - }; - } - - return function (fn) { - var task = { - fn: fn, - next: undefined - }; - if (last) last.next = task; - - if (!head) { - head = task; - notify(); - } - - last = task; - }; -}; +var TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(81); +var defineBuiltIn = __w_pdfjs_require__(49); +var toString = __w_pdfjs_require__(94); +if (!TO_STRING_TAG_SUPPORT) { + defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true }); +} /***/ }), /* 94 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var aFunction = __w_pdfjs_require__(27); - -function PromiseCapability(C) { - var resolve, reject; - this.promise = new C(function ($$resolve, $$reject) { - if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); - resolve = $$resolve; - reject = $$reject; - }); - this.resolve = aFunction(resolve); - this.reject = aFunction(reject); -} - -module.exports.f = function (C) { - return new PromiseCapability(C); +var TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(81); +var classof = __w_pdfjs_require__(80); +module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() { + return '[object ' + classof(this) + ']'; }; /***/ }), /* 95 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = function (exec) { - try { - return { - e: false, - v: exec() - }; - } catch (e) { - return { - e: true, - v: e - }; - } -}; +__w_pdfjs_require__(96); /***/ }), /* 96 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var global = __w_pdfjs_require__(8); - -var navigator = global.navigator; -module.exports = navigator && navigator.userAgent || ''; +var collection = __w_pdfjs_require__(97); +var collectionStrong = __w_pdfjs_require__(114); +collection('Map', function (init) { + return function Map() { + return init(this, arguments.length ? arguments[0] : undefined); + }; +}, collectionStrong); /***/ }), /* 97 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var anObject = __w_pdfjs_require__(12); - -var isObject = __w_pdfjs_require__(13); - -var newPromiseCapability = __w_pdfjs_require__(94); - -module.exports = function (C, x) { - anObject(C); - if (isObject(x) && x.constructor === C) return x; - var promiseCapability = newPromiseCapability.f(C); - var resolve = promiseCapability.resolve; - resolve(x); - return promiseCapability.promise; +var $ = __w_pdfjs_require__(6); +var global = __w_pdfjs_require__(7); +var uncurryThis = __w_pdfjs_require__(17); +var isForced = __w_pdfjs_require__(69); +var defineBuiltIn = __w_pdfjs_require__(49); +var InternalMetadataModule = __w_pdfjs_require__(98); +var iterate = __w_pdfjs_require__(105); +var anInstance = __w_pdfjs_require__(111); +var isCallable = __w_pdfjs_require__(23); +var isObject = __w_pdfjs_require__(22); +var fails = __w_pdfjs_require__(10); +var checkCorrectnessOfIteration = __w_pdfjs_require__(112); +var setToStringTag = __w_pdfjs_require__(92); +var inheritIfRequired = __w_pdfjs_require__(113); +module.exports = function (CONSTRUCTOR_NAME, wrapper, common) { + var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1; + var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1; + var ADDER = IS_MAP ? 'set' : 'add'; + var NativeConstructor = global[CONSTRUCTOR_NAME]; + var NativePrototype = NativeConstructor && NativeConstructor.prototype; + var Constructor = NativeConstructor; + var exported = {}; + var fixMethod = function (KEY) { + var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]); + defineBuiltIn(NativePrototype, KEY, KEY == 'add' ? function add(value) { + uncurriedNativeMethod(this, value === 0 ? 0 : value); + return this; + } : KEY == 'delete' ? function (key) { + return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : KEY == 'get' ? function get(key) { + return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : KEY == 'has' ? function has(key) { + return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : function set(key, value) { + uncurriedNativeMethod(this, key === 0 ? 0 : key, value); + return this; + }); + }; + var REPLACE = isForced(CONSTRUCTOR_NAME, !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () { + new NativeConstructor().entries().next(); + }))); + if (REPLACE) { + Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); + InternalMetadataModule.enable(); + } else if (isForced(CONSTRUCTOR_NAME, true)) { + var instance = new Constructor(); + var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; + var THROWS_ON_PRIMITIVES = fails(function () { + instance.has(1); + }); + var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { + new NativeConstructor(iterable); + }); + var BUGGY_ZERO = !IS_WEAK && fails(function () { + var $instance = new NativeConstructor(); + var index = 5; + while (index--) + $instance[ADDER](index, index); + return !$instance.has(-0); + }); + if (!ACCEPT_ITERABLES) { + Constructor = wrapper(function (dummy, iterable) { + anInstance(dummy, NativePrototype); + var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor); + if (iterable != undefined) + iterate(iterable, that[ADDER], { + that: that, + AS_ENTRIES: IS_MAP + }); + return that; + }); + Constructor.prototype = NativePrototype; + NativePrototype.constructor = Constructor; + } + if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + if (BUGGY_ZERO || HASNT_CHAINING) + fixMethod(ADDER); + if (IS_WEAK && NativePrototype.clear) + delete NativePrototype.clear; + } + exported[CONSTRUCTOR_NAME] = Constructor; + $({ + global: true, + constructor: true, + forced: Constructor != NativeConstructor + }, exported); + setToStringTag(Constructor, CONSTRUCTOR_NAME); + if (!IS_WEAK) + common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); + return Constructor; }; /***/ }), /* 98 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var redefine = __w_pdfjs_require__(20); - -module.exports = function (target, src, safe) { - for (var key in src) { - redefine(target, key, src[key], safe); +var $ = __w_pdfjs_require__(6); +var uncurryThis = __w_pdfjs_require__(17); +var hiddenKeys = __w_pdfjs_require__(56); +var isObject = __w_pdfjs_require__(22); +var hasOwn = __w_pdfjs_require__(40); +var defineProperty = (__w_pdfjs_require__(46).f); +var getOwnPropertyNamesModule = __w_pdfjs_require__(59); +var getOwnPropertyNamesExternalModule = __w_pdfjs_require__(99); +var isExtensible = __w_pdfjs_require__(102); +var uid = __w_pdfjs_require__(42); +var FREEZING = __w_pdfjs_require__(104); +var REQUIRED = false; +var METADATA = uid('meta'); +var id = 0; +var setMetadata = function (it) { + defineProperty(it, METADATA, { + value: { + objectID: 'O' + id++, + weakData: {} } - - return target; + }); }; +var fastKey = function (it, create) { + if (!isObject(it)) + return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!hasOwn(it, METADATA)) { + if (!isExtensible(it)) + return 'F'; + if (!create) + return 'E'; + setMetadata(it); + } + return it[METADATA].objectID; +}; +var getWeakData = function (it, create) { + if (!hasOwn(it, METADATA)) { + if (!isExtensible(it)) + return true; + if (!create) + return false; + setMetadata(it); + } + return it[METADATA].weakData; +}; +var onFreeze = function (it) { + if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) + setMetadata(it); + return it; +}; +var enable = function () { + meta.enable = function () { + }; + REQUIRED = true; + var getOwnPropertyNames = getOwnPropertyNamesModule.f; + var splice = uncurryThis([].splice); + var test = {}; + test[METADATA] = 1; + if (getOwnPropertyNames(test).length) { + getOwnPropertyNamesModule.f = function (it) { + var result = getOwnPropertyNames(it); + for (var i = 0, length = result.length; i < length; i++) { + if (result[i] === METADATA) { + splice(result, i, 1); + break; + } + } + return result; + }; + $({ + target: 'Object', + stat: true, + forced: true + }, { getOwnPropertyNames: getOwnPropertyNamesExternalModule.f }); + } +}; +var meta = module.exports = { + enable: enable, + fastKey: fastKey, + getWeakData: getWeakData, + onFreeze: onFreeze +}; +hiddenKeys[METADATA] = true; /***/ }), /* 99 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var global = __w_pdfjs_require__(8); - -var dP = __w_pdfjs_require__(11); - -var DESCRIPTORS = __w_pdfjs_require__(15); - -var SPECIES = __w_pdfjs_require__(33)('species'); - -module.exports = function (KEY) { - var C = global[KEY]; - if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { - configurable: true, - get: function get() { - return this; - } - }); +var classof = __w_pdfjs_require__(18); +var toIndexedObject = __w_pdfjs_require__(15); +var $getOwnPropertyNames = (__w_pdfjs_require__(59).f); +var arraySlice = __w_pdfjs_require__(100); +var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; +var getWindowNames = function (it) { + try { + return $getOwnPropertyNames(it); + } catch (error) { + return arraySlice(windowNames); + } +}; +module.exports.f = function getOwnPropertyNames(it) { + return windowNames && classof(it) == 'Window' ? getWindowNames(it) : $getOwnPropertyNames(toIndexedObject(it)); }; /***/ }), /* 100 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(7); - -var core = __w_pdfjs_require__(9); - -var global = __w_pdfjs_require__(8); - -var speciesConstructor = __w_pdfjs_require__(90); - -var promiseResolve = __w_pdfjs_require__(97); - -$export($export.P + $export.R, 'Promise', { - 'finally': function _finally(onFinally) { - var C = speciesConstructor(this, core.Promise || global.Promise); - var isFunction = typeof onFinally == 'function'; - return this.then(isFunction ? function (x) { - return promiseResolve(C, onFinally()).then(function () { - return x; - }); - } : onFinally, isFunction ? function (e) { - return promiseResolve(C, onFinally()).then(function () { - throw e; - }); - } : onFinally); - } -}); +var toAbsoluteIndex = __w_pdfjs_require__(62); +var lengthOfArrayLike = __w_pdfjs_require__(65); +var createProperty = __w_pdfjs_require__(101); +var $Array = Array; +var max = Math.max; +module.exports = function (O, start, end) { + var length = lengthOfArrayLike(O); + var k = toAbsoluteIndex(start, length); + var fin = toAbsoluteIndex(end === undefined ? length : end, length); + var result = $Array(max(fin - k, 0)); + for (var n = 0; k < fin; k++, n++) + createProperty(result, n, O[k]); + result.length = n; + return result; +}; /***/ }), /* 101 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var $export = __w_pdfjs_require__(7); - -var newPromiseCapability = __w_pdfjs_require__(94); - -var perform = __w_pdfjs_require__(95); - -$export($export.S, 'Promise', { - 'try': function _try(callbackfn) { - var promiseCapability = newPromiseCapability.f(this); - var result = perform(callbackfn); - (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v); - return promiseCapability.promise; - } -}); +var toPropertyKey = __w_pdfjs_require__(20); +var definePropertyModule = __w_pdfjs_require__(46); +var createPropertyDescriptor = __w_pdfjs_require__(14); +module.exports = function (object, key, value) { + var propertyKey = toPropertyKey(key); + if (propertyKey in object) + definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); + else + object[propertyKey] = value; +}; /***/ }), /* 102 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(83); - -__w_pdfjs_require__(84); - -__w_pdfjs_require__(103); - -__w_pdfjs_require__(115); - -__w_pdfjs_require__(117); - -module.exports = __w_pdfjs_require__(9).WeakMap; +var fails = __w_pdfjs_require__(10); +var isObject = __w_pdfjs_require__(22); +var classof = __w_pdfjs_require__(18); +var ARRAY_BUFFER_NON_EXTENSIBLE = __w_pdfjs_require__(103); +var $isExtensible = Object.isExtensible; +var FAILS_ON_PRIMITIVES = fails(function () { + $isExtensible(1); +}); +module.exports = FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE ? function isExtensible(it) { + if (!isObject(it)) + return false; + if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') + return false; + return $isExtensible ? $isExtensible(it) : true; +} : $isExtensible; /***/ }), /* 103 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var global = __w_pdfjs_require__(8); - -var each = __w_pdfjs_require__(104)(0); - -var redefine = __w_pdfjs_require__(20); - -var meta = __w_pdfjs_require__(108); - -var assign = __w_pdfjs_require__(72); - -var weak = __w_pdfjs_require__(109); - -var isObject = __w_pdfjs_require__(13); - -var validate = __w_pdfjs_require__(110); - -var NATIVE_WEAK_MAP = __w_pdfjs_require__(110); - -var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global; -var WEAK_MAP = 'WeakMap'; -var getWeak = meta.getWeak; -var isExtensible = Object.isExtensible; -var uncaughtFrozenStore = weak.ufstore; -var InternalMap; - -var wrapper = function wrapper(get) { - return function WeakMap() { - return get(this, arguments.length > 0 ? arguments[0] : undefined); - }; -}; - -var methods = { - get: function get(key) { - if (isObject(key)) { - var data = getWeak(key); - if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key); - return data ? data[this._i] : undefined; - } - }, - set: function set(key, value) { - return weak.def(validate(this, WEAK_MAP), key, value); - } -}; - -var $WeakMap = module.exports = __w_pdfjs_require__(111)(WEAK_MAP, wrapper, methods, weak, true, true); - -if (NATIVE_WEAK_MAP && IS_IE11) { - InternalMap = weak.getConstructor(wrapper, WEAK_MAP); - assign(InternalMap.prototype, methods); - meta.NEED = true; - each(['delete', 'has', 'get', 'set'], function (key) { - var proto = $WeakMap.prototype; - var method = proto[key]; - redefine(proto, key, function (a, b) { - if (isObject(a) && !isExtensible(a)) { - if (!this._f) this._f = new InternalMap(); - - var result = this._f[key](a, b); - - return key == 'set' ? this : result; - } - - return method.call(this, a, b); - }); - }); -} +var fails = __w_pdfjs_require__(10); +module.exports = fails(function () { + if (typeof ArrayBuffer == 'function') { + var buffer = new ArrayBuffer(8); + if (Object.isExtensible(buffer)) + Object.defineProperty(buffer, 'a', { value: 8 }); + } +}); /***/ }), /* 104 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var ctx = __w_pdfjs_require__(26); - -var IObject = __w_pdfjs_require__(44); - -var toObject = __w_pdfjs_require__(62); - -var toLength = __w_pdfjs_require__(28); - -var asc = __w_pdfjs_require__(105); - -module.exports = function (TYPE, $create) { - var IS_MAP = TYPE == 1; - var IS_FILTER = TYPE == 2; - var IS_SOME = TYPE == 3; - var IS_EVERY = TYPE == 4; - var IS_FIND_INDEX = TYPE == 6; - var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; - var create = $create || asc; - return function ($this, callbackfn, that) { - var O = toObject($this); - var self = IObject(O); - var f = ctx(callbackfn, that, 3); - var length = toLength(self.length); - var index = 0; - var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; - var val, res; - - for (; length > index; index++) { - if (NO_HOLES || index in self) { - val = self[index]; - res = f(val, index, O); - - if (TYPE) { - if (IS_MAP) result[index] = res;else if (res) switch (TYPE) { - case 3: - return true; - - case 5: - return val; - - case 6: - return index; - - case 2: - result.push(val); - } else if (IS_EVERY) return false; - } - } - } - - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; - }; -}; +var fails = __w_pdfjs_require__(10); +module.exports = !fails(function () { + return Object.isExtensible(Object.preventExtensions({})); +}); /***/ }), /* 105 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var speciesConstructor = __w_pdfjs_require__(106); - -module.exports = function (original, length) { - return new (speciesConstructor(original))(length); +var bind = __w_pdfjs_require__(106); +var call = __w_pdfjs_require__(11); +var anObject = __w_pdfjs_require__(48); +var tryToString = __w_pdfjs_require__(33); +var isArrayIteratorMethod = __w_pdfjs_require__(107); +var lengthOfArrayLike = __w_pdfjs_require__(65); +var isPrototypeOf = __w_pdfjs_require__(26); +var getIterator = __w_pdfjs_require__(108); +var getIteratorMethod = __w_pdfjs_require__(109); +var iteratorClose = __w_pdfjs_require__(110); +var $TypeError = TypeError; +var Result = function (stopped, result) { + this.stopped = stopped; + this.result = result; +}; +var ResultPrototype = Result.prototype; +module.exports = function (iterable, unboundFunction, options) { + var that = options && options.that; + var AS_ENTRIES = !!(options && options.AS_ENTRIES); + var IS_RECORD = !!(options && options.IS_RECORD); + var IS_ITERATOR = !!(options && options.IS_ITERATOR); + var INTERRUPTED = !!(options && options.INTERRUPTED); + var fn = bind(unboundFunction, that); + var iterator, iterFn, index, length, result, next, step; + var stop = function (condition) { + if (iterator) + iteratorClose(iterator, 'normal', condition); + return new Result(true, condition); + }; + var callFn = function (value) { + if (AS_ENTRIES) { + anObject(value); + return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]); + } + return INTERRUPTED ? fn(value, stop) : fn(value); + }; + if (IS_RECORD) { + iterator = iterable.iterator; + } else if (IS_ITERATOR) { + iterator = iterable; + } else { + iterFn = getIteratorMethod(iterable); + if (!iterFn) + throw $TypeError(tryToString(iterable) + ' is not iterable'); + if (isArrayIteratorMethod(iterFn)) { + for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) { + result = callFn(iterable[index]); + if (result && isPrototypeOf(ResultPrototype, result)) + return result; + } + return new Result(false); + } + iterator = getIterator(iterable, iterFn); + } + next = IS_RECORD ? iterable.next : iterator.next; + while (!(step = call(next, iterator)).done) { + try { + result = callFn(step.value); + } catch (error) { + iteratorClose(iterator, 'throw', error); + } + if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) + return result; + } + return new Result(false); }; /***/ }), /* 106 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var isObject = __w_pdfjs_require__(13); - -var isArray = __w_pdfjs_require__(107); - -var SPECIES = __w_pdfjs_require__(33)('species'); - -module.exports = function (original) { - var C; - - if (isArray(original)) { - C = original.constructor; - if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; - - if (isObject(C)) { - C = C[SPECIES]; - if (C === null) C = undefined; - } - } - - return C === undefined ? Array : C; +var uncurryThis = __w_pdfjs_require__(17); +var aCallable = __w_pdfjs_require__(32); +var NATIVE_BIND = __w_pdfjs_require__(12); +var bind = uncurryThis(uncurryThis.bind); +module.exports = function (fn, that) { + aCallable(fn); + return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function () { + return fn.apply(that, arguments); + }; }; /***/ }), /* 107 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var cof = __w_pdfjs_require__(32); - -module.exports = Array.isArray || function isArray(arg) { - return cof(arg) == 'Array'; +var wellKnownSymbol = __w_pdfjs_require__(35); +var Iterators = __w_pdfjs_require__(88); +var ITERATOR = wellKnownSymbol('iterator'); +var ArrayPrototype = Array.prototype; +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); }; /***/ }), /* 108 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -var META = __w_pdfjs_require__(22)('meta'); - -var isObject = __w_pdfjs_require__(13); - -var has = __w_pdfjs_require__(21); - -var setDesc = __w_pdfjs_require__(11).f; - -var id = 0; - -var isExtensible = Object.isExtensible || function () { - return true; -}; - -var FREEZE = !__w_pdfjs_require__(16)(function () { - return isExtensible(Object.preventExtensions({})); -}); - -var setMeta = function setMeta(it) { - setDesc(it, META, { - value: { - i: 'O' + ++id, - w: {} - } - }); -}; - -var fastKey = function fastKey(it, create) { - if (!isObject(it)) return _typeof(it) == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - - if (!has(it, META)) { - if (!isExtensible(it)) return 'F'; - if (!create) return 'E'; - setMeta(it); - } - - return it[META].i; -}; - -var getWeak = function getWeak(it, create) { - if (!has(it, META)) { - if (!isExtensible(it)) return true; - if (!create) return false; - setMeta(it); - } - - return it[META].w; -}; - -var onFreeze = function onFreeze(it) { - if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); - return it; -}; - -var meta = module.exports = { - KEY: META, - NEED: false, - fastKey: fastKey, - getWeak: getWeak, - onFreeze: onFreeze +var call = __w_pdfjs_require__(11); +var aCallable = __w_pdfjs_require__(32); +var anObject = __w_pdfjs_require__(48); +var tryToString = __w_pdfjs_require__(33); +var getIteratorMethod = __w_pdfjs_require__(109); +var $TypeError = TypeError; +module.exports = function (argument, usingIterator) { + var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator; + if (aCallable(iteratorMethod)) + return anObject(call(iteratorMethod, argument)); + throw $TypeError(tryToString(argument) + ' is not iterable'); }; /***/ }), /* 109 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var redefineAll = __w_pdfjs_require__(98); - -var getWeak = __w_pdfjs_require__(108).getWeak; - -var anObject = __w_pdfjs_require__(12); - -var isObject = __w_pdfjs_require__(13); - -var anInstance = __w_pdfjs_require__(88); - -var forOf = __w_pdfjs_require__(89); - -var createArrayMethod = __w_pdfjs_require__(104); - -var $has = __w_pdfjs_require__(21); - -var validate = __w_pdfjs_require__(110); - -var arrayFind = createArrayMethod(5); -var arrayFindIndex = createArrayMethod(6); -var id = 0; - -var uncaughtFrozenStore = function uncaughtFrozenStore(that) { - return that._l || (that._l = new UncaughtFrozenStore()); -}; - -var UncaughtFrozenStore = function UncaughtFrozenStore() { - this.a = []; -}; - -var findUncaughtFrozen = function findUncaughtFrozen(store, key) { - return arrayFind(store.a, function (it) { - return it[0] === key; - }); -}; - -UncaughtFrozenStore.prototype = { - get: function get(key) { - var entry = findUncaughtFrozen(this, key); - if (entry) return entry[1]; - }, - has: function has(key) { - return !!findUncaughtFrozen(this, key); - }, - set: function set(key, value) { - var entry = findUncaughtFrozen(this, key); - if (entry) entry[1] = value;else this.a.push([key, value]); - }, - 'delete': function _delete(key) { - var index = arrayFindIndex(this.a, function (it) { - return it[0] === key; - }); - if (~index) this.a.splice(index, 1); - return !!~index; - } -}; -module.exports = { - getConstructor: function getConstructor(wrapper, NAME, IS_MAP, ADDER) { - var C = wrapper(function (that, iterable) { - anInstance(that, C, NAME, '_i'); - that._t = NAME; - that._i = id++; - that._l = undefined; - if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); - }); - redefineAll(C.prototype, { - 'delete': function _delete(key) { - if (!isObject(key)) return false; - var data = getWeak(key); - if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key); - return data && $has(data, this._i) && delete data[this._i]; - }, - has: function has(key) { - if (!isObject(key)) return false; - var data = getWeak(key); - if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key); - return data && $has(data, this._i); - } - }); - return C; - }, - def: function def(that, key, value) { - var data = getWeak(anObject(key), true); - if (data === true) uncaughtFrozenStore(that).set(key, value);else data[that._i] = value; - return that; - }, - ufstore: uncaughtFrozenStore +var classof = __w_pdfjs_require__(80); +var getMethod = __w_pdfjs_require__(31); +var Iterators = __w_pdfjs_require__(88); +var wellKnownSymbol = __w_pdfjs_require__(35); +var ITERATOR = wellKnownSymbol('iterator'); +module.exports = function (it) { + if (it != undefined) + return getMethod(it, ITERATOR) || getMethod(it, '@@iterator') || Iterators[classof(it)]; }; /***/ }), /* 110 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var isObject = __w_pdfjs_require__(13); - -module.exports = function (it, TYPE) { - if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!'); - return it; +var call = __w_pdfjs_require__(11); +var anObject = __w_pdfjs_require__(48); +var getMethod = __w_pdfjs_require__(31); +module.exports = function (iterator, kind, value) { + var innerResult, innerError; + anObject(iterator); + try { + innerResult = getMethod(iterator, 'return'); + if (!innerResult) { + if (kind === 'throw') + throw value; + return value; + } + innerResult = call(innerResult, iterator); + } catch (error) { + innerError = true; + innerResult = error; + } + if (kind === 'throw') + throw value; + if (innerError) + throw innerResult; + anObject(innerResult); + return value; }; /***/ }), /* 111 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var global = __w_pdfjs_require__(8); - -var $export = __w_pdfjs_require__(7); - -var redefine = __w_pdfjs_require__(20); - -var redefineAll = __w_pdfjs_require__(98); - -var meta = __w_pdfjs_require__(108); - -var forOf = __w_pdfjs_require__(89); - -var anInstance = __w_pdfjs_require__(88); - -var isObject = __w_pdfjs_require__(13); - -var fails = __w_pdfjs_require__(16); - -var $iterDetect = __w_pdfjs_require__(69); - -var setToStringTag = __w_pdfjs_require__(60); - -var inheritIfRequired = __w_pdfjs_require__(112); - -module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) { - var Base = global[NAME]; - var C = Base; - var ADDER = IS_MAP ? 'set' : 'add'; - var proto = C && C.prototype; - var O = {}; - - var fixMethod = function fixMethod(KEY) { - var fn = proto[KEY]; - redefine(proto, KEY, KEY == 'delete' ? function (a) { - return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); - } : KEY == 'has' ? function has(a) { - return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); - } : KEY == 'get' ? function get(a) { - return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a); - } : KEY == 'add' ? function add(a) { - fn.call(this, a === 0 ? 0 : a); - return this; - } : function set(a, b) { - fn.call(this, a === 0 ? 0 : a, b); - return this; - }); - }; - - if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () { - new C().entries().next(); - }))) { - C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); - redefineAll(C.prototype, methods); - meta.NEED = true; - } else { - var instance = new C(); - var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; - var THROWS_ON_PRIMITIVES = fails(function () { - instance.has(1); - }); - var ACCEPT_ITERABLES = $iterDetect(function (iter) { - new C(iter); - }); - var BUGGY_ZERO = !IS_WEAK && fails(function () { - var $instance = new C(); - var index = 5; - - while (index--) { - $instance[ADDER](index, index); - } - - return !$instance.has(-0); - }); - - if (!ACCEPT_ITERABLES) { - C = wrapper(function (target, iterable) { - anInstance(target, C, NAME); - var that = inheritIfRequired(new Base(), target, C); - if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); - return that; - }); - C.prototype = proto; - proto.constructor = C; - } - - if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { - fixMethod('delete'); - fixMethod('has'); - IS_MAP && fixMethod('get'); - } - - if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); - if (IS_WEAK && proto.clear) delete proto.clear; - } - - setToStringTag(C, NAME); - O[NAME] = C; - $export($export.G + $export.W + $export.F * (C != Base), O); - if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP); - return C; +var isPrototypeOf = __w_pdfjs_require__(26); +var $TypeError = TypeError; +module.exports = function (it, Prototype) { + if (isPrototypeOf(Prototype, it)) + return it; + throw $TypeError('Incorrect invocation'); }; /***/ }), /* 112 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var isObject = __w_pdfjs_require__(13); - -var setPrototypeOf = __w_pdfjs_require__(113).set; - -module.exports = function (that, target, C) { - var S = target.constructor; - var P; - - if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) { - setPrototypeOf(that, P); +var wellKnownSymbol = __w_pdfjs_require__(35); +var ITERATOR = wellKnownSymbol('iterator'); +var SAFE_CLOSING = false; +try { + var called = 0; + var iteratorWithReturn = { + next: function () { + return { done: !!called++ }; + }, + 'return': function () { + SAFE_CLOSING = true; } - - return that; + }; + iteratorWithReturn[ITERATOR] = function () { + return this; + }; + Array.from(iteratorWithReturn, function () { + throw 2; + }); +} catch (error) { +} +module.exports = function (exec, SKIP_CLOSING) { + if (!SKIP_CLOSING && !SAFE_CLOSING) + return false; + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR] = function () { + return { + next: function () { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { + } + return ITERATION_SUPPORT; }; /***/ }), /* 113 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var isObject = __w_pdfjs_require__(13); - -var anObject = __w_pdfjs_require__(12); - -var check = function check(O, proto) { - anObject(O); - if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); -}; - -module.exports = { - set: Object.setPrototypeOf || ('__proto__' in {} ? function (test, buggy, set) { - try { - set = __w_pdfjs_require__(26)(Function.call, __w_pdfjs_require__(114).f(Object.prototype, '__proto__').set, 2); - set(test, []); - buggy = !(test instanceof Array); - } catch (e) { - buggy = true; - } - - return function setPrototypeOf(O, proto) { - check(O, proto); - if (buggy) O.__proto__ = proto;else set(O, proto); - return O; - }; - }({}, false) : undefined), - check: check +var isCallable = __w_pdfjs_require__(23); +var isObject = __w_pdfjs_require__(22); +var setPrototypeOf = __w_pdfjs_require__(84); +module.exports = function ($this, dummy, Wrapper) { + var NewTarget, NewTargetPrototype; + if (setPrototypeOf && isCallable(NewTarget = dummy.constructor) && NewTarget !== Wrapper && isObject(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype) + setPrototypeOf($this, NewTargetPrototype); + return $this; }; /***/ }), /* 114 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var pIE = __w_pdfjs_require__(74); - -var createDesc = __w_pdfjs_require__(19); - -var toIObject = __w_pdfjs_require__(43); - -var toPrimitive = __w_pdfjs_require__(18); - -var has = __w_pdfjs_require__(21); - -var IE8_DOM_DEFINE = __w_pdfjs_require__(14); - -var gOPD = Object.getOwnPropertyDescriptor; -exports.f = __w_pdfjs_require__(15) ? gOPD : function getOwnPropertyDescriptor(O, P) { - O = toIObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return gOPD(O, P); - } catch (e) {} - if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); +var defineProperty = (__w_pdfjs_require__(46).f); +var create = __w_pdfjs_require__(71); +var defineBuiltIns = __w_pdfjs_require__(115); +var bind = __w_pdfjs_require__(106); +var anInstance = __w_pdfjs_require__(111); +var iterate = __w_pdfjs_require__(105); +var defineIterator = __w_pdfjs_require__(89); +var setSpecies = __w_pdfjs_require__(116); +var DESCRIPTORS = __w_pdfjs_require__(9); +var fastKey = (__w_pdfjs_require__(98).fastKey); +var InternalStateModule = __w_pdfjs_require__(53); +var setInternalState = InternalStateModule.set; +var internalStateGetterFor = InternalStateModule.getterFor; +module.exports = { + getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { + var Constructor = wrapper(function (that, iterable) { + anInstance(that, Prototype); + setInternalState(that, { + type: CONSTRUCTOR_NAME, + index: create(null), + first: undefined, + last: undefined, + size: 0 + }); + if (!DESCRIPTORS) + that.size = 0; + if (iterable != undefined) + iterate(iterable, that[ADDER], { + that: that, + AS_ENTRIES: IS_MAP + }); + }); + var Prototype = Constructor.prototype; + var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); + var define = function (that, key, value) { + var state = getInternalState(that); + var entry = getEntry(that, key); + var previous, index; + if (entry) { + entry.value = value; + } else { + state.last = entry = { + index: index = fastKey(key, true), + key: key, + value: value, + previous: previous = state.last, + next: undefined, + removed: false + }; + if (!state.first) + state.first = entry; + if (previous) + previous.next = entry; + if (DESCRIPTORS) + state.size++; + else + that.size++; + if (index !== 'F') + state.index[index] = entry; + } + return that; + }; + var getEntry = function (that, key) { + var state = getInternalState(that); + var index = fastKey(key); + var entry; + if (index !== 'F') + return state.index[index]; + for (entry = state.first; entry; entry = entry.next) { + if (entry.key == key) + return entry; + } + }; + defineBuiltIns(Prototype, { + clear: function clear() { + var that = this; + var state = getInternalState(that); + var data = state.index; + var entry = state.first; + while (entry) { + entry.removed = true; + if (entry.previous) + entry.previous = entry.previous.next = undefined; + delete data[entry.index]; + entry = entry.next; + } + state.first = state.last = undefined; + if (DESCRIPTORS) + state.size = 0; + else + that.size = 0; + }, + 'delete': function (key) { + var that = this; + var state = getInternalState(that); + var entry = getEntry(that, key); + if (entry) { + var next = entry.next; + var prev = entry.previous; + delete state.index[entry.index]; + entry.removed = true; + if (prev) + prev.next = next; + if (next) + next.previous = prev; + if (state.first == entry) + state.first = next; + if (state.last == entry) + state.last = prev; + if (DESCRIPTORS) + state.size--; + else + that.size--; + } + return !!entry; + }, + forEach: function forEach(callbackfn) { + var state = getInternalState(this); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined); + var entry; + while (entry = entry ? entry.next : state.first) { + boundFunction(entry.value, entry.key, this); + while (entry && entry.removed) + entry = entry.previous; + } + }, + has: function has(key) { + return !!getEntry(this, key); + } + }); + defineBuiltIns(Prototype, IS_MAP ? { + get: function get(key) { + var entry = getEntry(this, key); + return entry && entry.value; + }, + set: function set(key, value) { + return define(this, key === 0 ? 0 : key, value); + } + } : { + add: function add(value) { + return define(this, value = value === 0 ? 0 : value, value); + } + }); + if (DESCRIPTORS) + defineProperty(Prototype, 'size', { + get: function () { + return getInternalState(this).size; + } + }); + return Constructor; + }, + setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) { + var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator'; + var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME); + var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME); + defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) { + setInternalState(this, { + type: ITERATOR_NAME, + target: iterated, + state: getInternalCollectionState(iterated), + kind: kind, + last: undefined + }); + }, function () { + var state = getInternalIteratorState(this); + var kind = state.kind; + var entry = state.last; + while (entry && entry.removed) + entry = entry.previous; + if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) { + state.target = undefined; + return { + value: undefined, + done: true + }; + } + if (kind == 'keys') + return { + value: entry.key, + done: false + }; + if (kind == 'values') + return { + value: entry.value, + done: false + }; + return { + value: [ + entry.key, + entry.value + ], + done: false + }; + }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); + setSpecies(CONSTRUCTOR_NAME); + } }; /***/ }), /* 115 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(116)('WeakMap'); +var defineBuiltIn = __w_pdfjs_require__(49); +module.exports = function (target, src, options) { + for (var key in src) + defineBuiltIn(target, key, src[key], options); + return target; +}; /***/ }), /* 116 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var $export = __w_pdfjs_require__(7); - -module.exports = function (COLLECTION) { - $export($export.S, COLLECTION, { - of: function of() { - var length = arguments.length; - var A = new Array(length); - - while (length--) { - A[length] = arguments[length]; - } - - return new this(A); - } +var getBuiltIn = __w_pdfjs_require__(25); +var definePropertyModule = __w_pdfjs_require__(46); +var wellKnownSymbol = __w_pdfjs_require__(35); +var DESCRIPTORS = __w_pdfjs_require__(9); +var SPECIES = wellKnownSymbol('species'); +module.exports = function (CONSTRUCTOR_NAME) { + var Constructor = getBuiltIn(CONSTRUCTOR_NAME); + var defineProperty = definePropertyModule.f; + if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { + defineProperty(Constructor, SPECIES, { + configurable: true, + get: function () { + return this; + } }); + } }; /***/ }), /* 117 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(118)('WeakMap'); +__w_pdfjs_require__(118); /***/ }), /* 118 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var $export = __w_pdfjs_require__(7); - -var aFunction = __w_pdfjs_require__(27); - -var ctx = __w_pdfjs_require__(26); - -var forOf = __w_pdfjs_require__(89); - -module.exports = function (COLLECTION) { - $export($export.S, COLLECTION, { - from: function from(source) { - var mapFn = arguments[1]; - var mapping, A, n, cb; - aFunction(this); - mapping = mapFn !== undefined; - if (mapping) aFunction(mapFn); - if (source == undefined) return new this(); - A = []; - - if (mapping) { - n = 0; - cb = ctx(mapFn, arguments[2], 2); - forOf(source, false, function (nextItem) { - A.push(cb(nextItem, n++)); - }); - } else { - forOf(source, false, A.push, A); - } - - return new this(A); - } - }); -}; +var collection = __w_pdfjs_require__(97); +var collectionStrong = __w_pdfjs_require__(114); +collection('Set', function (init) { + return function Set() { + return init(this, arguments.length ? arguments[0] : undefined); + }; +}, collectionStrong); /***/ }), /* 119 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(83); - -__w_pdfjs_require__(84); - -__w_pdfjs_require__(120); - -__w_pdfjs_require__(121); - -__w_pdfjs_require__(122); - -module.exports = __w_pdfjs_require__(9).WeakSet; +var IS_PURE = __w_pdfjs_require__(37); +var $ = __w_pdfjs_require__(6); +var global = __w_pdfjs_require__(7); +var getBuiltin = __w_pdfjs_require__(25); +var uncurryThis = __w_pdfjs_require__(17); +var fails = __w_pdfjs_require__(10); +var uid = __w_pdfjs_require__(42); +var isCallable = __w_pdfjs_require__(23); +var isConstructor = __w_pdfjs_require__(120); +var isObject = __w_pdfjs_require__(22); +var isSymbol = __w_pdfjs_require__(24); +var iterate = __w_pdfjs_require__(105); +var anObject = __w_pdfjs_require__(48); +var classof = __w_pdfjs_require__(80); +var hasOwn = __w_pdfjs_require__(40); +var createProperty = __w_pdfjs_require__(101); +var createNonEnumerableProperty = __w_pdfjs_require__(45); +var lengthOfArrayLike = __w_pdfjs_require__(65); +var validateArgumentsLength = __w_pdfjs_require__(121); +var getRegExpFlags = __w_pdfjs_require__(122); +var ERROR_STACK_INSTALLABLE = __w_pdfjs_require__(124); +var V8 = __w_pdfjs_require__(29); +var IS_BROWSER = __w_pdfjs_require__(125); +var IS_DENO = __w_pdfjs_require__(126); +var IS_NODE = __w_pdfjs_require__(127); +var Object = global.Object; +var Date = global.Date; +var Error = global.Error; +var EvalError = global.EvalError; +var RangeError = global.RangeError; +var ReferenceError = global.ReferenceError; +var SyntaxError = global.SyntaxError; +var TypeError = global.TypeError; +var URIError = global.URIError; +var PerformanceMark = global.PerformanceMark; +var WebAssembly = global.WebAssembly; +var CompileError = WebAssembly && WebAssembly.CompileError || Error; +var LinkError = WebAssembly && WebAssembly.LinkError || Error; +var RuntimeError = WebAssembly && WebAssembly.RuntimeError || Error; +var DOMException = getBuiltin('DOMException'); +var Set = getBuiltin('Set'); +var Map = getBuiltin('Map'); +var MapPrototype = Map.prototype; +var mapHas = uncurryThis(MapPrototype.has); +var mapGet = uncurryThis(MapPrototype.get); +var mapSet = uncurryThis(MapPrototype.set); +var setAdd = uncurryThis(Set.prototype.add); +var objectKeys = getBuiltin('Object', 'keys'); +var push = uncurryThis([].push); +var booleanValueOf = uncurryThis(true.valueOf); +var numberValueOf = uncurryThis(1.0.valueOf); +var stringValueOf = uncurryThis(''.valueOf); +var getTime = uncurryThis(Date.prototype.getTime); +var PERFORMANCE_MARK = uid('structuredClone'); +var DATA_CLONE_ERROR = 'DataCloneError'; +var TRANSFERRING = 'Transferring'; +var checkBasicSemantic = function (structuredCloneImplementation) { + return !fails(function () { + var set1 = new global.Set([7]); + var set2 = structuredCloneImplementation(set1); + var number = structuredCloneImplementation(Object(7)); + return set2 == set1 || !set2.has(7) || typeof number != 'object' || number != 7; + }) && structuredCloneImplementation; +}; +var checkErrorsCloning = function (structuredCloneImplementation, $Error) { + return !fails(function () { + var error = new $Error(); + var test = structuredCloneImplementation({ + a: error, + b: error + }); + return !(test && test.a === test.b && test.a instanceof $Error && test.a.stack === error.stack); + }); +}; +var checkNewErrorsCloningSemantic = function (structuredCloneImplementation) { + return !fails(function () { + var test = structuredCloneImplementation(new global.AggregateError([1], PERFORMANCE_MARK, { cause: 3 })); + return test.name != 'AggregateError' || test.errors[0] != 1 || test.message != PERFORMANCE_MARK || test.cause != 3; + }); +}; +var nativeStructuredClone = global.structuredClone; +var FORCED_REPLACEMENT = IS_PURE || !checkErrorsCloning(nativeStructuredClone, Error) || !checkErrorsCloning(nativeStructuredClone, DOMException) || !checkNewErrorsCloningSemantic(nativeStructuredClone); +var structuredCloneFromMark = !nativeStructuredClone && checkBasicSemantic(function (value) { + return new PerformanceMark(PERFORMANCE_MARK, { detail: value }).detail; +}); +var nativeRestrictedStructuredClone = checkBasicSemantic(nativeStructuredClone) || structuredCloneFromMark; +var throwUncloneable = function (type) { + throw new DOMException('Uncloneable type: ' + type, DATA_CLONE_ERROR); +}; +var throwUnpolyfillable = function (type, kind) { + throw new DOMException((kind || 'Cloning') + ' of ' + type + ' cannot be properly polyfilled in this engine', DATA_CLONE_ERROR); +}; +var structuredCloneInternal = function (value, map) { + if (isSymbol(value)) + throwUncloneable('Symbol'); + if (!isObject(value)) + return value; + if (map) { + if (mapHas(map, value)) + return mapGet(map, value); + } else + map = new Map(); + var type = classof(value); + var deep = false; + var C, name, cloned, dataTransfer, i, length, keys, key, source, target; + switch (type) { + case 'Array': + cloned = []; + deep = true; + break; + case 'Object': + cloned = {}; + deep = true; + break; + case 'Map': + cloned = new Map(); + deep = true; + break; + case 'Set': + cloned = new Set(); + deep = true; + break; + case 'RegExp': + cloned = new RegExp(value.source, getRegExpFlags(value)); + break; + case 'Error': + name = value.name; + switch (name) { + case 'AggregateError': + cloned = getBuiltin('AggregateError')([]); + break; + case 'EvalError': + cloned = EvalError(); + break; + case 'RangeError': + cloned = RangeError(); + break; + case 'ReferenceError': + cloned = ReferenceError(); + break; + case 'SyntaxError': + cloned = SyntaxError(); + break; + case 'TypeError': + cloned = TypeError(); + break; + case 'URIError': + cloned = URIError(); + break; + case 'CompileError': + cloned = CompileError(); + break; + case 'LinkError': + cloned = LinkError(); + break; + case 'RuntimeError': + cloned = RuntimeError(); + break; + default: + cloned = Error(); + } + deep = true; + break; + case 'DOMException': + cloned = new DOMException(value.message, value.name); + deep = true; + break; + case 'DataView': + case 'Int8Array': + case 'Uint8Array': + case 'Uint8ClampedArray': + case 'Int16Array': + case 'Uint16Array': + case 'Int32Array': + case 'Uint32Array': + case 'Float32Array': + case 'Float64Array': + case 'BigInt64Array': + case 'BigUint64Array': + C = global[type]; + if (!isObject(C)) + throwUnpolyfillable(type); + cloned = new C(structuredCloneInternal(value.buffer, map), value.byteOffset, type === 'DataView' ? value.byteLength : value.length); + break; + case 'DOMQuad': + try { + cloned = new DOMQuad(structuredCloneInternal(value.p1, map), structuredCloneInternal(value.p2, map), structuredCloneInternal(value.p3, map), structuredCloneInternal(value.p4, map)); + } catch (error) { + if (nativeRestrictedStructuredClone) { + cloned = nativeRestrictedStructuredClone(value); + } else + throwUnpolyfillable(type); + } + break; + case 'FileList': + C = global.DataTransfer; + if (isConstructor(C)) { + dataTransfer = new C(); + for (i = 0, length = lengthOfArrayLike(value); i < length; i++) { + dataTransfer.items.add(structuredCloneInternal(value[i], map)); + } + cloned = dataTransfer.files; + } else if (nativeRestrictedStructuredClone) { + cloned = nativeRestrictedStructuredClone(value); + } else + throwUnpolyfillable(type); + break; + case 'ImageData': + try { + cloned = new ImageData(structuredCloneInternal(value.data, map), value.width, value.height, { colorSpace: value.colorSpace }); + } catch (error) { + if (nativeRestrictedStructuredClone) { + cloned = nativeRestrictedStructuredClone(value); + } else + throwUnpolyfillable(type); + } + break; + default: + if (nativeRestrictedStructuredClone) { + cloned = nativeRestrictedStructuredClone(value); + } else + switch (type) { + case 'BigInt': + cloned = Object(value.valueOf()); + break; + case 'Boolean': + cloned = Object(booleanValueOf(value)); + break; + case 'Number': + cloned = Object(numberValueOf(value)); + break; + case 'String': + cloned = Object(stringValueOf(value)); + break; + case 'Date': + cloned = new Date(getTime(value)); + break; + case 'ArrayBuffer': + C = global.DataView; + if (!C && typeof value.slice != 'function') + throwUnpolyfillable(type); + try { + if (typeof value.slice == 'function') { + cloned = value.slice(0); + } else { + length = value.byteLength; + cloned = new ArrayBuffer(length); + source = new C(value); + target = new C(cloned); + for (i = 0; i < length; i++) { + target.setUint8(i, source.getUint8(i)); + } + } + } catch (error) { + throw new DOMException('ArrayBuffer is detached', DATA_CLONE_ERROR); + } + break; + case 'SharedArrayBuffer': + cloned = value; + break; + case 'Blob': + try { + cloned = value.slice(0, value.size, value.type); + } catch (error) { + throwUnpolyfillable(type); + } + break; + case 'DOMPoint': + case 'DOMPointReadOnly': + C = global[type]; + try { + cloned = C.fromPoint ? C.fromPoint(value) : new C(value.x, value.y, value.z, value.w); + } catch (error) { + throwUnpolyfillable(type); + } + break; + case 'DOMRect': + case 'DOMRectReadOnly': + C = global[type]; + try { + cloned = C.fromRect ? C.fromRect(value) : new C(value.x, value.y, value.width, value.height); + } catch (error) { + throwUnpolyfillable(type); + } + break; + case 'DOMMatrix': + case 'DOMMatrixReadOnly': + C = global[type]; + try { + cloned = C.fromMatrix ? C.fromMatrix(value) : new C(value); + } catch (error) { + throwUnpolyfillable(type); + } + break; + case 'AudioData': + case 'VideoFrame': + if (!isCallable(value.clone)) + throwUnpolyfillable(type); + try { + cloned = value.clone(); + } catch (error) { + throwUncloneable(type); + } + break; + case 'File': + try { + cloned = new File([value], value.name, value); + } catch (error) { + throwUnpolyfillable(type); + } + break; + case 'CryptoKey': + case 'GPUCompilationMessage': + case 'GPUCompilationInfo': + case 'ImageBitmap': + case 'RTCCertificate': + case 'WebAssembly.Module': + throwUnpolyfillable(type); + default: + throwUncloneable(type); + } + } + mapSet(map, value, cloned); + if (deep) + switch (type) { + case 'Array': + case 'Object': + keys = objectKeys(value); + for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) { + key = keys[i]; + createProperty(cloned, key, structuredCloneInternal(value[key], map)); + } + break; + case 'Map': + value.forEach(function (v, k) { + mapSet(cloned, structuredCloneInternal(k, map), structuredCloneInternal(v, map)); + }); + break; + case 'Set': + value.forEach(function (v) { + setAdd(cloned, structuredCloneInternal(v, map)); + }); + break; + case 'Error': + createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map)); + if (hasOwn(value, 'cause')) { + createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map)); + } + if (name == 'AggregateError') { + cloned.errors = structuredCloneInternal(value.errors, map); + } + case 'DOMException': + if (ERROR_STACK_INSTALLABLE) { + createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map)); + } + } + return cloned; +}; +var PROPER_TRANSFER = nativeStructuredClone && !fails(function () { + if (IS_DENO && V8 > 92 || IS_NODE && V8 > 94 || IS_BROWSER && V8 > 97) + return false; + var buffer = new ArrayBuffer(8); + var clone = nativeStructuredClone(buffer, { transfer: [buffer] }); + return buffer.byteLength != 0 || clone.byteLength != 8; +}); +var tryToTransfer = function (rawTransfer, map) { + if (!isObject(rawTransfer)) + throw TypeError('Transfer option cannot be converted to a sequence'); + var transfer = []; + iterate(rawTransfer, function (value) { + push(transfer, anObject(value)); + }); + var i = 0; + var length = lengthOfArrayLike(transfer); + var value, type, C, transferredArray, transferred, canvas, context; + if (PROPER_TRANSFER) { + transferredArray = nativeStructuredClone(transfer, { transfer: transfer }); + while (i < length) + mapSet(map, transfer[i], transferredArray[i++]); + } else + while (i < length) { + value = transfer[i++]; + if (mapHas(map, value)) + throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR); + type = classof(value); + switch (type) { + case 'ImageBitmap': + C = global.OffscreenCanvas; + if (!isConstructor(C)) + throwUnpolyfillable(type, TRANSFERRING); + try { + canvas = new C(value.width, value.height); + context = canvas.getContext('bitmaprenderer'); + context.transferFromImageBitmap(value); + transferred = canvas.transferToImageBitmap(); + } catch (error) { + } + break; + case 'AudioData': + case 'VideoFrame': + if (!isCallable(value.clone) || !isCallable(value.close)) + throwUnpolyfillable(type, TRANSFERRING); + try { + transferred = value.clone(); + value.close(); + } catch (error) { + } + break; + case 'ArrayBuffer': + case 'MessagePort': + case 'OffscreenCanvas': + case 'ReadableStream': + case 'TransformStream': + case 'WritableStream': + throwUnpolyfillable(type, TRANSFERRING); + } + if (transferred === undefined) + throw new DOMException('This object cannot be transferred: ' + type, DATA_CLONE_ERROR); + mapSet(map, value, transferred); + } +}; +$({ + global: true, + enumerable: true, + sham: !PROPER_TRANSFER, + forced: FORCED_REPLACEMENT +}, { + structuredClone: function structuredClone(value) { + var options = validateArgumentsLength(arguments.length, 1) > 1 && arguments[1] != null ? anObject(arguments[1]) : undefined; + var transfer = options ? options.transfer : undefined; + var map; + if (transfer !== undefined) { + map = new Map(); + tryToTransfer(transfer, map); + } + return structuredCloneInternal(value, map); + } +}); /***/ }), /* 120 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var weak = __w_pdfjs_require__(109); - -var validate = __w_pdfjs_require__(110); - -var WEAK_SET = 'WeakSet'; - -__w_pdfjs_require__(111)(WEAK_SET, function (get) { - return function WeakSet() { - return get(this, arguments.length > 0 ? arguments[0] : undefined); - }; -}, { - add: function add(value) { - return weak.def(validate(this, WEAK_SET), value, true); - } -}, weak, false, true); +var uncurryThis = __w_pdfjs_require__(17); +var fails = __w_pdfjs_require__(10); +var isCallable = __w_pdfjs_require__(23); +var classof = __w_pdfjs_require__(80); +var getBuiltIn = __w_pdfjs_require__(25); +var inspectSource = __w_pdfjs_require__(52); +var noop = function () { +}; +var empty = []; +var construct = getBuiltIn('Reflect', 'construct'); +var constructorRegExp = /^\s*(?:class|function)\b/; +var exec = uncurryThis(constructorRegExp.exec); +var INCORRECT_TO_STRING = !constructorRegExp.exec(noop); +var isConstructorModern = function isConstructor(argument) { + if (!isCallable(argument)) + return false; + try { + construct(noop, empty, argument); + return true; + } catch (error) { + return false; + } +}; +var isConstructorLegacy = function isConstructor(argument) { + if (!isCallable(argument)) + return false; + switch (classof(argument)) { + case 'AsyncFunction': + case 'GeneratorFunction': + case 'AsyncGeneratorFunction': + return false; + } + try { + return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); + } catch (error) { + return true; + } +}; +isConstructorLegacy.sham = true; +module.exports = !construct || fails(function () { + var called; + return isConstructorModern(isConstructorModern.call) || !isConstructorModern(Object) || !isConstructorModern(function () { + called = true; + }) || called; +}) ? isConstructorLegacy : isConstructorModern; /***/ }), /* 121 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -__w_pdfjs_require__(116)('WeakSet'); +var $TypeError = TypeError; +module.exports = function (passed, required) { + if (passed < required) + throw $TypeError('Not enough arguments'); + return passed; +}; /***/ }), /* 122 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(118)('WeakSet'); +var call = __w_pdfjs_require__(11); +var hasOwn = __w_pdfjs_require__(40); +var isPrototypeOf = __w_pdfjs_require__(26); +var regExpFlags = __w_pdfjs_require__(123); +var RegExpPrototype = RegExp.prototype; +module.exports = function (R) { + var flags = R.flags; + return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R) ? call(regExpFlags, R) : flags; +}; /***/ }), /* 123 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -__w_pdfjs_require__(124); - -module.exports = __w_pdfjs_require__(9).String.codePointAt; +var anObject = __w_pdfjs_require__(48); +module.exports = function () { + var that = anObject(this); + var result = ''; + if (that.hasIndices) + result += 'd'; + if (that.global) + result += 'g'; + if (that.ignoreCase) + result += 'i'; + if (that.multiline) + result += 'm'; + if (that.dotAll) + result += 's'; + if (that.unicode) + result += 'u'; + if (that.unicodeSets) + result += 'v'; + if (that.sticky) + result += 'y'; + return result; +}; /***/ }), /* 124 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(7); - -var $at = __w_pdfjs_require__(49)(false); - -$export($export.P, 'String', { - codePointAt: function codePointAt(pos) { - return $at(this, pos); - } +var fails = __w_pdfjs_require__(10); +var createPropertyDescriptor = __w_pdfjs_require__(14); +module.exports = !fails(function () { + var error = Error('a'); + if (!('stack' in error)) + return true; + Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7)); + return error.stack !== 7; }); /***/ }), /* 125 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(126); - -module.exports = __w_pdfjs_require__(9).String.fromCodePoint; +var IS_DENO = __w_pdfjs_require__(126); +var IS_NODE = __w_pdfjs_require__(127); +module.exports = !IS_DENO && !IS_NODE && typeof window == 'object' && typeof document == 'object'; /***/ }), /* 126 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var $export = __w_pdfjs_require__(7); - -var toAbsoluteIndex = __w_pdfjs_require__(45); - -var fromCharCode = String.fromCharCode; -var $fromCodePoint = String.fromCodePoint; -$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', { - fromCodePoint: function fromCodePoint(x) { - var res = []; - var aLen = arguments.length; - var i = 0; - var code; - - while (aLen > i) { - code = +arguments[i++]; - if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point'); - res.push(code < 0x10000 ? fromCharCode(code) : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)); - } - - return res.join(''); - } -}); +module.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object'; /***/ }), /* 127 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(128); - -__w_pdfjs_require__(83); - -module.exports = __w_pdfjs_require__(9).Symbol; +var classof = __w_pdfjs_require__(18); +var global = __w_pdfjs_require__(7); +module.exports = classof(global.process) == 'process'; /***/ }), /* 128 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -var global = __w_pdfjs_require__(8); - -var has = __w_pdfjs_require__(21); - -var DESCRIPTORS = __w_pdfjs_require__(15); - -var $export = __w_pdfjs_require__(7); - -var redefine = __w_pdfjs_require__(20); - -var META = __w_pdfjs_require__(108).KEY; - -var $fails = __w_pdfjs_require__(16); - -var shared = __w_pdfjs_require__(24); - -var setToStringTag = __w_pdfjs_require__(60); - -var uid = __w_pdfjs_require__(22); - -var wks = __w_pdfjs_require__(33); - -var wksExt = __w_pdfjs_require__(129); - -var wksDefine = __w_pdfjs_require__(130); - -var enumKeys = __w_pdfjs_require__(131); - -var isArray = __w_pdfjs_require__(107); - -var anObject = __w_pdfjs_require__(12); - -var isObject = __w_pdfjs_require__(13); - -var toObject = __w_pdfjs_require__(62); - -var toIObject = __w_pdfjs_require__(43); - -var toPrimitive = __w_pdfjs_require__(18); - -var createDesc = __w_pdfjs_require__(19); - -var _create = __w_pdfjs_require__(53); - -var gOPNExt = __w_pdfjs_require__(132); - -var $GOPD = __w_pdfjs_require__(114); - -var $GOPS = __w_pdfjs_require__(73); - -var $DP = __w_pdfjs_require__(11); - -var $keys = __w_pdfjs_require__(55); - -var gOPD = $GOPD.f; -var dP = $DP.f; -var gOPN = gOPNExt.f; -var $Symbol = global.Symbol; -var $JSON = global.JSON; - -var _stringify = $JSON && $JSON.stringify; - -var PROTOTYPE = 'prototype'; -var HIDDEN = wks('_hidden'); -var TO_PRIMITIVE = wks('toPrimitive'); -var isEnum = {}.propertyIsEnumerable; -var SymbolRegistry = shared('symbol-registry'); -var AllSymbols = shared('symbols'); -var OPSymbols = shared('op-symbols'); -var ObjectProto = Object[PROTOTYPE]; -var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f; -var QObject = global.QObject; -var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; -var setSymbolDesc = DESCRIPTORS && $fails(function () { - return _create(dP({}, 'a', { - get: function get() { - return dP(this, 'a', { - value: 7 - }).a; - } - })).a != 7; -}) ? function (it, key, D) { - var protoDesc = gOPD(ObjectProto, key); - if (protoDesc) delete ObjectProto[key]; - dP(it, key, D); - if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); -} : dP; - -var wrap = function wrap(tag) { - var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); - - sym._k = tag; - return sym; -}; - -var isSymbol = USE_NATIVE && _typeof($Symbol.iterator) == 'symbol' ? function (it) { - return _typeof(it) == 'symbol'; -} : function (it) { - return it instanceof $Symbol; -}; - -var $defineProperty = function defineProperty(it, key, D) { - if (it === ObjectProto) $defineProperty(OPSymbols, key, D); - anObject(it); - key = toPrimitive(key, true); - anObject(D); - - if (has(AllSymbols, key)) { - if (!D.enumerable) { - if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); - it[HIDDEN][key] = true; - } else { - if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; - D = _create(D, { - enumerable: createDesc(0, false) - }); - } - - return setSymbolDesc(it, key, D); - } - - return dP(it, key, D); -}; - -var $defineProperties = function defineProperties(it, P) { - anObject(it); - var keys = enumKeys(P = toIObject(P)); - var i = 0; - var l = keys.length; - var key; - - while (l > i) { - $defineProperty(it, key = keys[i++], P[key]); - } - - return it; -}; - -var $create = function create(it, P) { - return P === undefined ? _create(it) : $defineProperties(_create(it), P); -}; - -var $propertyIsEnumerable = function propertyIsEnumerable(key) { - var E = isEnum.call(this, key = toPrimitive(key, true)); - if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; - return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; -}; - -var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { - it = toIObject(it); - key = toPrimitive(key, true); - if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; - var D = gOPD(it, key); - if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; - return D; -}; - -var $getOwnPropertyNames = function getOwnPropertyNames(it) { - var names = gOPN(toIObject(it)); - var result = []; - var i = 0; - var key; - - while (names.length > i) { - if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); - } - - return result; -}; - -var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { - var IS_OP = it === ObjectProto; - var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); - var result = []; - var i = 0; - var key; - - while (names.length > i) { - if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); - } - - return result; -}; - -if (!USE_NATIVE) { - $Symbol = function _Symbol() { - if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); - var tag = uid(arguments.length > 0 ? arguments[0] : undefined); - - var $set = function $set(value) { - if (this === ObjectProto) $set.call(OPSymbols, value); - if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; - setSymbolDesc(this, tag, createDesc(1, value)); - }; - - if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { - configurable: true, - set: $set - }); - return wrap(tag); - }; - - redefine($Symbol[PROTOTYPE], 'toString', function toString() { - return this._k; - }); - $GOPD.f = $getOwnPropertyDescriptor; - $DP.f = $defineProperty; - __w_pdfjs_require__(133).f = gOPNExt.f = $getOwnPropertyNames; - __w_pdfjs_require__(74).f = $propertyIsEnumerable; - $GOPS.f = $getOwnPropertySymbols; - - if (DESCRIPTORS && !__w_pdfjs_require__(25)) { - redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); - } - - wksExt.f = function (name) { - return wrap(wks(name)); - }; -} - -$export($export.G + $export.W + $export.F * !USE_NATIVE, { - Symbol: $Symbol -}); - -for (var es6Symbols = 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'.split(','), j = 0; es6Symbols.length > j;) { - wks(es6Symbols[j++]); -} - -for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) { - wksDefine(wellKnownSymbols[k++]); -} - -$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { - 'for': function _for(key) { - return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key); - }, - keyFor: function keyFor(sym) { - if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); - - for (var key in SymbolRegistry) { - if (SymbolRegistry[key] === sym) return key; - } - }, - useSetter: function useSetter() { - setter = true; - }, - useSimple: function useSimple() { - setter = false; - } -}); -$export($export.S + $export.F * !USE_NATIVE, 'Object', { - create: $create, - defineProperty: $defineProperty, - defineProperties: $defineProperties, - getOwnPropertyDescriptor: $getOwnPropertyDescriptor, - getOwnPropertyNames: $getOwnPropertyNames, - getOwnPropertySymbols: $getOwnPropertySymbols -}); -var FAILS_ON_PRIMITIVES = $fails(function () { - $GOPS.f(1); -}); -$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', { - getOwnPropertySymbols: function getOwnPropertySymbols(it) { - return $GOPS.f(toObject(it)); - } -}); -$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { - var S = $Symbol(); - return _stringify([S]) != '[null]' || _stringify({ - a: S - }) != '{}' || _stringify(Object(S)) != '{}'; -})), 'JSON', { - stringify: function stringify(it) { - var args = [it]; - var i = 1; - var replacer, $replacer; - - while (arguments.length > i) { - args.push(arguments[i++]); - } - - $replacer = replacer = args[1]; - if (!isObject(replacer) && it === undefined || isSymbol(it)) return; - if (!isArray(replacer)) replacer = function replacer(key, value) { - if (typeof $replacer == 'function') value = $replacer.call(this, key, value); - if (!isSymbol(value)) return value; - }; - args[1] = replacer; - return _stringify.apply($JSON, args); - } -}); -$Symbol[PROTOTYPE][TO_PRIMITIVE] || __w_pdfjs_require__(10)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); -setToStringTag($Symbol, 'Symbol'); -setToStringTag(Math, 'Math', true); -setToStringTag(global.JSON, 'JSON', true); +var global = __w_pdfjs_require__(7); +module.exports = global; /***/ }), /* 129 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -exports.f = __w_pdfjs_require__(33); - -/***/ }), -/* 130 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var global = __w_pdfjs_require__(8); - -var core = __w_pdfjs_require__(9); - -var LIBRARY = __w_pdfjs_require__(25); - -var wksExt = __w_pdfjs_require__(129); - -var defineProperty = __w_pdfjs_require__(11).f; - -module.exports = function (name) { - var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); - if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { - value: wksExt.f(name) - }); -}; - -/***/ }), -/* 131 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var getKeys = __w_pdfjs_require__(55); - -var gOPS = __w_pdfjs_require__(73); - -var pIE = __w_pdfjs_require__(74); - -module.exports = function (it) { - var result = getKeys(it); - var getSymbols = gOPS.f; - - if (getSymbols) { - var symbols = getSymbols(it); - var isEnum = pIE.f; - var i = 0; - var key; - - while (symbols.length > i) { - if (isEnum.call(it, key = symbols[i++])) result.push(key); - } - } - - return result; -}; - -/***/ }), -/* 132 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -var toIObject = __w_pdfjs_require__(43); - -var gOPN = __w_pdfjs_require__(133).f; - -var toString = {}.toString; -var windowNames = (typeof window === "undefined" ? "undefined" : _typeof(window)) == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; - -var getWindowNames = function getWindowNames(it) { - try { - return gOPN(it); - } catch (e) { - return windowNames.slice(); - } -}; - -module.exports.f = function getOwnPropertyNames(it) { - return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); -}; - -/***/ }), -/* 133 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var $keys = __w_pdfjs_require__(56); - -var hiddenKeys = __w_pdfjs_require__(58).concat('length', 'prototype'); - -exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return $keys(O, hiddenKeys); -}; - -/***/ }), -/* 134 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -__w_pdfjs_require__(135); - -module.exports = __w_pdfjs_require__(9).String.padStart; - -/***/ }), -/* 135 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var $export = __w_pdfjs_require__(7); - -var $pad = __w_pdfjs_require__(136); - -var userAgent = __w_pdfjs_require__(96); - -var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent); -$export($export.P + $export.F * WEBKIT_BUG, 'String', { - padStart: function padStart(maxLength) { - return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true); - } -}); - -/***/ }), -/* 136 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var toLength = __w_pdfjs_require__(28); - -var repeat = __w_pdfjs_require__(137); - -var defined = __w_pdfjs_require__(34); - -module.exports = function (that, maxLength, fillString, left) { - var S = String(defined(that)); - var stringLength = S.length; - var fillStr = fillString === undefined ? ' ' : String(fillString); - var intMaxLength = toLength(maxLength); - if (intMaxLength <= stringLength || fillStr == '') return S; - var fillLen = intMaxLength - stringLength; - var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length)); - if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen); - return left ? stringFiller + S : S + stringFiller; -}; - -/***/ }), -/* 137 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var toInteger = __w_pdfjs_require__(29); - -var defined = __w_pdfjs_require__(34); - -module.exports = function repeat(count) { - var str = String(defined(this)); - var res = ''; - var n = toInteger(count); - if (n < 0 || n == Infinity) throw RangeError("Count can't be negative"); - - for (; n > 0; (n >>>= 1) && (str += str)) { - if (n & 1) res += str; - } - - return res; -}; - -/***/ }), -/* 138 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -__w_pdfjs_require__(139); - -module.exports = __w_pdfjs_require__(9).String.padEnd; - -/***/ }), -/* 139 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var $export = __w_pdfjs_require__(7); - -var $pad = __w_pdfjs_require__(136); - -var userAgent = __w_pdfjs_require__(96); - -var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent); -$export($export.P + $export.F * WEBKIT_BUG, 'String', { - padEnd: function padEnd(maxLength) { - return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false); - } -}); - -/***/ }), -/* 140 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -__w_pdfjs_require__(141); - -module.exports = __w_pdfjs_require__(9).Object.values; - -/***/ }), -/* 141 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var $export = __w_pdfjs_require__(7); - -var $values = __w_pdfjs_require__(142)(false); - -$export($export.S, 'Object', { - values: function values(it) { - return $values(it); - } -}); - -/***/ }), -/* 142 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var DESCRIPTORS = __w_pdfjs_require__(15); - -var getKeys = __w_pdfjs_require__(55); - -var toIObject = __w_pdfjs_require__(43); - -var isEnum = __w_pdfjs_require__(74).f; - -module.exports = function (isEntries) { - return function (it) { - var O = toIObject(it); - var keys = getKeys(O); - var length = keys.length; - var i = 0; - var result = []; - var key; - - while (length > i) { - key = keys[i++]; - - if (!DESCRIPTORS || isEnum.call(O, key)) { - result.push(isEntries ? [key, O[key]] : O[key]); - } - } - - return result; - }; -}; - -/***/ }), -/* 143 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -{ - var isReadableStreamSupported = false; - - if (typeof ReadableStream !== 'undefined') { - try { - new ReadableStream({ - start: function start(controller) { - controller.close(); - } - }); - isReadableStreamSupported = true; - } catch (e) {} - } - - if (isReadableStreamSupported) { - exports.ReadableStream = ReadableStream; - } else { - exports.ReadableStream = __w_pdfjs_require__(144).ReadableStream; - } -} - -/***/ }), -/* 144 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); } - -(function (e, a) { - for (var i in a) { - e[i] = a[i]; - } -})(exports, function (modules) { - var installedModules = {}; - - function __w_pdfjs_require__(moduleId) { - if (installedModules[moduleId]) return installedModules[moduleId].exports; - var module = installedModules[moduleId] = { - i: moduleId, - l: false, - exports: {} - }; - modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__); - module.l = true; - return module.exports; - } - - __w_pdfjs_require__.m = modules; - __w_pdfjs_require__.c = installedModules; - - __w_pdfjs_require__.i = function (value) { - return value; - }; - - __w_pdfjs_require__.d = function (exports, name, getter) { - if (!__w_pdfjs_require__.o(exports, name)) { - Object.defineProperty(exports, name, { - configurable: false, - enumerable: true, - get: getter - }); - } - }; - - __w_pdfjs_require__.n = function (module) { - var getter = module && module.__esModule ? function getDefault() { - return module['default']; - } : function getModuleExports() { - return module; - }; - - __w_pdfjs_require__.d(getter, 'a', getter); - - return getter; - }; - - __w_pdfjs_require__.o = function (object, property) { - return Object.prototype.hasOwnProperty.call(object, property); - }; - - __w_pdfjs_require__.p = ""; - return __w_pdfjs_require__(__w_pdfjs_require__.s = 7); -}([function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) { - return _typeof2(obj); - } : function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj); - }; - - var _require = __w_pdfjs_require__(1), - assert = _require.assert; - - function IsPropertyKey(argument) { - return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol'; - } - - exports.typeIsObject = function (x) { - return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function'; - }; - - exports.createDataProperty = function (o, p, v) { - assert(exports.typeIsObject(o)); - Object.defineProperty(o, p, { - value: v, - writable: true, - enumerable: true, - configurable: true - }); - }; - - exports.createArrayFromList = function (elements) { - return elements.slice(); - }; - - exports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) { - new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset); - }; - - exports.CreateIterResultObject = function (value, done) { - assert(typeof done === 'boolean'); - var obj = {}; - Object.defineProperty(obj, 'value', { - value: value, - enumerable: true, - writable: true, - configurable: true - }); - Object.defineProperty(obj, 'done', { - value: done, - enumerable: true, - writable: true, - configurable: true - }); - return obj; - }; - - exports.IsFiniteNonNegativeNumber = function (v) { - if (Number.isNaN(v)) { - return false; - } - - if (v === Infinity) { - return false; - } - - if (v < 0) { - return false; - } - - return true; - }; - - function Call(F, V, args) { - if (typeof F !== 'function') { - throw new TypeError('Argument is not a function'); - } - - return Function.prototype.apply.call(F, V, args); - } - - exports.InvokeOrNoop = function (O, P, args) { - assert(O !== undefined); - assert(IsPropertyKey(P)); - assert(Array.isArray(args)); - var method = O[P]; - - if (method === undefined) { - return undefined; - } - - return Call(method, O, args); - }; - - exports.PromiseInvokeOrNoop = function (O, P, args) { - assert(O !== undefined); - assert(IsPropertyKey(P)); - assert(Array.isArray(args)); - - try { - return Promise.resolve(exports.InvokeOrNoop(O, P, args)); - } catch (returnValueE) { - return Promise.reject(returnValueE); - } - }; - - exports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) { - assert(O !== undefined); - assert(IsPropertyKey(P)); - assert(Array.isArray(args)); - assert(Array.isArray(argsF)); - var method = void 0; - - try { - method = O[P]; - } catch (methodE) { - return Promise.reject(methodE); - } - - if (method === undefined) { - return F.apply(null, argsF); - } - - try { - return Promise.resolve(Call(method, O, args)); - } catch (e) { - return Promise.reject(e); - } - }; - - exports.TransferArrayBuffer = function (O) { - return O.slice(); - }; - - exports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) { - highWaterMark = Number(highWaterMark); - - if (Number.isNaN(highWaterMark) || highWaterMark < 0) { - throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN'); - } - - return highWaterMark; - }; - - exports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) { - if (size !== undefined && typeof size !== 'function') { - throw new TypeError('size property of a queuing strategy must be a function'); - } - - highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark); - return { - size: size, - highWaterMark: highWaterMark - }; - }; -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - function rethrowAssertionErrorRejection(e) { - if (e && e.constructor === AssertionError) { - setTimeout(function () { - throw e; - }, 0); - } - } - - function AssertionError(message) { - this.name = 'AssertionError'; - this.message = message || ''; - this.stack = new Error().stack; - } - - AssertionError.prototype = Object.create(Error.prototype); - AssertionError.prototype.constructor = AssertionError; - - function assert(value, message) { - if (!value) { - throw new AssertionError(message); - } - } - - module.exports = { - rethrowAssertionErrorRejection: rethrowAssertionErrorRejection, - AssertionError: AssertionError, - assert: assert - }; -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - var _require = __w_pdfjs_require__(0), - InvokeOrNoop = _require.InvokeOrNoop, - PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop, - ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy, - typeIsObject = _require.typeIsObject; - - var _require2 = __w_pdfjs_require__(1), - assert = _require2.assert, - rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection; - - var _require3 = __w_pdfjs_require__(3), - DequeueValue = _require3.DequeueValue, - EnqueueValueWithSize = _require3.EnqueueValueWithSize, - PeekQueueValue = _require3.PeekQueueValue, - ResetQueue = _require3.ResetQueue; - - var WritableStream = function () { - function WritableStream() { - var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - size = _ref.size, - _ref$highWaterMark = _ref.highWaterMark, - highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark; - - _classCallCheck(this, WritableStream); - - this._state = 'writable'; - this._storedError = undefined; - this._writer = undefined; - this._writableStreamController = undefined; - this._writeRequests = []; - this._inFlightWriteRequest = undefined; - this._closeRequest = undefined; - this._inFlightCloseRequest = undefined; - this._pendingAbortRequest = undefined; - this._backpressure = false; - var type = underlyingSink.type; - - if (type !== undefined) { - throw new RangeError('Invalid type is specified'); - } - - this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark); - - this._writableStreamController.__startSteps(); - } - - _createClass(WritableStream, [{ - key: 'abort', - value: function abort(reason) { - if (IsWritableStream(this) === false) { - return Promise.reject(streamBrandCheckException('abort')); - } - - if (IsWritableStreamLocked(this) === true) { - return Promise.reject(new TypeError('Cannot abort a stream that already has a writer')); - } - - return WritableStreamAbort(this, reason); - } - }, { - key: 'getWriter', - value: function getWriter() { - if (IsWritableStream(this) === false) { - throw streamBrandCheckException('getWriter'); - } - - return AcquireWritableStreamDefaultWriter(this); - } - }, { - key: 'locked', - get: function get() { - if (IsWritableStream(this) === false) { - throw streamBrandCheckException('locked'); - } - - return IsWritableStreamLocked(this); - } - }]); - - return WritableStream; - }(); - - module.exports = { - AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter, - IsWritableStream: IsWritableStream, - IsWritableStreamLocked: IsWritableStreamLocked, - WritableStream: WritableStream, - WritableStreamAbort: WritableStreamAbort, - WritableStreamDefaultControllerError: WritableStreamDefaultControllerError, - WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation, - WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease, - WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite, - WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight - }; - - function AcquireWritableStreamDefaultWriter(stream) { - return new WritableStreamDefaultWriter(stream); - } - - function IsWritableStream(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) { - return false; - } - - return true; - } - - function IsWritableStreamLocked(stream) { - assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams'); - - if (stream._writer === undefined) { - return false; - } - - return true; - } - - function WritableStreamAbort(stream, reason) { - var state = stream._state; - - if (state === 'closed') { - return Promise.resolve(undefined); - } - - if (state === 'errored') { - return Promise.reject(stream._storedError); - } - - var error = new TypeError('Requested to abort'); - - if (stream._pendingAbortRequest !== undefined) { - return Promise.reject(error); - } - - assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring'); - var wasAlreadyErroring = false; - - if (state === 'erroring') { - wasAlreadyErroring = true; - reason = undefined; - } - - var promise = new Promise(function (resolve, reject) { - stream._pendingAbortRequest = { - _resolve: resolve, - _reject: reject, - _reason: reason, - _wasAlreadyErroring: wasAlreadyErroring - }; - }); - - if (wasAlreadyErroring === false) { - WritableStreamStartErroring(stream, error); - } - - return promise; - } - - function WritableStreamAddWriteRequest(stream) { - assert(IsWritableStreamLocked(stream) === true); - assert(stream._state === 'writable'); - var promise = new Promise(function (resolve, reject) { - var writeRequest = { - _resolve: resolve, - _reject: reject - }; - - stream._writeRequests.push(writeRequest); - }); - return promise; - } - - function WritableStreamDealWithRejection(stream, error) { - var state = stream._state; - - if (state === 'writable') { - WritableStreamStartErroring(stream, error); - return; - } - - assert(state === 'erroring'); - WritableStreamFinishErroring(stream); - } - - function WritableStreamStartErroring(stream, reason) { - assert(stream._storedError === undefined, 'stream._storedError === undefined'); - assert(stream._state === 'writable', 'state must be writable'); - var controller = stream._writableStreamController; - assert(controller !== undefined, 'controller must not be undefined'); - stream._state = 'erroring'; - stream._storedError = reason; - var writer = stream._writer; - - if (writer !== undefined) { - WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason); - } - - if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) { - WritableStreamFinishErroring(stream); - } - } - - function WritableStreamFinishErroring(stream) { - assert(stream._state === 'erroring', 'stream._state === erroring'); - assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false'); - stream._state = 'errored'; - - stream._writableStreamController.__errorSteps(); - - var storedError = stream._storedError; - - for (var i = 0; i < stream._writeRequests.length; i++) { - var writeRequest = stream._writeRequests[i]; - - writeRequest._reject(storedError); - } - - stream._writeRequests = []; - - if (stream._pendingAbortRequest === undefined) { - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - return; - } - - var abortRequest = stream._pendingAbortRequest; - stream._pendingAbortRequest = undefined; - - if (abortRequest._wasAlreadyErroring === true) { - abortRequest._reject(storedError); - - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - return; - } - - var promise = stream._writableStreamController.__abortSteps(abortRequest._reason); - - promise.then(function () { - abortRequest._resolve(); - - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - }, function (reason) { - abortRequest._reject(reason); - - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - }); - } - - function WritableStreamFinishInFlightWrite(stream) { - assert(stream._inFlightWriteRequest !== undefined); - - stream._inFlightWriteRequest._resolve(undefined); - - stream._inFlightWriteRequest = undefined; - } - - function WritableStreamFinishInFlightWriteWithError(stream, error) { - assert(stream._inFlightWriteRequest !== undefined); - - stream._inFlightWriteRequest._reject(error); - - stream._inFlightWriteRequest = undefined; - assert(stream._state === 'writable' || stream._state === 'erroring'); - WritableStreamDealWithRejection(stream, error); - } - - function WritableStreamFinishInFlightClose(stream) { - assert(stream._inFlightCloseRequest !== undefined); - - stream._inFlightCloseRequest._resolve(undefined); - - stream._inFlightCloseRequest = undefined; - var state = stream._state; - assert(state === 'writable' || state === 'erroring'); - - if (state === 'erroring') { - stream._storedError = undefined; - - if (stream._pendingAbortRequest !== undefined) { - stream._pendingAbortRequest._resolve(); - - stream._pendingAbortRequest = undefined; - } - } - - stream._state = 'closed'; - var writer = stream._writer; - - if (writer !== undefined) { - defaultWriterClosedPromiseResolve(writer); - } - - assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined'); - assert(stream._storedError === undefined, 'stream._storedError === undefined'); - } - - function WritableStreamFinishInFlightCloseWithError(stream, error) { - assert(stream._inFlightCloseRequest !== undefined); - - stream._inFlightCloseRequest._reject(error); - - stream._inFlightCloseRequest = undefined; - assert(stream._state === 'writable' || stream._state === 'erroring'); - - if (stream._pendingAbortRequest !== undefined) { - stream._pendingAbortRequest._reject(error); - - stream._pendingAbortRequest = undefined; - } - - WritableStreamDealWithRejection(stream, error); - } - - function WritableStreamCloseQueuedOrInFlight(stream) { - if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) { - return false; - } - - return true; - } - - function WritableStreamHasOperationMarkedInFlight(stream) { - if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) { - return false; - } - - return true; - } - - function WritableStreamMarkCloseRequestInFlight(stream) { - assert(stream._inFlightCloseRequest === undefined); - assert(stream._closeRequest !== undefined); - stream._inFlightCloseRequest = stream._closeRequest; - stream._closeRequest = undefined; - } - - function WritableStreamMarkFirstWriteRequestInFlight(stream) { - assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request'); - assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty'); - stream._inFlightWriteRequest = stream._writeRequests.shift(); - } - - function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) { - assert(stream._state === 'errored', '_stream_.[[state]] is `"errored"`'); - - if (stream._closeRequest !== undefined) { - assert(stream._inFlightCloseRequest === undefined); - - stream._closeRequest._reject(stream._storedError); - - stream._closeRequest = undefined; - } - - var writer = stream._writer; - - if (writer !== undefined) { - defaultWriterClosedPromiseReject(writer, stream._storedError); - - writer._closedPromise["catch"](function () {}); - } - } - - function WritableStreamUpdateBackpressure(stream, backpressure) { - assert(stream._state === 'writable'); - assert(WritableStreamCloseQueuedOrInFlight(stream) === false); - var writer = stream._writer; - - if (writer !== undefined && backpressure !== stream._backpressure) { - if (backpressure === true) { - defaultWriterReadyPromiseReset(writer); - } else { - assert(backpressure === false); - defaultWriterReadyPromiseResolve(writer); - } - } - - stream._backpressure = backpressure; - } - - var WritableStreamDefaultWriter = function () { - function WritableStreamDefaultWriter(stream) { - _classCallCheck(this, WritableStreamDefaultWriter); - - if (IsWritableStream(stream) === false) { - throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance'); - } - - if (IsWritableStreamLocked(stream) === true) { - throw new TypeError('This stream has already been locked for exclusive writing by another writer'); - } - - this._ownerWritableStream = stream; - stream._writer = this; - var state = stream._state; - - if (state === 'writable') { - if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) { - defaultWriterReadyPromiseInitialize(this); - } else { - defaultWriterReadyPromiseInitializeAsResolved(this); - } - - defaultWriterClosedPromiseInitialize(this); - } else if (state === 'erroring') { - defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError); - - this._readyPromise["catch"](function () {}); - - defaultWriterClosedPromiseInitialize(this); - } else if (state === 'closed') { - defaultWriterReadyPromiseInitializeAsResolved(this); - defaultWriterClosedPromiseInitializeAsResolved(this); - } else { - assert(state === 'errored', 'state must be errored'); - var storedError = stream._storedError; - defaultWriterReadyPromiseInitializeAsRejected(this, storedError); - - this._readyPromise["catch"](function () {}); - - defaultWriterClosedPromiseInitializeAsRejected(this, storedError); - - this._closedPromise["catch"](function () {}); - } - } - - _createClass(WritableStreamDefaultWriter, [{ - key: 'abort', - value: function abort(reason) { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('abort')); - } - - if (this._ownerWritableStream === undefined) { - return Promise.reject(defaultWriterLockException('abort')); - } - - return WritableStreamDefaultWriterAbort(this, reason); - } - }, { - key: 'close', - value: function close() { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('close')); - } - - var stream = this._ownerWritableStream; - - if (stream === undefined) { - return Promise.reject(defaultWriterLockException('close')); - } - - if (WritableStreamCloseQueuedOrInFlight(stream) === true) { - return Promise.reject(new TypeError('cannot close an already-closing stream')); - } - - return WritableStreamDefaultWriterClose(this); - } - }, { - key: 'releaseLock', - value: function releaseLock() { - if (IsWritableStreamDefaultWriter(this) === false) { - throw defaultWriterBrandCheckException('releaseLock'); - } - - var stream = this._ownerWritableStream; - - if (stream === undefined) { - return; - } - - assert(stream._writer !== undefined); - WritableStreamDefaultWriterRelease(this); - } - }, { - key: 'write', - value: function write(chunk) { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('write')); - } - - if (this._ownerWritableStream === undefined) { - return Promise.reject(defaultWriterLockException('write to')); - } - - return WritableStreamDefaultWriterWrite(this, chunk); - } - }, { - key: 'closed', - get: function get() { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('closed')); - } - - return this._closedPromise; - } - }, { - key: 'desiredSize', - get: function get() { - if (IsWritableStreamDefaultWriter(this) === false) { - throw defaultWriterBrandCheckException('desiredSize'); - } - - if (this._ownerWritableStream === undefined) { - throw defaultWriterLockException('desiredSize'); - } - - return WritableStreamDefaultWriterGetDesiredSize(this); - } - }, { - key: 'ready', - get: function get() { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('ready')); - } - - return this._readyPromise; - } - }]); - - return WritableStreamDefaultWriter; - }(); - - function IsWritableStreamDefaultWriter(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) { - return false; - } - - return true; - } - - function WritableStreamDefaultWriterAbort(writer, reason) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - return WritableStreamAbort(stream, reason); - } - - function WritableStreamDefaultWriterClose(writer) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - var state = stream._state; - - if (state === 'closed' || state === 'errored') { - return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed')); - } - - assert(state === 'writable' || state === 'erroring'); - assert(WritableStreamCloseQueuedOrInFlight(stream) === false); - var promise = new Promise(function (resolve, reject) { - var closeRequest = { - _resolve: resolve, - _reject: reject - }; - stream._closeRequest = closeRequest; - }); - - if (stream._backpressure === true && state === 'writable') { - defaultWriterReadyPromiseResolve(writer); - } - - WritableStreamDefaultControllerClose(stream._writableStreamController); - return promise; - } - - function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - var state = stream._state; - - if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') { - return Promise.resolve(); - } - - if (state === 'errored') { - return Promise.reject(stream._storedError); - } - - assert(state === 'writable' || state === 'erroring'); - return WritableStreamDefaultWriterClose(writer); - } - - function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) { - if (writer._closedPromiseState === 'pending') { - defaultWriterClosedPromiseReject(writer, error); - } else { - defaultWriterClosedPromiseResetToRejected(writer, error); - } - - writer._closedPromise["catch"](function () {}); - } - - function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) { - if (writer._readyPromiseState === 'pending') { - defaultWriterReadyPromiseReject(writer, error); - } else { - defaultWriterReadyPromiseResetToRejected(writer, error); - } - - writer._readyPromise["catch"](function () {}); - } - - function WritableStreamDefaultWriterGetDesiredSize(writer) { - var stream = writer._ownerWritableStream; - var state = stream._state; - - if (state === 'errored' || state === 'erroring') { - return null; - } - - if (state === 'closed') { - return 0; - } - - return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController); - } - - function WritableStreamDefaultWriterRelease(writer) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - assert(stream._writer === writer); - var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\'s closedness'); - WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError); - WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError); - stream._writer = undefined; - writer._ownerWritableStream = undefined; - } - - function WritableStreamDefaultWriterWrite(writer, chunk) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - var controller = stream._writableStreamController; - var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk); - - if (stream !== writer._ownerWritableStream) { - return Promise.reject(defaultWriterLockException('write to')); - } - - var state = stream._state; - - if (state === 'errored') { - return Promise.reject(stream._storedError); - } - - if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') { - return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to')); - } - - if (state === 'erroring') { - return Promise.reject(stream._storedError); - } - - assert(state === 'writable'); - var promise = WritableStreamAddWriteRequest(stream); - WritableStreamDefaultControllerWrite(controller, chunk, chunkSize); - return promise; - } - - var WritableStreamDefaultController = function () { - function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) { - _classCallCheck(this, WritableStreamDefaultController); - - if (IsWritableStream(stream) === false) { - throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance'); - } - - if (stream._writableStreamController !== undefined) { - throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor'); - } - - this._controlledWritableStream = stream; - this._underlyingSink = underlyingSink; - this._queue = undefined; - this._queueTotalSize = undefined; - ResetQueue(this); - this._started = false; - var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark); - this._strategySize = normalizedStrategy.size; - this._strategyHWM = normalizedStrategy.highWaterMark; - var backpressure = WritableStreamDefaultControllerGetBackpressure(this); - WritableStreamUpdateBackpressure(stream, backpressure); - } - - _createClass(WritableStreamDefaultController, [{ - key: 'error', - value: function error(e) { - if (IsWritableStreamDefaultController(this) === false) { - throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController'); - } - - var state = this._controlledWritableStream._state; - - if (state !== 'writable') { - return; - } - - WritableStreamDefaultControllerError(this, e); - } - }, { - key: '__abortSteps', - value: function __abortSteps(reason) { - return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]); - } - }, { - key: '__errorSteps', - value: function __errorSteps() { - ResetQueue(this); - } - }, { - key: '__startSteps', - value: function __startSteps() { - var _this = this; - - var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]); - var stream = this._controlledWritableStream; - Promise.resolve(startResult).then(function () { - assert(stream._state === 'writable' || stream._state === 'erroring'); - _this._started = true; - WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this); - }, function (r) { - assert(stream._state === 'writable' || stream._state === 'erroring'); - _this._started = true; - WritableStreamDealWithRejection(stream, r); - })["catch"](rethrowAssertionErrorRejection); - } - }]); - - return WritableStreamDefaultController; - }(); - - function WritableStreamDefaultControllerClose(controller) { - EnqueueValueWithSize(controller, 'close', 0); - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - } - - function WritableStreamDefaultControllerGetChunkSize(controller, chunk) { - var strategySize = controller._strategySize; - - if (strategySize === undefined) { - return 1; - } - - try { - return strategySize(chunk); - } catch (chunkSizeE) { - WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE); - return 1; - } - } - - function WritableStreamDefaultControllerGetDesiredSize(controller) { - return controller._strategyHWM - controller._queueTotalSize; - } - - function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) { - var writeRecord = { - chunk: chunk - }; - - try { - EnqueueValueWithSize(controller, writeRecord, chunkSize); - } catch (enqueueE) { - WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE); - return; - } - - var stream = controller._controlledWritableStream; - - if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') { - var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); - WritableStreamUpdateBackpressure(stream, backpressure); - } - - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - } - - function IsWritableStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) { - return false; - } - - return true; - } - - function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) { - var stream = controller._controlledWritableStream; - - if (controller._started === false) { - return; - } - - if (stream._inFlightWriteRequest !== undefined) { - return; - } - - var state = stream._state; - - if (state === 'closed' || state === 'errored') { - return; - } - - if (state === 'erroring') { - WritableStreamFinishErroring(stream); - return; - } - - if (controller._queue.length === 0) { - return; - } - - var writeRecord = PeekQueueValue(controller); - - if (writeRecord === 'close') { - WritableStreamDefaultControllerProcessClose(controller); - } else { - WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk); - } - } - - function WritableStreamDefaultControllerErrorIfNeeded(controller, error) { - if (controller._controlledWritableStream._state === 'writable') { - WritableStreamDefaultControllerError(controller, error); - } - } - - function WritableStreamDefaultControllerProcessClose(controller) { - var stream = controller._controlledWritableStream; - WritableStreamMarkCloseRequestInFlight(stream); - DequeueValue(controller); - assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued'); - var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []); - sinkClosePromise.then(function () { - WritableStreamFinishInFlightClose(stream); - }, function (reason) { - WritableStreamFinishInFlightCloseWithError(stream, reason); - })["catch"](rethrowAssertionErrorRejection); - } - - function WritableStreamDefaultControllerProcessWrite(controller, chunk) { - var stream = controller._controlledWritableStream; - WritableStreamMarkFirstWriteRequestInFlight(stream); - var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]); - sinkWritePromise.then(function () { - WritableStreamFinishInFlightWrite(stream); - var state = stream._state; - assert(state === 'writable' || state === 'erroring'); - DequeueValue(controller); - - if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') { - var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); - WritableStreamUpdateBackpressure(stream, backpressure); - } - - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - }, function (reason) { - WritableStreamFinishInFlightWriteWithError(stream, reason); - })["catch"](rethrowAssertionErrorRejection); - } - - function WritableStreamDefaultControllerGetBackpressure(controller) { - var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller); - return desiredSize <= 0; - } - - function WritableStreamDefaultControllerError(controller, error) { - var stream = controller._controlledWritableStream; - assert(stream._state === 'writable'); - WritableStreamStartErroring(stream, error); - } - - function streamBrandCheckException(name) { - return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream'); - } - - function defaultWriterBrandCheckException(name) { - return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter'); - } - - function defaultWriterLockException(name) { - return new TypeError('Cannot ' + name + ' a stream using a released writer'); - } - - function defaultWriterClosedPromiseInitialize(writer) { - writer._closedPromise = new Promise(function (resolve, reject) { - writer._closedPromise_resolve = resolve; - writer._closedPromise_reject = reject; - writer._closedPromiseState = 'pending'; - }); - } - - function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) { - writer._closedPromise = Promise.reject(reason); - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'rejected'; - } - - function defaultWriterClosedPromiseInitializeAsResolved(writer) { - writer._closedPromise = Promise.resolve(undefined); - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'resolved'; - } - - function defaultWriterClosedPromiseReject(writer, reason) { - assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined'); - assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined'); - assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending'); - - writer._closedPromise_reject(reason); - - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'rejected'; - } - - function defaultWriterClosedPromiseResetToRejected(writer, reason) { - assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined'); - assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined'); - assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending'); - writer._closedPromise = Promise.reject(reason); - writer._closedPromiseState = 'rejected'; - } - - function defaultWriterClosedPromiseResolve(writer) { - assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined'); - assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined'); - assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending'); - - writer._closedPromise_resolve(undefined); - - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'resolved'; - } - - function defaultWriterReadyPromiseInitialize(writer) { - writer._readyPromise = new Promise(function (resolve, reject) { - writer._readyPromise_resolve = resolve; - writer._readyPromise_reject = reject; - }); - writer._readyPromiseState = 'pending'; - } - - function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) { - writer._readyPromise = Promise.reject(reason); - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'rejected'; - } - - function defaultWriterReadyPromiseInitializeAsResolved(writer) { - writer._readyPromise = Promise.resolve(undefined); - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'fulfilled'; - } - - function defaultWriterReadyPromiseReject(writer, reason) { - assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined'); - assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined'); - - writer._readyPromise_reject(reason); - - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'rejected'; - } - - function defaultWriterReadyPromiseReset(writer) { - assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined'); - assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined'); - writer._readyPromise = new Promise(function (resolve, reject) { - writer._readyPromise_resolve = resolve; - writer._readyPromise_reject = reject; - }); - writer._readyPromiseState = 'pending'; - } - - function defaultWriterReadyPromiseResetToRejected(writer, reason) { - assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined'); - assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined'); - writer._readyPromise = Promise.reject(reason); - writer._readyPromiseState = 'rejected'; - } - - function defaultWriterReadyPromiseResolve(writer) { - assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined'); - assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined'); - - writer._readyPromise_resolve(undefined); - - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'fulfilled'; - } -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var _require = __w_pdfjs_require__(0), - IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber; - - var _require2 = __w_pdfjs_require__(1), - assert = _require2.assert; - - exports.DequeueValue = function (container) { - assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].'); - assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.'); - - var pair = container._queue.shift(); - - container._queueTotalSize -= pair.size; - - if (container._queueTotalSize < 0) { - container._queueTotalSize = 0; - } - - return pair.value; - }; - - exports.EnqueueValueWithSize = function (container, value, size) { - assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].'); - size = Number(size); - - if (!IsFiniteNonNegativeNumber(size)) { - throw new RangeError('Size must be a finite, non-NaN, non-negative number.'); - } - - container._queue.push({ - value: value, - size: size - }); - - container._queueTotalSize += size; - }; - - exports.PeekQueueValue = function (container) { - assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].'); - assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.'); - var pair = container._queue[0]; - return pair.value; - }; - - exports.ResetQueue = function (container) { - assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].'); - container._queue = []; - container._queueTotalSize = 0; - }; -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - var _require = __w_pdfjs_require__(0), - ArrayBufferCopy = _require.ArrayBufferCopy, - CreateIterResultObject = _require.CreateIterResultObject, - IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber, - InvokeOrNoop = _require.InvokeOrNoop, - PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop, - TransferArrayBuffer = _require.TransferArrayBuffer, - ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy, - ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark; - - var _require2 = __w_pdfjs_require__(0), - createArrayFromList = _require2.createArrayFromList, - createDataProperty = _require2.createDataProperty, - typeIsObject = _require2.typeIsObject; - - var _require3 = __w_pdfjs_require__(1), - assert = _require3.assert, - rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection; - - var _require4 = __w_pdfjs_require__(3), - DequeueValue = _require4.DequeueValue, - EnqueueValueWithSize = _require4.EnqueueValueWithSize, - ResetQueue = _require4.ResetQueue; - - var _require5 = __w_pdfjs_require__(2), - AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter, - IsWritableStream = _require5.IsWritableStream, - IsWritableStreamLocked = _require5.IsWritableStreamLocked, - WritableStreamAbort = _require5.WritableStreamAbort, - WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation, - WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease, - WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite, - WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight; - - var ReadableStream = function () { - function ReadableStream() { - var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - size = _ref.size, - highWaterMark = _ref.highWaterMark; - - _classCallCheck(this, ReadableStream); - - this._state = 'readable'; - this._reader = undefined; - this._storedError = undefined; - this._disturbed = false; - this._readableStreamController = undefined; - var type = underlyingSource.type; - var typeString = String(type); - - if (typeString === 'bytes') { - if (highWaterMark === undefined) { - highWaterMark = 0; - } - - this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark); - } else if (type === undefined) { - if (highWaterMark === undefined) { - highWaterMark = 1; - } - - this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark); - } else { - throw new RangeError('Invalid type is specified'); - } - } - - _createClass(ReadableStream, [{ - key: 'cancel', - value: function cancel(reason) { - if (IsReadableStream(this) === false) { - return Promise.reject(streamBrandCheckException('cancel')); - } - - if (IsReadableStreamLocked(this) === true) { - return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader')); - } - - return ReadableStreamCancel(this, reason); - } - }, { - key: 'getReader', - value: function getReader() { - var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - mode = _ref2.mode; - - if (IsReadableStream(this) === false) { - throw streamBrandCheckException('getReader'); - } - - if (mode === undefined) { - return AcquireReadableStreamDefaultReader(this); - } - - mode = String(mode); - - if (mode === 'byob') { - return AcquireReadableStreamBYOBReader(this); - } - - throw new RangeError('Invalid mode is specified'); - } - }, { - key: 'pipeThrough', - value: function pipeThrough(_ref3, options) { - var writable = _ref3.writable, - readable = _ref3.readable; - var promise = this.pipeTo(writable, options); - ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise); - return readable; - } - }, { - key: 'pipeTo', - value: function pipeTo(dest) { - var _this = this; - - var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - preventClose = _ref4.preventClose, - preventAbort = _ref4.preventAbort, - preventCancel = _ref4.preventCancel; - - if (IsReadableStream(this) === false) { - return Promise.reject(streamBrandCheckException('pipeTo')); - } - - if (IsWritableStream(dest) === false) { - return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\'s first argument must be a WritableStream')); - } - - preventClose = Boolean(preventClose); - preventAbort = Boolean(preventAbort); - preventCancel = Boolean(preventCancel); - - if (IsReadableStreamLocked(this) === true) { - return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream')); - } - - if (IsWritableStreamLocked(dest) === true) { - return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream')); - } - - var reader = AcquireReadableStreamDefaultReader(this); - var writer = AcquireWritableStreamDefaultWriter(dest); - var shuttingDown = false; - var currentWrite = Promise.resolve(); - return new Promise(function (resolve, reject) { - function pipeLoop() { - currentWrite = Promise.resolve(); - - if (shuttingDown === true) { - return Promise.resolve(); - } - - return writer._readyPromise.then(function () { - return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) { - var value = _ref5.value, - done = _ref5.done; - - if (done === true) { - return; - } - - currentWrite = WritableStreamDefaultWriterWrite(writer, value)["catch"](function () {}); - }); - }).then(pipeLoop); - } - - isOrBecomesErrored(_this, reader._closedPromise, function (storedError) { - if (preventAbort === false) { - shutdownWithAction(function () { - return WritableStreamAbort(dest, storedError); - }, true, storedError); - } else { - shutdown(true, storedError); - } - }); - isOrBecomesErrored(dest, writer._closedPromise, function (storedError) { - if (preventCancel === false) { - shutdownWithAction(function () { - return ReadableStreamCancel(_this, storedError); - }, true, storedError); - } else { - shutdown(true, storedError); - } - }); - isOrBecomesClosed(_this, reader._closedPromise, function () { - if (preventClose === false) { - shutdownWithAction(function () { - return WritableStreamDefaultWriterCloseWithErrorPropagation(writer); - }); - } else { - shutdown(); - } - }); - - if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') { - var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it'); - - if (preventCancel === false) { - shutdownWithAction(function () { - return ReadableStreamCancel(_this, destClosed); - }, true, destClosed); - } else { - shutdown(true, destClosed); - } - } - - pipeLoop()["catch"](function (err) { - currentWrite = Promise.resolve(); - rethrowAssertionErrorRejection(err); - }); - - function waitForWritesToFinish() { - var oldCurrentWrite = currentWrite; - return currentWrite.then(function () { - return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined; - }); - } - - function isOrBecomesErrored(stream, promise, action) { - if (stream._state === 'errored') { - action(stream._storedError); - } else { - promise["catch"](action)["catch"](rethrowAssertionErrorRejection); - } - } - - function isOrBecomesClosed(stream, promise, action) { - if (stream._state === 'closed') { - action(); - } else { - promise.then(action)["catch"](rethrowAssertionErrorRejection); - } - } - - function shutdownWithAction(action, originalIsError, originalError) { - if (shuttingDown === true) { - return; - } - - shuttingDown = true; - - if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) { - waitForWritesToFinish().then(doTheRest); - } else { - doTheRest(); - } - - function doTheRest() { - action().then(function () { - return finalize(originalIsError, originalError); - }, function (newError) { - return finalize(true, newError); - })["catch"](rethrowAssertionErrorRejection); - } - } - - function shutdown(isError, error) { - if (shuttingDown === true) { - return; - } - - shuttingDown = true; - - if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) { - waitForWritesToFinish().then(function () { - return finalize(isError, error); - })["catch"](rethrowAssertionErrorRejection); - } else { - finalize(isError, error); - } - } - - function finalize(isError, error) { - WritableStreamDefaultWriterRelease(writer); - ReadableStreamReaderGenericRelease(reader); - - if (isError) { - reject(error); - } else { - resolve(undefined); - } - } - }); - } - }, { - key: 'tee', - value: function tee() { - if (IsReadableStream(this) === false) { - throw streamBrandCheckException('tee'); - } - - var branches = ReadableStreamTee(this, false); - return createArrayFromList(branches); - } - }, { - key: 'locked', - get: function get() { - if (IsReadableStream(this) === false) { - throw streamBrandCheckException('locked'); - } - - return IsReadableStreamLocked(this); - } - }]); - - return ReadableStream; - }(); - - module.exports = { - ReadableStream: ReadableStream, - IsReadableStreamDisturbed: IsReadableStreamDisturbed, - ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose, - ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue, - ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError, - ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize - }; - - function AcquireReadableStreamBYOBReader(stream) { - return new ReadableStreamBYOBReader(stream); - } - - function AcquireReadableStreamDefaultReader(stream) { - return new ReadableStreamDefaultReader(stream); - } - - function IsReadableStream(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) { - return false; - } - - return true; - } - - function IsReadableStreamDisturbed(stream) { - assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams'); - return stream._disturbed; - } - - function IsReadableStreamLocked(stream) { - assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams'); - - if (stream._reader === undefined) { - return false; - } - - return true; - } - - function ReadableStreamTee(stream, cloneForBranch2) { - assert(IsReadableStream(stream) === true); - assert(typeof cloneForBranch2 === 'boolean'); - var reader = AcquireReadableStreamDefaultReader(stream); - var teeState = { - closedOrErrored: false, - canceled1: false, - canceled2: false, - reason1: undefined, - reason2: undefined - }; - teeState.promise = new Promise(function (resolve) { - teeState._resolve = resolve; - }); - var pull = create_ReadableStreamTeePullFunction(); - pull._reader = reader; - pull._teeState = teeState; - pull._cloneForBranch2 = cloneForBranch2; - var cancel1 = create_ReadableStreamTeeBranch1CancelFunction(); - cancel1._stream = stream; - cancel1._teeState = teeState; - var cancel2 = create_ReadableStreamTeeBranch2CancelFunction(); - cancel2._stream = stream; - cancel2._teeState = teeState; - var underlyingSource1 = Object.create(Object.prototype); - createDataProperty(underlyingSource1, 'pull', pull); - createDataProperty(underlyingSource1, 'cancel', cancel1); - var branch1Stream = new ReadableStream(underlyingSource1); - var underlyingSource2 = Object.create(Object.prototype); - createDataProperty(underlyingSource2, 'pull', pull); - createDataProperty(underlyingSource2, 'cancel', cancel2); - var branch2Stream = new ReadableStream(underlyingSource2); - pull._branch1 = branch1Stream._readableStreamController; - pull._branch2 = branch2Stream._readableStreamController; - - reader._closedPromise["catch"](function (r) { - if (teeState.closedOrErrored === true) { - return; - } - - ReadableStreamDefaultControllerError(pull._branch1, r); - ReadableStreamDefaultControllerError(pull._branch2, r); - teeState.closedOrErrored = true; - }); - - return [branch1Stream, branch2Stream]; - } - - function create_ReadableStreamTeePullFunction() { - function f() { - var reader = f._reader, - branch1 = f._branch1, - branch2 = f._branch2, - teeState = f._teeState; - return ReadableStreamDefaultReaderRead(reader).then(function (result) { - assert(typeIsObject(result)); - var value = result.value; - var done = result.done; - assert(typeof done === 'boolean'); - - if (done === true && teeState.closedOrErrored === false) { - if (teeState.canceled1 === false) { - ReadableStreamDefaultControllerClose(branch1); - } - - if (teeState.canceled2 === false) { - ReadableStreamDefaultControllerClose(branch2); - } - - teeState.closedOrErrored = true; - } - - if (teeState.closedOrErrored === true) { - return; - } - - var value1 = value; - var value2 = value; - - if (teeState.canceled1 === false) { - ReadableStreamDefaultControllerEnqueue(branch1, value1); - } - - if (teeState.canceled2 === false) { - ReadableStreamDefaultControllerEnqueue(branch2, value2); - } - }); - } - - return f; - } - - function create_ReadableStreamTeeBranch1CancelFunction() { - function f(reason) { - var stream = f._stream, - teeState = f._teeState; - teeState.canceled1 = true; - teeState.reason1 = reason; - - if (teeState.canceled2 === true) { - var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]); - var cancelResult = ReadableStreamCancel(stream, compositeReason); - - teeState._resolve(cancelResult); - } - - return teeState.promise; - } - - return f; - } - - function create_ReadableStreamTeeBranch2CancelFunction() { - function f(reason) { - var stream = f._stream, - teeState = f._teeState; - teeState.canceled2 = true; - teeState.reason2 = reason; - - if (teeState.canceled1 === true) { - var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]); - var cancelResult = ReadableStreamCancel(stream, compositeReason); - - teeState._resolve(cancelResult); - } - - return teeState.promise; - } - - return f; - } - - function ReadableStreamAddReadIntoRequest(stream) { - assert(IsReadableStreamBYOBReader(stream._reader) === true); - assert(stream._state === 'readable' || stream._state === 'closed'); - var promise = new Promise(function (resolve, reject) { - var readIntoRequest = { - _resolve: resolve, - _reject: reject - }; - - stream._reader._readIntoRequests.push(readIntoRequest); - }); - return promise; - } - - function ReadableStreamAddReadRequest(stream) { - assert(IsReadableStreamDefaultReader(stream._reader) === true); - assert(stream._state === 'readable'); - var promise = new Promise(function (resolve, reject) { - var readRequest = { - _resolve: resolve, - _reject: reject - }; - - stream._reader._readRequests.push(readRequest); - }); - return promise; - } - - function ReadableStreamCancel(stream, reason) { - stream._disturbed = true; - - if (stream._state === 'closed') { - return Promise.resolve(undefined); - } - - if (stream._state === 'errored') { - return Promise.reject(stream._storedError); - } - - ReadableStreamClose(stream); - - var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason); - - return sourceCancelPromise.then(function () { - return undefined; - }); - } - - function ReadableStreamClose(stream) { - assert(stream._state === 'readable'); - stream._state = 'closed'; - var reader = stream._reader; - - if (reader === undefined) { - return undefined; - } - - if (IsReadableStreamDefaultReader(reader) === true) { - for (var i = 0; i < reader._readRequests.length; i++) { - var _resolve = reader._readRequests[i]._resolve; - - _resolve(CreateIterResultObject(undefined, true)); - } - - reader._readRequests = []; - } - - defaultReaderClosedPromiseResolve(reader); - return undefined; - } - - function ReadableStreamError(stream, e) { - assert(IsReadableStream(stream) === true, 'stream must be ReadableStream'); - assert(stream._state === 'readable', 'state must be readable'); - stream._state = 'errored'; - stream._storedError = e; - var reader = stream._reader; - - if (reader === undefined) { - return undefined; - } - - if (IsReadableStreamDefaultReader(reader) === true) { - for (var i = 0; i < reader._readRequests.length; i++) { - var readRequest = reader._readRequests[i]; - - readRequest._reject(e); - } - - reader._readRequests = []; - } else { - assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader'); - - for (var _i = 0; _i < reader._readIntoRequests.length; _i++) { - var readIntoRequest = reader._readIntoRequests[_i]; - - readIntoRequest._reject(e); - } - - reader._readIntoRequests = []; - } - - defaultReaderClosedPromiseReject(reader, e); - - reader._closedPromise["catch"](function () {}); - } - - function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) { - var reader = stream._reader; - assert(reader._readIntoRequests.length > 0); - - var readIntoRequest = reader._readIntoRequests.shift(); - - readIntoRequest._resolve(CreateIterResultObject(chunk, done)); - } - - function ReadableStreamFulfillReadRequest(stream, chunk, done) { - var reader = stream._reader; - assert(reader._readRequests.length > 0); - - var readRequest = reader._readRequests.shift(); - - readRequest._resolve(CreateIterResultObject(chunk, done)); - } - - function ReadableStreamGetNumReadIntoRequests(stream) { - return stream._reader._readIntoRequests.length; - } - - function ReadableStreamGetNumReadRequests(stream) { - return stream._reader._readRequests.length; - } - - function ReadableStreamHasBYOBReader(stream) { - var reader = stream._reader; - - if (reader === undefined) { - return false; - } - - if (IsReadableStreamBYOBReader(reader) === false) { - return false; - } - - return true; - } - - function ReadableStreamHasDefaultReader(stream) { - var reader = stream._reader; - - if (reader === undefined) { - return false; - } - - if (IsReadableStreamDefaultReader(reader) === false) { - return false; - } - - return true; - } - - var ReadableStreamDefaultReader = function () { - function ReadableStreamDefaultReader(stream) { - _classCallCheck(this, ReadableStreamDefaultReader); - - if (IsReadableStream(stream) === false) { - throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance'); - } - - if (IsReadableStreamLocked(stream) === true) { - throw new TypeError('This stream has already been locked for exclusive reading by another reader'); - } - - ReadableStreamReaderGenericInitialize(this, stream); - this._readRequests = []; - } - - _createClass(ReadableStreamDefaultReader, [{ - key: 'cancel', - value: function cancel(reason) { - if (IsReadableStreamDefaultReader(this) === false) { - return Promise.reject(defaultReaderBrandCheckException('cancel')); - } - - if (this._ownerReadableStream === undefined) { - return Promise.reject(readerLockException('cancel')); - } - - return ReadableStreamReaderGenericCancel(this, reason); - } - }, { - key: 'read', - value: function read() { - if (IsReadableStreamDefaultReader(this) === false) { - return Promise.reject(defaultReaderBrandCheckException('read')); - } - - if (this._ownerReadableStream === undefined) { - return Promise.reject(readerLockException('read from')); - } - - return ReadableStreamDefaultReaderRead(this); - } - }, { - key: 'releaseLock', - value: function releaseLock() { - if (IsReadableStreamDefaultReader(this) === false) { - throw defaultReaderBrandCheckException('releaseLock'); - } - - if (this._ownerReadableStream === undefined) { - return; - } - - if (this._readRequests.length > 0) { - throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'); - } - - ReadableStreamReaderGenericRelease(this); - } - }, { - key: 'closed', - get: function get() { - if (IsReadableStreamDefaultReader(this) === false) { - return Promise.reject(defaultReaderBrandCheckException('closed')); - } - - return this._closedPromise; - } - }]); - - return ReadableStreamDefaultReader; - }(); - - var ReadableStreamBYOBReader = function () { - function ReadableStreamBYOBReader(stream) { - _classCallCheck(this, ReadableStreamBYOBReader); - - if (!IsReadableStream(stream)) { - throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source'); - } - - if (IsReadableByteStreamController(stream._readableStreamController) === false) { - throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source'); - } - - if (IsReadableStreamLocked(stream)) { - throw new TypeError('This stream has already been locked for exclusive reading by another reader'); - } - - ReadableStreamReaderGenericInitialize(this, stream); - this._readIntoRequests = []; - } - - _createClass(ReadableStreamBYOBReader, [{ - key: 'cancel', - value: function cancel(reason) { - if (!IsReadableStreamBYOBReader(this)) { - return Promise.reject(byobReaderBrandCheckException('cancel')); - } - - if (this._ownerReadableStream === undefined) { - return Promise.reject(readerLockException('cancel')); - } - - return ReadableStreamReaderGenericCancel(this, reason); - } - }, { - key: 'read', - value: function read(view) { - if (!IsReadableStreamBYOBReader(this)) { - return Promise.reject(byobReaderBrandCheckException('read')); - } - - if (this._ownerReadableStream === undefined) { - return Promise.reject(readerLockException('read from')); - } - - if (!ArrayBuffer.isView(view)) { - return Promise.reject(new TypeError('view must be an array buffer view')); - } - - if (view.byteLength === 0) { - return Promise.reject(new TypeError('view must have non-zero byteLength')); - } - - return ReadableStreamBYOBReaderRead(this, view); - } - }, { - key: 'releaseLock', - value: function releaseLock() { - if (!IsReadableStreamBYOBReader(this)) { - throw byobReaderBrandCheckException('releaseLock'); - } - - if (this._ownerReadableStream === undefined) { - return; - } - - if (this._readIntoRequests.length > 0) { - throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'); - } - - ReadableStreamReaderGenericRelease(this); - } - }, { - key: 'closed', - get: function get() { - if (!IsReadableStreamBYOBReader(this)) { - return Promise.reject(byobReaderBrandCheckException('closed')); - } - - return this._closedPromise; - } - }]); - - return ReadableStreamBYOBReader; - }(); - - function IsReadableStreamBYOBReader(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) { - return false; - } - - return true; - } - - function IsReadableStreamDefaultReader(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) { - return false; - } - - return true; - } - - function ReadableStreamReaderGenericInitialize(reader, stream) { - reader._ownerReadableStream = stream; - stream._reader = reader; - - if (stream._state === 'readable') { - defaultReaderClosedPromiseInitialize(reader); - } else if (stream._state === 'closed') { - defaultReaderClosedPromiseInitializeAsResolved(reader); - } else { - assert(stream._state === 'errored', 'state must be errored'); - defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError); - - reader._closedPromise["catch"](function () {}); - } - } - - function ReadableStreamReaderGenericCancel(reader, reason) { - var stream = reader._ownerReadableStream; - assert(stream !== undefined); - return ReadableStreamCancel(stream, reason); - } - - function ReadableStreamReaderGenericRelease(reader) { - assert(reader._ownerReadableStream !== undefined); - assert(reader._ownerReadableStream._reader === reader); - - if (reader._ownerReadableStream._state === 'readable') { - defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness')); - } else { - defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness')); - } - - reader._closedPromise["catch"](function () {}); - - reader._ownerReadableStream._reader = undefined; - reader._ownerReadableStream = undefined; - } - - function ReadableStreamBYOBReaderRead(reader, view) { - var stream = reader._ownerReadableStream; - assert(stream !== undefined); - stream._disturbed = true; - - if (stream._state === 'errored') { - return Promise.reject(stream._storedError); - } - - return ReadableByteStreamControllerPullInto(stream._readableStreamController, view); - } - - function ReadableStreamDefaultReaderRead(reader) { - var stream = reader._ownerReadableStream; - assert(stream !== undefined); - stream._disturbed = true; - - if (stream._state === 'closed') { - return Promise.resolve(CreateIterResultObject(undefined, true)); - } - - if (stream._state === 'errored') { - return Promise.reject(stream._storedError); - } - - assert(stream._state === 'readable'); - return stream._readableStreamController.__pullSteps(); - } - - var ReadableStreamDefaultController = function () { - function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) { - _classCallCheck(this, ReadableStreamDefaultController); - - if (IsReadableStream(stream) === false) { - throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance'); - } - - if (stream._readableStreamController !== undefined) { - throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor'); - } - - this._controlledReadableStream = stream; - this._underlyingSource = underlyingSource; - this._queue = undefined; - this._queueTotalSize = undefined; - ResetQueue(this); - this._started = false; - this._closeRequested = false; - this._pullAgain = false; - this._pulling = false; - var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark); - this._strategySize = normalizedStrategy.size; - this._strategyHWM = normalizedStrategy.highWaterMark; - var controller = this; - var startResult = InvokeOrNoop(underlyingSource, 'start', [this]); - Promise.resolve(startResult).then(function () { - controller._started = true; - assert(controller._pulling === false); - assert(controller._pullAgain === false); - ReadableStreamDefaultControllerCallPullIfNeeded(controller); - }, function (r) { - ReadableStreamDefaultControllerErrorIfNeeded(controller, r); - })["catch"](rethrowAssertionErrorRejection); - } - - _createClass(ReadableStreamDefaultController, [{ - key: 'close', - value: function close() { - if (IsReadableStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('close'); - } - - if (this._closeRequested === true) { - throw new TypeError('The stream has already been closed; do not close it again!'); - } - - var state = this._controlledReadableStream._state; - - if (state !== 'readable') { - throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed'); - } - - ReadableStreamDefaultControllerClose(this); - } - }, { - key: 'enqueue', - value: function enqueue(chunk) { - if (IsReadableStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('enqueue'); - } - - if (this._closeRequested === true) { - throw new TypeError('stream is closed or draining'); - } - - var state = this._controlledReadableStream._state; - - if (state !== 'readable') { - throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to'); - } - - return ReadableStreamDefaultControllerEnqueue(this, chunk); - } - }, { - key: 'error', - value: function error(e) { - if (IsReadableStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('error'); - } - - var stream = this._controlledReadableStream; - - if (stream._state !== 'readable') { - throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored'); - } - - ReadableStreamDefaultControllerError(this, e); - } - }, { - key: '__cancelSteps', - value: function __cancelSteps(reason) { - ResetQueue(this); - return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]); - } - }, { - key: '__pullSteps', - value: function __pullSteps() { - var stream = this._controlledReadableStream; - - if (this._queue.length > 0) { - var chunk = DequeueValue(this); - - if (this._closeRequested === true && this._queue.length === 0) { - ReadableStreamClose(stream); - } else { - ReadableStreamDefaultControllerCallPullIfNeeded(this); - } - - return Promise.resolve(CreateIterResultObject(chunk, false)); - } - - var pendingPromise = ReadableStreamAddReadRequest(stream); - ReadableStreamDefaultControllerCallPullIfNeeded(this); - return pendingPromise; - } - }, { - key: 'desiredSize', - get: function get() { - if (IsReadableStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('desiredSize'); - } - - return ReadableStreamDefaultControllerGetDesiredSize(this); - } - }]); - - return ReadableStreamDefaultController; - }(); - - function IsReadableStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) { - return false; - } - - return true; - } - - function ReadableStreamDefaultControllerCallPullIfNeeded(controller) { - var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller); - - if (shouldPull === false) { - return undefined; - } - - if (controller._pulling === true) { - controller._pullAgain = true; - return undefined; - } - - assert(controller._pullAgain === false); - controller._pulling = true; - var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]); - pullPromise.then(function () { - controller._pulling = false; - - if (controller._pullAgain === true) { - controller._pullAgain = false; - return ReadableStreamDefaultControllerCallPullIfNeeded(controller); - } - - return undefined; - }, function (e) { - ReadableStreamDefaultControllerErrorIfNeeded(controller, e); - })["catch"](rethrowAssertionErrorRejection); - return undefined; - } - - function ReadableStreamDefaultControllerShouldCallPull(controller) { - var stream = controller._controlledReadableStream; - - if (stream._state === 'closed' || stream._state === 'errored') { - return false; - } - - if (controller._closeRequested === true) { - return false; - } - - if (controller._started === false) { - return false; - } - - if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { - return true; - } - - var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller); - - if (desiredSize > 0) { - return true; - } - - return false; - } - - function ReadableStreamDefaultControllerClose(controller) { - var stream = controller._controlledReadableStream; - assert(controller._closeRequested === false); - assert(stream._state === 'readable'); - controller._closeRequested = true; - - if (controller._queue.length === 0) { - ReadableStreamClose(stream); - } - } - - function ReadableStreamDefaultControllerEnqueue(controller, chunk) { - var stream = controller._controlledReadableStream; - assert(controller._closeRequested === false); - assert(stream._state === 'readable'); - - if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { - ReadableStreamFulfillReadRequest(stream, chunk, false); - } else { - var chunkSize = 1; - - if (controller._strategySize !== undefined) { - var strategySize = controller._strategySize; - - try { - chunkSize = strategySize(chunk); - } catch (chunkSizeE) { - ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE); - throw chunkSizeE; - } - } - - try { - EnqueueValueWithSize(controller, chunk, chunkSize); - } catch (enqueueE) { - ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE); - throw enqueueE; - } - } - - ReadableStreamDefaultControllerCallPullIfNeeded(controller); - return undefined; - } - - function ReadableStreamDefaultControllerError(controller, e) { - var stream = controller._controlledReadableStream; - assert(stream._state === 'readable'); - ResetQueue(controller); - ReadableStreamError(stream, e); - } - - function ReadableStreamDefaultControllerErrorIfNeeded(controller, e) { - if (controller._controlledReadableStream._state === 'readable') { - ReadableStreamDefaultControllerError(controller, e); - } - } - - function ReadableStreamDefaultControllerGetDesiredSize(controller) { - var stream = controller._controlledReadableStream; - var state = stream._state; - - if (state === 'errored') { - return null; - } - - if (state === 'closed') { - return 0; - } - - return controller._strategyHWM - controller._queueTotalSize; - } - - var ReadableStreamBYOBRequest = function () { - function ReadableStreamBYOBRequest(controller, view) { - _classCallCheck(this, ReadableStreamBYOBRequest); - - this._associatedReadableByteStreamController = controller; - this._view = view; - } - - _createClass(ReadableStreamBYOBRequest, [{ - key: 'respond', - value: function respond(bytesWritten) { - if (IsReadableStreamBYOBRequest(this) === false) { - throw byobRequestBrandCheckException('respond'); - } - - if (this._associatedReadableByteStreamController === undefined) { - throw new TypeError('This BYOB request has been invalidated'); - } - - ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten); - } - }, { - key: 'respondWithNewView', - value: function respondWithNewView(view) { - if (IsReadableStreamBYOBRequest(this) === false) { - throw byobRequestBrandCheckException('respond'); - } - - if (this._associatedReadableByteStreamController === undefined) { - throw new TypeError('This BYOB request has been invalidated'); - } - - if (!ArrayBuffer.isView(view)) { - throw new TypeError('You can only respond with array buffer views'); - } - - ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view); - } - }, { - key: 'view', - get: function get() { - return this._view; - } - }]); - - return ReadableStreamBYOBRequest; - }(); - - var ReadableByteStreamController = function () { - function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) { - _classCallCheck(this, ReadableByteStreamController); - - if (IsReadableStream(stream) === false) { - throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source'); - } - - if (stream._readableStreamController !== undefined) { - throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source'); - } - - this._controlledReadableStream = stream; - this._underlyingByteSource = underlyingByteSource; - this._pullAgain = false; - this._pulling = false; - ReadableByteStreamControllerClearPendingPullIntos(this); - this._queue = this._queueTotalSize = undefined; - ResetQueue(this); - this._closeRequested = false; - this._started = false; - this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark); - var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize; - - if (autoAllocateChunkSize !== undefined) { - if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) { - throw new RangeError('autoAllocateChunkSize must be a positive integer'); - } - } - - this._autoAllocateChunkSize = autoAllocateChunkSize; - this._pendingPullIntos = []; - var controller = this; - var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]); - Promise.resolve(startResult).then(function () { - controller._started = true; - assert(controller._pulling === false); - assert(controller._pullAgain === false); - ReadableByteStreamControllerCallPullIfNeeded(controller); - }, function (r) { - if (stream._state === 'readable') { - ReadableByteStreamControllerError(controller, r); - } - })["catch"](rethrowAssertionErrorRejection); - } - - _createClass(ReadableByteStreamController, [{ - key: 'close', - value: function close() { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('close'); - } - - if (this._closeRequested === true) { - throw new TypeError('The stream has already been closed; do not close it again!'); - } - - var state = this._controlledReadableStream._state; - - if (state !== 'readable') { - throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed'); - } - - ReadableByteStreamControllerClose(this); - } - }, { - key: 'enqueue', - value: function enqueue(chunk) { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('enqueue'); - } - - if (this._closeRequested === true) { - throw new TypeError('stream is closed or draining'); - } - - var state = this._controlledReadableStream._state; - - if (state !== 'readable') { - throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to'); - } - - if (!ArrayBuffer.isView(chunk)) { - throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController'); - } - - ReadableByteStreamControllerEnqueue(this, chunk); - } - }, { - key: 'error', - value: function error(e) { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('error'); - } - - var stream = this._controlledReadableStream; - - if (stream._state !== 'readable') { - throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored'); - } - - ReadableByteStreamControllerError(this, e); - } - }, { - key: '__cancelSteps', - value: function __cancelSteps(reason) { - if (this._pendingPullIntos.length > 0) { - var firstDescriptor = this._pendingPullIntos[0]; - firstDescriptor.bytesFilled = 0; - } - - ResetQueue(this); - return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]); - } - }, { - key: '__pullSteps', - value: function __pullSteps() { - var stream = this._controlledReadableStream; - assert(ReadableStreamHasDefaultReader(stream) === true); - - if (this._queueTotalSize > 0) { - assert(ReadableStreamGetNumReadRequests(stream) === 0); - - var entry = this._queue.shift(); - - this._queueTotalSize -= entry.byteLength; - ReadableByteStreamControllerHandleQueueDrain(this); - var view = void 0; - - try { - view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength); - } catch (viewE) { - return Promise.reject(viewE); - } - - return Promise.resolve(CreateIterResultObject(view, false)); - } - - var autoAllocateChunkSize = this._autoAllocateChunkSize; - - if (autoAllocateChunkSize !== undefined) { - var buffer = void 0; - - try { - buffer = new ArrayBuffer(autoAllocateChunkSize); - } catch (bufferE) { - return Promise.reject(bufferE); - } - - var pullIntoDescriptor = { - buffer: buffer, - byteOffset: 0, - byteLength: autoAllocateChunkSize, - bytesFilled: 0, - elementSize: 1, - ctor: Uint8Array, - readerType: 'default' - }; - - this._pendingPullIntos.push(pullIntoDescriptor); - } - - var promise = ReadableStreamAddReadRequest(stream); - ReadableByteStreamControllerCallPullIfNeeded(this); - return promise; - } - }, { - key: 'byobRequest', - get: function get() { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('byobRequest'); - } - - if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) { - var firstDescriptor = this._pendingPullIntos[0]; - var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled); - this._byobRequest = new ReadableStreamBYOBRequest(this, view); - } - - return this._byobRequest; - } - }, { - key: 'desiredSize', - get: function get() { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('desiredSize'); - } - - return ReadableByteStreamControllerGetDesiredSize(this); - } - }]); - - return ReadableByteStreamController; - }(); - - function IsReadableByteStreamController(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) { - return false; - } - - return true; - } - - function IsReadableStreamBYOBRequest(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) { - return false; - } - - return true; - } - - function ReadableByteStreamControllerCallPullIfNeeded(controller) { - var shouldPull = ReadableByteStreamControllerShouldCallPull(controller); - - if (shouldPull === false) { - return undefined; - } - - if (controller._pulling === true) { - controller._pullAgain = true; - return undefined; - } - - assert(controller._pullAgain === false); - controller._pulling = true; - var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]); - pullPromise.then(function () { - controller._pulling = false; - - if (controller._pullAgain === true) { - controller._pullAgain = false; - ReadableByteStreamControllerCallPullIfNeeded(controller); - } - }, function (e) { - if (controller._controlledReadableStream._state === 'readable') { - ReadableByteStreamControllerError(controller, e); - } - })["catch"](rethrowAssertionErrorRejection); - return undefined; - } - - function ReadableByteStreamControllerClearPendingPullIntos(controller) { - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - controller._pendingPullIntos = []; - } - - function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) { - assert(stream._state !== 'errored', 'state must not be errored'); - var done = false; - - if (stream._state === 'closed') { - assert(pullIntoDescriptor.bytesFilled === 0); - done = true; - } - - var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); - - if (pullIntoDescriptor.readerType === 'default') { - ReadableStreamFulfillReadRequest(stream, filledView, done); - } else { - assert(pullIntoDescriptor.readerType === 'byob'); - ReadableStreamFulfillReadIntoRequest(stream, filledView, done); - } - } - - function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) { - var bytesFilled = pullIntoDescriptor.bytesFilled; - var elementSize = pullIntoDescriptor.elementSize; - assert(bytesFilled <= pullIntoDescriptor.byteLength); - assert(bytesFilled % elementSize === 0); - return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize); - } - - function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) { - controller._queue.push({ - buffer: buffer, - byteOffset: byteOffset, - byteLength: byteLength - }); - - controller._queueTotalSize += byteLength; - } - - function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) { - var elementSize = pullIntoDescriptor.elementSize; - var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize; - var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled); - var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy; - var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize; - var totalBytesToCopyRemaining = maxBytesToCopy; - var ready = false; - - if (maxAlignedBytes > currentAlignedBytes) { - totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled; - ready = true; - } - - var queue = controller._queue; - - while (totalBytesToCopyRemaining > 0) { - var headOfQueue = queue[0]; - var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength); - var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; - ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy); - - if (headOfQueue.byteLength === bytesToCopy) { - queue.shift(); - } else { - headOfQueue.byteOffset += bytesToCopy; - headOfQueue.byteLength -= bytesToCopy; - } - - controller._queueTotalSize -= bytesToCopy; - ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor); - totalBytesToCopyRemaining -= bytesToCopy; - } - - if (ready === false) { - assert(controller._queueTotalSize === 0, 'queue must be empty'); - assert(pullIntoDescriptor.bytesFilled > 0); - assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize); - } - - return ready; - } - - function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) { - assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor); - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - pullIntoDescriptor.bytesFilled += size; - } - - function ReadableByteStreamControllerHandleQueueDrain(controller) { - assert(controller._controlledReadableStream._state === 'readable'); - - if (controller._queueTotalSize === 0 && controller._closeRequested === true) { - ReadableStreamClose(controller._controlledReadableStream); - } else { - ReadableByteStreamControllerCallPullIfNeeded(controller); - } - } - - function ReadableByteStreamControllerInvalidateBYOBRequest(controller) { - if (controller._byobRequest === undefined) { - return; - } - - controller._byobRequest._associatedReadableByteStreamController = undefined; - controller._byobRequest._view = undefined; - controller._byobRequest = undefined; - } - - function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) { - assert(controller._closeRequested === false); - - while (controller._pendingPullIntos.length > 0) { - if (controller._queueTotalSize === 0) { - return; - } - - var pullIntoDescriptor = controller._pendingPullIntos[0]; - - if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) { - ReadableByteStreamControllerShiftPendingPullInto(controller); - ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor); - } - } - } - - function ReadableByteStreamControllerPullInto(controller, view) { - var stream = controller._controlledReadableStream; - var elementSize = 1; - - if (view.constructor !== DataView) { - elementSize = view.constructor.BYTES_PER_ELEMENT; - } - - var ctor = view.constructor; - var pullIntoDescriptor = { - buffer: view.buffer, - byteOffset: view.byteOffset, - byteLength: view.byteLength, - bytesFilled: 0, - elementSize: elementSize, - ctor: ctor, - readerType: 'byob' - }; - - if (controller._pendingPullIntos.length > 0) { - pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); - - controller._pendingPullIntos.push(pullIntoDescriptor); - - return ReadableStreamAddReadIntoRequest(stream); - } - - if (stream._state === 'closed') { - var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0); - return Promise.resolve(CreateIterResultObject(emptyView, true)); - } - - if (controller._queueTotalSize > 0) { - if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) { - var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); - ReadableByteStreamControllerHandleQueueDrain(controller); - return Promise.resolve(CreateIterResultObject(filledView, false)); - } - - if (controller._closeRequested === true) { - var e = new TypeError('Insufficient bytes to fill elements in the given buffer'); - ReadableByteStreamControllerError(controller, e); - return Promise.reject(e); - } - } - - pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); - - controller._pendingPullIntos.push(pullIntoDescriptor); - - var promise = ReadableStreamAddReadIntoRequest(stream); - ReadableByteStreamControllerCallPullIfNeeded(controller); - return promise; - } - - function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) { - firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer); - assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0'); - var stream = controller._controlledReadableStream; - - if (ReadableStreamHasBYOBReader(stream) === true) { - while (ReadableStreamGetNumReadIntoRequests(stream) > 0) { - var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller); - ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor); - } - } - } - - function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) { - if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) { - throw new RangeError('bytesWritten out of range'); - } - - ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor); - - if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) { - return; - } - - ReadableByteStreamControllerShiftPendingPullInto(controller); - var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize; - - if (remainderSize > 0) { - var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; - var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end); - ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength); - } - - pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); - pullIntoDescriptor.bytesFilled -= remainderSize; - ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor); - ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); - } - - function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) { - var firstDescriptor = controller._pendingPullIntos[0]; - var stream = controller._controlledReadableStream; - - if (stream._state === 'closed') { - if (bytesWritten !== 0) { - throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream'); - } - - ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor); - } else { - assert(stream._state === 'readable'); - ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor); - } - } - - function ReadableByteStreamControllerShiftPendingPullInto(controller) { - var descriptor = controller._pendingPullIntos.shift(); - - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - return descriptor; - } - - function ReadableByteStreamControllerShouldCallPull(controller) { - var stream = controller._controlledReadableStream; - - if (stream._state !== 'readable') { - return false; - } - - if (controller._closeRequested === true) { - return false; - } - - if (controller._started === false) { - return false; - } - - if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { - return true; - } - - if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) { - return true; - } - - if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) { - return true; - } - - return false; - } - - function ReadableByteStreamControllerClose(controller) { - var stream = controller._controlledReadableStream; - assert(controller._closeRequested === false); - assert(stream._state === 'readable'); - - if (controller._queueTotalSize > 0) { - controller._closeRequested = true; - return; - } - - if (controller._pendingPullIntos.length > 0) { - var firstPendingPullInto = controller._pendingPullIntos[0]; - - if (firstPendingPullInto.bytesFilled > 0) { - var e = new TypeError('Insufficient bytes to fill elements in the given buffer'); - ReadableByteStreamControllerError(controller, e); - throw e; - } - } - - ReadableStreamClose(stream); - } - - function ReadableByteStreamControllerEnqueue(controller, chunk) { - var stream = controller._controlledReadableStream; - assert(controller._closeRequested === false); - assert(stream._state === 'readable'); - var buffer = chunk.buffer; - var byteOffset = chunk.byteOffset; - var byteLength = chunk.byteLength; - var transferredBuffer = TransferArrayBuffer(buffer); - - if (ReadableStreamHasDefaultReader(stream) === true) { - if (ReadableStreamGetNumReadRequests(stream) === 0) { - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - } else { - assert(controller._queue.length === 0); - var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength); - ReadableStreamFulfillReadRequest(stream, transferredView, false); - } - } else if (ReadableStreamHasBYOBReader(stream) === true) { - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); - } else { - assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked'); - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - } - } - - function ReadableByteStreamControllerError(controller, e) { - var stream = controller._controlledReadableStream; - assert(stream._state === 'readable'); - ReadableByteStreamControllerClearPendingPullIntos(controller); - ResetQueue(controller); - ReadableStreamError(stream, e); - } - - function ReadableByteStreamControllerGetDesiredSize(controller) { - var stream = controller._controlledReadableStream; - var state = stream._state; - - if (state === 'errored') { - return null; - } - - if (state === 'closed') { - return 0; - } - - return controller._strategyHWM - controller._queueTotalSize; - } - - function ReadableByteStreamControllerRespond(controller, bytesWritten) { - bytesWritten = Number(bytesWritten); - - if (IsFiniteNonNegativeNumber(bytesWritten) === false) { - throw new RangeError('bytesWritten must be a finite'); - } - - assert(controller._pendingPullIntos.length > 0); - ReadableByteStreamControllerRespondInternal(controller, bytesWritten); - } - - function ReadableByteStreamControllerRespondWithNewView(controller, view) { - assert(controller._pendingPullIntos.length > 0); - var firstDescriptor = controller._pendingPullIntos[0]; - - if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) { - throw new RangeError('The region specified by view does not match byobRequest'); - } - - if (firstDescriptor.byteLength !== view.byteLength) { - throw new RangeError('The buffer of view has different capacity than byobRequest'); - } - - firstDescriptor.buffer = view.buffer; - ReadableByteStreamControllerRespondInternal(controller, view.byteLength); - } - - function streamBrandCheckException(name) { - return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream'); - } - - function readerLockException(name) { - return new TypeError('Cannot ' + name + ' a stream using a released reader'); - } - - function defaultReaderBrandCheckException(name) { - return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader'); - } - - function defaultReaderClosedPromiseInitialize(reader) { - reader._closedPromise = new Promise(function (resolve, reject) { - reader._closedPromise_resolve = resolve; - reader._closedPromise_reject = reject; - }); - } - - function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) { - reader._closedPromise = Promise.reject(reason); - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - - function defaultReaderClosedPromiseInitializeAsResolved(reader) { - reader._closedPromise = Promise.resolve(undefined); - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - - function defaultReaderClosedPromiseReject(reader, reason) { - assert(reader._closedPromise_resolve !== undefined); - assert(reader._closedPromise_reject !== undefined); - - reader._closedPromise_reject(reason); - - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - - function defaultReaderClosedPromiseResetToRejected(reader, reason) { - assert(reader._closedPromise_resolve === undefined); - assert(reader._closedPromise_reject === undefined); - reader._closedPromise = Promise.reject(reason); - } - - function defaultReaderClosedPromiseResolve(reader) { - assert(reader._closedPromise_resolve !== undefined); - assert(reader._closedPromise_reject !== undefined); - - reader._closedPromise_resolve(undefined); - - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - - function byobReaderBrandCheckException(name) { - return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader'); - } - - function defaultControllerBrandCheckException(name) { - return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController'); - } - - function byobRequestBrandCheckException(name) { - return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest'); - } - - function byteStreamControllerBrandCheckException(name) { - return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController'); - } - - function ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) { - try { - Promise.prototype.then.call(promise, undefined, function () {}); - } catch (e) {} - } -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var transformStream = __w_pdfjs_require__(6); - - var readableStream = __w_pdfjs_require__(4); - - var writableStream = __w_pdfjs_require__(2); - - exports.TransformStream = transformStream.TransformStream; - exports.ReadableStream = readableStream.ReadableStream; - exports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed; - exports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose; - exports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue; - exports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError; - exports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize; - exports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter; - exports.IsWritableStream = writableStream.IsWritableStream; - exports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked; - exports.WritableStream = writableStream.WritableStream; - exports.WritableStreamAbort = writableStream.WritableStreamAbort; - exports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError; - exports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation; - exports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease; - exports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite; -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - var _require = __w_pdfjs_require__(1), - assert = _require.assert; - - var _require2 = __w_pdfjs_require__(0), - InvokeOrNoop = _require2.InvokeOrNoop, - PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback, - PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop, - typeIsObject = _require2.typeIsObject; - - var _require3 = __w_pdfjs_require__(4), - ReadableStream = _require3.ReadableStream, - ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose, - ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue, - ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError, - ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize; - - var _require4 = __w_pdfjs_require__(2), - WritableStream = _require4.WritableStream, - WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError; - - function TransformStreamCloseReadable(transformStream) { - if (transformStream._errored === true) { - throw new TypeError('TransformStream is already errored'); - } - - if (transformStream._readableClosed === true) { - throw new TypeError('Readable side is already closed'); - } - - TransformStreamCloseReadableInternal(transformStream); - } - - function TransformStreamEnqueueToReadable(transformStream, chunk) { - if (transformStream._errored === true) { - throw new TypeError('TransformStream is already errored'); - } - - if (transformStream._readableClosed === true) { - throw new TypeError('Readable side is already closed'); - } - - var controller = transformStream._readableController; - - try { - ReadableStreamDefaultControllerEnqueue(controller, chunk); - } catch (e) { - transformStream._readableClosed = true; - TransformStreamErrorIfNeeded(transformStream, e); - throw transformStream._storedError; - } - - var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller); - var maybeBackpressure = desiredSize <= 0; - - if (maybeBackpressure === true && transformStream._backpressure === false) { - TransformStreamSetBackpressure(transformStream, true); - } - } - - function TransformStreamError(transformStream, e) { - if (transformStream._errored === true) { - throw new TypeError('TransformStream is already errored'); - } - - TransformStreamErrorInternal(transformStream, e); - } - - function TransformStreamCloseReadableInternal(transformStream) { - assert(transformStream._errored === false); - assert(transformStream._readableClosed === false); - - try { - ReadableStreamDefaultControllerClose(transformStream._readableController); - } catch (e) { - assert(false); - } - - transformStream._readableClosed = true; - } - - function TransformStreamErrorIfNeeded(transformStream, e) { - if (transformStream._errored === false) { - TransformStreamErrorInternal(transformStream, e); - } - } - - function TransformStreamErrorInternal(transformStream, e) { - assert(transformStream._errored === false); - transformStream._errored = true; - transformStream._storedError = e; - - if (transformStream._writableDone === false) { - WritableStreamDefaultControllerError(transformStream._writableController, e); - } - - if (transformStream._readableClosed === false) { - ReadableStreamDefaultControllerError(transformStream._readableController, e); - } - } - - function TransformStreamReadableReadyPromise(transformStream) { - assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); - - if (transformStream._backpressure === false) { - return Promise.resolve(); - } - - assert(transformStream._backpressure === true, '_backpressure should have been initialized'); - return transformStream._backpressureChangePromise; - } - - function TransformStreamSetBackpressure(transformStream, backpressure) { - assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed'); - - if (transformStream._backpressureChangePromise !== undefined) { - transformStream._backpressureChangePromise_resolve(backpressure); - } - - transformStream._backpressureChangePromise = new Promise(function (resolve) { - transformStream._backpressureChangePromise_resolve = resolve; - }); - - transformStream._backpressureChangePromise.then(function (resolution) { - assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed'); - }); - - transformStream._backpressure = backpressure; - } - - function TransformStreamDefaultTransform(chunk, transformStreamController) { - var transformStream = transformStreamController._controlledTransformStream; - TransformStreamEnqueueToReadable(transformStream, chunk); - return Promise.resolve(); - } - - function TransformStreamTransform(transformStream, chunk) { - assert(transformStream._errored === false); - assert(transformStream._transforming === false); - assert(transformStream._backpressure === false); - transformStream._transforming = true; - var transformer = transformStream._transformer; - var controller = transformStream._transformStreamController; - var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]); - return transformPromise.then(function () { - transformStream._transforming = false; - return TransformStreamReadableReadyPromise(transformStream); - }, function (e) { - TransformStreamErrorIfNeeded(transformStream, e); - return Promise.reject(e); - }); - } - - function IsTransformStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) { - return false; - } - - return true; - } - - function IsTransformStream(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) { - return false; - } - - return true; - } - - var TransformStreamSink = function () { - function TransformStreamSink(transformStream, startPromise) { - _classCallCheck(this, TransformStreamSink); - - this._transformStream = transformStream; - this._startPromise = startPromise; - } - - _createClass(TransformStreamSink, [{ - key: 'start', - value: function start(c) { - var transformStream = this._transformStream; - transformStream._writableController = c; - return this._startPromise.then(function () { - return TransformStreamReadableReadyPromise(transformStream); - }); - } - }, { - key: 'write', - value: function write(chunk) { - var transformStream = this._transformStream; - return TransformStreamTransform(transformStream, chunk); - } - }, { - key: 'abort', - value: function abort() { - var transformStream = this._transformStream; - transformStream._writableDone = true; - TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted')); - } - }, { - key: 'close', - value: function close() { - var transformStream = this._transformStream; - assert(transformStream._transforming === false); - transformStream._writableDone = true; - var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]); - return flushPromise.then(function () { - if (transformStream._errored === true) { - return Promise.reject(transformStream._storedError); - } - - if (transformStream._readableClosed === false) { - TransformStreamCloseReadableInternal(transformStream); - } - - return Promise.resolve(); - })["catch"](function (r) { - TransformStreamErrorIfNeeded(transformStream, r); - return Promise.reject(transformStream._storedError); - }); - } - }]); - - return TransformStreamSink; - }(); - - var TransformStreamSource = function () { - function TransformStreamSource(transformStream, startPromise) { - _classCallCheck(this, TransformStreamSource); - - this._transformStream = transformStream; - this._startPromise = startPromise; - } - - _createClass(TransformStreamSource, [{ - key: 'start', - value: function start(c) { - var transformStream = this._transformStream; - transformStream._readableController = c; - return this._startPromise.then(function () { - assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); - - if (transformStream._backpressure === true) { - return Promise.resolve(); - } - - assert(transformStream._backpressure === false, '_backpressure should have been initialized'); - return transformStream._backpressureChangePromise; - }); - } - }, { - key: 'pull', - value: function pull() { - var transformStream = this._transformStream; - assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false'); - assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); - TransformStreamSetBackpressure(transformStream, false); - return transformStream._backpressureChangePromise; - } - }, { - key: 'cancel', - value: function cancel() { - var transformStream = this._transformStream; - transformStream._readableClosed = true; - TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled')); - } - }]); - - return TransformStreamSource; - }(); - - var TransformStreamDefaultController = function () { - function TransformStreamDefaultController(transformStream) { - _classCallCheck(this, TransformStreamDefaultController); - - if (IsTransformStream(transformStream) === false) { - throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance'); - } - - if (transformStream._transformStreamController !== undefined) { - throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor'); - } - - this._controlledTransformStream = transformStream; - } - - _createClass(TransformStreamDefaultController, [{ - key: 'enqueue', - value: function enqueue(chunk) { - if (IsTransformStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('enqueue'); - } - - TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk); - } - }, { - key: 'close', - value: function close() { - if (IsTransformStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('close'); - } - - TransformStreamCloseReadable(this._controlledTransformStream); - } - }, { - key: 'error', - value: function error(reason) { - if (IsTransformStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('error'); - } - - TransformStreamError(this._controlledTransformStream, reason); - } - }, { - key: 'desiredSize', - get: function get() { - if (IsTransformStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('desiredSize'); - } - - var transformStream = this._controlledTransformStream; - var readableController = transformStream._readableController; - return ReadableStreamDefaultControllerGetDesiredSize(readableController); - } - }]); - - return TransformStreamDefaultController; - }(); - - var TransformStream = function () { - function TransformStream() { - var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - _classCallCheck(this, TransformStream); - - this._transformer = transformer; - var readableStrategy = transformer.readableStrategy, - writableStrategy = transformer.writableStrategy; - this._transforming = false; - this._errored = false; - this._storedError = undefined; - this._writableController = undefined; - this._readableController = undefined; - this._transformStreamController = undefined; - this._writableDone = false; - this._readableClosed = false; - this._backpressure = undefined; - this._backpressureChangePromise = undefined; - this._backpressureChangePromise_resolve = undefined; - this._transformStreamController = new TransformStreamDefaultController(this); - var startPromise_resolve = void 0; - var startPromise = new Promise(function (resolve) { - startPromise_resolve = resolve; - }); - var source = new TransformStreamSource(this, startPromise); - this._readable = new ReadableStream(source, readableStrategy); - var sink = new TransformStreamSink(this, startPromise); - this._writable = new WritableStream(sink, writableStrategy); - assert(this._writableController !== undefined); - assert(this._readableController !== undefined); - var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController); - TransformStreamSetBackpressure(this, desiredSize <= 0); - var transformStream = this; - var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]); - startPromise_resolve(startResult); - startPromise["catch"](function (e) { - if (transformStream._errored === false) { - transformStream._errored = true; - transformStream._storedError = e; - } - }); - } - - _createClass(TransformStream, [{ - key: 'readable', - get: function get() { - if (IsTransformStream(this) === false) { - throw streamBrandCheckException('readable'); - } - - return this._readable; - } - }, { - key: 'writable', - get: function get() { - if (IsTransformStream(this) === false) { - throw streamBrandCheckException('writable'); - } - - return this._writable; - } - }]); - - return TransformStream; - }(); - - module.exports = { - TransformStream: TransformStream - }; - - function defaultControllerBrandCheckException(name) { - return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController'); - } - - function streamBrandCheckException(name) { - return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream'); - } -}, function (module, exports, __w_pdfjs_require__) { - module.exports = __w_pdfjs_require__(5); -}])); - -/***/ }), -/* 145 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -{ - var isURLSupported = false; - - try { - if (typeof URL === 'function' && _typeof(URL.prototype) === 'object' && 'origin' in URL.prototype) { - var u = new URL('b', 'http://a'); - u.pathname = 'c%20d'; - isURLSupported = u.href === 'http://a/c%20d'; - } - } catch (ex) {} - - if (isURLSupported) { - exports.URL = URL; - } else { - var PolyfillURL = __w_pdfjs_require__(146).URL; - - var OriginalURL = __w_pdfjs_require__(3).URL; - - if (OriginalURL) { - PolyfillURL.createObjectURL = function (blob) { - return OriginalURL.createObjectURL.apply(OriginalURL, arguments); - }; - - PolyfillURL.revokeObjectURL = function (url) { - OriginalURL.revokeObjectURL(url); - }; - } - - exports.URL = PolyfillURL; - } -} - -/***/ }), -/* 146 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -(function URLConstructorClosure() { - 'use strict'; - - var relative = Object.create(null); - relative['ftp'] = 21; - relative['file'] = 0; - relative['gopher'] = 70; - relative['http'] = 80; - relative['https'] = 443; - relative['ws'] = 80; - relative['wss'] = 443; - var relativePathDotMapping = Object.create(null); - relativePathDotMapping['%2e'] = '.'; - relativePathDotMapping['.%2e'] = '..'; - relativePathDotMapping['%2e.'] = '..'; - relativePathDotMapping['%2e%2e'] = '..'; - - function isRelativeScheme(scheme) { - return relative[scheme] !== undefined; - } - - function invalid() { - clear.call(this); - this._isInvalid = true; - } - - function IDNAToASCII(h) { - if (h === '') { - invalid.call(this); - } - - return h.toLowerCase(); - } - - function percentEscape(c) { - var unicode = c.charCodeAt(0); - - if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1) { - return c; - } - - return encodeURIComponent(c); - } - - function percentEscapeQuery(c) { - var unicode = c.charCodeAt(0); - - if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1) { - return c; - } - - return encodeURIComponent(c); - } - - var EOF, - ALPHA = /[a-zA-Z]/, - ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/; - - function parse(input, stateOverride, base) { - function err(message) { - errors.push(message); - } - - var state = stateOverride || 'scheme start', - cursor = 0, - buffer = '', - seenAt = false, - seenBracket = false, - errors = []; - - loop: while ((input[cursor - 1] !== EOF || cursor === 0) && !this._isInvalid) { - var c = input[cursor]; - - switch (state) { - case 'scheme start': - if (c && ALPHA.test(c)) { - buffer += c.toLowerCase(); - state = 'scheme'; - } else if (!stateOverride) { - buffer = ''; - state = 'no scheme'; - continue; - } else { - err('Invalid scheme.'); - break loop; - } - - break; - - case 'scheme': - if (c && ALPHANUMERIC.test(c)) { - buffer += c.toLowerCase(); - } else if (c === ':') { - this._scheme = buffer; - buffer = ''; - - if (stateOverride) { - break loop; - } - - if (isRelativeScheme(this._scheme)) { - this._isRelative = true; - } - - if (this._scheme === 'file') { - state = 'relative'; - } else if (this._isRelative && base && base._scheme === this._scheme) { - state = 'relative or authority'; - } else if (this._isRelative) { - state = 'authority first slash'; - } else { - state = 'scheme data'; - } - } else if (!stateOverride) { - buffer = ''; - cursor = 0; - state = 'no scheme'; - continue; - } else if (c === EOF) { - break loop; - } else { - err('Code point not allowed in scheme: ' + c); - break loop; - } - - break; - - case 'scheme data': - if (c === '?') { - this._query = '?'; - state = 'query'; - } else if (c === '#') { - this._fragment = '#'; - state = 'fragment'; - } else { - if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { - this._schemeData += percentEscape(c); - } - } - - break; - - case 'no scheme': - if (!base || !isRelativeScheme(base._scheme)) { - err('Missing scheme.'); - invalid.call(this); - } else { - state = 'relative'; - continue; - } - - break; - - case 'relative or authority': - if (c === '/' && input[cursor + 1] === '/') { - state = 'authority ignore slashes'; - } else { - err('Expected /, got: ' + c); - state = 'relative'; - continue; - } - - break; - - case 'relative': - this._isRelative = true; - - if (this._scheme !== 'file') { - this._scheme = base._scheme; - } - - if (c === EOF) { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = base._query; - this._username = base._username; - this._password = base._password; - break loop; - } else if (c === '/' || c === '\\') { - if (c === '\\') { - err('\\ is an invalid code point.'); - } - - state = 'relative slash'; - } else if (c === '?') { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = '?'; - this._username = base._username; - this._password = base._password; - state = 'query'; - } else if (c === '#') { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = base._query; - this._fragment = '#'; - this._username = base._username; - this._password = base._password; - state = 'fragment'; - } else { - var nextC = input[cursor + 1]; - var nextNextC = input[cursor + 2]; - - if (this._scheme !== 'file' || !ALPHA.test(c) || nextC !== ':' && nextC !== '|' || nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\' && nextNextC !== '?' && nextNextC !== '#') { - this._host = base._host; - this._port = base._port; - this._username = base._username; - this._password = base._password; - this._path = base._path.slice(); - - this._path.pop(); - } - - state = 'relative path'; - continue; - } - - break; - - case 'relative slash': - if (c === '/' || c === '\\') { - if (c === '\\') { - err('\\ is an invalid code point.'); - } - - if (this._scheme === 'file') { - state = 'file host'; - } else { - state = 'authority ignore slashes'; - } - } else { - if (this._scheme !== 'file') { - this._host = base._host; - this._port = base._port; - this._username = base._username; - this._password = base._password; - } - - state = 'relative path'; - continue; - } - - break; - - case 'authority first slash': - if (c === '/') { - state = 'authority second slash'; - } else { - err('Expected \'/\', got: ' + c); - state = 'authority ignore slashes'; - continue; - } - - break; - - case 'authority second slash': - state = 'authority ignore slashes'; - - if (c !== '/') { - err('Expected \'/\', got: ' + c); - continue; - } - - break; - - case 'authority ignore slashes': - if (c !== '/' && c !== '\\') { - state = 'authority'; - continue; - } else { - err('Expected authority, got: ' + c); - } - - break; - - case 'authority': - if (c === '@') { - if (seenAt) { - err('@ already seen.'); - buffer += '%40'; - } - - seenAt = true; - - for (var i = 0; i < buffer.length; i++) { - var cp = buffer[i]; - - if (cp === '\t' || cp === '\n' || cp === '\r') { - err('Invalid whitespace in authority.'); - continue; - } - - if (cp === ':' && this._password === null) { - this._password = ''; - continue; - } - - var tempC = percentEscape(cp); - - if (this._password !== null) { - this._password += tempC; - } else { - this._username += tempC; - } - } - - buffer = ''; - } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { - cursor -= buffer.length; - buffer = ''; - state = 'host'; - continue; - } else { - buffer += c; - } - - break; - - case 'file host': - if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { - if (buffer.length === 2 && ALPHA.test(buffer[0]) && (buffer[1] === ':' || buffer[1] === '|')) { - state = 'relative path'; - } else if (buffer.length === 0) { - state = 'relative path start'; - } else { - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'relative path start'; - } - - continue; - } else if (c === '\t' || c === '\n' || c === '\r') { - err('Invalid whitespace in file host.'); - } else { - buffer += c; - } - - break; - - case 'host': - case 'hostname': - if (c === ':' && !seenBracket) { - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'port'; - - if (stateOverride === 'hostname') { - break loop; - } - } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'relative path start'; - - if (stateOverride) { - break loop; - } - - continue; - } else if (c !== '\t' && c !== '\n' && c !== '\r') { - if (c === '[') { - seenBracket = true; - } else if (c === ']') { - seenBracket = false; - } - - buffer += c; - } else { - err('Invalid code point in host/hostname: ' + c); - } - - break; - - case 'port': - if (/[0-9]/.test(c)) { - buffer += c; - } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#' || stateOverride) { - if (buffer !== '') { - var temp = parseInt(buffer, 10); - - if (temp !== relative[this._scheme]) { - this._port = temp + ''; - } - - buffer = ''; - } - - if (stateOverride) { - break loop; - } - - state = 'relative path start'; - continue; - } else if (c === '\t' || c === '\n' || c === '\r') { - err('Invalid code point in port: ' + c); - } else { - invalid.call(this); - } - - break; - - case 'relative path start': - if (c === '\\') { - err('\'\\\' not allowed in path.'); - } - - state = 'relative path'; - - if (c !== '/' && c !== '\\') { - continue; - } - - break; - - case 'relative path': - if (c === EOF || c === '/' || c === '\\' || !stateOverride && (c === '?' || c === '#')) { - if (c === '\\') { - err('\\ not allowed in relative path.'); - } - - var tmp; - - if (tmp = relativePathDotMapping[buffer.toLowerCase()]) { - buffer = tmp; - } - - if (buffer === '..') { - this._path.pop(); - - if (c !== '/' && c !== '\\') { - this._path.push(''); - } - } else if (buffer === '.' && c !== '/' && c !== '\\') { - this._path.push(''); - } else if (buffer !== '.') { - if (this._scheme === 'file' && this._path.length === 0 && buffer.length === 2 && ALPHA.test(buffer[0]) && buffer[1] === '|') { - buffer = buffer[0] + ':'; - } - - this._path.push(buffer); - } - - buffer = ''; - - if (c === '?') { - this._query = '?'; - state = 'query'; - } else if (c === '#') { - this._fragment = '#'; - state = 'fragment'; - } - } else if (c !== '\t' && c !== '\n' && c !== '\r') { - buffer += percentEscape(c); - } - - break; - - case 'query': - if (!stateOverride && c === '#') { - this._fragment = '#'; - state = 'fragment'; - } else if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { - this._query += percentEscapeQuery(c); - } - - break; - - case 'fragment': - if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { - this._fragment += c; - } - - break; - } - - cursor++; - } - } - - function clear() { - this._scheme = ''; - this._schemeData = ''; - this._username = ''; - this._password = null; - this._host = ''; - this._port = ''; - this._path = []; - this._query = ''; - this._fragment = ''; - this._isInvalid = false; - this._isRelative = false; - } - - function JURL(url, base) { - if (base !== undefined && !(base instanceof JURL)) { - base = new JURL(String(base)); - } - - this._url = url; - clear.call(this); - var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, ''); - parse.call(this, input, null, base); - } - - JURL.prototype = { - toString: function toString() { - return this.href; - }, - - get href() { - if (this._isInvalid) { - return this._url; - } - - var authority = ''; - - if (this._username !== '' || this._password !== null) { - authority = this._username + (this._password !== null ? ':' + this._password : '') + '@'; - } - - return this.protocol + (this._isRelative ? '//' + authority + this.host : '') + this.pathname + this._query + this._fragment; - }, - - set href(value) { - clear.call(this); - parse.call(this, value); - }, - - get protocol() { - return this._scheme + ':'; - }, - - set protocol(value) { - if (this._isInvalid) { - return; - } - - parse.call(this, value + ':', 'scheme start'); - }, - - get host() { - return this._isInvalid ? '' : this._port ? this._host + ':' + this._port : this._host; - }, - - set host(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - - parse.call(this, value, 'host'); - }, - - get hostname() { - return this._host; - }, - - set hostname(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - - parse.call(this, value, 'hostname'); - }, - - get port() { - return this._port; - }, - - set port(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - - parse.call(this, value, 'port'); - }, - - get pathname() { - return this._isInvalid ? '' : this._isRelative ? '/' + this._path.join('/') : this._schemeData; - }, - - set pathname(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - - this._path = []; - parse.call(this, value, 'relative path start'); - }, - - get search() { - return this._isInvalid || !this._query || this._query === '?' ? '' : this._query; - }, - - set search(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - - this._query = '?'; - - if (value[0] === '?') { - value = value.slice(1); - } - - parse.call(this, value, 'query'); - }, - - get hash() { - return this._isInvalid || !this._fragment || this._fragment === '#' ? '' : this._fragment; - }, - - set hash(value) { - if (this._isInvalid) { - return; - } - - this._fragment = '#'; - - if (value[0] === '#') { - value = value.slice(1); - } - - parse.call(this, value, 'fragment'); - }, - - get origin() { - var host; - - if (this._isInvalid || !this._scheme) { - return ''; - } - - switch (this._scheme) { - case 'data': - case 'file': - case 'javascript': - case 'mailto': - return 'null'; - - case 'blob': - try { - return new JURL(this._schemeData).origin || 'null'; - } catch (_) {} - - return 'null'; - } - - host = this.host; - - if (!host) { - return ''; - } - - return this._scheme + '://' + host; - } - - }; - exports.URL = JURL; -})(); - -/***/ }), -/* 147 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); +exports.build = exports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0; exports.getDocument = getDocument; exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory; -exports.build = exports.version = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = void 0; - -var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148)); +exports.version = void 0; var _util = __w_pdfjs_require__(1); -var _display_utils = __w_pdfjs_require__(151); +var _annotation_storage = __w_pdfjs_require__(130); -var _font_loader = __w_pdfjs_require__(152); +var _display_utils = __w_pdfjs_require__(133); -var _api_compatibility = __w_pdfjs_require__(153); +var _font_loader = __w_pdfjs_require__(136); -var _canvas = __w_pdfjs_require__(154); +var _canvas = __w_pdfjs_require__(137); -var _global_scope = _interopRequireDefault(__w_pdfjs_require__(3)); +var _worker_options = __w_pdfjs_require__(140); -var _worker_options = __w_pdfjs_require__(156); +var _is_node = __w_pdfjs_require__(3); -var _message_handler = __w_pdfjs_require__(157); +var _message_handler = __w_pdfjs_require__(141); -var _metadata = __w_pdfjs_require__(158); +var _metadata = __w_pdfjs_require__(142); -var _transport_stream = __w_pdfjs_require__(160); +var _optional_content_config = __w_pdfjs_require__(143); -var _webgl = __w_pdfjs_require__(161); +var _transport_stream = __w_pdfjs_require__(144); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +var _xfa_text = __w_pdfjs_require__(145); -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } +function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); } -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } +function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; } -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } +function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } +function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } -function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } +function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; } -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } +function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); } -function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } +function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); } -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } +function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; } -function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } +function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } } -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } +function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, "get"); return _classApplyDescriptorGet(receiver, descriptor); } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _classCheckPrivateStaticFieldDescriptor(descriptor, action) { if (descriptor === undefined) { throw new TypeError("attempted to " + action + " private static field before its declaration"); } } -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } +function _classCheckPrivateStaticAccess(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError("Private static access of wrong provenance"); } } -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; } -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } +const DEFAULT_RANGE_CHUNK_SIZE = 65536; +const RENDERING_CANCELLED_TIMEOUT = 100; +let DefaultCanvasFactory = _display_utils.DOMCanvasFactory; +exports.DefaultCanvasFactory = DefaultCanvasFactory; +let DefaultCMapReaderFactory = _display_utils.DOMCMapReaderFactory; +exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory; +let DefaultStandardFontDataFactory = _display_utils.DOMStandardFontDataFactory; +exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory; -var DEFAULT_RANGE_CHUNK_SIZE = 65536; -var isWorkerDisabled = false; -var fallbackWorkerSrc; -var fakeWorkerFilesLoader = null; -{ - var useRequireEnsure = false; +if (_is_node.isNodeJS) { + const { + NodeCanvasFactory, + NodeCMapReaderFactory, + NodeStandardFontDataFactory + } = __w_pdfjs_require__(146); - if (typeof window === 'undefined') { - isWorkerDisabled = true; - - if (typeof require.ensure === 'undefined') { - require.ensure = require('node-ensure'); - } - - useRequireEnsure = true; - } else if (typeof require !== 'undefined' && typeof require.ensure === 'function') { - useRequireEnsure = true; - } - - if (typeof requirejs !== 'undefined' && requirejs.toUrl) { - fallbackWorkerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js'); - } - - var dynamicLoaderSupported = typeof requirejs !== 'undefined' && requirejs.load; - fakeWorkerFilesLoader = useRequireEnsure ? function () { - return new Promise(function (resolve, reject) { - require.ensure([], function () { - try { - var worker; - worker = require('./pdf.worker.js'); - resolve(worker.WorkerMessageHandler); - } catch (ex) { - reject(ex); - } - }, reject, 'pdfjsWorker'); - }); - } : dynamicLoaderSupported ? function () { - return new Promise(function (resolve, reject) { - requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) { - try { - resolve(worker.WorkerMessageHandler); - } catch (ex) { - reject(ex); - } - }, reject); - }); - } : null; - - if (!fallbackWorkerSrc && (typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object' && 'currentScript' in document) { - var pdfjsFilePath = document.currentScript && document.currentScript.src; - - if (pdfjsFilePath) { - fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, '.worker$1$2'); - } - } + exports.DefaultCanvasFactory = DefaultCanvasFactory = NodeCanvasFactory; + exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory = NodeCMapReaderFactory; + exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory = NodeStandardFontDataFactory; } -var createPDFNetworkStream; + +let createPDFNetworkStream; function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) { createPDFNetworkStream = pdfNetworkStreamFactory; } function getDocument(src) { - var task = new PDFDocumentLoadingTask(); - var source; + const task = new PDFDocumentLoadingTask(); + let source; - if (typeof src === 'string') { + if (typeof src === "string" || src instanceof URL) { source = { url: src }; @@ -9908,93 +4535,132 @@ function getDocument(src) { range: src }; } else { - if (_typeof(src) !== 'object') { - throw new Error('Invalid parameter in getDocument, ' + 'need either Uint8Array, string or a parameter object'); + if (typeof src !== "object") { + throw new Error("Invalid parameter in getDocument, " + "need either string, URL, TypedArray, or parameter object."); } if (!src.url && !src.data && !src.range) { - throw new Error('Invalid parameter object: need either .data, .range or .url'); + throw new Error("Invalid parameter object: need either .data, .range or .url"); } source = src; } - var params = Object.create(null); - var rangeTransport = null, + const params = Object.create(null); + let rangeTransport = null, worker = null; - for (var key in source) { - if (key === 'url' && typeof window !== 'undefined') { - params[key] = new _util.URL(source[key], window.location).href; - continue; - } else if (key === 'range') { - rangeTransport = source[key]; - continue; - } else if (key === 'worker') { - worker = source[key]; - continue; - } else if (key === 'data' && !(source[key] instanceof Uint8Array)) { - var pdfBytes = source[key]; + for (const key in source) { + const value = source[key]; - if (typeof pdfBytes === 'string') { - params[key] = (0, _util.stringToBytes)(pdfBytes); - } else if (_typeof(pdfBytes) === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) { - params[key] = new Uint8Array(pdfBytes); - } else if ((0, _util.isArrayBuffer)(pdfBytes)) { - params[key] = new Uint8Array(pdfBytes); - } else { - throw new Error('Invalid PDF binary data: either typed array, ' + 'string or array-like object is expected in the ' + 'data property.'); - } + switch (key) { + case "url": + if (typeof window !== "undefined") { + try { + params[key] = new URL(value, window.location).href; + continue; + } catch (ex) { + (0, _util.warn)(`Cannot create valid URL: "${ex}".`); + } + } else if (typeof value === "string" || value instanceof URL) { + params[key] = value.toString(); + continue; + } - continue; + throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property."); + + case "range": + rangeTransport = value; + continue; + + case "worker": + worker = value; + continue; + + case "data": + if (_is_node.isNodeJS && typeof Buffer !== "undefined" && value instanceof Buffer) { + params[key] = new Uint8Array(value); + } else if (value instanceof Uint8Array) { + break; + } else if (typeof value === "string") { + params[key] = (0, _util.stringToBytes)(value); + } else if (typeof value === "object" && value !== null && !isNaN(value.length)) { + params[key] = new Uint8Array(value); + } else if ((0, _util.isArrayBuffer)(value)) { + params[key] = new Uint8Array(value); + } else { + throw new Error("Invalid PDF binary data: either TypedArray, " + "string, or array-like object is expected in the data property."); + } + + continue; } - params[key] = source[key]; + params[key] = value; } - params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE; - params.CMapReaderFactory = params.CMapReaderFactory || _display_utils.DOMCMapReaderFactory; + params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory; + params.StandardFontDataFactory = params.StandardFontDataFactory || DefaultStandardFontDataFactory; params.ignoreErrors = params.stopAtErrors !== true; + params.fontExtraProperties = params.fontExtraProperties === true; params.pdfBug = params.pdfBug === true; - var NativeImageDecoderValues = Object.values(_util.NativeImageDecoding); + params.enableXfa = params.enableXfa === true; - if (params.nativeImageDecoderSupport === undefined || !NativeImageDecoderValues.includes(params.nativeImageDecoderSupport)) { - params.nativeImageDecoderSupport = _api_compatibility.apiCompatibilityParams.nativeImageDecoderSupport || _util.NativeImageDecoding.DECODE; + if (!Number.isInteger(params.rangeChunkSize) || params.rangeChunkSize < 1) { + params.rangeChunkSize = DEFAULT_RANGE_CHUNK_SIZE; } - if (!Number.isInteger(params.maxImageSize)) { + if (typeof params.docBaseUrl !== "string" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) { + params.docBaseUrl = null; + } + + if (!Number.isInteger(params.maxImageSize) || params.maxImageSize < -1) { params.maxImageSize = -1; } - if (typeof params.isEvalSupported !== 'boolean') { + if (typeof params.cMapUrl !== "string") { + params.cMapUrl = null; + } + + if (typeof params.standardFontDataUrl !== "string") { + params.standardFontDataUrl = null; + } + + if (typeof params.useWorkerFetch !== "boolean") { + params.useWorkerFetch = params.CMapReaderFactory === _display_utils.DOMCMapReaderFactory && params.StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory; + } + + if (typeof params.isEvalSupported !== "boolean") { params.isEvalSupported = true; } - if (typeof params.disableFontFace !== 'boolean') { - params.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || false; + if (typeof params.disableFontFace !== "boolean") { + params.disableFontFace = _is_node.isNodeJS; } - if (typeof params.disableRange !== 'boolean') { + if (typeof params.useSystemFonts !== "boolean") { + params.useSystemFonts = !_is_node.isNodeJS && !params.disableFontFace; + } + + if (typeof params.ownerDocument !== "object" || params.ownerDocument === null) { + params.ownerDocument = globalThis.document; + } + + if (typeof params.disableRange !== "boolean") { params.disableRange = false; } - if (typeof params.disableStream !== 'boolean') { + if (typeof params.disableStream !== "boolean") { params.disableStream = false; } - if (typeof params.disableAutoFetch !== 'boolean') { + if (typeof params.disableAutoFetch !== "boolean") { params.disableAutoFetch = false; } - if (typeof params.disableCreateObjectURL !== 'boolean') { - params.disableCreateObjectURL = _api_compatibility.apiCompatibilityParams.disableCreateObjectURL || false; - } - (0, _util.setVerbosityLevel)(params.verbosity); if (!worker) { - var workerParams = { - postMessageTransfers: params.postMessageTransfers, + const workerParams = { verbosity: params.verbosity, port: _worker_options.GlobalWorkerOptions.workerPort }; @@ -10002,24 +4668,23 @@ function getDocument(src) { task._worker = worker; } - var docId = task.docId; + const docId = task.docId; worker.promise.then(function () { if (task.destroyed) { - throw new Error('Loading aborted'); + throw new Error("Loading aborted"); } - return _fetchDocument(worker, params, rangeTransport, docId).then(function (workerId) { - if (task.destroyed) { - throw new Error('Loading aborted'); - } + const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId); - var networkStream; + const networkStreamPromise = new Promise(function (resolve) { + let networkStream; if (rangeTransport) { networkStream = new _transport_stream.PDFDataTransportStream({ length: params.length, initialData: params.initialData, progressiveDone: params.progressiveDone, + contentDispositionFilename: params.contentDispositionFilename, disableRange: params.disableRange, disableStream: params.disableStream }, rangeTransport); @@ -10035,30 +4700,39 @@ function getDocument(src) { }); } - var messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port); - messageHandler.postMessageTransfers = worker.postMessageTransfers; - var transport = new WorkerTransport(messageHandler, task, networkStream, params); - task._transport = transport; - messageHandler.send('Ready', null); + resolve(networkStream); }); - })["catch"](task._capability.reject); + return Promise.all([workerIdPromise, networkStreamPromise]).then(function (_ref) { + let [workerId, networkStream] = _ref; + + if (task.destroyed) { + throw new Error("Loading aborted"); + } + + const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port); + const transport = new WorkerTransport(messageHandler, task, networkStream, params); + task._transport = transport; + messageHandler.send("Ready", null); + }); + }).catch(task._capability.reject); return task; } -function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { +async function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { if (worker.destroyed) { - return Promise.reject(new Error('Worker was destroyed')); + throw new Error("Worker was destroyed"); } if (pdfDataRangeTransport) { source.length = pdfDataRangeTransport.length; source.initialData = pdfDataRangeTransport.initialData; source.progressiveDone = pdfDataRangeTransport.progressiveDone; + source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename; } - return worker.messageHandler.sendWithPromise('GetDocRequest', { - docId: docId, - apiVersion: '2.2.228', + const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", { + docId, + apiVersion: '2.16.105', source: { data: source.data, url: source.url, @@ -10069,87 +4743,75 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { }, maxImageSize: source.maxImageSize, disableFontFace: source.disableFontFace, - disableCreateObjectURL: source.disableCreateObjectURL, - postMessageTransfers: worker.postMessageTransfers, docBaseUrl: source.docBaseUrl, - nativeImageDecoderSupport: source.nativeImageDecoderSupport, ignoreErrors: source.ignoreErrors, - isEvalSupported: source.isEvalSupported - }).then(function (workerId) { - if (worker.destroyed) { - throw new Error('Worker was destroyed'); - } - - return workerId; + isEvalSupported: source.isEvalSupported, + fontExtraProperties: source.fontExtraProperties, + enableXfa: source.enableXfa, + useSystemFonts: source.useSystemFonts, + cMapUrl: source.useWorkerFetch ? source.cMapUrl : null, + standardFontDataUrl: source.useWorkerFetch ? source.standardFontDataUrl : null }); + + if (source.data) { + source.data = null; + } + + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + + return workerId; } -var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() { - var nextDocumentId = 0; +class PDFDocumentLoadingTask { + constructor() { + var _PDFDocumentLoadingTa, _PDFDocumentLoadingTa2; - var PDFDocumentLoadingTask = - /*#__PURE__*/ - function () { - function PDFDocumentLoadingTask() { - _classCallCheck(this, PDFDocumentLoadingTask); + this._capability = (0, _util.createPromiseCapability)(); + this._transport = null; + this._worker = null; + this.docId = `d${(_classStaticPrivateFieldSpecSet(PDFDocumentLoadingTask, PDFDocumentLoadingTask, _docId, (_PDFDocumentLoadingTa = _classStaticPrivateFieldSpecGet(PDFDocumentLoadingTask, PDFDocumentLoadingTask, _docId), _PDFDocumentLoadingTa2 = _PDFDocumentLoadingTa++, _PDFDocumentLoadingTa)), _PDFDocumentLoadingTa2)}`; + this.destroyed = false; + this.onPassword = null; + this.onProgress = null; + this.onUnsupportedFeature = null; + } + + get promise() { + return this._capability.promise; + } + + async destroy() { + var _this$_transport; + + this.destroyed = true; + await ((_this$_transport = this._transport) === null || _this$_transport === void 0 ? void 0 : _this$_transport.destroy()); + this._transport = null; + + if (this._worker) { + this._worker.destroy(); - this._capability = (0, _util.createPromiseCapability)(); - this._transport = null; this._worker = null; - this.docId = 'd' + nextDocumentId++; - this.destroyed = false; - this.onPassword = null; - this.onProgress = null; - this.onUnsupportedFeature = null; } + } - _createClass(PDFDocumentLoadingTask, [{ - key: "destroy", - value: function destroy() { - var _this = this; +} - this.destroyed = true; - var transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy(); - return transportDestroyed.then(function () { - _this._transport = null; - - if (_this._worker) { - _this._worker.destroy(); - - _this._worker = null; - } - }); - } - }, { - key: "then", - value: function then(onFulfilled, onRejected) { - (0, _display_utils.deprecated)('PDFDocumentLoadingTask.then method, ' + 'use the `promise` getter instead.'); - return this.promise.then.apply(this.promise, arguments); - } - }, { - key: "promise", - get: function get() { - return this._capability.promise; - } - }]); - - return PDFDocumentLoadingTask; - }(); - - return PDFDocumentLoadingTask; -}(); - -var PDFDataRangeTransport = -/*#__PURE__*/ -function () { - function PDFDataRangeTransport(length, initialData) { - var progressiveDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - _classCallCheck(this, PDFDataRangeTransport); +exports.PDFDocumentLoadingTask = PDFDocumentLoadingTask; +var _docId = { + writable: true, + value: 0 +}; +class PDFDataRangeTransport { + constructor(length, initialData) { + let progressiveDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + let contentDispositionFilename = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; this.length = length; this.initialData = initialData; this.progressiveDone = progressiveDone; + this.contentDispositionFilename = contentDispositionFilename; this._rangeListeners = []; this._progressListeners = []; this._progressiveReadListeners = []; @@ -10157,3035 +4819,4034 @@ function () { this._readyCapability = (0, _util.createPromiseCapability)(); } - _createClass(PDFDataRangeTransport, [{ - key: "addRangeListener", - value: function addRangeListener(listener) { - this._rangeListeners.push(listener); - } - }, { - key: "addProgressListener", - value: function addProgressListener(listener) { - this._progressListeners.push(listener); - } - }, { - key: "addProgressiveReadListener", - value: function addProgressiveReadListener(listener) { - this._progressiveReadListeners.push(listener); - } - }, { - key: "addProgressiveDoneListener", - value: function addProgressiveDoneListener(listener) { - this._progressiveDoneListeners.push(listener); - } - }, { - key: "onDataRange", - value: function onDataRange(begin, chunk) { - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; + addRangeListener(listener) { + this._rangeListeners.push(listener); + } - try { - for (var _iterator = this._rangeListeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var listener = _step.value; - listener(begin, chunk); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator["return"] != null) { - _iterator["return"](); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } + addProgressListener(listener) { + this._progressListeners.push(listener); + } + + addProgressiveReadListener(listener) { + this._progressiveReadListeners.push(listener); + } + + addProgressiveDoneListener(listener) { + this._progressiveDoneListeners.push(listener); + } + + onDataRange(begin, chunk) { + for (const listener of this._rangeListeners) { + listener(begin, chunk); + } + } + + onDataProgress(loaded, total) { + this._readyCapability.promise.then(() => { + for (const listener of this._progressListeners) { + listener(loaded, total); } - } - }, { - key: "onDataProgress", - value: function onDataProgress(loaded, total) { - var _this2 = this; + }); + } - this._readyCapability.promise.then(function () { - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; + onDataProgressiveRead(chunk) { + this._readyCapability.promise.then(() => { + for (const listener of this._progressiveReadListeners) { + listener(chunk); + } + }); + } - try { - for (var _iterator2 = _this2._progressListeners[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var listener = _step2.value; - listener(loaded, total); - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { - _iterator2["return"](); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - }); - } - }, { - key: "onDataProgressiveRead", - value: function onDataProgressiveRead(chunk) { - var _this3 = this; + onDataProgressiveDone() { + this._readyCapability.promise.then(() => { + for (const listener of this._progressiveDoneListeners) { + listener(); + } + }); + } - this._readyCapability.promise.then(function () { - var _iteratorNormalCompletion3 = true; - var _didIteratorError3 = false; - var _iteratorError3 = undefined; + transportReady() { + this._readyCapability.resolve(); + } - try { - for (var _iterator3 = _this3._progressiveReadListeners[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var listener = _step3.value; - listener(chunk); - } - } catch (err) { - _didIteratorError3 = true; - _iteratorError3 = err; - } finally { - try { - if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) { - _iterator3["return"](); - } - } finally { - if (_didIteratorError3) { - throw _iteratorError3; - } - } - } - }); - } - }, { - key: "onDataProgressiveDone", - value: function onDataProgressiveDone() { - var _this4 = this; + requestDataRange(begin, end) { + (0, _util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange"); + } - this._readyCapability.promise.then(function () { - var _iteratorNormalCompletion4 = true; - var _didIteratorError4 = false; - var _iteratorError4 = undefined; + abort() {} - try { - for (var _iterator4 = _this4._progressiveDoneListeners[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { - var listener = _step4.value; - listener(); - } - } catch (err) { - _didIteratorError4 = true; - _iteratorError4 = err; - } finally { - try { - if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) { - _iterator4["return"](); - } - } finally { - if (_didIteratorError4) { - throw _iteratorError4; - } - } - } - }); - } - }, { - key: "transportReady", - value: function transportReady() { - this._readyCapability.resolve(); - } - }, { - key: "requestDataRange", - value: function requestDataRange(begin, end) { - (0, _util.unreachable)('Abstract method PDFDataRangeTransport.requestDataRange'); - } - }, { - key: "abort", - value: function abort() {} - }]); - - return PDFDataRangeTransport; -}(); +} exports.PDFDataRangeTransport = PDFDataRangeTransport; -var PDFDocumentProxy = -/*#__PURE__*/ -function () { - function PDFDocumentProxy(pdfInfo, transport) { - _classCallCheck(this, PDFDocumentProxy); - +class PDFDocumentProxy { + constructor(pdfInfo, transport) { this._pdfInfo = pdfInfo; this._transport = transport; + Object.defineProperty(this, "fingerprint", { + get() { + (0, _display_utils.deprecated)("`PDFDocumentProxy.fingerprint`, " + "please use `PDFDocumentProxy.fingerprints` instead."); + return this.fingerprints[0]; + } + + }); + Object.defineProperty(this, "getStats", { + value: async () => { + (0, _display_utils.deprecated)("`PDFDocumentProxy.getStats`, " + "please use the `PDFDocumentProxy.stats`-getter instead."); + return this.stats || { + streamTypes: {}, + fontTypes: {} + }; + } + }); } - _createClass(PDFDocumentProxy, [{ - key: "getPage", - value: function getPage(pageNumber) { - return this._transport.getPage(pageNumber); - } - }, { - key: "getPageIndex", - value: function getPageIndex(ref) { - return this._transport.getPageIndex(ref); - } - }, { - key: "getDestinations", - value: function getDestinations() { - return this._transport.getDestinations(); - } - }, { - key: "getDestination", - value: function getDestination(id) { - return this._transport.getDestination(id); - } - }, { - key: "getPageLabels", - value: function getPageLabels() { - return this._transport.getPageLabels(); - } - }, { - key: "getPageLayout", - value: function getPageLayout() { - return this._transport.getPageLayout(); - } - }, { - key: "getPageMode", - value: function getPageMode() { - return this._transport.getPageMode(); - } - }, { - key: "getViewerPreferences", - value: function getViewerPreferences() { - return this._transport.getViewerPreferences(); - } - }, { - key: "getOpenActionDestination", - value: function getOpenActionDestination() { - return this._transport.getOpenActionDestination(); - } - }, { - key: "getAttachments", - value: function getAttachments() { - return this._transport.getAttachments(); - } - }, { - key: "getJavaScript", - value: function getJavaScript() { - return this._transport.getJavaScript(); - } - }, { - key: "getOutline", - value: function getOutline() { - return this._transport.getOutline(); - } - }, { - key: "getPermissions", - value: function getPermissions() { - return this._transport.getPermissions(); - } - }, { - key: "getMetadata", - value: function getMetadata() { - return this._transport.getMetadata(); - } - }, { - key: "getData", - value: function getData() { - return this._transport.getData(); - } - }, { - key: "getDownloadInfo", - value: function getDownloadInfo() { - return this._transport.downloadInfoCapability.promise; - } - }, { - key: "getStats", - value: function getStats() { - return this._transport.getStats(); - } - }, { - key: "cleanup", - value: function cleanup() { - this._transport.startCleanup(); - } - }, { - key: "destroy", - value: function destroy() { - return this.loadingTask.destroy(); - } - }, { - key: "numPages", - get: function get() { - return this._pdfInfo.numPages; - } - }, { - key: "fingerprint", - get: function get() { - return this._pdfInfo.fingerprint; - } - }, { - key: "loadingParams", - get: function get() { - return this._transport.loadingParams; - } - }, { - key: "loadingTask", - get: function get() { - return this._transport.loadingTask; - } - }]); + get annotationStorage() { + return this._transport.annotationStorage; + } - return PDFDocumentProxy; -}(); + get numPages() { + return this._pdfInfo.numPages; + } + + get fingerprints() { + return this._pdfInfo.fingerprints; + } + + get stats() { + return this._transport.stats; + } + + get isPureXfa() { + return !!this._transport._htmlForXfa; + } + + get allXfaHtml() { + return this._transport._htmlForXfa; + } + + getPage(pageNumber) { + return this._transport.getPage(pageNumber); + } + + getPageIndex(ref) { + return this._transport.getPageIndex(ref); + } + + getDestinations() { + return this._transport.getDestinations(); + } + + getDestination(id) { + return this._transport.getDestination(id); + } + + getPageLabels() { + return this._transport.getPageLabels(); + } + + getPageLayout() { + return this._transport.getPageLayout(); + } + + getPageMode() { + return this._transport.getPageMode(); + } + + getViewerPreferences() { + return this._transport.getViewerPreferences(); + } + + getOpenAction() { + return this._transport.getOpenAction(); + } + + getAttachments() { + return this._transport.getAttachments(); + } + + getJavaScript() { + return this._transport.getJavaScript(); + } + + getJSActions() { + return this._transport.getDocJSActions(); + } + + getOutline() { + return this._transport.getOutline(); + } + + getOptionalContentConfig() { + return this._transport.getOptionalContentConfig(); + } + + getPermissions() { + return this._transport.getPermissions(); + } + + getMetadata() { + return this._transport.getMetadata(); + } + + getMarkInfo() { + return this._transport.getMarkInfo(); + } + + getData() { + return this._transport.getData(); + } + + getDownloadInfo() { + return this._transport.downloadInfoCapability.promise; + } + + cleanup() { + let keepLoadedFonts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa); + } + + destroy() { + return this.loadingTask.destroy(); + } + + get loadingParams() { + return this._transport.loadingParams; + } + + get loadingTask() { + return this._transport.loadingTask; + } + + saveDocument() { + if (this._transport.annotationStorage.size <= 0) { + (0, _display_utils.deprecated)("saveDocument called while `annotationStorage` is empty, " + "please use the getData-method instead."); + } + + return this._transport.saveDocument(); + } + + getFieldObjects() { + return this._transport.getFieldObjects(); + } + + hasJSActions() { + return this._transport.hasJSActions(); + } + + getCalculationOrderIds() { + return this._transport.getCalculationOrderIds(); + } + +} exports.PDFDocumentProxy = PDFDocumentProxy; -var PDFPageProxy = -/*#__PURE__*/ -function () { - function PDFPageProxy(pageIndex, pageInfo, transport) { - var pdfBug = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - - _classCallCheck(this, PDFPageProxy); - - this.pageIndex = pageIndex; +class PDFPageProxy { + constructor(pageIndex, pageInfo, transport, ownerDocument) { + let pdfBug = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + this._pageIndex = pageIndex; this._pageInfo = pageInfo; + this._ownerDocument = ownerDocument; this._transport = transport; - this._stats = pdfBug ? new _display_utils.StatTimer() : _display_utils.DummyStatTimer; + this._stats = pdfBug ? new _display_utils.StatTimer() : null; this._pdfBug = pdfBug; this.commonObjs = transport.commonObjs; this.objs = new PDFObjects(); + this._bitmaps = new Set(); this.cleanupAfterRender = false; this.pendingCleanup = false; - this.intentStates = Object.create(null); + this._intentStates = new Map(); + this._annotationPromises = new Map(); this.destroyed = false; } - _createClass(PDFPageProxy, [{ - key: "getViewport", - value: function getViewport() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - scale = _ref.scale, - _ref$rotation = _ref.rotation, - rotation = _ref$rotation === void 0 ? this.rotate : _ref$rotation, - _ref$dontFlip = _ref.dontFlip, - dontFlip = _ref$dontFlip === void 0 ? false : _ref$dontFlip; + get pageNumber() { + return this._pageIndex + 1; + } - if (arguments.length > 1 || typeof arguments[0] === 'number') { - (0, _display_utils.deprecated)('getViewport is called with obsolete arguments.'); - scale = arguments[0]; - rotation = typeof arguments[1] === 'number' ? arguments[1] : this.rotate; - dontFlip = typeof arguments[2] === 'boolean' ? arguments[2] : false; - } + get rotate() { + return this._pageInfo.rotate; + } - return new _display_utils.PageViewport({ - viewBox: this.view, - scale: scale, - rotation: rotation, - dontFlip: dontFlip - }); - } - }, { - key: "getAnnotations", - value: function getAnnotations() { - var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref2$intent = _ref2.intent, - intent = _ref2$intent === void 0 ? null : _ref2$intent; + get ref() { + return this._pageInfo.ref; + } - if (!this.annotationsPromise || this.annotationsIntent !== intent) { - this.annotationsPromise = this._transport.getAnnotations(this.pageIndex, intent); - this.annotationsIntent = intent; - } + get userUnit() { + return this._pageInfo.userUnit; + } - return this.annotationsPromise; - } - }, { - key: "render", - value: function render(_ref3) { - var _this5 = this; + get view() { + return this._pageInfo.view; + } - var canvasContext = _ref3.canvasContext, - viewport = _ref3.viewport, - _ref3$intent = _ref3.intent, - intent = _ref3$intent === void 0 ? 'display' : _ref3$intent, - _ref3$enableWebGL = _ref3.enableWebGL, - enableWebGL = _ref3$enableWebGL === void 0 ? false : _ref3$enableWebGL, - _ref3$renderInteracti = _ref3.renderInteractiveForms, - renderInteractiveForms = _ref3$renderInteracti === void 0 ? false : _ref3$renderInteracti, - _ref3$transform = _ref3.transform, - transform = _ref3$transform === void 0 ? null : _ref3$transform, - _ref3$imageLayer = _ref3.imageLayer, - imageLayer = _ref3$imageLayer === void 0 ? null : _ref3$imageLayer, - _ref3$canvasFactory = _ref3.canvasFactory, - canvasFactory = _ref3$canvasFactory === void 0 ? null : _ref3$canvasFactory, - _ref3$background = _ref3.background, - background = _ref3$background === void 0 ? null : _ref3$background; - var stats = this._stats; - stats.time('Overall'); - this.pendingCleanup = false; - var renderingIntent = intent === 'print' ? 'print' : 'display'; - var canvasFactoryInstance = canvasFactory || new _display_utils.DOMCanvasFactory(); - var webGLContext = new _webgl.WebGLContext({ - enable: enableWebGL - }); + getViewport() { + let { + scale, + rotation = this.rotate, + offsetX = 0, + offsetY = 0, + dontFlip = false + } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return new _display_utils.PageViewport({ + viewBox: this.view, + scale, + rotation, + offsetX, + offsetY, + dontFlip + }); + } - if (!this.intentStates[renderingIntent]) { - this.intentStates[renderingIntent] = Object.create(null); - } + getAnnotations() { + let { + intent = "display" + } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var intentState = this.intentStates[renderingIntent]; + const intentArgs = this._transport.getRenderingIntent(intent); - if (!intentState.displayReadyCapability) { - intentState.receivingOperatorList = true; - intentState.displayReadyCapability = (0, _util.createPromiseCapability)(); - intentState.operatorList = { - fnArray: [], - argsArray: [], - lastChunk: false - }; - stats.time('Page Request'); + let promise = this._annotationPromises.get(intentArgs.cacheKey); - this._transport.messageHandler.send('RenderPageRequest', { - pageIndex: this.pageNumber - 1, - intent: renderingIntent, - renderInteractiveForms: renderInteractiveForms === true - }); - } + if (!promise) { + promise = this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent); - var complete = function complete(error) { - var i = intentState.renderTasks.indexOf(internalRenderTask); + this._annotationPromises.set(intentArgs.cacheKey, promise); - if (i >= 0) { - intentState.renderTasks.splice(i, 1); - } + promise = promise.then(annotations => { + for (const annotation of annotations) { + if (annotation.titleObj !== undefined) { + Object.defineProperty(annotation, "title", { + get() { + (0, _display_utils.deprecated)("`title`-property on annotation, please use `titleObj` instead."); + return annotation.titleObj.str; + } - if (_this5.cleanupAfterRender || renderingIntent === 'print') { - _this5.pendingCleanup = true; - } + }); + } - _this5._tryCleanup(); + if (annotation.contentsObj !== undefined) { + Object.defineProperty(annotation, "contents", { + get() { + (0, _display_utils.deprecated)("`contents`-property on annotation, please use `contentsObj` instead."); + return annotation.contentsObj.str; + } - if (error) { - internalRenderTask.capability.reject(error); - } else { - internalRenderTask.capability.resolve(); - } - - stats.timeEnd('Rendering'); - stats.timeEnd('Overall'); - }; - - var internalRenderTask = new InternalRenderTask({ - callback: complete, - params: { - canvasContext: canvasContext, - viewport: viewport, - transform: transform, - imageLayer: imageLayer, - background: background - }, - objs: this.objs, - commonObjs: this.commonObjs, - operatorList: intentState.operatorList, - pageNumber: this.pageNumber, - canvasFactory: canvasFactoryInstance, - webGLContext: webGLContext, - useRequestAnimationFrame: renderingIntent !== 'print', - pdfBug: this._pdfBug - }); - - if (!intentState.renderTasks) { - intentState.renderTasks = []; - } - - intentState.renderTasks.push(internalRenderTask); - var renderTask = internalRenderTask.task; - intentState.displayReadyCapability.promise.then(function (transparency) { - if (_this5.pendingCleanup) { - complete(); - return; - } - - stats.time('Rendering'); - internalRenderTask.initializeGraphics(transparency); - internalRenderTask.operatorListChanged(); - })["catch"](complete); - return renderTask; - } - }, { - key: "getOperatorList", - value: function getOperatorList() { - function operatorListChanged() { - if (intentState.operatorList.lastChunk) { - intentState.opListReadCapability.resolve(intentState.operatorList); - var i = intentState.renderTasks.indexOf(opListTask); - - if (i >= 0) { - intentState.renderTasks.splice(i, 1); + }); } } - } - var renderingIntent = 'oplist'; - - if (!this.intentStates[renderingIntent]) { - this.intentStates[renderingIntent] = Object.create(null); - } - - var intentState = this.intentStates[renderingIntent]; - var opListTask; - - if (!intentState.opListReadCapability) { - opListTask = {}; - opListTask.operatorListChanged = operatorListChanged; - intentState.receivingOperatorList = true; - intentState.opListReadCapability = (0, _util.createPromiseCapability)(); - intentState.renderTasks = []; - intentState.renderTasks.push(opListTask); - intentState.operatorList = { - fnArray: [], - argsArray: [], - lastChunk: false - }; - - this._stats.time('Page Request'); - - this._transport.messageHandler.send('RenderPageRequest', { - pageIndex: this.pageIndex, - intent: renderingIntent - }); - } - - return intentState.opListReadCapability.promise; - } - }, { - key: "streamTextContent", - value: function streamTextContent() { - var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref4$normalizeWhites = _ref4.normalizeWhitespace, - normalizeWhitespace = _ref4$normalizeWhites === void 0 ? false : _ref4$normalizeWhites, - _ref4$disableCombineT = _ref4.disableCombineTextItems, - disableCombineTextItems = _ref4$disableCombineT === void 0 ? false : _ref4$disableCombineT; - - var TEXT_CONTENT_CHUNK_SIZE = 100; - return this._transport.messageHandler.sendWithStream('GetTextContent', { - pageIndex: this.pageNumber - 1, - normalizeWhitespace: normalizeWhitespace === true, - combineTextItems: disableCombineTextItems !== true - }, { - highWaterMark: TEXT_CONTENT_CHUNK_SIZE, - size: function size(textContent) { - return textContent.items.length; - } + return annotations; }); } - }, { - key: "getTextContent", - value: function getTextContent() { - var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var readableStream = this.streamTextContent(params); - return new Promise(function (resolve, reject) { - function pump() { - reader.read().then(function (_ref5) { - var _textContent$items; - var value = _ref5.value, - done = _ref5.done; + return promise; + } - if (done) { - resolve(textContent); - return; - } + getJSActions() { + return this._jsActionsPromise || (this._jsActionsPromise = this._transport.getPageJSActions(this._pageIndex)); + } - Object.assign(textContent.styles, value.styles); + async getXfa() { + var _this$_transport$_htm; - (_textContent$items = textContent.items).push.apply(_textContent$items, _toConsumableArray(value.items)); + return ((_this$_transport$_htm = this._transport._htmlForXfa) === null || _this$_transport$_htm === void 0 ? void 0 : _this$_transport$_htm.children[this._pageIndex]) || null; + } - pump(); - }, reject); - } + render(_ref2) { + var _arguments$, _arguments$2, _intentState; - var reader = readableStream.getReader(); - var textContent = { - items: [], - styles: Object.create(null) - }; - pump(); - }); + let { + canvasContext, + viewport, + intent = "display", + annotationMode = _util.AnnotationMode.ENABLE, + transform = null, + imageLayer = null, + canvasFactory = null, + background = null, + optionalContentConfigPromise = null, + annotationCanvasMap = null, + pageColors = null, + printAnnotationStorage = null + } = _ref2; + + if (((_arguments$ = arguments[0]) === null || _arguments$ === void 0 ? void 0 : _arguments$.renderInteractiveForms) !== undefined) { + (0, _display_utils.deprecated)("render no longer accepts the `renderInteractiveForms`-option, " + "please use the `annotationMode`-option instead."); + + if (arguments[0].renderInteractiveForms === true && annotationMode === _util.AnnotationMode.ENABLE) { + annotationMode = _util.AnnotationMode.ENABLE_FORMS; + } } - }, { - key: "_destroy", - value: function _destroy() { - this.destroyed = true; - this._transport.pageCache[this.pageIndex] = null; - var waitOn = []; - Object.keys(this.intentStates).forEach(function (intent) { - if (intent === 'oplist') { - return; - } - var intentState = this.intentStates[intent]; - intentState.renderTasks.forEach(function (renderTask) { - var renderCompleted = renderTask.capability.promise["catch"](function () {}); - waitOn.push(renderCompleted); - renderTask.cancel(); + if (((_arguments$2 = arguments[0]) === null || _arguments$2 === void 0 ? void 0 : _arguments$2.includeAnnotationStorage) !== undefined) { + (0, _display_utils.deprecated)("render no longer accepts the `includeAnnotationStorage`-option, " + "please use the `annotationMode`-option instead."); + + if (arguments[0].includeAnnotationStorage === true && annotationMode === _util.AnnotationMode.ENABLE) { + annotationMode = _util.AnnotationMode.ENABLE_STORAGE; + } + } + + if (this._stats) { + this._stats.time("Overall"); + } + + const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage); + + this.pendingCleanup = false; + + if (!optionalContentConfigPromise) { + optionalContentConfigPromise = this._transport.getOptionalContentConfig(); + } + + let intentState = this._intentStates.get(intentArgs.cacheKey); + + if (!intentState) { + intentState = Object.create(null); + + this._intentStates.set(intentArgs.cacheKey, intentState); + } + + if (intentState.streamReaderCancelTimeout) { + clearTimeout(intentState.streamReaderCancelTimeout); + intentState.streamReaderCancelTimeout = null; + } + + const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({ + ownerDocument: this._ownerDocument + }); + const intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT); + + if (!intentState.displayReadyCapability) { + intentState.displayReadyCapability = (0, _util.createPromiseCapability)(); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false, + separateAnnots: null + }; + + if (this._stats) { + this._stats.time("Page Request"); + } + + this._pumpOperatorList(intentArgs); + } + + const complete = error => { + intentState.renderTasks.delete(internalRenderTask); + + if (this.cleanupAfterRender || intentPrint) { + this.pendingCleanup = true; + } + + this._tryCleanup(); + + if (error) { + internalRenderTask.capability.reject(error); + + this._abortOperatorList({ + intentState, + reason: error instanceof Error ? error : new Error(error) }); - }, this); - this.objs.clear(); - this.annotationsPromise = null; - this.pendingCleanup = false; - return Promise.all(waitOn); - } - }, { - key: "cleanup", - value: function cleanup() { - var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - this.pendingCleanup = true; + } else { + internalRenderTask.capability.resolve(); + } - this._tryCleanup(resetStats); - } - }, { - key: "_tryCleanup", - value: function _tryCleanup() { - var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + if (this._stats) { + this._stats.timeEnd("Rendering"); - if (!this.pendingCleanup || Object.keys(this.intentStates).some(function (intent) { - var intentState = this.intentStates[intent]; - return intentState.renderTasks.length !== 0 || intentState.receivingOperatorList; - }, this)) { + this._stats.timeEnd("Overall"); + } + }; + + const internalRenderTask = new InternalRenderTask({ + callback: complete, + params: { + canvasContext, + viewport, + transform, + imageLayer, + background + }, + objs: this.objs, + commonObjs: this.commonObjs, + annotationCanvasMap, + operatorList: intentState.operatorList, + pageIndex: this._pageIndex, + canvasFactory: canvasFactoryInstance, + useRequestAnimationFrame: !intentPrint, + pdfBug: this._pdfBug, + pageColors + }); + ((_intentState = intentState).renderTasks || (_intentState.renderTasks = new Set())).add(internalRenderTask); + const renderTask = internalRenderTask.task; + Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(_ref3 => { + let [transparency, optionalContentConfig] = _ref3; + + if (this.pendingCleanup) { + complete(); return; } - Object.keys(this.intentStates).forEach(function (intent) { - delete this.intentStates[intent]; - }, this); - this.objs.clear(); - this.annotationsPromise = null; - - if (resetStats && this._stats instanceof _display_utils.StatTimer) { - this._stats = new _display_utils.StatTimer(); + if (this._stats) { + this._stats.time("Rendering"); } - this.pendingCleanup = false; - } - }, { - key: "_startRenderPage", - value: function _startRenderPage(transparency, intent) { - var intentState = this.intentStates[intent]; + internalRenderTask.initializeGraphics({ + transparency, + optionalContentConfig + }); + internalRenderTask.operatorListChanged(); + }).catch(complete); + return renderTask; + } - if (intentState.displayReadyCapability) { - intentState.displayReadyCapability.resolve(transparency); + getOperatorList() { + let { + intent = "display", + annotationMode = _util.AnnotationMode.ENABLE, + printAnnotationStorage = null + } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + function operatorListChanged() { + if (intentState.operatorList.lastChunk) { + intentState.opListReadCapability.resolve(intentState.operatorList); + intentState.renderTasks.delete(opListTask); } } - }, { - key: "_renderPageChunk", - value: function _renderPageChunk(operatorListChunk, intent) { - var intentState = this.intentStates[intent]; - for (var i = 0, ii = operatorListChunk.length; i < ii; i++) { - intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]); - intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]); + const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, true); + + let intentState = this._intentStates.get(intentArgs.cacheKey); + + if (!intentState) { + intentState = Object.create(null); + + this._intentStates.set(intentArgs.cacheKey, intentState); + } + + let opListTask; + + if (!intentState.opListReadCapability) { + var _intentState2; + + opListTask = Object.create(null); + opListTask.operatorListChanged = operatorListChanged; + intentState.opListReadCapability = (0, _util.createPromiseCapability)(); + ((_intentState2 = intentState).renderTasks || (_intentState2.renderTasks = new Set())).add(opListTask); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false, + separateAnnots: null + }; + + if (this._stats) { + this._stats.time("Page Request"); } - intentState.operatorList.lastChunk = operatorListChunk.lastChunk; + this._pumpOperatorList(intentArgs); + } - for (var _i = 0; _i < intentState.renderTasks.length; _i++) { - intentState.renderTasks[_i].operatorListChanged(); + return intentState.opListReadCapability.promise; + } + + streamTextContent() { + let { + disableCombineTextItems = false, + includeMarkedContent = false + } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + const TEXT_CONTENT_CHUNK_SIZE = 100; + return this._transport.messageHandler.sendWithStream("GetTextContent", { + pageIndex: this._pageIndex, + combineTextItems: disableCombineTextItems !== true, + includeMarkedContent: includeMarkedContent === true + }, { + highWaterMark: TEXT_CONTENT_CHUNK_SIZE, + + size(textContent) { + return textContent.items.length; } - if (operatorListChunk.lastChunk) { - intentState.receivingOperatorList = false; + }); + } - this._tryCleanup(); + getTextContent() { + let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + if (this._transport._htmlForXfa) { + return this.getXfa().then(xfa => { + return _xfa_text.XfaText.textContent(xfa); + }); + } + + const readableStream = this.streamTextContent(params); + return new Promise(function (resolve, reject) { + function pump() { + reader.read().then(function (_ref4) { + let { + value, + done + } = _ref4; + + if (done) { + resolve(textContent); + return; + } + + Object.assign(textContent.styles, value.styles); + textContent.items.push(...value.items); + pump(); + }, reject); + } + + const reader = readableStream.getReader(); + const textContent = { + items: [], + styles: Object.create(null) + }; + pump(); + }); + } + + getStructTree() { + return this._structTreePromise || (this._structTreePromise = this._transport.getStructTree(this._pageIndex)); + } + + _destroy() { + this.destroyed = true; + const waitOn = []; + + for (const intentState of this._intentStates.values()) { + this._abortOperatorList({ + intentState, + reason: new Error("Page was destroyed."), + force: true + }); + + if (intentState.opListReadCapability) { + continue; + } + + for (const internalRenderTask of intentState.renderTasks) { + waitOn.push(internalRenderTask.completed); + internalRenderTask.cancel(); } } - }, { - key: "pageNumber", - get: function get() { - return this.pageIndex + 1; - } - }, { - key: "rotate", - get: function get() { - return this._pageInfo.rotate; - } - }, { - key: "ref", - get: function get() { - return this._pageInfo.ref; - } - }, { - key: "userUnit", - get: function get() { - return this._pageInfo.userUnit; - } - }, { - key: "view", - get: function get() { - return this._pageInfo.view; - } - }, { - key: "stats", - get: function get() { - return this._stats instanceof _display_utils.StatTimer ? this._stats : null; - } - }]); - return PDFPageProxy; -}(); + this.objs.clear(); + + for (const bitmap of this._bitmaps) { + bitmap.close(); + } + + this._bitmaps.clear(); + + this._annotationPromises.clear(); + + this._jsActionsPromise = null; + this._structTreePromise = null; + this.pendingCleanup = false; + return Promise.all(waitOn); + } + + cleanup() { + let resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + this.pendingCleanup = true; + return this._tryCleanup(resetStats); + } + + _tryCleanup() { + let resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + if (!this.pendingCleanup) { + return false; + } + + for (const { + renderTasks, + operatorList + } of this._intentStates.values()) { + if (renderTasks.size > 0 || !operatorList.lastChunk) { + return false; + } + } + + this._intentStates.clear(); + + this.objs.clear(); + + this._annotationPromises.clear(); + + this._jsActionsPromise = null; + this._structTreePromise = null; + + if (resetStats && this._stats) { + this._stats = new _display_utils.StatTimer(); + } + + for (const bitmap of this._bitmaps) { + bitmap.close(); + } + + this._bitmaps.clear(); + + this.pendingCleanup = false; + return true; + } + + _startRenderPage(transparency, cacheKey) { + const intentState = this._intentStates.get(cacheKey); + + if (!intentState) { + return; + } + + if (this._stats) { + this._stats.timeEnd("Page Request"); + } + + if (intentState.displayReadyCapability) { + intentState.displayReadyCapability.resolve(transparency); + } + } + + _renderPageChunk(operatorListChunk, intentState) { + for (let i = 0, ii = operatorListChunk.length; i < ii; i++) { + intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]); + intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]); + } + + intentState.operatorList.lastChunk = operatorListChunk.lastChunk; + intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots; + + for (const internalRenderTask of intentState.renderTasks) { + internalRenderTask.operatorListChanged(); + } + + if (operatorListChunk.lastChunk) { + this._tryCleanup(); + } + } + + _pumpOperatorList(_ref5) { + let { + renderingIntent, + cacheKey, + annotationStorageMap + } = _ref5; + + const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", { + pageIndex: this._pageIndex, + intent: renderingIntent, + cacheKey, + annotationStorage: annotationStorageMap + }); + + const reader = readableStream.getReader(); + + const intentState = this._intentStates.get(cacheKey); + + intentState.streamReader = reader; + + const pump = () => { + reader.read().then(_ref6 => { + let { + value, + done + } = _ref6; + + if (done) { + intentState.streamReader = null; + return; + } + + if (this._transport.destroyed) { + return; + } + + this._renderPageChunk(value, intentState); + + pump(); + }, reason => { + intentState.streamReader = null; + + if (this._transport.destroyed) { + return; + } + + if (intentState.operatorList) { + intentState.operatorList.lastChunk = true; + + for (const internalRenderTask of intentState.renderTasks) { + internalRenderTask.operatorListChanged(); + } + + this._tryCleanup(); + } + + if (intentState.displayReadyCapability) { + intentState.displayReadyCapability.reject(reason); + } else if (intentState.opListReadCapability) { + intentState.opListReadCapability.reject(reason); + } else { + throw reason; + } + }); + }; + + pump(); + } + + _abortOperatorList(_ref7) { + let { + intentState, + reason, + force = false + } = _ref7; + + if (!intentState.streamReader) { + return; + } + + if (!force) { + if (intentState.renderTasks.size > 0) { + return; + } + + if (reason instanceof _display_utils.RenderingCancelledException) { + intentState.streamReaderCancelTimeout = setTimeout(() => { + this._abortOperatorList({ + intentState, + reason, + force: true + }); + + intentState.streamReaderCancelTimeout = null; + }, RENDERING_CANCELLED_TIMEOUT); + return; + } + } + + intentState.streamReader.cancel(new _util.AbortException(reason.message)).catch(() => {}); + intentState.streamReader = null; + + if (this._transport.destroyed) { + return; + } + + for (const [curCacheKey, curIntentState] of this._intentStates) { + if (curIntentState === intentState) { + this._intentStates.delete(curCacheKey); + + break; + } + } + + this.cleanup(); + } + + get stats() { + return this._stats; + } + +} exports.PDFPageProxy = PDFPageProxy; -var LoopbackPort = -/*#__PURE__*/ -function () { - function LoopbackPort() { - var defer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - - _classCallCheck(this, LoopbackPort); - +class LoopbackPort { + constructor() { this._listeners = []; - this._defer = defer; - this._deferred = Promise.resolve(undefined); + this._deferred = Promise.resolve(); } - _createClass(LoopbackPort, [{ - key: "postMessage", - value: function postMessage(obj, transfers) { - var _this6 = this; + postMessage(obj, transfers) { + const event = { + data: structuredClone(obj, transfers) + }; - function cloneValue(value) { - if (_typeof(value) !== 'object' || value === null) { - return value; - } - - if (cloned.has(value)) { - return cloned.get(value); - } - - var buffer, result; - - if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) { - var transferable = transfers && transfers.includes(buffer); - - if (value === buffer) { - result = value; - } else if (transferable) { - result = new value.constructor(buffer, value.byteOffset, value.byteLength); - } else { - result = new value.constructor(value); - } - - cloned.set(value, result); - return result; - } - - result = Array.isArray(value) ? [] : {}; - cloned.set(value, result); - - for (var i in value) { - var desc = void 0, - p = value; - - while (!(desc = Object.getOwnPropertyDescriptor(p, i))) { - p = Object.getPrototypeOf(p); - } - - if (typeof desc.value === 'undefined' || typeof desc.value === 'function') { - continue; - } - - result[i] = cloneValue(desc.value); - } - - return result; + this._deferred.then(() => { + for (const listener of this._listeners) { + listener.call(this, event); } + }); + } - if (!this._defer) { - this._listeners.forEach(function (listener) { - listener.call(this, { - data: obj - }); - }, this); + addEventListener(name, listener) { + this._listeners.push(listener); + } + + removeEventListener(name, listener) { + const i = this._listeners.indexOf(listener); + + this._listeners.splice(i, 1); + } + + terminate() { + this._listeners.length = 0; + } + +} + +exports.LoopbackPort = LoopbackPort; +const PDFWorkerUtil = { + isWorkerDisabled: false, + fallbackWorkerSrc: null, + fakeWorkerId: 0 +}; +exports.PDFWorkerUtil = PDFWorkerUtil; +{ + if (_is_node.isNodeJS && typeof require === "function") { + PDFWorkerUtil.isWorkerDisabled = true; + PDFWorkerUtil.fallbackWorkerSrc = "./pdf.worker.js"; + } else if (typeof document === "object") { + var _document, _document$currentScri; + + const pdfjsFilePath = (_document = document) === null || _document === void 0 ? void 0 : (_document$currentScri = _document.currentScript) === null || _document$currentScri === void 0 ? void 0 : _document$currentScri.src; + + if (pdfjsFilePath) { + PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2"); + } + } + + PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) { + let base; + + try { + base = new URL(baseUrl); + + if (!base.origin || base.origin === "null") { + return false; + } + } catch (e) { + return false; + } + + const other = new URL(otherUrl, base); + return base.origin === other.origin; + }; + + PDFWorkerUtil.createCDNWrapper = function (url) { + const wrapper = `importScripts("${url}");`; + return URL.createObjectURL(new Blob([wrapper])); + }; +} + +class PDFWorker { + constructor() { + let { + name = null, + port = null, + verbosity = (0, _util.getVerbosityLevel)() + } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + if (port && _classStaticPrivateFieldSpecGet(PDFWorker, PDFWorker, _workerPorts).has(port)) { + throw new Error("Cannot use more than one PDFWorker per port."); + } + + this.name = name; + this.destroyed = false; + this.verbosity = verbosity; + this._readyCapability = (0, _util.createPromiseCapability)(); + this._port = null; + this._webWorker = null; + this._messageHandler = null; + + if (port) { + _classStaticPrivateFieldSpecGet(PDFWorker, PDFWorker, _workerPorts).set(port, this); + + this._initializeFromPort(port); + + return; + } + + this._initialize(); + } + + get promise() { + return this._readyCapability.promise; + } + + get port() { + return this._port; + } + + get messageHandler() { + return this._messageHandler; + } + + _initializeFromPort(port) { + this._port = port; + this._messageHandler = new _message_handler.MessageHandler("main", "worker", port); + + this._messageHandler.on("ready", function () {}); + + this._readyCapability.resolve(); + } + + _initialize() { + if (!PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) { + let { + workerSrc + } = PDFWorker; + + try { + if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) { + workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href); + } + + const worker = new Worker(workerSrc); + const messageHandler = new _message_handler.MessageHandler("main", "worker", worker); + + const terminateEarly = () => { + worker.removeEventListener("error", onWorkerError); + messageHandler.destroy(); + worker.terminate(); + + if (this.destroyed) { + this._readyCapability.reject(new Error("Worker was destroyed")); + } else { + this._setupFakeWorker(); + } + }; + + const onWorkerError = () => { + if (!this._webWorker) { + terminateEarly(); + } + }; + + worker.addEventListener("error", onWorkerError); + messageHandler.on("test", data => { + worker.removeEventListener("error", onWorkerError); + + if (this.destroyed) { + terminateEarly(); + return; + } + + if (data) { + this._messageHandler = messageHandler; + this._port = worker; + this._webWorker = worker; + + this._readyCapability.resolve(); + + messageHandler.send("configure", { + verbosity: this.verbosity + }); + } else { + this._setupFakeWorker(); + + messageHandler.destroy(); + worker.terminate(); + } + }); + messageHandler.on("ready", data => { + worker.removeEventListener("error", onWorkerError); + + if (this.destroyed) { + terminateEarly(); + return; + } + + try { + sendTest(); + } catch (e) { + this._setupFakeWorker(); + } + }); + + const sendTest = () => { + const testObj = new Uint8Array(); + messageHandler.send("test", testObj, [testObj.buffer]); + }; + + sendTest(); + return; + } catch (e) { + (0, _util.info)("The worker has been disabled."); + } + } + + this._setupFakeWorker(); + } + + _setupFakeWorker() { + if (!PDFWorkerUtil.isWorkerDisabled) { + (0, _util.warn)("Setting up fake worker."); + PDFWorkerUtil.isWorkerDisabled = true; + } + + PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => { + if (this.destroyed) { + this._readyCapability.reject(new Error("Worker was destroyed")); return; } - var cloned = new WeakMap(); - var e = { - data: cloneValue(obj) - }; + const port = new LoopbackPort(); + this._port = port; + const id = `fake${PDFWorkerUtil.fakeWorkerId++}`; + const workerHandler = new _message_handler.MessageHandler(id + "_worker", id, port); + WorkerMessageHandler.setup(workerHandler, port); + const messageHandler = new _message_handler.MessageHandler(id, id + "_worker", port); + this._messageHandler = messageHandler; - this._deferred.then(function () { - _this6._listeners.forEach(function (listener) { - listener.call(this, e); - }, _this6); + this._readyCapability.resolve(); + + messageHandler.send("configure", { + verbosity: this.verbosity }); + }).catch(reason => { + this._readyCapability.reject(new Error(`Setting up fake worker failed: "${reason.message}".`)); + }); + } + + destroy() { + this.destroyed = true; + + if (this._webWorker) { + this._webWorker.terminate(); + + this._webWorker = null; } - }, { - key: "addEventListener", - value: function addEventListener(name, listener) { - this._listeners.push(listener); + + _classStaticPrivateFieldSpecGet(PDFWorker, PDFWorker, _workerPorts).delete(this._port); + + this._port = null; + + if (this._messageHandler) { + this._messageHandler.destroy(); + + this._messageHandler = null; } - }, { - key: "removeEventListener", - value: function removeEventListener(name, listener) { - var i = this._listeners.indexOf(listener); + } - this._listeners.splice(i, 1); + static fromPort(params) { + if (!(params !== null && params !== void 0 && params.port)) { + throw new Error("PDFWorker.fromPort - invalid method signature."); } - }, { - key: "terminate", - value: function terminate() { - this._listeners.length = 0; + + if (_classStaticPrivateFieldSpecGet(this, PDFWorker, _workerPorts).has(params.port)) { + return _classStaticPrivateFieldSpecGet(this, PDFWorker, _workerPorts).get(params.port); } - }]); - return LoopbackPort; -}(); + return new PDFWorker(params); + } -exports.LoopbackPort = LoopbackPort; - -var PDFWorker = function PDFWorkerClosure() { - var pdfWorkerPorts = new WeakMap(); - var nextFakeWorkerId = 0; - var fakeWorkerFilesLoadedCapability; - - function _getWorkerSrc() { + static get workerSrc() { if (_worker_options.GlobalWorkerOptions.workerSrc) { return _worker_options.GlobalWorkerOptions.workerSrc; } - if (typeof fallbackWorkerSrc !== 'undefined') { - return fallbackWorkerSrc; + if (PDFWorkerUtil.fallbackWorkerSrc !== null) { + if (!_is_node.isNodeJS) { + (0, _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.'); + } + + return PDFWorkerUtil.fallbackWorkerSrc; } throw new Error('No "GlobalWorkerOptions.workerSrc" specified.'); } - function getMainThreadWorkerMessageHandler() { + static get _mainThreadWorkerMessageHandler() { try { - if (typeof window !== 'undefined') { - return window.pdfjsWorker && window.pdfjsWorker.WorkerMessageHandler; - } - } catch (ex) {} + var _globalThis$pdfjsWork; - return null; + return ((_globalThis$pdfjsWork = globalThis.pdfjsWorker) === null || _globalThis$pdfjsWork === void 0 ? void 0 : _globalThis$pdfjsWork.WorkerMessageHandler) || null; + } catch (ex) { + return null; + } } - function setupFakeWorkerGlobal() { - if (fakeWorkerFilesLoadedCapability) { - return fakeWorkerFilesLoadedCapability.promise; - } + static get _setupFakeWorkerGlobal() { + const loader = async () => { + const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler; - fakeWorkerFilesLoadedCapability = (0, _util.createPromiseCapability)(); - var mainWorkerMessageHandler = getMainThreadWorkerMessageHandler(); + if (mainWorkerMessageHandler) { + return mainWorkerMessageHandler; + } - if (mainWorkerMessageHandler) { - fakeWorkerFilesLoadedCapability.resolve(mainWorkerMessageHandler); - return fakeWorkerFilesLoadedCapability.promise; - } + if (_is_node.isNodeJS && typeof require === "function") { + const worker = eval("require")(this.workerSrc); + return worker.WorkerMessageHandler; + } - var loader = fakeWorkerFilesLoader || function () { - return (0, _display_utils.loadScript)(_getWorkerSrc()).then(function () { - return window.pdfjsWorker.WorkerMessageHandler; - }); + await (0, _display_utils.loadScript)(this.workerSrc); + return window.pdfjsWorker.WorkerMessageHandler; }; - loader().then(fakeWorkerFilesLoadedCapability.resolve, fakeWorkerFilesLoadedCapability.reject); - return fakeWorkerFilesLoadedCapability.promise; + return (0, _util.shadow)(this, "_setupFakeWorkerGlobal", loader()); } - function createCDNWrapper(url) { - var wrapper = 'importScripts(\'' + url + '\');'; - return _util.URL.createObjectURL(new Blob([wrapper])); - } - - var PDFWorker = - /*#__PURE__*/ - function () { - function PDFWorker() { - var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref6$name = _ref6.name, - name = _ref6$name === void 0 ? null : _ref6$name, - _ref6$port = _ref6.port, - port = _ref6$port === void 0 ? null : _ref6$port, - _ref6$postMessageTran = _ref6.postMessageTransfers, - postMessageTransfers = _ref6$postMessageTran === void 0 ? true : _ref6$postMessageTran, - _ref6$verbosity = _ref6.verbosity, - verbosity = _ref6$verbosity === void 0 ? (0, _util.getVerbosityLevel)() : _ref6$verbosity; - - _classCallCheck(this, PDFWorker); - - if (port && pdfWorkerPorts.has(port)) { - throw new Error('Cannot use more than one PDFWorker per port'); - } - - this.name = name; - this.destroyed = false; - this.postMessageTransfers = postMessageTransfers !== false; - this.verbosity = verbosity; - this._readyCapability = (0, _util.createPromiseCapability)(); - this._port = null; - this._webWorker = null; - this._messageHandler = null; - - if (port) { - pdfWorkerPorts.set(port, this); - - this._initializeFromPort(port); - - return; - } - - this._initialize(); - } - - _createClass(PDFWorker, [{ - key: "_initializeFromPort", - value: function _initializeFromPort(port) { - this._port = port; - this._messageHandler = new _message_handler.MessageHandler('main', 'worker', port); - - this._messageHandler.on('ready', function () {}); - - this._readyCapability.resolve(); - } - }, { - key: "_initialize", - value: function _initialize() { - var _this7 = this; - - if (typeof Worker !== 'undefined' && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) { - var workerSrc = _getWorkerSrc(); - - try { - if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) { - workerSrc = createCDNWrapper(new _util.URL(workerSrc, window.location).href); - } - - var worker = new Worker(workerSrc); - var messageHandler = new _message_handler.MessageHandler('main', 'worker', worker); - - var terminateEarly = function terminateEarly() { - worker.removeEventListener('error', onWorkerError); - messageHandler.destroy(); - worker.terminate(); - - if (_this7.destroyed) { - _this7._readyCapability.reject(new Error('Worker was destroyed')); - } else { - _this7._setupFakeWorker(); - } - }; - - var onWorkerError = function onWorkerError() { - if (!_this7._webWorker) { - terminateEarly(); - } - }; - - worker.addEventListener('error', onWorkerError); - messageHandler.on('test', function (data) { - worker.removeEventListener('error', onWorkerError); - - if (_this7.destroyed) { - terminateEarly(); - return; - } - - if (data && data.supportTypedArray) { - _this7._messageHandler = messageHandler; - _this7._port = worker; - _this7._webWorker = worker; - - if (!data.supportTransfers) { - _this7.postMessageTransfers = false; - } - - _this7._readyCapability.resolve(); - - messageHandler.send('configure', { - verbosity: _this7.verbosity - }); - } else { - _this7._setupFakeWorker(); - - messageHandler.destroy(); - worker.terminate(); - } - }); - messageHandler.on('ready', function (data) { - worker.removeEventListener('error', onWorkerError); - - if (_this7.destroyed) { - terminateEarly(); - return; - } - - try { - sendTest(); - } catch (e) { - _this7._setupFakeWorker(); - } - }); - - var sendTest = function sendTest() { - var testObj = new Uint8Array([_this7.postMessageTransfers ? 255 : 0]); - - try { - messageHandler.send('test', testObj, [testObj.buffer]); - } catch (ex) { - (0, _util.info)('Cannot use postMessage transfers'); - testObj[0] = 0; - messageHandler.send('test', testObj); - } - }; - - sendTest(); - return; - } catch (e) { - (0, _util.info)('The worker has been disabled.'); - } - } - - this._setupFakeWorker(); - } - }, { - key: "_setupFakeWorker", - value: function _setupFakeWorker() { - var _this8 = this; - - if (!isWorkerDisabled) { - (0, _util.warn)('Setting up fake worker.'); - isWorkerDisabled = true; - } - - setupFakeWorkerGlobal().then(function (WorkerMessageHandler) { - if (_this8.destroyed) { - _this8._readyCapability.reject(new Error('Worker was destroyed')); - - return; - } - - var port = new LoopbackPort(); - _this8._port = port; - var id = 'fake' + nextFakeWorkerId++; - var workerHandler = new _message_handler.MessageHandler(id + '_worker', id, port); - WorkerMessageHandler.setup(workerHandler, port); - var messageHandler = new _message_handler.MessageHandler(id, id + '_worker', port); - _this8._messageHandler = messageHandler; - - _this8._readyCapability.resolve(); - })["catch"](function (reason) { - _this8._readyCapability.reject(new Error("Setting up fake worker failed: \"".concat(reason.message, "\"."))); - }); - } - }, { - key: "destroy", - value: function destroy() { - this.destroyed = true; - - if (this._webWorker) { - this._webWorker.terminate(); - - this._webWorker = null; - } - - pdfWorkerPorts["delete"](this._port); - this._port = null; - - if (this._messageHandler) { - this._messageHandler.destroy(); - - this._messageHandler = null; - } - } - }, { - key: "promise", - get: function get() { - return this._readyCapability.promise; - } - }, { - key: "port", - get: function get() { - return this._port; - } - }, { - key: "messageHandler", - get: function get() { - return this._messageHandler; - } - }], [{ - key: "fromPort", - value: function fromPort(params) { - if (!params || !params.port) { - throw new Error('PDFWorker.fromPort - invalid method signature.'); - } - - if (pdfWorkerPorts.has(params.port)) { - return pdfWorkerPorts.get(params.port); - } - - return new PDFWorker(params); - } - }, { - key: "getWorkerSrc", - value: function getWorkerSrc() { - return _getWorkerSrc(); - } - }]); - - return PDFWorker; - }(); - - return PDFWorker; -}(); +} exports.PDFWorker = PDFWorker; +var _workerPorts = { + writable: true, + value: new WeakMap() +}; +{ + PDFWorker.getWorkerSrc = function () { + (0, _display_utils.deprecated)("`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead."); + return this.workerSrc; + }; +} -var WorkerTransport = -/*#__PURE__*/ -function () { - function WorkerTransport(messageHandler, loadingTask, networkStream, params) { - _classCallCheck(this, WorkerTransport); +var _docStats = /*#__PURE__*/new WeakMap(); + +var _pageCache = /*#__PURE__*/new WeakMap(); + +var _pagePromises = /*#__PURE__*/new WeakMap(); + +var _metadataPromise = /*#__PURE__*/new WeakMap(); + +class WorkerTransport { + constructor(messageHandler, loadingTask, networkStream, params) { + _classPrivateFieldInitSpec(this, _docStats, { + writable: true, + value: null + }); + + _classPrivateFieldInitSpec(this, _pageCache, { + writable: true, + value: new Map() + }); + + _classPrivateFieldInitSpec(this, _pagePromises, { + writable: true, + value: new Map() + }); + + _classPrivateFieldInitSpec(this, _metadataPromise, { + writable: true, + value: null + }); this.messageHandler = messageHandler; this.loadingTask = loadingTask; this.commonObjs = new PDFObjects(); this.fontLoader = new _font_loader.FontLoader({ docId: loadingTask.docId, - onUnsupportedFeature: this._onUnsupportedFeature.bind(this) + onUnsupportedFeature: this._onUnsupportedFeature.bind(this), + ownerDocument: params.ownerDocument, + styleElement: params.styleElement }); this._params = params; - this.CMapReaderFactory = new params.CMapReaderFactory({ - baseUrl: params.cMapUrl, - isCompressed: params.cMapPacked - }); + + if (!params.useWorkerFetch) { + this.CMapReaderFactory = new params.CMapReaderFactory({ + baseUrl: params.cMapUrl, + isCompressed: params.cMapPacked + }); + this.StandardFontDataFactory = new params.StandardFontDataFactory({ + baseUrl: params.standardFontDataUrl + }); + } + this.destroyed = false; this.destroyCapability = null; this._passwordCapability = null; this._networkStream = networkStream; this._fullReader = null; this._lastProgress = null; - this.pageCache = []; - this.pagePromises = []; this.downloadInfoCapability = (0, _util.createPromiseCapability)(); this.setupMessageHandler(); } - _createClass(WorkerTransport, [{ - key: "destroy", - value: function destroy() { - var _this9 = this; + get annotationStorage() { + return (0, _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage()); + } - if (this.destroyCapability) { - return this.destroyCapability.promise; - } + get stats() { + return _classPrivateFieldGet(this, _docStats); + } - this.destroyed = true; - this.destroyCapability = (0, _util.createPromiseCapability)(); + getRenderingIntent(intent) { + let annotationMode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _util.AnnotationMode.ENABLE; + let printAnnotationStorage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + let isOpList = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + let renderingIntent = _util.RenderingIntentFlag.DISPLAY; + let annotationMap = null; - if (this._passwordCapability) { - this._passwordCapability.reject(new Error('Worker was destroyed during onPassword callback')); - } + switch (intent) { + case "any": + renderingIntent = _util.RenderingIntentFlag.ANY; + break; - var waitOn = []; - this.pageCache.forEach(function (page) { - if (page) { - waitOn.push(page._destroy()); - } - }); - this.pageCache.length = 0; - this.pagePromises.length = 0; - var terminated = this.messageHandler.sendWithPromise('Terminate', null); - waitOn.push(terminated); - Promise.all(waitOn).then(function () { - _this9.fontLoader.clear(); + case "display": + break; - if (_this9._networkStream) { - _this9._networkStream.cancelAllRequests(); - } + case "print": + renderingIntent = _util.RenderingIntentFlag.PRINT; + break; - if (_this9.messageHandler) { - _this9.messageHandler.destroy(); + default: + (0, _util.warn)(`getRenderingIntent - invalid intent: ${intent}`); + } - _this9.messageHandler = null; - } + switch (annotationMode) { + case _util.AnnotationMode.DISABLE: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE; + break; - _this9.destroyCapability.resolve(); - }, this.destroyCapability.reject); + case _util.AnnotationMode.ENABLE: + break; + + case _util.AnnotationMode.ENABLE_FORMS: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_FORMS; + break; + + case _util.AnnotationMode.ENABLE_STORAGE: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE; + const annotationStorage = renderingIntent & _util.RenderingIntentFlag.PRINT && printAnnotationStorage instanceof _annotation_storage.PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage; + annotationMap = annotationStorage.serializable; + break; + + default: + (0, _util.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`); + } + + if (isOpList) { + renderingIntent += _util.RenderingIntentFlag.OPLIST; + } + + return { + renderingIntent, + cacheKey: `${renderingIntent}_${_annotation_storage.AnnotationStorage.getHash(annotationMap)}`, + annotationStorageMap: annotationMap + }; + } + + destroy() { + if (this.destroyCapability) { return this.destroyCapability.promise; } - }, { - key: "setupMessageHandler", - value: function setupMessageHandler() { - var messageHandler = this.messageHandler, - loadingTask = this.loadingTask; - messageHandler.on('GetReader', function (data, sink) { - var _this10 = this; - (0, _util.assert)(this._networkStream); - this._fullReader = this._networkStream.getFullReader(); + this.destroyed = true; + this.destroyCapability = (0, _util.createPromiseCapability)(); - this._fullReader.onProgress = function (evt) { - _this10._lastProgress = { - loaded: evt.loaded, - total: evt.total - }; - }; - - sink.onPull = function () { - _this10._fullReader.read().then(function (_ref7) { - var value = _ref7.value, - done = _ref7.done; - - if (done) { - sink.close(); - return; - } - - (0, _util.assert)((0, _util.isArrayBuffer)(value)); - sink.enqueue(new Uint8Array(value), 1, [value]); - })["catch"](function (reason) { - sink.error(reason); - }); - }; - - sink.onCancel = function (reason) { - _this10._fullReader.cancel(reason); - }; - }, this); - messageHandler.on('ReaderHeadersReady', function (data) { - var _this11 = this; - - var headersCapability = (0, _util.createPromiseCapability)(); - var fullReader = this._fullReader; - fullReader.headersReady.then(function () { - if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) { - if (_this11._lastProgress && loadingTask.onProgress) { - loadingTask.onProgress(_this11._lastProgress); - } - - fullReader.onProgress = function (evt) { - if (loadingTask.onProgress) { - loadingTask.onProgress({ - loaded: evt.loaded, - total: evt.total - }); - } - }; - } - - headersCapability.resolve({ - isStreamingSupported: fullReader.isStreamingSupported, - isRangeSupported: fullReader.isRangeSupported, - contentLength: fullReader.contentLength - }); - }, headersCapability.reject); - return headersCapability.promise; - }, this); - messageHandler.on('GetRangeReader', function (data, sink) { - (0, _util.assert)(this._networkStream); - - var rangeReader = this._networkStream.getRangeReader(data.begin, data.end); - - if (!rangeReader) { - sink.close(); - return; - } - - sink.onPull = function () { - rangeReader.read().then(function (_ref8) { - var value = _ref8.value, - done = _ref8.done; - - if (done) { - sink.close(); - return; - } - - (0, _util.assert)((0, _util.isArrayBuffer)(value)); - sink.enqueue(new Uint8Array(value), 1, [value]); - })["catch"](function (reason) { - sink.error(reason); - }); - }; - - sink.onCancel = function (reason) { - rangeReader.cancel(reason); - }; - }, this); - messageHandler.on('GetDoc', function (_ref9) { - var pdfInfo = _ref9.pdfInfo; - this._numPages = pdfInfo.numPages; - - loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this)); - }, this); - messageHandler.on('PasswordRequest', function (exception) { - var _this12 = this; - - this._passwordCapability = (0, _util.createPromiseCapability)(); - - if (loadingTask.onPassword) { - var updatePassword = function updatePassword(password) { - _this12._passwordCapability.resolve({ - password: password - }); - }; - - try { - loadingTask.onPassword(updatePassword, exception.code); - } catch (ex) { - this._passwordCapability.reject(ex); - } - } else { - this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code)); - } - - return this._passwordCapability.promise; - }, this); - messageHandler.on('PasswordException', function (exception) { - loadingTask._capability.reject(new _util.PasswordException(exception.message, exception.code)); - }, this); - messageHandler.on('InvalidPDF', function (exception) { - loadingTask._capability.reject(new _util.InvalidPDFException(exception.message)); - }, this); - messageHandler.on('MissingPDF', function (exception) { - loadingTask._capability.reject(new _util.MissingPDFException(exception.message)); - }, this); - messageHandler.on('UnexpectedResponse', function (exception) { - loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status)); - }, this); - messageHandler.on('UnknownError', function (exception) { - loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details)); - }, this); - messageHandler.on('DataLoaded', function (data) { - if (loadingTask.onProgress) { - loadingTask.onProgress({ - loaded: data.length, - total: data.length - }); - } - - this.downloadInfoCapability.resolve(data); - }, this); - messageHandler.on('StartRenderPage', function (data) { - if (this.destroyed) { - return; - } - - var page = this.pageCache[data.pageIndex]; - - page._stats.timeEnd('Page Request'); - - page._startRenderPage(data.transparency, data.intent); - }, this); - messageHandler.on('RenderPageChunk', function (data) { - if (this.destroyed) { - return; - } - - var page = this.pageCache[data.pageIndex]; - - page._renderPageChunk(data.operatorList, data.intent); - }, this); - messageHandler.on('commonobj', function (data) { - var _this13 = this; - - if (this.destroyed) { - return; - } - - var _data = _slicedToArray(data, 3), - id = _data[0], - type = _data[1], - exportedData = _data[2]; - - if (this.commonObjs.has(id)) { - return; - } - - switch (type) { - case 'Font': - var params = this._params; - - if ('error' in exportedData) { - var exportedError = exportedData.error; - (0, _util.warn)("Error during font loading: ".concat(exportedError)); - this.commonObjs.resolve(id, exportedError); - break; - } - - var fontRegistry = null; - - if (params.pdfBug && _global_scope["default"].FontInspector && _global_scope["default"].FontInspector.enabled) { - fontRegistry = { - registerFont: function registerFont(font, url) { - _global_scope["default"]['FontInspector'].fontAdded(font, url); - } - }; - } - - var font = new _font_loader.FontFaceObject(exportedData, { - isEvalSupported: params.isEvalSupported, - disableFontFace: params.disableFontFace, - ignoreErrors: params.ignoreErrors, - onUnsupportedFeature: this._onUnsupportedFeature.bind(this), - fontRegistry: fontRegistry - }); - this.fontLoader.bind(font).then(function () { - _this13.commonObjs.resolve(id, font); - }, function (reason) { - messageHandler.sendWithPromise('FontFallback', { - id: id - })["finally"](function () { - _this13.commonObjs.resolve(id, font); - }); - }); - break; - - case 'FontPath': - case 'FontType3Res': - this.commonObjs.resolve(id, exportedData); - break; - - default: - throw new Error("Got unknown common object type ".concat(type)); - } - }, this); - messageHandler.on('obj', function (data) { - if (this.destroyed) { - return undefined; - } - - var _data2 = _slicedToArray(data, 4), - id = _data2[0], - pageIndex = _data2[1], - type = _data2[2], - imageData = _data2[3]; - - var pageProxy = this.pageCache[pageIndex]; - - if (pageProxy.objs.has(id)) { - return undefined; - } - - switch (type) { - case 'JpegStream': - return new Promise(function (resolve, reject) { - var img = new Image(); - - img.onload = function () { - resolve(img); - }; - - img.onerror = function () { - reject(new Error('Error during JPEG image loading')); - (0, _display_utils.releaseImageResources)(img); - }; - - img.src = imageData; - }).then(function (img) { - pageProxy.objs.resolve(id, img); - }); - - case 'Image': - pageProxy.objs.resolve(id, imageData); - var MAX_IMAGE_SIZE_TO_STORE = 8000000; - - if (imageData && 'data' in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) { - pageProxy.cleanupAfterRender = true; - } - - break; - - default: - throw new Error("Got unknown object type ".concat(type)); - } - - return undefined; - }, this); - messageHandler.on('DocProgress', function (data) { - if (this.destroyed) { - return; - } - - if (loadingTask.onProgress) { - loadingTask.onProgress({ - loaded: data.loaded, - total: data.total - }); - } - }, this); - messageHandler.on('PageError', function (data) { - if (this.destroyed) { - return; - } - - var page = this.pageCache[data.pageIndex]; - var intentState = page.intentStates[data.intent]; - - if (intentState.displayReadyCapability) { - intentState.displayReadyCapability.reject(new Error(data.error)); - } else { - throw new Error(data.error); - } - - if (intentState.operatorList) { - intentState.operatorList.lastChunk = true; - - for (var i = 0; i < intentState.renderTasks.length; i++) { - intentState.renderTasks[i].operatorListChanged(); - } - } - }, this); - messageHandler.on('UnsupportedFeature', this._onUnsupportedFeature, this); - messageHandler.on('JpegDecode', function (data) { - if (this.destroyed) { - return Promise.reject(new Error('Worker was destroyed')); - } - - if (typeof document === 'undefined') { - return Promise.reject(new Error('"document" is not defined.')); - } - - var _data3 = _slicedToArray(data, 2), - imageUrl = _data3[0], - components = _data3[1]; - - if (components !== 3 && components !== 1) { - return Promise.reject(new Error('Only 3 components or 1 component can be returned')); - } - - return new Promise(function (resolve, reject) { - var img = new Image(); - - img.onload = function () { - var width = img.width, - height = img.height; - var size = width * height; - var rgbaLength = size * 4; - var buf = new Uint8ClampedArray(size * components); - var tmpCanvas = document.createElement('canvas'); - tmpCanvas.width = width; - tmpCanvas.height = height; - var tmpCtx = tmpCanvas.getContext('2d'); - tmpCtx.drawImage(img, 0, 0); - var data = tmpCtx.getImageData(0, 0, width, height).data; - - if (components === 3) { - for (var i = 0, j = 0; i < rgbaLength; i += 4, j += 3) { - buf[j] = data[i]; - buf[j + 1] = data[i + 1]; - buf[j + 2] = data[i + 2]; - } - } else if (components === 1) { - for (var _i2 = 0, _j = 0; _i2 < rgbaLength; _i2 += 4, _j++) { - buf[_j] = data[_i2]; - } - } - - resolve({ - data: buf, - width: width, - height: height - }); - (0, _display_utils.releaseImageResources)(img); - tmpCanvas.width = 0; - tmpCanvas.height = 0; - tmpCanvas = null; - tmpCtx = null; - }; - - img.onerror = function () { - reject(new Error('JpegDecode failed to load image')); - (0, _display_utils.releaseImageResources)(img); - }; - - img.src = imageUrl; - }); - }, this); - messageHandler.on('FetchBuiltInCMap', function (data) { - if (this.destroyed) { - return Promise.reject(new Error('Worker was destroyed')); - } - - return this.CMapReaderFactory.fetch({ - name: data.name - }); - }, this); + if (this._passwordCapability) { + this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback")); } - }, { - key: "_onUnsupportedFeature", - value: function _onUnsupportedFeature(_ref10) { - var featureId = _ref10.featureId; + + const waitOn = []; + + for (const page of _classPrivateFieldGet(this, _pageCache).values()) { + waitOn.push(page._destroy()); + } + + _classPrivateFieldGet(this, _pageCache).clear(); + + _classPrivateFieldGet(this, _pagePromises).clear(); + + if (this.hasOwnProperty("annotationStorage")) { + this.annotationStorage.resetModified(); + } + + const terminated = this.messageHandler.sendWithPromise("Terminate", null); + waitOn.push(terminated); + Promise.all(waitOn).then(() => { + this.commonObjs.clear(); + this.fontLoader.clear(); + + _classPrivateFieldSet(this, _metadataPromise, null); + + this._getFieldObjectsPromise = null; + this._hasJSActionsPromise = null; + + if (this._networkStream) { + this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated.")); + } + + if (this.messageHandler) { + this.messageHandler.destroy(); + this.messageHandler = null; + } + + this.destroyCapability.resolve(); + }, this.destroyCapability.reject); + return this.destroyCapability.promise; + } + + setupMessageHandler() { + const { + messageHandler, + loadingTask + } = this; + messageHandler.on("GetReader", (data, sink) => { + (0, _util.assert)(this._networkStream, "GetReader - no `IPDFStream` instance available."); + this._fullReader = this._networkStream.getFullReader(); + + this._fullReader.onProgress = evt => { + this._lastProgress = { + loaded: evt.loaded, + total: evt.total + }; + }; + + sink.onPull = () => { + this._fullReader.read().then(function (_ref8) { + let { + value, + done + } = _ref8; + + if (done) { + sink.close(); + return; + } + + (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetReader - expected an ArrayBuffer."); + sink.enqueue(new Uint8Array(value), 1, [value]); + }).catch(reason => { + sink.error(reason); + }); + }; + + sink.onCancel = reason => { + this._fullReader.cancel(reason); + + sink.ready.catch(readyReason => { + if (this.destroyed) { + return; + } + + throw readyReason; + }); + }; + }); + messageHandler.on("ReaderHeadersReady", data => { + const headersCapability = (0, _util.createPromiseCapability)(); + const fullReader = this._fullReader; + fullReader.headersReady.then(() => { + if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) { + if (this._lastProgress) { + var _loadingTask$onProgre; + + (_loadingTask$onProgre = loadingTask.onProgress) === null || _loadingTask$onProgre === void 0 ? void 0 : _loadingTask$onProgre.call(loadingTask, this._lastProgress); + } + + fullReader.onProgress = evt => { + var _loadingTask$onProgre2; + + (_loadingTask$onProgre2 = loadingTask.onProgress) === null || _loadingTask$onProgre2 === void 0 ? void 0 : _loadingTask$onProgre2.call(loadingTask, { + loaded: evt.loaded, + total: evt.total + }); + }; + } + + headersCapability.resolve({ + isStreamingSupported: fullReader.isStreamingSupported, + isRangeSupported: fullReader.isRangeSupported, + contentLength: fullReader.contentLength + }); + }, headersCapability.reject); + return headersCapability.promise; + }); + messageHandler.on("GetRangeReader", (data, sink) => { + (0, _util.assert)(this._networkStream, "GetRangeReader - no `IPDFStream` instance available."); + + const rangeReader = this._networkStream.getRangeReader(data.begin, data.end); + + if (!rangeReader) { + sink.close(); + return; + } + + sink.onPull = () => { + rangeReader.read().then(function (_ref9) { + let { + value, + done + } = _ref9; + + if (done) { + sink.close(); + return; + } + + (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetRangeReader - expected an ArrayBuffer."); + sink.enqueue(new Uint8Array(value), 1, [value]); + }).catch(reason => { + sink.error(reason); + }); + }; + + sink.onCancel = reason => { + rangeReader.cancel(reason); + sink.ready.catch(readyReason => { + if (this.destroyed) { + return; + } + + throw readyReason; + }); + }; + }); + messageHandler.on("GetDoc", _ref10 => { + let { + pdfInfo + } = _ref10; + this._numPages = pdfInfo.numPages; + this._htmlForXfa = pdfInfo.htmlForXfa; + delete pdfInfo.htmlForXfa; + + loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this)); + }); + messageHandler.on("DocException", function (ex) { + let reason; + + switch (ex.name) { + case "PasswordException": + reason = new _util.PasswordException(ex.message, ex.code); + break; + + case "InvalidPDFException": + reason = new _util.InvalidPDFException(ex.message); + break; + + case "MissingPDFException": + reason = new _util.MissingPDFException(ex.message); + break; + + case "UnexpectedResponseException": + reason = new _util.UnexpectedResponseException(ex.message, ex.status); + break; + + case "UnknownErrorException": + reason = new _util.UnknownErrorException(ex.message, ex.details); + break; + + default: + (0, _util.unreachable)("DocException - expected a valid Error."); + } + + loadingTask._capability.reject(reason); + }); + messageHandler.on("PasswordRequest", exception => { + this._passwordCapability = (0, _util.createPromiseCapability)(); + + if (loadingTask.onPassword) { + const updatePassword = password => { + if (password instanceof Error) { + this._passwordCapability.reject(password); + } else { + this._passwordCapability.resolve({ + password + }); + } + }; + + try { + loadingTask.onPassword(updatePassword, exception.code); + } catch (ex) { + this._passwordCapability.reject(ex); + } + } else { + this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code)); + } + + return this._passwordCapability.promise; + }); + messageHandler.on("DataLoaded", data => { + var _loadingTask$onProgre3; + + (_loadingTask$onProgre3 = loadingTask.onProgress) === null || _loadingTask$onProgre3 === void 0 ? void 0 : _loadingTask$onProgre3.call(loadingTask, { + loaded: data.length, + total: data.length + }); + this.downloadInfoCapability.resolve(data); + }); + messageHandler.on("StartRenderPage", data => { + if (this.destroyed) { + return; + } + + const page = _classPrivateFieldGet(this, _pageCache).get(data.pageIndex); + + page._startRenderPage(data.transparency, data.cacheKey); + }); + messageHandler.on("commonobj", _ref11 => { + var _globalThis$FontInspe; + + let [id, type, exportedData] = _ref11; if (this.destroyed) { return; } - if (this.loadingTask.onUnsupportedFeature) { - this.loadingTask.onUnsupportedFeature(featureId); - } - } - }, { - key: "getData", - value: function getData() { - return this.messageHandler.sendWithPromise('GetData', null); - } - }, { - key: "getPage", - value: function getPage(pageNumber) { - var _this14 = this; - - if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) { - return Promise.reject(new Error('Invalid page request')); + if (this.commonObjs.has(id)) { + return; } - var pageIndex = pageNumber - 1; + switch (type) { + case "Font": + const params = this._params; - if (pageIndex in this.pagePromises) { - return this.pagePromises[pageIndex]; - } - - var promise = this.messageHandler.sendWithPromise('GetPage', { - pageIndex: pageIndex - }).then(function (pageInfo) { - if (_this14.destroyed) { - throw new Error('Transport destroyed'); - } - - var page = new PDFPageProxy(pageIndex, pageInfo, _this14, _this14._params.pdfBug); - _this14.pageCache[pageIndex] = page; - return page; - }); - this.pagePromises[pageIndex] = promise; - return promise; - } - }, { - key: "getPageIndex", - value: function getPageIndex(ref) { - return this.messageHandler.sendWithPromise('GetPageIndex', { - ref: ref - })["catch"](function (reason) { - return Promise.reject(new Error(reason)); - }); - } - }, { - key: "getAnnotations", - value: function getAnnotations(pageIndex, intent) { - return this.messageHandler.sendWithPromise('GetAnnotations', { - pageIndex: pageIndex, - intent: intent - }); - } - }, { - key: "getDestinations", - value: function getDestinations() { - return this.messageHandler.sendWithPromise('GetDestinations', null); - } - }, { - key: "getDestination", - value: function getDestination(id) { - if (typeof id !== 'string') { - return Promise.reject(new Error('Invalid destination request.')); - } - - return this.messageHandler.sendWithPromise('GetDestination', { - id: id - }); - } - }, { - key: "getPageLabels", - value: function getPageLabels() { - return this.messageHandler.sendWithPromise('GetPageLabels', null); - } - }, { - key: "getPageLayout", - value: function getPageLayout() { - return this.messageHandler.sendWithPromise('GetPageLayout', null); - } - }, { - key: "getPageMode", - value: function getPageMode() { - return this.messageHandler.sendWithPromise('GetPageMode', null); - } - }, { - key: "getViewerPreferences", - value: function getViewerPreferences() { - return this.messageHandler.sendWithPromise('GetViewerPreferences', null); - } - }, { - key: "getOpenActionDestination", - value: function getOpenActionDestination() { - return this.messageHandler.sendWithPromise('GetOpenActionDestination', null); - } - }, { - key: "getAttachments", - value: function getAttachments() { - return this.messageHandler.sendWithPromise('GetAttachments', null); - } - }, { - key: "getJavaScript", - value: function getJavaScript() { - return this.messageHandler.sendWithPromise('GetJavaScript', null); - } - }, { - key: "getOutline", - value: function getOutline() { - return this.messageHandler.sendWithPromise('GetOutline', null); - } - }, { - key: "getPermissions", - value: function getPermissions() { - return this.messageHandler.sendWithPromise('GetPermissions', null); - } - }, { - key: "getMetadata", - value: function getMetadata() { - var _this15 = this; - - return this.messageHandler.sendWithPromise('GetMetadata', null).then(function (results) { - return { - info: results[0], - metadata: results[1] ? new _metadata.Metadata(results[1]) : null, - contentDispositionFilename: _this15._fullReader ? _this15._fullReader.filename : null - }; - }); - } - }, { - key: "getStats", - value: function getStats() { - return this.messageHandler.sendWithPromise('GetStats', null); - } - }, { - key: "startCleanup", - value: function startCleanup() { - var _this16 = this; - - this.messageHandler.sendWithPromise('Cleanup', null).then(function () { - for (var i = 0, ii = _this16.pageCache.length; i < ii; i++) { - var page = _this16.pageCache[i]; - - if (page) { - page.cleanup(); + if ("error" in exportedData) { + const exportedError = exportedData.error; + (0, _util.warn)(`Error during font loading: ${exportedError}`); + this.commonObjs.resolve(id, exportedError); + break; } - } - _this16.commonObjs.clear(); + let fontRegistry = null; - _this16.fontLoader.clear(); + if (params.pdfBug && (_globalThis$FontInspe = globalThis.FontInspector) !== null && _globalThis$FontInspe !== void 0 && _globalThis$FontInspe.enabled) { + fontRegistry = { + registerFont(font, url) { + globalThis.FontInspector.fontAdded(font, url); + } + + }; + } + + const font = new _font_loader.FontFaceObject(exportedData, { + isEvalSupported: params.isEvalSupported, + disableFontFace: params.disableFontFace, + ignoreErrors: params.ignoreErrors, + onUnsupportedFeature: this._onUnsupportedFeature.bind(this), + fontRegistry + }); + this.fontLoader.bind(font).catch(reason => { + return messageHandler.sendWithPromise("FontFallback", { + id + }); + }).finally(() => { + if (!params.fontExtraProperties && font.data) { + font.data = null; + } + + this.commonObjs.resolve(id, font); + }); + break; + + case "FontPath": + case "Image": + this.commonObjs.resolve(id, exportedData); + break; + + default: + throw new Error(`Got unknown common object type ${type}`); + } + }); + messageHandler.on("obj", _ref12 => { + let [id, pageIndex, type, imageData] = _ref12; + + if (this.destroyed) { + return; + } + + const pageProxy = _classPrivateFieldGet(this, _pageCache).get(pageIndex); + + if (pageProxy.objs.has(id)) { + return; + } + + switch (type) { + case "Image": + pageProxy.objs.resolve(id, imageData); + const MAX_IMAGE_SIZE_TO_STORE = 8000000; + + if (imageData) { + let length; + + if (imageData.bitmap) { + const { + bitmap, + width, + height + } = imageData; + length = width * height * 4; + + pageProxy._bitmaps.add(bitmap); + } else { + var _imageData$data; + + length = ((_imageData$data = imageData.data) === null || _imageData$data === void 0 ? void 0 : _imageData$data.length) || 0; + } + + if (length > MAX_IMAGE_SIZE_TO_STORE) { + pageProxy.cleanupAfterRender = true; + } + } + + break; + + case "Pattern": + pageProxy.objs.resolve(id, imageData); + break; + + default: + throw new Error(`Got unknown object type ${type}`); + } + }); + messageHandler.on("DocProgress", data => { + var _loadingTask$onProgre4; + + if (this.destroyed) { + return; + } + + (_loadingTask$onProgre4 = loadingTask.onProgress) === null || _loadingTask$onProgre4 === void 0 ? void 0 : _loadingTask$onProgre4.call(loadingTask, { + loaded: data.loaded, + total: data.total }); - } - }, { - key: "loadingParams", - get: function get() { - var params = this._params; - return (0, _util.shadow)(this, 'loadingParams', { - disableAutoFetch: params.disableAutoFetch, - disableCreateObjectURL: params.disableCreateObjectURL, - disableFontFace: params.disableFontFace, - nativeImageDecoderSupport: params.nativeImageDecoderSupport - }); - } - }]); + }); + messageHandler.on("DocStats", data => { + if (this.destroyed) { + return; + } - return WorkerTransport; -}(); + _classPrivateFieldSet(this, _docStats, Object.freeze({ + streamTypes: Object.freeze(data.streamTypes), + fontTypes: Object.freeze(data.fontTypes) + })); + }); + messageHandler.on("UnsupportedFeature", this._onUnsupportedFeature.bind(this)); + messageHandler.on("FetchBuiltInCMap", data => { + if (this.destroyed) { + return Promise.reject(new Error("Worker was destroyed.")); + } -var PDFObjects = -/*#__PURE__*/ -function () { - function PDFObjects() { - _classCallCheck(this, PDFObjects); + if (!this.CMapReaderFactory) { + return Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.")); + } - this._objs = Object.create(null); + return this.CMapReaderFactory.fetch(data); + }); + messageHandler.on("FetchStandardFontData", data => { + if (this.destroyed) { + return Promise.reject(new Error("Worker was destroyed.")); + } + + if (!this.StandardFontDataFactory) { + return Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.")); + } + + return this.StandardFontDataFactory.fetch(data); + }); } - _createClass(PDFObjects, [{ - key: "_ensureObj", - value: function _ensureObj(objId) { - if (this._objs[objId]) { - return this._objs[objId]; + _onUnsupportedFeature(_ref13) { + var _this$loadingTask$onU, _this$loadingTask; + + let { + featureId + } = _ref13; + + if (this.destroyed) { + return; + } + + (_this$loadingTask$onU = (_this$loadingTask = this.loadingTask).onUnsupportedFeature) === null || _this$loadingTask$onU === void 0 ? void 0 : _this$loadingTask$onU.call(_this$loadingTask, featureId); + } + + getData() { + return this.messageHandler.sendWithPromise("GetData", null); + } + + getPage(pageNumber) { + if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) { + return Promise.reject(new Error("Invalid page request.")); + } + + const pageIndex = pageNumber - 1, + cachedPromise = _classPrivateFieldGet(this, _pagePromises).get(pageIndex); + + if (cachedPromise) { + return cachedPromise; + } + + const promise = this.messageHandler.sendWithPromise("GetPage", { + pageIndex + }).then(pageInfo => { + if (this.destroyed) { + throw new Error("Transport destroyed"); } - return this._objs[objId] = { - capability: (0, _util.createPromiseCapability)(), - data: null, - resolved: false + const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.ownerDocument, this._params.pdfBug); + + _classPrivateFieldGet(this, _pageCache).set(pageIndex, page); + + return page; + }); + + _classPrivateFieldGet(this, _pagePromises).set(pageIndex, promise); + + return promise; + } + + getPageIndex(ref) { + if (typeof ref !== "object" || ref === null || !Number.isInteger(ref.num) || ref.num < 0 || !Number.isInteger(ref.gen) || ref.gen < 0) { + return Promise.reject(new Error("Invalid pageIndex request.")); + } + + return this.messageHandler.sendWithPromise("GetPageIndex", { + num: ref.num, + gen: ref.gen + }); + } + + getAnnotations(pageIndex, intent) { + return this.messageHandler.sendWithPromise("GetAnnotations", { + pageIndex, + intent + }); + } + + saveDocument() { + var _this$_fullReader$fil, _this$_fullReader; + + return this.messageHandler.sendWithPromise("SaveDocument", { + isPureXfa: !!this._htmlForXfa, + numPages: this._numPages, + annotationStorage: this.annotationStorage.serializable, + filename: (_this$_fullReader$fil = (_this$_fullReader = this._fullReader) === null || _this$_fullReader === void 0 ? void 0 : _this$_fullReader.filename) !== null && _this$_fullReader$fil !== void 0 ? _this$_fullReader$fil : null + }).finally(() => { + this.annotationStorage.resetModified(); + }); + } + + getFieldObjects() { + return this._getFieldObjectsPromise || (this._getFieldObjectsPromise = this.messageHandler.sendWithPromise("GetFieldObjects", null)); + } + + hasJSActions() { + return this._hasJSActionsPromise || (this._hasJSActionsPromise = this.messageHandler.sendWithPromise("HasJSActions", null)); + } + + getCalculationOrderIds() { + return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null); + } + + getDestinations() { + return this.messageHandler.sendWithPromise("GetDestinations", null); + } + + getDestination(id) { + if (typeof id !== "string") { + return Promise.reject(new Error("Invalid destination request.")); + } + + return this.messageHandler.sendWithPromise("GetDestination", { + id + }); + } + + getPageLabels() { + return this.messageHandler.sendWithPromise("GetPageLabels", null); + } + + getPageLayout() { + return this.messageHandler.sendWithPromise("GetPageLayout", null); + } + + getPageMode() { + return this.messageHandler.sendWithPromise("GetPageMode", null); + } + + getViewerPreferences() { + return this.messageHandler.sendWithPromise("GetViewerPreferences", null); + } + + getOpenAction() { + return this.messageHandler.sendWithPromise("GetOpenAction", null); + } + + getAttachments() { + return this.messageHandler.sendWithPromise("GetAttachments", null); + } + + getJavaScript() { + return this.messageHandler.sendWithPromise("GetJavaScript", null); + } + + getDocJSActions() { + return this.messageHandler.sendWithPromise("GetDocJSActions", null); + } + + getPageJSActions(pageIndex) { + return this.messageHandler.sendWithPromise("GetPageJSActions", { + pageIndex + }); + } + + getStructTree(pageIndex) { + return this.messageHandler.sendWithPromise("GetStructTree", { + pageIndex + }); + } + + getOutline() { + return this.messageHandler.sendWithPromise("GetOutline", null); + } + + getOptionalContentConfig() { + return this.messageHandler.sendWithPromise("GetOptionalContentConfig", null).then(results => { + return new _optional_content_config.OptionalContentConfig(results); + }); + } + + getPermissions() { + return this.messageHandler.sendWithPromise("GetPermissions", null); + } + + getMetadata() { + return _classPrivateFieldGet(this, _metadataPromise) || _classPrivateFieldSet(this, _metadataPromise, this.messageHandler.sendWithPromise("GetMetadata", null).then(results => { + var _this$_fullReader$fil2, _this$_fullReader2, _this$_fullReader$con, _this$_fullReader3; + + return { + info: results[0], + metadata: results[1] ? new _metadata.Metadata(results[1]) : null, + contentDispositionFilename: (_this$_fullReader$fil2 = (_this$_fullReader2 = this._fullReader) === null || _this$_fullReader2 === void 0 ? void 0 : _this$_fullReader2.filename) !== null && _this$_fullReader$fil2 !== void 0 ? _this$_fullReader$fil2 : null, + contentLength: (_this$_fullReader$con = (_this$_fullReader3 = this._fullReader) === null || _this$_fullReader3 === void 0 ? void 0 : _this$_fullReader3.contentLength) !== null && _this$_fullReader$con !== void 0 ? _this$_fullReader$con : null }; + })); + } + + getMarkInfo() { + return this.messageHandler.sendWithPromise("GetMarkInfo", null); + } + + async startCleanup() { + let keepLoadedFonts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + await this.messageHandler.sendWithPromise("Cleanup", null); + + if (this.destroyed) { + return; } - }, { - key: "get", - value: function get(objId) { - var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - if (callback) { - this._ensureObj(objId).capability.promise.then(callback); + for (const page of _classPrivateFieldGet(this, _pageCache).values()) { + const cleanupSuccessful = page.cleanup(); - return null; + if (!cleanupSuccessful) { + throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`); } - - var obj = this._objs[objId]; - - if (!obj || !obj.resolved) { - throw new Error("Requesting object that isn't resolved yet ".concat(objId, ".")); - } - - return obj.data; } - }, { - key: "has", - value: function has(objId) { - var obj = this._objs[objId]; - return obj ? obj.resolved : false; + + this.commonObjs.clear(); + + if (!keepLoadedFonts) { + this.fontLoader.clear(); } - }, { - key: "resolve", - value: function resolve(objId, data) { - var obj = this._ensureObj(objId); - obj.resolved = true; - obj.data = data; - obj.capability.resolve(data); + _classPrivateFieldSet(this, _metadataPromise, null); + + this._getFieldObjectsPromise = null; + this._hasJSActionsPromise = null; + } + + get loadingParams() { + const params = this._params; + return (0, _util.shadow)(this, "loadingParams", { + disableAutoFetch: params.disableAutoFetch, + enableXfa: params.enableXfa + }); + } + +} + +var _objs = /*#__PURE__*/new WeakMap(); + +var _ensureObj = /*#__PURE__*/new WeakSet(); + +class PDFObjects { + constructor() { + _classPrivateMethodInitSpec(this, _ensureObj); + + _classPrivateFieldInitSpec(this, _objs, { + writable: true, + value: Object.create(null) + }); + } + + get(objId) { + let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + + if (callback) { + const obj = _classPrivateMethodGet(this, _ensureObj, _ensureObj2).call(this, objId); + + obj.capability.promise.then(() => callback(obj.data)); + return null; } - }, { - key: "clear", - value: function clear() { - for (var objId in this._objs) { - var data = this._objs[objId].data; - if (typeof Image !== 'undefined' && data instanceof Image) { - (0, _display_utils.releaseImageResources)(data); - } - } + const obj = _classPrivateFieldGet(this, _objs)[objId]; - this._objs = Object.create(null); + if (!(obj !== null && obj !== void 0 && obj.capability.settled)) { + throw new Error(`Requesting object that isn't resolved yet ${objId}.`); } - }]); - return PDFObjects; -}(); + return obj.data; + } -var RenderTask = -/*#__PURE__*/ -function () { - function RenderTask(internalRenderTask) { - _classCallCheck(this, RenderTask); + has(objId) { + const obj = _classPrivateFieldGet(this, _objs)[objId]; + + return (obj === null || obj === void 0 ? void 0 : obj.capability.settled) || false; + } + + resolve(objId) { + let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + + const obj = _classPrivateMethodGet(this, _ensureObj, _ensureObj2).call(this, objId); + + obj.data = data; + obj.capability.resolve(); + } + + clear() { + _classPrivateFieldSet(this, _objs, Object.create(null)); + } + +} + +function _ensureObj2(objId) { + const obj = _classPrivateFieldGet(this, _objs)[objId]; + + if (obj) { + return obj; + } + + return _classPrivateFieldGet(this, _objs)[objId] = { + capability: (0, _util.createPromiseCapability)(), + data: null + }; +} + +var _internalRenderTask = /*#__PURE__*/new WeakMap(); + +class RenderTask { + constructor(internalRenderTask) { + _classPrivateFieldInitSpec(this, _internalRenderTask, { + writable: true, + value: null + }); + + _classPrivateFieldSet(this, _internalRenderTask, internalRenderTask); - this._internalRenderTask = internalRenderTask; this.onContinue = null; } - _createClass(RenderTask, [{ - key: "cancel", - value: function cancel() { - this._internalRenderTask.cancel(); + get promise() { + return _classPrivateFieldGet(this, _internalRenderTask).capability.promise; + } + + cancel() { + _classPrivateFieldGet(this, _internalRenderTask).cancel(); + } + + get separateAnnots() { + const { + separateAnnots + } = _classPrivateFieldGet(this, _internalRenderTask).operatorList; + + if (!separateAnnots) { + return false; } - }, { - key: "then", - value: function then(onFulfilled, onRejected) { - (0, _display_utils.deprecated)('RenderTask.then method, use the `promise` getter instead.'); - return this.promise.then.apply(this.promise, arguments); + + const { + annotationCanvasMap + } = _classPrivateFieldGet(this, _internalRenderTask); + + return separateAnnots.form || separateAnnots.canvas && (annotationCanvasMap === null || annotationCanvasMap === void 0 ? void 0 : annotationCanvasMap.size) > 0; + } + +} + +exports.RenderTask = RenderTask; + +class InternalRenderTask { + constructor(_ref14) { + let { + callback, + params, + objs, + commonObjs, + annotationCanvasMap, + operatorList, + pageIndex, + canvasFactory, + useRequestAnimationFrame = false, + pdfBug = false, + pageColors = null + } = _ref14; + this.callback = callback; + this.params = params; + this.objs = objs; + this.commonObjs = commonObjs; + this.annotationCanvasMap = annotationCanvasMap; + this.operatorListIdx = null; + this.operatorList = operatorList; + this._pageIndex = pageIndex; + this.canvasFactory = canvasFactory; + this._pdfBug = pdfBug; + this.pageColors = pageColors; + this.running = false; + this.graphicsReadyCallback = null; + this.graphicsReady = false; + this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined"; + this.cancelled = false; + this.capability = (0, _util.createPromiseCapability)(); + this.task = new RenderTask(this); + this._cancelBound = this.cancel.bind(this); + this._continueBound = this._continue.bind(this); + this._scheduleNextBound = this._scheduleNext.bind(this); + this._nextBound = this._next.bind(this); + this._canvas = params.canvasContext.canvas; + } + + get completed() { + return this.capability.promise.catch(function () {}); + } + + initializeGraphics(_ref15) { + var _globalThis$StepperMa; + + let { + transparency = false, + optionalContentConfig + } = _ref15; + + if (this.cancelled) { + return; } - }, { - key: "promise", - get: function get() { - return this._internalRenderTask.capability.promise; + + if (this._canvas) { + if (_classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _canvasInUse).has(this._canvas)) { + throw new Error("Cannot use the same canvas during multiple render() operations. " + "Use different canvas or ensure previous operations were " + "cancelled or completed."); + } + + _classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _canvasInUse).add(this._canvas); } - }]); - return RenderTask; -}(); + if (this._pdfBug && (_globalThis$StepperMa = globalThis.StepperManager) !== null && _globalThis$StepperMa !== void 0 && _globalThis$StepperMa.enabled) { + this.stepper = globalThis.StepperManager.create(this._pageIndex); + this.stepper.init(this.operatorList); + this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); + } -var InternalRenderTask = function InternalRenderTaskClosure() { - var canvasInRendering = new WeakSet(); + const { + canvasContext, + viewport, + transform, + imageLayer, + background + } = this.params; + this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, imageLayer, optionalContentConfig, this.annotationCanvasMap, this.pageColors); + this.gfx.beginDrawing({ + transform, + viewport, + transparency, + background + }); + this.operatorListIdx = 0; + this.graphicsReady = true; - var InternalRenderTask = - /*#__PURE__*/ - function () { - function InternalRenderTask(_ref11) { - var callback = _ref11.callback, - params = _ref11.params, - objs = _ref11.objs, - commonObjs = _ref11.commonObjs, - operatorList = _ref11.operatorList, - pageNumber = _ref11.pageNumber, - canvasFactory = _ref11.canvasFactory, - webGLContext = _ref11.webGLContext, - _ref11$useRequestAnim = _ref11.useRequestAnimationFrame, - useRequestAnimationFrame = _ref11$useRequestAnim === void 0 ? false : _ref11$useRequestAnim, - _ref11$pdfBug = _ref11.pdfBug, - pdfBug = _ref11$pdfBug === void 0 ? false : _ref11$pdfBug; + if (this.graphicsReadyCallback) { + this.graphicsReadyCallback(); + } + } - _classCallCheck(this, InternalRenderTask); + cancel() { + let error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + this.running = false; + this.cancelled = true; - this.callback = callback; - this.params = params; - this.objs = objs; - this.commonObjs = commonObjs; - this.operatorListIdx = null; - this.operatorList = operatorList; - this.pageNumber = pageNumber; - this.canvasFactory = canvasFactory; - this.webGLContext = webGLContext; - this._pdfBug = pdfBug; + if (this.gfx) { + this.gfx.endDrawing(); + } + + if (this._canvas) { + _classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _canvasInUse).delete(this._canvas); + } + + this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, "canvas")); + } + + operatorListChanged() { + if (!this.graphicsReady) { + if (!this.graphicsReadyCallback) { + this.graphicsReadyCallback = this._continueBound; + } + + return; + } + + if (this.stepper) { + this.stepper.updateOperatorList(this.operatorList); + } + + if (this.running) { + return; + } + + this._continue(); + } + + _continue() { + this.running = true; + + if (this.cancelled) { + return; + } + + if (this.task.onContinue) { + this.task.onContinue(this._scheduleNextBound); + } else { + this._scheduleNext(); + } + } + + _scheduleNext() { + if (this._useRequestAnimationFrame) { + window.requestAnimationFrame(() => { + this._nextBound().catch(this._cancelBound); + }); + } else { + Promise.resolve().then(this._nextBound).catch(this._cancelBound); + } + } + + async _next() { + if (this.cancelled) { + return; + } + + this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper); + + if (this.operatorListIdx === this.operatorList.argsArray.length) { this.running = false; - this.graphicsReadyCallback = null; - this.graphicsReady = false; - this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== 'undefined'; - this.cancelled = false; - this.capability = (0, _util.createPromiseCapability)(); - this.task = new RenderTask(this); - this._continueBound = this._continue.bind(this); - this._scheduleNextBound = this._scheduleNext.bind(this); - this._nextBound = this._next.bind(this); - this._canvas = params.canvasContext.canvas; + + if (this.operatorList.lastChunk) { + this.gfx.endDrawing(); + + if (this._canvas) { + _classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _canvasInUse).delete(this._canvas); + } + + this.callback(); + } } + } - _createClass(InternalRenderTask, [{ - key: "initializeGraphics", - value: function initializeGraphics() { - var transparency = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; +} - if (this.cancelled) { - return; - } - - if (this._canvas) { - if (canvasInRendering.has(this._canvas)) { - throw new Error('Cannot use the same canvas during multiple render() operations. ' + 'Use different canvas or ensure previous operations were ' + 'cancelled or completed.'); - } - - canvasInRendering.add(this._canvas); - } - - if (this._pdfBug && _global_scope["default"].StepperManager && _global_scope["default"].StepperManager.enabled) { - this.stepper = _global_scope["default"].StepperManager.create(this.pageNumber - 1); - this.stepper.init(this.operatorList); - this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); - } - - var _this$params = this.params, - canvasContext = _this$params.canvasContext, - viewport = _this$params.viewport, - transform = _this$params.transform, - imageLayer = _this$params.imageLayer, - background = _this$params.background; - this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, imageLayer); - this.gfx.beginDrawing({ - transform: transform, - viewport: viewport, - transparency: transparency, - background: background - }); - this.operatorListIdx = 0; - this.graphicsReady = true; - - if (this.graphicsReadyCallback) { - this.graphicsReadyCallback(); - } - } - }, { - key: "cancel", - value: function cancel() { - var error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - this.running = false; - this.cancelled = true; - - if (this.gfx) { - this.gfx.endDrawing(); - } - - if (this._canvas) { - canvasInRendering["delete"](this._canvas); - } - - this.callback(error || new _display_utils.RenderingCancelledException("Rendering cancelled, page ".concat(this.pageNumber), 'canvas')); - } - }, { - key: "operatorListChanged", - value: function operatorListChanged() { - if (!this.graphicsReady) { - if (!this.graphicsReadyCallback) { - this.graphicsReadyCallback = this._continueBound; - } - - return; - } - - if (this.stepper) { - this.stepper.updateOperatorList(this.operatorList); - } - - if (this.running) { - return; - } - - this._continue(); - } - }, { - key: "_continue", - value: function _continue() { - this.running = true; - - if (this.cancelled) { - return; - } - - if (this.task.onContinue) { - this.task.onContinue(this._scheduleNextBound); - } else { - this._scheduleNext(); - } - } - }, { - key: "_scheduleNext", - value: function _scheduleNext() { - var _this17 = this; - - if (this._useRequestAnimationFrame) { - window.requestAnimationFrame(function () { - _this17._nextBound()["catch"](_this17.cancel.bind(_this17)); - }); - } else { - Promise.resolve().then(this._nextBound)["catch"](this.cancel.bind(this)); - } - } - }, { - key: "_next", - value: function () { - var _next2 = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee() { - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (!this.cancelled) { - _context.next = 2; - break; - } - - return _context.abrupt("return"); - - case 2: - this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper); - - if (this.operatorListIdx === this.operatorList.argsArray.length) { - this.running = false; - - if (this.operatorList.lastChunk) { - this.gfx.endDrawing(); - - if (this._canvas) { - canvasInRendering["delete"](this._canvas); - } - - this.callback(); - } - } - - case 4: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function _next() { - return _next2.apply(this, arguments); - } - - return _next; - }() - }]); - - return InternalRenderTask; - }(); - - return InternalRenderTask; -}(); - -var version = '2.2.228'; +var _canvasInUse = { + writable: true, + value: new WeakSet() +}; +const version = '2.16.105'; exports.version = version; -var build = 'd7afb74a'; +const build = '172ccdbe5'; exports.build = build; /***/ }), -/* 148 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 130 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -module.exports = __w_pdfjs_require__(149); - -/***/ }), -/* 149 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(module) { - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -var runtime = function (exports) { - "use strict"; - - var Op = Object.prototype; - var hasOwn = Op.hasOwnProperty; - var undefined; - var $Symbol = typeof Symbol === "function" ? Symbol : {}; - var iteratorSymbol = $Symbol.iterator || "@@iterator"; - var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; - var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; - - function wrap(innerFn, outerFn, self, tryLocsList) { - var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; - var generator = Object.create(protoGenerator.prototype); - var context = new Context(tryLocsList || []); - generator._invoke = makeInvokeMethod(innerFn, self, context); - return generator; - } - - exports.wrap = wrap; - - function tryCatch(fn, obj, arg) { - try { - return { - type: "normal", - arg: fn.call(obj, arg) - }; - } catch (err) { - return { - type: "throw", - arg: err - }; - } - } - - var GenStateSuspendedStart = "suspendedStart"; - var GenStateSuspendedYield = "suspendedYield"; - var GenStateExecuting = "executing"; - var GenStateCompleted = "completed"; - var ContinueSentinel = {}; - - function Generator() {} - - function GeneratorFunction() {} - - function GeneratorFunctionPrototype() {} - - var IteratorPrototype = {}; - - IteratorPrototype[iteratorSymbol] = function () { - return this; - }; - - var getProto = Object.getPrototypeOf; - var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); - - if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { - IteratorPrototype = NativeIteratorPrototype; - } - - var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); - GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; - GeneratorFunctionPrototype.constructor = GeneratorFunction; - GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction"; - - function defineIteratorMethods(prototype) { - ["next", "throw", "return"].forEach(function (method) { - prototype[method] = function (arg) { - return this._invoke(method, arg); - }; - }); - } - - exports.isGeneratorFunction = function (genFun) { - var ctor = typeof genFun === "function" && genFun.constructor; - return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === "GeneratorFunction" : false; - }; - - exports.mark = function (genFun) { - if (Object.setPrototypeOf) { - Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); - } else { - genFun.__proto__ = GeneratorFunctionPrototype; - - if (!(toStringTagSymbol in genFun)) { - genFun[toStringTagSymbol] = "GeneratorFunction"; - } - } - - genFun.prototype = Object.create(Gp); - return genFun; - }; - - exports.awrap = function (arg) { - return { - __await: arg - }; - }; - - function AsyncIterator(generator) { - function invoke(method, arg, resolve, reject) { - var record = tryCatch(generator[method], generator, arg); - - if (record.type === "throw") { - reject(record.arg); - } else { - var result = record.arg; - var value = result.value; - - if (value && _typeof(value) === "object" && hasOwn.call(value, "__await")) { - return Promise.resolve(value.__await).then(function (value) { - invoke("next", value, resolve, reject); - }, function (err) { - invoke("throw", err, resolve, reject); - }); - } - - return Promise.resolve(value).then(function (unwrapped) { - result.value = unwrapped; - resolve(result); - }, function (error) { - return invoke("throw", error, resolve, reject); - }); - } - } - - var previousPromise; - - function enqueue(method, arg) { - function callInvokeWithMethodAndArg() { - return new Promise(function (resolve, reject) { - invoke(method, arg, resolve, reject); - }); - } - - return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); - } - - this._invoke = enqueue; - } - - defineIteratorMethods(AsyncIterator.prototype); - - AsyncIterator.prototype[asyncIteratorSymbol] = function () { - return this; - }; - - exports.AsyncIterator = AsyncIterator; - - exports.async = function (innerFn, outerFn, self, tryLocsList) { - var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList)); - return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { - return result.done ? result.value : iter.next(); - }); - }; - - function makeInvokeMethod(innerFn, self, context) { - var state = GenStateSuspendedStart; - return function invoke(method, arg) { - if (state === GenStateExecuting) { - throw new Error("Generator is already running"); - } - - if (state === GenStateCompleted) { - if (method === "throw") { - throw arg; - } - - return doneResult(); - } - - context.method = method; - context.arg = arg; - - while (true) { - var delegate = context.delegate; - - if (delegate) { - var delegateResult = maybeInvokeDelegate(delegate, context); - - if (delegateResult) { - if (delegateResult === ContinueSentinel) continue; - return delegateResult; - } - } - - if (context.method === "next") { - context.sent = context._sent = context.arg; - } else if (context.method === "throw") { - if (state === GenStateSuspendedStart) { - state = GenStateCompleted; - throw context.arg; - } - - context.dispatchException(context.arg); - } else if (context.method === "return") { - context.abrupt("return", context.arg); - } - - state = GenStateExecuting; - var record = tryCatch(innerFn, self, context); - - if (record.type === "normal") { - state = context.done ? GenStateCompleted : GenStateSuspendedYield; - - if (record.arg === ContinueSentinel) { - continue; - } - - return { - value: record.arg, - done: context.done - }; - } else if (record.type === "throw") { - state = GenStateCompleted; - context.method = "throw"; - context.arg = record.arg; - } - } - }; - } - - function maybeInvokeDelegate(delegate, context) { - var method = delegate.iterator[context.method]; - - if (method === undefined) { - context.delegate = null; - - if (context.method === "throw") { - if (delegate.iterator["return"]) { - context.method = "return"; - context.arg = undefined; - maybeInvokeDelegate(delegate, context); - - if (context.method === "throw") { - return ContinueSentinel; - } - } - - context.method = "throw"; - context.arg = new TypeError("The iterator does not provide a 'throw' method"); - } - - return ContinueSentinel; - } - - var record = tryCatch(method, delegate.iterator, context.arg); - - if (record.type === "throw") { - context.method = "throw"; - context.arg = record.arg; - context.delegate = null; - return ContinueSentinel; - } - - var info = record.arg; - - if (!info) { - context.method = "throw"; - context.arg = new TypeError("iterator result is not an object"); - context.delegate = null; - return ContinueSentinel; - } - - if (info.done) { - context[delegate.resultName] = info.value; - context.next = delegate.nextLoc; - - if (context.method !== "return") { - context.method = "next"; - context.arg = undefined; - } - } else { - return info; - } - - context.delegate = null; - return ContinueSentinel; - } - - defineIteratorMethods(Gp); - Gp[toStringTagSymbol] = "Generator"; - - Gp[iteratorSymbol] = function () { - return this; - }; - - Gp.toString = function () { - return "[object Generator]"; - }; - - function pushTryEntry(locs) { - var entry = { - tryLoc: locs[0] - }; - - if (1 in locs) { - entry.catchLoc = locs[1]; - } - - if (2 in locs) { - entry.finallyLoc = locs[2]; - entry.afterLoc = locs[3]; - } - - this.tryEntries.push(entry); - } - - function resetTryEntry(entry) { - var record = entry.completion || {}; - record.type = "normal"; - delete record.arg; - entry.completion = record; - } - - function Context(tryLocsList) { - this.tryEntries = [{ - tryLoc: "root" - }]; - tryLocsList.forEach(pushTryEntry, this); - this.reset(true); - } - - exports.keys = function (object) { - var keys = []; - - for (var key in object) { - keys.push(key); - } - - keys.reverse(); - return function next() { - while (keys.length) { - var key = keys.pop(); - - if (key in object) { - next.value = key; - next.done = false; - return next; - } - } - - next.done = true; - return next; - }; - }; - - function values(iterable) { - if (iterable) { - var iteratorMethod = iterable[iteratorSymbol]; - - if (iteratorMethod) { - return iteratorMethod.call(iterable); - } - - if (typeof iterable.next === "function") { - return iterable; - } - - if (!isNaN(iterable.length)) { - var i = -1, - next = function next() { - while (++i < iterable.length) { - if (hasOwn.call(iterable, i)) { - next.value = iterable[i]; - next.done = false; - return next; - } - } - - next.value = undefined; - next.done = true; - return next; - }; - - return next.next = next; - } - } - - return { - next: doneResult - }; - } - - exports.values = values; - - function doneResult() { - return { - value: undefined, - done: true - }; - } - - Context.prototype = { - constructor: Context, - reset: function reset(skipTempReset) { - this.prev = 0; - this.next = 0; - this.sent = this._sent = undefined; - this.done = false; - this.delegate = null; - this.method = "next"; - this.arg = undefined; - this.tryEntries.forEach(resetTryEntry); - - if (!skipTempReset) { - for (var name in this) { - if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) { - this[name] = undefined; - } - } - } - }, - stop: function stop() { - this.done = true; - var rootEntry = this.tryEntries[0]; - var rootRecord = rootEntry.completion; - - if (rootRecord.type === "throw") { - throw rootRecord.arg; - } - - return this.rval; - }, - dispatchException: function dispatchException(exception) { - if (this.done) { - throw exception; - } - - var context = this; - - function handle(loc, caught) { - record.type = "throw"; - record.arg = exception; - context.next = loc; - - if (caught) { - context.method = "next"; - context.arg = undefined; - } - - return !!caught; - } - - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - var record = entry.completion; - - if (entry.tryLoc === "root") { - return handle("end"); - } - - if (entry.tryLoc <= this.prev) { - var hasCatch = hasOwn.call(entry, "catchLoc"); - var hasFinally = hasOwn.call(entry, "finallyLoc"); - - if (hasCatch && hasFinally) { - if (this.prev < entry.catchLoc) { - return handle(entry.catchLoc, true); - } else if (this.prev < entry.finallyLoc) { - return handle(entry.finallyLoc); - } - } else if (hasCatch) { - if (this.prev < entry.catchLoc) { - return handle(entry.catchLoc, true); - } - } else if (hasFinally) { - if (this.prev < entry.finallyLoc) { - return handle(entry.finallyLoc); - } - } else { - throw new Error("try statement without catch or finally"); - } - } - } - }, - abrupt: function abrupt(type, arg) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { - var finallyEntry = entry; - break; - } - } - - if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) { - finallyEntry = null; - } - - var record = finallyEntry ? finallyEntry.completion : {}; - record.type = type; - record.arg = arg; - - if (finallyEntry) { - this.method = "next"; - this.next = finallyEntry.finallyLoc; - return ContinueSentinel; - } - - return this.complete(record); - }, - complete: function complete(record, afterLoc) { - if (record.type === "throw") { - throw record.arg; - } - - if (record.type === "break" || record.type === "continue") { - this.next = record.arg; - } else if (record.type === "return") { - this.rval = this.arg = record.arg; - this.method = "return"; - this.next = "end"; - } else if (record.type === "normal" && afterLoc) { - this.next = afterLoc; - } - - return ContinueSentinel; - }, - finish: function finish(finallyLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.finallyLoc === finallyLoc) { - this.complete(entry.completion, entry.afterLoc); - resetTryEntry(entry); - return ContinueSentinel; - } - } - }, - "catch": function _catch(tryLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.tryLoc === tryLoc) { - var record = entry.completion; - - if (record.type === "throw") { - var thrown = record.arg; - resetTryEntry(entry); - } - - return thrown; - } - } - - throw new Error("illegal catch attempt"); - }, - delegateYield: function delegateYield(iterable, resultName, nextLoc) { - this.delegate = { - iterator: values(iterable), - resultName: resultName, - nextLoc: nextLoc - }; - - if (this.method === "next") { - this.arg = undefined; - } - - return ContinueSentinel; - } - }; - return exports; -}(( false ? undefined : _typeof(module)) === "object" ? module.exports : {}); - -try { - regeneratorRuntime = runtime; -} catch (accidentalStrictMode) { - Function("r", "regeneratorRuntime = r")(runtime); -} -/* WEBPACK VAR INJECTION */}.call(this, __w_pdfjs_require__(150)(module))) - -/***/ }), -/* 150 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -module.exports = function (module) { - if (!module.webpackPolyfill) { - module.deprecate = function () {}; - - module.paths = []; - if (!module.children) module.children = []; - Object.defineProperty(module, "loaded", { - enumerable: true, - get: function get() { - return module.l; - } - }); - Object.defineProperty(module, "id", { - enumerable: true, - get: function get() { - return module.i; - } - }); - module.webpackPolyfill = 1; - } - - return module; -}; - -/***/ }), -/* 151 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.addLinkAttributes = addLinkAttributes; -exports.getFilenameFromUrl = getFilenameFromUrl; -exports.isFetchSupported = isFetchSupported; -exports.isValidFetchUrl = isValidFetchUrl; -exports.loadScript = loadScript; -exports.deprecated = deprecated; -exports.releaseImageResources = releaseImageResources; -exports.PDFDateString = exports.DummyStatTimer = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = void 0; - -var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148)); +})); +exports.PrintAnnotationStorage = exports.AnnotationStorage = void 0; var _util = __w_pdfjs_require__(1); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +var _editor = __w_pdfjs_require__(131); -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } +var _murmurhash = __w_pdfjs_require__(135); -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } +function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); } -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } +function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; } -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; } -var DEFAULT_LINK_REL = 'noopener noreferrer nofollow'; -exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL; -var SVG_NS = 'http://www.w3.org/2000/svg'; +function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); } -var DOMCanvasFactory = -/*#__PURE__*/ -function () { - function DOMCanvasFactory() { - _classCallCheck(this, DOMCanvasFactory); +function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } } + +function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); } + +function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } + +function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; } + +var _setModified = /*#__PURE__*/new WeakSet(); + +class AnnotationStorage { + constructor() { + _classPrivateMethodInitSpec(this, _setModified); + + this._storage = new Map(); + this._modified = false; + this.onSetModified = null; + this.onResetModified = null; + this.onAnnotationEditor = null; } - _createClass(DOMCanvasFactory, [{ - key: "create", - value: function create(width, height) { - if (width <= 0 || height <= 0) { - throw new Error('Invalid canvas size'); - } + getValue(key, defaultValue) { + const value = this._storage.get(key); - var canvas = document.createElement('canvas'); - var context = canvas.getContext('2d'); - canvas.width = width; - canvas.height = height; - return { - canvas: canvas, - context: context - }; + if (value === undefined) { + return defaultValue; } - }, { - key: "reset", - value: function reset(canvasAndContext, width, height) { - if (!canvasAndContext.canvas) { - throw new Error('Canvas is not specified'); - } - if (width <= 0 || height <= 0) { - throw new Error('Invalid canvas size'); - } + return Object.assign(defaultValue, value); + } - canvasAndContext.canvas.width = width; - canvasAndContext.canvas.height = height; + getRawValue(key) { + return this._storage.get(key); + } + + remove(key) { + this._storage.delete(key); + + if (this._storage.size === 0) { + this.resetModified(); } - }, { - key: "destroy", - value: function destroy(canvasAndContext) { - if (!canvasAndContext.canvas) { - throw new Error('Canvas is not specified'); + + if (typeof this.onAnnotationEditor === "function") { + for (const value of this._storage.values()) { + if (value instanceof _editor.AnnotationEditor) { + return; + } } - canvasAndContext.canvas.width = 0; - canvasAndContext.canvas.height = 0; - canvasAndContext.canvas = null; - canvasAndContext.context = null; + this.onAnnotationEditor(null); } - }]); + } - return DOMCanvasFactory; -}(); + setValue(key, value) { + const obj = this._storage.get(key); + + let modified = false; + + if (obj !== undefined) { + for (const [entry, val] of Object.entries(value)) { + if (obj[entry] !== val) { + modified = true; + obj[entry] = val; + } + } + } else { + modified = true; + + this._storage.set(key, value); + } + + if (modified) { + _classPrivateMethodGet(this, _setModified, _setModified2).call(this); + } + + if (value instanceof _editor.AnnotationEditor && typeof this.onAnnotationEditor === "function") { + this.onAnnotationEditor(value.constructor._type); + } + } + + has(key) { + return this._storage.has(key); + } + + getAll() { + return this._storage.size > 0 ? (0, _util.objectFromMap)(this._storage) : null; + } + + get size() { + return this._storage.size; + } + + resetModified() { + if (this._modified) { + this._modified = false; + + if (typeof this.onResetModified === "function") { + this.onResetModified(); + } + } + } + + get print() { + return new PrintAnnotationStorage(this); + } + + get serializable() { + if (this._storage.size === 0) { + return null; + } + + const clone = new Map(); + + for (const [key, val] of this._storage) { + const serialized = val instanceof _editor.AnnotationEditor ? val.serialize() : val; + + if (serialized) { + clone.set(key, serialized); + } + } + + return clone; + } + + static getHash(map) { + if (!map) { + return ""; + } + + const hash = new _murmurhash.MurmurHash3_64(); + + for (const [key, val] of map) { + hash.update(`${key}:${JSON.stringify(val)}`); + } + + return hash.hexdigest(); + } + +} + +exports.AnnotationStorage = AnnotationStorage; + +function _setModified2() { + if (!this._modified) { + this._modified = true; + + if (typeof this.onSetModified === "function") { + this.onSetModified(); + } + } +} + +var _serializable = /*#__PURE__*/new WeakMap(); + +class PrintAnnotationStorage extends AnnotationStorage { + constructor(parent) { + super(); + + _classPrivateFieldInitSpec(this, _serializable, { + writable: true, + value: null + }); + + _classPrivateFieldSet(this, _serializable, structuredClone(parent.serializable)); + } + + get print() { + (0, _util.unreachable)("Should not call PrintAnnotationStorage.print"); + } + + get serializable() { + return _classPrivateFieldGet(this, _serializable); + } + +} + +exports.PrintAnnotationStorage = PrintAnnotationStorage; + +/***/ }), +/* 131 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditor = void 0; + +var _tools = __w_pdfjs_require__(132); + +var _util = __w_pdfjs_require__(1); + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); } + +function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } + +function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; } + +function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } } + +function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); } + +function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); } + +function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; } + +var _boundFocusin = /*#__PURE__*/new WeakMap(); + +var _boundFocusout = /*#__PURE__*/new WeakMap(); + +var _hasBeenSelected = /*#__PURE__*/new WeakMap(); + +var _isEditing = /*#__PURE__*/new WeakMap(); + +var _isInEditMode = /*#__PURE__*/new WeakMap(); + +var _zIndex = /*#__PURE__*/new WeakMap(); + +class AnnotationEditor { + constructor(parameters) { + _classPrivateFieldInitSpec(this, _boundFocusin, { + writable: true, + value: this.focusin.bind(this) + }); + + _classPrivateFieldInitSpec(this, _boundFocusout, { + writable: true, + value: this.focusout.bind(this) + }); + + _classPrivateFieldInitSpec(this, _hasBeenSelected, { + writable: true, + value: false + }); + + _classPrivateFieldInitSpec(this, _isEditing, { + writable: true, + value: false + }); + + _classPrivateFieldInitSpec(this, _isInEditMode, { + writable: true, + value: false + }); + + _classPrivateFieldInitSpec(this, _zIndex, { + writable: true, + value: AnnotationEditor._zIndex++ + }); + + if (this.constructor === AnnotationEditor) { + (0, _util.unreachable)("Cannot initialize AnnotationEditor."); + } + + this.parent = parameters.parent; + this.id = parameters.id; + this.width = this.height = null; + this.pageIndex = parameters.parent.pageIndex; + this.name = parameters.name; + this.div = null; + const [width, height] = this.parent.viewportBaseDimensions; + this.x = parameters.x / width; + this.y = parameters.y / height; + this.rotation = this.parent.viewport.rotation; + this.isAttachedToDOM = false; + } + + static get _defaultLineColor() { + return (0, _util.shadow)(this, "_defaultLineColor", this._colorManager.getHexCode("CanvasText")); + } + + setInBackground() { + this.div.style.zIndex = 0; + } + + setInForeground() { + this.div.style.zIndex = _classPrivateFieldGet(this, _zIndex); + } + + focusin(event) { + if (!_classPrivateFieldGet(this, _hasBeenSelected)) { + this.parent.setSelected(this); + } else { + _classPrivateFieldSet(this, _hasBeenSelected, false); + } + } + + focusout(event) { + if (!this.isAttachedToDOM) { + return; + } + + const target = event.relatedTarget; + + if (target !== null && target !== void 0 && target.closest(`#${this.id}`)) { + return; + } + + event.preventDefault(); + + if (!this.parent.isMultipleSelection) { + this.commitOrRemove(); + } + } + + commitOrRemove() { + if (this.isEmpty()) { + this.remove(); + } else { + this.commit(); + } + } + + commit() { + this.parent.addToAnnotationStorage(this); + } + + dragstart(event) { + const rect = this.parent.div.getBoundingClientRect(); + this.startX = event.clientX - rect.x; + this.startY = event.clientY - rect.y; + event.dataTransfer.setData("text/plain", this.id); + event.dataTransfer.effectAllowed = "move"; + } + + setAt(x, y, tx, ty) { + const [width, height] = this.parent.viewportBaseDimensions; + [tx, ty] = this.screenToPageTranslation(tx, ty); + this.x = (x + tx) / width; + this.y = (y + ty) / height; + this.div.style.left = `${100 * this.x}%`; + this.div.style.top = `${100 * this.y}%`; + } + + translate(x, y) { + const [width, height] = this.parent.viewportBaseDimensions; + [x, y] = this.screenToPageTranslation(x, y); + this.x += x / width; + this.y += y / height; + this.div.style.left = `${100 * this.x}%`; + this.div.style.top = `${100 * this.y}%`; + } + + screenToPageTranslation(x, y) { + const { + rotation + } = this.parent.viewport; + + switch (rotation) { + case 90: + return [y, -x]; + + case 180: + return [-x, -y]; + + case 270: + return [-y, x]; + + default: + return [x, y]; + } + } + + setDims(width, height) { + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.div.style.width = `${100 * width / parentWidth}%`; + this.div.style.height = `${100 * height / parentHeight}%`; + } + + getInitialTranslation() { + return [0, 0]; + } + + render() { + this.div = document.createElement("div"); + this.div.setAttribute("data-editor-rotation", (360 - this.rotation) % 360); + this.div.className = this.name; + this.div.setAttribute("id", this.id); + this.div.setAttribute("tabIndex", 0); + this.setInForeground(); + this.div.addEventListener("focusin", _classPrivateFieldGet(this, _boundFocusin)); + this.div.addEventListener("focusout", _classPrivateFieldGet(this, _boundFocusout)); + const [tx, ty] = this.getInitialTranslation(); + this.translate(tx, ty); + (0, _tools.bindEvents)(this, this.div, ["dragstart", "pointerdown"]); + return this.div; + } + + pointerdown(event) { + const isMac = _tools.KeyboardManager.platform.isMac; + + if (event.button !== 0 || event.ctrlKey && isMac) { + event.preventDefault(); + return; + } + + if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) { + this.parent.toggleSelected(this); + } else { + this.parent.setSelected(this); + } + + _classPrivateFieldSet(this, _hasBeenSelected, true); + } + + getRect(tx, ty) { + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + const [pageWidth, pageHeight] = this.parent.pageDimensions; + const shiftX = pageWidth * tx / parentWidth; + const shiftY = pageHeight * ty / parentHeight; + const x = this.x * pageWidth; + const y = this.y * pageHeight; + const width = this.width * pageWidth; + const height = this.height * pageHeight; + + switch (this.rotation) { + case 0: + return [x + shiftX, pageHeight - y - shiftY - height, x + shiftX + width, pageHeight - y - shiftY]; + + case 90: + return [x + shiftY, pageHeight - y + shiftX, x + shiftY + height, pageHeight - y + shiftX + width]; + + case 180: + return [x - shiftX - width, pageHeight - y + shiftY, x - shiftX, pageHeight - y + shiftY + height]; + + case 270: + return [x - shiftY - height, pageHeight - y - shiftX - width, x - shiftY, pageHeight - y - shiftX]; + + default: + throw new Error("Invalid rotation"); + } + } + + getRectInCurrentCoords(rect, pageHeight) { + const [x1, y1, x2, y2] = rect; + const width = x2 - x1; + const height = y2 - y1; + + switch (this.rotation) { + case 0: + return [x1, pageHeight - y2, width, height]; + + case 90: + return [x1, pageHeight - y1, height, width]; + + case 180: + return [x2, pageHeight - y1, width, height]; + + case 270: + return [x2, pageHeight - y2, height, width]; + + default: + throw new Error("Invalid rotation"); + } + } + + onceAdded() {} + + isEmpty() { + return false; + } + + enableEditMode() { + _classPrivateFieldSet(this, _isInEditMode, true); + } + + disableEditMode() { + _classPrivateFieldSet(this, _isInEditMode, false); + } + + isInEditMode() { + return _classPrivateFieldGet(this, _isInEditMode); + } + + shouldGetKeyboardEvents() { + return false; + } + + needsToBeRebuilt() { + return this.div && !this.isAttachedToDOM; + } + + rebuild() { + var _this$div; + + (_this$div = this.div) === null || _this$div === void 0 ? void 0 : _this$div.addEventListener("focusin", _classPrivateFieldGet(this, _boundFocusin)); + } + + serialize() { + (0, _util.unreachable)("An editor must be serializable"); + } + + static deserialize(data, parent) { + const editor = new this.prototype.constructor({ + parent, + id: parent.getNextId() + }); + editor.rotation = data.rotation; + const [pageWidth, pageHeight] = parent.pageDimensions; + const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight); + editor.x = x / pageWidth; + editor.y = y / pageHeight; + editor.width = width / pageWidth; + editor.height = height / pageHeight; + return editor; + } + + remove() { + this.div.removeEventListener("focusin", _classPrivateFieldGet(this, _boundFocusin)); + this.div.removeEventListener("focusout", _classPrivateFieldGet(this, _boundFocusout)); + + if (!this.isEmpty()) { + this.commit(); + } + + this.parent.remove(this); + } + + select() { + var _this$div2; + + (_this$div2 = this.div) === null || _this$div2 === void 0 ? void 0 : _this$div2.classList.add("selectedEditor"); + } + + unselect() { + var _this$div3; + + (_this$div3 = this.div) === null || _this$div3 === void 0 ? void 0 : _this$div3.classList.remove("selectedEditor"); + } + + updateParams(type, value) {} + + disableEditing() {} + + enableEditing() {} + + get propertiesToUpdate() { + return {}; + } + + get contentDiv() { + return this.div; + } + + get isEditing() { + return _classPrivateFieldGet(this, _isEditing); + } + + set isEditing(value) { + _classPrivateFieldSet(this, _isEditing, value); + + if (value) { + this.parent.setSelected(this); + this.parent.setActiveEditor(this); + } else { + this.parent.setActiveEditor(null); + } + } + +} + +exports.AnnotationEditor = AnnotationEditor; + +_defineProperty(AnnotationEditor, "_colorManager", new _tools.ColorManager()); + +_defineProperty(AnnotationEditor, "_zIndex", 1); + +/***/ }), +/* 132 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.KeyboardManager = exports.CommandManager = exports.ColorManager = exports.AnnotationEditorUIManager = void 0; +exports.bindEvents = bindEvents; +exports.opacityToHex = opacityToHex; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(133); + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); } + +function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; } + +function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); } + +function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } + +function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; } + +function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } } + +function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); } + +function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); } + +function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; } + +function bindEvents(obj, element, names) { + for (const name of names) { + element.addEventListener(name, obj[name].bind(obj)); + } +} + +function opacityToHex(opacity) { + return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, "0"); +} + +var _id = /*#__PURE__*/new WeakMap(); + +class IdManager { + constructor() { + _classPrivateFieldInitSpec(this, _id, { + writable: true, + value: 0 + }); + } + + getId() { + var _this$id, _this$id2; + + return `${_util.AnnotationEditorPrefix}${(_classPrivateFieldSet(this, _id, (_this$id = _classPrivateFieldGet(this, _id), _this$id2 = _this$id++, _this$id)), _this$id2)}`; + } + +} + +var _commands = /*#__PURE__*/new WeakMap(); + +var _locked = /*#__PURE__*/new WeakMap(); + +var _maxSize = /*#__PURE__*/new WeakMap(); + +var _position = /*#__PURE__*/new WeakMap(); + +class CommandManager { + constructor() { + let maxSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 128; + + _classPrivateFieldInitSpec(this, _commands, { + writable: true, + value: [] + }); + + _classPrivateFieldInitSpec(this, _locked, { + writable: true, + value: false + }); + + _classPrivateFieldInitSpec(this, _maxSize, { + writable: true, + value: void 0 + }); + + _classPrivateFieldInitSpec(this, _position, { + writable: true, + value: -1 + }); + + _classPrivateFieldSet(this, _maxSize, maxSize); + } + + add(_ref) { + let { + cmd, + undo, + mustExec, + type = NaN, + overwriteIfSameType = false, + keepUndo = false + } = _ref; + + if (mustExec) { + cmd(); + } + + if (_classPrivateFieldGet(this, _locked)) { + return; + } + + const save = { + cmd, + undo, + type + }; + + if (_classPrivateFieldGet(this, _position) === -1) { + if (_classPrivateFieldGet(this, _commands).length > 0) { + _classPrivateFieldGet(this, _commands).length = 0; + } + + _classPrivateFieldSet(this, _position, 0); + + _classPrivateFieldGet(this, _commands).push(save); + + return; + } + + if (overwriteIfSameType && _classPrivateFieldGet(this, _commands)[_classPrivateFieldGet(this, _position)].type === type) { + if (keepUndo) { + save.undo = _classPrivateFieldGet(this, _commands)[_classPrivateFieldGet(this, _position)].undo; + } + + _classPrivateFieldGet(this, _commands)[_classPrivateFieldGet(this, _position)] = save; + return; + } + + const next = _classPrivateFieldGet(this, _position) + 1; + + if (next === _classPrivateFieldGet(this, _maxSize)) { + _classPrivateFieldGet(this, _commands).splice(0, 1); + } else { + _classPrivateFieldSet(this, _position, next); + + if (next < _classPrivateFieldGet(this, _commands).length) { + _classPrivateFieldGet(this, _commands).splice(next); + } + } + + _classPrivateFieldGet(this, _commands).push(save); + } + + undo() { + if (_classPrivateFieldGet(this, _position) === -1) { + return; + } + + _classPrivateFieldSet(this, _locked, true); + + _classPrivateFieldGet(this, _commands)[_classPrivateFieldGet(this, _position)].undo(); + + _classPrivateFieldSet(this, _locked, false); + + _classPrivateFieldSet(this, _position, _classPrivateFieldGet(this, _position) - 1); + } + + redo() { + if (_classPrivateFieldGet(this, _position) < _classPrivateFieldGet(this, _commands).length - 1) { + _classPrivateFieldSet(this, _position, _classPrivateFieldGet(this, _position) + 1); + + _classPrivateFieldSet(this, _locked, true); + + _classPrivateFieldGet(this, _commands)[_classPrivateFieldGet(this, _position)].cmd(); + + _classPrivateFieldSet(this, _locked, false); + } + } + + hasSomethingToUndo() { + return _classPrivateFieldGet(this, _position) !== -1; + } + + hasSomethingToRedo() { + return _classPrivateFieldGet(this, _position) < _classPrivateFieldGet(this, _commands).length - 1; + } + + destroy() { + _classPrivateFieldSet(this, _commands, null); + } + +} + +exports.CommandManager = CommandManager; + +var _serialize = /*#__PURE__*/new WeakSet(); + +class KeyboardManager { + constructor(callbacks) { + _classPrivateMethodInitSpec(this, _serialize); + + this.buffer = []; + this.callbacks = new Map(); + this.allKeys = new Set(); + const isMac = KeyboardManager.platform.isMac; + + for (const [keys, callback] of callbacks) { + for (const key of keys) { + const isMacKey = key.startsWith("mac+"); + + if (isMac && isMacKey) { + this.callbacks.set(key.slice(4), callback); + this.allKeys.add(key.split("+").at(-1)); + } else if (!isMac && !isMacKey) { + this.callbacks.set(key, callback); + this.allKeys.add(key.split("+").at(-1)); + } + } + } + } + + static get platform() { + const platform = typeof navigator !== "undefined" ? navigator.platform : ""; + return (0, _util.shadow)(this, "platform", { + isWin: platform.includes("Win"), + isMac: platform.includes("Mac") + }); + } + + exec(self, event) { + if (!this.allKeys.has(event.key)) { + return; + } + + const callback = this.callbacks.get(_classPrivateMethodGet(this, _serialize, _serialize2).call(this, event)); + + if (!callback) { + return; + } + + callback.bind(self)(); + event.stopPropagation(); + event.preventDefault(); + } + +} + +exports.KeyboardManager = KeyboardManager; + +function _serialize2(event) { + if (event.altKey) { + this.buffer.push("alt"); + } + + if (event.ctrlKey) { + this.buffer.push("ctrl"); + } + + if (event.metaKey) { + this.buffer.push("meta"); + } + + if (event.shiftKey) { + this.buffer.push("shift"); + } + + this.buffer.push(event.key); + const str = this.buffer.join("+"); + this.buffer.length = 0; + return str; +} + +var _elements = /*#__PURE__*/new WeakMap(); + +class ClipboardManager { + constructor() { + _classPrivateFieldInitSpec(this, _elements, { + writable: true, + value: null + }); + } + + copy(element) { + if (!element) { + return; + } + + if (Array.isArray(element)) { + _classPrivateFieldSet(this, _elements, element.map(el => el.serialize())); + } else { + _classPrivateFieldSet(this, _elements, [element.serialize()]); + } + + _classPrivateFieldSet(this, _elements, _classPrivateFieldGet(this, _elements).filter(el => !!el)); + + if (_classPrivateFieldGet(this, _elements).length === 0) { + _classPrivateFieldSet(this, _elements, null); + } + } + + paste() { + return _classPrivateFieldGet(this, _elements); + } + + isEmpty() { + return _classPrivateFieldGet(this, _elements) === null; + } + + destroy() { + _classPrivateFieldSet(this, _elements, null); + } + +} + +class ColorManager { + get _colors() { + const colors = new Map([["CanvasText", null], ["Canvas", null]]); + (0, _display_utils.getColorValues)(colors); + return (0, _util.shadow)(this, "_colors", colors); + } + + convert(color) { + const rgb = (0, _display_utils.getRGB)(color); + + if (!window.matchMedia("(forced-colors: active)").matches) { + return rgb; + } + + for (const [name, RGB] of this._colors) { + if (RGB.every((x, i) => x === rgb[i])) { + return ColorManager._colorsMapping.get(name); + } + } + + return rgb; + } + + getHexCode(name) { + const rgb = this._colors.get(name); + + if (!rgb) { + return name; + } + + return _util.Util.makeHexColor(...rgb); + } + +} + +exports.ColorManager = ColorManager; + +_defineProperty(ColorManager, "_colorsMapping", new Map([["CanvasText", [0, 0, 0]], ["Canvas", [255, 255, 255]]])); + +var _activeEditor = /*#__PURE__*/new WeakMap(); + +var _allEditors = /*#__PURE__*/new WeakMap(); + +var _allLayers = /*#__PURE__*/new WeakMap(); + +var _clipboardManager = /*#__PURE__*/new WeakMap(); + +var _commandManager = /*#__PURE__*/new WeakMap(); + +var _currentPageIndex = /*#__PURE__*/new WeakMap(); + +var _editorTypes = /*#__PURE__*/new WeakMap(); + +var _eventBus = /*#__PURE__*/new WeakMap(); + +var _idManager = /*#__PURE__*/new WeakMap(); + +var _isEnabled = /*#__PURE__*/new WeakMap(); + +var _mode = /*#__PURE__*/new WeakMap(); + +var _selectedEditors = /*#__PURE__*/new WeakMap(); + +var _boundKeydown = /*#__PURE__*/new WeakMap(); + +var _boundOnEditingAction = /*#__PURE__*/new WeakMap(); + +var _boundOnPageChanging = /*#__PURE__*/new WeakMap(); + +var _previousStates = /*#__PURE__*/new WeakMap(); + +var _container = /*#__PURE__*/new WeakMap(); + +var _addKeyboardManager = /*#__PURE__*/new WeakSet(); + +var _removeKeyboardManager = /*#__PURE__*/new WeakSet(); + +var _dispatchUpdateStates = /*#__PURE__*/new WeakSet(); + +var _dispatchUpdateUI = /*#__PURE__*/new WeakSet(); + +var _enableAll = /*#__PURE__*/new WeakSet(); + +var _disableAll = /*#__PURE__*/new WeakSet(); + +var _addEditorToLayer = /*#__PURE__*/new WeakSet(); + +var _isEmpty = /*#__PURE__*/new WeakSet(); + +var _selectEditors = /*#__PURE__*/new WeakSet(); + +class AnnotationEditorUIManager { + constructor(container, eventBus) { + _classPrivateMethodInitSpec(this, _selectEditors); + + _classPrivateMethodInitSpec(this, _isEmpty); + + _classPrivateMethodInitSpec(this, _addEditorToLayer); + + _classPrivateMethodInitSpec(this, _disableAll); + + _classPrivateMethodInitSpec(this, _enableAll); + + _classPrivateMethodInitSpec(this, _dispatchUpdateUI); + + _classPrivateMethodInitSpec(this, _dispatchUpdateStates); + + _classPrivateMethodInitSpec(this, _removeKeyboardManager); + + _classPrivateMethodInitSpec(this, _addKeyboardManager); + + _classPrivateFieldInitSpec(this, _activeEditor, { + writable: true, + value: null + }); + + _classPrivateFieldInitSpec(this, _allEditors, { + writable: true, + value: new Map() + }); + + _classPrivateFieldInitSpec(this, _allLayers, { + writable: true, + value: new Map() + }); + + _classPrivateFieldInitSpec(this, _clipboardManager, { + writable: true, + value: new ClipboardManager() + }); + + _classPrivateFieldInitSpec(this, _commandManager, { + writable: true, + value: new CommandManager() + }); + + _classPrivateFieldInitSpec(this, _currentPageIndex, { + writable: true, + value: 0 + }); + + _classPrivateFieldInitSpec(this, _editorTypes, { + writable: true, + value: null + }); + + _classPrivateFieldInitSpec(this, _eventBus, { + writable: true, + value: null + }); + + _classPrivateFieldInitSpec(this, _idManager, { + writable: true, + value: new IdManager() + }); + + _classPrivateFieldInitSpec(this, _isEnabled, { + writable: true, + value: false + }); + + _classPrivateFieldInitSpec(this, _mode, { + writable: true, + value: _util.AnnotationEditorType.NONE + }); + + _classPrivateFieldInitSpec(this, _selectedEditors, { + writable: true, + value: new Set() + }); + + _classPrivateFieldInitSpec(this, _boundKeydown, { + writable: true, + value: this.keydown.bind(this) + }); + + _classPrivateFieldInitSpec(this, _boundOnEditingAction, { + writable: true, + value: this.onEditingAction.bind(this) + }); + + _classPrivateFieldInitSpec(this, _boundOnPageChanging, { + writable: true, + value: this.onPageChanging.bind(this) + }); + + _classPrivateFieldInitSpec(this, _previousStates, { + writable: true, + value: { + isEditing: false, + isEmpty: true, + hasEmptyClipboard: true, + hasSomethingToUndo: false, + hasSomethingToRedo: false, + hasSelectedEditor: false + } + }); + + _classPrivateFieldInitSpec(this, _container, { + writable: true, + value: null + }); + + _classPrivateFieldSet(this, _container, container); + + _classPrivateFieldSet(this, _eventBus, eventBus); + + _classPrivateFieldGet(this, _eventBus)._on("editingaction", _classPrivateFieldGet(this, _boundOnEditingAction)); + + _classPrivateFieldGet(this, _eventBus)._on("pagechanging", _classPrivateFieldGet(this, _boundOnPageChanging)); + } + + destroy() { + _classPrivateMethodGet(this, _removeKeyboardManager, _removeKeyboardManager2).call(this); + + _classPrivateFieldGet(this, _eventBus)._off("editingaction", _classPrivateFieldGet(this, _boundOnEditingAction)); + + _classPrivateFieldGet(this, _eventBus)._off("pagechanging", _classPrivateFieldGet(this, _boundOnPageChanging)); + + for (const layer of _classPrivateFieldGet(this, _allLayers).values()) { + layer.destroy(); + } + + _classPrivateFieldGet(this, _allLayers).clear(); + + _classPrivateFieldGet(this, _allEditors).clear(); + + _classPrivateFieldSet(this, _activeEditor, null); + + _classPrivateFieldGet(this, _selectedEditors).clear(); + + _classPrivateFieldGet(this, _clipboardManager).destroy(); + + _classPrivateFieldGet(this, _commandManager).destroy(); + } + + onPageChanging(_ref2) { + let { + pageNumber + } = _ref2; + + _classPrivateFieldSet(this, _currentPageIndex, pageNumber - 1); + } + + focusMainContainer() { + _classPrivateFieldGet(this, _container).focus(); + } + + keydown(event) { + var _this$getActive; + + if (!((_this$getActive = this.getActive()) !== null && _this$getActive !== void 0 && _this$getActive.shouldGetKeyboardEvents())) { + AnnotationEditorUIManager._keyboardManager.exec(this, event); + } + } + + onEditingAction(details) { + if (["undo", "redo", "cut", "copy", "paste", "delete", "selectAll"].includes(details.name)) { + this[details.name](); + } + } + + setEditingState(isEditing) { + if (isEditing) { + _classPrivateMethodGet(this, _addKeyboardManager, _addKeyboardManager2).call(this); + + _classPrivateMethodGet(this, _dispatchUpdateStates, _dispatchUpdateStates2).call(this, { + isEditing: _classPrivateFieldGet(this, _mode) !== _util.AnnotationEditorType.NONE, + isEmpty: _classPrivateMethodGet(this, _isEmpty, _isEmpty2).call(this), + hasSomethingToUndo: _classPrivateFieldGet(this, _commandManager).hasSomethingToUndo(), + hasSomethingToRedo: _classPrivateFieldGet(this, _commandManager).hasSomethingToRedo(), + hasSelectedEditor: false, + hasEmptyClipboard: _classPrivateFieldGet(this, _clipboardManager).isEmpty() + }); + } else { + _classPrivateMethodGet(this, _removeKeyboardManager, _removeKeyboardManager2).call(this); + + _classPrivateMethodGet(this, _dispatchUpdateStates, _dispatchUpdateStates2).call(this, { + isEditing: false + }); + } + } + + registerEditorTypes(types) { + _classPrivateFieldSet(this, _editorTypes, types); + + for (const editorType of _classPrivateFieldGet(this, _editorTypes)) { + _classPrivateMethodGet(this, _dispatchUpdateUI, _dispatchUpdateUI2).call(this, editorType.defaultPropertiesToUpdate); + } + } + + getId() { + return _classPrivateFieldGet(this, _idManager).getId(); + } + + addLayer(layer) { + _classPrivateFieldGet(this, _allLayers).set(layer.pageIndex, layer); + + if (_classPrivateFieldGet(this, _isEnabled)) { + layer.enable(); + } else { + layer.disable(); + } + } + + removeLayer(layer) { + _classPrivateFieldGet(this, _allLayers).delete(layer.pageIndex); + } + + updateMode(mode) { + _classPrivateFieldSet(this, _mode, mode); + + if (mode === _util.AnnotationEditorType.NONE) { + this.setEditingState(false); + + _classPrivateMethodGet(this, _disableAll, _disableAll2).call(this); + } else { + this.setEditingState(true); + + _classPrivateMethodGet(this, _enableAll, _enableAll2).call(this); + + for (const layer of _classPrivateFieldGet(this, _allLayers).values()) { + layer.updateMode(mode); + } + } + } + + updateToolbar(mode) { + if (mode === _classPrivateFieldGet(this, _mode)) { + return; + } + + _classPrivateFieldGet(this, _eventBus).dispatch("switchannotationeditormode", { + source: this, + mode + }); + } + + updateParams(type, value) { + for (const editor of _classPrivateFieldGet(this, _selectedEditors)) { + editor.updateParams(type, value); + } + + for (const editorType of _classPrivateFieldGet(this, _editorTypes)) { + editorType.updateDefaultParams(type, value); + } + } + + getEditors(pageIndex) { + const editors = []; + + for (const editor of _classPrivateFieldGet(this, _allEditors).values()) { + if (editor.pageIndex === pageIndex) { + editors.push(editor); + } + } + + return editors; + } + + getEditor(id) { + return _classPrivateFieldGet(this, _allEditors).get(id); + } + + addEditor(editor) { + _classPrivateFieldGet(this, _allEditors).set(editor.id, editor); + } + + removeEditor(editor) { + _classPrivateFieldGet(this, _allEditors).delete(editor.id); + + this.unselect(editor); + } + + setActiveEditor(editor) { + if (_classPrivateFieldGet(this, _activeEditor) === editor) { + return; + } + + _classPrivateFieldSet(this, _activeEditor, editor); + + if (editor) { + _classPrivateMethodGet(this, _dispatchUpdateUI, _dispatchUpdateUI2).call(this, editor.propertiesToUpdate); + } + } + + toggleSelected(editor) { + if (_classPrivateFieldGet(this, _selectedEditors).has(editor)) { + _classPrivateFieldGet(this, _selectedEditors).delete(editor); + + editor.unselect(); + + _classPrivateMethodGet(this, _dispatchUpdateStates, _dispatchUpdateStates2).call(this, { + hasSelectedEditor: this.hasSelection + }); + + return; + } + + _classPrivateFieldGet(this, _selectedEditors).add(editor); + + editor.select(); + + _classPrivateMethodGet(this, _dispatchUpdateUI, _dispatchUpdateUI2).call(this, editor.propertiesToUpdate); + + _classPrivateMethodGet(this, _dispatchUpdateStates, _dispatchUpdateStates2).call(this, { + hasSelectedEditor: true + }); + } + + setSelected(editor) { + for (const ed of _classPrivateFieldGet(this, _selectedEditors)) { + if (ed !== editor) { + ed.unselect(); + } + } + + _classPrivateFieldGet(this, _selectedEditors).clear(); + + _classPrivateFieldGet(this, _selectedEditors).add(editor); + + editor.select(); + + _classPrivateMethodGet(this, _dispatchUpdateUI, _dispatchUpdateUI2).call(this, editor.propertiesToUpdate); + + _classPrivateMethodGet(this, _dispatchUpdateStates, _dispatchUpdateStates2).call(this, { + hasSelectedEditor: true + }); + } + + isSelected(editor) { + return _classPrivateFieldGet(this, _selectedEditors).has(editor); + } + + unselect(editor) { + editor.unselect(); + + _classPrivateFieldGet(this, _selectedEditors).delete(editor); + + _classPrivateMethodGet(this, _dispatchUpdateStates, _dispatchUpdateStates2).call(this, { + hasSelectedEditor: this.hasSelection + }); + } + + get hasSelection() { + return _classPrivateFieldGet(this, _selectedEditors).size !== 0; + } + + undo() { + _classPrivateFieldGet(this, _commandManager).undo(); + + _classPrivateMethodGet(this, _dispatchUpdateStates, _dispatchUpdateStates2).call(this, { + hasSomethingToUndo: _classPrivateFieldGet(this, _commandManager).hasSomethingToUndo(), + hasSomethingToRedo: true, + isEmpty: _classPrivateMethodGet(this, _isEmpty, _isEmpty2).call(this) + }); + } + + redo() { + _classPrivateFieldGet(this, _commandManager).redo(); + + _classPrivateMethodGet(this, _dispatchUpdateStates, _dispatchUpdateStates2).call(this, { + hasSomethingToUndo: true, + hasSomethingToRedo: _classPrivateFieldGet(this, _commandManager).hasSomethingToRedo(), + isEmpty: _classPrivateMethodGet(this, _isEmpty, _isEmpty2).call(this) + }); + } + + addCommands(params) { + _classPrivateFieldGet(this, _commandManager).add(params); + + _classPrivateMethodGet(this, _dispatchUpdateStates, _dispatchUpdateStates2).call(this, { + hasSomethingToUndo: true, + hasSomethingToRedo: false, + isEmpty: _classPrivateMethodGet(this, _isEmpty, _isEmpty2).call(this) + }); + } + + delete() { + if (_classPrivateFieldGet(this, _activeEditor)) { + _classPrivateFieldGet(this, _activeEditor).commitOrRemove(); + } + + if (!this.hasSelection) { + return; + } + + const editors = [..._classPrivateFieldGet(this, _selectedEditors)]; + + const cmd = () => { + for (const editor of editors) { + editor.remove(); + } + }; + + const undo = () => { + for (const editor of editors) { + _classPrivateMethodGet(this, _addEditorToLayer, _addEditorToLayer2).call(this, editor); + } + }; + + this.addCommands({ + cmd, + undo, + mustExec: true + }); + } + + copy() { + if (_classPrivateFieldGet(this, _activeEditor)) { + _classPrivateFieldGet(this, _activeEditor).commitOrRemove(); + } + + if (this.hasSelection) { + const editors = []; + + for (const editor of _classPrivateFieldGet(this, _selectedEditors)) { + if (!editor.isEmpty()) { + editors.push(editor); + } + } + + if (editors.length === 0) { + return; + } + + _classPrivateFieldGet(this, _clipboardManager).copy(editors); + + _classPrivateMethodGet(this, _dispatchUpdateStates, _dispatchUpdateStates2).call(this, { + hasEmptyClipboard: false + }); + } + } + + cut() { + this.copy(); + this.delete(); + } + + paste() { + if (_classPrivateFieldGet(this, _clipboardManager).isEmpty()) { + return; + } + + this.unselectAll(); + + const layer = _classPrivateFieldGet(this, _allLayers).get(_classPrivateFieldGet(this, _currentPageIndex)); + + const newEditors = _classPrivateFieldGet(this, _clipboardManager).paste().map(data => layer.deserialize(data)); + + const cmd = () => { + for (const editor of newEditors) { + _classPrivateMethodGet(this, _addEditorToLayer, _addEditorToLayer2).call(this, editor); + } + + _classPrivateMethodGet(this, _selectEditors, _selectEditors2).call(this, newEditors); + }; + + const undo = () => { + for (const editor of newEditors) { + editor.remove(); + } + }; + + this.addCommands({ + cmd, + undo, + mustExec: true + }); + } + + selectAll() { + for (const editor of _classPrivateFieldGet(this, _selectedEditors)) { + editor.commit(); + } + + _classPrivateMethodGet(this, _selectEditors, _selectEditors2).call(this, _classPrivateFieldGet(this, _allEditors).values()); + } + + unselectAll() { + if (_classPrivateFieldGet(this, _activeEditor)) { + _classPrivateFieldGet(this, _activeEditor).commitOrRemove(); + + return; + } + + if (_classPrivateMethodGet(this, _selectEditors, _selectEditors2).size === 0) { + return; + } + + for (const editor of _classPrivateFieldGet(this, _selectedEditors)) { + editor.unselect(); + } + + _classPrivateFieldGet(this, _selectedEditors).clear(); + + _classPrivateMethodGet(this, _dispatchUpdateStates, _dispatchUpdateStates2).call(this, { + hasSelectedEditor: false + }); + } + + isActive(editor) { + return _classPrivateFieldGet(this, _activeEditor) === editor; + } + + getActive() { + return _classPrivateFieldGet(this, _activeEditor); + } + + getMode() { + return _classPrivateFieldGet(this, _mode); + } + +} + +exports.AnnotationEditorUIManager = AnnotationEditorUIManager; + +function _addKeyboardManager2() { + _classPrivateFieldGet(this, _container).addEventListener("keydown", _classPrivateFieldGet(this, _boundKeydown)); +} + +function _removeKeyboardManager2() { + _classPrivateFieldGet(this, _container).removeEventListener("keydown", _classPrivateFieldGet(this, _boundKeydown)); +} + +function _dispatchUpdateStates2(details) { + const hasChanged = Object.entries(details).some(_ref3 => { + let [key, value] = _ref3; + return _classPrivateFieldGet(this, _previousStates)[key] !== value; + }); + + if (hasChanged) { + _classPrivateFieldGet(this, _eventBus).dispatch("annotationeditorstateschanged", { + source: this, + details: Object.assign(_classPrivateFieldGet(this, _previousStates), details) + }); + } +} + +function _dispatchUpdateUI2(details) { + _classPrivateFieldGet(this, _eventBus).dispatch("annotationeditorparamschanged", { + source: this, + details + }); +} + +function _enableAll2() { + if (!_classPrivateFieldGet(this, _isEnabled)) { + _classPrivateFieldSet(this, _isEnabled, true); + + for (const layer of _classPrivateFieldGet(this, _allLayers).values()) { + layer.enable(); + } + } +} + +function _disableAll2() { + this.unselectAll(); + + if (_classPrivateFieldGet(this, _isEnabled)) { + _classPrivateFieldSet(this, _isEnabled, false); + + for (const layer of _classPrivateFieldGet(this, _allLayers).values()) { + layer.disable(); + } + } +} + +function _addEditorToLayer2(editor) { + const layer = _classPrivateFieldGet(this, _allLayers).get(editor.pageIndex); + + if (layer) { + layer.addOrRebuild(editor); + } else { + this.addEditor(editor); + } +} + +function _isEmpty2() { + if (_classPrivateFieldGet(this, _allEditors).size === 0) { + return true; + } + + if (_classPrivateFieldGet(this, _allEditors).size === 1) { + for (const editor of _classPrivateFieldGet(this, _allEditors).values()) { + return editor.isEmpty(); + } + } + + return false; +} + +function _selectEditors2(editors) { + _classPrivateFieldGet(this, _selectedEditors).clear(); + + for (const editor of editors) { + if (editor.isEmpty()) { + continue; + } + + _classPrivateFieldGet(this, _selectedEditors).add(editor); + + editor.select(); + } + + _classPrivateMethodGet(this, _dispatchUpdateStates, _dispatchUpdateStates2).call(this, { + hasSelectedEditor: true + }); +} + +_defineProperty(AnnotationEditorUIManager, "_keyboardManager", new KeyboardManager([[["ctrl+a", "mac+meta+a"], AnnotationEditorUIManager.prototype.selectAll], [["ctrl+c", "mac+meta+c"], AnnotationEditorUIManager.prototype.copy], [["ctrl+v", "mac+meta+v"], AnnotationEditorUIManager.prototype.paste], [["ctrl+x", "mac+meta+x"], AnnotationEditorUIManager.prototype.cut], [["ctrl+z", "mac+meta+z"], AnnotationEditorUIManager.prototype.undo], [["ctrl+y", "ctrl+shift+Z", "mac+meta+shift+Z"], AnnotationEditorUIManager.prototype.redo], [["Backspace", "alt+Backspace", "ctrl+Backspace", "shift+Backspace", "mac+Backspace", "mac+alt+Backspace", "mac+ctrl+Backspace", "Delete", "ctrl+Delete", "shift+Delete"], AnnotationEditorUIManager.prototype.delete], [["Escape", "mac+Escape"], AnnotationEditorUIManager.prototype.unselectAll]])); + +/***/ }), +/* 133 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PageViewport = exports.PDFDateString = exports.DOMStandardFontDataFactory = exports.DOMSVGFactory = exports.DOMCanvasFactory = exports.DOMCMapReaderFactory = exports.AnnotationPrefix = void 0; +exports.deprecated = deprecated; +exports.getColorValues = getColorValues; +exports.getCurrentTransform = getCurrentTransform; +exports.getCurrentTransformInverse = getCurrentTransformInverse; +exports.getFilenameFromUrl = getFilenameFromUrl; +exports.getPdfFilenameFromUrl = getPdfFilenameFromUrl; +exports.getRGB = getRGB; +exports.getXfaPageViewport = getXfaPageViewport; +exports.isDataScheme = isDataScheme; +exports.isPdfFile = isPdfFile; +exports.isValidFetchUrl = isValidFetchUrl; +exports.loadScript = loadScript; + +var _base_factory = __w_pdfjs_require__(134); + +var _util = __w_pdfjs_require__(1); + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +const SVG_NS = "http://www.w3.org/2000/svg"; +const AnnotationPrefix = "pdfjs_internal_id_"; +exports.AnnotationPrefix = AnnotationPrefix; + +class PixelsPerInch {} + +exports.PixelsPerInch = PixelsPerInch; + +_defineProperty(PixelsPerInch, "CSS", 96.0); + +_defineProperty(PixelsPerInch, "PDF", 72.0); + +_defineProperty(PixelsPerInch, "PDF_TO_CSS_UNITS", PixelsPerInch.CSS / PixelsPerInch.PDF); + +class DOMCanvasFactory extends _base_factory.BaseCanvasFactory { + constructor() { + let { + ownerDocument = globalThis.document + } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + super(); + this._document = ownerDocument; + } + + _createCanvas(width, height) { + const canvas = this._document.createElement("canvas"); + + canvas.width = width; + canvas.height = height; + return canvas; + } + +} exports.DOMCanvasFactory = DOMCanvasFactory; -var DOMCMapReaderFactory = -/*#__PURE__*/ -function () { - function DOMCMapReaderFactory(_ref) { - var _ref$baseUrl = _ref.baseUrl, - baseUrl = _ref$baseUrl === void 0 ? null : _ref$baseUrl, - _ref$isCompressed = _ref.isCompressed, - isCompressed = _ref$isCompressed === void 0 ? false : _ref$isCompressed; +async function fetchData(url) { + let asTypedArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - _classCallCheck(this, DOMCMapReaderFactory); + if (isValidFetchUrl(url, document.baseURI)) { + const response = await fetch(url); - this.baseUrl = baseUrl; - this.isCompressed = isCompressed; + if (!response.ok) { + throw new Error(response.statusText); + } + + return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text()); } - _createClass(DOMCMapReaderFactory, [{ - key: "fetch", - value: function (_fetch) { - function fetch(_x) { - return _fetch.apply(this, arguments); + return new Promise((resolve, reject) => { + const request = new XMLHttpRequest(); + request.open("GET", url, true); + + if (asTypedArray) { + request.responseType = "arraybuffer"; + } + + request.onreadystatechange = () => { + if (request.readyState !== XMLHttpRequest.DONE) { + return; } - fetch.toString = function () { - return _fetch.toString(); + if (request.status === 200 || request.status === 0) { + let data; + + if (asTypedArray && request.response) { + data = new Uint8Array(request.response); + } else if (!asTypedArray && request.responseText) { + data = (0, _util.stringToBytes)(request.responseText); + } + + if (data) { + resolve(data); + return; + } + } + + reject(new Error(request.statusText)); + }; + + request.send(null); + }); +} + +class DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory { + _fetchData(url, compressionType) { + return fetchData(url, this.isCompressed).then(data => { + return { + cMapData: data, + compressionType }; + }); + } - return fetch; - }( - /*#__PURE__*/ - function () { - var _ref3 = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee2(_ref2) { - var _this = this; - - var name, url, compressionType; - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - name = _ref2.name; - - if (this.baseUrl) { - _context2.next = 3; - break; - } - - throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.'); - - case 3: - if (name) { - _context2.next = 5; - break; - } - - throw new Error('CMap name must be specified.'); - - case 5: - url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : ''); - compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE; - - if (!(isFetchSupported() && isValidFetchUrl(url, document.baseURI))) { - _context2.next = 9; - break; - } - - return _context2.abrupt("return", fetch(url).then( - /*#__PURE__*/ - function () { - var _ref4 = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee(response) { - var cMapData; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (response.ok) { - _context.next = 2; - break; - } - - throw new Error(response.statusText); - - case 2: - if (!_this.isCompressed) { - _context.next = 10; - break; - } - - _context.t0 = Uint8Array; - _context.next = 6; - return response.arrayBuffer(); - - case 6: - _context.t1 = _context.sent; - cMapData = new _context.t0(_context.t1); - _context.next = 15; - break; - - case 10: - _context.t2 = _util.stringToBytes; - _context.next = 13; - return response.text(); - - case 13: - _context.t3 = _context.sent; - cMapData = (0, _context.t2)(_context.t3); - - case 15: - return _context.abrupt("return", { - cMapData: cMapData, - compressionType: compressionType - }); - - case 16: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - - return function (_x3) { - return _ref4.apply(this, arguments); - }; - }())["catch"](function (reason) { - throw new Error("Unable to load ".concat(_this.isCompressed ? 'binary ' : '') + "CMap at: ".concat(url)); - })); - - case 9: - return _context2.abrupt("return", new Promise(function (resolve, reject) { - var request = new XMLHttpRequest(); - request.open('GET', url, true); - - if (_this.isCompressed) { - request.responseType = 'arraybuffer'; - } - - request.onreadystatechange = function () { - if (request.readyState !== XMLHttpRequest.DONE) { - return; - } - - if (request.status === 200 || request.status === 0) { - var cMapData; - - if (_this.isCompressed && request.response) { - cMapData = new Uint8Array(request.response); - } else if (!_this.isCompressed && request.responseText) { - cMapData = (0, _util.stringToBytes)(request.responseText); - } - - if (cMapData) { - resolve({ - cMapData: cMapData, - compressionType: compressionType - }); - return; - } - } - - reject(new Error(request.statusText)); - }; - - request.send(null); - })["catch"](function (reason) { - throw new Error("Unable to load ".concat(_this.isCompressed ? 'binary ' : '') + "CMap at: ".concat(url)); - })); - - case 10: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - return function (_x2) { - return _ref3.apply(this, arguments); - }; - }()) - }]); - - return DOMCMapReaderFactory; -}(); +} exports.DOMCMapReaderFactory = DOMCMapReaderFactory; -var DOMSVGFactory = -/*#__PURE__*/ -function () { - function DOMSVGFactory() { - _classCallCheck(this, DOMSVGFactory); +class DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url, true); } - _createClass(DOMSVGFactory, [{ - key: "create", - value: function create(width, height) { - (0, _util.assert)(width > 0 && height > 0, 'Invalid SVG dimensions'); - var svg = document.createElementNS(SVG_NS, 'svg:svg'); - svg.setAttribute('version', '1.1'); - svg.setAttribute('width', width + 'px'); - svg.setAttribute('height', height + 'px'); - svg.setAttribute('preserveAspectRatio', 'none'); - svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height); - return svg; - } - }, { - key: "createElement", - value: function createElement(type) { - (0, _util.assert)(typeof type === 'string', 'Invalid SVG element type'); - return document.createElementNS(SVG_NS, type); - } - }]); +} - return DOMSVGFactory; -}(); +exports.DOMStandardFontDataFactory = DOMStandardFontDataFactory; + +class DOMSVGFactory extends _base_factory.BaseSVGFactory { + _createSVG(type) { + return document.createElementNS(SVG_NS, type); + } + +} exports.DOMSVGFactory = DOMSVGFactory; -var PageViewport = -/*#__PURE__*/ -function () { - function PageViewport(_ref5) { - var viewBox = _ref5.viewBox, - scale = _ref5.scale, - rotation = _ref5.rotation, - _ref5$offsetX = _ref5.offsetX, - offsetX = _ref5$offsetX === void 0 ? 0 : _ref5$offsetX, - _ref5$offsetY = _ref5.offsetY, - offsetY = _ref5$offsetY === void 0 ? 0 : _ref5$offsetY, - _ref5$dontFlip = _ref5.dontFlip, - dontFlip = _ref5$dontFlip === void 0 ? false : _ref5$dontFlip; - - _classCallCheck(this, PageViewport); - +class PageViewport { + constructor(_ref) { + let { + viewBox, + scale, + rotation, + offsetX = 0, + offsetY = 0, + dontFlip = false + } = _ref; this.viewBox = viewBox; this.scale = scale; this.rotation = rotation; this.offsetX = offsetX; this.offsetY = offsetY; - var centerX = (viewBox[2] + viewBox[0]) / 2; - var centerY = (viewBox[3] + viewBox[1]) / 2; - var rotateA, rotateB, rotateC, rotateD; - rotation = rotation % 360; - rotation = rotation < 0 ? rotation + 360 : rotation; + const centerX = (viewBox[2] + viewBox[0]) / 2; + const centerY = (viewBox[3] + viewBox[1]) / 2; + let rotateA, rotateB, rotateC, rotateD; + rotation %= 360; + + if (rotation < 0) { + rotation += 360; + } switch (rotation) { case 180: @@ -13209,12 +8870,15 @@ function () { rotateD = 0; break; - default: + case 0: rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1; break; + + default: + throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees."); } if (dontFlip) { @@ -13222,8 +8886,8 @@ function () { rotateD = -rotateD; } - var offsetCanvasX, offsetCanvasY; - var width, height; + let offsetCanvasX, offsetCanvasY; + let width, height; if (rotateA === 0) { offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX; @@ -13242,764 +8906,940 @@ function () { this.height = height; } - _createClass(PageViewport, [{ - key: "clone", - value: function clone() { - var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref6$scale = _ref6.scale, - scale = _ref6$scale === void 0 ? this.scale : _ref6$scale, - _ref6$rotation = _ref6.rotation, - rotation = _ref6$rotation === void 0 ? this.rotation : _ref6$rotation, - _ref6$dontFlip = _ref6.dontFlip, - dontFlip = _ref6$dontFlip === void 0 ? false : _ref6$dontFlip; + clone() { + let { + scale = this.scale, + rotation = this.rotation, + offsetX = this.offsetX, + offsetY = this.offsetY, + dontFlip = false + } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return new PageViewport({ + viewBox: this.viewBox.slice(), + scale, + rotation, + offsetX, + offsetY, + dontFlip + }); + } - return new PageViewport({ - viewBox: this.viewBox.slice(), - scale: scale, - rotation: rotation, - offsetX: this.offsetX, - offsetY: this.offsetY, - dontFlip: dontFlip - }); - } - }, { - key: "convertToViewportPoint", - value: function convertToViewportPoint(x, y) { - return _util.Util.applyTransform([x, y], this.transform); - } - }, { - key: "convertToViewportRectangle", - value: function convertToViewportRectangle(rect) { - var topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform); + convertToViewportPoint(x, y) { + return _util.Util.applyTransform([x, y], this.transform); + } - var bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform); + convertToViewportRectangle(rect) { + const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform); - return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]]; - } - }, { - key: "convertToPdfPoint", - value: function convertToPdfPoint(x, y) { - return _util.Util.applyInverseTransform([x, y], this.transform); - } - }]); + const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform); - return PageViewport; -}(); + return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]]; + } + + convertToPdfPoint(x, y) { + return _util.Util.applyInverseTransform([x, y], this.transform); + } + +} exports.PageViewport = PageViewport; -var RenderingCancelledException = function RenderingCancelledException() { - function RenderingCancelledException(msg, type) { - this.message = msg; +class RenderingCancelledException extends _util.BaseException { + constructor(msg, type) { + super(msg, "RenderingCancelledException"); this.type = type; } - RenderingCancelledException.prototype = new Error(); - RenderingCancelledException.prototype.name = 'RenderingCancelledException'; - RenderingCancelledException.constructor = RenderingCancelledException; - return RenderingCancelledException; -}(); +} exports.RenderingCancelledException = RenderingCancelledException; -var LinkTarget = { - NONE: 0, - SELF: 1, - BLANK: 2, - PARENT: 3, - TOP: 4 -}; -exports.LinkTarget = LinkTarget; -var LinkTargetStringMap = ['', '_self', '_blank', '_parent', '_top']; -function addLinkAttributes(link) { - var _ref7 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - url = _ref7.url, - target = _ref7.target, - rel = _ref7.rel; +function isDataScheme(url) { + const ii = url.length; + let i = 0; - link.href = link.title = url ? (0, _util.removeNullCharacters)(url) : ''; - - if (url) { - var LinkTargetValues = Object.values(LinkTarget); - var targetIndex = LinkTargetValues.includes(target) ? target : LinkTarget.NONE; - link.target = LinkTargetStringMap[targetIndex]; - link.rel = typeof rel === 'string' ? rel : DEFAULT_LINK_REL; + while (i < ii && url[i].trim() === "") { + i++; } + + return url.substring(i, i + 5).toLowerCase() === "data:"; +} + +function isPdfFile(filename) { + return typeof filename === "string" && /\.pdf$/i.test(filename); } function getFilenameFromUrl(url) { - var anchor = url.indexOf('#'); - var query = url.indexOf('?'); - var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length); - return url.substring(url.lastIndexOf('/', end) + 1, end); + const anchor = url.indexOf("#"); + const query = url.indexOf("?"); + const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length); + return url.substring(url.lastIndexOf("/", end) + 1, end); } -var StatTimer = -/*#__PURE__*/ -function () { - function StatTimer() { - var enable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; +function getPdfFilenameFromUrl(url) { + let defaultFilename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "document.pdf"; - _classCallCheck(this, StatTimer); + if (typeof url !== "string") { + return defaultFilename; + } - this.enabled = !!enable; + if (isDataScheme(url)) { + (0, _util.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'); + return defaultFilename; + } + + const reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/; + const reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i; + const splitURI = reURI.exec(url); + let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]); + + if (suggestedFilename) { + suggestedFilename = suggestedFilename[0]; + + if (suggestedFilename.includes("%")) { + try { + suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0]; + } catch (ex) {} + } + } + + return suggestedFilename || defaultFilename; +} + +class StatTimer { + constructor() { this.started = Object.create(null); this.times = []; } - _createClass(StatTimer, [{ - key: "time", - value: function time(name) { - if (!this.enabled) { - return; - } - - if (name in this.started) { - (0, _util.warn)('Timer is already running for ' + name); - } - - this.started[name] = Date.now(); + time(name) { + if (name in this.started) { + (0, _util.warn)(`Timer is already running for ${name}`); } - }, { - key: "timeEnd", - value: function timeEnd(name) { - if (!this.enabled) { - return; - } - if (!(name in this.started)) { - (0, _util.warn)('Timer has not been started for ' + name); - } + this.started[name] = Date.now(); + } - this.times.push({ - 'name': name, - 'start': this.started[name], - 'end': Date.now() - }); - delete this.started[name]; + timeEnd(name) { + if (!(name in this.started)) { + (0, _util.warn)(`Timer has not been started for ${name}`); } - }, { - key: "toString", - value: function toString() { - var out = '', - longest = 0; - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - try { - for (var _iterator = this.times[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var time = _step.value; - var name = time.name; + this.times.push({ + name, + start: this.started[name], + end: Date.now() + }); + delete this.started[name]; + } - if (name.length > longest) { - longest = name.length; - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator["return"] != null) { - _iterator["return"](); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } + toString() { + const outBuf = []; + let longest = 0; + + for (const time of this.times) { + const name = time.name; + + if (name.length > longest) { + longest = name.length; } - - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = this.times[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var _time = _step2.value; - var duration = _time.end - _time.start; - out += "".concat(_time.name.padEnd(longest), " ").concat(duration, "ms\n"); - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { - _iterator2["return"](); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - return out; } - }]); - return StatTimer; -}(); + for (const time of this.times) { + const duration = time.end - time.start; + outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\n`); + } + + return outBuf.join(""); + } + +} exports.StatTimer = StatTimer; -var DummyStatTimer = -/*#__PURE__*/ -function () { - function DummyStatTimer() { - _classCallCheck(this, DummyStatTimer); - - (0, _util.unreachable)('Cannot initialize DummyStatTimer.'); - } - - _createClass(DummyStatTimer, null, [{ - key: "time", - value: function time(name) {} - }, { - key: "timeEnd", - value: function timeEnd(name) {} - }, { - key: "toString", - value: function toString() { - return ''; - } - }]); - - return DummyStatTimer; -}(); - -exports.DummyStatTimer = DummyStatTimer; - -function isFetchSupported() { - return typeof fetch !== 'undefined' && typeof Response !== 'undefined' && 'body' in Response.prototype && typeof ReadableStream !== 'undefined'; -} - function isValidFetchUrl(url, baseUrl) { try { - var _ref8 = baseUrl ? new _util.URL(url, baseUrl) : new _util.URL(url), - protocol = _ref8.protocol; - - return protocol === 'http:' || protocol === 'https:'; + const { + protocol + } = baseUrl ? new URL(url, baseUrl) : new URL(url); + return protocol === "http:" || protocol === "https:"; } catch (ex) { return false; } } function loadScript(src) { - return new Promise(function (resolve, reject) { - var script = document.createElement('script'); + let removeScriptElement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + return new Promise((resolve, reject) => { + const script = document.createElement("script"); script.src = src; - script.onload = resolve; - script.onerror = function () { - reject(new Error("Cannot load script at: ".concat(script.src))); + script.onload = function (evt) { + if (removeScriptElement) { + script.remove(); + } + + resolve(evt); }; - (document.head || document.documentElement).appendChild(script); + script.onerror = function () { + reject(new Error(`Cannot load script at: ${script.src}`)); + }; + + (document.head || document.documentElement).append(script); }); } function deprecated(details) { - console.log('Deprecated API usage: ' + details); + console.log("Deprecated API usage: " + details); } -function releaseImageResources(img) { - (0, _util.assert)(img instanceof Image, 'Invalid `img` parameter.'); - var url = img.src; +let pdfDateStringRegex; - if (typeof url === 'string' && url.startsWith('blob:') && _util.URL.revokeObjectURL) { - _util.URL.revokeObjectURL(url); - } - - img.removeAttribute('src'); -} - -var pdfDateStringRegex; - -var PDFDateString = -/*#__PURE__*/ -function () { - function PDFDateString() { - _classCallCheck(this, PDFDateString); - } - - _createClass(PDFDateString, null, [{ - key: "toDateObject", - value: function toDateObject(input) { - if (!input || !(0, _util.isString)(input)) { - return null; - } - - if (!pdfDateStringRegex) { - pdfDateStringRegex = new RegExp('^D:' + '(\\d{4})' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '([Z|+|-])?' + '(\\d{2})?' + '\'?' + '(\\d{2})?' + '\'?'); - } - - var matches = pdfDateStringRegex.exec(input); - - if (!matches) { - return null; - } - - var year = parseInt(matches[1], 10); - var month = parseInt(matches[2], 10); - month = month >= 1 && month <= 12 ? month - 1 : 0; - var day = parseInt(matches[3], 10); - day = day >= 1 && day <= 31 ? day : 1; - var hour = parseInt(matches[4], 10); - hour = hour >= 0 && hour <= 23 ? hour : 0; - var minute = parseInt(matches[5], 10); - minute = minute >= 0 && minute <= 59 ? minute : 0; - var second = parseInt(matches[6], 10); - second = second >= 0 && second <= 59 ? second : 0; - var universalTimeRelation = matches[7] || 'Z'; - var offsetHour = parseInt(matches[8], 10); - offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0; - var offsetMinute = parseInt(matches[9], 10) || 0; - offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0; - - if (universalTimeRelation === '-') { - hour += offsetHour; - minute += offsetMinute; - } else if (universalTimeRelation === '+') { - hour -= offsetHour; - minute -= offsetMinute; - } - - return new Date(Date.UTC(year, month, day, hour, minute, second)); +class PDFDateString { + static toDateObject(input) { + if (!input || typeof input !== "string") { + return null; } - }]); - return PDFDateString; -}(); + if (!pdfDateStringRegex) { + pdfDateStringRegex = new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?"); + } + + const matches = pdfDateStringRegex.exec(input); + + if (!matches) { + return null; + } + + const year = parseInt(matches[1], 10); + let month = parseInt(matches[2], 10); + month = month >= 1 && month <= 12 ? month - 1 : 0; + let day = parseInt(matches[3], 10); + day = day >= 1 && day <= 31 ? day : 1; + let hour = parseInt(matches[4], 10); + hour = hour >= 0 && hour <= 23 ? hour : 0; + let minute = parseInt(matches[5], 10); + minute = minute >= 0 && minute <= 59 ? minute : 0; + let second = parseInt(matches[6], 10); + second = second >= 0 && second <= 59 ? second : 0; + const universalTimeRelation = matches[7] || "Z"; + let offsetHour = parseInt(matches[8], 10); + offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0; + let offsetMinute = parseInt(matches[9], 10) || 0; + offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0; + + if (universalTimeRelation === "-") { + hour += offsetHour; + minute += offsetMinute; + } else if (universalTimeRelation === "+") { + hour -= offsetHour; + minute -= offsetMinute; + } + + return new Date(Date.UTC(year, month, day, hour, minute, second)); + } + +} exports.PDFDateString = PDFDateString; +function getXfaPageViewport(xfaPage, _ref2) { + let { + scale = 1, + rotation = 0 + } = _ref2; + const { + width, + height + } = xfaPage.attributes.style; + const viewBox = [0, 0, parseInt(width), parseInt(height)]; + return new PageViewport({ + viewBox, + scale, + rotation + }); +} + +function getRGB(color) { + if (color.startsWith("#")) { + const colorRGB = parseInt(color.slice(1), 16); + return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff]; + } + + if (color.startsWith("rgb(")) { + return color.slice(4, -1).split(",").map(x => parseInt(x)); + } + + if (color.startsWith("rgba(")) { + return color.slice(5, -1).split(",").map(x => parseInt(x)).slice(0, 3); + } + + (0, _util.warn)(`Not a valid color format: "${color}"`); + return [0, 0, 0]; +} + +function getColorValues(colors) { + const span = document.createElement("span"); + span.style.visibility = "hidden"; + document.body.append(span); + + for (const name of colors.keys()) { + span.style.color = name; + const computedColor = window.getComputedStyle(span).color; + colors.set(name, getRGB(computedColor)); + } + + span.remove(); +} + +function getCurrentTransform(ctx) { + const { + a, + b, + c, + d, + e, + f + } = ctx.getTransform(); + return [a, b, c, d, e, f]; +} + +function getCurrentTransformInverse(ctx) { + const { + a, + b, + c, + d, + e, + f + } = ctx.getTransform().invertSelf(); + return [a, b, c, d, e, f]; +} + /***/ }), -/* 152 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 134 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.FontLoader = exports.FontFaceObject = void 0; - -var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148)); +})); +exports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0; var _util = __w_pdfjs_require__(1); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +class BaseCanvasFactory { + constructor() { + if (this.constructor === BaseCanvasFactory) { + (0, _util.unreachable)("Cannot initialize BaseCanvasFactory."); + } + } -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + create(width, height) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); + } -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + const canvas = this._createCanvas(width, height); -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + return { + canvas, + context: canvas.getContext("2d") + }; + } -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + reset(canvasAndContext, width, height) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); + } -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); + } -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + canvasAndContext.canvas.width = width; + canvasAndContext.canvas.height = height; + } -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + destroy(canvasAndContext) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); + } -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + canvasAndContext.canvas.width = 0; + canvasAndContext.canvas.height = 0; + canvasAndContext.canvas = null; + canvasAndContext.context = null; + } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + _createCanvas(width, height) { + (0, _util.unreachable)("Abstract method `_createCanvas` called."); + } -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } +} -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +exports.BaseCanvasFactory = BaseCanvasFactory; -var BaseFontLoader = -/*#__PURE__*/ -function () { - function BaseFontLoader(_ref) { - var docId = _ref.docId, - onUnsupportedFeature = _ref.onUnsupportedFeature; +class BaseCMapReaderFactory { + constructor(_ref) { + let { + baseUrl = null, + isCompressed = false + } = _ref; - _classCallCheck(this, BaseFontLoader); + if (this.constructor === BaseCMapReaderFactory) { + (0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory."); + } + + this.baseUrl = baseUrl; + this.isCompressed = isCompressed; + } + + async fetch(_ref2) { + let { + name + } = _ref2; + + if (!this.baseUrl) { + throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.'); + } + + if (!name) { + throw new Error("CMap name must be specified."); + } + + const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : ""); + const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE; + return this._fetchData(url, compressionType).catch(reason => { + throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`); + }); + } + + _fetchData(url, compressionType) { + (0, _util.unreachable)("Abstract method `_fetchData` called."); + } + +} + +exports.BaseCMapReaderFactory = BaseCMapReaderFactory; + +class BaseStandardFontDataFactory { + constructor(_ref3) { + let { + baseUrl = null + } = _ref3; + + if (this.constructor === BaseStandardFontDataFactory) { + (0, _util.unreachable)("Cannot initialize BaseStandardFontDataFactory."); + } + + this.baseUrl = baseUrl; + } + + async fetch(_ref4) { + let { + filename + } = _ref4; + + if (!this.baseUrl) { + throw new Error('The standard font "baseUrl" parameter must be specified, ensure that ' + 'the "standardFontDataUrl" API parameter is provided.'); + } + + if (!filename) { + throw new Error("Font filename must be specified."); + } + + const url = `${this.baseUrl}${filename}`; + return this._fetchData(url).catch(reason => { + throw new Error(`Unable to load font data at: ${url}`); + }); + } + + _fetchData(url) { + (0, _util.unreachable)("Abstract method `_fetchData` called."); + } + +} + +exports.BaseStandardFontDataFactory = BaseStandardFontDataFactory; + +class BaseSVGFactory { + constructor() { + if (this.constructor === BaseSVGFactory) { + (0, _util.unreachable)("Cannot initialize BaseSVGFactory."); + } + } + + create(width, height) { + let skipDimensions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + if (width <= 0 || height <= 0) { + throw new Error("Invalid SVG dimensions"); + } + + const svg = this._createSVG("svg:svg"); + + svg.setAttribute("version", "1.1"); + + if (!skipDimensions) { + svg.setAttribute("width", `${width}px`); + svg.setAttribute("height", `${height}px`); + } + + svg.setAttribute("preserveAspectRatio", "none"); + svg.setAttribute("viewBox", `0 0 ${width} ${height}`); + return svg; + } + + createElement(type) { + if (typeof type !== "string") { + throw new Error("Invalid SVG element type"); + } + + return this._createSVG(type); + } + + _createSVG(type) { + (0, _util.unreachable)("Abstract method `_createSVG` called."); + } + +} + +exports.BaseSVGFactory = BaseSVGFactory; + +/***/ }), +/* 135 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MurmurHash3_64 = void 0; + +var _util = __w_pdfjs_require__(1); + +const SEED = 0xc3d2e1f0; +const MASK_HIGH = 0xffff0000; +const MASK_LOW = 0xffff; + +class MurmurHash3_64 { + constructor(seed) { + this.h1 = seed ? seed & 0xffffffff : SEED; + this.h2 = seed ? seed & 0xffffffff : SEED; + } + + update(input) { + let data, length; + + if (typeof input === "string") { + data = new Uint8Array(input.length * 2); + length = 0; + + for (let i = 0, ii = input.length; i < ii; i++) { + const code = input.charCodeAt(i); + + if (code <= 0xff) { + data[length++] = code; + } else { + data[length++] = code >>> 8; + data[length++] = code & 0xff; + } + } + } else if ((0, _util.isArrayBuffer)(input)) { + data = input.slice(); + length = data.byteLength; + } else { + throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array."); + } + + const blockCounts = length >> 2; + const tailLength = length - blockCounts * 4; + const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts); + let k1 = 0, + k2 = 0; + let h1 = this.h1, + h2 = this.h2; + const C1 = 0xcc9e2d51, + C2 = 0x1b873593; + const C1_LOW = C1 & MASK_LOW, + C2_LOW = C2 & MASK_LOW; + + for (let i = 0; i < blockCounts; i++) { + if (i & 1) { + k1 = dataUint32[i]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + h1 ^= k1; + h1 = h1 << 13 | h1 >>> 19; + h1 = h1 * 5 + 0xe6546b64; + } else { + k2 = dataUint32[i]; + k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW; + k2 = k2 << 15 | k2 >>> 17; + k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW; + h2 ^= k2; + h2 = h2 << 13 | h2 >>> 19; + h2 = h2 * 5 + 0xe6546b64; + } + } + + k1 = 0; + + switch (tailLength) { + case 3: + k1 ^= data[blockCounts * 4 + 2] << 16; + + case 2: + k1 ^= data[blockCounts * 4 + 1] << 8; + + case 1: + k1 ^= data[blockCounts * 4]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + + if (blockCounts & 1) { + h1 ^= k1; + } else { + h2 ^= k1; + } + + } + + this.h1 = h1; + this.h2 = h2; + } + + hexdigest() { + let h1 = this.h1, + h2 = this.h2; + h1 ^= h2 >>> 1; + h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW; + h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW; + h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + const hex1 = (h1 >>> 0).toString(16), + hex2 = (h2 >>> 0).toString(16); + return hex1.padStart(8, "0") + hex2.padStart(8, "0"); + } + +} + +exports.MurmurHash3_64 = MurmurHash3_64; + +/***/ }), +/* 136 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FontLoader = exports.FontFaceObject = void 0; + +var _util = __w_pdfjs_require__(1); + +class BaseFontLoader { + constructor(_ref) { + let { + docId, + onUnsupportedFeature, + ownerDocument = globalThis.document, + styleElement = null + } = _ref; if (this.constructor === BaseFontLoader) { - (0, _util.unreachable)('Cannot initialize BaseFontLoader.'); + (0, _util.unreachable)("Cannot initialize BaseFontLoader."); } this.docId = docId; this._onUnsupportedFeature = onUnsupportedFeature; + this._document = ownerDocument; this.nativeFontFaces = []; this.styleElement = null; } - _createClass(BaseFontLoader, [{ - key: "addNativeFontFace", - value: function addNativeFontFace(nativeFontFace) { - this.nativeFontFaces.push(nativeFontFace); - document.fonts.add(nativeFontFace); - } - }, { - key: "insertRule", - value: function insertRule(rule) { - var styleElement = this.styleElement; + addNativeFontFace(nativeFontFace) { + this.nativeFontFaces.push(nativeFontFace); - if (!styleElement) { - styleElement = this.styleElement = document.createElement('style'); - styleElement.id = "PDFJS_FONT_STYLE_TAG_".concat(this.docId); - document.documentElement.getElementsByTagName('head')[0].appendChild(styleElement); + this._document.fonts.add(nativeFontFace); + } + + insertRule(rule) { + let styleElement = this.styleElement; + + if (!styleElement) { + styleElement = this.styleElement = this._document.createElement("style"); + styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`; + + this._document.documentElement.getElementsByTagName("head")[0].append(styleElement); + } + + const styleSheet = styleElement.sheet; + styleSheet.insertRule(rule, styleSheet.cssRules.length); + } + + clear() { + for (const nativeFontFace of this.nativeFontFaces) { + this._document.fonts.delete(nativeFontFace); + } + + this.nativeFontFaces.length = 0; + + if (this.styleElement) { + this.styleElement.remove(); + this.styleElement = null; + } + } + + async bind(font) { + if (font.attached || font.missingFile) { + return; + } + + font.attached = true; + + if (this.isFontLoadingAPISupported) { + const nativeFontFace = font.createNativeFontFace(); + + if (nativeFontFace) { + this.addNativeFontFace(nativeFontFace); + + try { + await nativeFontFace.loaded; + } catch (ex) { + this._onUnsupportedFeature({ + featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative + }); + + (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`); + font.disableFontFace = true; + throw ex; + } } - var styleSheet = styleElement.sheet; - styleSheet.insertRule(rule, styleSheet.cssRules.length); + return; } - }, { - key: "clear", - value: function clear() { - this.nativeFontFaces.forEach(function (nativeFontFace) { - document.fonts["delete"](nativeFontFace); + + const rule = font.createFontFaceRule(); + + if (rule) { + this.insertRule(rule); + + if (this.isSyncFontLoadingSupported) { + return; + } + + await new Promise(resolve => { + const request = this._queueLoadingCallback(resolve); + + this._prepareFontLoadEvent([rule], [font], request); }); - this.nativeFontFaces.length = 0; - - if (this.styleElement) { - this.styleElement.remove(); - this.styleElement = null; - } } - }, { - key: "bind", - value: function () { - var _bind = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee(font) { - var _this = this; + } - var nativeFontFace, rule; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (!(font.attached || font.missingFile)) { - _context.next = 2; - break; - } + _queueLoadingCallback(callback) { + (0, _util.unreachable)("Abstract method `_queueLoadingCallback`."); + } - return _context.abrupt("return", undefined); + get isFontLoadingAPISupported() { + var _this$_document; - case 2: - font.attached = true; + const hasFonts = !!((_this$_document = this._document) !== null && _this$_document !== void 0 && _this$_document.fonts); + return (0, _util.shadow)(this, "isFontLoadingAPISupported", hasFonts); + } - if (!this.isFontLoadingAPISupported) { - _context.next = 19; - break; - } + get isSyncFontLoadingSupported() { + (0, _util.unreachable)("Abstract method `isSyncFontLoadingSupported`."); + } - nativeFontFace = font.createNativeFontFace(); + get _loadTestFont() { + (0, _util.unreachable)("Abstract method `_loadTestFont`."); + } - if (!nativeFontFace) { - _context.next = 18; - break; - } + _prepareFontLoadEvent(rules, fontsToLoad, request) { + (0, _util.unreachable)("Abstract method `_prepareFontLoadEvent`."); + } - this.addNativeFontFace(nativeFontFace); - _context.prev = 7; - _context.next = 10; - return nativeFontFace.loaded; +} - case 10: - _context.next = 18; - break; - - case 12: - _context.prev = 12; - _context.t0 = _context["catch"](7); - - this._onUnsupportedFeature({ - featureId: _util.UNSUPPORTED_FEATURES.font - }); - - (0, _util.warn)("Failed to load font '".concat(nativeFontFace.family, "': '").concat(_context.t0, "'.")); - font.disableFontFace = true; - throw _context.t0; - - case 18: - return _context.abrupt("return", undefined); - - case 19: - rule = font.createFontFaceRule(); - - if (!rule) { - _context.next = 25; - break; - } - - this.insertRule(rule); - - if (!this.isSyncFontLoadingSupported) { - _context.next = 24; - break; - } - - return _context.abrupt("return", undefined); - - case 24: - return _context.abrupt("return", new Promise(function (resolve) { - var request = _this._queueLoadingCallback(resolve); - - _this._prepareFontLoadEvent([rule], [font], request); - })); - - case 25: - return _context.abrupt("return", undefined); - - case 26: - case "end": - return _context.stop(); - } - } - }, _callee, this, [[7, 12]]); - })); - - function bind(_x) { - return _bind.apply(this, arguments); - } - - return bind; - }() - }, { - key: "_queueLoadingCallback", - value: function _queueLoadingCallback(callback) { - (0, _util.unreachable)('Abstract method `_queueLoadingCallback`.'); - } - }, { - key: "_prepareFontLoadEvent", - value: function _prepareFontLoadEvent(rules, fontsToLoad, request) { - (0, _util.unreachable)('Abstract method `_prepareFontLoadEvent`.'); - } - }, { - key: "isFontLoadingAPISupported", - get: function get() { - (0, _util.unreachable)('Abstract method `isFontLoadingAPISupported`.'); - } - }, { - key: "isSyncFontLoadingSupported", - get: function get() { - (0, _util.unreachable)('Abstract method `isSyncFontLoadingSupported`.'); - } - }, { - key: "_loadTestFont", - get: function get() { - (0, _util.unreachable)('Abstract method `_loadTestFont`.'); - } - }]); - - return BaseFontLoader; -}(); - -var FontLoader; +let FontLoader; exports.FontLoader = FontLoader; { - exports.FontLoader = FontLoader = - /*#__PURE__*/ - function (_BaseFontLoader) { - _inherits(GenericFontLoader, _BaseFontLoader); - - function GenericFontLoader(docId) { - var _this2; - - _classCallCheck(this, GenericFontLoader); - - _this2 = _possibleConstructorReturn(this, _getPrototypeOf(GenericFontLoader).call(this, docId)); - _this2.loadingContext = { + exports.FontLoader = FontLoader = class GenericFontLoader extends BaseFontLoader { + constructor(params) { + super(params); + this.loadingContext = { requests: [], nextRequestId: 0 }; - _this2.loadTestFontId = 0; - return _this2; + this.loadTestFontId = 0; } - _createClass(GenericFontLoader, [{ - key: "_queueLoadingCallback", - value: function _queueLoadingCallback(callback) { - function completeRequest() { - (0, _util.assert)(!request.done, 'completeRequest() cannot be called twice.'); - request.done = true; + get isSyncFontLoadingSupported() { + let supported = false; - while (context.requests.length > 0 && context.requests[0].done) { - var otherRequest = context.requests.shift(); - setTimeout(otherRequest.callback, 0); - } - } + if (typeof navigator === "undefined") { + supported = true; + } else { + const m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); - var context = this.loadingContext; - var request = { - id: "pdfjs-font-loading-".concat(context.nextRequestId++), - done: false, - complete: completeRequest, - callback: callback - }; - context.requests.push(request); - return request; - } - }, { - key: "_prepareFontLoadEvent", - value: function _prepareFontLoadEvent(rules, fonts, request) { - function int32(data, offset) { - return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; - } - - function spliceString(s, offset, remove, insert) { - var chunk1 = s.substring(0, offset); - var chunk2 = s.substring(offset + remove); - return chunk1 + insert + chunk2; - } - - var i, ii; - var canvas = document.createElement('canvas'); - canvas.width = 1; - canvas.height = 1; - var ctx = canvas.getContext('2d'); - var called = 0; - - function isFontReady(name, callback) { - called++; - - if (called > 30) { - (0, _util.warn)('Load test font never loaded.'); - callback(); - return; - } - - ctx.font = '30px ' + name; - ctx.fillText('.', 0, 20); - var imageData = ctx.getImageData(0, 0, 1, 1); - - if (imageData.data[3] > 0) { - callback(); - return; - } - - setTimeout(isFontReady.bind(null, name, callback)); - } - - var loadTestFontId = "lt".concat(Date.now()).concat(this.loadTestFontId++); - var data = this._loadTestFont; - var COMMENT_OFFSET = 976; - data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); - var CFF_CHECKSUM_OFFSET = 16; - var XXXX_VALUE = 0x58585858; - var checksum = int32(data, CFF_CHECKSUM_OFFSET); - - for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { - checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; - } - - if (i < loadTestFontId.length) { - checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0; - } - - data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum)); - var url = "url(data:font/opentype;base64,".concat(btoa(data), ");"); - var rule = "@font-face {font-family:\"".concat(loadTestFontId, "\";src:").concat(url, "}"); - this.insertRule(rule); - var names = []; - - for (i = 0, ii = fonts.length; i < ii; i++) { - names.push(fonts[i].loadedName); - } - - names.push(loadTestFontId); - var div = document.createElement('div'); - div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;'); - - for (i = 0, ii = names.length; i < ii; ++i) { - var span = document.createElement('span'); - span.textContent = 'Hi'; - span.style.fontFamily = names[i]; - div.appendChild(span); - } - - document.body.appendChild(div); - isFontReady(loadTestFontId, function () { - document.body.removeChild(div); - request.complete(); - }); - } - }, { - key: "isFontLoadingAPISupported", - get: function get() { - var supported = typeof document !== 'undefined' && !!document.fonts; - - if (supported && typeof navigator !== 'undefined') { - var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); - - if (m && m[1] < 63) { - supported = false; - } - } - - return (0, _util.shadow)(this, 'isFontLoadingAPISupported', supported); - } - }, { - key: "isSyncFontLoadingSupported", - get: function get() { - var supported = false; - - if (typeof navigator === 'undefined') { + if ((m === null || m === void 0 ? void 0 : m[1]) >= 14) { supported = true; - } else { - var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); + } + } - if (m && m[1] >= 14) { - supported = true; - } + return (0, _util.shadow)(this, "isSyncFontLoadingSupported", supported); + } + + _queueLoadingCallback(callback) { + function completeRequest() { + (0, _util.assert)(!request.done, "completeRequest() cannot be called twice."); + request.done = true; + + while (context.requests.length > 0 && context.requests[0].done) { + const otherRequest = context.requests.shift(); + setTimeout(otherRequest.callback, 0); + } + } + + const context = this.loadingContext; + const request = { + id: `pdfjs-font-loading-${context.nextRequestId++}`, + done: false, + complete: completeRequest, + callback + }; + context.requests.push(request); + return request; + } + + get _loadTestFont() { + const getLoadTestFont = function () { + return atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA" + "FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA" + "ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA" + "AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1" + "AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD" + "6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM" + "AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D" + "IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA" + "AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA" + "AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB" + "AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY" + "AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA" + "AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA" + "AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC" + "AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3" + "Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj" + "FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA=="); + }; + + return (0, _util.shadow)(this, "_loadTestFont", getLoadTestFont()); + } + + _prepareFontLoadEvent(rules, fonts, request) { + function int32(data, offset) { + return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; + } + + function spliceString(s, offset, remove, insert) { + const chunk1 = s.substring(0, offset); + const chunk2 = s.substring(offset + remove); + return chunk1 + insert + chunk2; + } + + let i, ii; + + const canvas = this._document.createElement("canvas"); + + canvas.width = 1; + canvas.height = 1; + const ctx = canvas.getContext("2d"); + let called = 0; + + function isFontReady(name, callback) { + called++; + + if (called > 30) { + (0, _util.warn)("Load test font never loaded."); + callback(); + return; } - return (0, _util.shadow)(this, 'isSyncFontLoadingSupported', supported); - } - }, { - key: "_loadTestFont", - get: function get() { - var getLoadTestFont = function getLoadTestFont() { - return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA' + 'FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA' + 'ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA' + 'AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1' + 'AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD' + '6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM' + 'AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D' + 'IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA' + 'AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA' + 'AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB' + 'AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY' + 'AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA' + 'AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA' + 'AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC' + 'AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3' + 'Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj' + 'FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA=='); - }; + ctx.font = "30px " + name; + ctx.fillText(".", 0, 20); + const imageData = ctx.getImageData(0, 0, 1, 1); - return (0, _util.shadow)(this, '_loadTestFont', getLoadTestFont()); - } - }]); + if (imageData.data[3] > 0) { + callback(); + return; + } - return GenericFontLoader; - }(BaseFontLoader); + setTimeout(isFontReady.bind(null, name, callback)); + } + + const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`; + let data = this._loadTestFont; + const COMMENT_OFFSET = 976; + data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); + const CFF_CHECKSUM_OFFSET = 16; + const XXXX_VALUE = 0x58585858; + let checksum = int32(data, CFF_CHECKSUM_OFFSET); + + for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; + } + + if (i < loadTestFontId.length) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId + "XXX", i) | 0; + } + + data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum)); + const url = `url(data:font/opentype;base64,${btoa(data)});`; + const rule = `@font-face {font-family:"${loadTestFontId}";src:${url}}`; + this.insertRule(rule); + const names = []; + + for (const font of fonts) { + names.push(font.loadedName); + } + + names.push(loadTestFontId); + + const div = this._document.createElement("div"); + + div.style.visibility = "hidden"; + div.style.width = div.style.height = "10px"; + div.style.position = "absolute"; + div.style.top = div.style.left = "0px"; + + for (const name of names) { + const span = this._document.createElement("span"); + + span.textContent = "Hi"; + span.style.fontFamily = name; + div.append(span); + } + + this._document.body.append(div); + + isFontReady(loadTestFontId, () => { + div.remove(); + request.complete(); + }); + } + + }; } -var IsEvalSupportedCached = { - get value() { - return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)()); - } - -}; - -var FontFaceObject = -/*#__PURE__*/ -function () { - function FontFaceObject(translatedData, _ref2) { - var _ref2$isEvalSupported = _ref2.isEvalSupported, - isEvalSupported = _ref2$isEvalSupported === void 0 ? true : _ref2$isEvalSupported, - _ref2$disableFontFace = _ref2.disableFontFace, - disableFontFace = _ref2$disableFontFace === void 0 ? false : _ref2$disableFontFace, - _ref2$ignoreErrors = _ref2.ignoreErrors, - ignoreErrors = _ref2$ignoreErrors === void 0 ? false : _ref2$ignoreErrors, - _ref2$onUnsupportedFe = _ref2.onUnsupportedFeature, - onUnsupportedFeature = _ref2$onUnsupportedFe === void 0 ? null : _ref2$onUnsupportedFe, - _ref2$fontRegistry = _ref2.fontRegistry, - fontRegistry = _ref2$fontRegistry === void 0 ? null : _ref2$fontRegistry; - - _classCallCheck(this, FontFaceObject); +class FontFaceObject { + constructor(translatedData, _ref2) { + let { + isEvalSupported = true, + disableFontFace = false, + ignoreErrors = false, + onUnsupportedFeature, + fontRegistry = null + } = _ref2; this.compiledGlyphs = Object.create(null); - for (var i in translatedData) { + for (const i in translatedData) { this[i] = translatedData[i]; } @@ -14010,310 +9850,371 @@ function () { this.fontRegistry = fontRegistry; } - _createClass(FontFaceObject, [{ - key: "createNativeFontFace", - value: function createNativeFontFace() { - if (!this.data || this.disableFontFace) { - return null; - } - - var nativeFontFace = new FontFace(this.loadedName, this.data, {}); - - if (this.fontRegistry) { - this.fontRegistry.registerFont(this); - } - - return nativeFontFace; + createNativeFontFace() { + if (!this.data || this.disableFontFace) { + return null; } - }, { - key: "createFontFaceRule", - value: function createFontFaceRule() { - if (!this.data || this.disableFontFace) { - return null; - } - var data = (0, _util.bytesToString)(new Uint8Array(this.data)); - var url = "url(data:".concat(this.mimetype, ";base64,").concat(btoa(data), ");"); - var rule = "@font-face {font-family:\"".concat(this.loadedName, "\";src:").concat(url, "}"); + let nativeFontFace; - if (this.fontRegistry) { - this.fontRegistry.registerFont(this, url); - } - - return rule; - } - }, { - key: "getPathGenerator", - value: function getPathGenerator(objs, character) { - if (this.compiledGlyphs[character] !== undefined) { - return this.compiledGlyphs[character]; - } - - var cmds, current; - - try { - cmds = objs.get(this.loadedName + '_path_' + character); - } catch (ex) { - if (!this.ignoreErrors) { - throw ex; - } - - if (this._onUnsupportedFeature) { - this._onUnsupportedFeature({ - featureId: _util.UNSUPPORTED_FEATURES.font - }); - } - - (0, _util.warn)("getPathGenerator - ignoring character: \"".concat(ex, "\".")); - return this.compiledGlyphs[character] = function (c, size) {}; - } - - if (this.isEvalSupported && IsEvalSupportedCached.value) { - var args, - js = ''; - - for (var i = 0, ii = cmds.length; i < ii; i++) { - current = cmds[i]; - - if (current.args !== undefined) { - args = current.args.join(','); - } else { - args = ''; - } - - js += 'c.' + current.cmd + '(' + args + ');\n'; - } - - return this.compiledGlyphs[character] = new Function('c', 'size', js); - } - - return this.compiledGlyphs[character] = function (c, size) { - for (var _i = 0, _ii = cmds.length; _i < _ii; _i++) { - current = cmds[_i]; - - if (current.cmd === 'scale') { - current.args = [size, -size]; - } - - c[current.cmd].apply(c, current.args); - } + if (!this.cssFontInfo) { + nativeFontFace = new FontFace(this.loadedName, this.data, {}); + } else { + const css = { + weight: this.cssFontInfo.fontWeight }; - } - }]); - return FontFaceObject; -}(); + if (this.cssFontInfo.italicAngle) { + css.style = `oblique ${this.cssFontInfo.italicAngle}deg`; + } + + nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css); + } + + if (this.fontRegistry) { + this.fontRegistry.registerFont(this); + } + + return nativeFontFace; + } + + createFontFaceRule() { + if (!this.data || this.disableFontFace) { + return null; + } + + const data = (0, _util.bytesToString)(this.data); + const url = `url(data:${this.mimetype};base64,${btoa(data)});`; + let rule; + + if (!this.cssFontInfo) { + rule = `@font-face {font-family:"${this.loadedName}";src:${url}}`; + } else { + let css = `font-weight: ${this.cssFontInfo.fontWeight};`; + + if (this.cssFontInfo.italicAngle) { + css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`; + } + + rule = `@font-face {font-family:"${this.cssFontInfo.fontFamily}";${css}src:${url}}`; + } + + if (this.fontRegistry) { + this.fontRegistry.registerFont(this, url); + } + + return rule; + } + + getPathGenerator(objs, character) { + if (this.compiledGlyphs[character] !== undefined) { + return this.compiledGlyphs[character]; + } + + let cmds; + + try { + cmds = objs.get(this.loadedName + "_path_" + character); + } catch (ex) { + if (!this.ignoreErrors) { + throw ex; + } + + this._onUnsupportedFeature({ + featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath + }); + + (0, _util.warn)(`getPathGenerator - ignoring character: "${ex}".`); + return this.compiledGlyphs[character] = function (c, size) {}; + } + + if (this.isEvalSupported && _util.FeatureTest.isEvalSupported) { + const jsBuf = []; + + for (const current of cmds) { + const args = current.args !== undefined ? current.args.join(",") : ""; + jsBuf.push("c.", current.cmd, "(", args, ");\n"); + } + + return this.compiledGlyphs[character] = new Function("c", "size", jsBuf.join("")); + } + + return this.compiledGlyphs[character] = function (c, size) { + for (const current of cmds) { + if (current.cmd === "scale") { + current.args = [size, -size]; + } + + c[current.cmd].apply(c, current.args); + } + }; + } + +} exports.FontFaceObject = FontFaceObject; /***/ }), -/* 153 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 137 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -var compatibilityParams = Object.create(null); -{ - var isNodeJS = __w_pdfjs_require__(4); - - var userAgent = typeof navigator !== 'undefined' && navigator.userAgent || ''; - var isIE = /Trident/.test(userAgent); - var isIOSChrome = /CriOS/.test(userAgent); - - (function checkOnBlobSupport() { - if (isIE || isIOSChrome) { - compatibilityParams.disableCreateObjectURL = true; - } - })(); - - (function checkFontFaceAndImage() { - if (isNodeJS()) { - compatibilityParams.disableFontFace = true; - compatibilityParams.nativeImageDecoderSupport = 'none'; - } - })(); -} -exports.apiCompatibilityParams = Object.freeze(compatibilityParams); - -/***/ }), -/* 154 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.CanvasGraphics = void 0; +var _display_utils = __w_pdfjs_require__(133); + var _util = __w_pdfjs_require__(1); -var _pattern_helper = __w_pdfjs_require__(155); +var _pattern_helper = __w_pdfjs_require__(138); -var MIN_FONT_SIZE = 16; -var MAX_FONT_SIZE = 100; -var MAX_GROUP_SIZE = 4096; -var MIN_WIDTH_FACTOR = 0.65; -var COMPILE_TYPE3_GLYPHS = true; -var MAX_SIZE_TO_COMPILE = 1000; -var FULL_CHUNK_HEIGHT = 16; -var IsLittleEndianCached = { - get value() { - return (0, _util.shadow)(IsLittleEndianCached, 'value', (0, _util.isLittleEndian)()); +var _image_utils = __w_pdfjs_require__(139); + +var _is_node = __w_pdfjs_require__(3); + +function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); } + +function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } + +function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; } + +const MIN_FONT_SIZE = 16; +const MAX_FONT_SIZE = 100; +const MAX_GROUP_SIZE = 4096; +const EXECUTION_TIME = 15; +const EXECUTION_STEPS = 10; +const MAX_SIZE_TO_COMPILE = _is_node.isNodeJS && typeof Path2D === "undefined" ? -1 : 1000; +const FULL_CHUNK_HEIGHT = 16; + +function mirrorContextOperations(ctx, destCtx) { + if (ctx._removeMirroring) { + throw new Error("Context is already forwarding operations."); } -}; + ctx.__originalSave = ctx.save; + ctx.__originalRestore = ctx.restore; + ctx.__originalRotate = ctx.rotate; + ctx.__originalScale = ctx.scale; + ctx.__originalTranslate = ctx.translate; + ctx.__originalTransform = ctx.transform; + ctx.__originalSetTransform = ctx.setTransform; + ctx.__originalResetTransform = ctx.resetTransform; + ctx.__originalClip = ctx.clip; + ctx.__originalMoveTo = ctx.moveTo; + ctx.__originalLineTo = ctx.lineTo; + ctx.__originalBezierCurveTo = ctx.bezierCurveTo; + ctx.__originalRect = ctx.rect; + ctx.__originalClosePath = ctx.closePath; + ctx.__originalBeginPath = ctx.beginPath; -function addContextCurrentTransform(ctx) { - if (!ctx.mozCurrentTransform) { - ctx._originalSave = ctx.save; - ctx._originalRestore = ctx.restore; - ctx._originalRotate = ctx.rotate; - ctx._originalScale = ctx.scale; - ctx._originalTranslate = ctx.translate; - ctx._originalTransform = ctx.transform; - ctx._originalSetTransform = ctx.setTransform; - ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0]; - ctx._transformStack = []; - Object.defineProperty(ctx, 'mozCurrentTransform', { - get: function getCurrentTransform() { - return this._transformMatrix; - } - }); - Object.defineProperty(ctx, 'mozCurrentTransformInverse', { - get: function getCurrentTransformInverse() { - var m = this._transformMatrix; - var a = m[0], - b = m[1], - c = m[2], - d = m[3], - e = m[4], - f = m[5]; - var ad_bc = a * d - b * c; - var bc_ad = b * c - a * d; - return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc]; - } - }); + ctx._removeMirroring = () => { + ctx.save = ctx.__originalSave; + ctx.restore = ctx.__originalRestore; + ctx.rotate = ctx.__originalRotate; + ctx.scale = ctx.__originalScale; + ctx.translate = ctx.__originalTranslate; + ctx.transform = ctx.__originalTransform; + ctx.setTransform = ctx.__originalSetTransform; + ctx.resetTransform = ctx.__originalResetTransform; + ctx.clip = ctx.__originalClip; + ctx.moveTo = ctx.__originalMoveTo; + ctx.lineTo = ctx.__originalLineTo; + ctx.bezierCurveTo = ctx.__originalBezierCurveTo; + ctx.rect = ctx.__originalRect; + ctx.closePath = ctx.__originalClosePath; + ctx.beginPath = ctx.__originalBeginPath; + delete ctx._removeMirroring; + }; - ctx.save = function ctxSave() { - var old = this._transformMatrix; + ctx.save = function ctxSave() { + destCtx.save(); - this._transformStack.push(old); + this.__originalSave(); + }; - this._transformMatrix = old.slice(0, 6); + ctx.restore = function ctxRestore() { + destCtx.restore(); - this._originalSave(); - }; + this.__originalRestore(); + }; - ctx.restore = function ctxRestore() { - var prev = this._transformStack.pop(); + ctx.translate = function ctxTranslate(x, y) { + destCtx.translate(x, y); - if (prev) { - this._transformMatrix = prev; + this.__originalTranslate(x, y); + }; - this._originalRestore(); - } - }; + ctx.scale = function ctxScale(x, y) { + destCtx.scale(x, y); - ctx.translate = function ctxTranslate(x, y) { - var m = this._transformMatrix; - m[4] = m[0] * x + m[2] * y + m[4]; - m[5] = m[1] * x + m[3] * y + m[5]; + this.__originalScale(x, y); + }; - this._originalTranslate(x, y); - }; + ctx.transform = function ctxTransform(a, b, c, d, e, f) { + destCtx.transform(a, b, c, d, e, f); - ctx.scale = function ctxScale(x, y) { - var m = this._transformMatrix; - m[0] = m[0] * x; - m[1] = m[1] * x; - m[2] = m[2] * y; - m[3] = m[3] * y; + this.__originalTransform(a, b, c, d, e, f); + }; - this._originalScale(x, y); - }; + ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) { + destCtx.setTransform(a, b, c, d, e, f); - ctx.transform = function ctxTransform(a, b, c, d, e, f) { - var m = this._transformMatrix; - this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]]; + this.__originalSetTransform(a, b, c, d, e, f); + }; - ctx._originalTransform(a, b, c, d, e, f); - }; + ctx.resetTransform = function ctxResetTransform() { + destCtx.resetTransform(); - ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) { - this._transformMatrix = [a, b, c, d, e, f]; + this.__originalResetTransform(); + }; - ctx._originalSetTransform(a, b, c, d, e, f); - }; + ctx.rotate = function ctxRotate(angle) { + destCtx.rotate(angle); - ctx.rotate = function ctxRotate(angle) { - var cosValue = Math.cos(angle); - var sinValue = Math.sin(angle); - var m = this._transformMatrix; - this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]]; + this.__originalRotate(angle); + }; - this._originalRotate(angle); - }; - } + ctx.clip = function ctxRotate(rule) { + destCtx.clip(rule); + + this.__originalClip(rule); + }; + + ctx.moveTo = function (x, y) { + destCtx.moveTo(x, y); + + this.__originalMoveTo(x, y); + }; + + ctx.lineTo = function (x, y) { + destCtx.lineTo(x, y); + + this.__originalLineTo(x, y); + }; + + ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) { + destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); + + this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); + }; + + ctx.rect = function (x, y, width, height) { + destCtx.rect(x, y, width, height); + + this.__originalRect(x, y, width, height); + }; + + ctx.closePath = function () { + destCtx.closePath(); + + this.__originalClosePath(); + }; + + ctx.beginPath = function () { + destCtx.beginPath(); + + this.__originalBeginPath(); + }; } -var CachedCanvases = function CachedCanvasesClosure() { - function CachedCanvases(canvasFactory) { +class CachedCanvases { + constructor(canvasFactory) { this.canvasFactory = canvasFactory; this.cache = Object.create(null); } - CachedCanvases.prototype = { - getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) { - var canvasEntry; + getCanvas(id, width, height) { + let canvasEntry; - if (this.cache[id] !== undefined) { - canvasEntry = this.cache[id]; - this.canvasFactory.reset(canvasEntry, width, height); - canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0); - } else { - canvasEntry = this.canvasFactory.create(width, height); - this.cache[id] = canvasEntry; - } - - if (trackTransform) { - addContextCurrentTransform(canvasEntry.context); - } - - return canvasEntry; - }, - clear: function clear() { - for (var id in this.cache) { - var canvasEntry = this.cache[id]; - this.canvasFactory.destroy(canvasEntry); - delete this.cache[id]; - } + if (this.cache[id] !== undefined) { + canvasEntry = this.cache[id]; + this.canvasFactory.reset(canvasEntry, width, height); + } else { + canvasEntry = this.canvasFactory.create(width, height); + this.cache[id] = canvasEntry; } - }; - return CachedCanvases; -}(); + + return canvasEntry; + } + + delete(id) { + delete this.cache[id]; + } + + clear() { + for (const id in this.cache) { + const canvasEntry = this.cache[id]; + this.canvasFactory.destroy(canvasEntry); + delete this.cache[id]; + } + } + +} + +function drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) { + const [a, b, c, d, tx, ty] = (0, _display_utils.getCurrentTransform)(ctx); + + if (b === 0 && c === 0) { + const tlX = destX * a + tx; + const rTlX = Math.round(tlX); + const tlY = destY * d + ty; + const rTlY = Math.round(tlY); + const brX = (destX + destW) * a + tx; + const rWidth = Math.abs(Math.round(brX) - rTlX) || 1; + const brY = (destY + destH) * d + ty; + const rHeight = Math.abs(Math.round(brY) - rTlY) || 1; + ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY); + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight); + ctx.setTransform(a, b, c, d, tx, ty); + return [rWidth, rHeight]; + } + + if (a === 0 && d === 0) { + const tlX = destY * c + tx; + const rTlX = Math.round(tlX); + const tlY = destX * b + ty; + const rTlY = Math.round(tlY); + const brX = (destY + destH) * c + tx; + const rWidth = Math.abs(Math.round(brX) - rTlX) || 1; + const brY = (destX + destW) * b + ty; + const rHeight = Math.abs(Math.round(brY) - rTlY) || 1; + ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY); + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth); + ctx.setTransform(a, b, c, d, tx, ty); + return [rHeight, rWidth]; + } + + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH); + const scaleX = Math.hypot(a, b); + const scaleY = Math.hypot(c, d); + return [scaleX * destW, scaleY * destH]; +} function compileType3Glyph(imgData) { - var POINT_TO_PROCESS_LIMIT = 1000; - var width = imgData.width, - height = imgData.height; - var i, - j, - j0, - width1 = width + 1; - var points = new Uint8Array(width1 * (height + 1)); - var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); - var lineSize = width + 7 & ~7, - data0 = imgData.data; - var data = new Uint8Array(lineSize * height), - pos = 0, - ii; + const { + width, + height + } = imgData; - for (i = 0, ii = data0.length; i < ii; i++) { - var mask = 128, - elem = data0[i]; + if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) { + return null; + } + + const POINT_TO_PROCESS_LIMIT = 1000; + const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); + const width1 = width + 1; + let points = new Uint8Array(width1 * (height + 1)); + let i, j, j0; + const lineSize = width + 7 & ~7; + let data = new Uint8Array(lineSize * height), + pos = 0; + + for (const elem of imgData.data) { + let mask = 128; while (mask > 0) { data[pos++] = elem & mask ? 0 : 255; @@ -14321,7 +10222,7 @@ function compileType3Glyph(imgData) { } } - var count = 0; + let count = 0; pos = 0; if (data[pos] !== 0) { @@ -14352,7 +10253,7 @@ function compileType3Glyph(imgData) { ++count; } - var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0); + let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0); for (j = 1; j < width; j++) { sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0); @@ -14401,12 +10302,12 @@ function compileType3Glyph(imgData) { return null; } - var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); - var outlines = []; + const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); + const path = new Path2D(); for (i = 0; count && i <= height; i++) { - var p = i * width1; - var end = p + width; + let p = i * width1; + const end = p + width; while (p < end && !points[p]) { p++; @@ -14416,19 +10317,18 @@ function compileType3Glyph(imgData) { continue; } - var coords = [p % width1, i]; - var type = points[p], - p0 = p, - pp; + path.moveTo(p % width1, i); + const p0 = p; + let type = points[p]; do { - var step = steps[type]; + const step = steps[type]; do { p += step; } while (!points[p]); - pp = points[p]; + const pp = points[p]; if (pp !== 5 && pp !== 10) { type = pp; @@ -14438,34 +10338,24 @@ function compileType3Glyph(imgData) { points[p] &= type >> 2 | type << 2; } - coords.push(p % width1); - coords.push(p / width1 | 0); + path.lineTo(p % width1, p / width1 | 0); if (!points[p]) { --count; } } while (p0 !== p); - outlines.push(coords); --i; } - var drawOutline = function drawOutline(c) { + data = null; + points = null; + + const drawOutline = function (c) { c.save(); c.scale(1 / width, -1 / height); c.translate(0, -height); - c.beginPath(); - - for (var i = 0, ii = outlines.length; i < ii; i++) { - var o = outlines[i]; - c.moveTo(o[0], o[1]); - - for (var j = 2, jj = o.length; j < jj; j += 2) { - c.lineTo(o[j], o[j + 1]); - } - } - - c.fill(); + c.fill(path); c.beginPath(); c.restore(); }; @@ -14473,8 +10363,8 @@ function compileType3Glyph(imgData) { return drawOutline; } -var CanvasExtraState = function CanvasExtraStateClosure() { - function CanvasExtraState() { +class CanvasExtraState { + constructor(width, height) { this.alphaIsShape = false; this.fontSize = 0; this.fontSizeScale = 1; @@ -14491,35 +10381,488 @@ var CanvasExtraState = function CanvasExtraStateClosure() { this.textHScale = 1; this.textRenderingMode = _util.TextRenderingMode.FILL; this.textRise = 0; - this.fillColor = '#000000'; - this.strokeColor = '#000000'; + this.fillColor = "#000000"; + this.strokeColor = "#000000"; this.patternFill = false; this.fillAlpha = 1; this.strokeAlpha = 1; this.lineWidth = 1; this.activeSMask = null; - this.resumeSMaskCtx = null; + this.transferMaps = null; + this.startNewPathAndClipBox([0, 0, width, height]); } - CanvasExtraState.prototype = { - clone: function CanvasExtraState_clone() { - return Object.create(this); - }, - setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) { - this.x = x; - this.y = y; + clone() { + const clone = Object.create(this); + clone.clipBox = this.clipBox.slice(); + return clone; + } + + setCurrentPoint(x, y) { + this.x = x; + this.y = y; + } + + updatePathMinMax(transform, x, y) { + [x, y] = _util.Util.applyTransform([x, y], transform); + this.minX = Math.min(this.minX, x); + this.minY = Math.min(this.minY, y); + this.maxX = Math.max(this.maxX, x); + this.maxY = Math.max(this.maxY, y); + } + + updateRectMinMax(transform, rect) { + const p1 = _util.Util.applyTransform(rect, transform); + + const p2 = _util.Util.applyTransform(rect.slice(2), transform); + + this.minX = Math.min(this.minX, p1[0], p2[0]); + this.minY = Math.min(this.minY, p1[1], p2[1]); + this.maxX = Math.max(this.maxX, p1[0], p2[0]); + this.maxY = Math.max(this.maxY, p1[1], p2[1]); + } + + updateScalingPathMinMax(transform, minMax) { + _util.Util.scaleMinMax(transform, minMax); + + this.minX = Math.min(this.minX, minMax[0]); + this.maxX = Math.max(this.maxX, minMax[1]); + this.minY = Math.min(this.minY, minMax[2]); + this.maxY = Math.max(this.maxY, minMax[3]); + } + + updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) { + const box = _util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3); + + if (minMax) { + minMax[0] = Math.min(minMax[0], box[0], box[2]); + minMax[1] = Math.max(minMax[1], box[0], box[2]); + minMax[2] = Math.min(minMax[2], box[1], box[3]); + minMax[3] = Math.max(minMax[3], box[1], box[3]); + return; } - }; - return CanvasExtraState; -}(); -var CanvasGraphics = function CanvasGraphicsClosure() { - var EXECUTION_TIME = 15; - var EXECUTION_STEPS = 10; + this.updateRectMinMax(transform, box); + } + + getPathBoundingBox() { + let pathType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _pattern_helper.PathType.FILL; + let transform = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + const box = [this.minX, this.minY, this.maxX, this.maxY]; + + if (pathType === _pattern_helper.PathType.STROKE) { + if (!transform) { + (0, _util.unreachable)("Stroke bounding box must include transform."); + } + + const scale = _util.Util.singularValueDecompose2dScale(transform); + + const xStrokePad = scale[0] * this.lineWidth / 2; + const yStrokePad = scale[1] * this.lineWidth / 2; + box[0] -= xStrokePad; + box[1] -= yStrokePad; + box[2] += xStrokePad; + box[3] += yStrokePad; + } + + return box; + } + + updateClipFromPath() { + const intersect = _util.Util.intersect(this.clipBox, this.getPathBoundingBox()); + + this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]); + } + + isEmptyClip() { + return this.minX === Infinity; + } + + startNewPathAndClipBox(box) { + this.clipBox = box; + this.minX = Infinity; + this.minY = Infinity; + this.maxX = 0; + this.maxY = 0; + } + + getClippedPathBoundingBox() { + let pathType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _pattern_helper.PathType.FILL; + let transform = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + return _util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform)); + } + +} + +function putBinaryImageData(ctx, imgData) { + let transferMaps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + + if (typeof ImageData !== "undefined" && imgData instanceof ImageData) { + ctx.putImageData(imgData, 0, 0); + return; + } + + const height = imgData.height, + width = imgData.width; + const partialChunkHeight = height % FULL_CHUNK_HEIGHT; + const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + let srcPos = 0, + destPos; + const src = imgData.data; + const dest = chunkImgData.data; + let i, j, thisChunkHeight, elemsInThisChunk; + let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray; + + if (transferMaps) { + switch (transferMaps.length) { + case 1: + transferMapRed = transferMaps[0]; + transferMapGreen = transferMaps[0]; + transferMapBlue = transferMaps[0]; + transferMapGray = transferMaps[0]; + break; + + case 4: + transferMapRed = transferMaps[0]; + transferMapGreen = transferMaps[1]; + transferMapBlue = transferMaps[2]; + transferMapGray = transferMaps[3]; + break; + } + } + + if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { + const srcLength = src.byteLength; + const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); + const dest32DataLength = dest32.length; + const fullSrcDiff = width + 7 >> 3; + let white = 0xffffffff; + let black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + + if (transferMapGray) { + if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) { + [white, black] = [black, white]; + } + } + + for (i = 0; i < totalChunks; i++) { + thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + destPos = 0; + + for (j = 0; j < thisChunkHeight; j++) { + const srcDiff = srcLength - srcPos; + let k = 0; + const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7; + const kEndUnrolled = kEnd & ~7; + let mask = 0; + let srcByte = 0; + + for (; k < kEndUnrolled; k += 8) { + srcByte = src[srcPos++]; + dest32[destPos++] = srcByte & 128 ? white : black; + dest32[destPos++] = srcByte & 64 ? white : black; + dest32[destPos++] = srcByte & 32 ? white : black; + dest32[destPos++] = srcByte & 16 ? white : black; + dest32[destPos++] = srcByte & 8 ? white : black; + dest32[destPos++] = srcByte & 4 ? white : black; + dest32[destPos++] = srcByte & 2 ? white : black; + dest32[destPos++] = srcByte & 1 ? white : black; + } + + for (; k < kEnd; k++) { + if (mask === 0) { + srcByte = src[srcPos++]; + mask = 128; + } + + dest32[destPos++] = srcByte & mask ? white : black; + mask >>= 1; + } + } + + while (destPos < dest32DataLength) { + dest32[destPos++] = 0; + } + + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } + } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) { + const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue); + j = 0; + elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; + + for (i = 0; i < fullChunks; i++) { + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + srcPos += elemsInThisChunk; + + if (hasTransferMaps) { + for (let k = 0; k < elemsInThisChunk; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, j); + j += FULL_CHUNK_HEIGHT; + } + + if (i < totalChunks) { + elemsInThisChunk = width * partialChunkHeight * 4; + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + + if (hasTransferMaps) { + for (let k = 0; k < elemsInThisChunk; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, j); + } + } else if (imgData.kind === _util.ImageKind.RGB_24BPP) { + const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue); + thisChunkHeight = FULL_CHUNK_HEIGHT; + elemsInThisChunk = width * thisChunkHeight; + + for (i = 0; i < totalChunks; i++) { + if (i >= fullChunks) { + thisChunkHeight = partialChunkHeight; + elemsInThisChunk = width * thisChunkHeight; + } + + destPos = 0; + + for (j = elemsInThisChunk; j--;) { + dest[destPos++] = src[srcPos++]; + dest[destPos++] = src[srcPos++]; + dest[destPos++] = src[srcPos++]; + dest[destPos++] = 255; + } + + if (hasTransferMaps) { + for (let k = 0; k < destPos; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } + } else { + throw new Error(`bad image kind: ${imgData.kind}`); + } +} + +function putBinaryImageMask(ctx, imgData) { + if (imgData.bitmap) { + ctx.drawImage(imgData.bitmap, 0, 0); + return; + } + + const height = imgData.height, + width = imgData.width; + const partialChunkHeight = height % FULL_CHUNK_HEIGHT; + const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + let srcPos = 0; + const src = imgData.data; + const dest = chunkImgData.data; + + for (let i = 0; i < totalChunks; i++) { + const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + ({ + srcPos + } = (0, _image_utils.applyMaskImageData)({ + src, + srcPos, + dest, + width, + height: thisChunkHeight + })); + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } +} + +function copyCtxState(sourceCtx, destCtx) { + const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"]; + + for (let i = 0, ii = properties.length; i < ii; i++) { + const property = properties[i]; + + if (sourceCtx[property] !== undefined) { + destCtx[property] = sourceCtx[property]; + } + } + + if (sourceCtx.setLineDash !== undefined) { + destCtx.setLineDash(sourceCtx.getLineDash()); + destCtx.lineDashOffset = sourceCtx.lineDashOffset; + } +} + +function resetCtxToDefault(ctx, foregroundColor) { + ctx.strokeStyle = ctx.fillStyle = foregroundColor || "#000000"; + ctx.fillRule = "nonzero"; + ctx.globalAlpha = 1; + ctx.lineWidth = 1; + ctx.lineCap = "butt"; + ctx.lineJoin = "miter"; + ctx.miterLimit = 10; + ctx.globalCompositeOperation = "source-over"; + ctx.font = "10px sans-serif"; + + if (ctx.setLineDash !== undefined) { + ctx.setLineDash([]); + ctx.lineDashOffset = 0; + } +} + +function composeSMaskBackdrop(bytes, r0, g0, b0) { + const length = bytes.length; + + for (let i = 3; i < length; i += 4) { + const alpha = bytes[i]; + + if (alpha === 0) { + bytes[i - 3] = r0; + bytes[i - 2] = g0; + bytes[i - 1] = b0; + } else if (alpha < 255) { + const alpha_ = 255 - alpha; + bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8; + bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8; + bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8; + } + } +} + +function composeSMaskAlpha(maskData, layerData, transferMap) { + const length = maskData.length; + const scale = 1 / 255; + + for (let i = 3; i < length; i += 4) { + const alpha = transferMap ? transferMap[maskData[i]] : maskData[i]; + layerData[i] = layerData[i] * alpha * scale | 0; + } +} + +function composeSMaskLuminosity(maskData, layerData, transferMap) { + const length = maskData.length; + + for (let i = 3; i < length; i += 4) { + const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28; + layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16; + } +} + +function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) { + const hasBackdrop = !!backdrop; + const r0 = hasBackdrop ? backdrop[0] : 0; + const g0 = hasBackdrop ? backdrop[1] : 0; + const b0 = hasBackdrop ? backdrop[2] : 0; + let composeFn; + + if (subtype === "Luminosity") { + composeFn = composeSMaskLuminosity; + } else { + composeFn = composeSMaskAlpha; + } + + const PIXELS_TO_PROCESS = 1048576; + const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width)); + + for (let row = 0; row < height; row += chunkSize) { + const chunkHeight = Math.min(chunkSize, height - row); + const maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight); + const layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight); + + if (hasBackdrop) { + composeSMaskBackdrop(maskData.data, r0, g0, b0); + } + + composeFn(maskData.data, layerData.data, transferMap); + layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY); + } +} + +function composeSMask(ctx, smask, layerCtx, layerBox) { + const layerOffsetX = layerBox[0]; + const layerOffsetY = layerBox[1]; + const layerWidth = layerBox[2] - layerOffsetX; + const layerHeight = layerBox[3] - layerOffsetY; + + if (layerWidth === 0 || layerHeight === 0) { + return; + } + + genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY); + ctx.save(); + ctx.globalAlpha = 1; + ctx.globalCompositeOperation = "source-over"; + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.drawImage(layerCtx.canvas, 0, 0); + ctx.restore(); +} + +function getImageSmoothingEnabled(transform, interpolate) { + const scale = _util.Util.singularValueDecompose2dScale(transform); + + scale[0] = Math.fround(scale[0]); + scale[1] = Math.fround(scale[1]); + const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS); + + if (interpolate !== undefined) { + return interpolate; + } else if (scale[0] <= actualScale || scale[1] <= actualScale) { + return true; + } + + return false; +} + +const LINE_CAP_STYLES = ["butt", "round", "square"]; +const LINE_JOIN_STYLES = ["miter", "round", "bevel"]; +const NORMAL_CLIP = {}; +const EO_CLIP = {}; + +var _restoreInitialState = /*#__PURE__*/new WeakSet(); + +class CanvasGraphics { + constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig, annotationCanvasMap, pageColors) { + _classPrivateMethodInitSpec(this, _restoreInitialState); - function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, webGLContext, imageLayer) { this.ctx = canvasCtx; - this.current = new CanvasExtraState(); + this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height); this.stateStack = []; this.pendingClip = null; this.pendingEOFill = false; @@ -14528,7 +10871,6 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.commonObjs = commonObjs; this.objs = objs; this.canvasFactory = canvasFactory; - this.webGLContext = webGLContext; this.imageLayer = imageLayer; this.groupStack = []; this.processingType3 = null; @@ -14538,1989 +10880,2316 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.smaskStack = []; this.smaskCounter = 0; this.tempSMask = null; + this.suspendedCtx = null; + this.contentVisible = true; + this.markedContentStack = []; + this.optionalContentConfig = optionalContentConfig; this.cachedCanvases = new CachedCanvases(this.canvasFactory); - - if (canvasCtx) { - addContextCurrentTransform(canvasCtx); - } - + this.cachedPatterns = new Map(); + this.annotationCanvasMap = annotationCanvasMap; + this.viewportScale = 1; + this.outputScaleX = 1; + this.outputScaleY = 1; + this.backgroundColor = (pageColors === null || pageColors === void 0 ? void 0 : pageColors.background) || null; + this.foregroundColor = (pageColors === null || pageColors === void 0 ? void 0 : pageColors.foreground) || null; + this._cachedScaleForStroking = null; this._cachedGetSinglePixelWidth = null; + this._cachedBitmapsMap = new Map(); } - function putBinaryImageData(ctx, imgData) { - if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) { - ctx.putImageData(imgData, 0, 0); - return; + getObject(data) { + let fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + + if (typeof data === "string") { + return data.startsWith("g_") ? this.commonObjs.get(data) : this.objs.get(data); } - var height = imgData.height, - width = imgData.width; - var partialChunkHeight = height % FULL_CHUNK_HEIGHT; - var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; - var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; - var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); - var srcPos = 0, - destPos; - var src = imgData.data; - var dest = chunkImgData.data; - var i, j, thisChunkHeight, elemsInThisChunk; - - if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { - var srcLength = src.byteLength; - var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); - var dest32DataLength = dest32.length; - var fullSrcDiff = width + 7 >> 3; - var white = 0xFFFFFFFF; - var black = IsLittleEndianCached.value ? 0xFF000000 : 0x000000FF; - - for (i = 0; i < totalChunks; i++) { - thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; - destPos = 0; - - for (j = 0; j < thisChunkHeight; j++) { - var srcDiff = srcLength - srcPos; - var k = 0; - var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7; - var kEndUnrolled = kEnd & ~7; - var mask = 0; - var srcByte = 0; - - for (; k < kEndUnrolled; k += 8) { - srcByte = src[srcPos++]; - dest32[destPos++] = srcByte & 128 ? white : black; - dest32[destPos++] = srcByte & 64 ? white : black; - dest32[destPos++] = srcByte & 32 ? white : black; - dest32[destPos++] = srcByte & 16 ? white : black; - dest32[destPos++] = srcByte & 8 ? white : black; - dest32[destPos++] = srcByte & 4 ? white : black; - dest32[destPos++] = srcByte & 2 ? white : black; - dest32[destPos++] = srcByte & 1 ? white : black; - } - - for (; k < kEnd; k++) { - if (mask === 0) { - srcByte = src[srcPos++]; - mask = 128; - } - - dest32[destPos++] = srcByte & mask ? white : black; - mask >>= 1; - } - } - - while (destPos < dest32DataLength) { - dest32[destPos++] = 0; - } - - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) { - j = 0; - elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; - - for (i = 0; i < fullChunks; i++) { - dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); - srcPos += elemsInThisChunk; - ctx.putImageData(chunkImgData, 0, j); - j += FULL_CHUNK_HEIGHT; - } - - if (i < totalChunks) { - elemsInThisChunk = width * partialChunkHeight * 4; - dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); - ctx.putImageData(chunkImgData, 0, j); - } - } else if (imgData.kind === _util.ImageKind.RGB_24BPP) { - thisChunkHeight = FULL_CHUNK_HEIGHT; - elemsInThisChunk = width * thisChunkHeight; - - for (i = 0; i < totalChunks; i++) { - if (i >= fullChunks) { - thisChunkHeight = partialChunkHeight; - elemsInThisChunk = width * thisChunkHeight; - } - - destPos = 0; - - for (j = elemsInThisChunk; j--;) { - dest[destPos++] = src[srcPos++]; - dest[destPos++] = src[srcPos++]; - dest[destPos++] = src[srcPos++]; - dest[destPos++] = 255; - } - - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } else { - throw new Error("bad image kind: ".concat(imgData.kind)); - } + return fallback; } - function putBinaryImageMask(ctx, imgData) { - var height = imgData.height, - width = imgData.width; - var partialChunkHeight = height % FULL_CHUNK_HEIGHT; - var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; - var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; - var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); - var srcPos = 0; - var src = imgData.data; - var dest = chunkImgData.data; + beginDrawing(_ref) { + let { + transform, + viewport, + transparency = false, + background = null + } = _ref; + const width = this.ctx.canvas.width; + const height = this.ctx.canvas.height; + const defaultBackgroundColor = background || "#ffffff"; + this.ctx.save(); - for (var i = 0; i < totalChunks; i++) { - var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; - var destPos = 3; + if (this.foregroundColor && this.backgroundColor) { + this.ctx.fillStyle = this.foregroundColor; + const fg = this.foregroundColor = this.ctx.fillStyle; + this.ctx.fillStyle = this.backgroundColor; + const bg = this.backgroundColor = this.ctx.fillStyle; + let isValidDefaultBg = true; + let defaultBg = defaultBackgroundColor; + this.ctx.fillStyle = defaultBackgroundColor; + defaultBg = this.ctx.fillStyle; + isValidDefaultBg = typeof defaultBg === "string" && /^#[0-9A-Fa-f]{6}$/.test(defaultBg); - for (var j = 0; j < thisChunkHeight; j++) { - var mask = 0; + if (fg === "#000000" && bg === "#ffffff" || fg === bg || !isValidDefaultBg) { + this.foregroundColor = this.backgroundColor = null; + } else { + const [rB, gB, bB] = (0, _display_utils.getRGB)(defaultBg); - for (var k = 0; k < width; k++) { - if (!mask) { - var elem = src[srcPos++]; - mask = 128; - } + const newComp = x => { + x /= 255; + return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4; + }; - dest[destPos] = elem & mask ? 0 : 255; - destPos += 4; - mask >>= 1; - } - } + const lumB = Math.round(0.2126 * newComp(rB) + 0.7152 * newComp(gB) + 0.0722 * newComp(bB)); - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } - - function copyCtxState(sourceCtx, destCtx) { - var properties = ['strokeStyle', 'fillStyle', 'fillRule', 'globalAlpha', 'lineWidth', 'lineCap', 'lineJoin', 'miterLimit', 'globalCompositeOperation', 'font']; - - for (var i = 0, ii = properties.length; i < ii; i++) { - var property = properties[i]; - - if (sourceCtx[property] !== undefined) { - destCtx[property] = sourceCtx[property]; + this.selectColor = (r, g, b) => { + const lumC = 0.2126 * newComp(r) + 0.7152 * newComp(g) + 0.0722 * newComp(b); + return Math.round(lumC) === lumB ? bg : fg; + }; } } - if (sourceCtx.setLineDash !== undefined) { - destCtx.setLineDash(sourceCtx.getLineDash()); - destCtx.lineDashOffset = sourceCtx.lineDashOffset; - } - } + this.ctx.fillStyle = this.backgroundColor || defaultBackgroundColor; + this.ctx.fillRect(0, 0, width, height); + this.ctx.restore(); - function resetCtxToDefault(ctx) { - ctx.strokeStyle = '#000000'; - ctx.fillStyle = '#000000'; - ctx.fillRule = 'nonzero'; - ctx.globalAlpha = 1; - ctx.lineWidth = 1; - ctx.lineCap = 'butt'; - ctx.lineJoin = 'miter'; - ctx.miterLimit = 10; - ctx.globalCompositeOperation = 'source-over'; - ctx.font = '10px sans-serif'; - - if (ctx.setLineDash !== undefined) { - ctx.setLineDash([]); - ctx.lineDashOffset = 0; - } - } - - function composeSMaskBackdrop(bytes, r0, g0, b0) { - var length = bytes.length; - - for (var i = 3; i < length; i += 4) { - var alpha = bytes[i]; - - if (alpha === 0) { - bytes[i - 3] = r0; - bytes[i - 2] = g0; - bytes[i - 1] = b0; - } else if (alpha < 255) { - var alpha_ = 255 - alpha; - bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8; - bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8; - bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8; - } - } - } - - function composeSMaskAlpha(maskData, layerData, transferMap) { - var length = maskData.length; - var scale = 1 / 255; - - for (var i = 3; i < length; i += 4) { - var alpha = transferMap ? transferMap[maskData[i]] : maskData[i]; - layerData[i] = layerData[i] * alpha * scale | 0; - } - } - - function composeSMaskLuminosity(maskData, layerData, transferMap) { - var length = maskData.length; - - for (var i = 3; i < length; i += 4) { - var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28; - layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16; - } - } - - function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) { - var hasBackdrop = !!backdrop; - var r0 = hasBackdrop ? backdrop[0] : 0; - var g0 = hasBackdrop ? backdrop[1] : 0; - var b0 = hasBackdrop ? backdrop[2] : 0; - var composeFn; - - if (subtype === 'Luminosity') { - composeFn = composeSMaskLuminosity; - } else { - composeFn = composeSMaskAlpha; - } - - var PIXELS_TO_PROCESS = 1048576; - var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width)); - - for (var row = 0; row < height; row += chunkSize) { - var chunkHeight = Math.min(chunkSize, height - row); - var maskData = maskCtx.getImageData(0, row, width, chunkHeight); - var layerData = layerCtx.getImageData(0, row, width, chunkHeight); - - if (hasBackdrop) { - composeSMaskBackdrop(maskData.data, r0, g0, b0); - } - - composeFn(maskData.data, layerData.data, transferMap); - maskCtx.putImageData(layerData, 0, row); - } - } - - function composeSMask(ctx, smask, layerCtx, webGLContext) { - var mask = smask.canvas; - var maskCtx = smask.context; - ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY); - var backdrop = smask.backdrop || null; - - if (!smask.transferMap && webGLContext.isEnabled) { - var composed = webGLContext.composeSMask({ - layer: layerCtx.canvas, - mask: mask, - properties: { - subtype: smask.subtype, - backdrop: backdrop - } - }); - ctx.setTransform(1, 0, 0, 1, 0, 0); - ctx.drawImage(composed, smask.offsetX, smask.offsetY); - return; - } - - genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, backdrop, smask.transferMap); - ctx.drawImage(mask, 0, 0); - } - - var LINE_CAP_STYLES = ['butt', 'round', 'square']; - var LINE_JOIN_STYLES = ['miter', 'round', 'bevel']; - var NORMAL_CLIP = {}; - var EO_CLIP = {}; - CanvasGraphics.prototype = { - beginDrawing: function beginDrawing(_ref) { - var transform = _ref.transform, - viewport = _ref.viewport, - _ref$transparency = _ref.transparency, - transparency = _ref$transparency === void 0 ? false : _ref$transparency, - _ref$background = _ref.background, - background = _ref$background === void 0 ? null : _ref$background; - var width = this.ctx.canvas.width; - var height = this.ctx.canvas.height; + if (transparency) { + const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height); + this.compositeCtx = this.ctx; + this.transparentCanvas = transparentCanvas.canvas; + this.ctx = transparentCanvas.context; this.ctx.save(); - this.ctx.fillStyle = background || 'rgb(255, 255, 255)'; - this.ctx.fillRect(0, 0, width, height); - this.ctx.restore(); + this.ctx.transform(...(0, _display_utils.getCurrentTransform)(this.compositeCtx)); + } - if (transparency) { - var transparentCanvas = this.cachedCanvases.getCanvas('transparent', width, height, true); - this.compositeCtx = this.ctx; - this.transparentCanvas = transparentCanvas.canvas; - this.ctx = transparentCanvas.context; - this.ctx.save(); - this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform); - } + this.ctx.save(); + resetCtxToDefault(this.ctx, this.foregroundColor); - this.ctx.save(); - resetCtxToDefault(this.ctx); + if (transform) { + this.ctx.transform(...transform); + this.outputScaleX = transform[0]; + this.outputScaleY = transform[0]; + } - if (transform) { - this.ctx.transform.apply(this.ctx, transform); - } + this.ctx.transform(...viewport.transform); + this.viewportScale = viewport.scale; + this.baseTransform = (0, _display_utils.getCurrentTransform)(this.ctx); - this.ctx.transform.apply(this.ctx, viewport.transform); - this.baseTransform = this.ctx.mozCurrentTransform.slice(); + if (this.imageLayer) { + (0, _display_utils.deprecated)("The `imageLayer` functionality will be removed in the future."); + this.imageLayer.beginLayout(); + } + } - if (this.imageLayer) { - this.imageLayer.beginLayout(); - } - }, - executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) { - var argsArray = operatorList.argsArray; - var fnArray = operatorList.fnArray; - var i = executionStartIdx || 0; - var argsArrayLen = argsArray.length; + executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) { + const argsArray = operatorList.argsArray; + const fnArray = operatorList.fnArray; + let i = executionStartIdx || 0; + const argsArrayLen = argsArray.length; - if (argsArrayLen === i) { + if (argsArrayLen === i) { + return i; + } + + const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function"; + const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0; + let steps = 0; + const commonObjs = this.commonObjs; + const objs = this.objs; + let fnId; + + while (true) { + if (stepper !== undefined && i === stepper.nextBreakPoint) { + stepper.breakIt(i, continueCallback); return i; } - var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === 'function'; - var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0; - var steps = 0; - var commonObjs = this.commonObjs; - var objs = this.objs; - var fnId; + fnId = fnArray[i]; - while (true) { - if (stepper !== undefined && i === stepper.nextBreakPoint) { - stepper.breakIt(i, continueCallback); - return i; - } + if (fnId !== _util.OPS.dependency) { + this[fnId].apply(this, argsArray[i]); + } else { + for (const depObjId of argsArray[i]) { + const objsPool = depObjId.startsWith("g_") ? commonObjs : objs; - fnId = fnArray[i]; - - if (fnId !== _util.OPS.dependency) { - this[fnId].apply(this, argsArray[i]); - } else { - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = argsArray[i][Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var depObjId = _step.value; - var objsPool = depObjId.startsWith('g_') ? commonObjs : objs; - - if (!objsPool.has(depObjId)) { - objsPool.get(depObjId, continueCallback); - return i; - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator["return"] != null) { - _iterator["return"](); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - } - - i++; - - if (i === argsArrayLen) { - return i; - } - - if (chunkOperations && ++steps > EXECUTION_STEPS) { - if (Date.now() > endTime) { - continueCallback(); + if (!objsPool.has(depObjId)) { + objsPool.get(depObjId, continueCallback); return i; } - - steps = 0; } } - }, - endDrawing: function CanvasGraphics_endDrawing() { - if (this.current.activeSMask !== null) { - this.endSMaskGroup(); + + i++; + + if (i === argsArrayLen) { + return i; } - this.ctx.restore(); + if (chunkOperations && ++steps > EXECUTION_STEPS) { + if (Date.now() > endTime) { + continueCallback(); + return i; + } - if (this.transparentCanvas) { - this.ctx = this.compositeCtx; - this.ctx.save(); - this.ctx.setTransform(1, 0, 0, 1, 0, 0); - this.ctx.drawImage(this.transparentCanvas, 0, 0); - this.ctx.restore(); - this.transparentCanvas = null; + steps = 0; } + } + } - this.cachedCanvases.clear(); - this.webGLContext.clear(); + endDrawing() { + _classPrivateMethodGet(this, _restoreInitialState, _restoreInitialState2).call(this); - if (this.imageLayer) { - this.imageLayer.endLayout(); - } - }, - setLineWidth: function CanvasGraphics_setLineWidth(width) { - this.current.lineWidth = width; - this.ctx.lineWidth = width; - }, - setLineCap: function CanvasGraphics_setLineCap(style) { - this.ctx.lineCap = LINE_CAP_STYLES[style]; - }, - setLineJoin: function CanvasGraphics_setLineJoin(style) { - this.ctx.lineJoin = LINE_JOIN_STYLES[style]; - }, - setMiterLimit: function CanvasGraphics_setMiterLimit(limit) { - this.ctx.miterLimit = limit; - }, - setDash: function CanvasGraphics_setDash(dashArray, dashPhase) { - var ctx = this.ctx; + this.cachedCanvases.clear(); + this.cachedPatterns.clear(); - if (ctx.setLineDash !== undefined) { - ctx.setLineDash(dashArray); - ctx.lineDashOffset = dashPhase; - } - }, - setRenderingIntent: function setRenderingIntent(intent) {}, - setFlatness: function setFlatness(flatness) {}, - setGState: function CanvasGraphics_setGState(states) { - for (var i = 0, ii = states.length; i < ii; i++) { - var state = states[i]; - var key = state[0]; - var value = state[1]; - - switch (key) { - case 'LW': - this.setLineWidth(value); - break; - - case 'LC': - this.setLineCap(value); - break; - - case 'LJ': - this.setLineJoin(value); - break; - - case 'ML': - this.setMiterLimit(value); - break; - - case 'D': - this.setDash(value[0], value[1]); - break; - - case 'RI': - this.setRenderingIntent(value); - break; - - case 'FL': - this.setFlatness(value); - break; - - case 'Font': - this.setFont(value[0], value[1]); - break; - - case 'CA': - this.current.strokeAlpha = state[1]; - break; - - case 'ca': - this.current.fillAlpha = state[1]; - this.ctx.globalAlpha = state[1]; - break; - - case 'BM': - this.ctx.globalCompositeOperation = value; - break; - - case 'SMask': - if (this.current.activeSMask) { - if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask) { - this.suspendSMaskGroup(); - } else { - this.endSMaskGroup(); - } - } - - this.current.activeSMask = value ? this.tempSMask : null; - - if (this.current.activeSMask) { - this.beginSMaskGroup(); - } - - this.tempSMask = null; - break; + for (const cache of this._cachedBitmapsMap.values()) { + for (const canvas of cache.values()) { + if (typeof HTMLCanvasElement !== "undefined" && canvas instanceof HTMLCanvasElement) { + canvas.width = canvas.height = 0; } } - }, - beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() { - var activeSMask = this.current.activeSMask; - var drawnWidth = activeSMask.canvas.width; - var drawnHeight = activeSMask.canvas.height; - var cacheId = 'smaskGroupAt' + this.groupLevel; - var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); - var currentCtx = this.ctx; - var currentTransform = currentCtx.mozCurrentTransform; - this.ctx.save(); - var groupCtx = scratchCanvas.context; - groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY); - groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY); - groupCtx.transform.apply(groupCtx, currentTransform); - activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse; - copyCtxState(currentCtx, groupCtx); - this.ctx = groupCtx; - this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]); - this.groupStack.push(currentCtx); - this.groupLevel++; - }, - suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() { - var groupCtx = this.ctx; - this.groupLevel--; - this.ctx = this.groupStack.pop(); - composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext); - this.ctx.restore(); - this.ctx.save(); - copyCtxState(groupCtx, this.ctx); - this.current.resumeSMaskCtx = groupCtx; - var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); + cache.clear(); + } - this.ctx.transform.apply(this.ctx, deltaTransform); - groupCtx.save(); - groupCtx.setTransform(1, 0, 0, 1, 0, 0); - groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height); - groupCtx.restore(); - }, - resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() { - var groupCtx = this.current.resumeSMaskCtx; - var currentCtx = this.ctx; - this.ctx = groupCtx; - this.groupStack.push(currentCtx); - this.groupLevel++; - }, - endSMaskGroup: function CanvasGraphics_endSMaskGroup() { - var groupCtx = this.ctx; - this.groupLevel--; - this.ctx = this.groupStack.pop(); - composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext); - this.ctx.restore(); - copyCtxState(groupCtx, this.ctx); + this._cachedBitmapsMap.clear(); - var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); + if (this.imageLayer) { + this.imageLayer.endLayout(); + } + } - this.ctx.transform.apply(this.ctx, deltaTransform); - }, - save: function CanvasGraphics_save() { - this.ctx.save(); - var old = this.current; - this.stateStack.push(old); - this.current = old.clone(); - this.current.resumeSMaskCtx = null; - }, - restore: function CanvasGraphics_restore() { - if (this.current.resumeSMaskCtx) { - this.resumeSMaskGroup(); + _scaleImage(img, inverseTransform) { + const width = img.width; + const height = img.height; + let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1); + let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1); + let paintWidth = width, + paintHeight = height; + let tmpCanvasId = "prescale1"; + let tmpCanvas, tmpCtx; + + while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) { + let newWidth = paintWidth, + newHeight = paintHeight; + + if (widthScale > 2 && paintWidth > 1) { + newWidth = Math.ceil(paintWidth / 2); + widthScale /= paintWidth / newWidth; } - if (this.current.activeSMask !== null && (this.stateStack.length === 0 || this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) { - this.endSMaskGroup(); + if (heightScale > 2 && paintHeight > 1) { + newHeight = Math.ceil(paintHeight / 2); + heightScale /= paintHeight / newHeight; } - if (this.stateStack.length !== 0) { - this.current = this.stateStack.pop(); + tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight); + tmpCtx = tmpCanvas.context; + tmpCtx.clearRect(0, 0, newWidth, newHeight); + tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight); + img = tmpCanvas.canvas; + paintWidth = newWidth; + paintHeight = newHeight; + tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1"; + } + + return { + img, + paintWidth, + paintHeight + }; + } + + _createMaskCanvas(img) { + const ctx = this.ctx; + const { + width, + height + } = img; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + const currentTransform = (0, _display_utils.getCurrentTransform)(ctx); + let cache, cacheKey, scaled, maskCanvas; + + if ((img.bitmap || img.data) && img.count > 1) { + const mainKey = img.bitmap || img.data.buffer; + const withoutTranslation = currentTransform.slice(0, 4); + cacheKey = JSON.stringify(isPatternFill ? withoutTranslation : [withoutTranslation, fillColor]); + cache = this._cachedBitmapsMap.get(mainKey); + + if (!cache) { + cache = new Map(); + + this._cachedBitmapsMap.set(mainKey, cache); + } + + const cachedImage = cache.get(cacheKey); + + if (cachedImage && !isPatternFill) { + const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]); + const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]); + return { + canvas: cachedImage, + offsetX, + offsetY + }; + } + + scaled = cachedImage; + } + + if (!scaled) { + maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); + putBinaryImageMask(maskCanvas.context, img); + } + + let maskToCanvas = _util.Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]); + + maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]); + + const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas); + + const cord2 = _util.Util.applyTransform([width, height], maskToCanvas); + + const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]); + + const drawnWidth = Math.round(rect[2] - rect[0]) || 1; + const drawnHeight = Math.round(rect[3] - rect[1]) || 1; + const fillCanvas = this.cachedCanvases.getCanvas("fillCanvas", drawnWidth, drawnHeight); + const fillCtx = fillCanvas.context; + const offsetX = Math.min(cord1[0], cord2[0]); + const offsetY = Math.min(cord1[1], cord2[1]); + fillCtx.translate(-offsetX, -offsetY); + fillCtx.transform(...maskToCanvas); + + if (!scaled) { + scaled = this._scaleImage(maskCanvas.canvas, (0, _display_utils.getCurrentTransformInverse)(fillCtx)); + scaled = scaled.img; + + if (cache && isPatternFill) { + cache.set(cacheKey, scaled); + } + } + + fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled((0, _display_utils.getCurrentTransform)(fillCtx), img.interpolate); + drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height); + fillCtx.globalCompositeOperation = "source-in"; + + const inverse = _util.Util.transform((0, _display_utils.getCurrentTransformInverse)(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]); + + fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, _pattern_helper.PathType.FILL) : fillColor; + fillCtx.fillRect(0, 0, width, height); + + if (cache && !isPatternFill) { + this.cachedCanvases.delete("fillCanvas"); + cache.set(cacheKey, fillCanvas.canvas); + } + + return { + canvas: fillCanvas.canvas, + offsetX: Math.round(offsetX), + offsetY: Math.round(offsetY) + }; + } + + setLineWidth(width) { + if (width !== this.current.lineWidth) { + this._cachedScaleForStroking = null; + } + + this.current.lineWidth = width; + this.ctx.lineWidth = width; + } + + setLineCap(style) { + this.ctx.lineCap = LINE_CAP_STYLES[style]; + } + + setLineJoin(style) { + this.ctx.lineJoin = LINE_JOIN_STYLES[style]; + } + + setMiterLimit(limit) { + this.ctx.miterLimit = limit; + } + + setDash(dashArray, dashPhase) { + const ctx = this.ctx; + + if (ctx.setLineDash !== undefined) { + ctx.setLineDash(dashArray); + ctx.lineDashOffset = dashPhase; + } + } + + setRenderingIntent(intent) {} + + setFlatness(flatness) {} + + setGState(states) { + for (let i = 0, ii = states.length; i < ii; i++) { + const state = states[i]; + const key = state[0]; + const value = state[1]; + + switch (key) { + case "LW": + this.setLineWidth(value); + break; + + case "LC": + this.setLineCap(value); + break; + + case "LJ": + this.setLineJoin(value); + break; + + case "ML": + this.setMiterLimit(value); + break; + + case "D": + this.setDash(value[0], value[1]); + break; + + case "RI": + this.setRenderingIntent(value); + break; + + case "FL": + this.setFlatness(value); + break; + + case "Font": + this.setFont(value[0], value[1]); + break; + + case "CA": + this.current.strokeAlpha = state[1]; + break; + + case "ca": + this.current.fillAlpha = state[1]; + this.ctx.globalAlpha = state[1]; + break; + + case "BM": + this.ctx.globalCompositeOperation = value; + break; + + case "SMask": + this.current.activeSMask = value ? this.tempSMask : null; + this.tempSMask = null; + this.checkSMaskState(); + break; + + case "TR": + this.current.transferMaps = value; + } + } + } + + get inSMaskMode() { + return !!this.suspendedCtx; + } + + checkSMaskState() { + const inSMaskMode = this.inSMaskMode; + + if (this.current.activeSMask && !inSMaskMode) { + this.beginSMaskMode(); + } else if (!this.current.activeSMask && inSMaskMode) { + this.endSMaskMode(); + } + } + + beginSMaskMode() { + if (this.inSMaskMode) { + throw new Error("beginSMaskMode called while already in smask mode"); + } + + const drawnWidth = this.ctx.canvas.width; + const drawnHeight = this.ctx.canvas.height; + const cacheId = "smaskGroupAt" + this.groupLevel; + const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight); + this.suspendedCtx = this.ctx; + this.ctx = scratchCanvas.context; + const ctx = this.ctx; + ctx.setTransform(...(0, _display_utils.getCurrentTransform)(this.suspendedCtx)); + copyCtxState(this.suspendedCtx, ctx); + mirrorContextOperations(ctx, this.suspendedCtx); + this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); + } + + endSMaskMode() { + if (!this.inSMaskMode) { + throw new Error("endSMaskMode called while not in smask mode"); + } + + this.ctx._removeMirroring(); + + copyCtxState(this.ctx, this.suspendedCtx); + this.ctx = this.suspendedCtx; + this.suspendedCtx = null; + } + + compose(dirtyBox) { + if (!this.current.activeSMask) { + return; + } + + if (!dirtyBox) { + dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height]; + } else { + dirtyBox[0] = Math.floor(dirtyBox[0]); + dirtyBox[1] = Math.floor(dirtyBox[1]); + dirtyBox[2] = Math.ceil(dirtyBox[2]); + dirtyBox[3] = Math.ceil(dirtyBox[3]); + } + + const smask = this.current.activeSMask; + const suspendedCtx = this.suspendedCtx; + composeSMask(suspendedCtx, smask, this.ctx, dirtyBox); + this.ctx.save(); + this.ctx.setTransform(1, 0, 0, 1, 0, 0); + this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height); + this.ctx.restore(); + } + + save() { + if (this.inSMaskMode) { + copyCtxState(this.ctx, this.suspendedCtx); + this.suspendedCtx.save(); + } else { + this.ctx.save(); + } + + const old = this.current; + this.stateStack.push(old); + this.current = old.clone(); + } + + restore() { + if (this.stateStack.length === 0 && this.inSMaskMode) { + this.endSMaskMode(); + } + + if (this.stateStack.length !== 0) { + this.current = this.stateStack.pop(); + + if (this.inSMaskMode) { + this.suspendedCtx.restore(); + copyCtxState(this.suspendedCtx, this.ctx); + } else { this.ctx.restore(); - this.pendingClip = null; - this._cachedGetSinglePixelWidth = null; } - }, - transform: function CanvasGraphics_transform(a, b, c, d, e, f) { - this.ctx.transform(a, b, c, d, e, f); + + this.checkSMaskState(); + this.pendingClip = null; + this._cachedScaleForStroking = null; this._cachedGetSinglePixelWidth = null; - }, - constructPath: function CanvasGraphics_constructPath(ops, args) { - var ctx = this.ctx; - var current = this.current; - var x = current.x, - y = current.y; + } + } - for (var i = 0, j = 0, ii = ops.length; i < ii; i++) { - switch (ops[i] | 0) { - case _util.OPS.rectangle: - x = args[j++]; - y = args[j++]; - var width = args[j++]; - var height = args[j++]; + transform(a, b, c, d, e, f) { + this.ctx.transform(a, b, c, d, e, f); + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + } - if (width === 0) { - width = this.getSinglePixelWidth(); - } + constructPath(ops, args, minMax) { + const ctx = this.ctx; + const current = this.current; + let x = current.x, + y = current.y; + let startX, startY; + const currentTransform = (0, _display_utils.getCurrentTransform)(ctx); + const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0; + const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null; - if (height === 0) { - height = this.getSinglePixelWidth(); - } + for (let i = 0, j = 0, ii = ops.length; i < ii; i++) { + switch (ops[i] | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + const width = args[j++]; + const height = args[j++]; + const xw = x + width; + const yh = y + height; + ctx.moveTo(x, y); - var xw = x + width; - var yh = y + height; - this.ctx.moveTo(x, y); - this.ctx.lineTo(xw, y); - this.ctx.lineTo(xw, yh); - this.ctx.lineTo(x, yh); - this.ctx.lineTo(x, y); - this.ctx.closePath(); - break; + if (width === 0 || height === 0) { + ctx.lineTo(xw, yh); + } else { + ctx.lineTo(xw, y); + ctx.lineTo(xw, yh); + ctx.lineTo(x, yh); + } - case _util.OPS.moveTo: - x = args[j++]; - y = args[j++]; - ctx.moveTo(x, y); - break; + if (!isScalingMatrix) { + current.updateRectMinMax(currentTransform, [x, y, xw, yh]); + } - case _util.OPS.lineTo: - x = args[j++]; - y = args[j++]; - ctx.lineTo(x, y); - break; + ctx.closePath(); + break; - case _util.OPS.curveTo: - x = args[j + 4]; - y = args[j + 5]; - ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y); - j += 6; - break; + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + ctx.moveTo(x, y); - case _util.OPS.curveTo2: - ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]); - x = args[j + 2]; - y = args[j + 3]; - j += 4; - break; + if (!isScalingMatrix) { + current.updatePathMinMax(currentTransform, x, y); + } - case _util.OPS.curveTo3: - x = args[j + 2]; - y = args[j + 3]; - ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); - j += 4; - break; + break; - case _util.OPS.closePath: - ctx.closePath(); - break; - } + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + ctx.lineTo(x, y); + + if (!isScalingMatrix) { + current.updatePathMinMax(currentTransform, x, y); + } + + break; + + case _util.OPS.curveTo: + startX = x; + startY = y; + x = args[j + 4]; + y = args[j + 5]; + ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y); + current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier); + j += 6; + break; + + case _util.OPS.curveTo2: + startX = x; + startY = y; + ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]); + current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier); + x = args[j + 2]; + y = args[j + 3]; + j += 4; + break; + + case _util.OPS.curveTo3: + startX = x; + startY = y; + x = args[j + 2]; + y = args[j + 3]; + ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); + current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier); + j += 4; + break; + + case _util.OPS.closePath: + ctx.closePath(); + break; } + } - current.setCurrentPoint(x, y); - }, - closePath: function CanvasGraphics_closePath() { - this.ctx.closePath(); - }, - stroke: function CanvasGraphics_stroke(consumePath) { - consumePath = typeof consumePath !== 'undefined' ? consumePath : true; - var ctx = this.ctx; - var strokeColor = this.current.strokeColor; - ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth); - ctx.globalAlpha = this.current.strokeAlpha; + if (isScalingMatrix) { + current.updateScalingPathMinMax(currentTransform, minMaxForBezier); + } - if (strokeColor && strokeColor.hasOwnProperty('type') && strokeColor.type === 'Pattern') { + current.setCurrentPoint(x, y); + } + + closePath() { + this.ctx.closePath(); + } + + stroke(consumePath) { + consumePath = typeof consumePath !== "undefined" ? consumePath : true; + const ctx = this.ctx; + const strokeColor = this.current.strokeColor; + ctx.globalAlpha = this.current.strokeAlpha; + + if (this.contentVisible) { + if (typeof strokeColor === "object" && strokeColor !== null && strokeColor !== void 0 && strokeColor.getPattern) { ctx.save(); - ctx.strokeStyle = strokeColor.getPattern(ctx, this); - ctx.stroke(); + ctx.strokeStyle = strokeColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.STROKE); + this.rescaleAndStroke(false); ctx.restore(); } else { - ctx.stroke(); + this.rescaleAndStroke(true); } + } - if (consumePath) { - this.consumePath(); - } + if (consumePath) { + this.consumePath(this.current.getClippedPathBoundingBox()); + } - ctx.globalAlpha = this.current.fillAlpha; - }, - closeStroke: function CanvasGraphics_closeStroke() { - this.closePath(); - this.stroke(); - }, - fill: function CanvasGraphics_fill(consumePath) { - consumePath = typeof consumePath !== 'undefined' ? consumePath : true; - var ctx = this.ctx; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - var needRestore = false; + ctx.globalAlpha = this.current.fillAlpha; + } - if (isPatternFill) { - ctx.save(); + closeStroke() { + this.closePath(); + this.stroke(); + } - if (this.baseTransform) { - ctx.setTransform.apply(ctx, this.baseTransform); - } + fill(consumePath) { + consumePath = typeof consumePath !== "undefined" ? consumePath : true; + const ctx = this.ctx; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + let needRestore = false; - ctx.fillStyle = fillColor.getPattern(ctx, this); - needRestore = true; - } + if (isPatternFill) { + ctx.save(); + ctx.fillStyle = fillColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL); + needRestore = true; + } + const intersect = this.current.getClippedPathBoundingBox(); + + if (this.contentVisible && intersect !== null) { if (this.pendingEOFill) { - ctx.fill('evenodd'); + ctx.fill("evenodd"); this.pendingEOFill = false; } else { ctx.fill(); } + } - if (needRestore) { - ctx.restore(); - } + if (needRestore) { + ctx.restore(); + } - if (consumePath) { - this.consumePath(); - } - }, - eoFill: function CanvasGraphics_eoFill() { - this.pendingEOFill = true; - this.fill(); - }, - fillStroke: function CanvasGraphics_fillStroke() { - this.fill(false); - this.stroke(false); - this.consumePath(); - }, - eoFillStroke: function CanvasGraphics_eoFillStroke() { - this.pendingEOFill = true; - this.fillStroke(); - }, - closeFillStroke: function CanvasGraphics_closeFillStroke() { - this.closePath(); - this.fillStroke(); - }, - closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() { - this.pendingEOFill = true; - this.closePath(); - this.fillStroke(); - }, - endPath: function CanvasGraphics_endPath() { - this.consumePath(); - }, - clip: function CanvasGraphics_clip() { - this.pendingClip = NORMAL_CLIP; - }, - eoClip: function CanvasGraphics_eoClip() { - this.pendingClip = EO_CLIP; - }, - beginText: function CanvasGraphics_beginText() { - this.current.textMatrix = _util.IDENTITY_MATRIX; - this.current.textMatrixScale = 1; - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - }, - endText: function CanvasGraphics_endText() { - var paths = this.pendingTextPaths; - var ctx = this.ctx; + if (consumePath) { + this.consumePath(intersect); + } + } - if (paths === undefined) { - ctx.beginPath(); - return; - } + eoFill() { + this.pendingEOFill = true; + this.fill(); + } - ctx.save(); + fillStroke() { + this.fill(false); + this.stroke(false); + this.consumePath(); + } + + eoFillStroke() { + this.pendingEOFill = true; + this.fillStroke(); + } + + closeFillStroke() { + this.closePath(); + this.fillStroke(); + } + + closeEOFillStroke() { + this.pendingEOFill = true; + this.closePath(); + this.fillStroke(); + } + + endPath() { + this.consumePath(); + } + + clip() { + this.pendingClip = NORMAL_CLIP; + } + + eoClip() { + this.pendingClip = EO_CLIP; + } + + beginText() { + this.current.textMatrix = _util.IDENTITY_MATRIX; + this.current.textMatrixScale = 1; + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + } + + endText() { + const paths = this.pendingTextPaths; + const ctx = this.ctx; + + if (paths === undefined) { ctx.beginPath(); + return; + } - for (var i = 0; i < paths.length; i++) { - var path = paths[i]; - ctx.setTransform.apply(ctx, path.transform); - ctx.translate(path.x, path.y); - path.addToPath(ctx, path.fontSize); + ctx.save(); + ctx.beginPath(); + + for (const path of paths) { + ctx.setTransform(...path.transform); + ctx.translate(path.x, path.y); + path.addToPath(ctx, path.fontSize); + } + + ctx.restore(); + ctx.clip(); + ctx.beginPath(); + delete this.pendingTextPaths; + } + + setCharSpacing(spacing) { + this.current.charSpacing = spacing; + } + + setWordSpacing(spacing) { + this.current.wordSpacing = spacing; + } + + setHScale(scale) { + this.current.textHScale = scale / 100; + } + + setLeading(leading) { + this.current.leading = -leading; + } + + setFont(fontRefName, size) { + const fontObj = this.commonObjs.get(fontRefName); + const current = this.current; + + if (!fontObj) { + throw new Error(`Can't find font for ${fontRefName}`); + } + + current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; + + if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) { + (0, _util.warn)("Invalid font matrix for font " + fontRefName); + } + + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + + this.current.font = fontObj; + this.current.fontSize = size; + + if (fontObj.isType3Font) { + return; + } + + const name = fontObj.loadedName || "sans-serif"; + let bold = "normal"; + + if (fontObj.black) { + bold = "900"; + } else if (fontObj.bold) { + bold = "bold"; + } + + const italic = fontObj.italic ? "italic" : "normal"; + const typeface = `"${name}", ${fontObj.fallbackName}`; + let browserFontSize = size; + + if (size < MIN_FONT_SIZE) { + browserFontSize = MIN_FONT_SIZE; + } else if (size > MAX_FONT_SIZE) { + browserFontSize = MAX_FONT_SIZE; + } + + this.current.fontSizeScale = size / browserFontSize; + this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`; + } + + setTextRenderingMode(mode) { + this.current.textRenderingMode = mode; + } + + setTextRise(rise) { + this.current.textRise = rise; + } + + moveText(x, y) { + this.current.x = this.current.lineX += x; + this.current.y = this.current.lineY += y; + } + + setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + } + + setTextMatrix(a, b, c, d, e, f) { + this.current.textMatrix = [a, b, c, d, e, f]; + this.current.textMatrixScale = Math.hypot(a, b); + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + } + + nextLine() { + this.moveText(0, this.current.leading); + } + + paintChar(character, x, y, patternTransform) { + const ctx = this.ctx; + const current = this.current; + const font = current.font; + const textRenderingMode = current.textRenderingMode; + const fontSize = current.fontSize / current.fontSizeScale; + const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); + const patternFill = current.patternFill && !font.missingFile; + let addToPath; + + if (font.disableFontFace || isAddToPathSet || patternFill) { + addToPath = font.getPathGenerator(this.commonObjs, character); + } + + if (font.disableFontFace || patternFill) { + ctx.save(); + ctx.translate(x, y); + ctx.beginPath(); + addToPath(ctx, fontSize); + + if (patternTransform) { + ctx.setTransform(...patternTransform); + } + + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.fill(); + } + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.stroke(); } ctx.restore(); - ctx.clip(); - ctx.beginPath(); - delete this.pendingTextPaths; - }, - setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) { - this.current.charSpacing = spacing; - }, - setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) { - this.current.wordSpacing = spacing; - }, - setHScale: function CanvasGraphics_setHScale(scale) { - this.current.textHScale = scale / 100; - }, - setLeading: function CanvasGraphics_setLeading(leading) { - this.current.leading = -leading; - }, - setFont: function CanvasGraphics_setFont(fontRefName, size) { - var fontObj = this.commonObjs.get(fontRefName); - var current = this.current; - - if (!fontObj) { - throw new Error("Can't find font for ".concat(fontRefName)); + } else { + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.fillText(character, x, y); } - current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX; - - if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) { - (0, _util.warn)('Invalid font matrix for font ' + fontRefName); + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.strokeText(character, x, y); } + } - if (size < 0) { - size = -size; - current.fontDirection = -1; - } else { - current.fontDirection = 1; + if (isAddToPathSet) { + const paths = this.pendingTextPaths || (this.pendingTextPaths = []); + paths.push({ + transform: (0, _display_utils.getCurrentTransform)(ctx), + x, + y, + fontSize, + addToPath + }); + } + } + + get isFontSubpixelAAEnabled() { + const { + context: ctx + } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10); + ctx.scale(1.5, 1); + ctx.fillText("I", 0, 10); + const data = ctx.getImageData(0, 0, 10, 10).data; + let enabled = false; + + for (let i = 3; i < data.length; i += 4) { + if (data[i] > 0 && data[i] < 255) { + enabled = true; + break; } + } - this.current.font = fontObj; - this.current.fontSize = size; + return (0, _util.shadow)(this, "isFontSubpixelAAEnabled", enabled); + } - if (fontObj.isType3Font) { - return; - } + showText(glyphs) { + const current = this.current; + const font = current.font; - var name = fontObj.loadedName || 'sans-serif'; - var bold = fontObj.black ? '900' : fontObj.bold ? 'bold' : 'normal'; - var italic = fontObj.italic ? 'italic' : 'normal'; - var typeface = "\"".concat(name, "\", ").concat(fontObj.fallbackName); - var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE : size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size; - this.current.fontSizeScale = size / browserFontSize; - this.ctx.font = "".concat(italic, " ").concat(bold, " ").concat(browserFontSize, "px ").concat(typeface); - }, - setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) { - this.current.textRenderingMode = mode; - }, - setTextRise: function CanvasGraphics_setTextRise(rise) { - this.current.textRise = rise; - }, - moveText: function CanvasGraphics_moveText(x, y) { - this.current.x = this.current.lineX += x; - this.current.y = this.current.lineY += y; - }, - setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) { - this.setLeading(-y); - this.moveText(x, y); - }, - setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) { - this.current.textMatrix = [a, b, c, d, e, f]; - this.current.textMatrixScale = Math.sqrt(a * a + b * b); - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - }, - nextLine: function CanvasGraphics_nextLine() { - this.moveText(0, this.current.leading); - }, - paintChar: function paintChar(character, x, y, patternTransform) { - var ctx = this.ctx; - var current = this.current; - var font = current.font; - var textRenderingMode = current.textRenderingMode; - var fontSize = current.fontSize / current.fontSizeScale; - var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; - var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); - var patternFill = current.patternFill && font.data; - var addToPath; + if (font.isType3Font) { + return this.showType3Text(glyphs); + } - if (font.disableFontFace || isAddToPathSet || patternFill) { - addToPath = font.getPathGenerator(this.commonObjs, character); - } + const fontSize = current.fontSize; - if (font.disableFontFace || patternFill) { - ctx.save(); - ctx.translate(x, y); - ctx.beginPath(); - addToPath(ctx, fontSize); + if (fontSize === 0) { + return undefined; + } - if (patternTransform) { - ctx.setTransform.apply(ctx, patternTransform); - } + const ctx = this.ctx; + const fontSizeScale = current.fontSizeScale; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const fontDirection = current.fontDirection; + const textHScale = current.textHScale * fontDirection; + const glyphsLength = glyphs.length; + const vertical = font.vertical; + const spacingDir = vertical ? 1 : -1; + const defaultVMetrics = font.defaultVMetrics; + const widthAdvanceScale = fontSize * current.fontMatrix[0]; + const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill; + ctx.save(); + ctx.transform(...current.textMatrix); + ctx.translate(current.x, current.y + current.textRise); - if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.fill(); - } + if (fontDirection > 0) { + ctx.scale(textHScale, -1); + } else { + ctx.scale(textHScale, 1); + } - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.stroke(); - } + let patternTransform; - ctx.restore(); - } else { - if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.fillText(character, x, y); - } - - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.strokeText(character, x, y); - } - } - - if (isAddToPathSet) { - var paths = this.pendingTextPaths || (this.pendingTextPaths = []); - paths.push({ - transform: ctx.mozCurrentTransform, - x: x, - y: y, - fontSize: fontSize, - addToPath: addToPath - }); - } - }, - - get isFontSubpixelAAEnabled() { - var _this$cachedCanvases$ = this.cachedCanvases.getCanvas('isFontSubpixelAAEnabled', 10, 10), - ctx = _this$cachedCanvases$.context; - - ctx.scale(1.5, 1); - ctx.fillText('I', 0, 10); - var data = ctx.getImageData(0, 0, 10, 10).data; - var enabled = false; - - for (var i = 3; i < data.length; i += 4) { - if (data[i] > 0 && data[i] < 255) { - enabled = true; - break; - } - } - - return (0, _util.shadow)(this, 'isFontSubpixelAAEnabled', enabled); - }, - - showText: function CanvasGraphics_showText(glyphs) { - var current = this.current; - var font = current.font; - - if (font.isType3Font) { - return this.showType3Text(glyphs); - } - - var fontSize = current.fontSize; - - if (fontSize === 0) { - return undefined; - } - - var ctx = this.ctx; - var fontSizeScale = current.fontSizeScale; - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var fontDirection = current.fontDirection; - var textHScale = current.textHScale * fontDirection; - var glyphsLength = glyphs.length; - var vertical = font.vertical; - var spacingDir = vertical ? 1 : -1; - var defaultVMetrics = font.defaultVMetrics; - var widthAdvanceScale = fontSize * current.fontMatrix[0]; - var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill; + if (current.patternFill) { ctx.save(); - var patternTransform; + const pattern = current.fillColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL); + patternTransform = (0, _display_utils.getCurrentTransform)(ctx); + ctx.restore(); + ctx.fillStyle = pattern; + } - if (current.patternFill) { - ctx.save(); - var pattern = current.fillColor.getPattern(ctx, this); - patternTransform = ctx.mozCurrentTransform; - ctx.restore(); - ctx.fillStyle = pattern; + let lineWidth = current.lineWidth; + const scale = current.textMatrixScale; + + if (scale === 0 || lineWidth === 0) { + const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + lineWidth = this.getSinglePixelWidth(); + } + } else { + lineWidth /= scale; + } + + if (fontSizeScale !== 1.0) { + ctx.scale(fontSizeScale, fontSizeScale); + lineWidth /= fontSizeScale; + } + + ctx.lineWidth = lineWidth; + let x = 0, + i; + + for (i = 0; i < glyphsLength; ++i) { + const glyph = glyphs[i]; + + if (typeof glyph === "number") { + x += spacingDir * glyph * fontSize / 1000; + continue; } - ctx.transform.apply(ctx, current.textMatrix); - ctx.translate(current.x, current.y + current.textRise); - - if (fontDirection > 0) { - ctx.scale(textHScale, -1); - } else { - ctx.scale(textHScale, 1); - } - - var lineWidth = current.lineWidth; - var scale = current.textMatrixScale; - - if (scale === 0 || lineWidth === 0) { - var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; - - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - this._cachedGetSinglePixelWidth = null; - lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR; - } - } else { - lineWidth /= scale; - } - - if (fontSizeScale !== 1.0) { - ctx.scale(fontSizeScale, fontSizeScale); - lineWidth /= fontSizeScale; - } - - ctx.lineWidth = lineWidth; - var x = 0, - i; - - for (i = 0; i < glyphsLength; ++i) { - var glyph = glyphs[i]; - - if ((0, _util.isNum)(glyph)) { - x += spacingDir * glyph * fontSize / 1000; - continue; - } - - var restoreNeeded = false; - var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - var character = glyph.fontChar; - var accent = glyph.accent; - var scaledX, scaledY, scaledAccentX, scaledAccentY; - var width = glyph.width; - - if (vertical) { - var vmetric, vx, vy; - vmetric = glyph.vmetric || defaultVMetrics; - vx = glyph.vmetric ? vmetric[1] : width * 0.5; - vx = -vx * widthAdvanceScale; - vy = vmetric[2] * widthAdvanceScale; - width = vmetric ? -vmetric[0] : width; - scaledX = vx / fontSizeScale; - scaledY = (x + vy) / fontSizeScale; - } else { - scaledX = x / fontSizeScale; - scaledY = 0; - } - - if (font.remeasure && width > 0) { - var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale; - - if (width < measuredWidth && this.isFontSubpixelAAEnabled) { - var characterScaleX = width / measuredWidth; - restoreNeeded = true; - ctx.save(); - ctx.scale(characterScaleX, 1); - scaledX /= characterScaleX; - } else if (width !== measuredWidth) { - scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale; - } - } - - if (glyph.isInFont || font.missingFile) { - if (simpleFillText && !accent) { - ctx.fillText(character, scaledX, scaledY); - } else { - this.paintChar(character, scaledX, scaledY, patternTransform); - - if (accent) { - scaledAccentX = scaledX + accent.offset.x / fontSizeScale; - scaledAccentY = scaledY - accent.offset.y / fontSizeScale; - this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform); - } - } - } - - var charWidth = width * widthAdvanceScale + spacing * fontDirection; - x += charWidth; - - if (restoreNeeded) { - ctx.restore(); - } - } + let restoreNeeded = false; + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const character = glyph.fontChar; + const accent = glyph.accent; + let scaledX, scaledY; + let width = glyph.width; if (vertical) { - current.y -= x * textHScale; + const vmetric = glyph.vmetric || defaultVMetrics; + const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale; + const vy = vmetric[2] * widthAdvanceScale; + width = vmetric ? -vmetric[0] : width; + scaledX = vx / fontSizeScale; + scaledY = (x + vy) / fontSizeScale; } else { - current.x += x * textHScale; + scaledX = x / fontSizeScale; + scaledY = 0; } - ctx.restore(); - }, - showType3Text: function CanvasGraphics_showType3Text(glyphs) { - var ctx = this.ctx; - var current = this.current; - var font = current.font; - var fontSize = current.fontSize; - var fontDirection = current.fontDirection; - var spacingDir = font.vertical ? 1 : -1; - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var textHScale = current.textHScale * fontDirection; - var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; - var glyphsLength = glyphs.length; - var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; - var i, glyph, width, spacingLength; + if (font.remeasure && width > 0) { + const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale; - if (isTextInvisible || fontSize === 0) { - return; + if (width < measuredWidth && this.isFontSubpixelAAEnabled) { + const characterScaleX = width / measuredWidth; + restoreNeeded = true; + ctx.save(); + ctx.scale(characterScaleX, 1); + scaledX /= characterScaleX; + } else if (width !== measuredWidth) { + scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale; + } } - this._cachedGetSinglePixelWidth = null; - ctx.save(); - ctx.transform.apply(ctx, current.textMatrix); - ctx.translate(current.x, current.y); - ctx.scale(textHScale, fontDirection); + if (this.contentVisible && (glyph.isInFont || font.missingFile)) { + if (simpleFillText && !accent) { + ctx.fillText(character, scaledX, scaledY); + } else { + this.paintChar(character, scaledX, scaledY, patternTransform); - for (i = 0; i < glyphsLength; ++i) { - glyph = glyphs[i]; - - if ((0, _util.isNum)(glyph)) { - spacingLength = spacingDir * glyph * fontSize / 1000; - this.ctx.translate(spacingLength, 0); - current.x += spacingLength * textHScale; - continue; + if (accent) { + const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale; + const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale; + this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform); + } } + } - var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - var operatorList = font.charProcOperatorList[glyph.operatorListId]; + let charWidth; - if (!operatorList) { - (0, _util.warn)("Type3 character \"".concat(glyph.operatorListId, "\" is not available.")); - continue; - } + if (vertical) { + charWidth = width * widthAdvanceScale - spacing * fontDirection; + } else { + charWidth = width * widthAdvanceScale + spacing * fontDirection; + } + x += charWidth; + + if (restoreNeeded) { + ctx.restore(); + } + } + + if (vertical) { + current.y -= x; + } else { + current.x += x * textHScale; + } + + ctx.restore(); + this.compose(); + return undefined; + } + + showType3Text(glyphs) { + const ctx = this.ctx; + const current = this.current; + const font = current.font; + const fontSize = current.fontSize; + const fontDirection = current.fontDirection; + const spacingDir = font.vertical ? 1 : -1; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const textHScale = current.textHScale * fontDirection; + const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; + const glyphsLength = glyphs.length; + const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; + let i, glyph, width, spacingLength; + + if (isTextInvisible || fontSize === 0) { + return; + } + + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + ctx.save(); + ctx.transform(...current.textMatrix); + ctx.translate(current.x, current.y); + ctx.scale(textHScale, fontDirection); + + for (i = 0; i < glyphsLength; ++i) { + glyph = glyphs[i]; + + if (typeof glyph === "number") { + spacingLength = spacingDir * glyph * fontSize / 1000; + this.ctx.translate(spacingLength, 0); + current.x += spacingLength * textHScale; + continue; + } + + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const operatorList = font.charProcOperatorList[glyph.operatorListId]; + + if (!operatorList) { + (0, _util.warn)(`Type3 character "${glyph.operatorListId}" is not available.`); + continue; + } + + if (this.contentVisible) { this.processingType3 = glyph; this.save(); ctx.scale(fontSize, fontSize); - ctx.transform.apply(ctx, fontMatrix); + ctx.transform(...fontMatrix); this.executeOperatorList(operatorList); this.restore(); - - var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); - - width = transformed[0] * fontSize + spacing; - ctx.translate(width, 0); - current.x += width * textHScale; } - ctx.restore(); - this.processingType3 = null; - }, - setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {}, - setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) { - this.ctx.rect(llx, lly, urx - llx, ury - lly); + const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); + + width = transformed[0] * fontSize + spacing; + ctx.translate(width, 0); + current.x += width * textHScale; + } + + ctx.restore(); + this.processingType3 = null; + } + + setCharWidth(xWidth, yWidth) {} + + setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) { + this.ctx.rect(llx, lly, urx - llx, ury - lly); + this.ctx.clip(); + this.endPath(); + } + + getColorN_Pattern(IR) { + let pattern; + + if (IR[0] === "TilingPattern") { + const color = IR[1]; + const baseTransform = this.baseTransform || (0, _display_utils.getCurrentTransform)(this.ctx); + const canvasGraphicsFactory = { + createCanvasGraphics: ctx => { + return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory); + } + }; + pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); + } else { + pattern = this._getPattern(IR[1], IR[2]); + } + + return pattern; + } + + setStrokeColorN() { + this.current.strokeColor = this.getColorN_Pattern(arguments); + } + + setFillColorN() { + this.current.fillColor = this.getColorN_Pattern(arguments); + this.current.patternFill = true; + } + + setStrokeRGBColor(r, g, b) { + var _this$selectColor; + + const color = ((_this$selectColor = this.selectColor) === null || _this$selectColor === void 0 ? void 0 : _this$selectColor.call(this, r, g, b)) || _util.Util.makeHexColor(r, g, b); + + this.ctx.strokeStyle = color; + this.current.strokeColor = color; + } + + setFillRGBColor(r, g, b) { + var _this$selectColor2; + + const color = ((_this$selectColor2 = this.selectColor) === null || _this$selectColor2 === void 0 ? void 0 : _this$selectColor2.call(this, r, g, b)) || _util.Util.makeHexColor(r, g, b); + + this.ctx.fillStyle = color; + this.current.fillColor = color; + this.current.patternFill = false; + } + + _getPattern(objId) { + let matrix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + let pattern; + + if (this.cachedPatterns.has(objId)) { + pattern = this.cachedPatterns.get(objId); + } else { + pattern = (0, _pattern_helper.getShadingPattern)(this.objs.get(objId)); + this.cachedPatterns.set(objId, pattern); + } + + if (matrix) { + pattern.matrix = matrix; + } + + return pattern; + } + + shadingFill(objId) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + this.save(); + + const pattern = this._getPattern(objId); + + ctx.fillStyle = pattern.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.SHADING); + const inv = (0, _display_utils.getCurrentTransformInverse)(ctx); + + if (inv) { + const canvas = ctx.canvas; + const width = canvas.width; + const height = canvas.height; + + const bl = _util.Util.applyTransform([0, 0], inv); + + const br = _util.Util.applyTransform([0, height], inv); + + const ul = _util.Util.applyTransform([width, 0], inv); + + const ur = _util.Util.applyTransform([width, height], inv); + + const x0 = Math.min(bl[0], br[0], ul[0], ur[0]); + const y0 = Math.min(bl[1], br[1], ul[1], ur[1]); + const x1 = Math.max(bl[0], br[0], ul[0], ur[0]); + const y1 = Math.max(bl[1], br[1], ul[1], ur[1]); + this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0); + } else { + this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10); + } + + this.compose(this.current.getClippedPathBoundingBox()); + this.restore(); + } + + beginInlineImage() { + (0, _util.unreachable)("Should not call beginInlineImage"); + } + + beginImageData() { + (0, _util.unreachable)("Should not call beginImageData"); + } + + paintFormXObjectBegin(matrix, bbox) { + if (!this.contentVisible) { + return; + } + + this.save(); + this.baseTransformStack.push(this.baseTransform); + + if (Array.isArray(matrix) && matrix.length === 6) { + this.transform(...matrix); + } + + this.baseTransform = (0, _display_utils.getCurrentTransform)(this.ctx); + + if (bbox) { + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + this.ctx.rect(bbox[0], bbox[1], width, height); + this.current.updateRectMinMax((0, _display_utils.getCurrentTransform)(this.ctx), bbox); this.clip(); this.endPath(); - }, - getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) { - var _this = this; + } + } - var pattern; + paintFormXObjectEnd() { + if (!this.contentVisible) { + return; + } - if (IR[0] === 'TilingPattern') { - var color = IR[1]; - var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice(); - var canvasGraphicsFactory = { - createCanvasGraphics: function createCanvasGraphics(ctx) { - return new CanvasGraphics(ctx, _this.commonObjs, _this.objs, _this.canvasFactory, _this.webGLContext); - } - }; - pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); - } else { - pattern = (0, _pattern_helper.getShadingPatternFromIR)(IR); - } + this.restore(); + this.baseTransform = this.baseTransformStack.pop(); + } - return pattern; - }, - setStrokeColorN: function CanvasGraphics_setStrokeColorN() { - this.current.strokeColor = this.getColorN_Pattern(arguments); - }, - setFillColorN: function CanvasGraphics_setFillColorN() { - this.current.fillColor = this.getColorN_Pattern(arguments); - this.current.patternFill = true; - }, - setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) { - var color = _util.Util.makeCssRgb(r, g, b); + beginGroup(group) { + if (!this.contentVisible) { + return; + } - this.ctx.strokeStyle = color; - this.current.strokeColor = color; - }, - setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) { - var color = _util.Util.makeCssRgb(r, g, b); + this.save(); - this.ctx.fillStyle = color; - this.current.fillColor = color; - this.current.patternFill = false; - }, - shadingFill: function CanvasGraphics_shadingFill(patternIR) { - var ctx = this.ctx; - this.save(); - var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR); - ctx.fillStyle = pattern.getPattern(ctx, this, true); - var inv = ctx.mozCurrentTransformInverse; - - if (inv) { - var canvas = ctx.canvas; - var width = canvas.width; - var height = canvas.height; - - var bl = _util.Util.applyTransform([0, 0], inv); - - var br = _util.Util.applyTransform([0, height], inv); - - var ul = _util.Util.applyTransform([width, 0], inv); - - var ur = _util.Util.applyTransform([width, height], inv); - - var x0 = Math.min(bl[0], br[0], ul[0], ur[0]); - var y0 = Math.min(bl[1], br[1], ul[1], ur[1]); - var x1 = Math.max(bl[0], br[0], ul[0], ur[0]); - var y1 = Math.max(bl[1], br[1], ul[1], ur[1]); - this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0); - } else { - this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10); - } - - this.restore(); - }, - beginInlineImage: function CanvasGraphics_beginInlineImage() { - (0, _util.unreachable)('Should not call beginInlineImage'); - }, - beginImageData: function CanvasGraphics_beginImageData() { - (0, _util.unreachable)('Should not call beginImageData'); - }, - paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) { - this.save(); - this.baseTransformStack.push(this.baseTransform); - - if (Array.isArray(matrix) && matrix.length === 6) { - this.transform.apply(this, matrix); - } - - this.baseTransform = this.ctx.mozCurrentTransform; - - if (bbox) { - var width = bbox[2] - bbox[0]; - var height = bbox[3] - bbox[1]; - this.ctx.rect(bbox[0], bbox[1], width, height); - this.clip(); - this.endPath(); - } - }, - paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() { - this.restore(); - this.baseTransform = this.baseTransformStack.pop(); - }, - beginGroup: function CanvasGraphics_beginGroup(group) { - this.save(); - var currentCtx = this.ctx; - - if (!group.isolated) { - (0, _util.info)('TODO: Support non-isolated groups.'); - } - - if (group.knockout) { - (0, _util.warn)('Knockout groups not supported.'); - } - - var currentTransform = currentCtx.mozCurrentTransform; - - if (group.matrix) { - currentCtx.transform.apply(currentCtx, group.matrix); - } - - if (!group.bbox) { - throw new Error('Bounding box is required.'); - } - - var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); - - var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; - bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; - var offsetX = Math.floor(bounds[0]); - var offsetY = Math.floor(bounds[1]); - var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); - var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1); - var scaleX = 1, - scaleY = 1; - - if (drawnWidth > MAX_GROUP_SIZE) { - scaleX = drawnWidth / MAX_GROUP_SIZE; - drawnWidth = MAX_GROUP_SIZE; - } - - if (drawnHeight > MAX_GROUP_SIZE) { - scaleY = drawnHeight / MAX_GROUP_SIZE; - drawnHeight = MAX_GROUP_SIZE; - } - - var cacheId = 'groupAt' + this.groupLevel; - - if (group.smask) { - cacheId += '_smask_' + this.smaskCounter++ % 2; - } - - var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); - var groupCtx = scratchCanvas.context; - groupCtx.scale(1 / scaleX, 1 / scaleY); - groupCtx.translate(-offsetX, -offsetY); - groupCtx.transform.apply(groupCtx, currentTransform); - - if (group.smask) { - this.smaskStack.push({ - canvas: scratchCanvas.canvas, - context: groupCtx, - offsetX: offsetX, - offsetY: offsetY, - scaleX: scaleX, - scaleY: scaleY, - subtype: group.smask.subtype, - backdrop: group.smask.backdrop, - transferMap: group.smask.transferMap || null, - startTransformInverse: null - }); - } else { - currentCtx.setTransform(1, 0, 0, 1, 0, 0); - currentCtx.translate(offsetX, offsetY); - currentCtx.scale(scaleX, scaleY); - } - - copyCtxState(currentCtx, groupCtx); - this.ctx = groupCtx; - this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]); - this.groupStack.push(currentCtx); - this.groupLevel++; + if (this.inSMaskMode) { + this.endSMaskMode(); this.current.activeSMask = null; - }, - endGroup: function CanvasGraphics_endGroup(group) { - this.groupLevel--; - var groupCtx = this.ctx; - this.ctx = this.groupStack.pop(); + } - if (this.ctx.imageSmoothingEnabled !== undefined) { - this.ctx.imageSmoothingEnabled = false; - } else { - this.ctx.mozImageSmoothingEnabled = false; - } + const currentCtx = this.ctx; - if (group.smask) { - this.tempSMask = this.smaskStack.pop(); - } else { - this.ctx.drawImage(groupCtx.canvas, 0, 0); - } + if (!group.isolated) { + (0, _util.info)("TODO: Support non-isolated groups."); + } + if (group.knockout) { + (0, _util.warn)("Knockout groups not supported."); + } + + const currentTransform = (0, _display_utils.getCurrentTransform)(currentCtx); + + if (group.matrix) { + currentCtx.transform(...group.matrix); + } + + if (!group.bbox) { + throw new Error("Bounding box is required."); + } + + let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, (0, _display_utils.getCurrentTransform)(currentCtx)); + + const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; + bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; + const offsetX = Math.floor(bounds[0]); + const offsetY = Math.floor(bounds[1]); + let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); + let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1); + let scaleX = 1, + scaleY = 1; + + if (drawnWidth > MAX_GROUP_SIZE) { + scaleX = drawnWidth / MAX_GROUP_SIZE; + drawnWidth = MAX_GROUP_SIZE; + } + + if (drawnHeight > MAX_GROUP_SIZE) { + scaleY = drawnHeight / MAX_GROUP_SIZE; + drawnHeight = MAX_GROUP_SIZE; + } + + this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]); + let cacheId = "groupAt" + this.groupLevel; + + if (group.smask) { + cacheId += "_smask_" + this.smaskCounter++ % 2; + } + + const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight); + const groupCtx = scratchCanvas.context; + groupCtx.scale(1 / scaleX, 1 / scaleY); + groupCtx.translate(-offsetX, -offsetY); + groupCtx.transform(...currentTransform); + + if (group.smask) { + this.smaskStack.push({ + canvas: scratchCanvas.canvas, + context: groupCtx, + offsetX, + offsetY, + scaleX, + scaleY, + subtype: group.smask.subtype, + backdrop: group.smask.backdrop, + transferMap: group.smask.transferMap || null, + startTransformInverse: null + }); + } else { + currentCtx.setTransform(1, 0, 0, 1, 0, 0); + currentCtx.translate(offsetX, offsetY); + currentCtx.scale(scaleX, scaleY); + currentCtx.save(); + } + + copyCtxState(currentCtx, groupCtx); + this.ctx = groupCtx; + this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); + this.groupStack.push(currentCtx); + this.groupLevel++; + } + + endGroup(group) { + if (!this.contentVisible) { + return; + } + + this.groupLevel--; + const groupCtx = this.ctx; + const ctx = this.groupStack.pop(); + this.ctx = ctx; + this.ctx.imageSmoothingEnabled = false; + + if (group.smask) { + this.tempSMask = this.smaskStack.pop(); this.restore(); - }, - beginAnnotations: function CanvasGraphics_beginAnnotations() { - this.save(); - - if (this.baseTransform) { - this.ctx.setTransform.apply(this.ctx, this.baseTransform); - } - }, - endAnnotations: function CanvasGraphics_endAnnotations() { + } else { + this.ctx.restore(); + const currentMtx = (0, _display_utils.getCurrentTransform)(this.ctx); this.restore(); - }, - beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) { - this.save(); - resetCtxToDefault(this.ctx); - this.current = new CanvasExtraState(); + this.ctx.save(); + this.ctx.setTransform(...currentMtx); - if (Array.isArray(rect) && rect.length === 4) { - var width = rect[2] - rect[0]; - var height = rect[3] - rect[1]; + const dirtyBox = _util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx); + + this.ctx.drawImage(groupCtx.canvas, 0, 0); + this.ctx.restore(); + this.compose(dirtyBox); + } + } + + beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) { + _classPrivateMethodGet(this, _restoreInitialState, _restoreInitialState2).call(this); + + resetCtxToDefault(this.ctx, this.foregroundColor); + this.ctx.save(); + this.save(); + + if (this.baseTransform) { + this.ctx.setTransform(...this.baseTransform); + } + + if (Array.isArray(rect) && rect.length === 4) { + const width = rect[2] - rect[0]; + const height = rect[3] - rect[1]; + + if (hasOwnCanvas && this.annotationCanvasMap) { + transform = transform.slice(); + transform[4] -= rect[0]; + transform[5] -= rect[1]; + rect = rect.slice(); + rect[0] = rect[1] = 0; + rect[2] = width; + rect[3] = height; + + const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale((0, _display_utils.getCurrentTransform)(this.ctx)); + + const { + viewportScale + } = this; + const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale); + const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale); + this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight); + const { + canvas, + context + } = this.annotationCanvas; + this.annotationCanvasMap.set(id, canvas); + this.annotationCanvas.savedCtx = this.ctx; + this.ctx = context; + this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY); + resetCtxToDefault(this.ctx, this.foregroundColor); + } else { + resetCtxToDefault(this.ctx, this.foregroundColor); this.ctx.rect(rect[0], rect[1], width, height); - this.clip(); + this.ctx.clip(); this.endPath(); } + } - this.transform.apply(this, transform); - this.transform.apply(this, matrix); - }, - endAnnotation: function CanvasGraphics_endAnnotation() { - this.restore(); - }, - paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) { - var domImage = this.processingType3 ? this.commonObjs.get(objId) : this.objs.get(objId); + this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height); + this.transform(...transform); + this.transform(...matrix); + } - if (!domImage) { - (0, _util.warn)('Dependent image isn\'t ready yet'); - return; + endAnnotation() { + if (this.annotationCanvas) { + this.ctx = this.annotationCanvas.savedCtx; + delete this.annotationCanvas.savedCtx; + delete this.annotationCanvas; + } + } + + paintImageMaskXObject(img) { + if (!this.contentVisible) { + return; + } + + const count = img.count; + img = this.getObject(img.data, img); + img.count = count; + const ctx = this.ctx; + const glyph = this.processingType3; + + if (glyph) { + if (glyph.compiled === undefined) { + glyph.compiled = compileType3Glyph(img); } - this.save(); - var ctx = this.ctx; - ctx.scale(1 / w, -1 / h); - ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height, 0, -h, w, h); - - if (this.imageLayer) { - var currentTransform = ctx.mozCurrentTransformInverse; - var position = this.getCanvasPosition(0, 0); - this.imageLayer.appendImage({ - objId: objId, - left: position[0], - top: position[1], - width: w / currentTransform[0], - height: h / currentTransform[3] - }); - } - - this.restore(); - }, - paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) { - var ctx = this.ctx; - var width = img.width, - height = img.height; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - var glyph = this.processingType3; - - if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) { - if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) { - glyph.compiled = compileType3Glyph({ - data: img.data, - width: width, - height: height - }); - } else { - glyph.compiled = null; - } - } - - if (glyph && glyph.compiled) { + if (glyph.compiled) { glyph.compiled(ctx); return; } + } - var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height); - var maskCtx = maskCanvas.context; + const mask = this._createMaskCanvas(img); + + const maskCanvas = mask.canvas; + ctx.save(); + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY); + ctx.restore(); + this.compose(); + } + + paintImageMaskXObjectRepeat(img, scaleX) { + let skewX = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + let skewY = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; + let scaleY = arguments.length > 4 ? arguments[4] : undefined; + let positions = arguments.length > 5 ? arguments[5] : undefined; + + if (!this.contentVisible) { + return; + } + + img = this.getObject(img.data, img); + const ctx = this.ctx; + ctx.save(); + const currentTransform = (0, _display_utils.getCurrentTransform)(ctx); + ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0); + + const mask = this._createMaskCanvas(img); + + ctx.setTransform(1, 0, 0, 1, 0, 0); + + for (let i = 0, ii = positions.length; i < ii; i += 2) { + const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]); + + const [x, y] = _util.Util.applyTransform([0, 0], trans); + + ctx.drawImage(mask.canvas, x, y); + } + + ctx.restore(); + this.compose(); + } + + paintImageMaskXObjectGroup(images) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + + for (const image of images) { + const { + data, + width, + height, + transform + } = image; + const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); + const maskCtx = maskCanvas.context; maskCtx.save(); + const img = this.getObject(data, image); putBinaryImageMask(maskCtx, img); - maskCtx.globalCompositeOperation = 'source-in'; - maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor; + maskCtx.globalCompositeOperation = "source-in"; + maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL) : fillColor; maskCtx.fillRect(0, 0, width, height); maskCtx.restore(); - this.paintInlineImageXObject(maskCanvas.canvas); - }, - paintImageMaskXObjectRepeat: function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX, scaleY, positions) { - var width = imgData.width; - var height = imgData.height; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height); - var maskCtx = maskCanvas.context; - maskCtx.save(); - putBinaryImageMask(maskCtx, imgData); - maskCtx.globalCompositeOperation = 'source-in'; - maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor; - maskCtx.fillRect(0, 0, width, height); - maskCtx.restore(); - var ctx = this.ctx; + ctx.save(); + ctx.transform(...transform); + ctx.scale(1, -1); + drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); + ctx.restore(); + } - for (var i = 0, ii = positions.length; i < ii; i += 2) { - ctx.save(); - ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]); - ctx.scale(1, -1); - ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); - ctx.restore(); - } - }, - paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(images) { - var ctx = this.ctx; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; + this.compose(); + } - for (var i = 0, ii = images.length; i < ii; i++) { - var image = images[i]; - var width = image.width, - height = image.height; - var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height); - var maskCtx = maskCanvas.context; - maskCtx.save(); - putBinaryImageMask(maskCtx, image); - maskCtx.globalCompositeOperation = 'source-in'; - maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor; - maskCtx.fillRect(0, 0, width, height); - maskCtx.restore(); - ctx.save(); - ctx.transform.apply(ctx, image.transform); - ctx.scale(1, -1); - ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); - ctx.restore(); - } - }, - paintImageXObject: function CanvasGraphics_paintImageXObject(objId) { - var imgData = this.processingType3 ? this.commonObjs.get(objId) : this.objs.get(objId); + paintImageXObject(objId) { + if (!this.contentVisible) { + return; + } - if (!imgData) { - (0, _util.warn)('Dependent image isn\'t ready yet'); - return; - } + const imgData = this.getObject(objId); - this.paintInlineImageXObject(imgData); - }, - paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) { - var imgData = this.processingType3 ? this.commonObjs.get(objId) : this.objs.get(objId); + if (!imgData) { + (0, _util.warn)("Dependent image isn't ready yet"); + return; + } - if (!imgData) { - (0, _util.warn)('Dependent image isn\'t ready yet'); - return; - } + this.paintInlineImageXObject(imgData); + } - var width = imgData.width; - var height = imgData.height; - var map = []; + paintImageXObjectRepeat(objId, scaleX, scaleY, positions) { + if (!this.contentVisible) { + return; + } - for (var i = 0, ii = positions.length; i < ii; i += 2) { - map.push({ - transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]], - x: 0, - y: 0, - w: width, - h: height - }); - } + const imgData = this.getObject(objId); - this.paintInlineImageXObjectGroup(imgData, map); - }, - paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(imgData) { - var width = imgData.width; - var height = imgData.height; - var ctx = this.ctx; - this.save(); - ctx.scale(1 / width, -1 / height); - var currentTransform = ctx.mozCurrentTransformInverse; - var a = currentTransform[0], - b = currentTransform[1]; - var widthScale = Math.max(Math.sqrt(a * a + b * b), 1); - var c = currentTransform[2], - d = currentTransform[3]; - var heightScale = Math.max(Math.sqrt(c * c + d * d), 1); - var imgToPaint, tmpCanvas; + if (!imgData) { + (0, _util.warn)("Dependent image isn't ready yet"); + return; + } - if (typeof HTMLElement === 'function' && imgData instanceof HTMLElement || !imgData.data) { - imgToPaint = imgData; - } else { - tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', width, height); - var tmpCtx = tmpCanvas.context; - putBinaryImageData(tmpCtx, imgData); - imgToPaint = tmpCanvas.canvas; - } + const width = imgData.width; + const height = imgData.height; + const map = []; - var paintWidth = width, - paintHeight = height; - var tmpCanvasId = 'prescale1'; + for (let i = 0, ii = positions.length; i < ii; i += 2) { + map.push({ + transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]], + x: 0, + y: 0, + w: width, + h: height + }); + } - while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) { - var newWidth = paintWidth, - newHeight = paintHeight; + this.paintInlineImageXObjectGroup(imgData, map); + } - if (widthScale > 2 && paintWidth > 1) { - newWidth = Math.ceil(paintWidth / 2); - widthScale /= paintWidth / newWidth; - } + paintInlineImageXObject(imgData) { + if (!this.contentVisible) { + return; + } - if (heightScale > 2 && paintHeight > 1) { - newHeight = Math.ceil(paintHeight / 2); - heightScale /= paintHeight / newHeight; - } + const width = imgData.width; + const height = imgData.height; + const ctx = this.ctx; + this.save(); + ctx.scale(1 / width, -1 / height); + let imgToPaint; - tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight); - tmpCtx = tmpCanvas.context; - tmpCtx.clearRect(0, 0, newWidth, newHeight); - tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight); - imgToPaint = tmpCanvas.canvas; - paintWidth = newWidth; - paintHeight = newHeight; - tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1'; - } + if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) { + imgToPaint = imgData; + } else { + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); + imgToPaint = tmpCanvas.canvas; + } - ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height); + const scaled = this._scaleImage(imgToPaint, (0, _display_utils.getCurrentTransformInverse)(ctx)); + + ctx.imageSmoothingEnabled = getImageSmoothingEnabled((0, _display_utils.getCurrentTransform)(ctx), imgData.interpolate); + const [rWidth, rHeight] = drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height); + + if (this.imageLayer) { + const [left, top] = _util.Util.applyTransform([0, -height], (0, _display_utils.getCurrentTransform)(this.ctx)); + + this.imageLayer.appendImage({ + imgData, + left, + top, + width: rWidth, + height: rHeight + }); + } + + this.compose(); + this.restore(); + } + + paintInlineImageXObjectGroup(imgData, map) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + const w = imgData.width; + const h = imgData.height; + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); + + for (const entry of map) { + ctx.save(); + ctx.transform(...entry.transform); + ctx.scale(1, -1); + drawImageAtIntegerCoords(ctx, tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1); if (this.imageLayer) { - var position = this.getCanvasPosition(0, -height); + const [left, top] = _util.Util.applyTransform([entry.x, entry.y], (0, _display_utils.getCurrentTransform)(this.ctx)); + this.imageLayer.appendImage({ - imgData: imgData, - left: position[0], - top: position[1], - width: width / currentTransform[0], - height: height / currentTransform[3] + imgData, + left, + top, + width: w, + height: h }); } - this.restore(); - }, - paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) { - var ctx = this.ctx; - var w = imgData.width; - var h = imgData.height; - var tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', w, h); - var tmpCtx = tmpCanvas.context; - putBinaryImageData(tmpCtx, imgData); + ctx.restore(); + } - for (var i = 0, ii = map.length; i < ii; i++) { - var entry = map[i]; - ctx.save(); - ctx.transform.apply(ctx, entry.transform); - ctx.scale(1, -1); - ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1); + this.compose(); + } - if (this.imageLayer) { - var position = this.getCanvasPosition(entry.x, entry.y); - this.imageLayer.appendImage({ - imgData: imgData, - left: position[0], - top: position[1], - width: w, - height: h - }); - } + paintSolidColorImageMask() { + if (!this.contentVisible) { + return; + } - ctx.restore(); - } - }, - paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() { - this.ctx.fillRect(0, 0, 1, 1); - }, - paintXObject: function CanvasGraphics_paintXObject() { - (0, _util.warn)('Unsupported \'paintXObject\' command.'); - }, - markPoint: function CanvasGraphics_markPoint(tag) {}, - markPointProps: function CanvasGraphics_markPointProps(tag, properties) {}, - beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {}, - beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(tag, properties) {}, - endMarkedContent: function CanvasGraphics_endMarkedContent() {}, - beginCompat: function CanvasGraphics_beginCompat() {}, - endCompat: function CanvasGraphics_endCompat() {}, - consumePath: function CanvasGraphics_consumePath() { - var ctx = this.ctx; + this.ctx.fillRect(0, 0, 1, 1); + this.compose(); + } - if (this.pendingClip) { + markPoint(tag) {} + + markPointProps(tag, properties) {} + + beginMarkedContent(tag) { + this.markedContentStack.push({ + visible: true + }); + } + + beginMarkedContentProps(tag, properties) { + if (tag === "OC") { + this.markedContentStack.push({ + visible: this.optionalContentConfig.isVisible(properties) + }); + } else { + this.markedContentStack.push({ + visible: true + }); + } + + this.contentVisible = this.isContentVisible(); + } + + endMarkedContent() { + this.markedContentStack.pop(); + this.contentVisible = this.isContentVisible(); + } + + beginCompat() {} + + endCompat() {} + + consumePath(clipBox) { + const isEmpty = this.current.isEmptyClip(); + + if (this.pendingClip) { + this.current.updateClipFromPath(); + } + + if (!this.pendingClip) { + this.compose(clipBox); + } + + const ctx = this.ctx; + + if (this.pendingClip) { + if (!isEmpty) { if (this.pendingClip === EO_CLIP) { - ctx.clip('evenodd'); + ctx.clip("evenodd"); } else { ctx.clip(); } - - this.pendingClip = null; } - ctx.beginPath(); - }, - getSinglePixelWidth: function getSinglePixelWidth(scale) { - if (this._cachedGetSinglePixelWidth === null) { - var inverse = this.ctx.mozCurrentTransformInverse; - this._cachedGetSinglePixelWidth = Math.sqrt(Math.max(inverse[0] * inverse[0] + inverse[1] * inverse[1], inverse[2] * inverse[2] + inverse[3] * inverse[3])); - } - - return this._cachedGetSinglePixelWidth; - }, - getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) { - var transform = this.ctx.mozCurrentTransform; - return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]]; + this.pendingClip = null; } - }; - for (var op in _util.OPS) { - CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; + this.current.startNewPathAndClipBox(this.current.clipBox); + ctx.beginPath(); } - return CanvasGraphics; -}(); + getSinglePixelWidth() { + if (!this._cachedGetSinglePixelWidth) { + const m = (0, _display_utils.getCurrentTransform)(this.ctx); + + if (m[1] === 0 && m[2] === 0) { + this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3])); + } else { + const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]); + const normX = Math.hypot(m[0], m[2]); + const normY = Math.hypot(m[1], m[3]); + this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet; + } + } + + return this._cachedGetSinglePixelWidth; + } + + getScaleForStroking() { + if (!this._cachedScaleForStroking) { + const { + lineWidth + } = this.current; + const m = (0, _display_utils.getCurrentTransform)(this.ctx); + let scaleX, scaleY; + + if (m[1] === 0 && m[2] === 0) { + const normX = Math.abs(m[0]); + const normY = Math.abs(m[3]); + + if (lineWidth === 0) { + scaleX = 1 / normX; + scaleY = 1 / normY; + } else { + const scaledXLineWidth = normX * lineWidth; + const scaledYLineWidth = normY * lineWidth; + scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1; + scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1; + } + } else { + const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]); + const normX = Math.hypot(m[0], m[1]); + const normY = Math.hypot(m[2], m[3]); + + if (lineWidth === 0) { + scaleX = normY / absDet; + scaleY = normX / absDet; + } else { + const baseArea = lineWidth * absDet; + scaleX = normY > baseArea ? normY / baseArea : 1; + scaleY = normX > baseArea ? normX / baseArea : 1; + } + } + + this._cachedScaleForStroking = [scaleX, scaleY]; + } + + return this._cachedScaleForStroking; + } + + rescaleAndStroke(saveRestore) { + const { + ctx + } = this; + const { + lineWidth + } = this.current; + const [scaleX, scaleY] = this.getScaleForStroking(); + ctx.lineWidth = lineWidth || 1; + + if (scaleX === 1 && scaleY === 1) { + ctx.stroke(); + return; + } + + let savedMatrix, savedDashes, savedDashOffset; + + if (saveRestore) { + savedMatrix = (0, _display_utils.getCurrentTransform)(ctx); + savedDashes = ctx.getLineDash().slice(); + savedDashOffset = ctx.lineDashOffset; + } + + ctx.scale(scaleX, scaleY); + const scale = Math.max(scaleX, scaleY); + ctx.setLineDash(ctx.getLineDash().map(x => x / scale)); + ctx.lineDashOffset /= scale; + ctx.stroke(); + + if (saveRestore) { + ctx.setTransform(...savedMatrix); + ctx.setLineDash(savedDashes); + ctx.lineDashOffset = savedDashOffset; + } + } + + isContentVisible() { + for (let i = this.markedContentStack.length - 1; i >= 0; i--) { + if (!this.markedContentStack[i].visible) { + return false; + } + } + + return true; + } + +} exports.CanvasGraphics = CanvasGraphics; +function _restoreInitialState2() { + while (this.stateStack.length || this.inSMaskMode) { + this.restore(); + } + + this.ctx.restore(); + + if (this.transparentCanvas) { + this.ctx = this.compositeCtx; + this.ctx.save(); + this.ctx.setTransform(1, 0, 0, 1, 0, 0); + this.ctx.drawImage(this.transparentCanvas, 0, 0); + this.ctx.restore(); + this.transparentCanvas = null; + } +} + +for (const op in _util.OPS) { + if (CanvasGraphics.prototype[op] !== undefined) { + CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; + } +} + /***/ }), -/* 155 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 138 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.getShadingPatternFromIR = getShadingPatternFromIR; -exports.TilingPattern = void 0; +})); +exports.TilingPattern = exports.PathType = void 0; +exports.getShadingPattern = getShadingPattern; var _util = __w_pdfjs_require__(1); -var ShadingIRs = {}; -ShadingIRs.RadialAxial = { - fromIR: function RadialAxial_fromIR(raw) { - var type = raw[1]; - var colorStops = raw[2]; - var p0 = raw[3]; - var p1 = raw[4]; - var r0 = raw[5]; - var r1 = raw[6]; - return { - type: 'Pattern', - getPattern: function RadialAxial_getPattern(ctx) { - var grad; +var _display_utils = __w_pdfjs_require__(133); - if (type === 'axial') { - grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]); - } else if (type === 'radial') { - grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1); - } +var _is_node = __w_pdfjs_require__(3); - for (var i = 0, ii = colorStops.length; i < ii; ++i) { - var c = colorStops[i]; - grad.addColorStop(c[0], c[1]); - } - - return grad; - } - }; - } +const PathType = { + FILL: "Fill", + STROKE: "Stroke", + SHADING: "Shading" }; +exports.PathType = PathType; -var createMeshCanvas = function createMeshCanvasClosure() { - function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) { - var coords = context.coords, +function applyBoundingBox(ctx, bbox) { + if (!bbox || _is_node.isNodeJS) { + return; + } + + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + const region = new Path2D(); + region.rect(bbox[0], bbox[1], width, height); + ctx.clip(region); +} + +class BaseShadingPattern { + constructor() { + if (this.constructor === BaseShadingPattern) { + (0, _util.unreachable)("Cannot initialize BaseShadingPattern."); + } + } + + getPattern() { + (0, _util.unreachable)("Abstract method `getPattern` called."); + } + +} + +class RadialAxialShadingPattern extends BaseShadingPattern { + constructor(IR) { + super(); + this._type = IR[1]; + this._bbox = IR[2]; + this._colorStops = IR[3]; + this._p0 = IR[4]; + this._p1 = IR[5]; + this._r0 = IR[6]; + this._r1 = IR[7]; + this.matrix = null; + } + + _createGradient(ctx) { + let grad; + + if (this._type === "axial") { + grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]); + } else if (this._type === "radial") { + grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1); + } + + for (const colorStop of this._colorStops) { + grad.addColorStop(colorStop[0], colorStop[1]); + } + + return grad; + } + + getPattern(ctx, owner, inverse, pathType) { + let pattern; + + if (pathType === PathType.STROKE || pathType === PathType.FILL) { + const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, (0, _display_utils.getCurrentTransform)(ctx)) || [0, 0, 0, 0]; + const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1; + const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1; + const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", width, height, true); + const tmpCtx = tmpCanvas.context; + tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height); + tmpCtx.beginPath(); + tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height); + tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]); + inverse = _util.Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]); + tmpCtx.transform(...owner.baseTransform); + + if (this.matrix) { + tmpCtx.transform(...this.matrix); + } + + applyBoundingBox(tmpCtx, this._bbox); + tmpCtx.fillStyle = this._createGradient(tmpCtx); + tmpCtx.fill(); + pattern = ctx.createPattern(tmpCanvas.canvas, "no-repeat"); + const domMatrix = new DOMMatrix(inverse); + + try { + pattern.setTransform(domMatrix); + } catch (ex) { + (0, _util.warn)(`RadialAxialShadingPattern.getPattern: "${ex === null || ex === void 0 ? void 0 : ex.message}".`); + } + } else { + applyBoundingBox(ctx, this._bbox); + pattern = this._createGradient(ctx); + } + + return pattern; + } + +} + +function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) { + const coords = context.coords, colors = context.colors; - var bytes = data.data, + const bytes = data.data, rowSize = data.width * 4; - var tmp; + let tmp; - if (coords[p1 + 1] > coords[p2 + 1]) { - tmp = p1; - p1 = p2; - p2 = tmp; - tmp = c1; - c1 = c2; - c2 = tmp; - } + if (coords[p1 + 1] > coords[p2 + 1]) { + tmp = p1; + p1 = p2; + p2 = tmp; + tmp = c1; + c1 = c2; + c2 = tmp; + } - if (coords[p2 + 1] > coords[p3 + 1]) { - tmp = p2; - p2 = p3; - p3 = tmp; - tmp = c2; - c2 = c3; - c3 = tmp; - } + if (coords[p2 + 1] > coords[p3 + 1]) { + tmp = p2; + p2 = p3; + p3 = tmp; + tmp = c2; + c2 = c3; + c3 = tmp; + } - if (coords[p1 + 1] > coords[p2 + 1]) { - tmp = p1; - p1 = p2; - p2 = tmp; - tmp = c1; - c1 = c2; - c2 = tmp; - } + if (coords[p1 + 1] > coords[p2 + 1]) { + tmp = p1; + p1 = p2; + p2 = tmp; + tmp = c1; + c1 = c2; + c2 = tmp; + } - var x1 = (coords[p1] + context.offsetX) * context.scaleX; - var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY; - var x2 = (coords[p2] + context.offsetX) * context.scaleX; - var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY; - var x3 = (coords[p3] + context.offsetX) * context.scaleX; - var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY; + const x1 = (coords[p1] + context.offsetX) * context.scaleX; + const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY; + const x2 = (coords[p2] + context.offsetX) * context.scaleX; + const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY; + const x3 = (coords[p3] + context.offsetX) * context.scaleX; + const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY; - if (y1 >= y3) { - return; - } + if (y1 >= y3) { + return; + } - var c1r = colors[c1], + const c1r = colors[c1], c1g = colors[c1 + 1], c1b = colors[c1 + 2]; - var c2r = colors[c2], + const c2r = colors[c2], c2g = colors[c2 + 1], c2b = colors[c2 + 2]; - var c3r = colors[c3], + const c3r = colors[c3], c3g = colors[c3 + 1], c3b = colors[c3 + 2]; - var minY = Math.round(y1), + const minY = Math.round(y1), maxY = Math.round(y3); - var xa, car, cag, cab; - var xb, cbr, cbg, cbb; - var k; + let xa, car, cag, cab; + let xb, cbr, cbg, cbb; - for (var y = minY; y <= maxY; y++) { - if (y < y2) { - k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2); - xa = x1 - (x1 - x2) * k; - car = c1r - (c1r - c2r) * k; - cag = c1g - (c1g - c2g) * k; - cab = c1b - (c1b - c2b) * k; + for (let y = minY; y <= maxY; y++) { + if (y < y2) { + let k; + + if (y < y1) { + k = 0; } else { - k = y > y3 ? 1 : y2 === y3 ? 0 : (y2 - y) / (y2 - y3); - xa = x2 - (x2 - x3) * k; - car = c2r - (c2r - c3r) * k; - cag = c2g - (c2g - c3g) * k; - cab = c2b - (c2b - c3b) * k; + k = (y1 - y) / (y1 - y2); } - k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3); - xb = x1 - (x1 - x3) * k; - cbr = c1r - (c1r - c3r) * k; - cbg = c1g - (c1g - c3g) * k; - cbb = c1b - (c1b - c3b) * k; - var x1_ = Math.round(Math.min(xa, xb)); - var x2_ = Math.round(Math.max(xa, xb)); - var j = rowSize * y + x1_ * 4; + xa = x1 - (x1 - x2) * k; + car = c1r - (c1r - c2r) * k; + cag = c1g - (c1g - c2g) * k; + cab = c1b - (c1b - c2b) * k; + } else { + let k; - for (var x = x1_; x <= x2_; x++) { - k = (xa - x) / (xa - xb); - k = k < 0 ? 0 : k > 1 ? 1 : k; - bytes[j++] = car - (car - cbr) * k | 0; - bytes[j++] = cag - (cag - cbg) * k | 0; - bytes[j++] = cab - (cab - cbb) * k | 0; - bytes[j++] = 255; + if (y > y3) { + k = 1; + } else if (y2 === y3) { + k = 0; + } else { + k = (y2 - y) / (y2 - y3); } + + xa = x2 - (x2 - x3) * k; + car = c2r - (c2r - c3r) * k; + cag = c2g - (c2g - c3g) * k; + cab = c2b - (c2b - c3b) * k; + } + + let k; + + if (y < y1) { + k = 0; + } else if (y > y3) { + k = 1; + } else { + k = (y1 - y) / (y1 - y3); + } + + xb = x1 - (x1 - x3) * k; + cbr = c1r - (c1r - c3r) * k; + cbg = c1g - (c1g - c3g) * k; + cbb = c1b - (c1b - c3b) * k; + const x1_ = Math.round(Math.min(xa, xb)); + const x2_ = Math.round(Math.max(xa, xb)); + let j = rowSize * y + x1_ * 4; + + for (let x = x1_; x <= x2_; x++) { + k = (xa - x) / (xa - xb); + + if (k < 0) { + k = 0; + } else if (k > 1) { + k = 1; + } + + bytes[j++] = car - (car - cbr) * k | 0; + bytes[j++] = cag - (cag - cbg) * k | 0; + bytes[j++] = cab - (cab - cbb) * k | 0; + bytes[j++] = 255; } } +} - function drawFigure(data, figure, context) { - var ps = figure.coords; - var cs = figure.colors; - var i, ii; +function drawFigure(data, figure, context) { + const ps = figure.coords; + const cs = figure.colors; + let i, ii; - switch (figure.type) { - case 'lattice': - var verticesPerRow = figure.verticesPerRow; - var rows = Math.floor(ps.length / verticesPerRow) - 1; - var cols = verticesPerRow - 1; + switch (figure.type) { + case "lattice": + const verticesPerRow = figure.verticesPerRow; + const rows = Math.floor(ps.length / verticesPerRow) - 1; + const cols = verticesPerRow - 1; - for (i = 0; i < rows; i++) { - var q = i * verticesPerRow; + for (i = 0; i < rows; i++) { + let q = i * verticesPerRow; - for (var j = 0; j < cols; j++, q++) { - drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]); - drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]); - } + for (let j = 0; j < cols; j++, q++) { + drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]); + drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]); } + } - break; + break; - case 'triangles': - for (i = 0, ii = ps.length; i < ii; i += 3) { - drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]); - } + case "triangles": + for (i = 0, ii = ps.length; i < ii; i += 3) { + drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]); + } - break; + break; - default: - throw new Error('illegal figure'); - } + default: + throw new Error("illegal figure"); + } +} + +class MeshShadingPattern extends BaseShadingPattern { + constructor(IR) { + super(); + this._coords = IR[2]; + this._colors = IR[3]; + this._figures = IR[4]; + this._bounds = IR[5]; + this._bbox = IR[7]; + this._background = IR[8]; + this.matrix = null; } - function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases, webGLContext) { - var EXPECTED_SCALE = 1.1; - var MAX_PATTERN_SIZE = 3000; - var BORDER_SIZE = 2; - var offsetX = Math.floor(bounds[0]); - var offsetY = Math.floor(bounds[1]); - var boundsWidth = Math.ceil(bounds[2]) - offsetX; - var boundsHeight = Math.ceil(bounds[3]) - offsetY; - var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); - var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); - var scaleX = boundsWidth / width; - var scaleY = boundsHeight / height; - var context = { - coords: coords, - colors: colors, + _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) { + const EXPECTED_SCALE = 1.1; + const MAX_PATTERN_SIZE = 3000; + const BORDER_SIZE = 2; + const offsetX = Math.floor(this._bounds[0]); + const offsetY = Math.floor(this._bounds[1]); + const boundsWidth = Math.ceil(this._bounds[2]) - offsetX; + const boundsHeight = Math.ceil(this._bounds[3]) - offsetY; + const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + const scaleX = boundsWidth / width; + const scaleY = boundsHeight / height; + const context = { + coords: this._coords, + colors: this._colors, offsetX: -offsetX, offsetY: -offsetY, scaleX: 1 / scaleX, scaleY: 1 / scaleY }; - var paddedWidth = width + BORDER_SIZE * 2; - var paddedHeight = height + BORDER_SIZE * 2; - var canvas, tmpCanvas, i, ii; + const paddedWidth = width + BORDER_SIZE * 2; + const paddedHeight = height + BORDER_SIZE * 2; + const tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false); + const tmpCtx = tmpCanvas.context; + const data = tmpCtx.createImageData(width, height); - if (webGLContext.isEnabled) { - canvas = webGLContext.drawFigures({ - width: width, - height: height, - backgroundColor: backgroundColor, - figures: figures, - context: context - }); - tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false); - tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE); - canvas = tmpCanvas.canvas; - } else { - tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false); - var tmpCtx = tmpCanvas.context; - var data = tmpCtx.createImageData(width, height); + if (backgroundColor) { + const bytes = data.data; - if (backgroundColor) { - var bytes = data.data; - - for (i = 0, ii = bytes.length; i < ii; i += 4) { - bytes[i] = backgroundColor[0]; - bytes[i + 1] = backgroundColor[1]; - bytes[i + 2] = backgroundColor[2]; - bytes[i + 3] = 255; - } + for (let i = 0, ii = bytes.length; i < ii; i += 4) { + bytes[i] = backgroundColor[0]; + bytes[i + 1] = backgroundColor[1]; + bytes[i + 2] = backgroundColor[2]; + bytes[i + 3] = 255; } - - for (i = 0; i < figures.length; i++) { - drawFigure(data, figures[i], context); - } - - tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE); - canvas = tmpCanvas.canvas; } + for (const figure of this._figures) { + drawFigure(data, figure, context); + } + + tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE); + const canvas = tmpCanvas.canvas; return { - canvas: canvas, + canvas, offsetX: offsetX - BORDER_SIZE * scaleX, offsetY: offsetY - BORDER_SIZE * scaleY, - scaleX: scaleX, - scaleY: scaleY + scaleX, + scaleY }; } - return createMeshCanvas; -}(); + getPattern(ctx, owner, inverse, pathType) { + applyBoundingBox(ctx, this._bbox); + let scale; -ShadingIRs.Mesh = { - fromIR: function Mesh_fromIR(raw) { - var coords = raw[2]; - var colors = raw[3]; - var figures = raw[4]; - var bounds = raw[5]; - var matrix = raw[6]; - var background = raw[8]; - return { - type: 'Pattern', - getPattern: function Mesh_getPattern(ctx, owner, shadingFill) { - var scale; + if (pathType === PathType.SHADING) { + scale = _util.Util.singularValueDecompose2dScale((0, _display_utils.getCurrentTransform)(ctx)); + } else { + scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); - if (shadingFill) { - scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); - } else { - scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); + if (this.matrix) { + const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); - if (matrix) { - var matrixScale = _util.Util.singularValueDecompose2dScale(matrix); - - scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; - } - } - - var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases, owner.webGLContext); - - if (!shadingFill) { - ctx.setTransform.apply(ctx, owner.baseTransform); - - if (matrix) { - ctx.transform.apply(ctx, matrix); - } - } - - ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); - ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY); - return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat'); + scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; } - }; - } -}; -ShadingIRs.Dummy = { - fromIR: function Dummy_fromIR() { - return { - type: 'Pattern', - getPattern: function Dummy_fromIR_getPattern() { - return 'hotpink'; + } + + const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases); + + if (pathType !== PathType.SHADING) { + ctx.setTransform(...owner.baseTransform); + + if (this.matrix) { + ctx.transform(...this.matrix); } - }; - } -}; + } -function getShadingPatternFromIR(raw) { - var shadingIR = ShadingIRs[raw[0]]; - - if (!shadingIR) { - throw new Error("Unknown IR type: ".concat(raw[0])); + ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); + ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY); + return ctx.createPattern(temporaryPatternCanvas.canvas, "no-repeat"); } - return shadingIR.fromIR(raw); } -var TilingPattern = function TilingPatternClosure() { - var PaintType = { - COLORED: 1, - UNCOLORED: 2 - }; - var MAX_PATTERN_SIZE = 3000; +class DummyShadingPattern extends BaseShadingPattern { + getPattern() { + return "hotpink"; + } - function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) { +} + +function getShadingPattern(IR) { + switch (IR[0]) { + case "RadialAxial": + return new RadialAxialShadingPattern(IR); + + case "Mesh": + return new MeshShadingPattern(IR); + + case "Dummy": + return new DummyShadingPattern(); + } + + throw new Error(`Unknown IR type: ${IR[0]}`); +} + +const PaintType = { + COLORED: 1, + UNCOLORED: 2 +}; + +class TilingPattern { + static get MAX_PATTERN_SIZE() { + return (0, _util.shadow)(this, "MAX_PATTERN_SIZE", 3000); + } + + constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) { this.operatorList = IR[2]; this.matrix = IR[3] || [1, 0, 0, 1, 0, 0]; this.bbox = IR[4]; @@ -16529,439 +13198,485 @@ var TilingPattern = function TilingPatternClosure() { this.paintType = IR[7]; this.tilingType = IR[8]; this.color = color; + this.ctx = ctx; this.canvasGraphicsFactory = canvasGraphicsFactory; this.baseTransform = baseTransform; - this.type = 'Pattern'; - this.ctx = ctx; } - TilingPattern.prototype = { - createPatternCanvas: function TilinPattern_createPatternCanvas(owner) { - var operatorList = this.operatorList; - var bbox = this.bbox; - var xstep = this.xstep; - var ystep = this.ystep; - var paintType = this.paintType; - var tilingType = this.tilingType; - var color = this.color; - var canvasGraphicsFactory = this.canvasGraphicsFactory; - (0, _util.info)('TilingType: ' + tilingType); - var x0 = bbox[0], + createPatternCanvas(owner) { + const operatorList = this.operatorList; + const bbox = this.bbox; + const xstep = this.xstep; + const ystep = this.ystep; + const paintType = this.paintType; + const tilingType = this.tilingType; + const color = this.color; + const canvasGraphicsFactory = this.canvasGraphicsFactory; + (0, _util.info)("TilingType: " + tilingType); + const x0 = bbox[0], y0 = bbox[1], x1 = bbox[2], y1 = bbox[3]; - var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); - var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); + const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); - var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; - var dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]); - var dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]); - var tmpCanvas = owner.cachedCanvases.getCanvas('pattern', dimx.size, dimy.size, true); - var tmpCtx = tmpCanvas.context; - var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx); - graphics.groupLevel = owner.groupLevel; - this.setFillAndStrokeStyleToContext(graphics, paintType, color); - graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0); - graphics.transform(1, 0, 0, 1, -x0, -y0); - this.clipBbox(graphics, bbox, x0, y0, x1, y1); - graphics.executeOperatorList(operatorList); - this.ctx.transform(1, 0, 0, 1, x0, y0); - this.ctx.scale(1 / dimx.scale, 1 / dimy.scale); - return tmpCanvas.canvas; - }, - getSizeAndScale: function TilingPattern_getSizeAndScale(step, realOutputSize, scale) { - step = Math.abs(step); - var maxSize = Math.max(MAX_PATTERN_SIZE, realOutputSize); - var size = Math.ceil(step * scale); + const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; + const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]); + const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]); + const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true); + const tmpCtx = tmpCanvas.context; + const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx); + graphics.groupLevel = owner.groupLevel; + this.setFillAndStrokeStyleToContext(graphics, paintType, color); + let adjustedX0 = x0; + let adjustedY0 = y0; + let adjustedX1 = x1; + let adjustedY1 = y1; - if (size >= maxSize) { - size = maxSize; - } else { - scale = size / step; - } + if (x0 < 0) { + adjustedX0 = 0; + adjustedX1 += Math.abs(x0); + } - return { - scale: scale, - size: size - }; - }, - clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) { - if (Array.isArray(bbox) && bbox.length === 4) { - var bboxWidth = x1 - x0; - var bboxHeight = y1 - y0; - graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); - graphics.clip(); - graphics.endPath(); - } - }, - setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(graphics, paintType, color) { - var context = graphics.ctx, + if (y0 < 0) { + adjustedY0 = 0; + adjustedY1 += Math.abs(y0); + } + + tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0)); + graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0); + tmpCtx.save(); + this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1); + graphics.baseTransform = (0, _display_utils.getCurrentTransform)(graphics.ctx); + graphics.executeOperatorList(operatorList); + graphics.endDrawing(); + return { + canvas: tmpCanvas.canvas, + scaleX: dimx.scale, + scaleY: dimy.scale, + offsetX: adjustedX0, + offsetY: adjustedY0 + }; + } + + getSizeAndScale(step, realOutputSize, scale) { + step = Math.abs(step); + const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize); + let size = Math.ceil(step * scale); + + if (size >= maxSize) { + size = maxSize; + } else { + scale = size / step; + } + + return { + scale, + size + }; + } + + clipBbox(graphics, x0, y0, x1, y1) { + const bboxWidth = x1 - x0; + const bboxHeight = y1 - y0; + graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); + graphics.current.updateRectMinMax((0, _display_utils.getCurrentTransform)(graphics.ctx), [x0, y0, x1, y1]); + graphics.clip(); + graphics.endPath(); + } + + setFillAndStrokeStyleToContext(graphics, paintType, color) { + const context = graphics.ctx, current = graphics.current; - switch (paintType) { - case PaintType.COLORED: - var ctx = this.ctx; - context.fillStyle = ctx.fillStyle; - context.strokeStyle = ctx.strokeStyle; - current.fillColor = ctx.fillStyle; - current.strokeColor = ctx.strokeStyle; - break; + switch (paintType) { + case PaintType.COLORED: + const ctx = this.ctx; + context.fillStyle = ctx.fillStyle; + context.strokeStyle = ctx.strokeStyle; + current.fillColor = ctx.fillStyle; + current.strokeColor = ctx.strokeStyle; + break; - case PaintType.UNCOLORED: - var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]); + case PaintType.UNCOLORED: + const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]); - context.fillStyle = cssColor; - context.strokeStyle = cssColor; - current.fillColor = cssColor; - current.strokeColor = cssColor; - break; + context.fillStyle = cssColor; + context.strokeStyle = cssColor; + current.fillColor = cssColor; + current.strokeColor = cssColor; + break; - default: - throw new _util.FormatError("Unsupported paint type: ".concat(paintType)); - } - }, - getPattern: function TilingPattern_getPattern(ctx, owner) { - ctx = this.ctx; - ctx.setTransform.apply(ctx, this.baseTransform); - ctx.transform.apply(ctx, this.matrix); - var temporaryPatternCanvas = this.createPatternCanvas(owner); - return ctx.createPattern(temporaryPatternCanvas, 'repeat'); + default: + throw new _util.FormatError(`Unsupported paint type: ${paintType}`); } - }; - return TilingPattern; -}(); + } + + getPattern(ctx, owner, inverse, pathType) { + let matrix = inverse; + + if (pathType !== PathType.SHADING) { + matrix = _util.Util.transform(matrix, owner.baseTransform); + + if (this.matrix) { + matrix = _util.Util.transform(matrix, this.matrix); + } + } + + const temporaryPatternCanvas = this.createPatternCanvas(owner); + let domMatrix = new DOMMatrix(matrix); + domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); + domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY); + const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, "repeat"); + + try { + pattern.setTransform(domMatrix); + } catch (ex) { + (0, _util.warn)(`TilingPattern.getPattern: "${ex === null || ex === void 0 ? void 0 : ex.message}".`); + } + + return pattern; + } + +} exports.TilingPattern = TilingPattern; /***/ }), -/* 156 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 139 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.GlobalWorkerOptions = void 0; -var GlobalWorkerOptions = Object.create(null); -exports.GlobalWorkerOptions = GlobalWorkerOptions; -GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort; -GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? '' : GlobalWorkerOptions.workerSrc; - -/***/ }), -/* 157 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.MessageHandler = MessageHandler; - -var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148)); +})); +exports.applyMaskImageData = applyMaskImageData; var _util = __w_pdfjs_require__(1); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +function applyMaskImageData(_ref) { + let { + src, + srcPos = 0, + dest, + destPos = 0, + width, + height, + inverseDecode = false + } = _ref; + const opaque = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque]; + const widthInSource = width >> 3; + const widthRemainder = width & 7; + const srcLength = src.length; + dest = new Uint32Array(dest.buffer); -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + for (let i = 0; i < height; i++) { + for (const max = srcPos + widthInSource; srcPos < max; srcPos++) { + const elem = srcPos < srcLength ? src[srcPos] : 255; + dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping; + } -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + if (widthRemainder === 0) { + continue; + } -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + const elem = srcPos < srcLength ? src[srcPos++] : 255; -function resolveCall(_x, _x2) { - return _resolveCall.apply(this, arguments); + for (let j = 0; j < widthRemainder; j++) { + dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping; + } + } + + return { + srcPos, + destPos + }; } -function _resolveCall() { - _resolveCall = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee(fn, args) { - var thisArg, - _args = arguments; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - thisArg = _args.length > 2 && _args[2] !== undefined ? _args[2] : null; +/***/ }), +/* 140 */ +/***/ ((__unused_webpack_module, exports) => { - if (fn) { - _context.next = 3; - break; - } +"use strict"; - return _context.abrupt("return", undefined); - case 3: - return _context.abrupt("return", fn.apply(thisArg, args)); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GlobalWorkerOptions = void 0; +const GlobalWorkerOptions = Object.create(null); +exports.GlobalWorkerOptions = GlobalWorkerOptions; +GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort; +GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? "" : GlobalWorkerOptions.workerSrc; - case 4: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - return _resolveCall.apply(this, arguments); -} +/***/ }), +/* 141 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MessageHandler = void 0; + +var _util = __w_pdfjs_require__(1); + +const CallbackKind = { + UNKNOWN: 0, + DATA: 1, + ERROR: 2 +}; +const StreamKind = { + UNKNOWN: 0, + CANCEL: 1, + CANCEL_COMPLETE: 2, + CLOSE: 3, + ENQUEUE: 4, + ERROR: 5, + PULL: 6, + PULL_COMPLETE: 7, + START_COMPLETE: 8 +}; function wrapReason(reason) { - if (_typeof(reason) !== 'object') { - return reason; + if (!(reason instanceof Error || typeof reason === "object" && reason !== null)) { + (0, _util.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.'); } switch (reason.name) { - case 'AbortException': + case "AbortException": return new _util.AbortException(reason.message); - case 'MissingPDFException': + case "MissingPDFException": return new _util.MissingPDFException(reason.message); - case 'UnexpectedResponseException': + case "PasswordException": + return new _util.PasswordException(reason.message, reason.code); + + case "UnexpectedResponseException": return new _util.UnexpectedResponseException(reason.message, reason.status); - default: + case "UnknownErrorException": return new _util.UnknownErrorException(reason.message, reason.details); + + default: + return new _util.UnknownErrorException(reason.message, reason.toString()); } } -function makeReasonSerializable(reason) { - if (!(reason instanceof Error) || reason instanceof _util.AbortException || reason instanceof _util.MissingPDFException || reason instanceof _util.UnexpectedResponseException || reason instanceof _util.UnknownErrorException) { - return reason; - } +class MessageHandler { + constructor(sourceName, targetName, comObj) { + this.sourceName = sourceName; + this.targetName = targetName; + this.comObj = comObj; + this.callbackId = 1; + this.streamId = 1; + this.streamSinks = Object.create(null); + this.streamControllers = Object.create(null); + this.callbackCapabilities = Object.create(null); + this.actionHandler = Object.create(null); - return new _util.UnknownErrorException(reason.message, reason.toString()); -} + this._onComObjOnMessage = event => { + const data = event.data; -function resolveOrReject(capability, success, reason) { - if (success) { - capability.resolve(); - } else { - capability.reject(reason); - } -} - -function finalize(promise) { - return Promise.resolve(promise)["catch"](function () {}); -} - -function MessageHandler(sourceName, targetName, comObj) { - var _this = this; - - this.sourceName = sourceName; - this.targetName = targetName; - this.comObj = comObj; - this.callbackId = 1; - this.streamId = 1; - this.postMessageTransfers = true; - this.streamSinks = Object.create(null); - this.streamControllers = Object.create(null); - var callbacksCapabilities = this.callbacksCapabilities = Object.create(null); - var ah = this.actionHandler = Object.create(null); - - this._onComObjOnMessage = function (event) { - var data = event.data; - - if (data.targetName !== _this.sourceName) { - return; - } - - if (data.stream) { - _this._processStreamMessage(data); - } else if (data.isReply) { - var callbackId = data.callbackId; - - if (data.callbackId in callbacksCapabilities) { - var callback = callbacksCapabilities[callbackId]; - delete callbacksCapabilities[callbackId]; - - if ('error' in data) { - callback.reject(wrapReason(data.error)); - } else { - callback.resolve(data.data); - } - } else { - throw new Error("Cannot resolve callback ".concat(callbackId)); + if (data.targetName !== this.sourceName) { + return; + } + + if (data.stream) { + this._processStreamMessage(data); + + return; + } + + if (data.callback) { + const callbackId = data.callbackId; + const capability = this.callbackCapabilities[callbackId]; + + if (!capability) { + throw new Error(`Cannot resolve callback ${callbackId}`); + } + + delete this.callbackCapabilities[callbackId]; + + if (data.callback === CallbackKind.DATA) { + capability.resolve(data.data); + } else if (data.callback === CallbackKind.ERROR) { + capability.reject(wrapReason(data.reason)); + } else { + throw new Error("Unexpected callback case"); + } + + return; + } + + const action = this.actionHandler[data.action]; + + if (!action) { + throw new Error(`Unknown action from worker: ${data.action}`); } - } else if (data.action in ah) { - var action = ah[data.action]; if (data.callbackId) { - var _sourceName = _this.sourceName; - var _targetName = data.sourceName; - Promise.resolve().then(function () { - return action[0].call(action[1], data.data); + const cbSourceName = this.sourceName; + const cbTargetName = data.sourceName; + new Promise(function (resolve) { + resolve(action(data.data)); }).then(function (result) { comObj.postMessage({ - sourceName: _sourceName, - targetName: _targetName, - isReply: true, + sourceName: cbSourceName, + targetName: cbTargetName, + callback: CallbackKind.DATA, callbackId: data.callbackId, data: result }); }, function (reason) { comObj.postMessage({ - sourceName: _sourceName, - targetName: _targetName, - isReply: true, + sourceName: cbSourceName, + targetName: cbTargetName, + callback: CallbackKind.ERROR, callbackId: data.callbackId, - error: makeReasonSerializable(reason) + reason: wrapReason(reason) }); }); - } else if (data.streamId) { - _this._createStreamSink(data); - } else { - action[0].call(action[1], data.data); + return; } - } else { - throw new Error("Unknown action from worker: ".concat(data.action)); - } - }; - comObj.addEventListener('message', this._onComObjOnMessage); -} + if (data.streamId) { + this._createStreamSink(data); -MessageHandler.prototype = { - on: function on(actionName, handler, scope) { - var ah = this.actionHandler; + return; + } + + action(data.data); + }; + + comObj.addEventListener("message", this._onComObjOnMessage); + } + + on(actionName, handler) { + const ah = this.actionHandler; if (ah[actionName]) { - throw new Error("There is already an actionName called \"".concat(actionName, "\"")); + throw new Error(`There is already an actionName called "${actionName}"`); } - ah[actionName] = [handler, scope]; - }, - send: function send(actionName, data, transfers) { - var message = { + ah[actionName] = handler; + } + + send(actionName, data, transfers) { + this.comObj.postMessage({ sourceName: this.sourceName, targetName: this.targetName, action: actionName, - data: data - }; - this.postMessage(message, transfers); - }, - sendWithPromise: function sendWithPromise(actionName, data, transfers) { - var callbackId = this.callbackId++; - var message = { - sourceName: this.sourceName, - targetName: this.targetName, - action: actionName, - data: data, - callbackId: callbackId - }; - var capability = (0, _util.createPromiseCapability)(); - this.callbacksCapabilities[callbackId] = capability; + data + }, transfers); + } + + sendWithPromise(actionName, data, transfers) { + const callbackId = this.callbackId++; + const capability = (0, _util.createPromiseCapability)(); + this.callbackCapabilities[callbackId] = capability; try { - this.postMessage(message, transfers); - } catch (e) { - capability.reject(e); + this.comObj.postMessage({ + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + callbackId, + data + }, transfers); + } catch (ex) { + capability.reject(ex); } return capability.promise; - }, - sendWithStream: function sendWithStream(actionName, data, queueingStrategy, transfers) { - var _this2 = this; + } - var streamId = this.streamId++; - var sourceName = this.sourceName; - var targetName = this.targetName; - return new _util.ReadableStream({ - start: function start(controller) { - var startCapability = (0, _util.createPromiseCapability)(); - _this2.streamControllers[streamId] = { - controller: controller, + sendWithStream(actionName, data, queueingStrategy, transfers) { + const streamId = this.streamId++, + sourceName = this.sourceName, + targetName = this.targetName, + comObj = this.comObj; + return new ReadableStream({ + start: controller => { + const startCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId] = { + controller, startCall: startCapability, + pullCall: null, + cancelCall: null, isClosed: false }; - - _this2.postMessage({ - sourceName: sourceName, - targetName: targetName, + comObj.postMessage({ + sourceName, + targetName, action: actionName, - streamId: streamId, - data: data, + streamId, + data, desiredSize: controller.desiredSize - }); - + }, transfers); return startCapability.promise; }, - pull: function pull(controller) { - var pullCapability = (0, _util.createPromiseCapability)(); - _this2.streamControllers[streamId].pullCall = pullCapability; - - _this2.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: 'pull', - streamId: streamId, + pull: controller => { + const pullCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId].pullCall = pullCapability; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL, + streamId, desiredSize: controller.desiredSize }); - return pullCapability.promise; }, - cancel: function cancel(reason) { - var cancelCapability = (0, _util.createPromiseCapability)(); - _this2.streamControllers[streamId].cancelCall = cancelCapability; - _this2.streamControllers[streamId].isClosed = true; - - _this2.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: 'cancel', - reason: reason, - streamId: streamId + cancel: reason => { + (0, _util.assert)(reason instanceof Error, "cancel must have a valid reason"); + const cancelCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId].cancelCall = cancelCapability; + this.streamControllers[streamId].isClosed = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL, + streamId, + reason: wrapReason(reason) }); - return cancelCapability.promise; } }, queueingStrategy); - }, - _createStreamSink: function _createStreamSink(data) { - var _this3 = this; + } - var self = this; - var action = this.actionHandler[data.action]; - var streamId = data.streamId; - var desiredSize = data.desiredSize; - var sourceName = this.sourceName; - var targetName = data.sourceName; - var capability = (0, _util.createPromiseCapability)(); - - var sendStreamRequest = function sendStreamRequest(_ref) { - var stream = _ref.stream, - chunk = _ref.chunk, - transfers = _ref.transfers, - success = _ref.success, - reason = _ref.reason; - - _this3.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: stream, - streamId: streamId, - chunk: chunk, - success: success, - reason: reason - }, transfers); - }; - - var streamSink = { - enqueue: function enqueue(chunk) { - var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; - var transfers = arguments.length > 2 ? arguments[2] : undefined; + _createStreamSink(data) { + const streamId = data.streamId, + sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + const self = this, + action = this.actionHandler[data.action]; + const streamSink = { + enqueue(chunk) { + let size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; + let transfers = arguments.length > 2 ? arguments[2] : undefined; if (this.isCancelled) { return; } - var lastDesiredSize = this.desiredSize; + const lastDesiredSize = this.desiredSize; this.desiredSize -= size; if (lastDesiredSize > 0 && this.desiredSize <= 0) { @@ -16969,909 +13684,652 @@ MessageHandler.prototype = { this.ready = this.sinkCapability.promise; } - sendStreamRequest({ - stream: 'enqueue', - chunk: chunk, - transfers: transfers - }); + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ENQUEUE, + streamId, + chunk + }, transfers); }, - close: function close() { + + close() { if (this.isCancelled) { return; } this.isCancelled = true; - sendStreamRequest({ - stream: 'close' + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CLOSE, + streamId }); delete self.streamSinks[streamId]; }, - error: function error(reason) { + + error(reason) { + (0, _util.assert)(reason instanceof Error, "error must have a valid reason"); + if (this.isCancelled) { return; } this.isCancelled = true; - sendStreamRequest({ - stream: 'error', - reason: reason + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ERROR, + streamId, + reason: wrapReason(reason) }); }, - sinkCapability: capability, + + sinkCapability: (0, _util.createPromiseCapability)(), onPull: null, onCancel: null, isCancelled: false, - desiredSize: desiredSize, + desiredSize: data.desiredSize, ready: null }; streamSink.sinkCapability.resolve(); streamSink.ready = streamSink.sinkCapability.promise; this.streamSinks[streamId] = streamSink; - resolveCall(action[0], [data.data, streamSink], action[1]).then(function () { - sendStreamRequest({ - stream: 'start_complete', + new Promise(function (resolve) { + resolve(action(data.data, streamSink)); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, success: true }); }, function (reason) { - sendStreamRequest({ - stream: 'start_complete', - success: false, - reason: reason + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, + reason: wrapReason(reason) }); }); - }, - _processStreamMessage: function _processStreamMessage(data) { - var _this4 = this; + } - var sourceName = this.sourceName; - var targetName = data.sourceName; - var streamId = data.streamId; - - var sendStreamResponse = function sendStreamResponse(_ref2) { - var stream = _ref2.stream, - success = _ref2.success, - reason = _ref2.reason; - - _this4.comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: stream, - success: success, - streamId: streamId, - reason: reason - }); - }; - - var deleteStreamController = function deleteStreamController() { - Promise.all([_this4.streamControllers[data.streamId].startCall, _this4.streamControllers[data.streamId].pullCall, _this4.streamControllers[data.streamId].cancelCall].map(function (capability) { - return capability && finalize(capability.promise); - })).then(function () { - delete _this4.streamControllers[data.streamId]; - }); - }; + _processStreamMessage(data) { + const streamId = data.streamId, + sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + const streamController = this.streamControllers[streamId], + streamSink = this.streamSinks[streamId]; switch (data.stream) { - case 'start_complete': - resolveOrReject(this.streamControllers[data.streamId].startCall, data.success, wrapReason(data.reason)); + case StreamKind.START_COMPLETE: + if (data.success) { + streamController.startCall.resolve(); + } else { + streamController.startCall.reject(wrapReason(data.reason)); + } + break; - case 'pull_complete': - resolveOrReject(this.streamControllers[data.streamId].pullCall, data.success, wrapReason(data.reason)); + case StreamKind.PULL_COMPLETE: + if (data.success) { + streamController.pullCall.resolve(); + } else { + streamController.pullCall.reject(wrapReason(data.reason)); + } + break; - case 'pull': - if (!this.streamSinks[data.streamId]) { - sendStreamResponse({ - stream: 'pull_complete', + case StreamKind.PULL: + if (!streamSink) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, success: true }); break; } - if (this.streamSinks[data.streamId].desiredSize <= 0 && data.desiredSize > 0) { - this.streamSinks[data.streamId].sinkCapability.resolve(); + if (streamSink.desiredSize <= 0 && data.desiredSize > 0) { + streamSink.sinkCapability.resolve(); } - this.streamSinks[data.streamId].desiredSize = data.desiredSize; - resolveCall(this.streamSinks[data.streamId].onPull).then(function () { - sendStreamResponse({ - stream: 'pull_complete', + streamSink.desiredSize = data.desiredSize; + new Promise(function (resolve) { + resolve(streamSink.onPull && streamSink.onPull()); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, success: true }); }, function (reason) { - sendStreamResponse({ - stream: 'pull_complete', - success: false, - reason: reason + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + reason: wrapReason(reason) }); }); break; - case 'enqueue': - (0, _util.assert)(this.streamControllers[data.streamId], 'enqueue should have stream controller'); + case StreamKind.ENQUEUE: + (0, _util.assert)(streamController, "enqueue should have stream controller"); - if (!this.streamControllers[data.streamId].isClosed) { - this.streamControllers[data.streamId].controller.enqueue(data.chunk); - } - - break; - - case 'close': - (0, _util.assert)(this.streamControllers[data.streamId], 'close should have stream controller'); - - if (this.streamControllers[data.streamId].isClosed) { + if (streamController.isClosed) { break; } - this.streamControllers[data.streamId].isClosed = true; - this.streamControllers[data.streamId].controller.close(); - deleteStreamController(); + streamController.controller.enqueue(data.chunk); break; - case 'error': - (0, _util.assert)(this.streamControllers[data.streamId], 'error should have stream controller'); - this.streamControllers[data.streamId].controller.error(wrapReason(data.reason)); - deleteStreamController(); - break; + case StreamKind.CLOSE: + (0, _util.assert)(streamController, "close should have stream controller"); - case 'cancel_complete': - resolveOrReject(this.streamControllers[data.streamId].cancelCall, data.success, wrapReason(data.reason)); - deleteStreamController(); - break; - - case 'cancel': - if (!this.streamSinks[data.streamId]) { + if (streamController.isClosed) { break; } - resolveCall(this.streamSinks[data.streamId].onCancel, [wrapReason(data.reason)]).then(function () { - sendStreamResponse({ - stream: 'cancel_complete', + streamController.isClosed = true; + streamController.controller.close(); + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.ERROR: + (0, _util.assert)(streamController, "error should have stream controller"); + streamController.controller.error(wrapReason(data.reason)); + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.CANCEL_COMPLETE: + if (data.success) { + streamController.cancelCall.resolve(); + } else { + streamController.cancelCall.reject(wrapReason(data.reason)); + } + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.CANCEL: + if (!streamSink) { + break; + } + + new Promise(function (resolve) { + resolve(streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, success: true }); }, function (reason) { - sendStreamResponse({ - stream: 'cancel_complete', - success: false, - reason: reason + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, + reason: wrapReason(reason) }); }); - this.streamSinks[data.streamId].sinkCapability.reject(wrapReason(data.reason)); - this.streamSinks[data.streamId].isCancelled = true; - delete this.streamSinks[data.streamId]; + streamSink.sinkCapability.reject(wrapReason(data.reason)); + streamSink.isCancelled = true; + delete this.streamSinks[streamId]; break; default: - throw new Error('Unexpected stream case'); + throw new Error("Unexpected stream case"); } - }, - postMessage: function postMessage(message, transfers) { - if (transfers && this.postMessageTransfers) { - this.comObj.postMessage(message, transfers); - } else { - this.comObj.postMessage(message); - } - }, - destroy: function destroy() { - this.comObj.removeEventListener('message', this._onComObjOnMessage); } -}; + + async _deleteStreamController(streamController, streamId) { + await Promise.allSettled([streamController.startCall && streamController.startCall.promise, streamController.pullCall && streamController.pullCall.promise, streamController.cancelCall && streamController.cancelCall.promise]); + delete this.streamControllers[streamId]; + } + + destroy() { + this.comObj.removeEventListener("message", this._onComObjOnMessage); + } + +} + +exports.MessageHandler = MessageHandler; /***/ }), -/* 158 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 142 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.Metadata = void 0; var _util = __w_pdfjs_require__(1); -var _xml_parser = __w_pdfjs_require__(159); +function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } +function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); } -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; } -var Metadata = -/*#__PURE__*/ -function () { - function Metadata(data) { - _classCallCheck(this, Metadata); +function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; } - (0, _util.assert)(typeof data === 'string', 'Metadata: input is not a string'); - data = this._repair(data); - var parser = new _xml_parser.SimpleXMLParser(); - var xmlDocument = parser.parseFromString(data); - this._metadata = Object.create(null); +function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); } - if (xmlDocument) { - this._parse(xmlDocument); - } +function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } } + +var _metadataMap = /*#__PURE__*/new WeakMap(); + +var _data = /*#__PURE__*/new WeakMap(); + +class Metadata { + constructor(_ref) { + let { + parsedData, + rawData + } = _ref; + + _classPrivateFieldInitSpec(this, _metadataMap, { + writable: true, + value: void 0 + }); + + _classPrivateFieldInitSpec(this, _data, { + writable: true, + value: void 0 + }); + + _classPrivateFieldSet(this, _metadataMap, parsedData); + + _classPrivateFieldSet(this, _data, rawData); } - _createClass(Metadata, [{ - key: "_repair", - value: function _repair(data) { - return data.replace(/^([^<]+)/, '').replace(/>\\376\\377([^<]+)/g, function (all, codes) { - var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) { - return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1); - }).replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) { - switch (name) { - case 'amp': - return '&'; + getRaw() { + return _classPrivateFieldGet(this, _data); + } - case 'apos': - return '\''; + get(name) { + var _classPrivateFieldGet2; - case 'gt': - return '>'; + return (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _metadataMap).get(name)) !== null && _classPrivateFieldGet2 !== void 0 ? _classPrivateFieldGet2 : null; + } - case 'lt': - return '<'; + getAll() { + return (0, _util.objectFromMap)(_classPrivateFieldGet(this, _metadataMap)); + } - case 'quot': - return '\"'; - } + has(name) { + return _classPrivateFieldGet(this, _metadataMap).has(name); + } - throw new Error("_repair: ".concat(name, " isn't defined.")); - }); - var chars = ''; - - for (var i = 0, ii = bytes.length; i < ii; i += 2) { - var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1); - - if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) { - chars += String.fromCharCode(code); - } else { - chars += '&#x' + (0x10000 + code).toString(16).substring(1) + ';'; - } - } - - return '>' + chars; - }); - } - }, { - key: "_parse", - value: function _parse(xmlDocument) { - var rdf = xmlDocument.documentElement; - - if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') { - rdf = rdf.firstChild; - - while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') { - rdf = rdf.nextSibling; - } - } - - var nodeName = rdf ? rdf.nodeName.toLowerCase() : null; - - if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) { - return; - } - - var children = rdf.childNodes; - - for (var i = 0, ii = children.length; i < ii; i++) { - var desc = children[i]; - - if (desc.nodeName.toLowerCase() !== 'rdf:description') { - continue; - } - - for (var j = 0, jj = desc.childNodes.length; j < jj; j++) { - if (desc.childNodes[j].nodeName.toLowerCase() !== '#text') { - var entry = desc.childNodes[j]; - var name = entry.nodeName.toLowerCase(); - this._metadata[name] = entry.textContent.trim(); - } - } - } - } - }, { - key: "get", - value: function get(name) { - var data = this._metadata[name]; - return typeof data !== 'undefined' ? data : null; - } - }, { - key: "getAll", - value: function getAll() { - return this._metadata; - } - }, { - key: "has", - value: function has(name) { - return typeof this._metadata[name] !== 'undefined'; - } - }]); - - return Metadata; -}(); +} exports.Metadata = Metadata; /***/ }), -/* 159 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 143 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.SimpleXMLParser = void 0; - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } - -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } - -function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var XMLParserErrorCode = { - NoError: 0, - EndOfDocument: -1, - UnterminatedCdat: -2, - UnterminatedXmlDeclaration: -3, - UnterminatedDoctypeDeclaration: -4, - UnterminatedComment: -5, - MalformedElement: -6, - OutOfMemory: -7, - UnterminatedAttributeValue: -8, - UnterminatedElement: -9, - ElementNeverBegun: -10 -}; - -function isWhitespace(s, index) { - var ch = s[index]; - return ch === ' ' || ch === '\n' || ch === '\r' || ch === '\t'; -} - -function isWhitespaceString(s) { - for (var i = 0, ii = s.length; i < ii; i++) { - if (!isWhitespace(s, i)) { - return false; - } - } - - return true; -} - -var XMLParserBase = -/*#__PURE__*/ -function () { - function XMLParserBase() { - _classCallCheck(this, XMLParserBase); - } - - _createClass(XMLParserBase, [{ - key: "_resolveEntities", - value: function _resolveEntities(s) { - var _this = this; - - return s.replace(/&([^;]+);/g, function (all, entity) { - if (entity.substring(0, 2) === '#x') { - return String.fromCharCode(parseInt(entity.substring(2), 16)); - } else if (entity.substring(0, 1) === '#') { - return String.fromCharCode(parseInt(entity.substring(1), 10)); - } - - switch (entity) { - case 'lt': - return '<'; - - case 'gt': - return '>'; - - case 'amp': - return '&'; - - case 'quot': - return '\"'; - } - - return _this.onResolveEntity(entity); - }); - } - }, { - key: "_parseContent", - value: function _parseContent(s, start) { - var pos = start, - name, - attributes = []; - - function skipWs() { - while (pos < s.length && isWhitespace(s, pos)) { - ++pos; - } - } - - while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '>' && s[pos] !== '/') { - ++pos; - } - - name = s.substring(start, pos); - skipWs(); - - while (pos < s.length && s[pos] !== '>' && s[pos] !== '/' && s[pos] !== '?') { - skipWs(); - var attrName = '', - attrValue = ''; - - while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '=') { - attrName += s[pos]; - ++pos; - } - - skipWs(); - - if (s[pos] !== '=') { - return null; - } - - ++pos; - skipWs(); - var attrEndChar = s[pos]; - - if (attrEndChar !== '\"' && attrEndChar !== '\'') { - return null; - } - - var attrEndIndex = s.indexOf(attrEndChar, ++pos); - - if (attrEndIndex < 0) { - return null; - } - - attrValue = s.substring(pos, attrEndIndex); - attributes.push({ - name: attrName, - value: this._resolveEntities(attrValue) - }); - pos = attrEndIndex + 1; - skipWs(); - } - - return { - name: name, - attributes: attributes, - parsed: pos - start - }; - } - }, { - key: "_parseProcessingInstruction", - value: function _parseProcessingInstruction(s, start) { - var pos = start, - name, - value; - - function skipWs() { - while (pos < s.length && isWhitespace(s, pos)) { - ++pos; - } - } - - while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '>' && s[pos] !== '/') { - ++pos; - } - - name = s.substring(start, pos); - skipWs(); - var attrStart = pos; - - while (pos < s.length && (s[pos] !== '?' || s[pos + 1] !== '>')) { - ++pos; - } - - value = s.substring(attrStart, pos); - return { - name: name, - value: value, - parsed: pos - start - }; - } - }, { - key: "parseXml", - value: function parseXml(s) { - var i = 0; - - while (i < s.length) { - var ch = s[i]; - var j = i; - - if (ch === '<') { - ++j; - var ch2 = s[j]; - var q = void 0; - - switch (ch2) { - case '/': - ++j; - q = s.indexOf('>', j); - - if (q < 0) { - this.onError(XMLParserErrorCode.UnterminatedElement); - return; - } - - this.onEndElement(s.substring(j, q)); - j = q + 1; - break; - - case '?': - ++j; - - var pi = this._parseProcessingInstruction(s, j); - - if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== '?>') { - this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration); - return; - } - - this.onPi(pi.name, pi.value); - j += pi.parsed + 2; - break; - - case '!': - if (s.substring(j + 1, j + 3) === '--') { - q = s.indexOf('-->', j + 3); - - if (q < 0) { - this.onError(XMLParserErrorCode.UnterminatedComment); - return; - } - - this.onComment(s.substring(j + 3, q)); - j = q + 3; - } else if (s.substring(j + 1, j + 8) === '[CDATA[') { - q = s.indexOf(']]>', j + 8); - - if (q < 0) { - this.onError(XMLParserErrorCode.UnterminatedCdat); - return; - } - - this.onCdata(s.substring(j + 8, q)); - j = q + 3; - } else if (s.substring(j + 1, j + 8) === 'DOCTYPE') { - var q2 = s.indexOf('[', j + 8); - var complexDoctype = false; - q = s.indexOf('>', j + 8); - - if (q < 0) { - this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration); - return; - } - - if (q2 > 0 && q > q2) { - q = s.indexOf(']>', j + 8); - - if (q < 0) { - this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration); - return; - } - - complexDoctype = true; - } - - var doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0)); - this.onDoctype(doctypeContent); - j = q + (complexDoctype ? 2 : 1); - } else { - this.onError(XMLParserErrorCode.MalformedElement); - return; - } - - break; - - default: - var content = this._parseContent(s, j); - - if (content === null) { - this.onError(XMLParserErrorCode.MalformedElement); - return; - } - - var isClosed = false; - - if (s.substring(j + content.parsed, j + content.parsed + 2) === '/>') { - isClosed = true; - } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== '>') { - this.onError(XMLParserErrorCode.UnterminatedElement); - return; - } - - this.onBeginElement(content.name, content.attributes, isClosed); - j += content.parsed + (isClosed ? 2 : 1); - break; - } - } else { - while (j < s.length && s[j] !== '<') { - j++; - } - - var text = s.substring(i, j); - this.onText(this._resolveEntities(text)); - } - - i = j; - } - } - }, { - key: "onResolveEntity", - value: function onResolveEntity(name) { - return "&".concat(name, ";"); - } - }, { - key: "onPi", - value: function onPi(name, value) {} - }, { - key: "onComment", - value: function onComment(text) {} - }, { - key: "onCdata", - value: function onCdata(text) {} - }, { - key: "onDoctype", - value: function onDoctype(doctypeContent) {} - }, { - key: "onText", - value: function onText(text) {} - }, { - key: "onBeginElement", - value: function onBeginElement(name, attributes, isEmpty) {} - }, { - key: "onEndElement", - value: function onEndElement(name) {} - }, { - key: "onError", - value: function onError(code) {} - }]); - - return XMLParserBase; -}(); - -var SimpleDOMNode = -/*#__PURE__*/ -function () { - function SimpleDOMNode(nodeName, nodeValue) { - _classCallCheck(this, SimpleDOMNode); - - this.nodeName = nodeName; - this.nodeValue = nodeValue; - Object.defineProperty(this, 'parentNode', { - value: null, - writable: true - }); - } - - _createClass(SimpleDOMNode, [{ - key: "hasChildNodes", - value: function hasChildNodes() { - return this.childNodes && this.childNodes.length > 0; - } - }, { - key: "firstChild", - get: function get() { - return this.childNodes && this.childNodes[0]; - } - }, { - key: "nextSibling", - get: function get() { - var childNodes = this.parentNode.childNodes; - - if (!childNodes) { - return undefined; - } - - var index = childNodes.indexOf(this); - - if (index === -1) { - return undefined; - } - - return childNodes[index + 1]; - } - }, { - key: "textContent", - get: function get() { - if (!this.childNodes) { - return this.nodeValue || ''; - } - - return this.childNodes.map(function (child) { - return child.textContent; - }).join(''); - } - }]); - - return SimpleDOMNode; -}(); - -var SimpleXMLParser = -/*#__PURE__*/ -function (_XMLParserBase) { - _inherits(SimpleXMLParser, _XMLParserBase); - - function SimpleXMLParser() { - var _this2; - - _classCallCheck(this, SimpleXMLParser); - - _this2 = _possibleConstructorReturn(this, _getPrototypeOf(SimpleXMLParser).call(this)); - _this2._currentFragment = null; - _this2._stack = null; - _this2._errorCode = XMLParserErrorCode.NoError; - return _this2; - } - - _createClass(SimpleXMLParser, [{ - key: "parseFromString", - value: function parseFromString(data) { - this._currentFragment = []; - this._stack = []; - this._errorCode = XMLParserErrorCode.NoError; - this.parseXml(data); - - if (this._errorCode !== XMLParserErrorCode.NoError) { - return undefined; - } - - var _this$_currentFragmen = _slicedToArray(this._currentFragment, 1), - documentElement = _this$_currentFragmen[0]; - - if (!documentElement) { - return undefined; - } - - return { - documentElement: documentElement - }; - } - }, { - key: "onResolveEntity", - value: function onResolveEntity(name) { - switch (name) { - case 'apos': - return '\''; - } - - return _get(_getPrototypeOf(SimpleXMLParser.prototype), "onResolveEntity", this).call(this, name); - } - }, { - key: "onText", - value: function onText(text) { - if (isWhitespaceString(text)) { - return; - } - - var node = new SimpleDOMNode('#text', text); - - this._currentFragment.push(node); - } - }, { - key: "onCdata", - value: function onCdata(text) { - var node = new SimpleDOMNode('#text', text); - - this._currentFragment.push(node); - } - }, { - key: "onBeginElement", - value: function onBeginElement(name, attributes, isEmpty) { - var node = new SimpleDOMNode(name); - node.childNodes = []; - - this._currentFragment.push(node); - - if (isEmpty) { - return; - } - - this._stack.push(this._currentFragment); - - this._currentFragment = node.childNodes; - } - }, { - key: "onEndElement", - value: function onEndElement(name) { - this._currentFragment = this._stack.pop() || []; - var lastElement = this._currentFragment[this._currentFragment.length - 1]; - - if (!lastElement) { - return; - } - - for (var i = 0, ii = lastElement.childNodes.length; i < ii; i++) { - lastElement.childNodes[i].parentNode = lastElement; - } - } - }, { - key: "onError", - value: function onError(code) { - this._errorCode = code; - } - }]); - - return SimpleXMLParser; -}(XMLParserBase); - -exports.SimpleXMLParser = SimpleXMLParser; - -/***/ }), -/* 160 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFDataTransportStream = void 0; - -var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148)); +})); +exports.OptionalContentConfig = void 0; var _util = __w_pdfjs_require__(1); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); } -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } +function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; } -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } +function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } +function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; } -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } } -var PDFDataTransportStream = -/*#__PURE__*/ -function () { - function PDFDataTransportStream(params, pdfDataRangeTransport) { - var _this = this; +function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); } - _classCallCheck(this, PDFDataTransportStream); +function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); } - (0, _util.assert)(pdfDataRangeTransport); +function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; } + +const INTERNAL = Symbol("INTERNAL"); + +var _visible = /*#__PURE__*/new WeakMap(); + +class OptionalContentGroup { + constructor(name, intent) { + _classPrivateFieldInitSpec(this, _visible, { + writable: true, + value: true + }); + + this.name = name; + this.intent = intent; + } + + get visible() { + return _classPrivateFieldGet(this, _visible); + } + + _setVisible(internal, visible) { + if (internal !== INTERNAL) { + (0, _util.unreachable)("Internal method `_setVisible` called."); + } + + _classPrivateFieldSet(this, _visible, visible); + } + +} + +var _cachedHasInitialVisibility = /*#__PURE__*/new WeakMap(); + +var _groups = /*#__PURE__*/new WeakMap(); + +var _initialVisibility = /*#__PURE__*/new WeakMap(); + +var _order = /*#__PURE__*/new WeakMap(); + +var _evaluateVisibilityExpression = /*#__PURE__*/new WeakSet(); + +class OptionalContentConfig { + constructor(data) { + _classPrivateMethodInitSpec(this, _evaluateVisibilityExpression); + + _classPrivateFieldInitSpec(this, _cachedHasInitialVisibility, { + writable: true, + value: true + }); + + _classPrivateFieldInitSpec(this, _groups, { + writable: true, + value: new Map() + }); + + _classPrivateFieldInitSpec(this, _initialVisibility, { + writable: true, + value: null + }); + + _classPrivateFieldInitSpec(this, _order, { + writable: true, + value: null + }); + + this.name = null; + this.creator = null; + + if (data === null) { + return; + } + + this.name = data.name; + this.creator = data.creator; + + _classPrivateFieldSet(this, _order, data.order); + + for (const group of data.groups) { + _classPrivateFieldGet(this, _groups).set(group.id, new OptionalContentGroup(group.name, group.intent)); + } + + if (data.baseState === "OFF") { + for (const group of _classPrivateFieldGet(this, _groups).values()) { + group._setVisible(INTERNAL, false); + } + } + + for (const on of data.on) { + _classPrivateFieldGet(this, _groups).get(on)._setVisible(INTERNAL, true); + } + + for (const off of data.off) { + _classPrivateFieldGet(this, _groups).get(off)._setVisible(INTERNAL, false); + } + + _classPrivateFieldSet(this, _initialVisibility, new Map()); + + for (const [id, group] of _classPrivateFieldGet(this, _groups)) { + _classPrivateFieldGet(this, _initialVisibility).set(id, group.visible); + } + } + + isVisible(group) { + if (_classPrivateFieldGet(this, _groups).size === 0) { + return true; + } + + if (!group) { + (0, _util.warn)("Optional content group not defined."); + return true; + } + + if (group.type === "OCG") { + if (!_classPrivateFieldGet(this, _groups).has(group.id)) { + (0, _util.warn)(`Optional content group not found: ${group.id}`); + return true; + } + + return _classPrivateFieldGet(this, _groups).get(group.id).visible; + } else if (group.type === "OCMD") { + if (group.expression) { + return _classPrivateMethodGet(this, _evaluateVisibilityExpression, _evaluateVisibilityExpression2).call(this, group.expression); + } + + if (!group.policy || group.policy === "AnyOn") { + for (const id of group.ids) { + if (!_classPrivateFieldGet(this, _groups).has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (_classPrivateFieldGet(this, _groups).get(id).visible) { + return true; + } + } + + return false; + } else if (group.policy === "AllOn") { + for (const id of group.ids) { + if (!_classPrivateFieldGet(this, _groups).has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (!_classPrivateFieldGet(this, _groups).get(id).visible) { + return false; + } + } + + return true; + } else if (group.policy === "AnyOff") { + for (const id of group.ids) { + if (!_classPrivateFieldGet(this, _groups).has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (!_classPrivateFieldGet(this, _groups).get(id).visible) { + return true; + } + } + + return false; + } else if (group.policy === "AllOff") { + for (const id of group.ids) { + if (!_classPrivateFieldGet(this, _groups).has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (_classPrivateFieldGet(this, _groups).get(id).visible) { + return false; + } + } + + return true; + } + + (0, _util.warn)(`Unknown optional content policy ${group.policy}.`); + return true; + } + + (0, _util.warn)(`Unknown group type ${group.type}.`); + return true; + } + + setVisibility(id) { + let visible = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + if (!_classPrivateFieldGet(this, _groups).has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return; + } + + _classPrivateFieldGet(this, _groups).get(id)._setVisible(INTERNAL, !!visible); + + _classPrivateFieldSet(this, _cachedHasInitialVisibility, null); + } + + get hasInitialVisibility() { + if (_classPrivateFieldGet(this, _cachedHasInitialVisibility) !== null) { + return _classPrivateFieldGet(this, _cachedHasInitialVisibility); + } + + for (const [id, group] of _classPrivateFieldGet(this, _groups)) { + const visible = _classPrivateFieldGet(this, _initialVisibility).get(id); + + if (group.visible !== visible) { + return _classPrivateFieldSet(this, _cachedHasInitialVisibility, false); + } + } + + return _classPrivateFieldSet(this, _cachedHasInitialVisibility, true); + } + + getOrder() { + if (!_classPrivateFieldGet(this, _groups).size) { + return null; + } + + if (_classPrivateFieldGet(this, _order)) { + return _classPrivateFieldGet(this, _order).slice(); + } + + return [..._classPrivateFieldGet(this, _groups).keys()]; + } + + getGroups() { + return _classPrivateFieldGet(this, _groups).size > 0 ? (0, _util.objectFromMap)(_classPrivateFieldGet(this, _groups)) : null; + } + + getGroup(id) { + return _classPrivateFieldGet(this, _groups).get(id) || null; + } + +} + +exports.OptionalContentConfig = OptionalContentConfig; + +function _evaluateVisibilityExpression2(array) { + const length = array.length; + + if (length < 2) { + return true; + } + + const operator = array[0]; + + for (let i = 1; i < length; i++) { + const element = array[i]; + let state; + + if (Array.isArray(element)) { + state = _classPrivateMethodGet(this, _evaluateVisibilityExpression, _evaluateVisibilityExpression2).call(this, element); + } else if (_classPrivateFieldGet(this, _groups).has(element)) { + state = _classPrivateFieldGet(this, _groups).get(element).visible; + } else { + (0, _util.warn)(`Optional content group not found: ${element}`); + return true; + } + + switch (operator) { + case "And": + if (!state) { + return false; + } + + break; + + case "Or": + if (state) { + return true; + } + + break; + + case "Not": + return !state; + + default: + return true; + } + } + + return operator === "And"; +} + +/***/ }), +/* 144 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFDataTransportStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(133); + +class PDFDataTransportStream { + constructor(params, pdfDataRangeTransport) { + (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.'); this._queuedChunks = []; this._progressiveDone = params.progressiveDone || false; - var initialData = params.initialData; + this._contentDispositionFilename = params.contentDispositionFilename || null; + const initialData = params.initialData; - if (initialData && initialData.length > 0) { - var buffer = new Uint8Array(initialData).buffer; + if ((initialData === null || initialData === void 0 ? void 0 : initialData.length) > 0) { + const buffer = new Uint8Array(initialData).buffer; this._queuedChunks.push(buffer); } @@ -17883,183 +14341,149 @@ function () { this._fullRequestReader = null; this._rangeReaders = []; - this._pdfDataRangeTransport.addRangeListener(function (begin, chunk) { - _this._onReceiveData({ - begin: begin, - chunk: chunk + this._pdfDataRangeTransport.addRangeListener((begin, chunk) => { + this._onReceiveData({ + begin, + chunk }); }); - this._pdfDataRangeTransport.addProgressListener(function (loaded, total) { - _this._onProgress({ - loaded: loaded, - total: total + this._pdfDataRangeTransport.addProgressListener((loaded, total) => { + this._onProgress({ + loaded, + total }); }); - this._pdfDataRangeTransport.addProgressiveReadListener(function (chunk) { - _this._onReceiveData({ - chunk: chunk + this._pdfDataRangeTransport.addProgressiveReadListener(chunk => { + this._onReceiveData({ + chunk }); }); - this._pdfDataRangeTransport.addProgressiveDoneListener(function () { - _this._onProgressiveDone(); + this._pdfDataRangeTransport.addProgressiveDoneListener(() => { + this._onProgressiveDone(); }); this._pdfDataRangeTransport.transportReady(); } - _createClass(PDFDataTransportStream, [{ - key: "_onReceiveData", - value: function _onReceiveData(args) { - var buffer = new Uint8Array(args.chunk).buffer; + _onReceiveData(args) { + const buffer = new Uint8Array(args.chunk).buffer; - if (args.begin === undefined) { - if (this._fullRequestReader) { - this._fullRequestReader._enqueue(buffer); - } else { - this._queuedChunks.push(buffer); - } - } else { - var found = this._rangeReaders.some(function (rangeReader) { - if (rangeReader._begin !== args.begin) { - return false; - } - - rangeReader._enqueue(buffer); - - return true; - }); - - (0, _util.assert)(found); - } - } - }, { - key: "_onProgress", - value: function _onProgress(evt) { - if (evt.total === undefined) { - var firstReader = this._rangeReaders[0]; - - if (firstReader && firstReader.onProgress) { - firstReader.onProgress({ - loaded: evt.loaded - }); - } - } else { - var fullReader = this._fullRequestReader; - - if (fullReader && fullReader.onProgress) { - fullReader.onProgress({ - loaded: evt.loaded, - total: evt.total - }); - } - } - } - }, { - key: "_onProgressiveDone", - value: function _onProgressiveDone() { + if (args.begin === undefined) { if (this._fullRequestReader) { - this._fullRequestReader.progressiveDone(); + this._fullRequestReader._enqueue(buffer); + } else { + this._queuedChunks.push(buffer); } + } else { + const found = this._rangeReaders.some(function (rangeReader) { + if (rangeReader._begin !== args.begin) { + return false; + } - this._progressiveDone = true; - } - }, { - key: "_removeRangeReader", - value: function _removeRangeReader(reader) { - var i = this._rangeReaders.indexOf(reader); + rangeReader._enqueue(buffer); - if (i >= 0) { - this._rangeReaders.splice(i, 1); - } - } - }, { - key: "getFullReader", - value: function getFullReader() { - (0, _util.assert)(!this._fullRequestReader); - var queuedChunks = this._queuedChunks; - this._queuedChunks = null; - return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone); - } - }, { - key: "getRangeReader", - value: function getRangeReader(begin, end) { - if (end <= this._progressiveDataLength) { - return null; - } - - var reader = new PDFDataTransportStreamRangeReader(this, begin, end); - - this._pdfDataRangeTransport.requestDataRange(begin, end); - - this._rangeReaders.push(reader); - - return reader; - } - }, { - key: "cancelAllRequests", - value: function cancelAllRequests(reason) { - if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); - } - - var readers = this._rangeReaders.slice(0); - - readers.forEach(function (rangeReader) { - rangeReader.cancel(reason); + return true; }); - this._pdfDataRangeTransport.abort(); + (0, _util.assert)(found, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found."); } - }, { - key: "_progressiveDataLength", - get: function get() { - return this._fullRequestReader ? this._fullRequestReader._loaded : 0; - } - }]); + } - return PDFDataTransportStream; -}(); + get _progressiveDataLength() { + var _this$_fullRequestRea, _this$_fullRequestRea2; + + return (_this$_fullRequestRea = (_this$_fullRequestRea2 = this._fullRequestReader) === null || _this$_fullRequestRea2 === void 0 ? void 0 : _this$_fullRequestRea2._loaded) !== null && _this$_fullRequestRea !== void 0 ? _this$_fullRequestRea : 0; + } + + _onProgress(evt) { + if (evt.total === undefined) { + const firstReader = this._rangeReaders[0]; + + if (firstReader !== null && firstReader !== void 0 && firstReader.onProgress) { + firstReader.onProgress({ + loaded: evt.loaded + }); + } + } else { + const fullReader = this._fullRequestReader; + + if (fullReader !== null && fullReader !== void 0 && fullReader.onProgress) { + fullReader.onProgress({ + loaded: evt.loaded, + total: evt.total + }); + } + } + } + + _onProgressiveDone() { + if (this._fullRequestReader) { + this._fullRequestReader.progressiveDone(); + } + + this._progressiveDone = true; + } + + _removeRangeReader(reader) { + const i = this._rangeReaders.indexOf(reader); + + if (i >= 0) { + this._rangeReaders.splice(i, 1); + } + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFDataTransportStream.getFullReader can only be called once."); + const queuedChunks = this._queuedChunks; + this._queuedChunks = null; + return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename); + } + + getRangeReader(begin, end) { + if (end <= this._progressiveDataLength) { + return null; + } + + const reader = new PDFDataTransportStreamRangeReader(this, begin, end); + + this._pdfDataRangeTransport.requestDataRange(begin, end); + + this._rangeReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeReaders.slice(0)) { + reader.cancel(reason); + } + + this._pdfDataRangeTransport.abort(); + } + +} exports.PDFDataTransportStream = PDFDataTransportStream; -var PDFDataTransportStreamReader = -/*#__PURE__*/ -function () { - function PDFDataTransportStreamReader(stream, queuedChunks) { - var progressiveDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - _classCallCheck(this, PDFDataTransportStreamReader); - +class PDFDataTransportStreamReader { + constructor(stream, queuedChunks) { + let progressiveDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + let contentDispositionFilename = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; this._stream = stream; this._done = progressiveDone || false; - this._filename = null; + this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null; this._queuedChunks = queuedChunks || []; this._loaded = 0; - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - try { - for (var _iterator = this._queuedChunks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var chunk = _step.value; - this._loaded += chunk.byteLength; - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator["return"] != null) { - _iterator["return"](); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } + for (const chunk of this._queuedChunks) { + this._loaded += chunk.byteLength; } this._requests = []; @@ -18068,139 +14492,94 @@ function () { this.onProgress = null; } - _createClass(PDFDataTransportStreamReader, [{ - key: "_enqueue", - value: function _enqueue(chunk) { - if (this._done) { - return; - } - - if (this._requests.length > 0) { - var requestCapability = this._requests.shift(); - - requestCapability.resolve({ - value: chunk, - done: false - }); - } else { - this._queuedChunks.push(chunk); - } - - this._loaded += chunk.byteLength; + _enqueue(chunk) { + if (this._done) { + return; } - }, { - key: "read", - value: function () { - var _read = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee() { - var chunk, requestCapability; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (!(this._queuedChunks.length > 0)) { - _context.next = 3; - break; - } - chunk = this._queuedChunks.shift(); - return _context.abrupt("return", { - value: chunk, - done: false - }); + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); - case 3: - if (!this._done) { - _context.next = 5; - break; - } - - return _context.abrupt("return", { - value: undefined, - done: true - }); - - case 5: - requestCapability = (0, _util.createPromiseCapability)(); - - this._requests.push(requestCapability); - - return _context.abrupt("return", requestCapability.promise); - - case 8: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function read() { - return _read.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - this._done = true; - - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); + requestCapability.resolve({ + value: chunk, + done: false }); + } else { + this._queuedChunks.push(chunk); + } - this._requests = []; - } - }, { - key: "progressiveDone", - value: function progressiveDone() { - if (this._done) { - return; - } + this._loaded += chunk.byteLength; + } - this._done = true; - } - }, { - key: "headersReady", - get: function get() { - return this._headersReady; - } - }, { - key: "filename", - get: function get() { - return this._filename; - } - }, { - key: "isRangeSupported", - get: function get() { - return this._stream._isRangeSupported; - } - }, { - key: "isStreamingSupported", - get: function get() { - return this._stream._isStreamingSupported; - } - }, { - key: "contentLength", - get: function get() { - return this._stream._contentLength; - } - }]); + get headersReady() { + return this._headersReady; + } - return PDFDataTransportStreamReader; -}(); + get filename() { + return this._filename; + } -var PDFDataTransportStreamRangeReader = -/*#__PURE__*/ -function () { - function PDFDataTransportStreamRangeReader(stream, begin, end) { - _classCallCheck(this, PDFDataTransportStreamRangeReader); + get isRangeSupported() { + return this._stream._isRangeSupported; + } + get isStreamingSupported() { + return this._stream._isStreamingSupported; + } + + get contentLength() { + return this._stream._contentLength; + } + + async read() { + if (this._queuedChunks.length > 0) { + const chunk = this._queuedChunks.shift(); + + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + } + + progressiveDone() { + if (this._done) { + return; + } + + this._done = true; + } + +} + +class PDFDataTransportStreamRangeReader { + constructor(stream, begin, end) { this._stream = stream; this._begin = begin; this._end = end; @@ -18210,1030 +14589,6121 @@ function () { this.onProgress = null; } - _createClass(PDFDataTransportStreamRangeReader, [{ - key: "_enqueue", - value: function _enqueue(chunk) { - if (this._done) { - return; - } - - if (this._requests.length === 0) { - this._queuedChunk = chunk; - } else { - var requestsCapability = this._requests.shift(); - - requestsCapability.resolve({ - value: chunk, - done: false - }); - - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - - this._requests = []; - } - - this._done = true; - - this._stream._removeRangeReader(this); + _enqueue(chunk) { + if (this._done) { + return; } - }, { - key: "read", - value: function () { - var _read2 = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee2() { - var chunk, requestCapability; - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - if (!this._queuedChunk) { - _context2.next = 4; - break; - } - chunk = this._queuedChunk; - this._queuedChunk = null; - return _context2.abrupt("return", { - value: chunk, - done: false - }); + if (this._requests.length === 0) { + this._queuedChunk = chunk; + } else { + const requestsCapability = this._requests.shift(); - case 4: - if (!this._done) { - _context2.next = 6; - break; - } + requestsCapability.resolve({ + value: chunk, + done: false + }); - return _context2.abrupt("return", { - value: undefined, - done: true - }); - - case 6: - requestCapability = (0, _util.createPromiseCapability)(); - - this._requests.push(requestCapability); - - return _context2.abrupt("return", requestCapability.promise); - - case 9: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function read() { - return _read2.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - this._done = true; - - this._requests.forEach(function (requestCapability) { + for (const requestCapability of this._requests) { requestCapability.resolve({ value: undefined, done: true }); + } + + this._requests.length = 0; + } + + this._done = true; + + this._stream._removeRangeReader(this); + } + + get isStreamingSupported() { + return false; + } + + async read() { + if (this._queuedChunk) { + const chunk = this._queuedChunk; + this._queuedChunk = null; + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true }); - - this._requests = []; - - this._stream._removeRangeReader(this); } - }, { - key: "isStreamingSupported", - get: function get() { - return false; - } - }]); - return PDFDataTransportStreamRangeReader; -}(); + this._requests.length = 0; + + this._stream._removeRangeReader(this); + } + +} /***/ }), -/* 161 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 145 */ +/***/ ((__unused_webpack_module, exports) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.WebGLContext = void 0; +})); +exports.XfaText = void 0; -var _util = __w_pdfjs_require__(1); +class XfaText { + static textContent(xfa) { + const items = []; + const output = { + items, + styles: Object.create(null) + }; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + function walk(node) { + var _node$attributes; -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var WebGLContext = -/*#__PURE__*/ -function () { - function WebGLContext(_ref) { - var _ref$enable = _ref.enable, - enable = _ref$enable === void 0 ? false : _ref$enable; - - _classCallCheck(this, WebGLContext); - - this._enabled = enable === true; - } - - _createClass(WebGLContext, [{ - key: "composeSMask", - value: function composeSMask(_ref2) { - var layer = _ref2.layer, - mask = _ref2.mask, - properties = _ref2.properties; - return WebGLUtils.composeSMask(layer, mask, properties); - } - }, { - key: "drawFigures", - value: function drawFigures(_ref3) { - var width = _ref3.width, - height = _ref3.height, - backgroundColor = _ref3.backgroundColor, - figures = _ref3.figures, - context = _ref3.context; - return WebGLUtils.drawFigures(width, height, backgroundColor, figures, context); - } - }, { - key: "clear", - value: function clear() { - WebGLUtils.cleanup(); - } - }, { - key: "isEnabled", - get: function get() { - var enabled = this._enabled; - - if (enabled) { - enabled = WebGLUtils.tryInitGL(); + if (!node) { + return; } - return (0, _util.shadow)(this, 'isEnabled', enabled); - } - }]); + let str = null; + const name = node.name; - return WebGLContext; -}(); + if (name === "#text") { + str = node.value; + } else if (!XfaText.shouldBuildText(name)) { + return; + } else if (node !== null && node !== void 0 && (_node$attributes = node.attributes) !== null && _node$attributes !== void 0 && _node$attributes.textContent) { + str = node.attributes.textContent; + } else if (node.value) { + str = node.value; + } -exports.WebGLContext = WebGLContext; + if (str !== null) { + items.push({ + str + }); + } -var WebGLUtils = function WebGLUtilsClosure() { - function loadShader(gl, code, shaderType) { - var shader = gl.createShader(shaderType); - gl.shaderSource(shader, code); - gl.compileShader(shader); - var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); + if (!node.children) { + return; + } - if (!compiled) { - var errorMsg = gl.getShaderInfoLog(shader); - throw new Error('Error during shader compilation: ' + errorMsg); + for (const child of node.children) { + walk(child); + } } - return shader; + walk(xfa); + return output; } - function createVertexShader(gl, code) { - return loadShader(gl, code, gl.VERTEX_SHADER); + static shouldBuildText(name) { + return !(name === "textarea" || name === "input" || name === "option" || name === "select"); } - function createFragmentShader(gl, code) { - return loadShader(gl, code, gl.FRAGMENT_SHADER); +} + +exports.XfaText = XfaText; + +/***/ }), +/* 146 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NodeStandardFontDataFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0; + +var _base_factory = __w_pdfjs_require__(134); + +; + +const fetchData = function (url) { + return new Promise((resolve, reject) => { + const fs = require("fs"); + + fs.readFile(url, (error, data) => { + if (error || !data) { + reject(new Error(error)); + return; + } + + resolve(new Uint8Array(data)); + }); + }); +}; + +class NodeCanvasFactory extends _base_factory.BaseCanvasFactory { + _createCanvas(width, height) { + const Canvas = require("canvas"); + + return Canvas.createCanvas(width, height); } - function createProgram(gl, shaders) { - var program = gl.createProgram(); +} - for (var i = 0, ii = shaders.length; i < ii; ++i) { - gl.attachShader(program, shaders[i]); - } +exports.NodeCanvasFactory = NodeCanvasFactory; - gl.linkProgram(program); - var linked = gl.getProgramParameter(program, gl.LINK_STATUS); - - if (!linked) { - var errorMsg = gl.getProgramInfoLog(program); - throw new Error('Error during program linking: ' + errorMsg); - } - - return program; - } - - function createTexture(gl, image, textureId) { - gl.activeTexture(textureId); - var texture = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image); - return texture; - } - - var currentGL, currentCanvas; - - function generateGL() { - if (currentGL) { - return; - } - - currentCanvas = document.createElement('canvas'); - currentGL = currentCanvas.getContext('webgl', { - premultipliedalpha: false +class NodeCMapReaderFactory extends _base_factory.BaseCMapReaderFactory { + _fetchData(url, compressionType) { + return fetchData(url).then(data => { + return { + cMapData: data, + compressionType + }; }); } - var smaskVertexShaderCode = '\ - attribute vec2 a_position; \ - attribute vec2 a_texCoord; \ - \ - uniform vec2 u_resolution; \ - \ - varying vec2 v_texCoord; \ - \ - void main() { \ - vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \ - gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \ - \ - v_texCoord = a_texCoord; \ - } '; - var smaskFragmentShaderCode = '\ - precision mediump float; \ - \ - uniform vec4 u_backdrop; \ - uniform int u_subtype; \ - uniform sampler2D u_image; \ - uniform sampler2D u_mask; \ - \ - varying vec2 v_texCoord; \ - \ - void main() { \ - vec4 imageColor = texture2D(u_image, v_texCoord); \ - vec4 maskColor = texture2D(u_mask, v_texCoord); \ - if (u_backdrop.a > 0.0) { \ - maskColor.rgb = maskColor.rgb * maskColor.a + \ - u_backdrop.rgb * (1.0 - maskColor.a); \ - } \ - float lum; \ - if (u_subtype == 0) { \ - lum = maskColor.a; \ - } else { \ - lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \ - maskColor.b * 0.11; \ - } \ - imageColor.a *= lum; \ - imageColor.rgb *= imageColor.a; \ - gl_FragColor = imageColor; \ - } '; - var smaskCache = null; +} - function initSmaskGL() { - var canvas, gl; - generateGL(); - canvas = currentCanvas; - currentCanvas = null; - gl = currentGL; - currentGL = null; - var vertexShader = createVertexShader(gl, smaskVertexShaderCode); - var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode); - var program = createProgram(gl, [vertexShader, fragmentShader]); - gl.useProgram(program); - var cache = {}; - cache.gl = gl; - cache.canvas = canvas; - cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution'); - cache.positionLocation = gl.getAttribLocation(program, 'a_position'); - cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop'); - cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype'); - var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord'); - var texLayerLocation = gl.getUniformLocation(program, 'u_image'); - var texMaskLocation = gl.getUniformLocation(program, 'u_mask'); - var texCoordBuffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer); - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW); - gl.enableVertexAttribArray(texCoordLocation); - gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0); - gl.uniform1i(texLayerLocation, 0); - gl.uniform1i(texMaskLocation, 1); - smaskCache = cache; +exports.NodeCMapReaderFactory = NodeCMapReaderFactory; + +class NodeStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url); } - function composeSMask(layer, mask, properties) { - var width = layer.width, - height = layer.height; +} - if (!smaskCache) { - initSmaskGL(); - } - - var cache = smaskCache, - canvas = cache.canvas, - gl = cache.gl; - canvas.width = width; - canvas.height = height; - gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); - gl.uniform2f(cache.resolutionLocation, width, height); - - if (properties.backdrop) { - gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], properties.backdrop[1], properties.backdrop[2], 1); - } else { - gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0); - } - - gl.uniform1i(cache.subtypeLocation, properties.subtype === 'Luminosity' ? 1 : 0); - var texture = createTexture(gl, layer, gl.TEXTURE0); - var maskTexture = createTexture(gl, mask, gl.TEXTURE1); - var buffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, buffer); - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, height]), gl.STATIC_DRAW); - gl.enableVertexAttribArray(cache.positionLocation); - gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0); - gl.clearColor(0, 0, 0, 0); - gl.enable(gl.BLEND); - gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - gl.clear(gl.COLOR_BUFFER_BIT); - gl.drawArrays(gl.TRIANGLES, 0, 6); - gl.flush(); - gl.deleteTexture(texture); - gl.deleteTexture(maskTexture); - gl.deleteBuffer(buffer); - return canvas; - } - - var figuresVertexShaderCode = '\ - attribute vec2 a_position; \ - attribute vec3 a_color; \ - \ - uniform vec2 u_resolution; \ - uniform vec2 u_scale; \ - uniform vec2 u_offset; \ - \ - varying vec4 v_color; \ - \ - void main() { \ - vec2 position = (a_position + u_offset) * u_scale; \ - vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \ - gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \ - \ - v_color = vec4(a_color / 255.0, 1.0); \ - } '; - var figuresFragmentShaderCode = '\ - precision mediump float; \ - \ - varying vec4 v_color; \ - \ - void main() { \ - gl_FragColor = v_color; \ - } '; - var figuresCache = null; - - function initFiguresGL() { - var canvas, gl; - generateGL(); - canvas = currentCanvas; - currentCanvas = null; - gl = currentGL; - currentGL = null; - var vertexShader = createVertexShader(gl, figuresVertexShaderCode); - var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode); - var program = createProgram(gl, [vertexShader, fragmentShader]); - gl.useProgram(program); - var cache = {}; - cache.gl = gl; - cache.canvas = canvas; - cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution'); - cache.scaleLocation = gl.getUniformLocation(program, 'u_scale'); - cache.offsetLocation = gl.getUniformLocation(program, 'u_offset'); - cache.positionLocation = gl.getAttribLocation(program, 'a_position'); - cache.colorLocation = gl.getAttribLocation(program, 'a_color'); - figuresCache = cache; - } - - function drawFigures(width, height, backgroundColor, figures, context) { - if (!figuresCache) { - initFiguresGL(); - } - - var cache = figuresCache, - canvas = cache.canvas, - gl = cache.gl; - canvas.width = width; - canvas.height = height; - gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); - gl.uniform2f(cache.resolutionLocation, width, height); - var count = 0; - var i, ii, rows; - - for (i = 0, ii = figures.length; i < ii; i++) { - switch (figures[i].type) { - case 'lattice': - rows = figures[i].coords.length / figures[i].verticesPerRow | 0; - count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6; - break; - - case 'triangles': - count += figures[i].coords.length; - break; - } - } - - var coords = new Float32Array(count * 2); - var colors = new Uint8Array(count * 3); - var coordsMap = context.coords, - colorsMap = context.colors; - var pIndex = 0, - cIndex = 0; - - for (i = 0, ii = figures.length; i < ii; i++) { - var figure = figures[i], - ps = figure.coords, - cs = figure.colors; - - switch (figure.type) { - case 'lattice': - var cols = figure.verticesPerRow; - rows = ps.length / cols | 0; - - for (var row = 1; row < rows; row++) { - var offset = row * cols + 1; - - for (var col = 1; col < cols; col++, offset++) { - coords[pIndex] = coordsMap[ps[offset - cols - 1]]; - coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1]; - coords[pIndex + 2] = coordsMap[ps[offset - cols]]; - coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1]; - coords[pIndex + 4] = coordsMap[ps[offset - 1]]; - coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1]; - colors[cIndex] = colorsMap[cs[offset - cols - 1]]; - colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1]; - colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2]; - colors[cIndex + 3] = colorsMap[cs[offset - cols]]; - colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1]; - colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2]; - colors[cIndex + 6] = colorsMap[cs[offset - 1]]; - colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1]; - colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2]; - coords[pIndex + 6] = coords[pIndex + 2]; - coords[pIndex + 7] = coords[pIndex + 3]; - coords[pIndex + 8] = coords[pIndex + 4]; - coords[pIndex + 9] = coords[pIndex + 5]; - coords[pIndex + 10] = coordsMap[ps[offset]]; - coords[pIndex + 11] = coordsMap[ps[offset] + 1]; - colors[cIndex + 9] = colors[cIndex + 3]; - colors[cIndex + 10] = colors[cIndex + 4]; - colors[cIndex + 11] = colors[cIndex + 5]; - colors[cIndex + 12] = colors[cIndex + 6]; - colors[cIndex + 13] = colors[cIndex + 7]; - colors[cIndex + 14] = colors[cIndex + 8]; - colors[cIndex + 15] = colorsMap[cs[offset]]; - colors[cIndex + 16] = colorsMap[cs[offset] + 1]; - colors[cIndex + 17] = colorsMap[cs[offset] + 2]; - pIndex += 12; - cIndex += 18; - } - } - - break; - - case 'triangles': - for (var j = 0, jj = ps.length; j < jj; j++) { - coords[pIndex] = coordsMap[ps[j]]; - coords[pIndex + 1] = coordsMap[ps[j] + 1]; - colors[cIndex] = colorsMap[cs[j]]; - colors[cIndex + 1] = colorsMap[cs[j] + 1]; - colors[cIndex + 2] = colorsMap[cs[j] + 2]; - pIndex += 2; - cIndex += 3; - } - - break; - } - } - - if (backgroundColor) { - gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, backgroundColor[2] / 255, 1.0); - } else { - gl.clearColor(0, 0, 0, 0); - } - - gl.clear(gl.COLOR_BUFFER_BIT); - var coordsBuffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer); - gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW); - gl.enableVertexAttribArray(cache.positionLocation); - gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0); - var colorsBuffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer); - gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW); - gl.enableVertexAttribArray(cache.colorLocation); - gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false, 0, 0); - gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY); - gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY); - gl.drawArrays(gl.TRIANGLES, 0, count); - gl.flush(); - gl.deleteBuffer(coordsBuffer); - gl.deleteBuffer(colorsBuffer); - return canvas; - } - - return { - tryInitGL: function tryInitGL() { - try { - generateGL(); - return !!currentGL; - } catch (ex) {} - - return false; - }, - composeSMask: composeSMask, - drawFigures: drawFigures, - cleanup: function cleanup() { - if (smaskCache && smaskCache.canvas) { - smaskCache.canvas.width = 0; - smaskCache.canvas.height = 0; - } - - if (figuresCache && figuresCache.canvas) { - figuresCache.canvas.width = 0; - figuresCache.canvas.height = 0; - } - - smaskCache = null; - figuresCache = null; - } - }; -}(); +exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory; /***/ }), -/* 162 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 147 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.renderTextLayer = void 0; +})); +exports.AnnotationEditorLayer = void 0; + +var _tools = __w_pdfjs_require__(132); var _util = __w_pdfjs_require__(1); -var _global_scope = _interopRequireDefault(__w_pdfjs_require__(3)); +var _freetext = __w_pdfjs_require__(148); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +var _ink = __w_pdfjs_require__(149); -var renderTextLayer = function renderTextLayerClosure() { - var MAX_TEXT_DIVS_TO_RENDER = 100000; - var NonWhitespaceRegexp = /\S/; +function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); } - function isAllWhitespace(str) { - return !NonWhitespaceRegexp.test(str); +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); } + +function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } + +function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; } + +function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); } + +function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; } + +function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; } + +function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); } + +function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } } + +var _accessibilityManager = /*#__PURE__*/new WeakMap(); + +var _allowClick = /*#__PURE__*/new WeakMap(); + +var _boundPointerup = /*#__PURE__*/new WeakMap(); + +var _boundPointerdown = /*#__PURE__*/new WeakMap(); + +var _editors = /*#__PURE__*/new WeakMap(); + +var _hadPointerDown = /*#__PURE__*/new WeakMap(); + +var _isCleaningUp = /*#__PURE__*/new WeakMap(); + +var _uiManager = /*#__PURE__*/new WeakMap(); + +var _changeParent = /*#__PURE__*/new WeakSet(); + +var _createNewEditor = /*#__PURE__*/new WeakSet(); + +var _createAndAddNewEditor = /*#__PURE__*/new WeakSet(); + +var _cleanup = /*#__PURE__*/new WeakSet(); + +class AnnotationEditorLayer { + constructor(options) { + _classPrivateMethodInitSpec(this, _cleanup); + + _classPrivateMethodInitSpec(this, _createAndAddNewEditor); + + _classPrivateMethodInitSpec(this, _createNewEditor); + + _classPrivateMethodInitSpec(this, _changeParent); + + _classPrivateFieldInitSpec(this, _accessibilityManager, { + writable: true, + value: void 0 + }); + + _classPrivateFieldInitSpec(this, _allowClick, { + writable: true, + value: false + }); + + _classPrivateFieldInitSpec(this, _boundPointerup, { + writable: true, + value: this.pointerup.bind(this) + }); + + _classPrivateFieldInitSpec(this, _boundPointerdown, { + writable: true, + value: this.pointerdown.bind(this) + }); + + _classPrivateFieldInitSpec(this, _editors, { + writable: true, + value: new Map() + }); + + _classPrivateFieldInitSpec(this, _hadPointerDown, { + writable: true, + value: false + }); + + _classPrivateFieldInitSpec(this, _isCleaningUp, { + writable: true, + value: false + }); + + _classPrivateFieldInitSpec(this, _uiManager, { + writable: true, + value: void 0 + }); + + if (!AnnotationEditorLayer._initialized) { + AnnotationEditorLayer._initialized = true; + + _freetext.FreeTextEditor.initialize(options.l10n); + + _ink.InkEditor.initialize(options.l10n); + + options.uiManager.registerEditorTypes([_freetext.FreeTextEditor, _ink.InkEditor]); + } + + _classPrivateFieldSet(this, _uiManager, options.uiManager); + + this.annotationStorage = options.annotationStorage; + this.pageIndex = options.pageIndex; + this.div = options.div; + + _classPrivateFieldSet(this, _accessibilityManager, options.accessibilityManager); + + _classPrivateFieldGet(this, _uiManager).addLayer(this); } - var styleBuf = ['left: ', 0, 'px; top: ', 0, 'px; font-size: ', 0, 'px; font-family: ', '', ';']; + updateToolbar(mode) { + _classPrivateFieldGet(this, _uiManager).updateToolbar(mode); + } - function appendText(task, geom, styles) { - var textDiv = document.createElement('span'); - var textDivProperties = { - style: null, - angle: 0, - canvasWidth: 0, - isWhitespace: false, - originalTransform: null, - paddingBottom: 0, - paddingLeft: 0, - paddingRight: 0, - paddingTop: 0, - scale: 1 + updateMode() { + let mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _classPrivateFieldGet(this, _uiManager).getMode(); + + _classPrivateMethodGet(this, _cleanup, _cleanup2).call(this); + + if (mode === _util.AnnotationEditorType.INK) { + this.addInkEditorIfNeeded(false); + this.disableClick(); + } else { + this.enableClick(); + } + + _classPrivateFieldGet(this, _uiManager).unselectAll(); + } + + addInkEditorIfNeeded(isCommitting) { + if (!isCommitting && _classPrivateFieldGet(this, _uiManager).getMode() !== _util.AnnotationEditorType.INK) { + return; + } + + if (!isCommitting) { + for (const editor of _classPrivateFieldGet(this, _editors).values()) { + if (editor.isEmpty()) { + editor.setInBackground(); + return; + } + } + } + + const editor = _classPrivateMethodGet(this, _createAndAddNewEditor, _createAndAddNewEditor2).call(this, { + offsetX: 0, + offsetY: 0 + }); + + editor.setInBackground(); + } + + setEditingState(isEditing) { + _classPrivateFieldGet(this, _uiManager).setEditingState(isEditing); + } + + addCommands(params) { + _classPrivateFieldGet(this, _uiManager).addCommands(params); + } + + enable() { + this.div.style.pointerEvents = "auto"; + + for (const editor of _classPrivateFieldGet(this, _editors).values()) { + editor.enableEditing(); + } + } + + disable() { + this.div.style.pointerEvents = "none"; + + for (const editor of _classPrivateFieldGet(this, _editors).values()) { + editor.disableEditing(); + } + } + + setActiveEditor(editor) { + const currentActive = _classPrivateFieldGet(this, _uiManager).getActive(); + + if (currentActive === editor) { + return; + } + + _classPrivateFieldGet(this, _uiManager).setActiveEditor(editor); + } + + enableClick() { + this.div.addEventListener("pointerdown", _classPrivateFieldGet(this, _boundPointerdown)); + this.div.addEventListener("pointerup", _classPrivateFieldGet(this, _boundPointerup)); + } + + disableClick() { + this.div.removeEventListener("pointerdown", _classPrivateFieldGet(this, _boundPointerdown)); + this.div.removeEventListener("pointerup", _classPrivateFieldGet(this, _boundPointerup)); + } + + attach(editor) { + _classPrivateFieldGet(this, _editors).set(editor.id, editor); + } + + detach(editor) { + var _classPrivateFieldGet2; + + _classPrivateFieldGet(this, _editors).delete(editor.id); + + (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _accessibilityManager)) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.removePointerInTextLayer(editor.contentDiv); + } + + remove(editor) { + _classPrivateFieldGet(this, _uiManager).removeEditor(editor); + + this.detach(editor); + this.annotationStorage.remove(editor.id); + editor.div.style.display = "none"; + setTimeout(() => { + editor.div.style.display = ""; + editor.div.remove(); + editor.isAttachedToDOM = false; + + if (document.activeElement === document.body) { + _classPrivateFieldGet(this, _uiManager).focusMainContainer(); + } + }, 0); + + if (!_classPrivateFieldGet(this, _isCleaningUp)) { + this.addInkEditorIfNeeded(false); + } + } + + add(editor) { + _classPrivateMethodGet(this, _changeParent, _changeParent2).call(this, editor); + + _classPrivateFieldGet(this, _uiManager).addEditor(editor); + + this.attach(editor); + + if (!editor.isAttachedToDOM) { + const div = editor.render(); + this.div.append(div); + editor.isAttachedToDOM = true; + } + + this.moveEditorInDOM(editor); + editor.onceAdded(); + this.addToAnnotationStorage(editor); + } + + moveEditorInDOM(editor) { + var _classPrivateFieldGet3; + + (_classPrivateFieldGet3 = _classPrivateFieldGet(this, _accessibilityManager)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.moveElementInDOM(this.div, editor.div, editor.contentDiv, true); + } + + addToAnnotationStorage(editor) { + if (!editor.isEmpty() && !this.annotationStorage.has(editor.id)) { + this.annotationStorage.setValue(editor.id, editor); + } + } + + addOrRebuild(editor) { + if (editor.needsToBeRebuilt()) { + editor.rebuild(); + } else { + this.add(editor); + } + } + + addANewEditor(editor) { + const cmd = () => { + this.addOrRebuild(editor); }; - task._textDivs.push(textDiv); + const undo = () => { + editor.remove(); + }; - if (isAllWhitespace(geom.str)) { - textDivProperties.isWhitespace = true; + this.addCommands({ + cmd, + undo, + mustExec: true + }); + } - task._textDivProperties.set(textDiv, textDivProperties); + addUndoableEditor(editor) { + const cmd = () => { + this.addOrRebuild(editor); + }; + + const undo = () => { + editor.remove(); + }; + + this.addCommands({ + cmd, + undo, + mustExec: false + }); + } + + getNextId() { + return _classPrivateFieldGet(this, _uiManager).getId(); + } + + deserialize(data) { + switch (data.annotationType) { + case _util.AnnotationEditorType.FREETEXT: + return _freetext.FreeTextEditor.deserialize(data, this); + + case _util.AnnotationEditorType.INK: + return _ink.InkEditor.deserialize(data, this); + } + + return null; + } + + setSelected(editor) { + _classPrivateFieldGet(this, _uiManager).setSelected(editor); + } + + toggleSelected(editor) { + _classPrivateFieldGet(this, _uiManager).toggleSelected(editor); + } + + isSelected(editor) { + return _classPrivateFieldGet(this, _uiManager).isSelected(editor); + } + + unselect(editor) { + _classPrivateFieldGet(this, _uiManager).unselect(editor); + } + + pointerup(event) { + const isMac = _tools.KeyboardManager.platform.isMac; + + if (event.button !== 0 || event.ctrlKey && isMac) { + return; + } + + if (event.target !== this.div) { + return; + } + + if (!_classPrivateFieldGet(this, _hadPointerDown)) { + return; + } + + _classPrivateFieldSet(this, _hadPointerDown, false); + + if (!_classPrivateFieldGet(this, _allowClick)) { + _classPrivateFieldSet(this, _allowClick, true); return; } - var tx = _util.Util.transform(task._viewport.transform, geom.transform); + _classPrivateMethodGet(this, _createAndAddNewEditor, _createAndAddNewEditor2).call(this, event); + } - var angle = Math.atan2(tx[1], tx[0]); - var style = styles[geom.fontName]; + pointerdown(event) { + const isMac = _tools.KeyboardManager.platform.isMac; - if (style.vertical) { - angle += Math.PI / 2; + if (event.button !== 0 || event.ctrlKey && isMac) { + return; } - var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]); - var fontAscent = fontHeight; - - if (style.ascent) { - fontAscent = style.ascent * fontAscent; - } else if (style.descent) { - fontAscent = (1 + style.descent) * fontAscent; + if (event.target !== this.div) { + return; } - var left; - var top; + _classPrivateFieldSet(this, _hadPointerDown, true); - if (angle === 0) { - left = tx[4]; - top = tx[5] - fontAscent; + const editor = _classPrivateFieldGet(this, _uiManager).getActive(); + + _classPrivateFieldSet(this, _allowClick, !editor || editor.isEmpty()); + } + + drop(event) { + const id = event.dataTransfer.getData("text/plain"); + + const editor = _classPrivateFieldGet(this, _uiManager).getEditor(id); + + if (!editor) { + return; + } + + event.preventDefault(); + event.dataTransfer.dropEffect = "move"; + + _classPrivateMethodGet(this, _changeParent, _changeParent2).call(this, editor); + + const rect = this.div.getBoundingClientRect(); + const endX = event.clientX - rect.x; + const endY = event.clientY - rect.y; + editor.translate(endX - editor.startX, endY - editor.startY); + this.moveEditorInDOM(editor); + editor.div.focus(); + } + + dragover(event) { + event.preventDefault(); + } + + destroy() { + var _classPrivateFieldGet4; + + if (((_classPrivateFieldGet4 = _classPrivateFieldGet(this, _uiManager).getActive()) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.parent) === this) { + _classPrivateFieldGet(this, _uiManager).setActiveEditor(null); + } + + for (const editor of _classPrivateFieldGet(this, _editors).values()) { + var _classPrivateFieldGet5; + + (_classPrivateFieldGet5 = _classPrivateFieldGet(this, _accessibilityManager)) === null || _classPrivateFieldGet5 === void 0 ? void 0 : _classPrivateFieldGet5.removePointerInTextLayer(editor.contentDiv); + editor.isAttachedToDOM = false; + editor.div.remove(); + editor.parent = null; + } + + this.div = null; + + _classPrivateFieldGet(this, _editors).clear(); + + _classPrivateFieldGet(this, _uiManager).removeLayer(this); + } + + render(parameters) { + this.viewport = parameters.viewport; + (0, _tools.bindEvents)(this, this.div, ["dragover", "drop"]); + this.setDimensions(); + + for (const editor of _classPrivateFieldGet(this, _uiManager).getEditors(this.pageIndex)) { + this.add(editor); + } + + this.updateMode(); + } + + update(parameters) { + this.viewport = parameters.viewport; + this.setDimensions(); + this.updateMode(); + } + + get scaleFactor() { + return this.viewport.scale; + } + + get pageDimensions() { + const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox; + const width = pageURx - pageLLx; + const height = pageURy - pageLLy; + return [width, height]; + } + + get viewportBaseDimensions() { + const { + width, + height, + rotation + } = this.viewport; + return rotation % 180 === 0 ? [width, height] : [height, width]; + } + + setDimensions() { + const { + width, + height, + rotation + } = this.viewport; + const flipOrientation = rotation % 180 !== 0, + widthStr = Math.floor(width) + "px", + heightStr = Math.floor(height) + "px"; + this.div.style.width = flipOrientation ? heightStr : widthStr; + this.div.style.height = flipOrientation ? widthStr : heightStr; + this.div.setAttribute("data-main-rotation", rotation); + } + +} + +exports.AnnotationEditorLayer = AnnotationEditorLayer; + +function _changeParent2(editor) { + var _editor$parent; + + if (editor.parent === this) { + return; + } + + this.attach(editor); + editor.pageIndex = this.pageIndex; + (_editor$parent = editor.parent) === null || _editor$parent === void 0 ? void 0 : _editor$parent.detach(editor); + editor.parent = this; + + if (editor.div && editor.isAttachedToDOM) { + editor.div.remove(); + this.div.append(editor.div); + } +} + +function _createNewEditor2(params) { + switch (_classPrivateFieldGet(this, _uiManager).getMode()) { + case _util.AnnotationEditorType.FREETEXT: + return new _freetext.FreeTextEditor(params); + + case _util.AnnotationEditorType.INK: + return new _ink.InkEditor(params); + } + + return null; +} + +function _createAndAddNewEditor2(event) { + const id = this.getNextId(); + + const editor = _classPrivateMethodGet(this, _createNewEditor, _createNewEditor2).call(this, { + parent: this, + id, + x: event.offsetX, + y: event.offsetY + }); + + if (editor) { + this.add(editor); + } + + return editor; +} + +function _cleanup2() { + _classPrivateFieldSet(this, _isCleaningUp, true); + + for (const editor of _classPrivateFieldGet(this, _editors).values()) { + if (editor.isEmpty()) { + editor.remove(); + } + } + + _classPrivateFieldSet(this, _isCleaningUp, false); +} + +_defineProperty(AnnotationEditorLayer, "_initialized", false); + +/***/ }), +/* 148 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FreeTextEditor = void 0; + +var _util = __w_pdfjs_require__(1); + +var _tools = __w_pdfjs_require__(132); + +var _editor = __w_pdfjs_require__(131); + +function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); } + +function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } + +function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); } + +function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; } + +function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; } + +function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; } + +function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); } + +function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } } + +var _boundEditorDivBlur = /*#__PURE__*/new WeakMap(); + +var _boundEditorDivFocus = /*#__PURE__*/new WeakMap(); + +var _boundEditorDivKeydown = /*#__PURE__*/new WeakMap(); + +var _color = /*#__PURE__*/new WeakMap(); + +var _content = /*#__PURE__*/new WeakMap(); + +var _hasAlreadyBeenCommitted = /*#__PURE__*/new WeakMap(); + +var _fontSize = /*#__PURE__*/new WeakMap(); + +var _updateFontSize = /*#__PURE__*/new WeakSet(); + +var _updateColor = /*#__PURE__*/new WeakSet(); + +var _extractText = /*#__PURE__*/new WeakSet(); + +var _setEditorDimensions = /*#__PURE__*/new WeakSet(); + +class FreeTextEditor extends _editor.AnnotationEditor { + constructor(params) { + super({ ...params, + name: "freeTextEditor" + }); + + _classPrivateMethodInitSpec(this, _setEditorDimensions); + + _classPrivateMethodInitSpec(this, _extractText); + + _classPrivateMethodInitSpec(this, _updateColor); + + _classPrivateMethodInitSpec(this, _updateFontSize); + + _classPrivateFieldInitSpec(this, _boundEditorDivBlur, { + writable: true, + value: this.editorDivBlur.bind(this) + }); + + _classPrivateFieldInitSpec(this, _boundEditorDivFocus, { + writable: true, + value: this.editorDivFocus.bind(this) + }); + + _classPrivateFieldInitSpec(this, _boundEditorDivKeydown, { + writable: true, + value: this.editorDivKeydown.bind(this) + }); + + _classPrivateFieldInitSpec(this, _color, { + writable: true, + value: void 0 + }); + + _classPrivateFieldInitSpec(this, _content, { + writable: true, + value: "" + }); + + _classPrivateFieldInitSpec(this, _hasAlreadyBeenCommitted, { + writable: true, + value: false + }); + + _classPrivateFieldInitSpec(this, _fontSize, { + writable: true, + value: void 0 + }); + + _classPrivateFieldSet(this, _color, params.color || FreeTextEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor); + + _classPrivateFieldSet(this, _fontSize, params.fontSize || FreeTextEditor._defaultFontSize); + } + + static initialize(l10n) { + this._l10nPromise = new Map(["free_text_default_content", "editor_free_text_aria_label"].map(str => [str, l10n.get(str)])); + const style = getComputedStyle(document.documentElement); + this._internalPadding = parseFloat(style.getPropertyValue("--freetext-padding")); + } + + static updateDefaultParams(type, value) { + switch (type) { + case _util.AnnotationEditorParamsType.FREETEXT_SIZE: + FreeTextEditor._defaultFontSize = value; + break; + + case _util.AnnotationEditorParamsType.FREETEXT_COLOR: + FreeTextEditor._defaultColor = value; + break; + } + } + + updateParams(type, value) { + switch (type) { + case _util.AnnotationEditorParamsType.FREETEXT_SIZE: + _classPrivateMethodGet(this, _updateFontSize, _updateFontSize2).call(this, value); + + break; + + case _util.AnnotationEditorParamsType.FREETEXT_COLOR: + _classPrivateMethodGet(this, _updateColor, _updateColor2).call(this, value); + + break; + } + } + + static get defaultPropertiesToUpdate() { + return [[_util.AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [_util.AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor]]; + } + + get propertiesToUpdate() { + return [[_util.AnnotationEditorParamsType.FREETEXT_SIZE, _classPrivateFieldGet(this, _fontSize)], [_util.AnnotationEditorParamsType.FREETEXT_COLOR, _classPrivateFieldGet(this, _color)]]; + } + + getInitialTranslation() { + return [-FreeTextEditor._internalPadding * this.parent.scaleFactor, -(FreeTextEditor._internalPadding + _classPrivateFieldGet(this, _fontSize)) * this.parent.scaleFactor]; + } + + rebuild() { + super.rebuild(); + + if (this.div === null) { + return; + } + + if (!this.isAttachedToDOM) { + this.parent.add(this); + } + } + + enableEditMode() { + if (this.isInEditMode()) { + return; + } + + this.parent.setEditingState(false); + this.parent.updateToolbar(_util.AnnotationEditorType.FREETEXT); + super.enableEditMode(); + this.enableEditing(); + this.overlayDiv.classList.remove("enabled"); + this.editorDiv.contentEditable = true; + this.div.draggable = false; + this.editorDiv.addEventListener("keydown", _classPrivateFieldGet(this, _boundEditorDivKeydown)); + this.editorDiv.addEventListener("focus", _classPrivateFieldGet(this, _boundEditorDivFocus)); + this.editorDiv.addEventListener("blur", _classPrivateFieldGet(this, _boundEditorDivBlur)); + } + + disableEditMode() { + if (!this.isInEditMode()) { + return; + } + + this.parent.setEditingState(true); + super.disableEditMode(); + this.disableEditing(); + this.overlayDiv.classList.add("enabled"); + this.editorDiv.contentEditable = false; + this.div.draggable = true; + this.editorDiv.removeEventListener("keydown", _classPrivateFieldGet(this, _boundEditorDivKeydown)); + this.editorDiv.removeEventListener("focus", _classPrivateFieldGet(this, _boundEditorDivFocus)); + this.editorDiv.removeEventListener("blur", _classPrivateFieldGet(this, _boundEditorDivBlur)); + this.div.focus(); + this.isEditing = false; + } + + focusin(event) { + super.focusin(event); + + if (event.target !== this.editorDiv) { + this.editorDiv.focus(); + } + } + + onceAdded() { + if (this.width) { + return; + } + + this.enableEditMode(); + this.editorDiv.focus(); + } + + isEmpty() { + return !this.editorDiv || this.editorDiv.innerText.trim() === ""; + } + + remove() { + this.isEditing = false; + this.parent.setEditingState(true); + super.remove(); + } + + commit() { + super.commit(); + + if (!_classPrivateFieldGet(this, _hasAlreadyBeenCommitted)) { + _classPrivateFieldSet(this, _hasAlreadyBeenCommitted, true); + + this.parent.addUndoableEditor(this); + } + + this.disableEditMode(); + + _classPrivateFieldSet(this, _content, _classPrivateMethodGet(this, _extractText, _extractText2).call(this).trimEnd()); + + _classPrivateMethodGet(this, _setEditorDimensions, _setEditorDimensions2).call(this); + } + + shouldGetKeyboardEvents() { + return this.isInEditMode(); + } + + dblclick(event) { + this.enableEditMode(); + this.editorDiv.focus(); + } + + keydown(event) { + if (event.target === this.div && event.key === "Enter") { + this.enableEditMode(); + this.editorDiv.focus(); + } + } + + editorDivKeydown(event) { + FreeTextEditor._keyboardManager.exec(this, event); + } + + editorDivFocus(event) { + this.isEditing = true; + } + + editorDivBlur(event) { + this.isEditing = false; + } + + disableEditing() { + this.editorDiv.setAttribute("role", "comment"); + this.editorDiv.removeAttribute("aria-multiline"); + } + + enableEditing() { + this.editorDiv.setAttribute("role", "textbox"); + this.editorDiv.setAttribute("aria-multiline", true); + } + + render() { + if (this.div) { + return this.div; + } + + let baseX, baseY; + + if (this.width) { + baseX = this.x; + baseY = this.y; + } + + super.render(); + this.editorDiv = document.createElement("div"); + this.editorDiv.className = "internal"; + this.editorDiv.setAttribute("id", `${this.id}-editor`); + this.enableEditing(); + + FreeTextEditor._l10nPromise.get("editor_free_text_aria_label").then(msg => { + var _this$editorDiv; + + return (_this$editorDiv = this.editorDiv) === null || _this$editorDiv === void 0 ? void 0 : _this$editorDiv.setAttribute("aria-label", msg); + }); + + FreeTextEditor._l10nPromise.get("free_text_default_content").then(msg => { + var _this$editorDiv2; + + return (_this$editorDiv2 = this.editorDiv) === null || _this$editorDiv2 === void 0 ? void 0 : _this$editorDiv2.setAttribute("default-content", msg); + }); + + this.editorDiv.contentEditable = true; + const { + style + } = this.editorDiv; + style.fontSize = `calc(${_classPrivateFieldGet(this, _fontSize)}px * var(--scale-factor))`; + style.color = _classPrivateFieldGet(this, _color); + this.div.append(this.editorDiv); + this.overlayDiv = document.createElement("div"); + this.overlayDiv.classList.add("overlay", "enabled"); + this.div.append(this.overlayDiv); + (0, _tools.bindEvents)(this, this.div, ["dblclick", "keydown"]); + + if (this.width) { + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight); + + for (const line of _classPrivateFieldGet(this, _content).split("\n")) { + const div = document.createElement("div"); + div.append(line ? document.createTextNode(line) : document.createElement("br")); + this.editorDiv.append(div); + } + + this.div.draggable = true; + this.editorDiv.contentEditable = false; } else { - left = tx[4] + fontAscent * Math.sin(angle); - top = tx[5] - fontAscent * Math.cos(angle); + this.div.draggable = false; + this.editorDiv.contentEditable = true; } - styleBuf[1] = left; - styleBuf[3] = top; - styleBuf[5] = fontHeight; - styleBuf[7] = style.fontFamily; - textDivProperties.style = styleBuf.join(''); - textDiv.setAttribute('style', textDivProperties.style); - textDiv.textContent = geom.str; + return this.div; + } - if (task._fontInspectorEnabled) { - textDiv.dataset.fontName = geom.fontName; + get contentDiv() { + return this.editorDiv; + } + + static deserialize(data, parent) { + const editor = super.deserialize(data, parent); + + _classPrivateFieldSet(editor, _fontSize, data.fontSize); + + _classPrivateFieldSet(editor, _color, _util.Util.makeHexColor(...data.color)); + + _classPrivateFieldSet(editor, _content, data.value); + + return editor; + } + + serialize() { + if (this.isEmpty()) { + return null; } - if (angle !== 0) { - textDivProperties.angle = angle * (180 / Math.PI); - } + const padding = FreeTextEditor._internalPadding * this.parent.scaleFactor; + const rect = this.getRect(padding, padding); - if (geom.str.length > 1) { - if (style.vertical) { - textDivProperties.canvasWidth = geom.height * task._viewport.scale; - } else { - textDivProperties.canvasWidth = geom.width * task._viewport.scale; - } - } + const color = _editor.AnnotationEditor._colorManager.convert(getComputedStyle(this.editorDiv).color); - task._textDivProperties.set(textDiv, textDivProperties); + return { + annotationType: _util.AnnotationEditorType.FREETEXT, + color, + fontSize: _classPrivateFieldGet(this, _fontSize), + value: _classPrivateFieldGet(this, _content), + pageIndex: this.parent.pageIndex, + rect, + rotation: this.rotation + }; + } - if (task._textContentStream) { - task._layoutText(textDiv); - } +} - if (task._enhanceTextSelection) { - var angleCos = 1, - angleSin = 0; +exports.FreeTextEditor = FreeTextEditor; - if (angle !== 0) { - angleCos = Math.cos(angle); - angleSin = Math.sin(angle); - } +function _updateFontSize2(fontSize) { + const setFontsize = size => { + this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`; + this.translate(0, -(size - _classPrivateFieldGet(this, _fontSize)) * this.parent.scaleFactor); - var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale; - var divHeight = fontHeight; - var m, b; + _classPrivateFieldSet(this, _fontSize, size); - if (angle !== 0) { - m = [angleCos, angleSin, -angleSin, angleCos, left, top]; - b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); - } else { - b = [left, top, left + divWidth, top + divHeight]; - } + _classPrivateMethodGet(this, _setEditorDimensions, _setEditorDimensions2).call(this); + }; - task._bounds.push({ - left: b[0], - top: b[1], - right: b[2], - bottom: b[3], - div: textDiv, - size: [divWidth, divHeight], - m: m - }); + const savedFontsize = _classPrivateFieldGet(this, _fontSize); + + this.parent.addCommands({ + cmd: () => { + setFontsize(fontSize); + }, + undo: () => { + setFontsize(savedFontsize); + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.FREETEXT_SIZE, + overwriteIfSameType: true, + keepUndo: true + }); +} + +function _updateColor2(color) { + const savedColor = _classPrivateFieldGet(this, _color); + + this.parent.addCommands({ + cmd: () => { + _classPrivateFieldSet(this, _color, color); + + this.editorDiv.style.color = color; + }, + undo: () => { + _classPrivateFieldSet(this, _color, savedColor); + + this.editorDiv.style.color = savedColor; + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.FREETEXT_COLOR, + overwriteIfSameType: true, + keepUndo: true + }); +} + +function _extractText2() { + const divs = this.editorDiv.getElementsByTagName("div"); + + if (divs.length === 0) { + return this.editorDiv.innerText; + } + + const buffer = []; + + for (let i = 0, ii = divs.length; i < ii; i++) { + const div = divs[i]; + const first = div.firstChild; + + if ((first === null || first === void 0 ? void 0 : first.nodeName) === "#text") { + buffer.push(first.data); + } else { + buffer.push(""); } } - function render(task) { - if (task._canceled) { + return buffer.join("\n"); +} + +function _setEditorDimensions2() { + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + const rect = this.div.getBoundingClientRect(); + this.width = rect.width / parentWidth; + this.height = rect.height / parentHeight; +} + +_defineProperty(FreeTextEditor, "_freeTextDefaultContent", ""); + +_defineProperty(FreeTextEditor, "_l10nPromise", void 0); + +_defineProperty(FreeTextEditor, "_internalPadding", 0); + +_defineProperty(FreeTextEditor, "_defaultColor", null); + +_defineProperty(FreeTextEditor, "_defaultFontSize", 10); + +_defineProperty(FreeTextEditor, "_keyboardManager", new _tools.KeyboardManager([[["ctrl+Enter", "mac+meta+Enter", "Escape", "mac+Escape"], FreeTextEditor.prototype.commitOrRemove]])); + +_defineProperty(FreeTextEditor, "_type", "freetext"); + +/***/ }), +/* 149 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.InkEditor = void 0; +Object.defineProperty(exports, "fitCurve", ({ + enumerable: true, + get: function () { + return _pdfjsFitCurve.fitCurve; + } +})); + +var _util = __w_pdfjs_require__(1); + +var _editor = __w_pdfjs_require__(131); + +var _pdfjsFitCurve = __w_pdfjs_require__(150); + +var _tools = __w_pdfjs_require__(132); + +function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); } + +function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } + +function _classStaticPrivateMethodGet(receiver, classConstructor, method) { _classCheckPrivateStaticAccess(receiver, classConstructor); return method; } + +function _classCheckPrivateStaticAccess(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError("Private static access of wrong provenance"); } } + +function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; } + +function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } } + +function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); } + +function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); } + +function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; } + +function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; } + +const RESIZER_SIZE = 16; + +var _aspectRatio = /*#__PURE__*/new WeakMap(); + +var _baseHeight = /*#__PURE__*/new WeakMap(); + +var _baseWidth = /*#__PURE__*/new WeakMap(); + +var _boundCanvasPointermove = /*#__PURE__*/new WeakMap(); + +var _boundCanvasPointerleave = /*#__PURE__*/new WeakMap(); + +var _boundCanvasPointerup = /*#__PURE__*/new WeakMap(); + +var _boundCanvasPointerdown = /*#__PURE__*/new WeakMap(); + +var _disableEditing = /*#__PURE__*/new WeakMap(); + +var _isCanvasInitialized = /*#__PURE__*/new WeakMap(); + +var _lastPoint = /*#__PURE__*/new WeakMap(); + +var _observer = /*#__PURE__*/new WeakMap(); + +var _realWidth = /*#__PURE__*/new WeakMap(); + +var _realHeight = /*#__PURE__*/new WeakMap(); + +var _requestFrameCallback = /*#__PURE__*/new WeakMap(); + +var _updateThickness = /*#__PURE__*/new WeakSet(); + +var _updateColor = /*#__PURE__*/new WeakSet(); + +var _updateOpacity = /*#__PURE__*/new WeakSet(); + +var _getInitialBBox = /*#__PURE__*/new WeakSet(); + +var _setStroke = /*#__PURE__*/new WeakSet(); + +var _startDrawing = /*#__PURE__*/new WeakSet(); + +var _draw = /*#__PURE__*/new WeakSet(); + +var _stopDrawing = /*#__PURE__*/new WeakSet(); + +var _redraw = /*#__PURE__*/new WeakSet(); + +var _endDrawing = /*#__PURE__*/new WeakSet(); + +var _createCanvas = /*#__PURE__*/new WeakSet(); + +var _createObserver = /*#__PURE__*/new WeakSet(); + +var _setCanvasDims = /*#__PURE__*/new WeakSet(); + +var _setScaleFactor = /*#__PURE__*/new WeakSet(); + +var _updateTransform = /*#__PURE__*/new WeakSet(); + +var _serializePaths = /*#__PURE__*/new WeakSet(); + +var _extractPointsOnBezier = /*#__PURE__*/new WeakSet(); + +var _isAlmostFlat = /*#__PURE__*/new WeakSet(); + +var _getBbox = /*#__PURE__*/new WeakSet(); + +var _getPadding = /*#__PURE__*/new WeakSet(); + +var _fitToContent = /*#__PURE__*/new WeakSet(); + +var _setMinDims = /*#__PURE__*/new WeakSet(); + +class InkEditor extends _editor.AnnotationEditor { + constructor(params) { + super({ ...params, + name: "inkEditor" + }); + + _classPrivateMethodInitSpec(this, _setMinDims); + + _classPrivateMethodInitSpec(this, _fitToContent); + + _classPrivateMethodInitSpec(this, _getPadding); + + _classPrivateMethodInitSpec(this, _getBbox); + + _classPrivateMethodInitSpec(this, _isAlmostFlat); + + _classPrivateMethodInitSpec(this, _extractPointsOnBezier); + + _classPrivateMethodInitSpec(this, _serializePaths); + + _classPrivateMethodInitSpec(this, _updateTransform); + + _classPrivateMethodInitSpec(this, _setScaleFactor); + + _classPrivateMethodInitSpec(this, _setCanvasDims); + + _classPrivateMethodInitSpec(this, _createObserver); + + _classPrivateMethodInitSpec(this, _createCanvas); + + _classPrivateMethodInitSpec(this, _endDrawing); + + _classPrivateMethodInitSpec(this, _redraw); + + _classPrivateMethodInitSpec(this, _stopDrawing); + + _classPrivateMethodInitSpec(this, _draw); + + _classPrivateMethodInitSpec(this, _startDrawing); + + _classPrivateMethodInitSpec(this, _setStroke); + + _classPrivateMethodInitSpec(this, _getInitialBBox); + + _classPrivateMethodInitSpec(this, _updateOpacity); + + _classPrivateMethodInitSpec(this, _updateColor); + + _classPrivateMethodInitSpec(this, _updateThickness); + + _classPrivateFieldInitSpec(this, _aspectRatio, { + writable: true, + value: 0 + }); + + _classPrivateFieldInitSpec(this, _baseHeight, { + writable: true, + value: 0 + }); + + _classPrivateFieldInitSpec(this, _baseWidth, { + writable: true, + value: 0 + }); + + _classPrivateFieldInitSpec(this, _boundCanvasPointermove, { + writable: true, + value: this.canvasPointermove.bind(this) + }); + + _classPrivateFieldInitSpec(this, _boundCanvasPointerleave, { + writable: true, + value: this.canvasPointerleave.bind(this) + }); + + _classPrivateFieldInitSpec(this, _boundCanvasPointerup, { + writable: true, + value: this.canvasPointerup.bind(this) + }); + + _classPrivateFieldInitSpec(this, _boundCanvasPointerdown, { + writable: true, + value: this.canvasPointerdown.bind(this) + }); + + _classPrivateFieldInitSpec(this, _disableEditing, { + writable: true, + value: false + }); + + _classPrivateFieldInitSpec(this, _isCanvasInitialized, { + writable: true, + value: false + }); + + _classPrivateFieldInitSpec(this, _lastPoint, { + writable: true, + value: null + }); + + _classPrivateFieldInitSpec(this, _observer, { + writable: true, + value: null + }); + + _classPrivateFieldInitSpec(this, _realWidth, { + writable: true, + value: 0 + }); + + _classPrivateFieldInitSpec(this, _realHeight, { + writable: true, + value: 0 + }); + + _classPrivateFieldInitSpec(this, _requestFrameCallback, { + writable: true, + value: null + }); + + this.color = params.color || null; + this.thickness = params.thickness || null; + this.opacity = params.opacity || null; + this.paths = []; + this.bezierPath2D = []; + this.currentPath = []; + this.scaleFactor = 1; + this.translationX = this.translationY = 0; + this.x = 0; + this.y = 0; + } + + static initialize(l10n) { + this._l10nPromise = new Map(["editor_ink_canvas_aria_label", "editor_ink_aria_label"].map(str => [str, l10n.get(str)])); + } + + static updateDefaultParams(type, value) { + switch (type) { + case _util.AnnotationEditorParamsType.INK_THICKNESS: + InkEditor._defaultThickness = value; + break; + + case _util.AnnotationEditorParamsType.INK_COLOR: + InkEditor._defaultColor = value; + break; + + case _util.AnnotationEditorParamsType.INK_OPACITY: + InkEditor._defaultOpacity = value / 100; + break; + } + } + + updateParams(type, value) { + switch (type) { + case _util.AnnotationEditorParamsType.INK_THICKNESS: + _classPrivateMethodGet(this, _updateThickness, _updateThickness2).call(this, value); + + break; + + case _util.AnnotationEditorParamsType.INK_COLOR: + _classPrivateMethodGet(this, _updateColor, _updateColor2).call(this, value); + + break; + + case _util.AnnotationEditorParamsType.INK_OPACITY: + _classPrivateMethodGet(this, _updateOpacity, _updateOpacity2).call(this, value); + + break; + } + } + + static get defaultPropertiesToUpdate() { + return [[_util.AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [_util.AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor], [_util.AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]]; + } + + get propertiesToUpdate() { + var _this$opacity; + + return [[_util.AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [_util.AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor], [_util.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * ((_this$opacity = this.opacity) !== null && _this$opacity !== void 0 ? _this$opacity : InkEditor._defaultOpacity))]]; + } + + rebuild() { + super.rebuild(); + + if (this.div === null) { return; } - var textDivs = task._textDivs; - var capability = task._capability; - var textDivsLength = textDivs.length; + if (!this.canvas) { + _classPrivateMethodGet(this, _createCanvas, _createCanvas2).call(this); - if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) { - task._renderingDone = true; - capability.resolve(); + _classPrivateMethodGet(this, _createObserver, _createObserver2).call(this); + } + + if (!this.isAttachedToDOM) { + this.parent.add(this); + + _classPrivateMethodGet(this, _setCanvasDims, _setCanvasDims2).call(this); + } + + _classPrivateMethodGet(this, _fitToContent, _fitToContent2).call(this); + } + + remove() { + if (this.canvas === null) { return; } - if (!task._textContentStream) { - for (var i = 0; i < textDivsLength; i++) { - task._layoutText(textDivs[i]); + if (!this.isEmpty()) { + this.commit(); + } + + this.canvas.width = this.canvas.height = 0; + this.canvas.remove(); + this.canvas = null; + + _classPrivateFieldGet(this, _observer).disconnect(); + + _classPrivateFieldSet(this, _observer, null); + + super.remove(); + } + + enableEditMode() { + if (_classPrivateFieldGet(this, _disableEditing) || this.canvas === null) { + return; + } + + super.enableEditMode(); + this.div.draggable = false; + this.canvas.addEventListener("pointerdown", _classPrivateFieldGet(this, _boundCanvasPointerdown)); + this.canvas.addEventListener("pointerup", _classPrivateFieldGet(this, _boundCanvasPointerup)); + } + + disableEditMode() { + if (!this.isInEditMode() || this.canvas === null) { + return; + } + + super.disableEditMode(); + this.div.draggable = !this.isEmpty(); + this.div.classList.remove("editing"); + this.canvas.removeEventListener("pointerdown", _classPrivateFieldGet(this, _boundCanvasPointerdown)); + this.canvas.removeEventListener("pointerup", _classPrivateFieldGet(this, _boundCanvasPointerup)); + } + + onceAdded() { + this.div.draggable = !this.isEmpty(); + } + + isEmpty() { + return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0; + } + + commit() { + if (_classPrivateFieldGet(this, _disableEditing)) { + return; + } + + super.commit(); + this.isEditing = false; + this.disableEditMode(); + this.setInForeground(); + + _classPrivateFieldSet(this, _disableEditing, true); + + this.div.classList.add("disabled"); + + _classPrivateMethodGet(this, _fitToContent, _fitToContent2).call(this, true); + + this.parent.addInkEditorIfNeeded(true); + this.parent.moveEditorInDOM(this); + this.div.focus(); + } + + focusin(event) { + super.focusin(event); + this.enableEditMode(); + } + + canvasPointerdown(event) { + if (event.button !== 0 || !this.isInEditMode() || _classPrivateFieldGet(this, _disableEditing)) { + return; + } + + this.setInForeground(); + + if (event.type !== "mouse") { + this.div.focus(); + } + + event.stopPropagation(); + this.canvas.addEventListener("pointerleave", _classPrivateFieldGet(this, _boundCanvasPointerleave)); + this.canvas.addEventListener("pointermove", _classPrivateFieldGet(this, _boundCanvasPointermove)); + + _classPrivateMethodGet(this, _startDrawing, _startDrawing2).call(this, event.offsetX, event.offsetY); + } + + canvasPointermove(event) { + event.stopPropagation(); + + _classPrivateMethodGet(this, _draw, _draw2).call(this, event.offsetX, event.offsetY); + } + + canvasPointerup(event) { + if (event.button !== 0) { + return; + } + + if (this.isInEditMode() && this.currentPath.length !== 0) { + event.stopPropagation(); + + _classPrivateMethodGet(this, _endDrawing, _endDrawing2).call(this, event); + + this.setInBackground(); + } + } + + canvasPointerleave(event) { + _classPrivateMethodGet(this, _endDrawing, _endDrawing2).call(this, event); + + this.setInBackground(); + } + + render() { + if (this.div) { + return this.div; + } + + let baseX, baseY; + + if (this.width) { + baseX = this.x; + baseY = this.y; + } + + super.render(); + + InkEditor._l10nPromise.get("editor_ink_aria_label").then(msg => { + var _this$div; + + return (_this$div = this.div) === null || _this$div === void 0 ? void 0 : _this$div.setAttribute("aria-label", msg); + }); + + const [x, y, w, h] = _classPrivateMethodGet(this, _getInitialBBox, _getInitialBBox2).call(this); + + this.setAt(x, y, 0, 0); + this.setDims(w, h); + + _classPrivateMethodGet(this, _createCanvas, _createCanvas2).call(this); + + if (this.width) { + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight); + + _classPrivateFieldSet(this, _isCanvasInitialized, true); + + _classPrivateMethodGet(this, _setCanvasDims, _setCanvasDims2).call(this); + + this.setDims(this.width * parentWidth, this.height * parentHeight); + + _classPrivateMethodGet(this, _redraw, _redraw2).call(this); + + _classPrivateMethodGet(this, _setMinDims, _setMinDims2).call(this); + + this.div.classList.add("disabled"); + } else { + this.div.classList.add("editing"); + this.enableEditMode(); + } + + _classPrivateMethodGet(this, _createObserver, _createObserver2).call(this); + + return this.div; + } + + setDimensions(width, height) { + const roundedWidth = Math.round(width); + const roundedHeight = Math.round(height); + + if (_classPrivateFieldGet(this, _realWidth) === roundedWidth && _classPrivateFieldGet(this, _realHeight) === roundedHeight) { + return; + } + + _classPrivateFieldSet(this, _realWidth, roundedWidth); + + _classPrivateFieldSet(this, _realHeight, roundedHeight); + + this.canvas.style.visibility = "hidden"; + + if (_classPrivateFieldGet(this, _aspectRatio) && Math.abs(_classPrivateFieldGet(this, _aspectRatio) - width / height) > 1e-2) { + height = Math.ceil(width / _classPrivateFieldGet(this, _aspectRatio)); + this.setDims(width, height); + } + + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.width = width / parentWidth; + this.height = height / parentHeight; + + if (_classPrivateFieldGet(this, _disableEditing)) { + _classPrivateMethodGet(this, _setScaleFactor, _setScaleFactor2).call(this, width, height); + } + + _classPrivateMethodGet(this, _setCanvasDims, _setCanvasDims2).call(this); + + _classPrivateMethodGet(this, _redraw, _redraw2).call(this); + + this.canvas.style.visibility = "visible"; + } + + static deserialize(data, parent) { + const editor = super.deserialize(data, parent); + editor.thickness = data.thickness; + editor.color = _util.Util.makeHexColor(...data.color); + editor.opacity = data.opacity; + const [pageWidth, pageHeight] = parent.pageDimensions; + const width = editor.width * pageWidth; + const height = editor.height * pageHeight; + const scaleFactor = parent.scaleFactor; + const padding = data.thickness / 2; + + _classPrivateFieldSet(editor, _aspectRatio, width / height); + + _classPrivateFieldSet(editor, _disableEditing, true); + + _classPrivateFieldSet(editor, _realWidth, Math.round(width)); + + _classPrivateFieldSet(editor, _realHeight, Math.round(height)); + + for (const { + bezier + } of data.paths) { + const path = []; + editor.paths.push(path); + let p0 = scaleFactor * (bezier[0] - padding); + let p1 = scaleFactor * (height - bezier[1] - padding); + + for (let i = 2, ii = bezier.length; i < ii; i += 6) { + const p10 = scaleFactor * (bezier[i] - padding); + const p11 = scaleFactor * (height - bezier[i + 1] - padding); + const p20 = scaleFactor * (bezier[i + 2] - padding); + const p21 = scaleFactor * (height - bezier[i + 3] - padding); + const p30 = scaleFactor * (bezier[i + 4] - padding); + const p31 = scaleFactor * (height - bezier[i + 5] - padding); + path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]); + p0 = p30; + p1 = p31; + } + + const path2D = _classStaticPrivateMethodGet(this, InkEditor, _buildPath2D).call(this, path); + + editor.bezierPath2D.push(path2D); + } + + const bbox = _classPrivateMethodGet(editor, _getBbox, _getBbox2).call(editor); + + _classPrivateFieldSet(editor, _baseWidth, Math.max(RESIZER_SIZE, bbox[2] - bbox[0])); + + _classPrivateFieldSet(editor, _baseHeight, Math.max(RESIZER_SIZE, bbox[3] - bbox[1])); + + _classPrivateMethodGet(editor, _setScaleFactor, _setScaleFactor2).call(editor, width, height); + + return editor; + } + + serialize() { + if (this.isEmpty()) { + return null; + } + + const rect = this.getRect(0, 0); + const height = this.rotation % 180 === 0 ? rect[3] - rect[1] : rect[2] - rect[0]; + + const color = _editor.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle); + + return { + annotationType: _util.AnnotationEditorType.INK, + color, + thickness: this.thickness, + opacity: this.opacity, + paths: _classPrivateMethodGet(this, _serializePaths, _serializePaths2).call(this, this.scaleFactor / this.parent.scaleFactor, this.translationX, this.translationY, height), + pageIndex: this.parent.pageIndex, + rect, + rotation: this.rotation + }; + } + +} + +exports.InkEditor = InkEditor; + +function _updateThickness2(thickness) { + const savedThickness = this.thickness; + this.parent.addCommands({ + cmd: () => { + this.thickness = thickness; + + _classPrivateMethodGet(this, _fitToContent, _fitToContent2).call(this); + }, + undo: () => { + this.thickness = savedThickness; + + _classPrivateMethodGet(this, _fitToContent, _fitToContent2).call(this); + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.INK_THICKNESS, + overwriteIfSameType: true, + keepUndo: true + }); +} + +function _updateColor2(color) { + const savedColor = this.color; + this.parent.addCommands({ + cmd: () => { + this.color = color; + + _classPrivateMethodGet(this, _redraw, _redraw2).call(this); + }, + undo: () => { + this.color = savedColor; + + _classPrivateMethodGet(this, _redraw, _redraw2).call(this); + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.INK_COLOR, + overwriteIfSameType: true, + keepUndo: true + }); +} + +function _updateOpacity2(opacity) { + opacity /= 100; + const savedOpacity = this.opacity; + this.parent.addCommands({ + cmd: () => { + this.opacity = opacity; + + _classPrivateMethodGet(this, _redraw, _redraw2).call(this); + }, + undo: () => { + this.opacity = savedOpacity; + + _classPrivateMethodGet(this, _redraw, _redraw2).call(this); + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.INK_OPACITY, + overwriteIfSameType: true, + keepUndo: true + }); +} + +function _getInitialBBox2() { + const { + width, + height, + rotation + } = this.parent.viewport; + + switch (rotation) { + case 90: + return [0, width, width, height]; + + case 180: + return [width, height, width, height]; + + case 270: + return [height, 0, width, height]; + + default: + return [0, 0, width, height]; + } +} + +function _setStroke2() { + this.ctx.lineWidth = this.thickness * this.parent.scaleFactor / this.scaleFactor; + this.ctx.lineCap = "round"; + this.ctx.lineJoin = "round"; + this.ctx.miterLimit = 10; + this.ctx.strokeStyle = `${this.color}${(0, _tools.opacityToHex)(this.opacity)}`; +} + +function _startDrawing2(x, y) { + this.isEditing = true; + + if (!_classPrivateFieldGet(this, _isCanvasInitialized)) { + var _this$opacity2; + + _classPrivateFieldSet(this, _isCanvasInitialized, true); + + _classPrivateMethodGet(this, _setCanvasDims, _setCanvasDims2).call(this); + + this.thickness || (this.thickness = InkEditor._defaultThickness); + this.color || (this.color = InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor); + (_this$opacity2 = this.opacity) !== null && _this$opacity2 !== void 0 ? _this$opacity2 : this.opacity = InkEditor._defaultOpacity; + } + + this.currentPath.push([x, y]); + + _classPrivateFieldSet(this, _lastPoint, null); + + _classPrivateMethodGet(this, _setStroke, _setStroke2).call(this); + + this.ctx.beginPath(); + this.ctx.moveTo(x, y); + + _classPrivateFieldSet(this, _requestFrameCallback, () => { + if (!_classPrivateFieldGet(this, _requestFrameCallback)) { + return; + } + + if (_classPrivateFieldGet(this, _lastPoint)) { + if (this.isEmpty()) { + this.ctx.setTransform(1, 0, 0, 1, 0, 0); + this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + } else { + _classPrivateMethodGet(this, _redraw, _redraw2).call(this); + } + + this.ctx.lineTo(..._classPrivateFieldGet(this, _lastPoint)); + + _classPrivateFieldSet(this, _lastPoint, null); + + this.ctx.stroke(); + } + + window.requestAnimationFrame(_classPrivateFieldGet(this, _requestFrameCallback)); + }); + + window.requestAnimationFrame(_classPrivateFieldGet(this, _requestFrameCallback)); +} + +function _draw2(x, y) { + const [lastX, lastY] = this.currentPath.at(-1); + + if (x === lastX && y === lastY) { + return; + } + + this.currentPath.push([x, y]); + + _classPrivateFieldSet(this, _lastPoint, [x, y]); +} + +function _stopDrawing2(x, y) { + this.ctx.closePath(); + + _classPrivateFieldSet(this, _requestFrameCallback, null); + + x = Math.min(Math.max(x, 0), this.canvas.width); + y = Math.min(Math.max(y, 0), this.canvas.height); + const [lastX, lastY] = this.currentPath.at(-1); + + if (x !== lastX || y !== lastY) { + this.currentPath.push([x, y]); + } + + let bezier; + + if (this.currentPath.length !== 1) { + bezier = (0, _pdfjsFitCurve.fitCurve)(this.currentPath, 30, null); + } else { + const xy = [x, y]; + bezier = [[xy, xy.slice(), xy.slice(), xy]]; + } + + const path2D = _classStaticPrivateMethodGet(InkEditor, InkEditor, _buildPath2D).call(InkEditor, bezier); + + this.currentPath.length = 0; + + const cmd = () => { + this.paths.push(bezier); + this.bezierPath2D.push(path2D); + this.rebuild(); + }; + + const undo = () => { + this.paths.pop(); + this.bezierPath2D.pop(); + + if (this.paths.length === 0) { + this.remove(); + } else { + if (!this.canvas) { + _classPrivateMethodGet(this, _createCanvas, _createCanvas2).call(this); + + _classPrivateMethodGet(this, _createObserver, _createObserver2).call(this); + } + + _classPrivateMethodGet(this, _fitToContent, _fitToContent2).call(this); + } + }; + + this.parent.addCommands({ + cmd, + undo, + mustExec: true + }); +} + +function _redraw2() { + if (this.isEmpty()) { + _classPrivateMethodGet(this, _updateTransform, _updateTransform2).call(this); + + return; + } + + _classPrivateMethodGet(this, _setStroke, _setStroke2).call(this); + + const { + canvas, + ctx + } = this; + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.clearRect(0, 0, canvas.width, canvas.height); + + _classPrivateMethodGet(this, _updateTransform, _updateTransform2).call(this); + + for (const path of this.bezierPath2D) { + ctx.stroke(path); + } +} + +function _endDrawing2(event) { + _classPrivateMethodGet(this, _stopDrawing, _stopDrawing2).call(this, event.offsetX, event.offsetY); + + this.canvas.removeEventListener("pointerleave", _classPrivateFieldGet(this, _boundCanvasPointerleave)); + this.canvas.removeEventListener("pointermove", _classPrivateFieldGet(this, _boundCanvasPointermove)); + this.parent.addToAnnotationStorage(this); +} + +function _createCanvas2() { + this.canvas = document.createElement("canvas"); + this.canvas.width = this.canvas.height = 0; + this.canvas.className = "inkEditorCanvas"; + + InkEditor._l10nPromise.get("editor_ink_canvas_aria_label").then(msg => { + var _this$canvas; + + return (_this$canvas = this.canvas) === null || _this$canvas === void 0 ? void 0 : _this$canvas.setAttribute("aria-label", msg); + }); + + this.div.append(this.canvas); + this.ctx = this.canvas.getContext("2d"); +} + +function _createObserver2() { + _classPrivateFieldSet(this, _observer, new ResizeObserver(entries => { + const rect = entries[0].contentRect; + + if (rect.width && rect.height) { + this.setDimensions(rect.width, rect.height); + } + })); + + _classPrivateFieldGet(this, _observer).observe(this.div); +} + +function _setCanvasDims2() { + if (!_classPrivateFieldGet(this, _isCanvasInitialized)) { + return; + } + + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.canvas.width = Math.ceil(this.width * parentWidth); + this.canvas.height = Math.ceil(this.height * parentHeight); + + _classPrivateMethodGet(this, _updateTransform, _updateTransform2).call(this); +} + +function _setScaleFactor2(width, height) { + const padding = _classPrivateMethodGet(this, _getPadding, _getPadding2).call(this); + + const scaleFactorW = (width - padding) / _classPrivateFieldGet(this, _baseWidth); + + const scaleFactorH = (height - padding) / _classPrivateFieldGet(this, _baseHeight); + + this.scaleFactor = Math.min(scaleFactorW, scaleFactorH); +} + +function _updateTransform2() { + const padding = _classPrivateMethodGet(this, _getPadding, _getPadding2).call(this) / 2; + this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding); +} + +function _buildPath2D(bezier) { + const path2D = new Path2D(); + + for (let i = 0, ii = bezier.length; i < ii; i++) { + const [first, control1, control2, second] = bezier[i]; + + if (i === 0) { + path2D.moveTo(...first); + } + + path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]); + } + + return path2D; +} + +function _serializePaths2(s, tx, ty, h) { + const NUMBER_OF_POINTS_ON_BEZIER_CURVE = 4; + const paths = []; + const padding = this.thickness / 2; + let buffer, points; + + for (const bezier of this.paths) { + buffer = []; + points = []; + + for (let i = 0, ii = bezier.length; i < ii; i++) { + const [first, control1, control2, second] = bezier[i]; + const p10 = s * (first[0] + tx) + padding; + const p11 = h - s * (first[1] + ty) - padding; + const p20 = s * (control1[0] + tx) + padding; + const p21 = h - s * (control1[1] + ty) - padding; + const p30 = s * (control2[0] + tx) + padding; + const p31 = h - s * (control2[1] + ty) - padding; + const p40 = s * (second[0] + tx) + padding; + const p41 = h - s * (second[1] + ty) - padding; + + if (i === 0) { + buffer.push(p10, p11); + points.push(p10, p11); + } + + buffer.push(p20, p21, p30, p31, p40, p41); + + _classPrivateMethodGet(this, _extractPointsOnBezier, _extractPointsOnBezier2).call(this, p10, p11, p20, p21, p30, p31, p40, p41, NUMBER_OF_POINTS_ON_BEZIER_CURVE, points); + } + + paths.push({ + bezier: buffer, + points + }); + } + + return paths; +} + +function _extractPointsOnBezier2(p10, p11, p20, p21, p30, p31, p40, p41, n, points) { + if (_classPrivateMethodGet(this, _isAlmostFlat, _isAlmostFlat2).call(this, p10, p11, p20, p21, p30, p31, p40, p41)) { + points.push(p40, p41); + return; + } + + for (let i = 1; i < n - 1; i++) { + const t = i / n; + const mt = 1 - t; + let q10 = t * p10 + mt * p20; + let q11 = t * p11 + mt * p21; + let q20 = t * p20 + mt * p30; + let q21 = t * p21 + mt * p31; + const q30 = t * p30 + mt * p40; + const q31 = t * p31 + mt * p41; + q10 = t * q10 + mt * q20; + q11 = t * q11 + mt * q21; + q20 = t * q20 + mt * q30; + q21 = t * q21 + mt * q31; + q10 = t * q10 + mt * q20; + q11 = t * q11 + mt * q21; + points.push(q10, q11); + } + + points.push(p40, p41); +} + +function _isAlmostFlat2(p10, p11, p20, p21, p30, p31, p40, p41) { + const tol = 10; + const ax = (3 * p20 - 2 * p10 - p40) ** 2; + const ay = (3 * p21 - 2 * p11 - p41) ** 2; + const bx = (3 * p30 - p10 - 2 * p40) ** 2; + const by = (3 * p31 - p11 - 2 * p41) ** 2; + return Math.max(ax, bx) + Math.max(ay, by) <= tol; +} + +function _getBbox2() { + let xMin = Infinity; + let xMax = -Infinity; + let yMin = Infinity; + let yMax = -Infinity; + + for (const path of this.paths) { + for (const [first, control1, control2, second] of path) { + const bbox = _util.Util.bezierBoundingBox(...first, ...control1, ...control2, ...second); + + xMin = Math.min(xMin, bbox[0]); + yMin = Math.min(yMin, bbox[1]); + xMax = Math.max(xMax, bbox[2]); + yMax = Math.max(yMax, bbox[3]); + } + } + + return [xMin, yMin, xMax, yMax]; +} + +function _getPadding2() { + return _classPrivateFieldGet(this, _disableEditing) ? Math.ceil(this.thickness * this.parent.scaleFactor) : 0; +} + +function _fitToContent2() { + let firstTime = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + if (this.isEmpty()) { + return; + } + + if (!_classPrivateFieldGet(this, _disableEditing)) { + _classPrivateMethodGet(this, _redraw, _redraw2).call(this); + + return; + } + + const bbox = _classPrivateMethodGet(this, _getBbox, _getBbox2).call(this); + + const padding = _classPrivateMethodGet(this, _getPadding, _getPadding2).call(this); + + _classPrivateFieldSet(this, _baseWidth, Math.max(RESIZER_SIZE, bbox[2] - bbox[0])); + + _classPrivateFieldSet(this, _baseHeight, Math.max(RESIZER_SIZE, bbox[3] - bbox[1])); + + const width = Math.ceil(padding + _classPrivateFieldGet(this, _baseWidth) * this.scaleFactor); + const height = Math.ceil(padding + _classPrivateFieldGet(this, _baseHeight) * this.scaleFactor); + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.width = width / parentWidth; + this.height = height / parentHeight; + + _classPrivateFieldSet(this, _aspectRatio, width / height); + + _classPrivateMethodGet(this, _setMinDims, _setMinDims2).call(this); + + const prevTranslationX = this.translationX; + const prevTranslationY = this.translationY; + this.translationX = -bbox[0]; + this.translationY = -bbox[1]; + + _classPrivateMethodGet(this, _setCanvasDims, _setCanvasDims2).call(this); + + _classPrivateMethodGet(this, _redraw, _redraw2).call(this); + + _classPrivateFieldSet(this, _realWidth, width); + + _classPrivateFieldSet(this, _realHeight, height); + + this.setDims(width, height); + const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0; + this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding); +} + +function _setMinDims2() { + const { + style + } = this.div; + + if (_classPrivateFieldGet(this, _aspectRatio) >= 1) { + style.minHeight = `${RESIZER_SIZE}px`; + style.minWidth = `${Math.round(_classPrivateFieldGet(this, _aspectRatio) * RESIZER_SIZE)}px`; + } else { + style.minWidth = `${RESIZER_SIZE}px`; + style.minHeight = `${Math.round(RESIZER_SIZE / _classPrivateFieldGet(this, _aspectRatio))}px`; + } +} + +_defineProperty(InkEditor, "_defaultColor", null); + +_defineProperty(InkEditor, "_defaultOpacity", 1); + +_defineProperty(InkEditor, "_defaultThickness", 1); + +_defineProperty(InkEditor, "_l10nPromise", void 0); + +_defineProperty(InkEditor, "_type", "ink"); + +/***/ }), +/* 150 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.fitCurve = void 0; + +const fitCurve = __w_pdfjs_require__(151); + +exports.fitCurve = fitCurve; + +/***/ }), +/* 151 */ +/***/ ((module) => { + +"use strict"; + + +function fitCurve(points, maxError, progressCallback) { + if (!Array.isArray(points)) { + throw new TypeError("First argument should be an array"); + } + + points.forEach(point => { + if (!Array.isArray(point) || point.some(item => typeof item !== 'number') || point.length !== points[0].length) { + throw Error("Each point should be an array of numbers. Each point should have the same amount of numbers."); + } + }); + points = points.filter((point, i) => i === 0 || !point.every((val, j) => val === points[i - 1][j])); + + if (points.length < 2) { + return []; + } + + const len = points.length; + const leftTangent = createTangent(points[1], points[0]); + const rightTangent = createTangent(points[len - 2], points[len - 1]); + return fitCubic(points, leftTangent, rightTangent, maxError, progressCallback); +} + +function fitCubic(points, leftTangent, rightTangent, error, progressCallback) { + const MaxIterations = 20; + var bezCurve, u, uPrime, maxError, prevErr, splitPoint, prevSplit, centerVector, toCenterTangent, fromCenterTangent, beziers, dist, i; + + if (points.length === 2) { + dist = maths.vectorLen(maths.subtract(points[0], points[1])) / 3.0; + bezCurve = [points[0], maths.addArrays(points[0], maths.mulItems(leftTangent, dist)), maths.addArrays(points[1], maths.mulItems(rightTangent, dist)), points[1]]; + return [bezCurve]; + } + + u = chordLengthParameterize(points); + [bezCurve, maxError, splitPoint] = generateAndReport(points, u, u, leftTangent, rightTangent, progressCallback); + + if (maxError === 0 || maxError < error) { + return [bezCurve]; + } + + if (maxError < error * error) { + uPrime = u; + prevErr = maxError; + prevSplit = splitPoint; + + for (i = 0; i < MaxIterations; i++) { + uPrime = reparameterize(bezCurve, points, uPrime); + [bezCurve, maxError, splitPoint] = generateAndReport(points, u, uPrime, leftTangent, rightTangent, progressCallback); + + if (maxError < error) { + return [bezCurve]; + } else if (splitPoint === prevSplit) { + let errChange = maxError / prevErr; + + if (errChange > .9999 && errChange < 1.0001) { + break; + } + } + + prevErr = maxError; + prevSplit = splitPoint; + } + } + + beziers = []; + centerVector = maths.subtract(points[splitPoint - 1], points[splitPoint + 1]); + + if (centerVector.every(val => val === 0)) { + centerVector = maths.subtract(points[splitPoint - 1], points[splitPoint]); + [centerVector[0], centerVector[1]] = [-centerVector[1], centerVector[0]]; + } + + toCenterTangent = maths.normalize(centerVector); + fromCenterTangent = maths.mulItems(toCenterTangent, -1); + beziers = beziers.concat(fitCubic(points.slice(0, splitPoint + 1), leftTangent, toCenterTangent, error, progressCallback)); + beziers = beziers.concat(fitCubic(points.slice(splitPoint), fromCenterTangent, rightTangent, error, progressCallback)); + return beziers; +} + +; + +function generateAndReport(points, paramsOrig, paramsPrime, leftTangent, rightTangent, progressCallback) { + var bezCurve, maxError, splitPoint; + bezCurve = generateBezier(points, paramsPrime, leftTangent, rightTangent, progressCallback); + [maxError, splitPoint] = computeMaxError(points, bezCurve, paramsOrig); + + if (progressCallback) { + progressCallback({ + bez: bezCurve, + points: points, + params: paramsOrig, + maxErr: maxError, + maxPoint: splitPoint + }); + } + + return [bezCurve, maxError, splitPoint]; +} + +function generateBezier(points, parameters, leftTangent, rightTangent) { + var bezCurve, + A, + a, + C, + X, + det_C0_C1, + det_C0_X, + det_X_C1, + alpha_l, + alpha_r, + epsilon, + segLength, + i, + len, + tmp, + u, + ux, + firstPoint = points[0], + lastPoint = points[points.length - 1]; + bezCurve = [firstPoint, null, null, lastPoint]; + A = maths.zeros_Xx2x2(parameters.length); + + for (i = 0, len = parameters.length; i < len; i++) { + u = parameters[i]; + ux = 1 - u; + a = A[i]; + a[0] = maths.mulItems(leftTangent, 3 * u * (ux * ux)); + a[1] = maths.mulItems(rightTangent, 3 * ux * (u * u)); + } + + C = [[0, 0], [0, 0]]; + X = [0, 0]; + + for (i = 0, len = points.length; i < len; i++) { + u = parameters[i]; + a = A[i]; + C[0][0] += maths.dot(a[0], a[0]); + C[0][1] += maths.dot(a[0], a[1]); + C[1][0] += maths.dot(a[0], a[1]); + C[1][1] += maths.dot(a[1], a[1]); + tmp = maths.subtract(points[i], bezier.q([firstPoint, firstPoint, lastPoint, lastPoint], u)); + X[0] += maths.dot(a[0], tmp); + X[1] += maths.dot(a[1], tmp); + } + + det_C0_C1 = C[0][0] * C[1][1] - C[1][0] * C[0][1]; + det_C0_X = C[0][0] * X[1] - C[1][0] * X[0]; + det_X_C1 = X[0] * C[1][1] - X[1] * C[0][1]; + alpha_l = det_C0_C1 === 0 ? 0 : det_X_C1 / det_C0_C1; + alpha_r = det_C0_C1 === 0 ? 0 : det_C0_X / det_C0_C1; + segLength = maths.vectorLen(maths.subtract(firstPoint, lastPoint)); + epsilon = 1.0e-6 * segLength; + + if (alpha_l < epsilon || alpha_r < epsilon) { + bezCurve[1] = maths.addArrays(firstPoint, maths.mulItems(leftTangent, segLength / 3.0)); + bezCurve[2] = maths.addArrays(lastPoint, maths.mulItems(rightTangent, segLength / 3.0)); + } else { + bezCurve[1] = maths.addArrays(firstPoint, maths.mulItems(leftTangent, alpha_l)); + bezCurve[2] = maths.addArrays(lastPoint, maths.mulItems(rightTangent, alpha_r)); + } + + return bezCurve; +} + +; + +function reparameterize(bezier, points, parameters) { + return parameters.map((p, i) => newtonRaphsonRootFind(bezier, points[i], p)); +} + +; + +function newtonRaphsonRootFind(bez, point, u) { + var d = maths.subtract(bezier.q(bez, u), point), + qprime = bezier.qprime(bez, u), + numerator = maths.mulMatrix(d, qprime), + denominator = maths.sum(maths.squareItems(qprime)) + 2 * maths.mulMatrix(d, bezier.qprimeprime(bez, u)); + + if (denominator === 0) { + return u; + } else { + return u - numerator / denominator; + } +} + +; + +function chordLengthParameterize(points) { + var u = [], + currU, + prevU, + prevP; + points.forEach((p, i) => { + currU = i ? prevU + maths.vectorLen(maths.subtract(p, prevP)) : 0; + u.push(currU); + prevU = currU; + prevP = p; + }); + u = u.map(x => x / prevU); + return u; +} + +; + +function computeMaxError(points, bez, parameters) { + var dist, maxDist, splitPoint, v, i, count, point, t; + maxDist = 0; + splitPoint = Math.floor(points.length / 2); + const t_distMap = mapTtoRelativeDistances(bez, 10); + + for (i = 0, count = points.length; i < count; i++) { + point = points[i]; + t = find_t(bez, parameters[i], t_distMap, 10); + v = maths.subtract(bezier.q(bez, t), point); + dist = v[0] * v[0] + v[1] * v[1]; + + if (dist > maxDist) { + maxDist = dist; + splitPoint = i; + } + } + + return [maxDist, splitPoint]; +} + +; + +var mapTtoRelativeDistances = function (bez, B_parts) { + var B_t_curr; + var B_t_dist = [0]; + var B_t_prev = bez[0]; + var sumLen = 0; + + for (var i = 1; i <= B_parts; i++) { + B_t_curr = bezier.q(bez, i / B_parts); + sumLen += maths.vectorLen(maths.subtract(B_t_curr, B_t_prev)); + B_t_dist.push(sumLen); + B_t_prev = B_t_curr; + } + + B_t_dist = B_t_dist.map(x => x / sumLen); + return B_t_dist; +}; + +function find_t(bez, param, t_distMap, B_parts) { + if (param < 0) { + return 0; + } + + if (param > 1) { + return 1; + } + + var lenMax, lenMin, tMax, tMin, t; + + for (var i = 1; i <= B_parts; i++) { + if (param <= t_distMap[i]) { + tMin = (i - 1) / B_parts; + tMax = i / B_parts; + lenMin = t_distMap[i - 1]; + lenMax = t_distMap[i]; + t = (param - lenMin) / (lenMax - lenMin) * (tMax - tMin) + tMin; + break; + } + } + + return t; +} + +function createTangent(pointA, pointB) { + return maths.normalize(maths.subtract(pointA, pointB)); +} + +class maths { + static zeros_Xx2x2(x) { + var zs = []; + + while (x--) { + zs.push([0, 0]); + } + + return zs; + } + + static mulItems(items, multiplier) { + return items.map(x => x * multiplier); + } + + static mulMatrix(m1, m2) { + return m1.reduce((sum, x1, i) => sum + x1 * m2[i], 0); + } + + static subtract(arr1, arr2) { + return arr1.map((x1, i) => x1 - arr2[i]); + } + + static addArrays(arr1, arr2) { + return arr1.map((x1, i) => x1 + arr2[i]); + } + + static addItems(items, addition) { + return items.map(x => x + addition); + } + + static sum(items) { + return items.reduce((sum, x) => sum + x); + } + + static dot(m1, m2) { + return maths.mulMatrix(m1, m2); + } + + static vectorLen(v) { + return Math.hypot(...v); + } + + static divItems(items, divisor) { + return items.map(x => x / divisor); + } + + static squareItems(items) { + return items.map(x => x * x); + } + + static normalize(v) { + return this.divItems(v, this.vectorLen(v)); + } + +} + +class bezier { + static q(ctrlPoly, t) { + var tx = 1.0 - t; + var pA = maths.mulItems(ctrlPoly[0], tx * tx * tx), + pB = maths.mulItems(ctrlPoly[1], 3 * tx * tx * t), + pC = maths.mulItems(ctrlPoly[2], 3 * tx * t * t), + pD = maths.mulItems(ctrlPoly[3], t * t * t); + return maths.addArrays(maths.addArrays(pA, pB), maths.addArrays(pC, pD)); + } + + static qprime(ctrlPoly, t) { + var tx = 1.0 - t; + var pA = maths.mulItems(maths.subtract(ctrlPoly[1], ctrlPoly[0]), 3 * tx * tx), + pB = maths.mulItems(maths.subtract(ctrlPoly[2], ctrlPoly[1]), 6 * tx * t), + pC = maths.mulItems(maths.subtract(ctrlPoly[3], ctrlPoly[2]), 3 * t * t); + return maths.addArrays(maths.addArrays(pA, pB), pC); + } + + static qprimeprime(ctrlPoly, t) { + return maths.addArrays(maths.mulItems(maths.addArrays(maths.subtract(ctrlPoly[2], maths.mulItems(ctrlPoly[1], 2)), ctrlPoly[0]), 6 * (1.0 - t)), maths.mulItems(maths.addArrays(maths.subtract(ctrlPoly[3], maths.mulItems(ctrlPoly[2], 2)), ctrlPoly[1]), 6 * t)); + } + +} + +module.exports = fitCurve; +module.exports.fitCubic = fitCubic; +module.exports.createTangent = createTangent; + +/***/ }), +/* 152 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationLayer = void 0; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(133); + +var _annotation_storage = __w_pdfjs_require__(130); + +var _scripting_utils = __w_pdfjs_require__(153); + +var _xfa_layer = __w_pdfjs_require__(154); + +function _classStaticPrivateMethodGet(receiver, classConstructor, method) { _classCheckPrivateStaticAccess(receiver, classConstructor); return method; } + +function _classCheckPrivateStaticAccess(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError("Private static access of wrong provenance"); } } + +const DEFAULT_TAB_INDEX = 1000; +const DEFAULT_FONT_SIZE = 9; +const GetElementsByNameSet = new WeakSet(); + +function getRectDims(rect) { + return { + width: rect[2] - rect[0], + height: rect[3] - rect[1] + }; +} + +class AnnotationElementFactory { + static create(parameters) { + const subtype = parameters.data.annotationType; + + switch (subtype) { + case _util.AnnotationType.LINK: + return new LinkAnnotationElement(parameters); + + case _util.AnnotationType.TEXT: + return new TextAnnotationElement(parameters); + + case _util.AnnotationType.WIDGET: + const fieldType = parameters.data.fieldType; + + switch (fieldType) { + case "Tx": + return new TextWidgetAnnotationElement(parameters); + + case "Btn": + if (parameters.data.radioButton) { + return new RadioButtonWidgetAnnotationElement(parameters); + } else if (parameters.data.checkBox) { + return new CheckboxWidgetAnnotationElement(parameters); + } + + return new PushButtonWidgetAnnotationElement(parameters); + + case "Ch": + return new ChoiceWidgetAnnotationElement(parameters); + } + + return new WidgetAnnotationElement(parameters); + + case _util.AnnotationType.POPUP: + return new PopupAnnotationElement(parameters); + + case _util.AnnotationType.FREETEXT: + return new FreeTextAnnotationElement(parameters); + + case _util.AnnotationType.LINE: + return new LineAnnotationElement(parameters); + + case _util.AnnotationType.SQUARE: + return new SquareAnnotationElement(parameters); + + case _util.AnnotationType.CIRCLE: + return new CircleAnnotationElement(parameters); + + case _util.AnnotationType.POLYLINE: + return new PolylineAnnotationElement(parameters); + + case _util.AnnotationType.CARET: + return new CaretAnnotationElement(parameters); + + case _util.AnnotationType.INK: + return new InkAnnotationElement(parameters); + + case _util.AnnotationType.POLYGON: + return new PolygonAnnotationElement(parameters); + + case _util.AnnotationType.HIGHLIGHT: + return new HighlightAnnotationElement(parameters); + + case _util.AnnotationType.UNDERLINE: + return new UnderlineAnnotationElement(parameters); + + case _util.AnnotationType.SQUIGGLY: + return new SquigglyAnnotationElement(parameters); + + case _util.AnnotationType.STRIKEOUT: + return new StrikeOutAnnotationElement(parameters); + + case _util.AnnotationType.STAMP: + return new StampAnnotationElement(parameters); + + case _util.AnnotationType.FILEATTACHMENT: + return new FileAttachmentAnnotationElement(parameters); + + default: + return new AnnotationElement(parameters); + } + } + +} + +class AnnotationElement { + constructor(parameters) { + let { + isRenderable = false, + ignoreBorder = false, + createQuadrilaterals = false + } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + this.isRenderable = isRenderable; + this.data = parameters.data; + this.layer = parameters.layer; + this.page = parameters.page; + this.viewport = parameters.viewport; + this.linkService = parameters.linkService; + this.downloadManager = parameters.downloadManager; + this.imageResourcesPath = parameters.imageResourcesPath; + this.renderForms = parameters.renderForms; + this.svgFactory = parameters.svgFactory; + this.annotationStorage = parameters.annotationStorage; + this.enableScripting = parameters.enableScripting; + this.hasJSActions = parameters.hasJSActions; + this._fieldObjects = parameters.fieldObjects; + this._mouseState = parameters.mouseState; + + if (isRenderable) { + this.container = this._createContainer(ignoreBorder); + } + + if (createQuadrilaterals) { + this.quadrilaterals = this._createQuadrilaterals(ignoreBorder); + } + } + + _createContainer() { + let ignoreBorder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + const data = this.data, + page = this.page, + viewport = this.viewport; + const container = document.createElement("section"); + const { + width, + height + } = getRectDims(data.rect); + const [pageLLx, pageLLy, pageURx, pageURy] = viewport.viewBox; + const pageWidth = pageURx - pageLLx; + const pageHeight = pageURy - pageLLy; + container.setAttribute("data-annotation-id", data.id); + + const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); + + if (!ignoreBorder && data.borderStyle.width > 0) { + container.style.borderWidth = `${data.borderStyle.width}px`; + const horizontalRadius = data.borderStyle.horizontalCornerRadius; + const verticalRadius = data.borderStyle.verticalCornerRadius; + + if (horizontalRadius > 0 || verticalRadius > 0) { + const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`; + container.style.borderRadius = radius; + } else if (this instanceof RadioButtonWidgetAnnotationElement) { + const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`; + container.style.borderRadius = radius; + } + + switch (data.borderStyle.style) { + case _util.AnnotationBorderStyleType.SOLID: + container.style.borderStyle = "solid"; + break; + + case _util.AnnotationBorderStyleType.DASHED: + container.style.borderStyle = "dashed"; + break; + + case _util.AnnotationBorderStyleType.BEVELED: + (0, _util.warn)("Unimplemented border style: beveled"); + break; + + case _util.AnnotationBorderStyleType.INSET: + (0, _util.warn)("Unimplemented border style: inset"); + break; + + case _util.AnnotationBorderStyleType.UNDERLINE: + container.style.borderBottomStyle = "solid"; + break; + + default: + break; + } + + const borderColor = data.borderColor || null; + + if (borderColor) { + container.style.borderColor = _util.Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0); + } else { + container.style.borderWidth = 0; } } - task._renderingDone = true; - capability.resolve(); + container.style.left = `${100 * (rect[0] - pageLLx) / pageWidth}%`; + container.style.top = `${100 * (rect[1] - pageLLy) / pageHeight}%`; + const { + rotation + } = data; + + if (data.hasOwnCanvas || rotation === 0) { + container.style.width = `${100 * width / pageWidth}%`; + container.style.height = `${100 * height / pageHeight}%`; + } else { + this.setRotation(rotation, container); + } + + return container; } - function expand(task) { - var bounds = task._bounds; - var viewport = task._viewport; - var expanded = expandBounds(viewport.width, viewport.height, bounds); + setRotation(angle) { + let container = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.container; + const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox; + const pageWidth = pageURx - pageLLx; + const pageHeight = pageURy - pageLLy; + const { + width, + height + } = getRectDims(this.data.rect); + let elementWidth, elementHeight; - for (var i = 0; i < expanded.length; i++) { - var div = bounds[i].div; + if (angle % 180 === 0) { + elementWidth = 100 * width / pageWidth; + elementHeight = 100 * height / pageHeight; + } else { + elementWidth = 100 * height / pageWidth; + elementHeight = 100 * width / pageHeight; + } - var divProperties = task._textDivProperties.get(div); + container.style.width = `${elementWidth}%`; + container.style.height = `${elementHeight}%`; + container.setAttribute("data-main-rotation", (360 - angle) % 360); + } - if (divProperties.angle === 0) { - divProperties.paddingLeft = bounds[i].left - expanded[i].left; - divProperties.paddingTop = bounds[i].top - expanded[i].top; - divProperties.paddingRight = expanded[i].right - bounds[i].right; - divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom; + get _commonActions() { + const setColor = (jsName, styleName, event) => { + const color = event.detail[jsName]; + event.target.style[styleName] = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1)); + }; - task._textDivProperties.set(div, divProperties); + return (0, _util.shadow)(this, "_commonActions", { + display: event => { + const hidden = event.detail.display % 2 === 1; + this.container.style.visibility = hidden ? "hidden" : "visible"; + this.annotationStorage.setValue(this.data.id, { + hidden, + print: event.detail.display === 0 || event.detail.display === 3 + }); + }, + print: event => { + this.annotationStorage.setValue(this.data.id, { + print: event.detail.print + }); + }, + hidden: event => { + this.container.style.visibility = event.detail.hidden ? "hidden" : "visible"; + this.annotationStorage.setValue(this.data.id, { + hidden: event.detail.hidden + }); + }, + focus: event => { + setTimeout(() => event.target.focus({ + preventScroll: false + }), 0); + }, + userName: event => { + event.target.title = event.detail.userName; + }, + readonly: event => { + if (event.detail.readonly) { + event.target.setAttribute("readonly", ""); + } else { + event.target.removeAttribute("readonly"); + } + }, + required: event => { + this._setRequired(event.target, event.detail.required); + }, + bgColor: event => { + setColor("bgColor", "backgroundColor", event); + }, + fillColor: event => { + setColor("fillColor", "backgroundColor", event); + }, + fgColor: event => { + setColor("fgColor", "color", event); + }, + textColor: event => { + setColor("textColor", "color", event); + }, + borderColor: event => { + setColor("borderColor", "borderColor", event); + }, + strokeColor: event => { + setColor("strokeColor", "borderColor", event); + }, + rotation: event => { + const angle = event.detail.rotation; + this.setRotation(angle); + this.annotationStorage.setValue(this.data.id, { + rotation: angle + }); + } + }); + } + _dispatchEventFromSandbox(actions, jsEvent) { + const commonActions = this._commonActions; + + for (const name of Object.keys(jsEvent.detail)) { + const action = actions[name] || commonActions[name]; + + if (action) { + action(jsEvent); + } + } + } + + _setDefaultPropertiesFromJS(element) { + if (!this.enableScripting) { + return; + } + + const storedData = this.annotationStorage.getRawValue(this.data.id); + + if (!storedData) { + return; + } + + const commonActions = this._commonActions; + + for (const [actionName, detail] of Object.entries(storedData)) { + const action = commonActions[actionName]; + + if (action) { + const eventProxy = { + detail: { + [actionName]: detail + }, + target: element + }; + action(eventProxy); + delete storedData[actionName]; + } + } + } + + _createQuadrilaterals() { + let ignoreBorder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + if (!this.data.quadPoints) { + return null; + } + + const quadrilaterals = []; + const savedRect = this.data.rect; + + for (const quadPoint of this.data.quadPoints) { + this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y]; + quadrilaterals.push(this._createContainer(ignoreBorder)); + } + + this.data.rect = savedRect; + return quadrilaterals; + } + + _createPopup(trigger, data) { + let container = this.container; + + if (this.quadrilaterals) { + trigger = trigger || this.quadrilaterals; + container = this.quadrilaterals[0]; + } + + if (!trigger) { + trigger = document.createElement("div"); + trigger.className = "popupTriggerArea"; + container.append(trigger); + } + + const popupElement = new PopupElement({ + container, + trigger, + color: data.color, + titleObj: data.titleObj, + modificationDate: data.modificationDate, + contentsObj: data.contentsObj, + richText: data.richText, + hideWrapper: true + }); + const popup = popupElement.render(); + popup.style.left = "100%"; + container.append(popup); + } + + _renderQuadrilaterals(className) { + for (const quadrilateral of this.quadrilaterals) { + quadrilateral.className = className; + } + + return this.quadrilaterals; + } + + render() { + (0, _util.unreachable)("Abstract method `AnnotationElement.render` called"); + } + + _getElementsByName(name) { + let skipId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + const fields = []; + + if (this._fieldObjects) { + const fieldObj = this._fieldObjects[name]; + + if (fieldObj) { + for (const { + page, + id, + exportValues + } of fieldObj) { + if (page === -1) { + continue; + } + + if (id === skipId) { + continue; + } + + const exportValue = typeof exportValues === "string" ? exportValues : null; + const domElement = document.querySelector(`[data-element-id="${id}"]`); + + if (domElement && !GetElementsByNameSet.has(domElement)) { + (0, _util.warn)(`_getElementsByName - element not allowed: ${id}`); + continue; + } + + fields.push({ + id, + exportValue, + domElement + }); + } + } + + return fields; + } + + for (const domElement of document.getElementsByName(name)) { + const { + id, + exportValue + } = domElement; + + if (id === skipId) { continue; } - var e = expanded[i], - b = bounds[i]; - var m = b.m, - c = m[0], - s = m[1]; - var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size]; - var ts = new Float64Array(64); - points.forEach(function (p, i) { - var t = _util.Util.applyTransform(p, m); + if (!GetElementsByNameSet.has(domElement)) { + continue; + } - ts[i + 0] = c && (e.left - t[0]) / c; - ts[i + 4] = s && (e.top - t[1]) / s; - ts[i + 8] = c && (e.right - t[0]) / c; - ts[i + 12] = s && (e.bottom - t[1]) / s; - ts[i + 16] = s && (e.left - t[0]) / -s; - ts[i + 20] = c && (e.top - t[1]) / c; - ts[i + 24] = s && (e.right - t[0]) / -s; - ts[i + 28] = c && (e.bottom - t[1]) / c; - ts[i + 32] = c && (e.left - t[0]) / -c; - ts[i + 36] = s && (e.top - t[1]) / -s; - ts[i + 40] = c && (e.right - t[0]) / -c; - ts[i + 44] = s && (e.bottom - t[1]) / -s; - ts[i + 48] = s && (e.left - t[0]) / s; - ts[i + 52] = c && (e.top - t[1]) / -c; - ts[i + 56] = s && (e.right - t[0]) / s; - ts[i + 60] = c && (e.bottom - t[1]) / -c; + fields.push({ + id, + exportValue, + domElement }); + } - var findPositiveMin = function findPositiveMin(ts, offset, count) { - var result = 0; + return fields; + } - for (var i = 0; i < count; i++) { - var t = ts[offset++]; + static get platform() { + const platform = typeof navigator !== "undefined" ? navigator.platform : ""; + return (0, _util.shadow)(this, "platform", { + isWin: platform.includes("Win"), + isMac: platform.includes("Mac") + }); + } - if (t > 0) { - result = result ? Math.min(t, result) : t; - } - } +} - return result; - }; +class LinkAnnotationElement extends AnnotationElement { + constructor(parameters) { + let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + super(parameters, { + isRenderable: true, + ignoreBorder: !!(options !== null && options !== void 0 && options.ignoreBorder), + createQuadrilaterals: true + }); + this.isTooltipOnly = parameters.data.isTooltipOnly; + } - var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s)); - divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale; - divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale; - divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale; - divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale; + render() { + const { + data, + linkService + } = this; + const link = document.createElement("a"); + link.setAttribute("data-element-id", data.id); + let isBound = false; - task._textDivProperties.set(div, divProperties); + if (data.url) { + linkService.addLinkAttributes(link, data.url, data.newWindow); + isBound = true; + } else if (data.action) { + this._bindNamedAction(link, data.action); + + isBound = true; + } else if (data.dest) { + this._bindLink(link, data.dest); + + isBound = true; + } else { + if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse Down"]) && this.enableScripting && this.hasJSActions) { + this._bindJSAction(link, data); + + isBound = true; + } + + if (data.resetForm) { + this._bindResetFormAction(link, data.resetForm); + + isBound = true; + } else if (this.isTooltipOnly && !isBound) { + this._bindLink(link, ""); + + isBound = true; + } + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("linkAnnotation").map((quadrilateral, index) => { + const linkElement = index === 0 ? link : link.cloneNode(); + quadrilateral.append(linkElement); + return quadrilateral; + }); + } + + this.container.className = "linkAnnotation"; + + if (isBound) { + this.container.append(link); + } + + return this.container; + } + + _bindLink(link, destination) { + link.href = this.linkService.getDestinationHash(destination); + + link.onclick = () => { + if (destination) { + this.linkService.goToDestination(destination); + } + + return false; + }; + + if (destination || destination === "") { + link.className = "internalLink"; } } - function expandBounds(width, height, boxes) { - var bounds = boxes.map(function (box, i) { - return { - x1: box.left, - y1: box.top, - x2: box.right, - y2: box.bottom, - index: i, - x1New: undefined, - x2New: undefined - }; - }); - expandBoundsLTR(width, bounds); - var expanded = new Array(boxes.length); - bounds.forEach(function (b) { - var i = b.index; - expanded[i] = { - left: b.x1New, - top: 0, - right: b.x2New, - bottom: 0 - }; - }); - boxes.map(function (box, i) { - var e = expanded[i], - b = bounds[i]; - b.x1 = box.top; - b.y1 = width - e.right; - b.x2 = box.bottom; - b.y2 = width - e.left; - b.index = i; - b.x1New = undefined; - b.x2New = undefined; - }); - expandBoundsLTR(height, bounds); - bounds.forEach(function (b) { - var i = b.index; - expanded[i].top = b.x1New; - expanded[i].bottom = b.x2New; - }); - return expanded; + _bindNamedAction(link, action) { + link.href = this.linkService.getAnchorUrl(""); + + link.onclick = () => { + this.linkService.executeNamedAction(action); + return false; + }; + + link.className = "internalLink"; } - function expandBoundsLTR(width, bounds) { - bounds.sort(function (a, b) { - return a.x1 - b.x1 || a.index - b.index; - }); - var fakeBoundary = { - x1: -Infinity, - y1: -Infinity, - x2: 0, - y2: Infinity, - index: -1, - x1New: 0, - x2New: 0 - }; - var horizon = [{ - start: -Infinity, - end: Infinity, - boundary: fakeBoundary - }]; - bounds.forEach(function (boundary) { - var i = 0; + _bindJSAction(link, data) { + link.href = this.linkService.getAnchorUrl(""); + const map = new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]); - while (i < horizon.length && horizon[i].end <= boundary.y1) { - i++; + for (const name of Object.keys(data.actions)) { + const jsName = map.get(name); + + if (!jsName) { + continue; } - var j = horizon.length - 1; + link[jsName] = () => { + var _this$linkService$eve; - while (j >= 0 && horizon[j].start >= boundary.y2) { - j--; - } - - var horizonPart, affectedBoundary; - var q, - k, - maxXNew = -Infinity; - - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - var xNew; - - if (affectedBoundary.x2 > boundary.x1) { - xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1; - } else if (affectedBoundary.x2New === undefined) { - xNew = (affectedBoundary.x2 + boundary.x1) / 2; - } else { - xNew = affectedBoundary.x2New; - } - - if (xNew > maxXNew) { - maxXNew = xNew; - } - } - - boundary.x1New = maxXNew; - - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - - if (affectedBoundary.x2New === undefined) { - if (affectedBoundary.x2 > boundary.x1) { - if (affectedBoundary.index > boundary.index) { - affectedBoundary.x2New = affectedBoundary.x2; - } - } else { - affectedBoundary.x2New = maxXNew; + (_this$linkService$eve = this.linkService.eventBus) === null || _this$linkService$eve === void 0 ? void 0 : _this$linkService$eve.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: data.id, + name } - } else if (affectedBoundary.x2New > maxXNew) { - affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2); + }); + return false; + }; + } + + if (!link.onclick) { + link.onclick = () => false; + } + + link.className = "internalLink"; + } + + _bindResetFormAction(link, resetForm) { + const otherClickAction = link.onclick; + + if (!otherClickAction) { + link.href = this.linkService.getAnchorUrl(""); + } + + link.className = "internalLink"; + + if (!this._fieldObjects) { + (0, _util.warn)(`_bindResetFormAction - "resetForm" action not supported, ` + "ensure that the `fieldObjects` parameter is provided."); + + if (!otherClickAction) { + link.onclick = () => false; + } + + return; + } + + link.onclick = () => { + if (otherClickAction) { + otherClickAction(); + } + + const { + fields: resetFormFields, + refs: resetFormRefs, + include + } = resetForm; + const allFields = []; + + if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) { + const fieldIds = new Set(resetFormRefs); + + for (const fieldName of resetFormFields) { + const fields = this._fieldObjects[fieldName] || []; + + for (const { + id + } of fields) { + fieldIds.add(id); + } + } + + for (const fields of Object.values(this._fieldObjects)) { + for (const field of fields) { + if (fieldIds.has(field.id) === include) { + allFields.push(field); + } + } + } + } else { + for (const fields of Object.values(this._fieldObjects)) { + allFields.push(...fields); } } - var changedHorizon = [], - lastBoundary = null; + const storage = this.annotationStorage; + const allIds = []; - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary; + for (const field of allFields) { + const { + id + } = field; + allIds.push(id); - if (lastBoundary === useBoundary) { - changedHorizon[changedHorizon.length - 1].end = horizonPart.end; - } else { - changedHorizon.push({ - start: horizonPart.start, - end: horizonPart.end, - boundary: useBoundary - }); - lastBoundary = useBoundary; + switch (field.type) { + case "text": + { + const value = field.defaultValue || ""; + storage.setValue(id, { + value + }); + break; + } + + case "checkbox": + case "radiobutton": + { + const value = field.defaultValue === field.exportValues; + storage.setValue(id, { + value + }); + break; + } + + case "combobox": + case "listbox": + { + const value = field.defaultValue || ""; + storage.setValue(id, { + value + }); + break; + } + + default: + continue; } - } - if (horizon[i].start < boundary.y1) { - changedHorizon[0].start = boundary.y1; - changedHorizon.unshift({ - start: horizon[i].start, - end: boundary.y1, - boundary: horizon[i].boundary - }); - } + const domElement = document.querySelector(`[data-element-id="${id}"]`); - if (boundary.y2 < horizon[j].end) { - changedHorizon[changedHorizon.length - 1].end = boundary.y2; - changedHorizon.push({ - start: boundary.y2, - end: horizon[j].end, - boundary: horizon[j].boundary - }); - } - - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - - if (affectedBoundary.x2New !== undefined) { + if (!domElement) { + continue; + } else if (!GetElementsByNameSet.has(domElement)) { + (0, _util.warn)(`_bindResetFormAction - element not allowed: ${id}`); continue; } - var used = false; - - for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) { - used = horizon[k].boundary === affectedBoundary; - } - - for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) { - used = horizon[k].boundary === affectedBoundary; - } - - for (k = 0; !used && k < changedHorizon.length; k++) { - used = changedHorizon[k].boundary === affectedBoundary; - } - - if (!used) { - affectedBoundary.x2New = maxXNew; - } + domElement.dispatchEvent(new Event("resetform")); } - Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon)); - }); - horizon.forEach(function (horizonPart) { - var affectedBoundary = horizonPart.boundary; + if (this.enableScripting) { + var _this$linkService$eve2; - if (affectedBoundary.x2New === undefined) { - affectedBoundary.x2New = Math.max(width, affectedBoundary.x2); + (_this$linkService$eve2 = this.linkService.eventBus) === null || _this$linkService$eve2 === void 0 ? void 0 : _this$linkService$eve2.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: "app", + ids: allIds, + name: "ResetForm" + } + }); } + + return false; + }; + } + +} + +class TextAnnotationElement extends AnnotationElement { + constructor(parameters) { + var _parameters$data$titl, _parameters$data$cont, _parameters$data$rich; + + const isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl = parameters.data.titleObj) !== null && _parameters$data$titl !== void 0 && _parameters$data$titl.str || (_parameters$data$cont = parameters.data.contentsObj) !== null && _parameters$data$cont !== void 0 && _parameters$data$cont.str || (_parameters$data$rich = parameters.data.richText) !== null && _parameters$data$rich !== void 0 && _parameters$data$rich.str); + super(parameters, { + isRenderable }); } - function TextLayerRenderTask(_ref) { - var _this = this; + render() { + this.container.className = "textAnnotation"; + const image = document.createElement("img"); + image.src = this.imageResourcesPath + "annotation-" + this.data.name.toLowerCase() + ".svg"; + image.alt = "[{{type}} Annotation]"; + image.dataset.l10nId = "text_annotation_type"; + image.dataset.l10nArgs = JSON.stringify({ + type: this.data.name + }); + + if (!this.data.hasPopup) { + this._createPopup(image, this.data); + } + + this.container.append(image); + return this.container; + } + +} + +class WidgetAnnotationElement extends AnnotationElement { + render() { + if (this.data.alternativeText) { + this.container.title = this.data.alternativeText; + } + + return this.container; + } + + _getKeyModifier(event) { + const { + isWin, + isMac + } = AnnotationElement.platform; + return isWin && event.ctrlKey || isMac && event.metaKey; + } + + _setEventListener(element, baseName, eventName, valueGetter) { + if (baseName.includes("mouse")) { + element.addEventListener(baseName, event => { + var _this$linkService$eve3; + + (_this$linkService$eve3 = this.linkService.eventBus) === null || _this$linkService$eve3 === void 0 ? void 0 : _this$linkService$eve3.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: valueGetter(event), + shift: event.shiftKey, + modifier: this._getKeyModifier(event) + } + }); + }); + } else { + element.addEventListener(baseName, event => { + var _this$linkService$eve4; + + (_this$linkService$eve4 = this.linkService.eventBus) === null || _this$linkService$eve4 === void 0 ? void 0 : _this$linkService$eve4.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: valueGetter(event) + } + }); + }); + } + } + + _setEventListeners(element, names, getter) { + for (const [baseName, eventName] of names) { + var _this$data$actions; + + if (eventName === "Action" || (_this$data$actions = this.data.actions) !== null && _this$data$actions !== void 0 && _this$data$actions[eventName]) { + this._setEventListener(element, baseName, eventName, getter); + } + } + } + + _setBackgroundColor(element) { + const color = this.data.backgroundColor || null; + element.style.backgroundColor = color === null ? "transparent" : _util.Util.makeHexColor(color[0], color[1], color[2]); + } + + _setTextStyle(element) { + const TEXT_ALIGNMENT = ["left", "center", "right"]; + const { + fontColor + } = this.data.defaultAppearanceData; + const fontSize = this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE; + const style = element.style; + let computedFontSize; + + if (this.data.multiLine) { + const height = Math.abs(this.data.rect[3] - this.data.rect[1]); + const numberOfLines = Math.round(height / (_util.LINE_FACTOR * fontSize)) || 1; + const lineHeight = height / numberOfLines; + computedFontSize = Math.min(fontSize, Math.round(lineHeight / _util.LINE_FACTOR)); + } else { + const height = Math.abs(this.data.rect[3] - this.data.rect[1]); + computedFontSize = Math.min(fontSize, Math.round(height / _util.LINE_FACTOR)); + } + + style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`; + style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]); + + if (this.data.textAlignment !== null) { + style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment]; + } + } + + _setRequired(element, isRequired) { + if (isRequired) { + element.setAttribute("required", true); + } else { + element.removeAttribute("required"); + } + + element.setAttribute("aria-required", isRequired); + } + +} + +class TextWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + const isRenderable = parameters.renderForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; + super(parameters, { + isRenderable + }); + } + + setPropertyOnSiblings(base, key, value, keyInStorage) { + const storage = this.annotationStorage; + + for (const element of this._getElementsByName(base.name, base.id)) { + if (element.domElement) { + element.domElement[key] = value; + } + + storage.setValue(element.id, { + [keyInStorage]: value + }); + } + } + + render() { + const storage = this.annotationStorage; + const id = this.data.id; + this.container.className = "textWidgetAnnotation"; + let element = null; + + if (this.renderForms) { + const storedData = storage.getValue(id, { + value: this.data.fieldValue + }); + let textContent = storedData.formattedValue || storedData.value || ""; + const maxLen = storage.getValue(id, { + charLimit: this.data.maxLen + }).charLimit; + + if (maxLen && textContent.length > maxLen) { + textContent = textContent.slice(0, maxLen); + } + + const elementData = { + userValue: textContent, + formattedValue: null, + valueOnFocus: "" + }; + + if (this.data.multiLine) { + element = document.createElement("textarea"); + element.textContent = textContent; + + if (this.data.doNotScroll) { + element.style.overflowY = "hidden"; + } + } else { + element = document.createElement("input"); + element.type = "text"; + element.setAttribute("value", textContent); + + if (this.data.doNotScroll) { + element.style.overflowX = "hidden"; + } + } + + GetElementsByNameSet.add(element); + element.setAttribute("data-element-id", id); + element.disabled = this.data.readOnly; + element.name = this.data.fieldName; + element.tabIndex = DEFAULT_TAB_INDEX; + + this._setRequired(element, this.data.required); + + if (maxLen) { + element.maxLength = maxLen; + } + + element.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + this.setPropertyOnSiblings(element, "value", event.target.value, "value"); + }); + element.addEventListener("resetform", event => { + var _this$data$defaultFie; + + const defaultValue = (_this$data$defaultFie = this.data.defaultFieldValue) !== null && _this$data$defaultFie !== void 0 ? _this$data$defaultFie : ""; + element.value = elementData.userValue = defaultValue; + elementData.formattedValue = null; + }); + + let blurListener = event => { + const { + formattedValue + } = elementData; + + if (formattedValue !== null && formattedValue !== undefined) { + event.target.value = formattedValue; + } + + event.target.scrollLeft = 0; + }; + + if (this.enableScripting && this.hasJSActions) { + var _this$data$actions2; + + element.addEventListener("focus", event => { + if (elementData.userValue) { + event.target.value = elementData.userValue; + } + + elementData.valueOnFocus = event.target.value; + }); + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + var _event$detail$value; + + elementData.userValue = (_event$detail$value = event.detail.value) !== null && _event$detail$value !== void 0 ? _event$detail$value : ""; + storage.setValue(id, { + value: elementData.userValue.toString() + }); + event.target.value = elementData.userValue; + }, + + formattedValue(event) { + const { + formattedValue + } = event.detail; + elementData.formattedValue = formattedValue; + + if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) { + event.target.value = formattedValue; + } + + storage.setValue(id, { + formattedValue + }); + }, + + selRange(event) { + event.target.setSelectionRange(...event.detail.selRange); + }, + + charLimit: event => { + var _this$linkService$eve5; + + const { + charLimit + } = event.detail; + const { + target + } = event; + + if (charLimit === 0) { + target.removeAttribute("maxLength"); + return; + } + + target.setAttribute("maxLength", charLimit); + let value = elementData.userValue; + + if (!value || value.length <= charLimit) { + return; + } + + value = value.slice(0, charLimit); + target.value = elementData.userValue = value; + storage.setValue(id, { + value + }); + (_this$linkService$eve5 = this.linkService.eventBus) === null || _this$linkService$eve5 === void 0 ? void 0 : _this$linkService$eve5.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey: 1, + selStart: target.selectionStart, + selEnd: target.selectionEnd + } + }); + } + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + element.addEventListener("keydown", event => { + var _this$linkService$eve6; + + let commitKey = -1; + + if (event.key === "Escape") { + commitKey = 0; + } else if (event.key === "Enter") { + commitKey = 2; + } else if (event.key === "Tab") { + commitKey = 3; + } + + if (commitKey === -1) { + return; + } + + const { + value + } = event.target; + + if (elementData.valueOnFocus === value) { + return; + } + + elementData.userValue = value; + (_this$linkService$eve6 = this.linkService.eventBus) === null || _this$linkService$eve6 === void 0 ? void 0 : _this$linkService$eve6.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + }); + const _blurListener = blurListener; + blurListener = null; + element.addEventListener("blur", event => { + const { + value + } = event.target; + elementData.userValue = value; + + if (this._mouseState.isDown && elementData.valueOnFocus !== value) { + var _this$linkService$eve7; + + (_this$linkService$eve7 = this.linkService.eventBus) === null || _this$linkService$eve7 === void 0 ? void 0 : _this$linkService$eve7.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey: 1, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + } + + _blurListener(event); + }); + + if ((_this$data$actions2 = this.data.actions) !== null && _this$data$actions2 !== void 0 && _this$data$actions2.Keystroke) { + element.addEventListener("beforeinput", event => { + var _this$linkService$eve8; + + const { + data, + target + } = event; + const { + value, + selectionStart, + selectionEnd + } = target; + let selStart = selectionStart, + selEnd = selectionEnd; + + switch (event.inputType) { + case "deleteWordBackward": + { + const match = value.substring(0, selectionStart).match(/\w*[^\w]*$/); + + if (match) { + selStart -= match[0].length; + } + + break; + } + + case "deleteWordForward": + { + const match = value.substring(selectionStart).match(/^[^\w]*\w*/); + + if (match) { + selEnd += match[0].length; + } + + break; + } + + case "deleteContentBackward": + if (selectionStart === selectionEnd) { + selStart -= 1; + } + + break; + + case "deleteContentForward": + if (selectionStart === selectionEnd) { + selEnd += 1; + } + + break; + } + + event.preventDefault(); + (_this$linkService$eve8 = this.linkService.eventBus) === null || _this$linkService$eve8 === void 0 ? void 0 : _this$linkService$eve8.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + change: data || "", + willCommit: false, + selStart, + selEnd + } + }); + }); + } + + this._setEventListeners(element, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.value); + } + + if (blurListener) { + element.addEventListener("blur", blurListener); + } + + if (this.data.comb) { + const fieldWidth = this.data.rect[2] - this.data.rect[0]; + const combWidth = fieldWidth / maxLen; + element.classList.add("comb"); + element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`; + } + } else { + element = document.createElement("div"); + element.textContent = this.data.fieldValue; + element.style.verticalAlign = "middle"; + element.style.display = "table-cell"; + } + + this._setTextStyle(element); + + this._setBackgroundColor(element); + + this._setDefaultPropertiesFromJS(element); + + this.container.append(element); + return this.container; + } + +} + +class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + + render() { + const storage = this.annotationStorage; + const data = this.data; + const id = data.id; + let value = storage.getValue(id, { + value: data.exportValue === data.fieldValue + }).value; + + if (typeof value === "string") { + value = value !== "Off"; + storage.setValue(id, { + value + }); + } + + this.container.className = "buttonWidgetAnnotation checkBox"; + const element = document.createElement("input"); + GetElementsByNameSet.add(element); + element.setAttribute("data-element-id", id); + element.disabled = data.readOnly; + + this._setRequired(element, this.data.required); + + element.type = "checkbox"; + element.name = data.fieldName; + + if (value) { + element.setAttribute("checked", true); + } + + element.setAttribute("exportValue", data.exportValue); + element.tabIndex = DEFAULT_TAB_INDEX; + element.addEventListener("change", event => { + const { + name, + checked + } = event.target; + + for (const checkbox of this._getElementsByName(name, id)) { + const curChecked = checked && checkbox.exportValue === data.exportValue; + + if (checkbox.domElement) { + checkbox.domElement.checked = curChecked; + } + + storage.setValue(checkbox.id, { + value: curChecked + }); + } + + storage.setValue(id, { + value: checked + }); + }); + element.addEventListener("resetform", event => { + const defaultValue = data.defaultFieldValue || "Off"; + event.target.checked = defaultValue === data.exportValue; + }); + + if (this.enableScripting && this.hasJSActions) { + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + event.target.checked = event.detail.value !== "Off"; + storage.setValue(id, { + value: event.target.checked + }); + } + + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + + this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } + + this._setBackgroundColor(element); + + this._setDefaultPropertiesFromJS(element); + + this.container.append(element); + return this.container; + } + +} + +class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + + render() { + this.container.className = "buttonWidgetAnnotation radioButton"; + const storage = this.annotationStorage; + const data = this.data; + const id = data.id; + let value = storage.getValue(id, { + value: data.fieldValue === data.buttonValue + }).value; + + if (typeof value === "string") { + value = value !== data.buttonValue; + storage.setValue(id, { + value + }); + } + + const element = document.createElement("input"); + GetElementsByNameSet.add(element); + element.setAttribute("data-element-id", id); + element.disabled = data.readOnly; + + this._setRequired(element, this.data.required); + + element.type = "radio"; + element.name = data.fieldName; + + if (value) { + element.setAttribute("checked", true); + } + + element.tabIndex = DEFAULT_TAB_INDEX; + element.addEventListener("change", event => { + const { + name, + checked + } = event.target; + + for (const radio of this._getElementsByName(name, id)) { + storage.setValue(radio.id, { + value: false + }); + } + + storage.setValue(id, { + value: checked + }); + }); + element.addEventListener("resetform", event => { + const defaultValue = data.defaultFieldValue; + event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue; + }); + + if (this.enableScripting && this.hasJSActions) { + const pdfButtonValue = data.buttonValue; + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value: event => { + const checked = pdfButtonValue === event.detail.value; + + for (const radio of this._getElementsByName(event.target.name)) { + const curChecked = checked && radio.id === id; + + if (radio.domElement) { + radio.domElement.checked = curChecked; + } + + storage.setValue(radio.id, { + value: curChecked + }); + } + } + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + + this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } + + this._setBackgroundColor(element); + + this._setDefaultPropertiesFromJS(element); + + this.container.append(element); + return this.container; + } + +} + +class PushButtonWidgetAnnotationElement extends LinkAnnotationElement { + constructor(parameters) { + super(parameters, { + ignoreBorder: parameters.data.hasAppearance + }); + } + + render() { + const container = super.render(); + container.className = "buttonWidgetAnnotation pushButton"; + + if (this.data.alternativeText) { + container.title = this.data.alternativeText; + } + + const linkElement = container.lastChild; + + if (this.enableScripting && this.hasJSActions && linkElement) { + this._setDefaultPropertiesFromJS(linkElement); + + linkElement.addEventListener("updatefromsandbox", jsEvent => { + this._dispatchEventFromSandbox({}, jsEvent); + }); + } + + return container; + } + +} + +class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + + render() { + this.container.className = "choiceWidgetAnnotation"; + const storage = this.annotationStorage; + const id = this.data.id; + const storedData = storage.getValue(id, { + value: this.data.fieldValue + }); + const selectElement = document.createElement("select"); + GetElementsByNameSet.add(selectElement); + selectElement.setAttribute("data-element-id", id); + selectElement.disabled = this.data.readOnly; + + this._setRequired(selectElement, this.data.required); + + selectElement.name = this.data.fieldName; + selectElement.tabIndex = DEFAULT_TAB_INDEX; + let addAnEmptyEntry = this.data.combo && this.data.options.length > 0; + + if (!this.data.combo) { + selectElement.size = this.data.options.length; + + if (this.data.multiSelect) { + selectElement.multiple = true; + } + } + + selectElement.addEventListener("resetform", event => { + const defaultValue = this.data.defaultFieldValue; + + for (const option of selectElement.options) { + option.selected = option.value === defaultValue; + } + }); + + for (const option of this.data.options) { + const optionElement = document.createElement("option"); + optionElement.textContent = option.displayValue; + optionElement.value = option.exportValue; + + if (storedData.value.includes(option.exportValue)) { + optionElement.setAttribute("selected", true); + addAnEmptyEntry = false; + } + + selectElement.append(optionElement); + } + + let removeEmptyEntry = null; + + if (addAnEmptyEntry) { + const noneOptionElement = document.createElement("option"); + noneOptionElement.value = " "; + noneOptionElement.setAttribute("hidden", true); + noneOptionElement.setAttribute("selected", true); + selectElement.prepend(noneOptionElement); + + removeEmptyEntry = () => { + noneOptionElement.remove(); + selectElement.removeEventListener("input", removeEmptyEntry); + removeEmptyEntry = null; + }; + + selectElement.addEventListener("input", removeEmptyEntry); + } + + const getValue = (event, isExport) => { + const name = isExport ? "value" : "textContent"; + const options = event.target.options; + + if (!event.target.multiple) { + return options.selectedIndex === -1 ? null : options[options.selectedIndex][name]; + } + + return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]); + }; + + const getItems = event => { + const options = event.target.options; + return Array.prototype.map.call(options, option => { + return { + displayValue: option.textContent, + exportValue: option.value + }; + }); + }; + + if (this.enableScripting && this.hasJSActions) { + selectElement.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + var _removeEmptyEntry; + + (_removeEmptyEntry = removeEmptyEntry) === null || _removeEmptyEntry === void 0 ? void 0 : _removeEmptyEntry(); + const value = event.detail.value; + const values = new Set(Array.isArray(value) ? value : [value]); + + for (const option of selectElement.options) { + option.selected = values.has(option.value); + } + + storage.setValue(id, { + value: getValue(event, true) + }); + }, + + multipleSelection(event) { + selectElement.multiple = true; + }, + + remove(event) { + const options = selectElement.options; + const index = event.detail.remove; + options[index].selected = false; + selectElement.remove(index); + + if (options.length > 0) { + const i = Array.prototype.findIndex.call(options, option => option.selected); + + if (i === -1) { + options[0].selected = true; + } + } + + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + clear(event) { + while (selectElement.length !== 0) { + selectElement.remove(0); + } + + storage.setValue(id, { + value: null, + items: [] + }); + }, + + insert(event) { + const { + index, + displayValue, + exportValue + } = event.detail.insert; + const selectChild = selectElement.children[index]; + const optionElement = document.createElement("option"); + optionElement.textContent = displayValue; + optionElement.value = exportValue; + + if (selectChild) { + selectChild.before(optionElement); + } else { + selectElement.append(optionElement); + } + + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + items(event) { + const { + items + } = event.detail; + + while (selectElement.length !== 0) { + selectElement.remove(0); + } + + for (const item of items) { + const { + displayValue, + exportValue + } = item; + const optionElement = document.createElement("option"); + optionElement.textContent = displayValue; + optionElement.value = exportValue; + selectElement.append(optionElement); + } + + if (selectElement.options.length > 0) { + selectElement.options[0].selected = true; + } + + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + indices(event) { + const indices = new Set(event.detail.indices); + + for (const option of event.target.options) { + option.selected = indices.has(option.index); + } + + storage.setValue(id, { + value: getValue(event, true) + }); + }, + + editable(event) { + event.target.disabled = !event.detail.editable; + } + + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + selectElement.addEventListener("input", event => { + var _this$linkService$eve9; + + const exportValue = getValue(event, true); + const value = getValue(event, false); + storage.setValue(id, { + value: exportValue + }); + (_this$linkService$eve9 = this.linkService.eventBus) === null || _this$linkService$eve9 === void 0 ? void 0 : _this$linkService$eve9.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + changeEx: exportValue, + willCommit: true, + commitKey: 1, + keyDown: false + } + }); + }); + + this._setEventListeners(selectElement, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"], ["input", "Action"]], event => event.target.checked); + } else { + selectElement.addEventListener("input", function (event) { + storage.setValue(id, { + value: getValue(event, true) + }); + }); + } + + if (this.data.combo) { + this._setTextStyle(selectElement); + } else {} + + this._setBackgroundColor(selectElement); + + this._setDefaultPropertiesFromJS(selectElement); + + this.container.append(selectElement); + return this.container; + } + +} + +class PopupAnnotationElement extends AnnotationElement { + constructor(parameters) { + var _parameters$data$titl2, _parameters$data$cont2, _parameters$data$rich2; + + const isRenderable = !!((_parameters$data$titl2 = parameters.data.titleObj) !== null && _parameters$data$titl2 !== void 0 && _parameters$data$titl2.str || (_parameters$data$cont2 = parameters.data.contentsObj) !== null && _parameters$data$cont2 !== void 0 && _parameters$data$cont2.str || (_parameters$data$rich2 = parameters.data.richText) !== null && _parameters$data$rich2 !== void 0 && _parameters$data$rich2.str); + super(parameters, { + isRenderable + }); + } + + render() { + const IGNORE_TYPES = ["Line", "Square", "Circle", "PolyLine", "Polygon", "Ink"]; + this.container.className = "popupAnnotation"; + + if (IGNORE_TYPES.includes(this.data.parentType)) { + return this.container; + } + + const selector = `[data-annotation-id="${this.data.parentId}"]`; + const parentElements = this.layer.querySelectorAll(selector); + + if (parentElements.length === 0) { + return this.container; + } + + const popup = new PopupElement({ + container: this.container, + trigger: Array.from(parentElements), + color: this.data.color, + titleObj: this.data.titleObj, + modificationDate: this.data.modificationDate, + contentsObj: this.data.contentsObj, + richText: this.data.richText + }); + const page = this.page; + + const rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]); + + const popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0]; + const popupTop = rect[1]; + const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox; + const pageWidth = pageURx - pageLLx; + const pageHeight = pageURy - pageLLy; + this.container.style.left = `${100 * (popupLeft - pageLLx) / pageWidth}%`; + this.container.style.top = `${100 * (popupTop - pageLLy) / pageHeight}%`; + this.container.append(popup.render()); + return this.container; + } + +} + +class PopupElement { + constructor(parameters) { + this.container = parameters.container; + this.trigger = parameters.trigger; + this.color = parameters.color; + this.titleObj = parameters.titleObj; + this.modificationDate = parameters.modificationDate; + this.contentsObj = parameters.contentsObj; + this.richText = parameters.richText; + this.hideWrapper = parameters.hideWrapper || false; + this.pinned = false; + } + + render() { + var _this$richText, _this$contentsObj; + + const BACKGROUND_ENLIGHT = 0.7; + const wrapper = document.createElement("div"); + wrapper.className = "popupWrapper"; + this.hideElement = this.hideWrapper ? wrapper : this.container; + this.hideElement.hidden = true; + const popup = document.createElement("div"); + popup.className = "popup"; + const color = this.color; + + if (color) { + const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0]; + const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1]; + const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2]; + popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0); + } + + const title = document.createElement("h1"); + title.dir = this.titleObj.dir; + title.textContent = this.titleObj.str; + popup.append(title); + + const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate); + + if (dateObject) { + const modificationDate = document.createElement("span"); + modificationDate.className = "popupDate"; + modificationDate.textContent = "{{date}}, {{time}}"; + modificationDate.dataset.l10nId = "annotation_date_string"; + modificationDate.dataset.l10nArgs = JSON.stringify({ + date: dateObject.toLocaleDateString(), + time: dateObject.toLocaleTimeString() + }); + popup.append(modificationDate); + } + + if ((_this$richText = this.richText) !== null && _this$richText !== void 0 && _this$richText.str && (!((_this$contentsObj = this.contentsObj) !== null && _this$contentsObj !== void 0 && _this$contentsObj.str) || this.contentsObj.str === this.richText.str)) { + _xfa_layer.XfaLayer.render({ + xfaHtml: this.richText.html, + intent: "richText", + div: popup + }); + + popup.lastChild.className = "richText popupContent"; + } else { + const contents = this._formatContents(this.contentsObj); + + popup.append(contents); + } + + if (!Array.isArray(this.trigger)) { + this.trigger = [this.trigger]; + } + + for (const element of this.trigger) { + element.addEventListener("click", this._toggle.bind(this)); + element.addEventListener("mouseover", this._show.bind(this, false)); + element.addEventListener("mouseout", this._hide.bind(this, false)); + } + + popup.addEventListener("click", this._hide.bind(this, true)); + wrapper.append(popup); + return wrapper; + } + + _formatContents(_ref) { + let { + str, + dir + } = _ref; + const p = document.createElement("p"); + p.className = "popupContent"; + p.dir = dir; + const lines = str.split(/(?:\r\n?|\n)/); + + for (let i = 0, ii = lines.length; i < ii; ++i) { + const line = lines[i]; + p.append(document.createTextNode(line)); + + if (i < ii - 1) { + p.append(document.createElement("br")); + } + } + + return p; + } + + _toggle() { + if (this.pinned) { + this._hide(true); + } else { + this._show(true); + } + } + + _show() { + let pin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + if (pin) { + this.pinned = true; + } + + if (this.hideElement.hidden) { + this.hideElement.hidden = false; + this.container.style.zIndex = parseInt(this.container.style.zIndex) + 1000; + } + } + + _hide() { + let unpin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + + if (unpin) { + this.pinned = false; + } + + if (!this.hideElement.hidden && !this.pinned) { + this.hideElement.hidden = true; + this.container.style.zIndex = parseInt(this.container.style.zIndex) - 1000; + } + } + +} + +class FreeTextAnnotationElement extends AnnotationElement { + constructor(parameters) { + var _parameters$data$titl3, _parameters$data$cont3, _parameters$data$rich3; + + const isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl3 = parameters.data.titleObj) !== null && _parameters$data$titl3 !== void 0 && _parameters$data$titl3.str || (_parameters$data$cont3 = parameters.data.contentsObj) !== null && _parameters$data$cont3 !== void 0 && _parameters$data$cont3.str || (_parameters$data$rich3 = parameters.data.richText) !== null && _parameters$data$rich3 !== void 0 && _parameters$data$rich3.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.textContent = parameters.data.textContent; + } + + render() { + this.container.className = "freeTextAnnotation"; + + if (this.textContent) { + const content = document.createElement("div"); + content.className = "annotationTextContent"; + content.setAttribute("role", "comment"); + + for (const line of this.textContent) { + const lineSpan = document.createElement("span"); + lineSpan.textContent = line; + content.append(lineSpan); + } + + this.container.append(content); + } + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class LineAnnotationElement extends AnnotationElement { + constructor(parameters) { + var _parameters$data$titl4, _parameters$data$cont4, _parameters$data$rich4; + + const isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl4 = parameters.data.titleObj) !== null && _parameters$data$titl4 !== void 0 && _parameters$data$titl4.str || (_parameters$data$cont4 = parameters.data.contentsObj) !== null && _parameters$data$cont4 !== void 0 && _parameters$data$cont4.str || (_parameters$data$rich4 = parameters.data.richText) !== null && _parameters$data$rich4 !== void 0 && _parameters$data$rich4.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "lineAnnotation"; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + const line = this.svgFactory.createElement("svg:line"); + line.setAttribute("x1", data.rect[2] - data.lineCoordinates[0]); + line.setAttribute("y1", data.rect[3] - data.lineCoordinates[1]); + line.setAttribute("x2", data.rect[2] - data.lineCoordinates[2]); + line.setAttribute("y2", data.rect[3] - data.lineCoordinates[3]); + line.setAttribute("stroke-width", data.borderStyle.width || 1); + line.setAttribute("stroke", "transparent"); + line.setAttribute("fill", "transparent"); + svg.append(line); + this.container.append(svg); + + this._createPopup(line, data); + + return this.container; + } + +} + +class SquareAnnotationElement extends AnnotationElement { + constructor(parameters) { + var _parameters$data$titl5, _parameters$data$cont5, _parameters$data$rich5; + + const isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl5 = parameters.data.titleObj) !== null && _parameters$data$titl5 !== void 0 && _parameters$data$titl5.str || (_parameters$data$cont5 = parameters.data.contentsObj) !== null && _parameters$data$cont5 !== void 0 && _parameters$data$cont5.str || (_parameters$data$rich5 = parameters.data.richText) !== null && _parameters$data$rich5 !== void 0 && _parameters$data$rich5.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "squareAnnotation"; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + const borderWidth = data.borderStyle.width; + const square = this.svgFactory.createElement("svg:rect"); + square.setAttribute("x", borderWidth / 2); + square.setAttribute("y", borderWidth / 2); + square.setAttribute("width", width - borderWidth); + square.setAttribute("height", height - borderWidth); + square.setAttribute("stroke-width", borderWidth || 1); + square.setAttribute("stroke", "transparent"); + square.setAttribute("fill", "transparent"); + svg.append(square); + this.container.append(svg); + + this._createPopup(square, data); + + return this.container; + } + +} + +class CircleAnnotationElement extends AnnotationElement { + constructor(parameters) { + var _parameters$data$titl6, _parameters$data$cont6, _parameters$data$rich6; + + const isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl6 = parameters.data.titleObj) !== null && _parameters$data$titl6 !== void 0 && _parameters$data$titl6.str || (_parameters$data$cont6 = parameters.data.contentsObj) !== null && _parameters$data$cont6 !== void 0 && _parameters$data$cont6.str || (_parameters$data$rich6 = parameters.data.richText) !== null && _parameters$data$rich6 !== void 0 && _parameters$data$rich6.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "circleAnnotation"; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + const borderWidth = data.borderStyle.width; + const circle = this.svgFactory.createElement("svg:ellipse"); + circle.setAttribute("cx", width / 2); + circle.setAttribute("cy", height / 2); + circle.setAttribute("rx", width / 2 - borderWidth / 2); + circle.setAttribute("ry", height / 2 - borderWidth / 2); + circle.setAttribute("stroke-width", borderWidth || 1); + circle.setAttribute("stroke", "transparent"); + circle.setAttribute("fill", "transparent"); + svg.append(circle); + this.container.append(svg); + + this._createPopup(circle, data); + + return this.container; + } + +} + +class PolylineAnnotationElement extends AnnotationElement { + constructor(parameters) { + var _parameters$data$titl7, _parameters$data$cont7, _parameters$data$rich7; + + const isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl7 = parameters.data.titleObj) !== null && _parameters$data$titl7 !== void 0 && _parameters$data$titl7.str || (_parameters$data$cont7 = parameters.data.contentsObj) !== null && _parameters$data$cont7 !== void 0 && _parameters$data$cont7.str || (_parameters$data$rich7 = parameters.data.richText) !== null && _parameters$data$rich7 !== void 0 && _parameters$data$rich7.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.containerClassName = "polylineAnnotation"; + this.svgElementName = "svg:polyline"; + } + + render() { + this.container.className = this.containerClassName; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + let points = []; + + for (const coordinate of data.vertices) { + const x = coordinate.x - data.rect[0]; + const y = data.rect[3] - coordinate.y; + points.push(x + "," + y); + } + + points = points.join(" "); + const polyline = this.svgFactory.createElement(this.svgElementName); + polyline.setAttribute("points", points); + polyline.setAttribute("stroke-width", data.borderStyle.width || 1); + polyline.setAttribute("stroke", "transparent"); + polyline.setAttribute("fill", "transparent"); + svg.append(polyline); + this.container.append(svg); + + this._createPopup(polyline, data); + + return this.container; + } + +} + +class PolygonAnnotationElement extends PolylineAnnotationElement { + constructor(parameters) { + super(parameters); + this.containerClassName = "polygonAnnotation"; + this.svgElementName = "svg:polygon"; + } + +} + +class CaretAnnotationElement extends AnnotationElement { + constructor(parameters) { + var _parameters$data$titl8, _parameters$data$cont8, _parameters$data$rich8; + + const isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl8 = parameters.data.titleObj) !== null && _parameters$data$titl8 !== void 0 && _parameters$data$titl8.str || (_parameters$data$cont8 = parameters.data.contentsObj) !== null && _parameters$data$cont8 !== void 0 && _parameters$data$cont8.str || (_parameters$data$rich8 = parameters.data.richText) !== null && _parameters$data$rich8 !== void 0 && _parameters$data$rich8.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "caretAnnotation"; + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class InkAnnotationElement extends AnnotationElement { + constructor(parameters) { + var _parameters$data$titl9, _parameters$data$cont9, _parameters$data$rich9; + + const isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl9 = parameters.data.titleObj) !== null && _parameters$data$titl9 !== void 0 && _parameters$data$titl9.str || (_parameters$data$cont9 = parameters.data.contentsObj) !== null && _parameters$data$cont9 !== void 0 && _parameters$data$cont9.str || (_parameters$data$rich9 = parameters.data.richText) !== null && _parameters$data$rich9 !== void 0 && _parameters$data$rich9.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.containerClassName = "inkAnnotation"; + this.svgElementName = "svg:polyline"; + } + + render() { + this.container.className = this.containerClassName; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + + for (const inkList of data.inkLists) { + let points = []; + + for (const coordinate of inkList) { + const x = coordinate.x - data.rect[0]; + const y = data.rect[3] - coordinate.y; + points.push(`${x},${y}`); + } + + points = points.join(" "); + const polyline = this.svgFactory.createElement(this.svgElementName); + polyline.setAttribute("points", points); + polyline.setAttribute("stroke-width", data.borderStyle.width || 1); + polyline.setAttribute("stroke", "transparent"); + polyline.setAttribute("fill", "transparent"); + + this._createPopup(polyline, data); + + svg.append(polyline); + } + + this.container.append(svg); + return this.container; + } + +} + +class HighlightAnnotationElement extends AnnotationElement { + constructor(parameters) { + var _parameters$data$titl10, _parameters$data$cont10, _parameters$data$rich10; + + const isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl10 = parameters.data.titleObj) !== null && _parameters$data$titl10 !== void 0 && _parameters$data$titl10.str || (_parameters$data$cont10 = parameters.data.contentsObj) !== null && _parameters$data$cont10 !== void 0 && _parameters$data$cont10.str || (_parameters$data$rich10 = parameters.data.richText) !== null && _parameters$data$rich10 !== void 0 && _parameters$data$rich10.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("highlightAnnotation"); + } + + this.container.className = "highlightAnnotation"; + return this.container; + } + +} + +class UnderlineAnnotationElement extends AnnotationElement { + constructor(parameters) { + var _parameters$data$titl11, _parameters$data$cont11, _parameters$data$rich11; + + const isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl11 = parameters.data.titleObj) !== null && _parameters$data$titl11 !== void 0 && _parameters$data$titl11.str || (_parameters$data$cont11 = parameters.data.contentsObj) !== null && _parameters$data$cont11 !== void 0 && _parameters$data$cont11.str || (_parameters$data$rich11 = parameters.data.richText) !== null && _parameters$data$rich11 !== void 0 && _parameters$data$rich11.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("underlineAnnotation"); + } + + this.container.className = "underlineAnnotation"; + return this.container; + } + +} + +class SquigglyAnnotationElement extends AnnotationElement { + constructor(parameters) { + var _parameters$data$titl12, _parameters$data$cont12, _parameters$data$rich12; + + const isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl12 = parameters.data.titleObj) !== null && _parameters$data$titl12 !== void 0 && _parameters$data$titl12.str || (_parameters$data$cont12 = parameters.data.contentsObj) !== null && _parameters$data$cont12 !== void 0 && _parameters$data$cont12.str || (_parameters$data$rich12 = parameters.data.richText) !== null && _parameters$data$rich12 !== void 0 && _parameters$data$rich12.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("squigglyAnnotation"); + } + + this.container.className = "squigglyAnnotation"; + return this.container; + } + +} + +class StrikeOutAnnotationElement extends AnnotationElement { + constructor(parameters) { + var _parameters$data$titl13, _parameters$data$cont13, _parameters$data$rich13; + + const isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl13 = parameters.data.titleObj) !== null && _parameters$data$titl13 !== void 0 && _parameters$data$titl13.str || (_parameters$data$cont13 = parameters.data.contentsObj) !== null && _parameters$data$cont13 !== void 0 && _parameters$data$cont13.str || (_parameters$data$rich13 = parameters.data.richText) !== null && _parameters$data$rich13 !== void 0 && _parameters$data$rich13.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("strikeoutAnnotation"); + } + + this.container.className = "strikeoutAnnotation"; + return this.container; + } + +} + +class StampAnnotationElement extends AnnotationElement { + constructor(parameters) { + var _parameters$data$titl14, _parameters$data$cont14, _parameters$data$rich14; + + const isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl14 = parameters.data.titleObj) !== null && _parameters$data$titl14 !== void 0 && _parameters$data$titl14.str || (_parameters$data$cont14 = parameters.data.contentsObj) !== null && _parameters$data$cont14 !== void 0 && _parameters$data$cont14.str || (_parameters$data$rich14 = parameters.data.richText) !== null && _parameters$data$rich14 !== void 0 && _parameters$data$rich14.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "stampAnnotation"; + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class FileAttachmentAnnotationElement extends AnnotationElement { + constructor(parameters) { + var _this$linkService$eve10; + + super(parameters, { + isRenderable: true + }); + const { + filename, + content + } = this.data.file; + this.filename = (0, _display_utils.getFilenameFromUrl)(filename); + this.content = content; + (_this$linkService$eve10 = this.linkService.eventBus) === null || _this$linkService$eve10 === void 0 ? void 0 : _this$linkService$eve10.dispatch("fileattachmentannotation", { + source: this, + filename, + content + }); + } + + render() { + var _this$data$titleObj, _this$data$contentsOb; + + this.container.className = "fileAttachmentAnnotation"; + const trigger = document.createElement("div"); + trigger.className = "popupTriggerArea"; + trigger.addEventListener("dblclick", this._download.bind(this)); + + if (!this.data.hasPopup && ((_this$data$titleObj = this.data.titleObj) !== null && _this$data$titleObj !== void 0 && _this$data$titleObj.str || (_this$data$contentsOb = this.data.contentsObj) !== null && _this$data$contentsOb !== void 0 && _this$data$contentsOb.str || this.data.richText)) { + this._createPopup(trigger, this.data); + } + + this.container.append(trigger); + return this.container; + } + + _download() { + var _this$downloadManager; + + (_this$downloadManager = this.downloadManager) === null || _this$downloadManager === void 0 ? void 0 : _this$downloadManager.openOrDownloadData(this.container, this.content, this.filename); + } + +} + +class AnnotationLayer { + static render(parameters) { + const { + annotations, + div, + viewport, + accessibilityManager + } = parameters; + + _classStaticPrivateMethodGet(this, AnnotationLayer, _setDimensions).call(this, div, viewport); + + let zIndex = 0; + + for (const data of annotations) { + if (data.annotationType !== _util.AnnotationType.POPUP) { + const { + width, + height + } = getRectDims(data.rect); + + if (width <= 0 || height <= 0) { + continue; + } + } + + const element = AnnotationElementFactory.create({ + data, + layer: div, + page: parameters.page, + viewport, + linkService: parameters.linkService, + downloadManager: parameters.downloadManager, + imageResourcesPath: parameters.imageResourcesPath || "", + renderForms: parameters.renderForms !== false, + svgFactory: new _display_utils.DOMSVGFactory(), + annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(), + enableScripting: parameters.enableScripting, + hasJSActions: parameters.hasJSActions, + fieldObjects: parameters.fieldObjects, + mouseState: parameters.mouseState || { + isDown: false + } + }); + + if (element.isRenderable) { + const rendered = element.render(); + + if (data.hidden) { + rendered.style.visibility = "hidden"; + } + + if (Array.isArray(rendered)) { + for (const renderedElement of rendered) { + renderedElement.style.zIndex = zIndex++; + + _classStaticPrivateMethodGet(AnnotationLayer, AnnotationLayer, _appendElement).call(AnnotationLayer, renderedElement, data.id, div, accessibilityManager); + } + } else { + rendered.style.zIndex = zIndex++; + + if (element instanceof PopupAnnotationElement) { + div.prepend(rendered); + } else { + _classStaticPrivateMethodGet(AnnotationLayer, AnnotationLayer, _appendElement).call(AnnotationLayer, rendered, data.id, div, accessibilityManager); + } + } + } + } + + _classStaticPrivateMethodGet(this, AnnotationLayer, _setAnnotationCanvasMap).call(this, div, parameters.annotationCanvasMap); + } + + static update(parameters) { + const { + annotationCanvasMap, + div, + viewport + } = parameters; + + _classStaticPrivateMethodGet(this, AnnotationLayer, _setDimensions).call(this, div, viewport); + + _classStaticPrivateMethodGet(this, AnnotationLayer, _setAnnotationCanvasMap).call(this, div, annotationCanvasMap); + + div.hidden = false; + } + +} + +exports.AnnotationLayer = AnnotationLayer; + +function _appendElement(element, id, div, accessibilityManager) { + const contentElement = element.firstChild || element; + contentElement.id = `${_display_utils.AnnotationPrefix}${id}`; + div.append(element); + accessibilityManager === null || accessibilityManager === void 0 ? void 0 : accessibilityManager.moveElementInDOM(div, element, contentElement, false); +} + +function _setDimensions(div, _ref2) { + let { + width, + height, + rotation + } = _ref2; + const { + style + } = div; + const flipOrientation = rotation % 180 !== 0, + widthStr = Math.floor(width) + "px", + heightStr = Math.floor(height) + "px"; + style.width = flipOrientation ? heightStr : widthStr; + style.height = flipOrientation ? widthStr : heightStr; + div.setAttribute("data-main-rotation", rotation); +} + +function _setAnnotationCanvasMap(div, annotationCanvasMap) { + if (!annotationCanvasMap) { + return; + } + + for (const [id, canvas] of annotationCanvasMap) { + const element = div.querySelector(`[data-annotation-id="${id}"]`); + + if (!element) { + continue; + } + + const { + firstChild + } = element; + + if (!firstChild) { + element.append(canvas); + } else if (firstChild.nodeName === "CANVAS") { + firstChild.replaceWith(canvas); + } else { + firstChild.before(canvas); + } + } + + annotationCanvasMap.clear(); +} + +/***/ }), +/* 153 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ColorConverters = void 0; + +function makeColorComp(n) { + return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0"); +} + +class ColorConverters { + static CMYK_G(_ref) { + let [c, y, m, k] = _ref; + return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)]; + } + + static G_CMYK(_ref2) { + let [g] = _ref2; + return ["CMYK", 0, 0, 0, 1 - g]; + } + + static G_RGB(_ref3) { + let [g] = _ref3; + return ["RGB", g, g, g]; + } + + static G_HTML(_ref4) { + let [g] = _ref4; + const G = makeColorComp(g); + return `#${G}${G}${G}`; + } + + static RGB_G(_ref5) { + let [r, g, b] = _ref5; + return ["G", 0.3 * r + 0.59 * g + 0.11 * b]; + } + + static RGB_HTML(_ref6) { + let [r, g, b] = _ref6; + const R = makeColorComp(r); + const G = makeColorComp(g); + const B = makeColorComp(b); + return `#${R}${G}${B}`; + } + + static T_HTML() { + return "#00000000"; + } + + static CMYK_RGB(_ref7) { + let [c, y, m, k] = _ref7; + return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)]; + } + + static CMYK_HTML(components) { + const rgb = this.CMYK_RGB(components).slice(1); + return this.RGB_HTML(rgb); + } + + static RGB_CMYK(_ref8) { + let [r, g, b] = _ref8; + const c = 1 - r; + const m = 1 - g; + const y = 1 - b; + const k = Math.min(c, m, y); + return ["CMYK", c, m, y, k]; + } + +} + +exports.ColorConverters = ColorConverters; + +/***/ }), +/* 154 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaLayer = void 0; + +var _xfa_text = __w_pdfjs_require__(145); + +class XfaLayer { + static setupStorage(html, id, element, storage, intent) { + const storedData = storage.getValue(id, { + value: null + }); + + switch (element.name) { + case "textarea": + if (storedData.value !== null) { + html.textContent = storedData.value; + } + + if (intent === "print") { + break; + } + + html.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + }); + break; + + case "input": + if (element.attributes.type === "radio" || element.attributes.type === "checkbox") { + if (storedData.value === element.attributes.xfaOn) { + html.setAttribute("checked", true); + } else if (storedData.value === element.attributes.xfaOff) { + html.removeAttribute("checked"); + } + + if (intent === "print") { + break; + } + + html.addEventListener("change", event => { + storage.setValue(id, { + value: event.target.checked ? event.target.getAttribute("xfaOn") : event.target.getAttribute("xfaOff") + }); + }); + } else { + if (storedData.value !== null) { + html.setAttribute("value", storedData.value); + } + + if (intent === "print") { + break; + } + + html.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + }); + } + + break; + + case "select": + if (storedData.value !== null) { + for (const option of element.children) { + if (option.attributes.value === storedData.value) { + option.attributes.selected = true; + } + } + } + + html.addEventListener("input", event => { + const options = event.target.options; + const value = options.selectedIndex === -1 ? "" : options[options.selectedIndex].value; + storage.setValue(id, { + value + }); + }); + break; + } + } + + static setAttributes(_ref) { + let { + html, + element, + storage = null, + intent, + linkService + } = _ref; + const { + attributes + } = element; + const isHTMLAnchorElement = html instanceof HTMLAnchorElement; + + if (attributes.type === "radio") { + attributes.name = `${attributes.name}-${intent}`; + } + + for (const [key, value] of Object.entries(attributes)) { + if (value === null || value === undefined) { + continue; + } + + switch (key) { + case "class": + if (value.length) { + html.setAttribute(key, value.join(" ")); + } + + break; + + case "dataId": + break; + + case "id": + html.setAttribute("data-element-id", value); + break; + + case "style": + Object.assign(html.style, value); + break; + + case "textContent": + html.textContent = value; + break; + + default: + if (!isHTMLAnchorElement || key !== "href" && key !== "newWindow") { + html.setAttribute(key, value); + } + + } + } + + if (isHTMLAnchorElement) { + linkService.addLinkAttributes(html, attributes.href, attributes.newWindow); + } + + if (storage && attributes.dataId) { + this.setupStorage(html, attributes.dataId, element, storage); + } + } + + static render(parameters) { + const storage = parameters.annotationStorage; + const linkService = parameters.linkService; + const root = parameters.xfaHtml; + const intent = parameters.intent || "display"; + const rootHtml = document.createElement(root.name); + + if (root.attributes) { + this.setAttributes({ + html: rootHtml, + element: root, + intent, + linkService + }); + } + + const stack = [[root, -1, rootHtml]]; + const rootDiv = parameters.div; + rootDiv.append(rootHtml); + + if (parameters.viewport) { + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + rootDiv.style.transform = transform; + } + + if (intent !== "richText") { + rootDiv.setAttribute("class", "xfaLayer xfaFont"); + } + + const textDivs = []; + + while (stack.length > 0) { + var _child$attributes; + + const [parent, i, html] = stack.at(-1); + + if (i + 1 === parent.children.length) { + stack.pop(); + continue; + } + + const child = parent.children[++stack.at(-1)[1]]; + + if (child === null) { + continue; + } + + const { + name + } = child; + + if (name === "#text") { + const node = document.createTextNode(child.value); + textDivs.push(node); + html.append(node); + continue; + } + + let childHtml; + + if (child !== null && child !== void 0 && (_child$attributes = child.attributes) !== null && _child$attributes !== void 0 && _child$attributes.xmlns) { + childHtml = document.createElementNS(child.attributes.xmlns, name); + } else { + childHtml = document.createElement(name); + } + + html.append(childHtml); + + if (child.attributes) { + this.setAttributes({ + html: childHtml, + element: child, + storage, + intent, + linkService + }); + } + + if (child.children && child.children.length > 0) { + stack.push([child, -1, childHtml]); + } else if (child.value) { + const node = document.createTextNode(child.value); + + if (_xfa_text.XfaText.shouldBuildText(name)) { + textDivs.push(node); + } + + childHtml.append(node); + } + } + + for (const el of rootDiv.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea")) { + el.setAttribute("readOnly", true); + } + + return { + textDivs + }; + } + + static update(parameters) { + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + parameters.div.style.transform = transform; + parameters.div.hidden = false; + } + +} + +exports.XfaLayer = XfaLayer; + +/***/ }), +/* 155 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextLayerRenderTask = void 0; +exports.renderTextLayer = renderTextLayer; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(133); + +const MAX_TEXT_DIVS_TO_RENDER = 100000; +const DEFAULT_FONT_SIZE = 30; +const DEFAULT_FONT_ASCENT = 0.8; +const ascentCache = new Map(); +const AllWhitespaceRegexp = /^\s+$/g; + +function getAscent(fontFamily, ctx) { + const cachedAscent = ascentCache.get(fontFamily); + + if (cachedAscent) { + return cachedAscent; + } + + ctx.save(); + ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`; + const metrics = ctx.measureText(""); + let ascent = metrics.fontBoundingBoxAscent; + let descent = Math.abs(metrics.fontBoundingBoxDescent); + + if (ascent) { + ctx.restore(); + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + return ratio; + } + + ctx.strokeStyle = "red"; + ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); + ctx.strokeText("g", 0, 0); + let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; + descent = 0; + + for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) { + if (pixels[i] > 0) { + descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE); + break; + } + } + + ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); + ctx.strokeText("A", 0, DEFAULT_FONT_SIZE); + pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; + ascent = 0; + + for (let i = 0, ii = pixels.length; i < ii; i += 4) { + if (pixels[i] > 0) { + ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE); + break; + } + } + + ctx.restore(); + + if (ascent) { + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + return ratio; + } + + ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT); + return DEFAULT_FONT_ASCENT; +} + +function appendText(task, geom, styles, ctx) { + const textDiv = document.createElement("span"); + const textDivProperties = task._enhanceTextSelection ? { + angle: 0, + canvasWidth: 0, + hasText: geom.str !== "", + hasEOL: geom.hasEOL, + originalTransform: null, + paddingBottom: 0, + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + scale: 1, + fontSize: 0 + } : { + angle: 0, + canvasWidth: 0, + hasText: geom.str !== "", + hasEOL: geom.hasEOL, + fontSize: 0 + }; + + task._textDivs.push(textDiv); + + const tx = _util.Util.transform(task._viewport.transform, geom.transform); + + let angle = Math.atan2(tx[1], tx[0]); + const style = styles[geom.fontName]; + + if (style.vertical) { + angle += Math.PI / 2; + } + + const fontHeight = Math.hypot(tx[2], tx[3]); + const fontAscent = fontHeight * getAscent(style.fontFamily, ctx); + let left, top; + + if (angle === 0) { + left = tx[4]; + top = tx[5] - fontAscent; + } else { + left = tx[4] + fontAscent * Math.sin(angle); + top = tx[5] - fontAscent * Math.cos(angle); + } + + textDiv.style.left = `${left}px`; + textDiv.style.top = `${top}px`; + textDiv.style.fontSize = `${fontHeight}px`; + textDiv.style.fontFamily = style.fontFamily; + textDivProperties.fontSize = fontHeight; + textDiv.setAttribute("role", "presentation"); + textDiv.textContent = geom.str; + textDiv.dir = geom.dir; + + if (task._fontInspectorEnabled) { + textDiv.dataset.fontName = geom.fontName; + } + + if (angle !== 0) { + textDivProperties.angle = angle * (180 / Math.PI); + } + + let shouldScaleText = false; + + if (geom.str.length > 1 || task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str)) { + shouldScaleText = true; + } else if (geom.str !== " " && geom.transform[0] !== geom.transform[3]) { + const absScaleX = Math.abs(geom.transform[0]), + absScaleY = Math.abs(geom.transform[3]); + + if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) { + shouldScaleText = true; + } + } + + if (shouldScaleText) { + if (style.vertical) { + textDivProperties.canvasWidth = geom.height * task._viewport.scale; + } else { + textDivProperties.canvasWidth = geom.width * task._viewport.scale; + } + } + + task._textDivProperties.set(textDiv, textDivProperties); + + if (task._textContentStream) { + task._layoutText(textDiv); + } + + if (task._enhanceTextSelection && textDivProperties.hasText) { + let angleCos = 1, + angleSin = 0; + + if (angle !== 0) { + angleCos = Math.cos(angle); + angleSin = Math.sin(angle); + } + + const divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale; + const divHeight = fontHeight; + let m, b; + + if (angle !== 0) { + m = [angleCos, angleSin, -angleSin, angleCos, left, top]; + b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); + } else { + b = [left, top, left + divWidth, top + divHeight]; + } + + task._bounds.push({ + left: b[0], + top: b[1], + right: b[2], + bottom: b[3], + div: textDiv, + size: [divWidth, divHeight], + m + }); + } +} + +function render(task) { + if (task._canceled) { + return; + } + + const textDivs = task._textDivs; + const capability = task._capability; + const textDivsLength = textDivs.length; + + if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) { + task._renderingDone = true; + capability.resolve(); + return; + } + + if (!task._textContentStream) { + for (let i = 0; i < textDivsLength; i++) { + task._layoutText(textDivs[i]); + } + } + + task._renderingDone = true; + capability.resolve(); +} + +function findPositiveMin(ts, offset, count) { + let result = 0; + + for (let i = 0; i < count; i++) { + const t = ts[offset++]; + + if (t > 0) { + result = result ? Math.min(t, result) : t; + } + } + + return result; +} + +function expand(task) { + const bounds = task._bounds; + const viewport = task._viewport; + const expanded = expandBounds(viewport.width, viewport.height, bounds); + + for (let i = 0; i < expanded.length; i++) { + const div = bounds[i].div; + + const divProperties = task._textDivProperties.get(div); + + if (divProperties.angle === 0) { + divProperties.paddingLeft = bounds[i].left - expanded[i].left; + divProperties.paddingTop = bounds[i].top - expanded[i].top; + divProperties.paddingRight = expanded[i].right - bounds[i].right; + divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom; + + task._textDivProperties.set(div, divProperties); + + continue; + } + + const e = expanded[i], + b = bounds[i]; + const m = b.m, + c = m[0], + s = m[1]; + const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size]; + const ts = new Float64Array(64); + + for (let j = 0, jj = points.length; j < jj; j++) { + const t = _util.Util.applyTransform(points[j], m); + + ts[j + 0] = c && (e.left - t[0]) / c; + ts[j + 4] = s && (e.top - t[1]) / s; + ts[j + 8] = c && (e.right - t[0]) / c; + ts[j + 12] = s && (e.bottom - t[1]) / s; + ts[j + 16] = s && (e.left - t[0]) / -s; + ts[j + 20] = c && (e.top - t[1]) / c; + ts[j + 24] = s && (e.right - t[0]) / -s; + ts[j + 28] = c && (e.bottom - t[1]) / c; + ts[j + 32] = c && (e.left - t[0]) / -c; + ts[j + 36] = s && (e.top - t[1]) / -s; + ts[j + 40] = c && (e.right - t[0]) / -c; + ts[j + 44] = s && (e.bottom - t[1]) / -s; + ts[j + 48] = s && (e.left - t[0]) / s; + ts[j + 52] = c && (e.top - t[1]) / -c; + ts[j + 56] = s && (e.right - t[0]) / s; + ts[j + 60] = c && (e.bottom - t[1]) / -c; + } + + const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s)); + divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale; + divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale; + divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale; + divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale; + + task._textDivProperties.set(div, divProperties); + } +} + +function expandBounds(width, height, boxes) { + const bounds = boxes.map(function (box, i) { + return { + x1: box.left, + y1: box.top, + x2: box.right, + y2: box.bottom, + index: i, + x1New: undefined, + x2New: undefined + }; + }); + expandBoundsLTR(width, bounds); + const expanded = new Array(boxes.length); + + for (const b of bounds) { + const i = b.index; + expanded[i] = { + left: b.x1New, + top: 0, + right: b.x2New, + bottom: 0 + }; + } + + boxes.map(function (box, i) { + const e = expanded[i], + b = bounds[i]; + b.x1 = box.top; + b.y1 = width - e.right; + b.x2 = box.bottom; + b.y2 = width - e.left; + b.index = i; + b.x1New = undefined; + b.x2New = undefined; + }); + expandBoundsLTR(height, bounds); + + for (const b of bounds) { + const i = b.index; + expanded[i].top = b.x1New; + expanded[i].bottom = b.x2New; + } + + return expanded; +} + +function expandBoundsLTR(width, bounds) { + bounds.sort(function (a, b) { + return a.x1 - b.x1 || a.index - b.index; + }); + const fakeBoundary = { + x1: -Infinity, + y1: -Infinity, + x2: 0, + y2: Infinity, + index: -1, + x1New: 0, + x2New: 0 + }; + const horizon = [{ + start: -Infinity, + end: Infinity, + boundary: fakeBoundary + }]; + + for (const boundary of bounds) { + let i = 0; + + while (i < horizon.length && horizon[i].end <= boundary.y1) { + i++; + } + + let j = horizon.length - 1; + + while (j >= 0 && horizon[j].start >= boundary.y2) { + j--; + } + + let horizonPart, affectedBoundary; + let q, + k, + maxXNew = -Infinity; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + let xNew; + + if (affectedBoundary.x2 > boundary.x1) { + xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1; + } else if (affectedBoundary.x2New === undefined) { + xNew = (affectedBoundary.x2 + boundary.x1) / 2; + } else { + xNew = affectedBoundary.x2New; + } + + if (xNew > maxXNew) { + maxXNew = xNew; + } + } + + boundary.x1New = maxXNew; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New === undefined) { + if (affectedBoundary.x2 > boundary.x1) { + if (affectedBoundary.index > boundary.index) { + affectedBoundary.x2New = affectedBoundary.x2; + } + } else { + affectedBoundary.x2New = maxXNew; + } + } else if (affectedBoundary.x2New > maxXNew) { + affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2); + } + } + + const changedHorizon = []; + let lastBoundary = null; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + const useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary; + + if (lastBoundary === useBoundary) { + changedHorizon.at(-1).end = horizonPart.end; + } else { + changedHorizon.push({ + start: horizonPart.start, + end: horizonPart.end, + boundary: useBoundary + }); + lastBoundary = useBoundary; + } + } + + if (horizon[i].start < boundary.y1) { + changedHorizon[0].start = boundary.y1; + changedHorizon.unshift({ + start: horizon[i].start, + end: boundary.y1, + boundary: horizon[i].boundary + }); + } + + if (boundary.y2 < horizon[j].end) { + changedHorizon.at(-1).end = boundary.y2; + changedHorizon.push({ + start: boundary.y2, + end: horizon[j].end, + boundary: horizon[j].boundary + }); + } + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New !== undefined) { + continue; + } + + let used = false; + + for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) { + used = horizon[k].boundary === affectedBoundary; + } + + for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) { + used = horizon[k].boundary === affectedBoundary; + } + + for (k = 0; !used && k < changedHorizon.length; k++) { + used = changedHorizon[k].boundary === affectedBoundary; + } + + if (!used) { + affectedBoundary.x2New = maxXNew; + } + } + + Array.prototype.splice.apply(horizon, [i, j - i + 1, ...changedHorizon]); + } + + for (const horizonPart of horizon) { + const affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New === undefined) { + affectedBoundary.x2New = Math.max(width, affectedBoundary.x2); + } + } +} + +class TextLayerRenderTask { + constructor(_ref) { + var _globalThis$FontInspe; + + let { + textContent, + textContentStream, + container, + viewport, + textDivs, + textContentItemsStr, + enhanceTextSelection + } = _ref; + + if (enhanceTextSelection) { + (0, _display_utils.deprecated)("The `enhanceTextSelection` functionality will be removed in the future."); + } - var textContent = _ref.textContent, - textContentStream = _ref.textContentStream, - container = _ref.container, - viewport = _ref.viewport, - textDivs = _ref.textDivs, - textContentItemsStr = _ref.textContentItemsStr, - enhanceTextSelection = _ref.enhanceTextSelection; this._textContent = textContent; this._textContentStream = textContentStream; this._container = container; + this._document = container.ownerDocument; this._viewport = viewport; this._textDivs = textDivs || []; this._textContentItemsStr = textContentItemsStr || []; this._enhanceTextSelection = !!enhanceTextSelection; - this._fontInspectorEnabled = !!(_global_scope["default"].FontInspector && _global_scope["default"].FontInspector.enabled); + this._fontInspectorEnabled = !!((_globalThis$FontInspe = globalThis.FontInspector) !== null && _globalThis$FontInspe !== void 0 && _globalThis$FontInspe.enabled); this._reader = null; this._layoutTextLastFontSize = null; this._layoutTextLastFontFamily = null; @@ -19244,1728 +20714,351 @@ var renderTextLayer = function renderTextLayerClosure() { this._capability = (0, _util.createPromiseCapability)(); this._renderTimer = null; this._bounds = []; + this._devicePixelRatio = globalThis.devicePixelRatio || 1; - this._capability.promise["finally"](function () { - if (_this._layoutTextCtx) { - _this._layoutTextCtx.canvas.width = 0; - _this._layoutTextCtx.canvas.height = 0; - _this._layoutTextCtx = null; + this._capability.promise.finally(() => { + if (!this._enhanceTextSelection) { + this._textDivProperties = null; } - }); + + if (this._layoutTextCtx) { + this._layoutTextCtx.canvas.width = 0; + this._layoutTextCtx.canvas.height = 0; + this._layoutTextCtx = null; + } + }).catch(() => {}); } - TextLayerRenderTask.prototype = { - get promise() { - return this._capability.promise; - }, + get promise() { + return this._capability.promise; + } - cancel: function TextLayer_cancel() { - this._canceled = true; + cancel() { + this._canceled = true; - if (this._reader) { - this._reader.cancel(new _util.AbortException('TextLayer task cancelled.')); + if (this._reader) { + this._reader.cancel(new _util.AbortException("TextLayer task cancelled.")).catch(() => {}); - this._reader = null; + this._reader = null; + } + + if (this._renderTimer !== null) { + clearTimeout(this._renderTimer); + this._renderTimer = null; + } + + this._capability.reject(new Error("TextLayer task cancelled.")); + } + + _processItems(items, styleCache) { + for (let i = 0, len = items.length; i < len; i++) { + if (items[i].str === undefined) { + if (items[i].type === "beginMarkedContentProps" || items[i].type === "beginMarkedContent") { + const parent = this._container; + this._container = document.createElement("span"); + + this._container.classList.add("markedContent"); + + if (items[i].id !== null) { + this._container.setAttribute("id", `${items[i].id}`); + } + + parent.append(this._container); + } else if (items[i].type === "endMarkedContent") { + this._container = this._container.parentNode; + } + + continue; } - if (this._renderTimer !== null) { - clearTimeout(this._renderTimer); - this._renderTimer = null; - } + this._textContentItemsStr.push(items[i].str); - this._capability.reject(new Error('TextLayer task cancelled.')); - }, - _processItems: function _processItems(items, styleCache) { - for (var i = 0, len = items.length; i < len; i++) { - this._textContentItemsStr.push(items[i].str); + appendText(this, items[i], styleCache, this._layoutTextCtx); + } + } - appendText(this, items[i], styleCache); - } - }, - _layoutText: function _layoutText(textDiv) { - var textLayerFrag = this._container; + _layoutText(textDiv) { + const textDivProperties = this._textDivProperties.get(textDiv); - var textDivProperties = this._textDivProperties.get(textDiv); + let transform = ""; - if (textDivProperties.isWhitespace) { - return; - } - - var fontSize = textDiv.style.fontSize; - var fontFamily = textDiv.style.fontFamily; + if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) { + const { + fontFamily + } = textDiv.style; + const { + fontSize + } = textDivProperties; if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) { - this._layoutTextCtx.font = fontSize + ' ' + fontFamily; + this._layoutTextCtx.font = `${fontSize * this._devicePixelRatio}px ${fontFamily}`; this._layoutTextLastFontSize = fontSize; this._layoutTextLastFontFamily = fontFamily; } - var width = this._layoutTextCtx.measureText(textDiv.textContent).width; + const { + width + } = this._layoutTextCtx.measureText(textDiv.textContent); - var transform = ''; + if (width > 0) { + const scale = this._devicePixelRatio * textDivProperties.canvasWidth / width; - if (textDivProperties.canvasWidth !== 0 && width > 0) { - textDivProperties.scale = textDivProperties.canvasWidth / width; - transform = "scaleX(".concat(textDivProperties.scale, ")"); - } - - if (textDivProperties.angle !== 0) { - transform = "rotate(".concat(textDivProperties.angle, "deg) ").concat(transform); - } - - if (transform.length > 0) { - textDivProperties.originalTransform = transform; - textDiv.style.transform = transform; - } - - this._textDivProperties.set(textDiv, textDivProperties); - - textLayerFrag.appendChild(textDiv); - }, - _render: function TextLayer_render(timeout) { - var _this2 = this; - - var capability = (0, _util.createPromiseCapability)(); - var styleCache = Object.create(null); - var canvas = document.createElement('canvas'); - canvas.mozOpaque = true; - this._layoutTextCtx = canvas.getContext('2d', { - alpha: false - }); - - if (this._textContent) { - var textItems = this._textContent.items; - var textStyles = this._textContent.styles; - - this._processItems(textItems, textStyles); - - capability.resolve(); - } else if (this._textContentStream) { - var pump = function pump() { - _this2._reader.read().then(function (_ref2) { - var value = _ref2.value, - done = _ref2.done; - - if (done) { - capability.resolve(); - return; - } - - Object.assign(styleCache, value.styles); - - _this2._processItems(value.items, styleCache); - - pump(); - }, capability.reject); - }; - - this._reader = this._textContentStream.getReader(); - pump(); - } else { - throw new Error('Neither "textContent" nor "textContentStream"' + ' parameters specified.'); - } - - capability.promise.then(function () { - styleCache = null; - - if (!timeout) { - render(_this2); - } else { - _this2._renderTimer = setTimeout(function () { - render(_this2); - _this2._renderTimer = null; - }, timeout); - } - }, this._capability.reject); - }, - expandTextDivs: function TextLayer_expandTextDivs(expandDivs) { - if (!this._enhanceTextSelection || !this._renderingDone) { - return; - } - - if (this._bounds !== null) { - expand(this); - this._bounds = null; - } - - for (var i = 0, ii = this._textDivs.length; i < ii; i++) { - var div = this._textDivs[i]; - - var divProperties = this._textDivProperties.get(div); - - if (divProperties.isWhitespace) { - continue; + if (this._enhanceTextSelection) { + textDivProperties.scale = scale; } - if (expandDivs) { - var transform = '', - padding = ''; - - if (divProperties.scale !== 1) { - transform = 'scaleX(' + divProperties.scale + ')'; - } - - if (divProperties.angle !== 0) { - transform = 'rotate(' + divProperties.angle + 'deg) ' + transform; - } - - if (divProperties.paddingLeft !== 0) { - padding += ' padding-left: ' + divProperties.paddingLeft / divProperties.scale + 'px;'; - transform += ' translateX(' + -divProperties.paddingLeft / divProperties.scale + 'px)'; - } - - if (divProperties.paddingTop !== 0) { - padding += ' padding-top: ' + divProperties.paddingTop + 'px;'; - transform += ' translateY(' + -divProperties.paddingTop + 'px)'; - } - - if (divProperties.paddingRight !== 0) { - padding += ' padding-right: ' + divProperties.paddingRight / divProperties.scale + 'px;'; - } - - if (divProperties.paddingBottom !== 0) { - padding += ' padding-bottom: ' + divProperties.paddingBottom + 'px;'; - } - - if (padding !== '') { - div.setAttribute('style', divProperties.style + padding); - } - - if (transform !== '') { - div.style.transform = transform; - } - } else { - div.style.padding = 0; - div.style.transform = divProperties.originalTransform || ''; - } + transform = `scaleX(${scale})`; } } - }; - function renderTextLayer(renderParameters) { - var task = new TextLayerRenderTask({ - textContent: renderParameters.textContent, - textContentStream: renderParameters.textContentStream, - container: renderParameters.container, - viewport: renderParameters.viewport, - textDivs: renderParameters.textDivs, - textContentItemsStr: renderParameters.textContentItemsStr, - enhanceTextSelection: renderParameters.enhanceTextSelection + if (textDivProperties.angle !== 0) { + transform = `rotate(${textDivProperties.angle}deg) ${transform}`; + } + + if (transform.length > 0) { + if (this._enhanceTextSelection) { + textDivProperties.originalTransform = transform; + } + + textDiv.style.transform = transform; + } + + if (textDivProperties.hasText) { + this._container.append(textDiv); + } + + if (textDivProperties.hasEOL) { + const br = document.createElement("br"); + br.setAttribute("role", "presentation"); + + this._container.append(br); + } + } + + _render() { + let timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + const capability = (0, _util.createPromiseCapability)(); + let styleCache = Object.create(null); + + const canvas = this._document.createElement("canvas"); + + canvas.height = canvas.width = DEFAULT_FONT_SIZE; + this._layoutTextCtx = canvas.getContext("2d", { + alpha: false }); - task._render(renderParameters.timeout); + if (this._textContent) { + const textItems = this._textContent.items; + const textStyles = this._textContent.styles; - return task; - } + this._processItems(textItems, textStyles); - return renderTextLayer; -}(); + capability.resolve(); + } else if (this._textContentStream) { + const pump = () => { + this._reader.read().then(_ref2 => { + let { + value, + done + } = _ref2; -exports.renderTextLayer = renderTextLayer; - -/***/ }), -/* 163 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.AnnotationLayer = void 0; - -var _display_utils = __w_pdfjs_require__(151); - -var _util = __w_pdfjs_require__(1); - -function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } - -function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var AnnotationElementFactory = -/*#__PURE__*/ -function () { - function AnnotationElementFactory() { - _classCallCheck(this, AnnotationElementFactory); - } - - _createClass(AnnotationElementFactory, null, [{ - key: "create", - value: function create(parameters) { - var subtype = parameters.data.annotationType; - - switch (subtype) { - case _util.AnnotationType.LINK: - return new LinkAnnotationElement(parameters); - - case _util.AnnotationType.TEXT: - return new TextAnnotationElement(parameters); - - case _util.AnnotationType.WIDGET: - var fieldType = parameters.data.fieldType; - - switch (fieldType) { - case 'Tx': - return new TextWidgetAnnotationElement(parameters); - - case 'Btn': - if (parameters.data.radioButton) { - return new RadioButtonWidgetAnnotationElement(parameters); - } else if (parameters.data.checkBox) { - return new CheckboxWidgetAnnotationElement(parameters); - } - - return new PushButtonWidgetAnnotationElement(parameters); - - case 'Ch': - return new ChoiceWidgetAnnotationElement(parameters); + if (done) { + capability.resolve(); + return; } - return new WidgetAnnotationElement(parameters); + Object.assign(styleCache, value.styles); - case _util.AnnotationType.POPUP: - return new PopupAnnotationElement(parameters); + this._processItems(value.items, styleCache); - case _util.AnnotationType.FREETEXT: - return new FreeTextAnnotationElement(parameters); - - case _util.AnnotationType.LINE: - return new LineAnnotationElement(parameters); - - case _util.AnnotationType.SQUARE: - return new SquareAnnotationElement(parameters); - - case _util.AnnotationType.CIRCLE: - return new CircleAnnotationElement(parameters); - - case _util.AnnotationType.POLYLINE: - return new PolylineAnnotationElement(parameters); - - case _util.AnnotationType.CARET: - return new CaretAnnotationElement(parameters); - - case _util.AnnotationType.INK: - return new InkAnnotationElement(parameters); - - case _util.AnnotationType.POLYGON: - return new PolygonAnnotationElement(parameters); - - case _util.AnnotationType.HIGHLIGHT: - return new HighlightAnnotationElement(parameters); - - case _util.AnnotationType.UNDERLINE: - return new UnderlineAnnotationElement(parameters); - - case _util.AnnotationType.SQUIGGLY: - return new SquigglyAnnotationElement(parameters); - - case _util.AnnotationType.STRIKEOUT: - return new StrikeOutAnnotationElement(parameters); - - case _util.AnnotationType.STAMP: - return new StampAnnotationElement(parameters); - - case _util.AnnotationType.FILEATTACHMENT: - return new FileAttachmentAnnotationElement(parameters); - - default: - return new AnnotationElement(parameters); - } - } - }]); - - return AnnotationElementFactory; -}(); - -var AnnotationElement = -/*#__PURE__*/ -function () { - function AnnotationElement(parameters) { - var isRenderable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var ignoreBorder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - _classCallCheck(this, AnnotationElement); - - this.isRenderable = isRenderable; - this.data = parameters.data; - this.layer = parameters.layer; - this.page = parameters.page; - this.viewport = parameters.viewport; - this.linkService = parameters.linkService; - this.downloadManager = parameters.downloadManager; - this.imageResourcesPath = parameters.imageResourcesPath; - this.renderInteractiveForms = parameters.renderInteractiveForms; - this.svgFactory = parameters.svgFactory; - - if (isRenderable) { - this.container = this._createContainer(ignoreBorder); - } - } - - _createClass(AnnotationElement, [{ - key: "_createContainer", - value: function _createContainer() { - var ignoreBorder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var data = this.data, - page = this.page, - viewport = this.viewport; - var container = document.createElement('section'); - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - container.setAttribute('data-annotation-id', data.id); - - var rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); - - container.style.transform = 'matrix(' + viewport.transform.join(',') + ')'; - container.style.transformOrigin = -rect[0] + 'px ' + -rect[1] + 'px'; - - if (!ignoreBorder && data.borderStyle.width > 0) { - container.style.borderWidth = data.borderStyle.width + 'px'; - - if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) { - width = width - 2 * data.borderStyle.width; - height = height - 2 * data.borderStyle.width; - } - - var horizontalRadius = data.borderStyle.horizontalCornerRadius; - var verticalRadius = data.borderStyle.verticalCornerRadius; - - if (horizontalRadius > 0 || verticalRadius > 0) { - var radius = horizontalRadius + 'px / ' + verticalRadius + 'px'; - container.style.borderRadius = radius; - } - - switch (data.borderStyle.style) { - case _util.AnnotationBorderStyleType.SOLID: - container.style.borderStyle = 'solid'; - break; - - case _util.AnnotationBorderStyleType.DASHED: - container.style.borderStyle = 'dashed'; - break; - - case _util.AnnotationBorderStyleType.BEVELED: - (0, _util.warn)('Unimplemented border style: beveled'); - break; - - case _util.AnnotationBorderStyleType.INSET: - (0, _util.warn)('Unimplemented border style: inset'); - break; - - case _util.AnnotationBorderStyleType.UNDERLINE: - container.style.borderBottomStyle = 'solid'; - break; - - default: - break; - } - - if (data.color) { - container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); - } else { - container.style.borderWidth = 0; - } - } - - container.style.left = rect[0] + 'px'; - container.style.top = rect[1] + 'px'; - container.style.width = width + 'px'; - container.style.height = height + 'px'; - return container; - } - }, { - key: "_createPopup", - value: function _createPopup(container, trigger, data) { - if (!trigger) { - trigger = document.createElement('div'); - trigger.style.height = container.style.height; - trigger.style.width = container.style.width; - container.appendChild(trigger); - } - - var popupElement = new PopupElement({ - container: container, - trigger: trigger, - color: data.color, - title: data.title, - modificationDate: data.modificationDate, - contents: data.contents, - hideWrapper: true - }); - var popup = popupElement.render(); - popup.style.left = container.style.width; - container.appendChild(popup); - } - }, { - key: "render", - value: function render() { - (0, _util.unreachable)('Abstract method `AnnotationElement.render` called'); - } - }]); - - return AnnotationElement; -}(); - -var LinkAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement) { - _inherits(LinkAnnotationElement, _AnnotationElement); - - function LinkAnnotationElement(parameters) { - _classCallCheck(this, LinkAnnotationElement); - - var isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action); - return _possibleConstructorReturn(this, _getPrototypeOf(LinkAnnotationElement).call(this, parameters, isRenderable)); - } - - _createClass(LinkAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = 'linkAnnotation'; - var data = this.data, - linkService = this.linkService; - var link = document.createElement('a'); - (0, _display_utils.addLinkAttributes)(link, { - url: data.url, - target: data.newWindow ? _display_utils.LinkTarget.BLANK : linkService.externalLinkTarget, - rel: linkService.externalLinkRel - }); - - if (!data.url) { - if (data.action) { - this._bindNamedAction(link, data.action); - } else { - this._bindLink(link, data.dest); - } - } - - this.container.appendChild(link); - return this.container; - } - }, { - key: "_bindLink", - value: function _bindLink(link, destination) { - var _this = this; - - link.href = this.linkService.getDestinationHash(destination); - - link.onclick = function () { - if (destination) { - _this.linkService.navigateTo(destination); - } - - return false; + pump(); + }, capability.reject); }; - if (destination) { - link.className = 'internalLink'; + this._reader = this._textContentStream.getReader(); + pump(); + } else { + throw new Error('Neither "textContent" nor "textContentStream" parameters specified.'); + } + + capability.promise.then(() => { + styleCache = null; + + if (!timeout) { + render(this); + } else { + this._renderTimer = setTimeout(() => { + render(this); + this._renderTimer = null; + }, timeout); } - } - }, { - key: "_bindNamedAction", - value: function _bindNamedAction(link, action) { - var _this2 = this; - - link.href = this.linkService.getAnchorUrl(''); - - link.onclick = function () { - _this2.linkService.executeNamedAction(action); - - return false; - }; - - link.className = 'internalLink'; - } - }]); - - return LinkAnnotationElement; -}(AnnotationElement); - -var TextAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement2) { - _inherits(TextAnnotationElement, _AnnotationElement2); - - function TextAnnotationElement(parameters) { - _classCallCheck(this, TextAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _possibleConstructorReturn(this, _getPrototypeOf(TextAnnotationElement).call(this, parameters, isRenderable)); + }, this._capability.reject); } - _createClass(TextAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = 'textAnnotation'; - var image = document.createElement('img'); - image.style.height = this.container.style.height; - image.style.width = this.container.style.width; - image.src = this.imageResourcesPath + 'annotation-' + this.data.name.toLowerCase() + '.svg'; - image.alt = '[{{type}} Annotation]'; - image.dataset.l10nId = 'text_annotation_type'; - image.dataset.l10nArgs = JSON.stringify({ - type: this.data.name - }); + expandTextDivs() { + let expandDivs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - if (!this.data.hasPopup) { - this._createPopup(this.container, image, this.data); + if (!this._enhanceTextSelection || !this._renderingDone) { + return; + } + + if (this._bounds !== null) { + expand(this); + this._bounds = null; + } + + const transformBuf = [], + paddingBuf = []; + + for (let i = 0, ii = this._textDivs.length; i < ii; i++) { + const div = this._textDivs[i]; + + const divProps = this._textDivProperties.get(div); + + if (!divProps.hasText) { + continue; } - this.container.appendChild(image); - return this.container; - } - }]); + if (expandDivs) { + transformBuf.length = 0; + paddingBuf.length = 0; - return TextAnnotationElement; -}(AnnotationElement); + if (divProps.originalTransform) { + transformBuf.push(divProps.originalTransform); + } -var WidgetAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement3) { - _inherits(WidgetAnnotationElement, _AnnotationElement3); - - function WidgetAnnotationElement() { - _classCallCheck(this, WidgetAnnotationElement); - - return _possibleConstructorReturn(this, _getPrototypeOf(WidgetAnnotationElement).apply(this, arguments)); - } - - _createClass(WidgetAnnotationElement, [{ - key: "render", - value: function render() { - return this.container; - } - }]); - - return WidgetAnnotationElement; -}(AnnotationElement); - -var TextWidgetAnnotationElement = -/*#__PURE__*/ -function (_WidgetAnnotationElem) { - _inherits(TextWidgetAnnotationElement, _WidgetAnnotationElem); - - function TextWidgetAnnotationElement(parameters) { - _classCallCheck(this, TextWidgetAnnotationElement); - - var isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; - return _possibleConstructorReturn(this, _getPrototypeOf(TextWidgetAnnotationElement).call(this, parameters, isRenderable)); - } - - _createClass(TextWidgetAnnotationElement, [{ - key: "render", - value: function render() { - var TEXT_ALIGNMENT = ['left', 'center', 'right']; - this.container.className = 'textWidgetAnnotation'; - var element = null; - - if (this.renderInteractiveForms) { - if (this.data.multiLine) { - element = document.createElement('textarea'); - element.textContent = this.data.fieldValue; + if (divProps.paddingTop > 0) { + paddingBuf.push(`${divProps.paddingTop}px`); + transformBuf.push(`translateY(${-divProps.paddingTop}px)`); } else { - element = document.createElement('input'); - element.type = 'text'; - element.setAttribute('value', this.data.fieldValue); + paddingBuf.push(0); } - element.disabled = this.data.readOnly; - - if (this.data.maxLen !== null) { - element.maxLength = this.data.maxLen; + if (divProps.paddingRight > 0) { + paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`); + } else { + paddingBuf.push(0); } - if (this.data.comb) { - var fieldWidth = this.data.rect[2] - this.data.rect[0]; - var combWidth = fieldWidth / this.data.maxLen; - element.classList.add('comb'); - element.style.letterSpacing = 'calc(' + combWidth + 'px - 1ch)'; + if (divProps.paddingBottom > 0) { + paddingBuf.push(`${divProps.paddingBottom}px`); + } else { + paddingBuf.push(0); + } + + if (divProps.paddingLeft > 0) { + paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`); + transformBuf.push(`translateX(${-divProps.paddingLeft / divProps.scale}px)`); + } else { + paddingBuf.push(0); + } + + div.style.padding = paddingBuf.join(" "); + + if (transformBuf.length) { + div.style.transform = transformBuf.join(" "); } } else { - element = document.createElement('div'); - element.textContent = this.data.fieldValue; - element.style.verticalAlign = 'middle'; - element.style.display = 'table-cell'; - var font = null; - - if (this.data.fontRefName && this.page.commonObjs.has(this.data.fontRefName)) { - font = this.page.commonObjs.get(this.data.fontRefName); - } - - this._setTextStyle(element, font); + div.style.padding = null; + div.style.transform = divProps.originalTransform; } - - if (this.data.textAlignment !== null) { - element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment]; - } - - this.container.appendChild(element); - return this.container; } - }, { - key: "_setTextStyle", - value: function _setTextStyle(element, font) { - var style = element.style; - style.fontSize = this.data.fontSize + 'px'; - style.direction = this.data.fontDirection < 0 ? 'rtl' : 'ltr'; - - if (!font) { - return; - } - - style.fontWeight = font.black ? font.bold ? '900' : 'bold' : font.bold ? 'bold' : 'normal'; - style.fontStyle = font.italic ? 'italic' : 'normal'; - var fontFamily = font.loadedName ? '"' + font.loadedName + '", ' : ''; - var fallbackName = font.fallbackName || 'Helvetica, sans-serif'; - style.fontFamily = fontFamily + fallbackName; - } - }]); - - return TextWidgetAnnotationElement; -}(WidgetAnnotationElement); - -var CheckboxWidgetAnnotationElement = -/*#__PURE__*/ -function (_WidgetAnnotationElem2) { - _inherits(CheckboxWidgetAnnotationElement, _WidgetAnnotationElem2); - - function CheckboxWidgetAnnotationElement(parameters) { - _classCallCheck(this, CheckboxWidgetAnnotationElement); - - return _possibleConstructorReturn(this, _getPrototypeOf(CheckboxWidgetAnnotationElement).call(this, parameters, parameters.renderInteractiveForms)); } - _createClass(CheckboxWidgetAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = 'buttonWidgetAnnotation checkBox'; - var element = document.createElement('input'); - element.disabled = this.data.readOnly; - element.type = 'checkbox'; +} - if (this.data.fieldValue && this.data.fieldValue !== 'Off') { - element.setAttribute('checked', true); - } +exports.TextLayerRenderTask = TextLayerRenderTask; - this.container.appendChild(element); - return this.container; - } - }]); +function renderTextLayer(renderParameters) { + const task = new TextLayerRenderTask({ + textContent: renderParameters.textContent, + textContentStream: renderParameters.textContentStream, + container: renderParameters.container, + viewport: renderParameters.viewport, + textDivs: renderParameters.textDivs, + textContentItemsStr: renderParameters.textContentItemsStr, + enhanceTextSelection: renderParameters.enhanceTextSelection + }); - return CheckboxWidgetAnnotationElement; -}(WidgetAnnotationElement); + task._render(renderParameters.timeout); -var RadioButtonWidgetAnnotationElement = -/*#__PURE__*/ -function (_WidgetAnnotationElem3) { - _inherits(RadioButtonWidgetAnnotationElement, _WidgetAnnotationElem3); - - function RadioButtonWidgetAnnotationElement(parameters) { - _classCallCheck(this, RadioButtonWidgetAnnotationElement); - - return _possibleConstructorReturn(this, _getPrototypeOf(RadioButtonWidgetAnnotationElement).call(this, parameters, parameters.renderInteractiveForms)); - } - - _createClass(RadioButtonWidgetAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = 'buttonWidgetAnnotation radioButton'; - var element = document.createElement('input'); - element.disabled = this.data.readOnly; - element.type = 'radio'; - element.name = this.data.fieldName; - - if (this.data.fieldValue === this.data.buttonValue) { - element.setAttribute('checked', true); - } - - this.container.appendChild(element); - return this.container; - } - }]); - - return RadioButtonWidgetAnnotationElement; -}(WidgetAnnotationElement); - -var PushButtonWidgetAnnotationElement = -/*#__PURE__*/ -function (_LinkAnnotationElemen) { - _inherits(PushButtonWidgetAnnotationElement, _LinkAnnotationElemen); - - function PushButtonWidgetAnnotationElement() { - _classCallCheck(this, PushButtonWidgetAnnotationElement); - - return _possibleConstructorReturn(this, _getPrototypeOf(PushButtonWidgetAnnotationElement).apply(this, arguments)); - } - - _createClass(PushButtonWidgetAnnotationElement, [{ - key: "render", - value: function render() { - var container = _get(_getPrototypeOf(PushButtonWidgetAnnotationElement.prototype), "render", this).call(this); - - container.className = 'buttonWidgetAnnotation pushButton'; - return container; - } - }]); - - return PushButtonWidgetAnnotationElement; -}(LinkAnnotationElement); - -var ChoiceWidgetAnnotationElement = -/*#__PURE__*/ -function (_WidgetAnnotationElem4) { - _inherits(ChoiceWidgetAnnotationElement, _WidgetAnnotationElem4); - - function ChoiceWidgetAnnotationElement(parameters) { - _classCallCheck(this, ChoiceWidgetAnnotationElement); - - return _possibleConstructorReturn(this, _getPrototypeOf(ChoiceWidgetAnnotationElement).call(this, parameters, parameters.renderInteractiveForms)); - } - - _createClass(ChoiceWidgetAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = 'choiceWidgetAnnotation'; - var selectElement = document.createElement('select'); - selectElement.disabled = this.data.readOnly; - - if (!this.data.combo) { - selectElement.size = this.data.options.length; - - if (this.data.multiSelect) { - selectElement.multiple = true; - } - } - - for (var i = 0, ii = this.data.options.length; i < ii; i++) { - var option = this.data.options[i]; - var optionElement = document.createElement('option'); - optionElement.textContent = option.displayValue; - optionElement.value = option.exportValue; - - if (this.data.fieldValue.includes(option.displayValue)) { - optionElement.setAttribute('selected', true); - } - - selectElement.appendChild(optionElement); - } - - this.container.appendChild(selectElement); - return this.container; - } - }]); - - return ChoiceWidgetAnnotationElement; -}(WidgetAnnotationElement); - -var PopupAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement4) { - _inherits(PopupAnnotationElement, _AnnotationElement4); - - function PopupAnnotationElement(parameters) { - _classCallCheck(this, PopupAnnotationElement); - - var isRenderable = !!(parameters.data.title || parameters.data.contents); - return _possibleConstructorReturn(this, _getPrototypeOf(PopupAnnotationElement).call(this, parameters, isRenderable)); - } - - _createClass(PopupAnnotationElement, [{ - key: "render", - value: function render() { - var IGNORE_TYPES = ['Line', 'Square', 'Circle', 'PolyLine', 'Polygon', 'Ink']; - this.container.className = 'popupAnnotation'; - - if (IGNORE_TYPES.includes(this.data.parentType)) { - return this.container; - } - - var selector = '[data-annotation-id="' + this.data.parentId + '"]'; - var parentElement = this.layer.querySelector(selector); - - if (!parentElement) { - return this.container; - } - - var popup = new PopupElement({ - container: this.container, - trigger: parentElement, - color: this.data.color, - title: this.data.title, - modificationDate: this.data.modificationDate, - contents: this.data.contents - }); - var parentLeft = parseFloat(parentElement.style.left); - var parentWidth = parseFloat(parentElement.style.width); - this.container.style.transformOrigin = -(parentLeft + parentWidth) + 'px -' + parentElement.style.top; - this.container.style.left = parentLeft + parentWidth + 'px'; - this.container.appendChild(popup.render()); - return this.container; - } - }]); - - return PopupAnnotationElement; -}(AnnotationElement); - -var PopupElement = -/*#__PURE__*/ -function () { - function PopupElement(parameters) { - _classCallCheck(this, PopupElement); - - this.container = parameters.container; - this.trigger = parameters.trigger; - this.color = parameters.color; - this.title = parameters.title; - this.modificationDate = parameters.modificationDate; - this.contents = parameters.contents; - this.hideWrapper = parameters.hideWrapper || false; - this.pinned = false; - } - - _createClass(PopupElement, [{ - key: "render", - value: function render() { - var BACKGROUND_ENLIGHT = 0.7; - var wrapper = document.createElement('div'); - wrapper.className = 'popupWrapper'; - this.hideElement = this.hideWrapper ? wrapper : this.container; - this.hideElement.setAttribute('hidden', true); - var popup = document.createElement('div'); - popup.className = 'popup'; - var color = this.color; - - if (color) { - var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0]; - var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1]; - var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2]; - popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0); - } - - var title = document.createElement('h1'); - title.textContent = this.title; - popup.appendChild(title); - - var dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate); - - if (dateObject) { - var modificationDate = document.createElement('span'); - modificationDate.textContent = '{{date}}, {{time}}'; - modificationDate.dataset.l10nId = 'annotation_date_string'; - modificationDate.dataset.l10nArgs = JSON.stringify({ - date: dateObject.toLocaleDateString(), - time: dateObject.toLocaleTimeString() - }); - popup.appendChild(modificationDate); - } - - var contents = this._formatContents(this.contents); - - popup.appendChild(contents); - this.trigger.addEventListener('click', this._toggle.bind(this)); - this.trigger.addEventListener('mouseover', this._show.bind(this, false)); - this.trigger.addEventListener('mouseout', this._hide.bind(this, false)); - popup.addEventListener('click', this._hide.bind(this, true)); - wrapper.appendChild(popup); - return wrapper; - } - }, { - key: "_formatContents", - value: function _formatContents(contents) { - var p = document.createElement('p'); - var lines = contents.split(/(?:\r\n?|\n)/); - - for (var i = 0, ii = lines.length; i < ii; ++i) { - var line = lines[i]; - p.appendChild(document.createTextNode(line)); - - if (i < ii - 1) { - p.appendChild(document.createElement('br')); - } - } - - return p; - } - }, { - key: "_toggle", - value: function _toggle() { - if (this.pinned) { - this._hide(true); - } else { - this._show(true); - } - } - }, { - key: "_show", - value: function _show() { - var pin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (pin) { - this.pinned = true; - } - - if (this.hideElement.hasAttribute('hidden')) { - this.hideElement.removeAttribute('hidden'); - this.container.style.zIndex += 1; - } - } - }, { - key: "_hide", - value: function _hide() { - var unpin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - - if (unpin) { - this.pinned = false; - } - - if (!this.hideElement.hasAttribute('hidden') && !this.pinned) { - this.hideElement.setAttribute('hidden', true); - this.container.style.zIndex -= 1; - } - } - }]); - - return PopupElement; -}(); - -var FreeTextAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement5) { - _inherits(FreeTextAnnotationElement, _AnnotationElement5); - - function FreeTextAnnotationElement(parameters) { - _classCallCheck(this, FreeTextAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _possibleConstructorReturn(this, _getPrototypeOf(FreeTextAnnotationElement).call(this, parameters, isRenderable, true)); - } - - _createClass(FreeTextAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = 'freeTextAnnotation'; - - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); - } - - return this.container; - } - }]); - - return FreeTextAnnotationElement; -}(AnnotationElement); - -var LineAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement6) { - _inherits(LineAnnotationElement, _AnnotationElement6); - - function LineAnnotationElement(parameters) { - _classCallCheck(this, LineAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _possibleConstructorReturn(this, _getPrototypeOf(LineAnnotationElement).call(this, parameters, isRenderable, true)); - } - - _createClass(LineAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = 'lineAnnotation'; - var data = this.data; - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - var svg = this.svgFactory.create(width, height); - var line = this.svgFactory.createElement('svg:line'); - line.setAttribute('x1', data.rect[2] - data.lineCoordinates[0]); - line.setAttribute('y1', data.rect[3] - data.lineCoordinates[1]); - line.setAttribute('x2', data.rect[2] - data.lineCoordinates[2]); - line.setAttribute('y2', data.rect[3] - data.lineCoordinates[3]); - line.setAttribute('stroke-width', data.borderStyle.width); - line.setAttribute('stroke', 'transparent'); - svg.appendChild(line); - this.container.append(svg); - - this._createPopup(this.container, line, data); - - return this.container; - } - }]); - - return LineAnnotationElement; -}(AnnotationElement); - -var SquareAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement7) { - _inherits(SquareAnnotationElement, _AnnotationElement7); - - function SquareAnnotationElement(parameters) { - _classCallCheck(this, SquareAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _possibleConstructorReturn(this, _getPrototypeOf(SquareAnnotationElement).call(this, parameters, isRenderable, true)); - } - - _createClass(SquareAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = 'squareAnnotation'; - var data = this.data; - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - var svg = this.svgFactory.create(width, height); - var borderWidth = data.borderStyle.width; - var square = this.svgFactory.createElement('svg:rect'); - square.setAttribute('x', borderWidth / 2); - square.setAttribute('y', borderWidth / 2); - square.setAttribute('width', width - borderWidth); - square.setAttribute('height', height - borderWidth); - square.setAttribute('stroke-width', borderWidth); - square.setAttribute('stroke', 'transparent'); - square.setAttribute('fill', 'none'); - svg.appendChild(square); - this.container.append(svg); - - this._createPopup(this.container, square, data); - - return this.container; - } - }]); - - return SquareAnnotationElement; -}(AnnotationElement); - -var CircleAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement8) { - _inherits(CircleAnnotationElement, _AnnotationElement8); - - function CircleAnnotationElement(parameters) { - _classCallCheck(this, CircleAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _possibleConstructorReturn(this, _getPrototypeOf(CircleAnnotationElement).call(this, parameters, isRenderable, true)); - } - - _createClass(CircleAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = 'circleAnnotation'; - var data = this.data; - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - var svg = this.svgFactory.create(width, height); - var borderWidth = data.borderStyle.width; - var circle = this.svgFactory.createElement('svg:ellipse'); - circle.setAttribute('cx', width / 2); - circle.setAttribute('cy', height / 2); - circle.setAttribute('rx', width / 2 - borderWidth / 2); - circle.setAttribute('ry', height / 2 - borderWidth / 2); - circle.setAttribute('stroke-width', borderWidth); - circle.setAttribute('stroke', 'transparent'); - circle.setAttribute('fill', 'none'); - svg.appendChild(circle); - this.container.append(svg); - - this._createPopup(this.container, circle, data); - - return this.container; - } - }]); - - return CircleAnnotationElement; -}(AnnotationElement); - -var PolylineAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement9) { - _inherits(PolylineAnnotationElement, _AnnotationElement9); - - function PolylineAnnotationElement(parameters) { - var _this3; - - _classCallCheck(this, PolylineAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - _this3 = _possibleConstructorReturn(this, _getPrototypeOf(PolylineAnnotationElement).call(this, parameters, isRenderable, true)); - _this3.containerClassName = 'polylineAnnotation'; - _this3.svgElementName = 'svg:polyline'; - return _this3; - } - - _createClass(PolylineAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = this.containerClassName; - var data = this.data; - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - var svg = this.svgFactory.create(width, height); - var vertices = data.vertices; - var points = []; - - for (var i = 0, ii = vertices.length; i < ii; i++) { - var x = vertices[i].x - data.rect[0]; - var y = data.rect[3] - vertices[i].y; - points.push(x + ',' + y); - } - - points = points.join(' '); - var borderWidth = data.borderStyle.width; - var polyline = this.svgFactory.createElement(this.svgElementName); - polyline.setAttribute('points', points); - polyline.setAttribute('stroke-width', borderWidth); - polyline.setAttribute('stroke', 'transparent'); - polyline.setAttribute('fill', 'none'); - svg.appendChild(polyline); - this.container.append(svg); - - this._createPopup(this.container, polyline, data); - - return this.container; - } - }]); - - return PolylineAnnotationElement; -}(AnnotationElement); - -var PolygonAnnotationElement = -/*#__PURE__*/ -function (_PolylineAnnotationEl) { - _inherits(PolygonAnnotationElement, _PolylineAnnotationEl); - - function PolygonAnnotationElement(parameters) { - var _this4; - - _classCallCheck(this, PolygonAnnotationElement); - - _this4 = _possibleConstructorReturn(this, _getPrototypeOf(PolygonAnnotationElement).call(this, parameters)); - _this4.containerClassName = 'polygonAnnotation'; - _this4.svgElementName = 'svg:polygon'; - return _this4; - } - - return PolygonAnnotationElement; -}(PolylineAnnotationElement); - -var CaretAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement10) { - _inherits(CaretAnnotationElement, _AnnotationElement10); - - function CaretAnnotationElement(parameters) { - _classCallCheck(this, CaretAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _possibleConstructorReturn(this, _getPrototypeOf(CaretAnnotationElement).call(this, parameters, isRenderable, true)); - } - - _createClass(CaretAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = 'caretAnnotation'; - - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); - } - - return this.container; - } - }]); - - return CaretAnnotationElement; -}(AnnotationElement); - -var InkAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement11) { - _inherits(InkAnnotationElement, _AnnotationElement11); - - function InkAnnotationElement(parameters) { - var _this5; - - _classCallCheck(this, InkAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - _this5 = _possibleConstructorReturn(this, _getPrototypeOf(InkAnnotationElement).call(this, parameters, isRenderable, true)); - _this5.containerClassName = 'inkAnnotation'; - _this5.svgElementName = 'svg:polyline'; - return _this5; - } - - _createClass(InkAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = this.containerClassName; - var data = this.data; - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - var svg = this.svgFactory.create(width, height); - var inkLists = data.inkLists; - - for (var i = 0, ii = inkLists.length; i < ii; i++) { - var inkList = inkLists[i]; - var points = []; - - for (var j = 0, jj = inkList.length; j < jj; j++) { - var x = inkList[j].x - data.rect[0]; - var y = data.rect[3] - inkList[j].y; - points.push(x + ',' + y); - } - - points = points.join(' '); - var borderWidth = data.borderStyle.width; - var polyline = this.svgFactory.createElement(this.svgElementName); - polyline.setAttribute('points', points); - polyline.setAttribute('stroke-width', borderWidth); - polyline.setAttribute('stroke', 'transparent'); - polyline.setAttribute('fill', 'none'); - - this._createPopup(this.container, polyline, data); - - svg.appendChild(polyline); - } - - this.container.append(svg); - return this.container; - } - }]); - - return InkAnnotationElement; -}(AnnotationElement); - -var HighlightAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement12) { - _inherits(HighlightAnnotationElement, _AnnotationElement12); - - function HighlightAnnotationElement(parameters) { - _classCallCheck(this, HighlightAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _possibleConstructorReturn(this, _getPrototypeOf(HighlightAnnotationElement).call(this, parameters, isRenderable, true)); - } - - _createClass(HighlightAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = 'highlightAnnotation'; - - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); - } - - return this.container; - } - }]); - - return HighlightAnnotationElement; -}(AnnotationElement); - -var UnderlineAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement13) { - _inherits(UnderlineAnnotationElement, _AnnotationElement13); - - function UnderlineAnnotationElement(parameters) { - _classCallCheck(this, UnderlineAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _possibleConstructorReturn(this, _getPrototypeOf(UnderlineAnnotationElement).call(this, parameters, isRenderable, true)); - } - - _createClass(UnderlineAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = 'underlineAnnotation'; - - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); - } - - return this.container; - } - }]); - - return UnderlineAnnotationElement; -}(AnnotationElement); - -var SquigglyAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement14) { - _inherits(SquigglyAnnotationElement, _AnnotationElement14); - - function SquigglyAnnotationElement(parameters) { - _classCallCheck(this, SquigglyAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _possibleConstructorReturn(this, _getPrototypeOf(SquigglyAnnotationElement).call(this, parameters, isRenderable, true)); - } - - _createClass(SquigglyAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = 'squigglyAnnotation'; - - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); - } - - return this.container; - } - }]); - - return SquigglyAnnotationElement; -}(AnnotationElement); - -var StrikeOutAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement15) { - _inherits(StrikeOutAnnotationElement, _AnnotationElement15); - - function StrikeOutAnnotationElement(parameters) { - _classCallCheck(this, StrikeOutAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _possibleConstructorReturn(this, _getPrototypeOf(StrikeOutAnnotationElement).call(this, parameters, isRenderable, true)); - } - - _createClass(StrikeOutAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = 'strikeoutAnnotation'; - - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); - } - - return this.container; - } - }]); - - return StrikeOutAnnotationElement; -}(AnnotationElement); - -var StampAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement16) { - _inherits(StampAnnotationElement, _AnnotationElement16); - - function StampAnnotationElement(parameters) { - _classCallCheck(this, StampAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _possibleConstructorReturn(this, _getPrototypeOf(StampAnnotationElement).call(this, parameters, isRenderable, true)); - } - - _createClass(StampAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = 'stampAnnotation'; - - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); - } - - return this.container; - } - }]); - - return StampAnnotationElement; -}(AnnotationElement); - -var FileAttachmentAnnotationElement = -/*#__PURE__*/ -function (_AnnotationElement17) { - _inherits(FileAttachmentAnnotationElement, _AnnotationElement17); - - function FileAttachmentAnnotationElement(parameters) { - var _this6; - - _classCallCheck(this, FileAttachmentAnnotationElement); - - _this6 = _possibleConstructorReturn(this, _getPrototypeOf(FileAttachmentAnnotationElement).call(this, parameters, true)); - var _this6$data$file = _this6.data.file, - filename = _this6$data$file.filename, - content = _this6$data$file.content; - _this6.filename = (0, _display_utils.getFilenameFromUrl)(filename); - _this6.content = content; - - if (_this6.linkService.eventBus) { - _this6.linkService.eventBus.dispatch('fileattachmentannotation', { - source: _assertThisInitialized(_this6), - id: (0, _util.stringToPDFString)(filename), - filename: filename, - content: content - }); - } - - return _this6; - } - - _createClass(FileAttachmentAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = 'fileAttachmentAnnotation'; - var trigger = document.createElement('div'); - trigger.style.height = this.container.style.height; - trigger.style.width = this.container.style.width; - trigger.addEventListener('dblclick', this._download.bind(this)); - - if (!this.data.hasPopup && (this.data.title || this.data.contents)) { - this._createPopup(this.container, trigger, this.data); - } - - this.container.appendChild(trigger); - return this.container; - } - }, { - key: "_download", - value: function _download() { - if (!this.downloadManager) { - (0, _util.warn)('Download cannot be started due to unavailable download manager'); - return; - } - - this.downloadManager.downloadData(this.content, this.filename, ''); - } - }]); - - return FileAttachmentAnnotationElement; -}(AnnotationElement); - -var AnnotationLayer = -/*#__PURE__*/ -function () { - function AnnotationLayer() { - _classCallCheck(this, AnnotationLayer); - } - - _createClass(AnnotationLayer, null, [{ - key: "render", - value: function render(parameters) { - for (var i = 0, ii = parameters.annotations.length; i < ii; i++) { - var data = parameters.annotations[i]; - - if (!data) { - continue; - } - - var element = AnnotationElementFactory.create({ - data: data, - layer: parameters.div, - page: parameters.page, - viewport: parameters.viewport, - linkService: parameters.linkService, - downloadManager: parameters.downloadManager, - imageResourcesPath: parameters.imageResourcesPath || '', - renderInteractiveForms: parameters.renderInteractiveForms || false, - svgFactory: new _display_utils.DOMSVGFactory() - }); - - if (element.isRenderable) { - parameters.div.appendChild(element.render()); - } - } - } - }, { - key: "update", - value: function update(parameters) { - for (var i = 0, ii = parameters.annotations.length; i < ii; i++) { - var data = parameters.annotations[i]; - var element = parameters.div.querySelector('[data-annotation-id="' + data.id + '"]'); - - if (element) { - element.style.transform = 'matrix(' + parameters.viewport.transform.join(',') + ')'; - } - } - - parameters.div.removeAttribute('hidden'); - } - }]); - - return AnnotationLayer; -}(); - -exports.AnnotationLayer = AnnotationLayer; + return task; +} /***/ }), -/* 164 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 156 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.SVGGraphics = void 0; +var _display_utils = __w_pdfjs_require__(133); + var _util = __w_pdfjs_require__(1); -var _display_utils = __w_pdfjs_require__(151); +var _is_node = __w_pdfjs_require__(3); -var _is_node = _interopRequireDefault(__w_pdfjs_require__(4)); +let SVGGraphics = class { + constructor() { + (0, _util.unreachable)("Not implemented: SVGGraphics"); + } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } - -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } - -function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } - -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } - -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } - -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var SVGGraphics = function SVGGraphics() { - throw new Error('Not implemented: SVGGraphics'); }; - exports.SVGGraphics = SVGGraphics; { - var opListToTree = function opListToTree(opList) { - var opTree = []; - var tmp = []; - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; + const SVG_DEFAULTS = { + fontStyle: "normal", + fontWeight: "normal", + fillColor: "#000000" + }; + const XML_NS = "http://www.w3.org/XML/1998/namespace"; + const XLINK_NS = "http://www.w3.org/1999/xlink"; + const LINE_CAP_STYLES = ["butt", "round", "square"]; + const LINE_JOIN_STYLES = ["miter", "round", "bevel"]; - try { - for (var _iterator = opList[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var opListElement = _step.value; + const createObjectURL = function (data) { + let contentType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; + let forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - if (opListElement.fn === 'save') { - opTree.push({ - 'fnId': 92, - 'fn': 'group', - 'items': [] - }); - tmp.push(opTree); - opTree = opTree[opTree.length - 1].items; - continue; - } - - if (opListElement.fn === 'restore') { - opTree = tmp.pop(); - } else { - opTree.push(opListElement); - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator["return"] != null) { - _iterator["return"](); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } + if (URL.createObjectURL && typeof Blob !== "undefined" && !forceDataSchema) { + return URL.createObjectURL(new Blob([data], { + type: contentType + })); } - return opTree; - }; + const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + let buffer = `data:${contentType};base64,`; - var pf = function pf(value) { - if (Number.isInteger(value)) { - return value.toString(); + for (let i = 0, ii = data.length; i < ii; i += 3) { + const b1 = data[i] & 0xff; + const b2 = data[i + 1] & 0xff; + const b3 = data[i + 2] & 0xff; + const d1 = b1 >> 2, + d2 = (b1 & 3) << 4 | b2 >> 4; + const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64; + const d4 = i + 2 < ii ? b3 & 0x3f : 64; + buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4]; } - var s = value.toFixed(10); - var i = s.length - 1; - - if (s[i] !== '0') { - return s; - } - - do { - i--; - } while (s[i] === '0'); - - return s.substring(0, s[i] === '.' ? i : i + 1); + return buffer; }; - var pm = function pm(m) { - if (m[4] === 0 && m[5] === 0) { - if (m[1] === 0 && m[2] === 0) { - if (m[0] === 1 && m[3] === 1) { - return ''; - } + const convertImgDataToPng = function () { + const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); + const CHUNK_WRAPPER_SIZE = 12; + const crcTable = new Int32Array(256); - return "scale(".concat(pf(m[0]), " ").concat(pf(m[3]), ")"); - } + for (let i = 0; i < 256; i++) { + let c = i; - if (m[0] === m[3] && m[1] === -m[2]) { - var a = Math.acos(m[0]) * 180 / Math.PI; - return "rotate(".concat(pf(a), ")"); - } - } else { - if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { - return "translate(".concat(pf(m[4]), " ").concat(pf(m[5]), ")"); - } - } - - return "matrix(".concat(pf(m[0]), " ").concat(pf(m[1]), " ").concat(pf(m[2]), " ").concat(pf(m[3]), " ").concat(pf(m[4]), " ") + "".concat(pf(m[5]), ")"); - }; - - var SVG_DEFAULTS = { - fontStyle: 'normal', - fontWeight: 'normal', - fillColor: '#000000' - }; - var XML_NS = 'http://www.w3.org/XML/1998/namespace'; - var XLINK_NS = 'http://www.w3.org/1999/xlink'; - var LINE_CAP_STYLES = ['butt', 'round', 'square']; - var LINE_JOIN_STYLES = ['miter', 'round', 'bevel']; - - var convertImgDataToPng = function () { - var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); - var CHUNK_WRAPPER_SIZE = 12; - var crcTable = new Int32Array(256); - - for (var i = 0; i < 256; i++) { - var c = i; - - for (var h = 0; h < 8; h++) { + for (let h = 0; h < 8; h++) { if (c & 1) { - c = 0xedB88320 ^ c >> 1 & 0x7fffffff; + c = 0xedb88320 ^ c >> 1 & 0x7fffffff; } else { c = c >> 1 & 0x7fffffff; } @@ -20975,11 +21068,11 @@ exports.SVGGraphics = SVGGraphics; } function crc32(data, start, end) { - var crc = -1; + let crc = -1; - for (var _i = start; _i < end; _i++) { - var a = (crc ^ data[_i]) & 0xff; - var b = crcTable[a]; + for (let i = start; i < end; i++) { + const a = (crc ^ data[i]) & 0xff; + const b = crcTable[a]; crc = crc >>> 8 ^ b; } @@ -20987,8 +21080,8 @@ exports.SVGGraphics = SVGGraphics; } function writePngChunk(type, body, data, offset) { - var p = offset; - var len = body.length; + let p = offset; + const len = body.length; data[p] = len >> 24 & 0xff; data[p + 1] = len >> 16 & 0xff; data[p + 2] = len >> 8 & 0xff; @@ -21001,7 +21094,7 @@ exports.SVGGraphics = SVGGraphics; p += 4; data.set(body, p); p += body.length; - var crc = crc32(data, offset + 4, p); + const crc = crc32(data, offset + 4, p); data[p] = crc >> 24 & 0xff; data[p + 1] = crc >> 16 & 0xff; data[p + 2] = crc >> 8 & 0xff; @@ -21009,11 +21102,11 @@ exports.SVGGraphics = SVGGraphics; } function adler32(data, start, end) { - var a = 1; - var b = 0; + let a = 1; + let b = 0; - for (var _i2 = start; _i2 < end; ++_i2) { - a = (a + (data[_i2] & 0xff)) % 65521; + for (let i = start; i < end; ++i) { + a = (a + (data[i] & 0xff)) % 65521; b = (b + a) % 65521; } @@ -21021,40 +21114,40 @@ exports.SVGGraphics = SVGGraphics; } function deflateSync(literals) { - if (!(0, _is_node["default"])()) { + if (!_is_node.isNodeJS) { return deflateSyncUncompressed(literals); } try { - var input; + let input; if (parseInt(process.versions.node) >= 8) { input = literals; } else { - input = new Buffer(literals); + input = Buffer.from(literals); } - var output = require('zlib').deflateSync(input, { + const output = require("zlib").deflateSync(input, { level: 9 }); return output instanceof Uint8Array ? output : new Uint8Array(output); } catch (e) { - (0, _util.warn)('Not compressing PNG because zlib.deflateSync is unavailable: ' + e); + (0, _util.warn)("Not compressing PNG because zlib.deflateSync is unavailable: " + e); } return deflateSyncUncompressed(literals); } function deflateSyncUncompressed(literals) { - var len = literals.length; - var maxBlockLength = 0xFFFF; - var deflateBlocks = Math.ceil(len / maxBlockLength); - var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); - var pi = 0; + let len = literals.length; + const maxBlockLength = 0xffff; + const deflateBlocks = Math.ceil(len / maxBlockLength); + const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); + let pi = 0; idat[pi++] = 0x78; idat[pi++] = 0x9c; - var pos = 0; + let pos = 0; while (len > maxBlockLength) { idat[pi++] = 0x00; @@ -21075,7 +21168,7 @@ exports.SVGGraphics = SVGGraphics; idat[pi++] = (~len & 0xffff) >> 8 & 0xff; idat.set(literals.subarray(pos), pi); pi += literals.length - pos; - var adler = adler32(literals, 0, literals.length); + const adler = adler32(literals, 0, literals.length); idat[pi++] = adler >> 24 & 0xff; idat[pi++] = adler >> 16 & 0xff; idat[pi++] = adler >> 8 & 0xff; @@ -21084,10 +21177,10 @@ exports.SVGGraphics = SVGGraphics; } function encode(imgData, kind, forceDataSchema, isMask) { - var width = imgData.width; - var height = imgData.height; - var bitDepth, colorType, lineSize; - var bytes = imgData.data; + const width = imgData.width; + const height = imgData.height; + let bitDepth, colorType, lineSize; + const bytes = imgData.data; switch (kind) { case _util.ImageKind.GRAYSCALE_1BPP: @@ -21109,14 +21202,14 @@ exports.SVGGraphics = SVGGraphics; break; default: - throw new Error('invalid format'); + throw new Error("invalid format"); } - var literals = new Uint8Array((1 + lineSize) * height); - var offsetLiterals = 0, + const literals = new Uint8Array((1 + lineSize) * height); + let offsetLiterals = 0, offsetBytes = 0; - for (var y = 0; y < height; ++y) { + for (let y = 0; y < height; ++y) { literals[offsetLiterals++] = 0; literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); offsetBytes += lineSize; @@ -21126,42 +21219,38 @@ exports.SVGGraphics = SVGGraphics; if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) { offsetLiterals = 0; - for (var _y = 0; _y < height; _y++) { + for (let y = 0; y < height; y++) { offsetLiterals++; - for (var _i3 = 0; _i3 < lineSize; _i3++) { - literals[offsetLiterals++] ^= 0xFF; + for (let i = 0; i < lineSize; i++) { + literals[offsetLiterals++] ^= 0xff; } } } - var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); - var idat = deflateSync(literals); - var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; - var data = new Uint8Array(pngLength); - var offset = 0; + const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); + const idat = deflateSync(literals); + const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; + const data = new Uint8Array(pngLength); + let offset = 0; data.set(PNG_HEADER, offset); offset += PNG_HEADER.length; - writePngChunk('IHDR', ihdr, data, offset); + writePngChunk("IHDR", ihdr, data, offset); offset += CHUNK_WRAPPER_SIZE + ihdr.length; - writePngChunk('IDATA', idat, data, offset); + writePngChunk("IDATA", idat, data, offset); offset += CHUNK_WRAPPER_SIZE + idat.length; - writePngChunk('IEND', new Uint8Array(0), data, offset); - return (0, _util.createObjectURL)(data, 'image/png', forceDataSchema); + writePngChunk("IEND", new Uint8Array(0), data, offset); + return createObjectURL(data, "image/png", forceDataSchema); } return function convertImgDataToPng(imgData, forceDataSchema, isMask) { - var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind; + const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind; return encode(imgData, kind, forceDataSchema, isMask); }; }(); - var SVGExtraState = - /*#__PURE__*/ - function () { - function SVGExtraState() { - _classCallCheck(this, SVGExtraState); - + class SVGExtraState { + constructor() { this.fontSizeScale = 1; this.fontWeight = SVG_DEFAULTS.fontWeight; this.fontSize = 0; @@ -21179,47 +21268,107 @@ exports.SVGGraphics = SVGGraphics; this.textHScale = 1; this.textRise = 0; this.fillColor = SVG_DEFAULTS.fillColor; - this.strokeColor = '#000000'; + this.strokeColor = "#000000"; this.fillAlpha = 1; this.strokeAlpha = 1; this.lineWidth = 1; - this.lineJoin = ''; - this.lineCap = ''; + this.lineJoin = ""; + this.lineCap = ""; this.miterLimit = 0; this.dashArray = []; this.dashPhase = 0; this.dependencies = []; this.activeClipUrl = null; this.clipGroup = null; - this.maskId = ''; + this.maskId = ""; } - _createClass(SVGExtraState, [{ - key: "clone", - value: function clone() { - return Object.create(this); + clone() { + return Object.create(this); + } + + setCurrentPoint(x, y) { + this.x = x; + this.y = y; + } + + } + + function opListToTree(opList) { + let opTree = []; + const tmp = []; + + for (const opListElement of opList) { + if (opListElement.fn === "save") { + opTree.push({ + fnId: 92, + fn: "group", + items: [] + }); + tmp.push(opTree); + opTree = opTree.at(-1).items; + continue; } - }, { - key: "setCurrentPoint", - value: function setCurrentPoint(x, y) { - this.x = x; - this.y = y; + + if (opListElement.fn === "restore") { + opTree = tmp.pop(); + } else { + opTree.push(opListElement); } - }]); + } - return SVGExtraState; - }(); + return opTree; + } - var clipCount = 0; - var maskCount = 0; - var shadingCount = 0; + function pf(value) { + if (Number.isInteger(value)) { + return value.toString(); + } - exports.SVGGraphics = SVGGraphics = - /*#__PURE__*/ - function () { - function SVGGraphics(commonObjs, objs, forceDataSchema) { - _classCallCheck(this, SVGGraphics); + const s = value.toFixed(10); + let i = s.length - 1; + if (s[i] !== "0") { + return s; + } + + do { + i--; + } while (s[i] === "0"); + + return s.substring(0, s[i] === "." ? i : i + 1); + } + + function pm(m) { + if (m[4] === 0 && m[5] === 0) { + if (m[1] === 0 && m[2] === 0) { + if (m[0] === 1 && m[3] === 1) { + return ""; + } + + return `scale(${pf(m[0])} ${pf(m[3])})`; + } + + if (m[0] === m[3] && m[1] === -m[2]) { + const a = Math.acos(m[0]) * 180 / Math.PI; + return `rotate(${pf(a)})`; + } + } else { + if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { + return `translate(${pf(m[4])} ${pf(m[5])})`; + } + } + + return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`; + } + + let clipCount = 0; + let maskCount = 0; + let shadingCount = 0; + exports.SVGGraphics = SVGGraphics = class { + constructor(commonObjs, objs) { + let forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + (0, _display_utils.deprecated)("The SVG back-end is no longer maintained and *may* be removed in the future."); this.svgFactory = new _display_utils.DOMSVGFactory(); this.current = new SVGExtraState(); this.transformMatrix = _util.IDENTITY_MATRIX; @@ -21235,1485 +21384,1273 @@ exports.SVGGraphics = SVGGraphics; this.forceDataSchema = !!forceDataSchema; this._operatorIdMapping = []; - for (var op in _util.OPS) { + for (const op in _util.OPS) { this._operatorIdMapping[_util.OPS[op]] = op; } } - _createClass(SVGGraphics, [{ - key: "save", - value: function save() { - this.transformStack.push(this.transformMatrix); - var old = this.current; - this.extraStack.push(old); - this.current = old.clone(); - } - }, { - key: "restore", - value: function restore() { - this.transformMatrix = this.transformStack.pop(); - this.current = this.extraStack.pop(); - this.pendingClip = null; - this.tgrp = null; - } - }, { - key: "group", - value: function group(items) { - this.save(); - this.executeOpTree(items); - this.restore(); - } - }, { - key: "loadDependencies", - value: function loadDependencies(operatorList) { - var _this = this; + save() { + this.transformStack.push(this.transformMatrix); + const old = this.current; + this.extraStack.push(old); + this.current = old.clone(); + } - var fnArray = operatorList.fnArray; - var argsArray = operatorList.argsArray; + restore() { + this.transformMatrix = this.transformStack.pop(); + this.current = this.extraStack.pop(); + this.pendingClip = null; + this.tgrp = null; + } - for (var i = 0, ii = fnArray.length; i < ii; i++) { - if (fnArray[i] !== _util.OPS.dependency) { - continue; - } + group(items) { + this.save(); + this.executeOpTree(items); + this.restore(); + } - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; + loadDependencies(operatorList) { + const fnArray = operatorList.fnArray; + const argsArray = operatorList.argsArray; - try { - var _loop = function _loop() { - var obj = _step2.value; - var objsPool = obj.startsWith('g_') ? _this.commonObjs : _this.objs; - var promise = new Promise(function (resolve) { - objsPool.get(obj, resolve); - }); - - _this.current.dependencies.push(promise); - }; - - for (var _iterator2 = argsArray[i][Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - _loop(); - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { - _iterator2["return"](); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } + for (let i = 0, ii = fnArray.length; i < ii; i++) { + if (fnArray[i] !== _util.OPS.dependency) { + continue; } - return Promise.all(this.current.dependencies); + for (const obj of argsArray[i]) { + const objsPool = obj.startsWith("g_") ? this.commonObjs : this.objs; + const promise = new Promise(resolve => { + objsPool.get(obj, resolve); + }); + this.current.dependencies.push(promise); + } } - }, { - key: "transform", - value: function transform(a, b, c, d, e, f) { - var transformMatrix = [a, b, c, d, e, f]; - this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix); - this.tgrp = null; - } - }, { - key: "getSVG", - value: function getSVG(operatorList, viewport) { - var _this2 = this; - this.viewport = viewport; + return Promise.all(this.current.dependencies); + } - var svgElement = this._initialize(viewport); + transform(a, b, c, d, e, f) { + const transformMatrix = [a, b, c, d, e, f]; + this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix); + this.tgrp = null; + } - return this.loadDependencies(operatorList).then(function () { - _this2.transformMatrix = _util.IDENTITY_MATRIX; + getSVG(operatorList, viewport) { + this.viewport = viewport; - _this2.executeOpTree(_this2.convertOpList(operatorList)); + const svgElement = this._initialize(viewport); - return svgElement; + return this.loadDependencies(operatorList).then(() => { + this.transformMatrix = _util.IDENTITY_MATRIX; + this.executeOpTree(this.convertOpList(operatorList)); + return svgElement; + }); + } + + convertOpList(operatorList) { + const operatorIdMapping = this._operatorIdMapping; + const argsArray = operatorList.argsArray; + const fnArray = operatorList.fnArray; + const opList = []; + + for (let i = 0, ii = fnArray.length; i < ii; i++) { + const fnId = fnArray[i]; + opList.push({ + fnId, + fn: operatorIdMapping[fnId], + args: argsArray[i] }); } - }, { - key: "convertOpList", - value: function convertOpList(operatorList) { - var operatorIdMapping = this._operatorIdMapping; - var argsArray = operatorList.argsArray; - var fnArray = operatorList.fnArray; - var opList = []; - - for (var i = 0, ii = fnArray.length; i < ii; i++) { - var fnId = fnArray[i]; - opList.push({ - 'fnId': fnId, - 'fn': operatorIdMapping[fnId], - 'args': argsArray[i] - }); - } - - return opListToTree(opList); - } - }, { - key: "executeOpTree", - value: function executeOpTree(opTree) { - var _iteratorNormalCompletion3 = true; - var _didIteratorError3 = false; - var _iteratorError3 = undefined; - - try { - for (var _iterator3 = opTree[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var opTreeElement = _step3.value; - var fn = opTreeElement.fn; - var fnId = opTreeElement.fnId; - var args = opTreeElement.args; - - switch (fnId | 0) { - case _util.OPS.beginText: - this.beginText(); - break; - - case _util.OPS.dependency: - break; - - case _util.OPS.setLeading: - this.setLeading(args); - break; - - case _util.OPS.setLeadingMoveText: - this.setLeadingMoveText(args[0], args[1]); - break; - - case _util.OPS.setFont: - this.setFont(args); - break; - - case _util.OPS.showText: - this.showText(args[0]); - break; - - case _util.OPS.showSpacedText: - this.showText(args[0]); - break; - - case _util.OPS.endText: - this.endText(); - break; - - case _util.OPS.moveText: - this.moveText(args[0], args[1]); - break; - - case _util.OPS.setCharSpacing: - this.setCharSpacing(args[0]); - break; - - case _util.OPS.setWordSpacing: - this.setWordSpacing(args[0]); - break; - - case _util.OPS.setHScale: - this.setHScale(args[0]); - break; - - case _util.OPS.setTextMatrix: - this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - - case _util.OPS.setTextRise: - this.setTextRise(args[0]); - break; - - case _util.OPS.setTextRenderingMode: - this.setTextRenderingMode(args[0]); - break; - - case _util.OPS.setLineWidth: - this.setLineWidth(args[0]); - break; - - case _util.OPS.setLineJoin: - this.setLineJoin(args[0]); - break; - - case _util.OPS.setLineCap: - this.setLineCap(args[0]); - break; - - case _util.OPS.setMiterLimit: - this.setMiterLimit(args[0]); - break; - - case _util.OPS.setFillRGBColor: - this.setFillRGBColor(args[0], args[1], args[2]); - break; - - case _util.OPS.setStrokeRGBColor: - this.setStrokeRGBColor(args[0], args[1], args[2]); - break; - - case _util.OPS.setStrokeColorN: - this.setStrokeColorN(args); - break; - - case _util.OPS.setFillColorN: - this.setFillColorN(args); - break; - case _util.OPS.shadingFill: - this.shadingFill(args[0]); - break; + return opListToTree(opList); + } - case _util.OPS.setDash: - this.setDash(args[0], args[1]); - break; + executeOpTree(opTree) { + for (const opTreeElement of opTree) { + const fn = opTreeElement.fn; + const fnId = opTreeElement.fnId; + const args = opTreeElement.args; - case _util.OPS.setRenderingIntent: - this.setRenderingIntent(args[0]); - break; + switch (fnId | 0) { + case _util.OPS.beginText: + this.beginText(); + break; - case _util.OPS.setFlatness: - this.setFlatness(args[0]); - break; + case _util.OPS.dependency: + break; - case _util.OPS.setGState: - this.setGState(args[0]); - break; - - case _util.OPS.fill: - this.fill(); - break; - - case _util.OPS.eoFill: - this.eoFill(); - break; - - case _util.OPS.stroke: - this.stroke(); - break; - - case _util.OPS.fillStroke: - this.fillStroke(); - break; - - case _util.OPS.eoFillStroke: - this.eoFillStroke(); - break; - - case _util.OPS.clip: - this.clip('nonzero'); - break; - - case _util.OPS.eoClip: - this.clip('evenodd'); - break; - - case _util.OPS.paintSolidColorImageMask: - this.paintSolidColorImageMask(); - break; - - case _util.OPS.paintJpegXObject: - this.paintJpegXObject(args[0], args[1], args[2]); - break; - - case _util.OPS.paintImageXObject: - this.paintImageXObject(args[0]); - break; - - case _util.OPS.paintInlineImageXObject: - this.paintInlineImageXObject(args[0]); - break; - - case _util.OPS.paintImageMaskXObject: - this.paintImageMaskXObject(args[0]); - break; - - case _util.OPS.paintFormXObjectBegin: - this.paintFormXObjectBegin(args[0], args[1]); - break; - - case _util.OPS.paintFormXObjectEnd: - this.paintFormXObjectEnd(); - break; - - case _util.OPS.closePath: - this.closePath(); - break; - - case _util.OPS.closeStroke: - this.closeStroke(); - break; - - case _util.OPS.closeFillStroke: - this.closeFillStroke(); - break; - - case _util.OPS.closeEOFillStroke: - this.closeEOFillStroke(); - break; - - case _util.OPS.nextLine: - this.nextLine(); - break; - - case _util.OPS.transform: - this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - - case _util.OPS.constructPath: - this.constructPath(args[0], args[1]); - break; - - case _util.OPS.endPath: - this.endPath(); - break; - - case 92: - this.group(opTreeElement.items); - break; - - default: - (0, _util.warn)("Unimplemented operator ".concat(fn)); - break; - } - } - } catch (err) { - _didIteratorError3 = true; - _iteratorError3 = err; - } finally { - try { - if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) { - _iterator3["return"](); - } - } finally { - if (_didIteratorError3) { - throw _iteratorError3; - } - } - } - } - }, { - key: "setWordSpacing", - value: function setWordSpacing(wordSpacing) { - this.current.wordSpacing = wordSpacing; - } - }, { - key: "setCharSpacing", - value: function setCharSpacing(charSpacing) { - this.current.charSpacing = charSpacing; - } - }, { - key: "nextLine", - value: function nextLine() { - this.moveText(0, this.current.leading); - } - }, { - key: "setTextMatrix", - value: function setTextMatrix(a, b, c, d, e, f) { - var current = this.current; - current.textMatrix = current.lineMatrix = [a, b, c, d, e, f]; - current.textMatrixScale = Math.sqrt(a * a + b * b); - current.x = current.lineX = 0; - current.y = current.lineY = 0; - current.xcoords = []; - current.tspan = this.svgFactory.createElement('svg:tspan'); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', "".concat(pf(current.fontSize), "px")); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.txtElement = this.svgFactory.createElement('svg:text'); - current.txtElement.appendChild(current.tspan); - } - }, { - key: "beginText", - value: function beginText() { - var current = this.current; - current.x = current.lineX = 0; - current.y = current.lineY = 0; - current.textMatrix = _util.IDENTITY_MATRIX; - current.lineMatrix = _util.IDENTITY_MATRIX; - current.textMatrixScale = 1; - current.tspan = this.svgFactory.createElement('svg:tspan'); - current.txtElement = this.svgFactory.createElement('svg:text'); - current.txtgrp = this.svgFactory.createElement('svg:g'); - current.xcoords = []; - } - }, { - key: "moveText", - value: function moveText(x, y) { - var current = this.current; - current.x = current.lineX += x; - current.y = current.lineY += y; - current.xcoords = []; - current.tspan = this.svgFactory.createElement('svg:tspan'); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', "".concat(pf(current.fontSize), "px")); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - } - }, { - key: "showText", - value: function showText(glyphs) { - var current = this.current; - var font = current.font; - var fontSize = current.fontSize; - - if (fontSize === 0) { - return; - } - - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var fontDirection = current.fontDirection; - var textHScale = current.textHScale * fontDirection; - var vertical = font.vertical; - var widthAdvanceScale = fontSize * current.fontMatrix[0]; - var x = 0; - var _iteratorNormalCompletion4 = true; - var _didIteratorError4 = false; - var _iteratorError4 = undefined; - - try { - for (var _iterator4 = glyphs[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { - var glyph = _step4.value; - - if (glyph === null) { - x += fontDirection * wordSpacing; - continue; - } else if ((0, _util.isNum)(glyph)) { - x += -glyph * fontSize * 0.001; - continue; - } - - var width = glyph.width; - var character = glyph.fontChar; - var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - var charWidth = width * widthAdvanceScale + spacing * fontDirection; - - if (!glyph.isInFont && !font.missingFile) { - x += charWidth; - continue; - } - - current.xcoords.push(current.x + x * textHScale); - current.tspan.textContent += character; - x += charWidth; - } - } catch (err) { - _didIteratorError4 = true; - _iteratorError4 = err; - } finally { - try { - if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) { - _iterator4["return"](); - } - } finally { - if (_didIteratorError4) { - throw _iteratorError4; - } - } - } - - if (vertical) { - current.y -= x * textHScale; - } else { - current.x += x * textHScale; - } - - current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' ')); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', "".concat(pf(current.fontSize), "px")); - - if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { - current.tspan.setAttributeNS(null, 'font-style', current.fontStyle); - } - - if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { - current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight); - } - - var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; - - if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - if (current.fillColor !== SVG_DEFAULTS.fillColor) { - current.tspan.setAttributeNS(null, 'fill', current.fillColor); - } - - if (current.fillAlpha < 1) { - current.tspan.setAttributeNS(null, 'fill-opacity', current.fillAlpha); - } - } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) { - current.tspan.setAttributeNS(null, 'fill', 'transparent'); - } else { - current.tspan.setAttributeNS(null, 'fill', 'none'); - } - - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - var lineWidthScale = 1 / (current.textMatrixScale || 1); - - this._setStrokeAttributes(current.tspan, lineWidthScale); - } - - var textMatrix = current.textMatrix; - - if (current.textRise !== 0) { - textMatrix = textMatrix.slice(); - textMatrix[5] += current.textRise; - } - - current.txtElement.setAttributeNS(null, 'transform', "".concat(pm(textMatrix), " scale(1, -1)")); - current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve'); - current.txtElement.appendChild(current.tspan); - current.txtgrp.appendChild(current.txtElement); - - this._ensureTransformGroup().appendChild(current.txtElement); - } - }, { - key: "setLeadingMoveText", - value: function setLeadingMoveText(x, y) { - this.setLeading(-y); - this.moveText(x, y); - } - }, { - key: "addFontStyle", - value: function addFontStyle(fontObj) { - if (!this.cssStyle) { - this.cssStyle = this.svgFactory.createElement('svg:style'); - this.cssStyle.setAttributeNS(null, 'type', 'text/css'); - this.defs.appendChild(this.cssStyle); - } - - var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema); - this.cssStyle.textContent += "@font-face { font-family: \"".concat(fontObj.loadedName, "\";") + " src: url(".concat(url, "); }\n"); - } - }, { - key: "setFont", - value: function setFont(details) { - var current = this.current; - var fontObj = this.commonObjs.get(details[0]); - var size = details[1]; - current.font = fontObj; - - if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) { - this.addFontStyle(fontObj); - this.embeddedFonts[fontObj.loadedName] = fontObj; - } - - current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX; - var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal'; - var italic = fontObj.italic ? 'italic' : 'normal'; - - if (size < 0) { - size = -size; - current.fontDirection = -1; - } else { - current.fontDirection = 1; - } - - current.fontSize = size; - current.fontFamily = fontObj.loadedName; - current.fontWeight = bold; - current.fontStyle = italic; - current.tspan = this.svgFactory.createElement('svg:tspan'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.xcoords = []; - } - }, { - key: "endText", - value: function endText() { - var current = this.current; - - if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement && current.txtElement.hasChildNodes()) { - current.element = current.txtElement; - this.clip('nonzero'); - this.endPath(); - } - } - }, { - key: "setLineWidth", - value: function setLineWidth(width) { - if (width > 0) { - this.current.lineWidth = width; - } - } - }, { - key: "setLineCap", - value: function setLineCap(style) { - this.current.lineCap = LINE_CAP_STYLES[style]; - } - }, { - key: "setLineJoin", - value: function setLineJoin(style) { - this.current.lineJoin = LINE_JOIN_STYLES[style]; - } - }, { - key: "setMiterLimit", - value: function setMiterLimit(limit) { - this.current.miterLimit = limit; - } - }, { - key: "setStrokeAlpha", - value: function setStrokeAlpha(strokeAlpha) { - this.current.strokeAlpha = strokeAlpha; - } - }, { - key: "setStrokeRGBColor", - value: function setStrokeRGBColor(r, g, b) { - this.current.strokeColor = _util.Util.makeCssRgb(r, g, b); - } - }, { - key: "setFillAlpha", - value: function setFillAlpha(fillAlpha) { - this.current.fillAlpha = fillAlpha; - } - }, { - key: "setFillRGBColor", - value: function setFillRGBColor(r, g, b) { - this.current.fillColor = _util.Util.makeCssRgb(r, g, b); - this.current.tspan = this.svgFactory.createElement('svg:tspan'); - this.current.xcoords = []; - } - }, { - key: "setStrokeColorN", - value: function setStrokeColorN(args) { - this.current.strokeColor = this._makeColorN_Pattern(args); - } - }, { - key: "setFillColorN", - value: function setFillColorN(args) { - this.current.fillColor = this._makeColorN_Pattern(args); - } - }, { - key: "shadingFill", - value: function shadingFill(args) { - var width = this.viewport.width; - var height = this.viewport.height; - - var inv = _util.Util.inverseTransform(this.transformMatrix); - - var bl = _util.Util.applyTransform([0, 0], inv); - - var br = _util.Util.applyTransform([0, height], inv); - - var ul = _util.Util.applyTransform([width, 0], inv); - - var ur = _util.Util.applyTransform([width, height], inv); - - var x0 = Math.min(bl[0], br[0], ul[0], ur[0]); - var y0 = Math.min(bl[1], br[1], ul[1], ur[1]); - var x1 = Math.max(bl[0], br[0], ul[0], ur[0]); - var y1 = Math.max(bl[1], br[1], ul[1], ur[1]); - var rect = this.svgFactory.createElement('svg:rect'); - rect.setAttributeNS(null, 'x', x0); - rect.setAttributeNS(null, 'y', y0); - rect.setAttributeNS(null, 'width', x1 - x0); - rect.setAttributeNS(null, 'height', y1 - y0); - rect.setAttributeNS(null, 'fill', this._makeShadingPattern(args)); - - this._ensureTransformGroup().appendChild(rect); - } - }, { - key: "_makeColorN_Pattern", - value: function _makeColorN_Pattern(args) { - if (args[0] === 'TilingPattern') { - return this._makeTilingPattern(args); - } - - return this._makeShadingPattern(args); - } - }, { - key: "_makeTilingPattern", - value: function _makeTilingPattern(args) { - var color = args[1]; - var operatorList = args[2]; - var matrix = args[3] || _util.IDENTITY_MATRIX; - - var _args$ = _slicedToArray(args[4], 4), - x0 = _args$[0], - y0 = _args$[1], - x1 = _args$[2], - y1 = _args$[3]; - - var xstep = args[5]; - var ystep = args[6]; - var paintType = args[7]; - var tilingId = "shading".concat(shadingCount++); - - var _Util$applyTransform = _util.Util.applyTransform([x0, y0], matrix), - _Util$applyTransform2 = _slicedToArray(_Util$applyTransform, 2), - tx0 = _Util$applyTransform2[0], - ty0 = _Util$applyTransform2[1]; - - var _Util$applyTransform3 = _util.Util.applyTransform([x1, y1], matrix), - _Util$applyTransform4 = _slicedToArray(_Util$applyTransform3, 2), - tx1 = _Util$applyTransform4[0], - ty1 = _Util$applyTransform4[1]; - - var _Util$singularValueDe = _util.Util.singularValueDecompose2dScale(matrix), - _Util$singularValueDe2 = _slicedToArray(_Util$singularValueDe, 2), - xscale = _Util$singularValueDe2[0], - yscale = _Util$singularValueDe2[1]; - - var txstep = xstep * xscale; - var tystep = ystep * yscale; - var tiling = this.svgFactory.createElement('svg:pattern'); - tiling.setAttributeNS(null, 'id', tilingId); - tiling.setAttributeNS(null, 'patternUnits', 'userSpaceOnUse'); - tiling.setAttributeNS(null, 'width', txstep); - tiling.setAttributeNS(null, 'height', tystep); - tiling.setAttributeNS(null, 'x', "".concat(tx0)); - tiling.setAttributeNS(null, 'y', "".concat(ty0)); - var svg = this.svg; - var transformMatrix = this.transformMatrix; - var fillColor = this.current.fillColor; - var strokeColor = this.current.strokeColor; - var bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0); - this.svg = bbox; - this.transformMatrix = matrix; - - if (paintType === 2) { - var cssColor = _util.Util.makeCssRgb.apply(_util.Util, _toConsumableArray(color)); - - this.current.fillColor = cssColor; - this.current.strokeColor = cssColor; - } - - this.executeOpTree(this.convertOpList(operatorList)); - this.svg = svg; - this.transformMatrix = transformMatrix; - this.current.fillColor = fillColor; - this.current.strokeColor = strokeColor; - tiling.appendChild(bbox.childNodes[0]); - this.defs.appendChild(tiling); - return "url(#".concat(tilingId, ")"); - } - }, { - key: "_makeShadingPattern", - value: function _makeShadingPattern(args) { - switch (args[0]) { - case 'RadialAxial': - var shadingId = "shading".concat(shadingCount++); - var colorStops = args[2]; - var gradient; - - switch (args[1]) { - case 'axial': - var point0 = args[3]; - var point1 = args[4]; - gradient = this.svgFactory.createElement('svg:linearGradient'); - gradient.setAttributeNS(null, 'id', shadingId); - gradient.setAttributeNS(null, 'gradientUnits', 'userSpaceOnUse'); - gradient.setAttributeNS(null, 'x1', point0[0]); - gradient.setAttributeNS(null, 'y1', point0[1]); - gradient.setAttributeNS(null, 'x2', point1[0]); - gradient.setAttributeNS(null, 'y2', point1[1]); - break; - - case 'radial': - var focalPoint = args[3]; - var circlePoint = args[4]; - var focalRadius = args[5]; - var circleRadius = args[6]; - gradient = this.svgFactory.createElement('svg:radialGradient'); - gradient.setAttributeNS(null, 'id', shadingId); - gradient.setAttributeNS(null, 'gradientUnits', 'userSpaceOnUse'); - gradient.setAttributeNS(null, 'cx', circlePoint[0]); - gradient.setAttributeNS(null, 'cy', circlePoint[1]); - gradient.setAttributeNS(null, 'r', circleRadius); - gradient.setAttributeNS(null, 'fx', focalPoint[0]); - gradient.setAttributeNS(null, 'fy', focalPoint[1]); - gradient.setAttributeNS(null, 'fr', focalRadius); - break; - - default: - throw new Error("Unknown RadialAxial type: ".concat(args[1])); - } - - var _iteratorNormalCompletion5 = true; - var _didIteratorError5 = false; - var _iteratorError5 = undefined; - - try { - for (var _iterator5 = colorStops[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) { - var colorStop = _step5.value; - var stop = this.svgFactory.createElement('svg:stop'); - stop.setAttributeNS(null, 'offset', colorStop[0]); - stop.setAttributeNS(null, 'stop-color', colorStop[1]); - gradient.appendChild(stop); - } - } catch (err) { - _didIteratorError5 = true; - _iteratorError5 = err; - } finally { - try { - if (!_iteratorNormalCompletion5 && _iterator5["return"] != null) { - _iterator5["return"](); - } - } finally { - if (_didIteratorError5) { - throw _iteratorError5; - } - } - } - - this.defs.appendChild(gradient); - return "url(#".concat(shadingId, ")"); - - case 'Mesh': - (0, _util.warn)('Unimplemented pattern Mesh'); - return null; - - case 'Dummy': - return 'hotpink'; + case _util.OPS.setLeading: + this.setLeading(args); + break; + + case _util.OPS.setLeadingMoveText: + this.setLeadingMoveText(args[0], args[1]); + break; + + case _util.OPS.setFont: + this.setFont(args); + break; + + case _util.OPS.showText: + this.showText(args[0]); + break; + + case _util.OPS.showSpacedText: + this.showText(args[0]); + break; + + case _util.OPS.endText: + this.endText(); + break; + + case _util.OPS.moveText: + this.moveText(args[0], args[1]); + break; + + case _util.OPS.setCharSpacing: + this.setCharSpacing(args[0]); + break; + + case _util.OPS.setWordSpacing: + this.setWordSpacing(args[0]); + break; + + case _util.OPS.setHScale: + this.setHScale(args[0]); + break; + + case _util.OPS.setTextMatrix: + this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + + case _util.OPS.setTextRise: + this.setTextRise(args[0]); + break; + + case _util.OPS.setTextRenderingMode: + this.setTextRenderingMode(args[0]); + break; + + case _util.OPS.setLineWidth: + this.setLineWidth(args[0]); + break; + + case _util.OPS.setLineJoin: + this.setLineJoin(args[0]); + break; + + case _util.OPS.setLineCap: + this.setLineCap(args[0]); + break; + + case _util.OPS.setMiterLimit: + this.setMiterLimit(args[0]); + break; + + case _util.OPS.setFillRGBColor: + this.setFillRGBColor(args[0], args[1], args[2]); + break; + + case _util.OPS.setStrokeRGBColor: + this.setStrokeRGBColor(args[0], args[1], args[2]); + break; + + case _util.OPS.setStrokeColorN: + this.setStrokeColorN(args); + break; + + case _util.OPS.setFillColorN: + this.setFillColorN(args); + break; + + case _util.OPS.shadingFill: + this.shadingFill(args[0]); + break; + + case _util.OPS.setDash: + this.setDash(args[0], args[1]); + break; + + case _util.OPS.setRenderingIntent: + this.setRenderingIntent(args[0]); + break; + + case _util.OPS.setFlatness: + this.setFlatness(args[0]); + break; + + case _util.OPS.setGState: + this.setGState(args[0]); + break; + + case _util.OPS.fill: + this.fill(); + break; + + case _util.OPS.eoFill: + this.eoFill(); + break; + + case _util.OPS.stroke: + this.stroke(); + break; + + case _util.OPS.fillStroke: + this.fillStroke(); + break; + + case _util.OPS.eoFillStroke: + this.eoFillStroke(); + break; + + case _util.OPS.clip: + this.clip("nonzero"); + break; + + case _util.OPS.eoClip: + this.clip("evenodd"); + break; + + case _util.OPS.paintSolidColorImageMask: + this.paintSolidColorImageMask(); + break; + + case _util.OPS.paintImageXObject: + this.paintImageXObject(args[0]); + break; + + case _util.OPS.paintInlineImageXObject: + this.paintInlineImageXObject(args[0]); + break; + + case _util.OPS.paintImageMaskXObject: + this.paintImageMaskXObject(args[0]); + break; + + case _util.OPS.paintFormXObjectBegin: + this.paintFormXObjectBegin(args[0], args[1]); + break; + + case _util.OPS.paintFormXObjectEnd: + this.paintFormXObjectEnd(); + break; + + case _util.OPS.closePath: + this.closePath(); + break; + + case _util.OPS.closeStroke: + this.closeStroke(); + break; + + case _util.OPS.closeFillStroke: + this.closeFillStroke(); + break; + + case _util.OPS.closeEOFillStroke: + this.closeEOFillStroke(); + break; + + case _util.OPS.nextLine: + this.nextLine(); + break; + + case _util.OPS.transform: + this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + + case _util.OPS.constructPath: + this.constructPath(args[0], args[1]); + break; + + case _util.OPS.endPath: + this.endPath(); + break; + + case 92: + this.group(opTreeElement.items); + break; default: - throw new Error("Unknown IR type: ".concat(args[0])); + (0, _util.warn)(`Unimplemented operator ${fn}`); + break; } } - }, { - key: "setDash", - value: function setDash(dashArray, dashPhase) { - this.current.dashArray = dashArray; - this.current.dashPhase = dashPhase; + } + + setWordSpacing(wordSpacing) { + this.current.wordSpacing = wordSpacing; + } + + setCharSpacing(charSpacing) { + this.current.charSpacing = charSpacing; + } + + nextLine() { + this.moveText(0, this.current.leading); + } + + setTextMatrix(a, b, c, d, e, f) { + const current = this.current; + current.textMatrix = current.lineMatrix = [a, b, c, d, e, f]; + current.textMatrixScale = Math.hypot(a, b); + current.x = current.lineX = 0; + current.y = current.lineY = 0; + current.xcoords = []; + current.ycoords = []; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + current.txtElement = this.svgFactory.createElement("svg:text"); + current.txtElement.append(current.tspan); + } + + beginText() { + const current = this.current; + current.x = current.lineX = 0; + current.y = current.lineY = 0; + current.textMatrix = _util.IDENTITY_MATRIX; + current.lineMatrix = _util.IDENTITY_MATRIX; + current.textMatrixScale = 1; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.txtElement = this.svgFactory.createElement("svg:text"); + current.txtgrp = this.svgFactory.createElement("svg:g"); + current.xcoords = []; + current.ycoords = []; + } + + moveText(x, y) { + const current = this.current; + current.x = current.lineX += x; + current.y = current.lineY += y; + current.xcoords = []; + current.ycoords = []; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + } + + showText(glyphs) { + const current = this.current; + const font = current.font; + const fontSize = current.fontSize; + + if (fontSize === 0) { + return; } - }, { - key: "constructPath", - value: function constructPath(ops, args) { - var current = this.current; - var x = current.x, - y = current.y; - var d = []; - var j = 0; - var _iteratorNormalCompletion6 = true; - var _didIteratorError6 = false; - var _iteratorError6 = undefined; - try { - for (var _iterator6 = ops[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) { - var op = _step6.value; + const fontSizeScale = current.fontSizeScale; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const fontDirection = current.fontDirection; + const textHScale = current.textHScale * fontDirection; + const vertical = font.vertical; + const spacingDir = vertical ? 1 : -1; + const defaultVMetrics = font.defaultVMetrics; + const widthAdvanceScale = fontSize * current.fontMatrix[0]; + let x = 0; - switch (op | 0) { - case _util.OPS.rectangle: - x = args[j++]; - y = args[j++]; - var width = args[j++]; - var height = args[j++]; - var xw = x + width; - var yh = y + height; - d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z'); - break; - - case _util.OPS.moveTo: - x = args[j++]; - y = args[j++]; - d.push('M', pf(x), pf(y)); - break; - - case _util.OPS.lineTo: - x = args[j++]; - y = args[j++]; - d.push('L', pf(x), pf(y)); - break; - - case _util.OPS.curveTo: - x = args[j + 4]; - y = args[j + 5]; - d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); - j += 6; - break; - - case _util.OPS.curveTo2: - x = args[j + 2]; - y = args[j + 3]; - d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); - j += 4; - break; - - case _util.OPS.curveTo3: - x = args[j + 2]; - y = args[j + 3]; - d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); - j += 4; - break; - - case _util.OPS.closePath: - d.push('Z'); - break; - } - } - } catch (err) { - _didIteratorError6 = true; - _iteratorError6 = err; - } finally { - try { - if (!_iteratorNormalCompletion6 && _iterator6["return"] != null) { - _iterator6["return"](); - } - } finally { - if (_didIteratorError6) { - throw _iteratorError6; - } - } + for (const glyph of glyphs) { + if (glyph === null) { + x += fontDirection * wordSpacing; + continue; + } else if (typeof glyph === "number") { + x += spacingDir * glyph * fontSize / 1000; + continue; } - d = d.join(' '); + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const character = glyph.fontChar; + let scaledX, scaledY; + let width = glyph.width; - if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) { - d = current.path.getAttributeNS(null, 'd') + d; + if (vertical) { + let vx; + const vmetric = glyph.vmetric || defaultVMetrics; + vx = glyph.vmetric ? vmetric[1] : width * 0.5; + vx = -vx * widthAdvanceScale; + const vy = vmetric[2] * widthAdvanceScale; + width = vmetric ? -vmetric[0] : width; + scaledX = vx / fontSizeScale; + scaledY = (x + vy) / fontSizeScale; } else { - current.path = this.svgFactory.createElement('svg:path'); - - this._ensureTransformGroup().appendChild(current.path); + scaledX = x / fontSizeScale; + scaledY = 0; } - current.path.setAttributeNS(null, 'd', d); - current.path.setAttributeNS(null, 'fill', 'none'); - current.element = current.path; - current.setCurrentPoint(x, y); - } - }, { - key: "endPath", - value: function endPath() { - var current = this.current; - current.path = null; + if (glyph.isInFont || font.missingFile) { + current.xcoords.push(current.x + scaledX); - if (!this.pendingClip) { - return; - } + if (vertical) { + current.ycoords.push(-current.y + scaledY); + } - if (!current.element) { - this.pendingClip = null; - return; - } + current.tspan.textContent += character; + } else {} - var clipId = "clippath".concat(clipCount++); - var clipPath = this.svgFactory.createElement('svg:clipPath'); - clipPath.setAttributeNS(null, 'id', clipId); - clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - var clipElement = current.element.cloneNode(true); + let charWidth; - if (this.pendingClip === 'evenodd') { - clipElement.setAttributeNS(null, 'clip-rule', 'evenodd'); + if (vertical) { + charWidth = width * widthAdvanceScale - spacing * fontDirection; } else { - clipElement.setAttributeNS(null, 'clip-rule', 'nonzero'); + charWidth = width * widthAdvanceScale + spacing * fontDirection; } + x += charWidth; + } + + current.tspan.setAttributeNS(null, "x", current.xcoords.map(pf).join(" ")); + + if (vertical) { + current.tspan.setAttributeNS(null, "y", current.ycoords.map(pf).join(" ")); + } else { + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + } + + if (vertical) { + current.y -= x; + } else { + current.x += x * textHScale; + } + + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + + if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { + current.tspan.setAttributeNS(null, "font-style", current.fontStyle); + } + + if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { + current.tspan.setAttributeNS(null, "font-weight", current.fontWeight); + } + + const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + if (current.fillColor !== SVG_DEFAULTS.fillColor) { + current.tspan.setAttributeNS(null, "fill", current.fillColor); + } + + if (current.fillAlpha < 1) { + current.tspan.setAttributeNS(null, "fill-opacity", current.fillAlpha); + } + } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) { + current.tspan.setAttributeNS(null, "fill", "transparent"); + } else { + current.tspan.setAttributeNS(null, "fill", "none"); + } + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + const lineWidthScale = 1 / (current.textMatrixScale || 1); + + this._setStrokeAttributes(current.tspan, lineWidthScale); + } + + let textMatrix = current.textMatrix; + + if (current.textRise !== 0) { + textMatrix = textMatrix.slice(); + textMatrix[5] += current.textRise; + } + + current.txtElement.setAttributeNS(null, "transform", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`); + current.txtElement.setAttributeNS(XML_NS, "xml:space", "preserve"); + current.txtElement.append(current.tspan); + current.txtgrp.append(current.txtElement); + + this._ensureTransformGroup().append(current.txtElement); + } + + setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + } + + addFontStyle(fontObj) { + if (!fontObj.data) { + throw new Error("addFontStyle: No font data available, " + 'ensure that the "fontExtraProperties" API parameter is set.'); + } + + if (!this.cssStyle) { + this.cssStyle = this.svgFactory.createElement("svg:style"); + this.cssStyle.setAttributeNS(null, "type", "text/css"); + this.defs.append(this.cssStyle); + } + + const url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema); + this.cssStyle.textContent += `@font-face { font-family: "${fontObj.loadedName}";` + ` src: url(${url}); }\n`; + } + + setFont(details) { + const current = this.current; + const fontObj = this.commonObjs.get(details[0]); + let size = details[1]; + current.font = fontObj; + + if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) { + this.addFontStyle(fontObj); + this.embeddedFonts[fontObj.loadedName] = fontObj; + } + + current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; + let bold = "normal"; + + if (fontObj.black) { + bold = "900"; + } else if (fontObj.bold) { + bold = "bold"; + } + + const italic = fontObj.italic ? "italic" : "normal"; + + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + + current.fontSize = size; + current.fontFamily = fontObj.loadedName; + current.fontWeight = bold; + current.fontStyle = italic; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + current.xcoords = []; + current.ycoords = []; + } + + endText() { + var _current$txtElement; + + const current = this.current; + + if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && (_current$txtElement = current.txtElement) !== null && _current$txtElement !== void 0 && _current$txtElement.hasChildNodes()) { + current.element = current.txtElement; + this.clip("nonzero"); + this.endPath(); + } + } + + setLineWidth(width) { + if (width > 0) { + this.current.lineWidth = width; + } + } + + setLineCap(style) { + this.current.lineCap = LINE_CAP_STYLES[style]; + } + + setLineJoin(style) { + this.current.lineJoin = LINE_JOIN_STYLES[style]; + } + + setMiterLimit(limit) { + this.current.miterLimit = limit; + } + + setStrokeAlpha(strokeAlpha) { + this.current.strokeAlpha = strokeAlpha; + } + + setStrokeRGBColor(r, g, b) { + this.current.strokeColor = _util.Util.makeHexColor(r, g, b); + } + + setFillAlpha(fillAlpha) { + this.current.fillAlpha = fillAlpha; + } + + setFillRGBColor(r, g, b) { + this.current.fillColor = _util.Util.makeHexColor(r, g, b); + this.current.tspan = this.svgFactory.createElement("svg:tspan"); + this.current.xcoords = []; + this.current.ycoords = []; + } + + setStrokeColorN(args) { + this.current.strokeColor = this._makeColorN_Pattern(args); + } + + setFillColorN(args) { + this.current.fillColor = this._makeColorN_Pattern(args); + } + + shadingFill(args) { + const width = this.viewport.width; + const height = this.viewport.height; + + const inv = _util.Util.inverseTransform(this.transformMatrix); + + const bl = _util.Util.applyTransform([0, 0], inv); + + const br = _util.Util.applyTransform([0, height], inv); + + const ul = _util.Util.applyTransform([width, 0], inv); + + const ur = _util.Util.applyTransform([width, height], inv); + + const x0 = Math.min(bl[0], br[0], ul[0], ur[0]); + const y0 = Math.min(bl[1], br[1], ul[1], ur[1]); + const x1 = Math.max(bl[0], br[0], ul[0], ur[0]); + const y1 = Math.max(bl[1], br[1], ul[1], ur[1]); + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", x0); + rect.setAttributeNS(null, "y", y0); + rect.setAttributeNS(null, "width", x1 - x0); + rect.setAttributeNS(null, "height", y1 - y0); + rect.setAttributeNS(null, "fill", this._makeShadingPattern(args)); + + if (this.current.fillAlpha < 1) { + rect.setAttributeNS(null, "fill-opacity", this.current.fillAlpha); + } + + this._ensureTransformGroup().append(rect); + } + + _makeColorN_Pattern(args) { + if (args[0] === "TilingPattern") { + return this._makeTilingPattern(args); + } + + return this._makeShadingPattern(args); + } + + _makeTilingPattern(args) { + const color = args[1]; + const operatorList = args[2]; + const matrix = args[3] || _util.IDENTITY_MATRIX; + const [x0, y0, x1, y1] = args[4]; + const xstep = args[5]; + const ystep = args[6]; + const paintType = args[7]; + const tilingId = `shading${shadingCount++}`; + + const [tx0, ty0, tx1, ty1] = _util.Util.normalizeRect([..._util.Util.applyTransform([x0, y0], matrix), ..._util.Util.applyTransform([x1, y1], matrix)]); + + const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix); + + const txstep = xstep * xscale; + const tystep = ystep * yscale; + const tiling = this.svgFactory.createElement("svg:pattern"); + tiling.setAttributeNS(null, "id", tilingId); + tiling.setAttributeNS(null, "patternUnits", "userSpaceOnUse"); + tiling.setAttributeNS(null, "width", txstep); + tiling.setAttributeNS(null, "height", tystep); + tiling.setAttributeNS(null, "x", `${tx0}`); + tiling.setAttributeNS(null, "y", `${ty0}`); + const svg = this.svg; + const transformMatrix = this.transformMatrix; + const fillColor = this.current.fillColor; + const strokeColor = this.current.strokeColor; + const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0); + this.svg = bbox; + this.transformMatrix = matrix; + + if (paintType === 2) { + const cssColor = _util.Util.makeHexColor(...color); + + this.current.fillColor = cssColor; + this.current.strokeColor = cssColor; + } + + this.executeOpTree(this.convertOpList(operatorList)); + this.svg = svg; + this.transformMatrix = transformMatrix; + this.current.fillColor = fillColor; + this.current.strokeColor = strokeColor; + tiling.append(bbox.childNodes[0]); + this.defs.append(tiling); + return `url(#${tilingId})`; + } + + _makeShadingPattern(args) { + if (typeof args === "string") { + args = this.objs.get(args); + } + + switch (args[0]) { + case "RadialAxial": + const shadingId = `shading${shadingCount++}`; + const colorStops = args[3]; + let gradient; + + switch (args[1]) { + case "axial": + const point0 = args[4]; + const point1 = args[5]; + gradient = this.svgFactory.createElement("svg:linearGradient"); + gradient.setAttributeNS(null, "id", shadingId); + gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); + gradient.setAttributeNS(null, "x1", point0[0]); + gradient.setAttributeNS(null, "y1", point0[1]); + gradient.setAttributeNS(null, "x2", point1[0]); + gradient.setAttributeNS(null, "y2", point1[1]); + break; + + case "radial": + const focalPoint = args[4]; + const circlePoint = args[5]; + const focalRadius = args[6]; + const circleRadius = args[7]; + gradient = this.svgFactory.createElement("svg:radialGradient"); + gradient.setAttributeNS(null, "id", shadingId); + gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); + gradient.setAttributeNS(null, "cx", circlePoint[0]); + gradient.setAttributeNS(null, "cy", circlePoint[1]); + gradient.setAttributeNS(null, "r", circleRadius); + gradient.setAttributeNS(null, "fx", focalPoint[0]); + gradient.setAttributeNS(null, "fy", focalPoint[1]); + gradient.setAttributeNS(null, "fr", focalRadius); + break; + + default: + throw new Error(`Unknown RadialAxial type: ${args[1]}`); + } + + for (const colorStop of colorStops) { + const stop = this.svgFactory.createElement("svg:stop"); + stop.setAttributeNS(null, "offset", colorStop[0]); + stop.setAttributeNS(null, "stop-color", colorStop[1]); + gradient.append(stop); + } + + this.defs.append(gradient); + return `url(#${shadingId})`; + + case "Mesh": + (0, _util.warn)("Unimplemented pattern Mesh"); + return null; + + case "Dummy": + return "hotpink"; + + default: + throw new Error(`Unknown IR type: ${args[0]}`); + } + } + + setDash(dashArray, dashPhase) { + this.current.dashArray = dashArray; + this.current.dashPhase = dashPhase; + } + + constructPath(ops, args) { + const current = this.current; + let x = current.x, + y = current.y; + let d = []; + let j = 0; + + for (const op of ops) { + switch (op | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + const width = args[j++]; + const height = args[j++]; + const xw = x + width; + const yh = y + height; + d.push("M", pf(x), pf(y), "L", pf(xw), pf(y), "L", pf(xw), pf(yh), "L", pf(x), pf(yh), "Z"); + break; + + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + d.push("M", pf(x), pf(y)); + break; + + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + d.push("L", pf(x), pf(y)); + break; + + case _util.OPS.curveTo: + x = args[j + 4]; + y = args[j + 5]; + d.push("C", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); + j += 6; + break; + + case _util.OPS.curveTo2: + d.push("C", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); + x = args[j + 2]; + y = args[j + 3]; + j += 4; + break; + + case _util.OPS.curveTo3: + x = args[j + 2]; + y = args[j + 3]; + d.push("C", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); + j += 4; + break; + + case _util.OPS.closePath: + d.push("Z"); + break; + } + } + + d = d.join(" "); + + if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) { + d = current.path.getAttributeNS(null, "d") + d; + } else { + current.path = this.svgFactory.createElement("svg:path"); + + this._ensureTransformGroup().append(current.path); + } + + current.path.setAttributeNS(null, "d", d); + current.path.setAttributeNS(null, "fill", "none"); + current.element = current.path; + current.setCurrentPoint(x, y); + } + + endPath() { + const current = this.current; + current.path = null; + + if (!this.pendingClip) { + return; + } + + if (!current.element) { this.pendingClip = null; - clipPath.appendChild(clipElement); - this.defs.appendChild(clipPath); + return; + } - if (current.activeClipUrl) { - current.clipGroup = null; - this.extraStack.forEach(function (prev) { - prev.clipGroup = null; - }); - clipPath.setAttributeNS(null, 'clip-path', current.activeClipUrl); + const clipId = `clippath${clipCount++}`; + const clipPath = this.svgFactory.createElement("svg:clipPath"); + clipPath.setAttributeNS(null, "id", clipId); + clipPath.setAttributeNS(null, "transform", pm(this.transformMatrix)); + const clipElement = current.element.cloneNode(true); + + if (this.pendingClip === "evenodd") { + clipElement.setAttributeNS(null, "clip-rule", "evenodd"); + } else { + clipElement.setAttributeNS(null, "clip-rule", "nonzero"); + } + + this.pendingClip = null; + clipPath.append(clipElement); + this.defs.append(clipPath); + + if (current.activeClipUrl) { + current.clipGroup = null; + + for (const prev of this.extraStack) { + prev.clipGroup = null; } - current.activeClipUrl = "url(#".concat(clipId, ")"); - this.tgrp = null; + clipPath.setAttributeNS(null, "clip-path", current.activeClipUrl); } - }, { - key: "clip", - value: function clip(type) { - this.pendingClip = type; - } - }, { - key: "closePath", - value: function closePath() { - var current = this.current; - if (current.path) { - var d = "".concat(current.path.getAttributeNS(null, 'd'), "Z"); - current.path.setAttributeNS(null, 'd', d); + current.activeClipUrl = `url(#${clipId})`; + this.tgrp = null; + } + + clip(type) { + this.pendingClip = type; + } + + closePath() { + const current = this.current; + + if (current.path) { + const d = `${current.path.getAttributeNS(null, "d")}Z`; + current.path.setAttributeNS(null, "d", d); + } + } + + setLeading(leading) { + this.current.leading = -leading; + } + + setTextRise(textRise) { + this.current.textRise = textRise; + } + + setTextRenderingMode(textRenderingMode) { + this.current.textRenderingMode = textRenderingMode; + } + + setHScale(scale) { + this.current.textHScale = scale / 100; + } + + setRenderingIntent(intent) {} + + setFlatness(flatness) {} + + setGState(states) { + for (const [key, value] of states) { + switch (key) { + case "LW": + this.setLineWidth(value); + break; + + case "LC": + this.setLineCap(value); + break; + + case "LJ": + this.setLineJoin(value); + break; + + case "ML": + this.setMiterLimit(value); + break; + + case "D": + this.setDash(value[0], value[1]); + break; + + case "RI": + this.setRenderingIntent(value); + break; + + case "FL": + this.setFlatness(value); + break; + + case "Font": + this.setFont(value); + break; + + case "CA": + this.setStrokeAlpha(value); + break; + + case "ca": + this.setFillAlpha(value); + break; + + default: + (0, _util.warn)(`Unimplemented graphic state operator ${key}`); + break; } } - }, { - key: "setLeading", - value: function setLeading(leading) { - this.current.leading = -leading; + } + + fill() { + const current = this.current; + + if (current.element) { + current.element.setAttributeNS(null, "fill", current.fillColor); + current.element.setAttributeNS(null, "fill-opacity", current.fillAlpha); + this.endPath(); } - }, { - key: "setTextRise", - value: function setTextRise(textRise) { - this.current.textRise = textRise; + } + + stroke() { + const current = this.current; + + if (current.element) { + this._setStrokeAttributes(current.element); + + current.element.setAttributeNS(null, "fill", "none"); + this.endPath(); } - }, { - key: "setTextRenderingMode", - value: function setTextRenderingMode(textRenderingMode) { - this.current.textRenderingMode = textRenderingMode; + } + + _setStrokeAttributes(element) { + let lineWidthScale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; + const current = this.current; + let dashArray = current.dashArray; + + if (lineWidthScale !== 1 && dashArray.length > 0) { + dashArray = dashArray.map(function (value) { + return lineWidthScale * value; + }); } - }, { - key: "setHScale", - value: function setHScale(scale) { - this.current.textHScale = scale / 100; + + element.setAttributeNS(null, "stroke", current.strokeColor); + element.setAttributeNS(null, "stroke-opacity", current.strokeAlpha); + element.setAttributeNS(null, "stroke-miterlimit", pf(current.miterLimit)); + element.setAttributeNS(null, "stroke-linecap", current.lineCap); + element.setAttributeNS(null, "stroke-linejoin", current.lineJoin); + element.setAttributeNS(null, "stroke-width", pf(lineWidthScale * current.lineWidth) + "px"); + element.setAttributeNS(null, "stroke-dasharray", dashArray.map(pf).join(" ")); + element.setAttributeNS(null, "stroke-dashoffset", pf(lineWidthScale * current.dashPhase) + "px"); + } + + eoFill() { + if (this.current.element) { + this.current.element.setAttributeNS(null, "fill-rule", "evenodd"); } - }, { - key: "setRenderingIntent", - value: function setRenderingIntent(intent) {} - }, { - key: "setFlatness", - value: function setFlatness(flatness) {} - }, { - key: "setGState", - value: function setGState(states) { - var _iteratorNormalCompletion7 = true; - var _didIteratorError7 = false; - var _iteratorError7 = undefined; - try { - for (var _iterator7 = states[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) { - var _step7$value = _slicedToArray(_step7.value, 2), - key = _step7$value[0], - value = _step7$value[1]; + this.fill(); + } - switch (key) { - case 'LW': - this.setLineWidth(value); - break; + fillStroke() { + this.stroke(); + this.fill(); + } - case 'LC': - this.setLineCap(value); - break; - - case 'LJ': - this.setLineJoin(value); - break; - - case 'ML': - this.setMiterLimit(value); - break; - - case 'D': - this.setDash(value[0], value[1]); - break; - - case 'RI': - this.setRenderingIntent(value); - break; - - case 'FL': - this.setFlatness(value); - break; - - case 'Font': - this.setFont(value); - break; - - case 'CA': - this.setStrokeAlpha(value); - break; - - case 'ca': - this.setFillAlpha(value); - break; - - default: - (0, _util.warn)("Unimplemented graphic state operator ".concat(key)); - break; - } - } - } catch (err) { - _didIteratorError7 = true; - _iteratorError7 = err; - } finally { - try { - if (!_iteratorNormalCompletion7 && _iterator7["return"] != null) { - _iterator7["return"](); - } - } finally { - if (_didIteratorError7) { - throw _iteratorError7; - } - } - } + eoFillStroke() { + if (this.current.element) { + this.current.element.setAttributeNS(null, "fill-rule", "evenodd"); } - }, { - key: "fill", - value: function fill() { - var current = this.current; - if (current.element) { - current.element.setAttributeNS(null, 'fill', current.fillColor); - current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha); - this.endPath(); - } - } - }, { - key: "stroke", - value: function stroke() { - var current = this.current; + this.fillStroke(); + } - if (current.element) { - this._setStrokeAttributes(current.element); + closeStroke() { + this.closePath(); + this.stroke(); + } - current.element.setAttributeNS(null, 'fill', 'none'); - this.endPath(); - } - } - }, { - key: "_setStrokeAttributes", - value: function _setStrokeAttributes(element) { - var lineWidthScale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; - var current = this.current; - var dashArray = current.dashArray; + closeFillStroke() { + this.closePath(); + this.fillStroke(); + } - if (lineWidthScale !== 1 && dashArray.length > 0) { - dashArray = dashArray.map(function (value) { - return lineWidthScale * value; - }); - } + closeEOFillStroke() { + this.closePath(); + this.eoFillStroke(); + } - element.setAttributeNS(null, 'stroke', current.strokeColor); - element.setAttributeNS(null, 'stroke-opacity', current.strokeAlpha); - element.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit)); - element.setAttributeNS(null, 'stroke-linecap', current.lineCap); - element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin); - element.setAttributeNS(null, 'stroke-width', pf(lineWidthScale * current.lineWidth) + 'px'); - element.setAttributeNS(null, 'stroke-dasharray', dashArray.map(pf).join(' ')); - element.setAttributeNS(null, 'stroke-dashoffset', pf(lineWidthScale * current.dashPhase) + 'px'); - } - }, { - key: "eoFill", - value: function eoFill() { - if (this.current.element) { - this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); - } + paintSolidColorImageMask() { + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", "0"); + rect.setAttributeNS(null, "y", "0"); + rect.setAttributeNS(null, "width", "1px"); + rect.setAttributeNS(null, "height", "1px"); + rect.setAttributeNS(null, "fill", this.current.fillColor); - this.fill(); - } - }, { - key: "fillStroke", - value: function fillStroke() { - this.stroke(); - this.fill(); - } - }, { - key: "eoFillStroke", - value: function eoFillStroke() { - if (this.current.element) { - this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); - } + this._ensureTransformGroup().append(rect); + } - this.fillStroke(); - } - }, { - key: "closeStroke", - value: function closeStroke() { - this.closePath(); - this.stroke(); - } - }, { - key: "closeFillStroke", - value: function closeFillStroke() { - this.closePath(); - this.fillStroke(); - } - }, { - key: "closeEOFillStroke", - value: function closeEOFillStroke() { - this.closePath(); - this.eoFillStroke(); - } - }, { - key: "paintSolidColorImageMask", - value: function paintSolidColorImageMask() { - var rect = this.svgFactory.createElement('svg:rect'); - rect.setAttributeNS(null, 'x', '0'); - rect.setAttributeNS(null, 'y', '0'); - rect.setAttributeNS(null, 'width', '1px'); - rect.setAttributeNS(null, 'height', '1px'); - rect.setAttributeNS(null, 'fill', this.current.fillColor); + paintImageXObject(objId) { + const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId); - this._ensureTransformGroup().appendChild(rect); + if (!imgData) { + (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`); + return; } - }, { - key: "paintJpegXObject", - value: function paintJpegXObject(objId, w, h) { - var imgObj = this.objs.get(objId); - var imgEl = this.svgFactory.createElement('svg:image'); - imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src); - imgEl.setAttributeNS(null, 'width', pf(w)); - imgEl.setAttributeNS(null, 'height', pf(h)); - imgEl.setAttributeNS(null, 'x', '0'); - imgEl.setAttributeNS(null, 'y', pf(-h)); - imgEl.setAttributeNS(null, 'transform', "scale(".concat(pf(1 / w), " ").concat(pf(-1 / h), ")")); - this._ensureTransformGroup().appendChild(imgEl); + this.paintInlineImageXObject(imgData); + } + + paintInlineImageXObject(imgData, mask) { + const width = imgData.width; + const height = imgData.height; + const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask); + const cliprect = this.svgFactory.createElement("svg:rect"); + cliprect.setAttributeNS(null, "x", "0"); + cliprect.setAttributeNS(null, "y", "0"); + cliprect.setAttributeNS(null, "width", pf(width)); + cliprect.setAttributeNS(null, "height", pf(height)); + this.current.element = cliprect; + this.clip("nonzero"); + const imgEl = this.svgFactory.createElement("svg:image"); + imgEl.setAttributeNS(XLINK_NS, "xlink:href", imgSrc); + imgEl.setAttributeNS(null, "x", "0"); + imgEl.setAttributeNS(null, "y", pf(-height)); + imgEl.setAttributeNS(null, "width", pf(width) + "px"); + imgEl.setAttributeNS(null, "height", pf(height) + "px"); + imgEl.setAttributeNS(null, "transform", `scale(${pf(1 / width)} ${pf(-1 / height)})`); + + if (mask) { + mask.append(imgEl); + } else { + this._ensureTransformGroup().append(imgEl); } - }, { - key: "paintImageXObject", - value: function paintImageXObject(objId) { - var imgData = this.objs.get(objId); + } - if (!imgData) { - (0, _util.warn)("Dependent image with object ID ".concat(objId, " is not ready yet")); - return; - } + paintImageMaskXObject(imgData) { + const current = this.current; + const width = imgData.width; + const height = imgData.height; + const fillColor = current.fillColor; + current.maskId = `mask${maskCount++}`; + const mask = this.svgFactory.createElement("svg:mask"); + mask.setAttributeNS(null, "id", current.maskId); + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", "0"); + rect.setAttributeNS(null, "y", "0"); + rect.setAttributeNS(null, "width", pf(width)); + rect.setAttributeNS(null, "height", pf(height)); + rect.setAttributeNS(null, "fill", fillColor); + rect.setAttributeNS(null, "mask", `url(#${current.maskId})`); + this.defs.append(mask); - this.paintInlineImageXObject(imgData); + this._ensureTransformGroup().append(rect); + + this.paintInlineImageXObject(imgData, mask); + } + + paintFormXObjectBegin(matrix, bbox) { + if (Array.isArray(matrix) && matrix.length === 6) { + this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); } - }, { - key: "paintInlineImageXObject", - value: function paintInlineImageXObject(imgData, mask) { - var width = imgData.width; - var height = imgData.height; - var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask); - var cliprect = this.svgFactory.createElement('svg:rect'); - cliprect.setAttributeNS(null, 'x', '0'); - cliprect.setAttributeNS(null, 'y', '0'); - cliprect.setAttributeNS(null, 'width', pf(width)); - cliprect.setAttributeNS(null, 'height', pf(height)); + + if (bbox) { + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + const cliprect = this.svgFactory.createElement("svg:rect"); + cliprect.setAttributeNS(null, "x", bbox[0]); + cliprect.setAttributeNS(null, "y", bbox[1]); + cliprect.setAttributeNS(null, "width", pf(width)); + cliprect.setAttributeNS(null, "height", pf(height)); this.current.element = cliprect; - this.clip('nonzero'); - var imgEl = this.svgFactory.createElement('svg:image'); - imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc); - imgEl.setAttributeNS(null, 'x', '0'); - imgEl.setAttributeNS(null, 'y', pf(-height)); - imgEl.setAttributeNS(null, 'width', pf(width) + 'px'); - imgEl.setAttributeNS(null, 'height', pf(height) + 'px'); - imgEl.setAttributeNS(null, 'transform', "scale(".concat(pf(1 / width), " ").concat(pf(-1 / height), ")")); + this.clip("nonzero"); + this.endPath(); + } + } - if (mask) { - mask.appendChild(imgEl); + paintFormXObjectEnd() {} + + _initialize(viewport) { + const svg = this.svgFactory.create(viewport.width, viewport.height); + const definitions = this.svgFactory.createElement("svg:defs"); + svg.append(definitions); + this.defs = definitions; + const rootGroup = this.svgFactory.createElement("svg:g"); + rootGroup.setAttributeNS(null, "transform", pm(viewport.transform)); + svg.append(rootGroup); + this.svg = rootGroup; + return svg; + } + + _ensureClipGroup() { + if (!this.current.clipGroup) { + const clipGroup = this.svgFactory.createElement("svg:g"); + clipGroup.setAttributeNS(null, "clip-path", this.current.activeClipUrl); + this.svg.append(clipGroup); + this.current.clipGroup = clipGroup; + } + + return this.current.clipGroup; + } + + _ensureTransformGroup() { + if (!this.tgrp) { + this.tgrp = this.svgFactory.createElement("svg:g"); + this.tgrp.setAttributeNS(null, "transform", pm(this.transformMatrix)); + + if (this.current.activeClipUrl) { + this._ensureClipGroup().append(this.tgrp); } else { - this._ensureTransformGroup().appendChild(imgEl); + this.svg.append(this.tgrp); } } - }, { - key: "paintImageMaskXObject", - value: function paintImageMaskXObject(imgData) { - var current = this.current; - var width = imgData.width; - var height = imgData.height; - var fillColor = current.fillColor; - current.maskId = "mask".concat(maskCount++); - var mask = this.svgFactory.createElement('svg:mask'); - mask.setAttributeNS(null, 'id', current.maskId); - var rect = this.svgFactory.createElement('svg:rect'); - rect.setAttributeNS(null, 'x', '0'); - rect.setAttributeNS(null, 'y', '0'); - rect.setAttributeNS(null, 'width', pf(width)); - rect.setAttributeNS(null, 'height', pf(height)); - rect.setAttributeNS(null, 'fill', fillColor); - rect.setAttributeNS(null, 'mask', "url(#".concat(current.maskId, ")")); - this.defs.appendChild(mask); - this._ensureTransformGroup().appendChild(rect); + return this.tgrp; + } - this.paintInlineImageXObject(imgData, mask); - } - }, { - key: "paintFormXObjectBegin", - value: function paintFormXObjectBegin(matrix, bbox) { - if (Array.isArray(matrix) && matrix.length === 6) { - this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); - } - - if (bbox) { - var width = bbox[2] - bbox[0]; - var height = bbox[3] - bbox[1]; - var cliprect = this.svgFactory.createElement('svg:rect'); - cliprect.setAttributeNS(null, 'x', bbox[0]); - cliprect.setAttributeNS(null, 'y', bbox[1]); - cliprect.setAttributeNS(null, 'width', pf(width)); - cliprect.setAttributeNS(null, 'height', pf(height)); - this.current.element = cliprect; - this.clip('nonzero'); - this.endPath(); - } - } - }, { - key: "paintFormXObjectEnd", - value: function paintFormXObjectEnd() {} - }, { - key: "_initialize", - value: function _initialize(viewport) { - var svg = this.svgFactory.create(viewport.width, viewport.height); - var definitions = this.svgFactory.createElement('svg:defs'); - svg.appendChild(definitions); - this.defs = definitions; - var rootGroup = this.svgFactory.createElement('svg:g'); - rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform)); - svg.appendChild(rootGroup); - this.svg = rootGroup; - return svg; - } - }, { - key: "_ensureClipGroup", - value: function _ensureClipGroup() { - if (!this.current.clipGroup) { - var clipGroup = this.svgFactory.createElement('svg:g'); - clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl); - this.svg.appendChild(clipGroup); - this.current.clipGroup = clipGroup; - } - - return this.current.clipGroup; - } - }, { - key: "_ensureTransformGroup", - value: function _ensureTransformGroup() { - if (!this.tgrp) { - this.tgrp = this.svgFactory.createElement('svg:g'); - this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - - if (this.current.activeClipUrl) { - this._ensureClipGroup().appendChild(this.tgrp); - } else { - this.svg.appendChild(this.tgrp); - } - } - - return this.tgrp; - } - }]); - - return SVGGraphics; - }(); + }; } /***/ }), -/* 165 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 157 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFNodeStream = void 0; -var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148)); - var _util = __w_pdfjs_require__(1); -var _network_utils = __w_pdfjs_require__(166); +var _network_utils = __w_pdfjs_require__(158); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +; -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } +const fs = require("fs"); -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } +const http = require("http"); -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } +const https = require("https"); -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } +const url = require("url"); -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var fs = require('fs'); - -var http = require('http'); - -var https = require('https'); - -var url = require('url'); - -var fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//; +const fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//; function parseUrl(sourceUrl) { - var parsedUrl = url.parse(sourceUrl); + const parsedUrl = url.parse(sourceUrl); - if (parsedUrl.protocol === 'file:' || parsedUrl.host) { + if (parsedUrl.protocol === "file:" || parsedUrl.host) { return parsedUrl; } if (/^[a-z]:[/\\]/i.test(sourceUrl)) { - return url.parse("file:///".concat(sourceUrl)); + return url.parse(`file:///${sourceUrl}`); } if (!parsedUrl.host) { - parsedUrl.protocol = 'file:'; + parsedUrl.protocol = "file:"; } return parsedUrl; } -var PDFNodeStream = -/*#__PURE__*/ -function () { - function PDFNodeStream(source) { - _classCallCheck(this, PDFNodeStream); - +class PDFNodeStream { + constructor(source) { this.source = source; this.url = parseUrl(source.url); - this.isHttp = this.url.protocol === 'http:' || this.url.protocol === 'https:'; - this.isFsUrl = this.url.protocol === 'file:'; + this.isHttp = this.url.protocol === "http:" || this.url.protocol === "https:"; + this.isFsUrl = this.url.protocol === "file:"; this.httpHeaders = this.isHttp && source.httpHeaders || {}; this._fullRequestReader = null; this._rangeRequestReaders = []; } - _createClass(PDFNodeStream, [{ - key: "getFullReader", - value: function getFullReader() { - (0, _util.assert)(!this._fullRequestReader); - this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this); - return this._fullRequestReader; + get _progressiveDataLength() { + var _this$_fullRequestRea, _this$_fullRequestRea2; + + return (_this$_fullRequestRea = (_this$_fullRequestRea2 = this._fullRequestReader) === null || _this$_fullRequestRea2 === void 0 ? void 0 : _this$_fullRequestRea2._loaded) !== null && _this$_fullRequestRea !== void 0 ? _this$_fullRequestRea : 0; + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFNodeStream.getFullReader can only be called once."); + this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this); + return this._fullRequestReader; + } + + getRangeReader(start, end) { + if (end <= this._progressiveDataLength) { + return null; } - }, { - key: "getRangeReader", - value: function getRangeReader(start, end) { - if (end <= this._progressiveDataLength) { - return null; - } - var rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end); + const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end); - this._rangeRequestReaders.push(rangeReader); + this._rangeRequestReaders.push(rangeReader); - return rangeReader; + return rangeReader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); } - }, { - key: "cancelAllRequests", - value: function cancelAllRequests(reason) { - if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); - } - var readers = this._rangeRequestReaders.slice(0); - - readers.forEach(function (reader) { - reader.cancel(reason); - }); + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); } - }, { - key: "_progressiveDataLength", - get: function get() { - return this._fullRequestReader ? this._fullRequestReader._loaded : 0; - } - }]); + } - return PDFNodeStream; -}(); +} exports.PDFNodeStream = PDFNodeStream; -var BaseFullReader = -/*#__PURE__*/ -function () { - function BaseFullReader(stream) { - _classCallCheck(this, BaseFullReader); - +class BaseFullReader { + constructor(stream) { this._url = stream.url; this._done = false; this._storedError = null; this.onProgress = null; - var source = stream.source; + const source = stream.source; this._contentLength = source.length; this._loaded = 0; this._filename = null; @@ -22731,161 +22668,107 @@ function () { this._headersCapability = (0, _util.createPromiseCapability)(); } - _createClass(BaseFullReader, [{ - key: "read", - value: function () { - var _read = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee() { - var chunk, buffer; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return this._readCapability.promise; + get headersReady() { + return this._headersCapability.promise; + } - case 2: - if (!this._done) { - _context.next = 4; - break; - } + get filename() { + return this._filename; + } - return _context.abrupt("return", { - value: undefined, - done: true - }); + get contentLength() { + return this._contentLength; + } - case 4: - if (!this._storedError) { - _context.next = 6; - break; - } + get isRangeSupported() { + return this._isRangeSupported; + } - throw this._storedError; + get isStreamingSupported() { + return this._isStreamingSupported; + } - case 6: - chunk = this._readableStream.read(); + async read() { + await this._readCapability.promise; - if (!(chunk === null)) { - _context.next = 10; - break; - } - - this._readCapability = (0, _util.createPromiseCapability)(); - return _context.abrupt("return", this.read()); - - case 10: - this._loaded += chunk.length; - - if (this.onProgress) { - this.onProgress({ - loaded: this._loaded, - total: this._contentLength - }); - } - - buffer = new Uint8Array(chunk).buffer; - return _context.abrupt("return", { - value: buffer, - done: false - }); - - case 14: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function read() { - return _read.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - if (!this._readableStream) { - this._error(reason); - - return; - } - - this._readableStream.destroy(reason); + if (this._done) { + return { + value: undefined, + done: true + }; } - }, { - key: "_error", - value: function _error(reason) { - this._storedError = reason; + + if (this._storedError) { + throw this._storedError; + } + + const chunk = this._readableStream.read(); + + if (chunk === null) { + this._readCapability = (0, _util.createPromiseCapability)(); + return this.read(); + } + + this._loaded += chunk.length; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded, + total: this._contentLength + }); + } + + const buffer = new Uint8Array(chunk).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (!this._readableStream) { + this._error(reason); + + return; + } + + this._readableStream.destroy(reason); + } + + _error(reason) { + this._storedError = reason; + + this._readCapability.resolve(); + } + + _setReadableStream(readableStream) { + this._readableStream = readableStream; + readableStream.on("readable", () => { + this._readCapability.resolve(); + }); + readableStream.on("end", () => { + readableStream.destroy(); + this._done = true; this._readCapability.resolve(); - } - }, { - key: "_setReadableStream", - value: function _setReadableStream(readableStream) { - var _this = this; + }); + readableStream.on("error", reason => { + this._error(reason); + }); - this._readableStream = readableStream; - readableStream.on('readable', function () { - _this._readCapability.resolve(); - }); - readableStream.on('end', function () { - readableStream.destroy(); - _this._done = true; - - _this._readCapability.resolve(); - }); - readableStream.on('error', function (reason) { - _this._error(reason); - }); - - if (!this._isStreamingSupported && this._isRangeSupported) { - this._error(new _util.AbortException('streaming is disabled')); - } - - if (this._storedError) { - this._readableStream.destroy(this._storedError); - } + if (!this._isStreamingSupported && this._isRangeSupported) { + this._error(new _util.AbortException("streaming is disabled")); } - }, { - key: "headersReady", - get: function get() { - return this._headersCapability.promise; - } - }, { - key: "filename", - get: function get() { - return this._filename; - } - }, { - key: "contentLength", - get: function get() { - return this._contentLength; - } - }, { - key: "isRangeSupported", - get: function get() { - return this._isRangeSupported; - } - }, { - key: "isStreamingSupported", - get: function get() { - return this._isStreamingSupported; - } - }]); - return BaseFullReader; -}(); + if (this._storedError) { + this._readableStream.destroy(this._storedError); + } + } -var BaseRangeReader = -/*#__PURE__*/ -function () { - function BaseRangeReader(stream) { - _classCallCheck(this, BaseRangeReader); +} +class BaseRangeReader { + constructor(stream) { this._url = stream.url; this._done = false; this._storedError = null; @@ -22893,347 +22776,258 @@ function () { this._loaded = 0; this._readableStream = null; this._readCapability = (0, _util.createPromiseCapability)(); - var source = stream.source; + const source = stream.source; this._isStreamingSupported = !source.disableStream; } - _createClass(BaseRangeReader, [{ - key: "read", - value: function () { - var _read2 = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee2() { - var chunk, buffer; - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _context2.next = 2; - return this._readCapability.promise; + get isStreamingSupported() { + return this._isStreamingSupported; + } - case 2: - if (!this._done) { - _context2.next = 4; - break; - } + async read() { + await this._readCapability.promise; - return _context2.abrupt("return", { - value: undefined, - done: true - }); - - case 4: - if (!this._storedError) { - _context2.next = 6; - break; - } - - throw this._storedError; - - case 6: - chunk = this._readableStream.read(); - - if (!(chunk === null)) { - _context2.next = 10; - break; - } - - this._readCapability = (0, _util.createPromiseCapability)(); - return _context2.abrupt("return", this.read()); - - case 10: - this._loaded += chunk.length; - - if (this.onProgress) { - this.onProgress({ - loaded: this._loaded - }); - } - - buffer = new Uint8Array(chunk).buffer; - return _context2.abrupt("return", { - value: buffer, - done: false - }); - - case 14: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function read() { - return _read2.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - if (!this._readableStream) { - this._error(reason); - - return; - } - - this._readableStream.destroy(reason); + if (this._done) { + return { + value: undefined, + done: true + }; } - }, { - key: "_error", - value: function _error(reason) { - this._storedError = reason; + + if (this._storedError) { + throw this._storedError; + } + + const chunk = this._readableStream.read(); + + if (chunk === null) { + this._readCapability = (0, _util.createPromiseCapability)(); + return this.read(); + } + + this._loaded += chunk.length; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded + }); + } + + const buffer = new Uint8Array(chunk).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (!this._readableStream) { + this._error(reason); + + return; + } + + this._readableStream.destroy(reason); + } + + _error(reason) { + this._storedError = reason; + + this._readCapability.resolve(); + } + + _setReadableStream(readableStream) { + this._readableStream = readableStream; + readableStream.on("readable", () => { + this._readCapability.resolve(); + }); + readableStream.on("end", () => { + readableStream.destroy(); + this._done = true; this._readCapability.resolve(); + }); + readableStream.on("error", reason => { + this._error(reason); + }); + + if (this._storedError) { + this._readableStream.destroy(this._storedError); } - }, { - key: "_setReadableStream", - value: function _setReadableStream(readableStream) { - var _this2 = this; + } - this._readableStream = readableStream; - readableStream.on('readable', function () { - _this2._readCapability.resolve(); - }); - readableStream.on('end', function () { - readableStream.destroy(); - _this2._done = true; +} - _this2._readCapability.resolve(); - }); - readableStream.on('error', function (reason) { - _this2._error(reason); - }); - - if (this._storedError) { - this._readableStream.destroy(this._storedError); - } - } - }, { - key: "isStreamingSupported", - get: function get() { - return this._isStreamingSupported; - } - }]); - - return BaseRangeReader; -}(); - -function createRequestOptions(url, headers) { +function createRequestOptions(parsedUrl, headers) { return { - protocol: url.protocol, - auth: url.auth, - host: url.hostname, - port: url.port, - path: url.path, - method: 'GET', - headers: headers + protocol: parsedUrl.protocol, + auth: parsedUrl.auth, + host: parsedUrl.hostname, + port: parsedUrl.port, + path: parsedUrl.path, + method: "GET", + headers }; } -var PDFNodeStreamFullReader = -/*#__PURE__*/ -function (_BaseFullReader) { - _inherits(PDFNodeStreamFullReader, _BaseFullReader); +class PDFNodeStreamFullReader extends BaseFullReader { + constructor(stream) { + super(stream); - function PDFNodeStreamFullReader(stream) { - var _this3; - - _classCallCheck(this, PDFNodeStreamFullReader); - - _this3 = _possibleConstructorReturn(this, _getPrototypeOf(PDFNodeStreamFullReader).call(this, stream)); - - var handleResponse = function handleResponse(response) { + const handleResponse = response => { if (response.statusCode === 404) { - var error = new _util.MissingPDFException("Missing PDF \"".concat(_this3._url, "\".")); - _this3._storedError = error; + const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`); + this._storedError = error; - _this3._headersCapability.reject(error); + this._headersCapability.reject(error); return; } - _this3._headersCapability.resolve(); + this._headersCapability.resolve(); - _this3._setReadableStream(response); + this._setReadableStream(response); - var getResponseHeader = function getResponseHeader(name) { - return _this3._readableStream.headers[name.toLowerCase()]; + const getResponseHeader = name => { + return this._readableStream.headers[name.toLowerCase()]; }; - var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({ - getResponseHeader: getResponseHeader, + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, isHttp: stream.isHttp, - rangeChunkSize: _this3._rangeChunkSize, - disableRange: _this3._disableRange - }), - allowRangeRequests = _validateRangeRequest.allowRangeRequests, - suggestedLength = _validateRangeRequest.suggestedLength; - - _this3._isRangeSupported = allowRangeRequests; - _this3._contentLength = suggestedLength || _this3._contentLength; - _this3._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + this._isRangeSupported = allowRangeRequests; + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); }; - _this3._request = null; + this._request = null; - if (_this3._url.protocol === 'http:') { - _this3._request = http.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse); + if (this._url.protocol === "http:") { + this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse); } else { - _this3._request = https.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse); + this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse); } - _this3._request.on('error', function (reason) { - _this3._storedError = reason; + this._request.on("error", reason => { + this._storedError = reason; - _this3._headersCapability.reject(reason); + this._headersCapability.reject(reason); }); - _this3._request.end(); - - return _this3; + this._request.end(); } - return PDFNodeStreamFullReader; -}(BaseFullReader); +} -var PDFNodeStreamRangeReader = -/*#__PURE__*/ -function (_BaseRangeReader) { - _inherits(PDFNodeStreamRangeReader, _BaseRangeReader); +class PDFNodeStreamRangeReader extends BaseRangeReader { + constructor(stream, start, end) { + super(stream); + this._httpHeaders = {}; - function PDFNodeStreamRangeReader(stream, start, end) { - var _this4; + for (const property in stream.httpHeaders) { + const value = stream.httpHeaders[property]; - _classCallCheck(this, PDFNodeStreamRangeReader); - - _this4 = _possibleConstructorReturn(this, _getPrototypeOf(PDFNodeStreamRangeReader).call(this, stream)); - _this4._httpHeaders = {}; - - for (var property in stream.httpHeaders) { - var value = stream.httpHeaders[property]; - - if (typeof value === 'undefined') { + if (typeof value === "undefined") { continue; } - _this4._httpHeaders[property] = value; + this._httpHeaders[property] = value; } - _this4._httpHeaders['Range'] = "bytes=".concat(start, "-").concat(end - 1); + this._httpHeaders.Range = `bytes=${start}-${end - 1}`; - var handleResponse = function handleResponse(response) { + const handleResponse = response => { if (response.statusCode === 404) { - var error = new _util.MissingPDFException("Missing PDF \"".concat(_this4._url, "\".")); - _this4._storedError = error; + const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`); + this._storedError = error; return; } - _this4._setReadableStream(response); + this._setReadableStream(response); }; - _this4._request = null; + this._request = null; - if (_this4._url.protocol === 'http:') { - _this4._request = http.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse); + if (this._url.protocol === "http:") { + this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse); } else { - _this4._request = https.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse); + this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse); } - _this4._request.on('error', function (reason) { - _this4._storedError = reason; + this._request.on("error", reason => { + this._storedError = reason; }); - _this4._request.end(); - - return _this4; + this._request.end(); } - return PDFNodeStreamRangeReader; -}(BaseRangeReader); +} -var PDFNodeStreamFsFullReader = -/*#__PURE__*/ -function (_BaseFullReader2) { - _inherits(PDFNodeStreamFsFullReader, _BaseFullReader2); +class PDFNodeStreamFsFullReader extends BaseFullReader { + constructor(stream) { + super(stream); + let path = decodeURIComponent(this._url.path); - function PDFNodeStreamFsFullReader(stream) { - var _this5; - - _classCallCheck(this, PDFNodeStreamFsFullReader); - - _this5 = _possibleConstructorReturn(this, _getPrototypeOf(PDFNodeStreamFsFullReader).call(this, stream)); - var path = decodeURIComponent(_this5._url.path); - - if (fileUriRegex.test(_this5._url.href)) { - path = path.replace(/^\//, ''); + if (fileUriRegex.test(this._url.href)) { + path = path.replace(/^\//, ""); } - fs.lstat(path, function (error, stat) { + fs.lstat(path, (error, stat) => { if (error) { - if (error.code === 'ENOENT') { - error = new _util.MissingPDFException("Missing PDF \"".concat(path, "\".")); + if (error.code === "ENOENT") { + error = new _util.MissingPDFException(`Missing PDF "${path}".`); } - _this5._storedError = error; + this._storedError = error; - _this5._headersCapability.reject(error); + this._headersCapability.reject(error); return; } - _this5._contentLength = stat.size; + this._contentLength = stat.size; - _this5._setReadableStream(fs.createReadStream(path)); + this._setReadableStream(fs.createReadStream(path)); - _this5._headersCapability.resolve(); + this._headersCapability.resolve(); }); - return _this5; } - return PDFNodeStreamFsFullReader; -}(BaseFullReader); +} -var PDFNodeStreamFsRangeReader = -/*#__PURE__*/ -function (_BaseRangeReader2) { - _inherits(PDFNodeStreamFsRangeReader, _BaseRangeReader2); +class PDFNodeStreamFsRangeReader extends BaseRangeReader { + constructor(stream, start, end) { + super(stream); + let path = decodeURIComponent(this._url.path); - function PDFNodeStreamFsRangeReader(stream, start, end) { - var _this6; - - _classCallCheck(this, PDFNodeStreamFsRangeReader); - - _this6 = _possibleConstructorReturn(this, _getPrototypeOf(PDFNodeStreamFsRangeReader).call(this, stream)); - var path = decodeURIComponent(_this6._url.path); - - if (fileUriRegex.test(_this6._url.href)) { - path = path.replace(/^\//, ''); + if (fileUriRegex.test(this._url.href)) { + path = path.replace(/^\//, ""); } - _this6._setReadableStream(fs.createReadStream(path, { - start: start, + this._setReadableStream(fs.createReadStream(path, { + start, end: end - 1 })); - - return _this6; } - return PDFNodeStreamFsRangeReader; -}(BaseRangeReader); +} /***/ }), -/* 166 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 158 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.createResponseStatusError = createResponseStatusError; exports.extractFilenameFromHeader = extractFilenameFromHeader; exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities; @@ -23241,19 +23035,22 @@ exports.validateResponseStatus = validateResponseStatus; var _util = __w_pdfjs_require__(1); -var _content_disposition = __w_pdfjs_require__(167); +var _content_disposition = __w_pdfjs_require__(159); + +var _display_utils = __w_pdfjs_require__(133); function validateRangeRequestCapabilities(_ref) { - var getResponseHeader = _ref.getResponseHeader, - isHttp = _ref.isHttp, - rangeChunkSize = _ref.rangeChunkSize, - disableRange = _ref.disableRange; - (0, _util.assert)(rangeChunkSize > 0, 'Range chunk size must be larger than zero'); - var returnValues = { + let { + getResponseHeader, + isHttp, + rangeChunkSize, + disableRange + } = _ref; + const returnValues = { allowRangeRequests: false, suggestedLength: undefined }; - var length = parseInt(getResponseHeader('Content-Length'), 10); + const length = parseInt(getResponseHeader("Content-Length"), 10); if (!Number.isInteger(length)) { return returnValues; @@ -23269,13 +23066,13 @@ function validateRangeRequestCapabilities(_ref) { return returnValues; } - if (getResponseHeader('Accept-Ranges') !== 'bytes') { + if (getResponseHeader("Accept-Ranges") !== "bytes") { return returnValues; } - var contentEncoding = getResponseHeader('Content-Encoding') || 'identity'; + const contentEncoding = getResponseHeader("Content-Encoding") || "identity"; - if (contentEncoding !== 'identity') { + if (contentEncoding !== "identity") { return returnValues; } @@ -23284,12 +23081,18 @@ function validateRangeRequestCapabilities(_ref) { } function extractFilenameFromHeader(getResponseHeader) { - var contentDisposition = getResponseHeader('Content-Disposition'); + const contentDisposition = getResponseHeader("Content-Disposition"); if (contentDisposition) { - var filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition); + let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition); - if (/\.pdf$/i.test(filename)) { + if (filename.includes("%")) { + try { + filename = decodeURIComponent(filename); + } catch (ex) {} + } + + if ((0, _display_utils.isPdfFile)(filename)) { return filename; } } @@ -23298,11 +23101,11 @@ function extractFilenameFromHeader(getResponseHeader) { } function createResponseStatusError(status, url) { - if (status === 404 || status === 0 && /^file:/.test(url)) { + if (status === 404 || status === 0 && url.startsWith("file:")) { return new _util.MissingPDFException('Missing PDF "' + url + '".'); } - return new _util.UnexpectedResponseException('Unexpected server response (' + status + ') while retrieving PDF "' + url + '".', status); + return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF "${url}".`, status); } function validateResponseStatus(status) { @@ -23310,32 +23113,26 @@ function validateResponseStatus(status) { } /***/ }), -/* 167 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 159 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader; -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } - -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } +var _util = __w_pdfjs_require__(1); function getFilenameFromContentDispositionHeader(contentDisposition) { - var needsEncodingFixup = true; - var tmp = toParamRegExp('filename\\*', 'i').exec(contentDisposition); + let needsEncodingFixup = true; + let tmp = toParamRegExp("filename\\*", "i").exec(contentDisposition); if (tmp) { tmp = tmp[1]; - var filename = rfc2616unquote(tmp); + let filename = rfc2616unquote(tmp); filename = unescape(filename); filename = rfc5987decode(filename); filename = rfc2047decode(filename); @@ -23345,24 +23142,21 @@ function getFilenameFromContentDispositionHeader(contentDisposition) { tmp = rfc2231getparam(contentDisposition); if (tmp) { - var _filename = rfc2047decode(tmp); - - return fixupEncoding(_filename); + const filename = rfc2047decode(tmp); + return fixupEncoding(filename); } - tmp = toParamRegExp('filename', 'i').exec(contentDisposition); + tmp = toParamRegExp("filename", "i").exec(contentDisposition); if (tmp) { tmp = tmp[1]; - - var _filename2 = rfc2616unquote(tmp); - - _filename2 = rfc2047decode(_filename2); - return fixupEncoding(_filename2); + let filename = rfc2616unquote(tmp); + filename = rfc2047decode(filename); + return fixupEncoding(filename); } function toParamRegExp(attributePattern, flags) { - return new RegExp('(?:^|;)\\s*' + attributePattern + '\\s*=\\s*' + '(' + '[^";\\s][^;\\s]*' + '|' + '"(?:[^"\\\\]|\\\\"?)+"?' + ')', flags); + return new RegExp("(?:^|;)\\s*" + attributePattern + "\\s*=\\s*" + "(" + '[^";\\s][^;\\s]*' + "|" + '"(?:[^"\\\\]|\\\\"?)+"?' + ")", flags); } function textdecode(encoding, value) { @@ -23372,22 +23166,13 @@ function getFilenameFromContentDispositionHeader(contentDisposition) { } try { - var decoder = new TextDecoder(encoding, { + const decoder = new TextDecoder(encoding, { fatal: true }); - var bytes = Array.from(value, function (ch) { - return ch.charCodeAt(0) & 0xFF; - }); - value = decoder.decode(new Uint8Array(bytes)); + const buffer = (0, _util.stringToBytes)(value); + value = decoder.decode(buffer); needsEncodingFixup = false; - } catch (e) { - if (/^utf-?8$/i.test(encoding)) { - try { - value = decodeURIComponent(escape(value)); - needsEncodingFixup = false; - } catch (err) {} - } - } + } catch (e) {} } return value; @@ -23395,28 +23180,23 @@ function getFilenameFromContentDispositionHeader(contentDisposition) { function fixupEncoding(value) { if (needsEncodingFixup && /[\x80-\xff]/.test(value)) { - value = textdecode('utf-8', value); + value = textdecode("utf-8", value); if (needsEncodingFixup) { - value = textdecode('iso-8859-1', value); + value = textdecode("iso-8859-1", value); } } return value; } - function rfc2231getparam(contentDisposition) { - var matches = [], - match; - var iter = toParamRegExp('filename\\*((?!0\\d)\\d+)(\\*?)', 'ig'); - - while ((match = iter.exec(contentDisposition)) !== null) { - var _match = match, - _match2 = _slicedToArray(_match, 4), - n = _match2[1], - quot = _match2[2], - part = _match2[3]; + function rfc2231getparam(contentDispositionStr) { + const matches = []; + let match; + const iter = toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)", "ig"); + while ((match = iter.exec(contentDispositionStr)) !== null) { + let [, n, quot, part] = match; n = parseInt(n, 10); if (n in matches) { @@ -23430,17 +23210,14 @@ function getFilenameFromContentDispositionHeader(contentDisposition) { matches[n] = [quot, part]; } - var parts = []; + const parts = []; - for (var n = 0; n < matches.length; ++n) { + for (let n = 0; n < matches.length; ++n) { if (!(n in matches)) { break; } - var _matches$n = _slicedToArray(matches[n], 2), - quot = _matches$n[0], - part = _matches$n[1]; - + let [quot, part] = matches[n]; part = rfc2616unquote(part); if (quot) { @@ -23454,22 +23231,22 @@ function getFilenameFromContentDispositionHeader(contentDisposition) { parts.push(part); } - return parts.join(''); + return parts.join(""); } function rfc2616unquote(value) { if (value.startsWith('"')) { - var parts = value.slice(1).split('\\"'); + const parts = value.slice(1).split('\\"'); - for (var i = 0; i < parts.length; ++i) { - var quotindex = parts[i].indexOf('"'); + for (let i = 0; i < parts.length; ++i) { + const quotindex = parts[i].indexOf('"'); if (quotindex !== -1) { parts[i] = parts[i].slice(0, quotindex); parts.length = i + 1; } - parts[i] = parts[i].replace(/\\(.)/g, '$1'); + parts[i] = parts[i].replace(/\\(.)/g, "$1"); } value = parts.join('"'); @@ -23479,27 +23256,27 @@ function getFilenameFromContentDispositionHeader(contentDisposition) { } function rfc5987decode(extvalue) { - var encodingend = extvalue.indexOf('\''); + const encodingend = extvalue.indexOf("'"); if (encodingend === -1) { return extvalue; } - var encoding = extvalue.slice(0, encodingend); - var langvalue = extvalue.slice(encodingend + 1); - var value = langvalue.replace(/^[^']*'/, ''); + const encoding = extvalue.slice(0, encodingend); + const langvalue = extvalue.slice(encodingend + 1); + const value = langvalue.replace(/^[^']*'/, ""); return textdecode(encoding, value); } function rfc2047decode(value) { - if (!value.startsWith('=?') || /[\x00-\x19\x80-\xff]/.test(value)) { + if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) { return value; } - return value.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (_, charset, encoding, text) { - if (encoding === 'q' || encoding === 'Q') { - text = text.replace(/_/g, ' '); - text = text.replace(/=([0-9a-fA-F]{2})/g, function (_, hex) { + return value.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (matches, charset, encoding, text) { + if (encoding === "q" || encoding === "Q") { + text = text.replace(/_/g, " "); + text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) { return String.fromCharCode(parseInt(hex, 16)); }); return textdecode(charset, text); @@ -23513,64 +23290,46 @@ function getFilenameFromContentDispositionHeader(contentDisposition) { }); } - return ''; + return ""; } /***/ }), -/* 168 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 160 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFNetworkStream = void 0; -var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148)); - var _util = __w_pdfjs_require__(1); -var _network_utils = __w_pdfjs_require__(166); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +var _network_utils = __w_pdfjs_require__(158); ; -var OK_RESPONSE = 200; -var PARTIAL_CONTENT_RESPONSE = 206; +const OK_RESPONSE = 200; +const PARTIAL_CONTENT_RESPONSE = 206; function getArrayBuffer(xhr) { - var data = xhr.response; + const data = xhr.response; - if (typeof data !== 'string') { + if (typeof data !== "string") { return data; } - var array = (0, _util.stringToBytes)(data); + const array = (0, _util.stringToBytes)(data); return array.buffer; } -var NetworkManager = -/*#__PURE__*/ -function () { - function NetworkManager(url, args) { - _classCallCheck(this, NetworkManager); - +class NetworkManager { + constructor(url) { + let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; this.url = url; - args = args || {}; this.isHttp = /^https?:/i.test(url); - this.httpHeaders = this.isHttp && args.httpHeaders || {}; + this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null); this.withCredentials = args.withCredentials || false; this.getXhr = args.getXhr || function NetworkManager_getXhr() { @@ -23581,190 +23340,159 @@ function () { this.pendingRequests = Object.create(null); } - _createClass(NetworkManager, [{ - key: "requestRange", - value: function requestRange(begin, end, listeners) { - var args = { - begin: begin, - end: end + requestRange(begin, end, listeners) { + const args = { + begin, + end + }; + + for (const prop in listeners) { + args[prop] = listeners[prop]; + } + + return this.request(args); + } + + requestFull(listeners) { + return this.request(listeners); + } + + request(args) { + const xhr = this.getXhr(); + const xhrId = this.currXhrId++; + const pendingRequest = this.pendingRequests[xhrId] = { + xhr + }; + xhr.open("GET", this.url); + xhr.withCredentials = this.withCredentials; + + for (const property in this.httpHeaders) { + const value = this.httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + xhr.setRequestHeader(property, value); + } + + if (this.isHttp && "begin" in args && "end" in args) { + xhr.setRequestHeader("Range", `bytes=${args.begin}-${args.end - 1}`); + pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE; + } else { + pendingRequest.expectedStatus = OK_RESPONSE; + } + + xhr.responseType = "arraybuffer"; + + if (args.onError) { + xhr.onerror = function (evt) { + args.onError(xhr.status); }; - - for (var prop in listeners) { - args[prop] = listeners[prop]; - } - - return this.request(args); } - }, { - key: "requestFull", - value: function requestFull(listeners) { - return this.request(listeners); + + xhr.onreadystatechange = this.onStateChange.bind(this, xhrId); + xhr.onprogress = this.onProgress.bind(this, xhrId); + pendingRequest.onHeadersReceived = args.onHeadersReceived; + pendingRequest.onDone = args.onDone; + pendingRequest.onError = args.onError; + pendingRequest.onProgress = args.onProgress; + xhr.send(null); + return xhrId; + } + + onProgress(xhrId, evt) { + var _pendingRequest$onPro; + + const pendingRequest = this.pendingRequests[xhrId]; + + if (!pendingRequest) { + return; } - }, { - key: "request", - value: function request(args) { - var xhr = this.getXhr(); - var xhrId = this.currXhrId++; - var pendingRequest = this.pendingRequests[xhrId] = { - xhr: xhr - }; - xhr.open('GET', this.url); - xhr.withCredentials = this.withCredentials; - for (var property in this.httpHeaders) { - var value = this.httpHeaders[property]; + (_pendingRequest$onPro = pendingRequest.onProgress) === null || _pendingRequest$onPro === void 0 ? void 0 : _pendingRequest$onPro.call(pendingRequest, evt); + } - if (typeof value === 'undefined') { - continue; - } + onStateChange(xhrId, evt) { + const pendingRequest = this.pendingRequests[xhrId]; - xhr.setRequestHeader(property, value); - } - - if (this.isHttp && 'begin' in args && 'end' in args) { - xhr.setRequestHeader('Range', "bytes=".concat(args.begin, "-").concat(args.end - 1)); - pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE; - } else { - pendingRequest.expectedStatus = OK_RESPONSE; - } - - xhr.responseType = 'arraybuffer'; - - if (args.onError) { - xhr.onerror = function (evt) { - args.onError(xhr.status); - }; - } - - xhr.onreadystatechange = this.onStateChange.bind(this, xhrId); - xhr.onprogress = this.onProgress.bind(this, xhrId); - pendingRequest.onHeadersReceived = args.onHeadersReceived; - pendingRequest.onDone = args.onDone; - pendingRequest.onError = args.onError; - pendingRequest.onProgress = args.onProgress; - xhr.send(null); - return xhrId; + if (!pendingRequest) { + return; } - }, { - key: "onProgress", - value: function onProgress(xhrId, evt) { - var pendingRequest = this.pendingRequests[xhrId]; - if (!pendingRequest) { - return; - } + const xhr = pendingRequest.xhr; - if (pendingRequest.onProgress) { - pendingRequest.onProgress(evt); - } + if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) { + pendingRequest.onHeadersReceived(); + delete pendingRequest.onHeadersReceived; } - }, { - key: "onStateChange", - value: function onStateChange(xhrId, evt) { - var pendingRequest = this.pendingRequests[xhrId]; - if (!pendingRequest) { - return; - } - - var xhr = pendingRequest.xhr; - - if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) { - pendingRequest.onHeadersReceived(); - delete pendingRequest.onHeadersReceived; - } - - if (xhr.readyState !== 4) { - return; - } - - if (!(xhrId in this.pendingRequests)) { - return; - } - - delete this.pendingRequests[xhrId]; - - if (xhr.status === 0 && this.isHttp) { - if (pendingRequest.onError) { - pendingRequest.onError(xhr.status); - } - - return; - } - - var xhrStatus = xhr.status || OK_RESPONSE; - var ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE; - - if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) { - if (pendingRequest.onError) { - pendingRequest.onError(xhr.status); - } - - return; - } - - var chunk = getArrayBuffer(xhr); - - if (xhrStatus === PARTIAL_CONTENT_RESPONSE) { - var rangeHeader = xhr.getResponseHeader('Content-Range'); - var matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader); - pendingRequest.onDone({ - begin: parseInt(matches[1], 10), - chunk: chunk - }); - } else if (chunk) { - pendingRequest.onDone({ - begin: 0, - chunk: chunk - }); - } else if (pendingRequest.onError) { - pendingRequest.onError(xhr.status); - } + if (xhr.readyState !== 4) { + return; } - }, { - key: "hasPendingRequests", - value: function hasPendingRequests() { - for (var xhrId in this.pendingRequests) { - return true; - } - return false; + if (!(xhrId in this.pendingRequests)) { + return; } - }, { - key: "getRequestXhr", - value: function getRequestXhr(xhrId) { - return this.pendingRequests[xhrId].xhr; - } - }, { - key: "isPendingRequest", - value: function isPendingRequest(xhrId) { - return xhrId in this.pendingRequests; - } - }, { - key: "abortAllRequests", - value: function abortAllRequests() { - for (var xhrId in this.pendingRequests) { - this.abortRequest(xhrId | 0); - } - } - }, { - key: "abortRequest", - value: function abortRequest(xhrId) { - var xhr = this.pendingRequests[xhrId].xhr; - delete this.pendingRequests[xhrId]; - xhr.abort(); - } - }]); - return NetworkManager; -}(); + delete this.pendingRequests[xhrId]; -var PDFNetworkStream = -/*#__PURE__*/ -function () { - function PDFNetworkStream(source) { - _classCallCheck(this, PDFNetworkStream); + if (xhr.status === 0 && this.isHttp) { + var _pendingRequest$onErr; + (_pendingRequest$onErr = pendingRequest.onError) === null || _pendingRequest$onErr === void 0 ? void 0 : _pendingRequest$onErr.call(pendingRequest, xhr.status); + return; + } + + const xhrStatus = xhr.status || OK_RESPONSE; + const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE; + + if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) { + var _pendingRequest$onErr2; + + (_pendingRequest$onErr2 = pendingRequest.onError) === null || _pendingRequest$onErr2 === void 0 ? void 0 : _pendingRequest$onErr2.call(pendingRequest, xhr.status); + return; + } + + const chunk = getArrayBuffer(xhr); + + if (xhrStatus === PARTIAL_CONTENT_RESPONSE) { + const rangeHeader = xhr.getResponseHeader("Content-Range"); + const matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader); + pendingRequest.onDone({ + begin: parseInt(matches[1], 10), + chunk + }); + } else if (chunk) { + pendingRequest.onDone({ + begin: 0, + chunk + }); + } else { + var _pendingRequest$onErr3; + + (_pendingRequest$onErr3 = pendingRequest.onError) === null || _pendingRequest$onErr3 === void 0 ? void 0 : _pendingRequest$onErr3.call(pendingRequest, xhr.status); + } + } + + getRequestXhr(xhrId) { + return this.pendingRequests[xhrId].xhr; + } + + isPendingRequest(xhrId) { + return xhrId in this.pendingRequests; + } + + abortRequest(xhrId) { + const xhr = this.pendingRequests[xhrId].xhr; + delete this.pendingRequests[xhrId]; + xhr.abort(); + } + +} + +class PDFNetworkStream { + constructor(source) { this._source = source; this._manager = new NetworkManager(source.url, { httpHeaders: source.httpHeaders, @@ -23775,60 +23503,47 @@ function () { this._rangeRequestReaders = []; } - _createClass(PDFNetworkStream, [{ - key: "_onRangeRequestReaderClosed", - value: function _onRangeRequestReaderClosed(reader) { - var i = this._rangeRequestReaders.indexOf(reader); + _onRangeRequestReaderClosed(reader) { + const i = this._rangeRequestReaders.indexOf(reader); - if (i >= 0) { - this._rangeRequestReaders.splice(i, 1); - } + if (i >= 0) { + this._rangeRequestReaders.splice(i, 1); } - }, { - key: "getFullReader", - value: function getFullReader() { - (0, _util.assert)(!this._fullRequestReader); - this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source); - return this._fullRequestReader; + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFNetworkStream.getFullReader can only be called once."); + this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source); + return this._fullRequestReader; + } + + getRangeReader(begin, end) { + const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end); + reader.onClosed = this._onRangeRequestReaderClosed.bind(this); + + this._rangeRequestReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + var _this$_fullRequestRea; + + (_this$_fullRequestRea = this._fullRequestReader) === null || _this$_fullRequestRea === void 0 ? void 0 : _this$_fullRequestRea.cancel(reason); + + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); } - }, { - key: "getRangeReader", - value: function getRangeReader(begin, end) { - var reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end); - reader.onClosed = this._onRangeRequestReaderClosed.bind(this); + } - this._rangeRequestReaders.push(reader); - - return reader; - } - }, { - key: "cancelAllRequests", - value: function cancelAllRequests(reason) { - if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); - } - - var readers = this._rangeRequestReaders.slice(0); - - readers.forEach(function (reader) { - reader.cancel(reason); - }); - } - }]); - - return PDFNetworkStream; -}(); +} exports.PDFNetworkStream = PDFNetworkStream; -var PDFNetworkStreamFullRequestReader = -/*#__PURE__*/ -function () { - function PDFNetworkStreamFullRequestReader(manager, source) { - _classCallCheck(this, PDFNetworkStreamFullRequestReader); - +class PDFNetworkStreamFullRequestReader { + constructor(manager, source) { this._manager = manager; - var args = { + const args = { onHeadersReceived: this._onHeadersReceived.bind(this), onDone: this._onDone.bind(this), onError: this._onError.bind(this), @@ -23855,406 +23570,335 @@ function () { this.onProgress = null; } - _createClass(PDFNetworkStreamFullRequestReader, [{ - key: "_onHeadersReceived", - value: function _onHeadersReceived() { - var fullRequestXhrId = this._fullRequestId; + _onHeadersReceived() { + const fullRequestXhrId = this._fullRequestId; - var fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId); + const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId); - var getResponseHeader = function getResponseHeader(name) { - return fullRequestXhr.getResponseHeader(name); + const getResponseHeader = name => { + return fullRequestXhr.getResponseHeader(name); + }; + + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: this._manager.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + + if (allowRangeRequests) { + this._isRangeSupported = true; + } + + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + + if (this._isRangeSupported) { + this._manager.abortRequest(fullRequestXhrId); + } + + this._headersReceivedCapability.resolve(); + } + + _onDone(data) { + if (data) { + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + + requestCapability.resolve({ + value: data.chunk, + done: false + }); + } else { + this._cachedChunks.push(data.chunk); + } + } + + this._done = true; + + if (this._cachedChunks.length > 0) { + return; + } + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + } + + _onError(status) { + this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url); + + this._headersReceivedCapability.reject(this._storedError); + + for (const requestCapability of this._requests) { + requestCapability.reject(this._storedError); + } + + this._requests.length = 0; + this._cachedChunks.length = 0; + } + + _onProgress(evt) { + var _this$onProgress; + + (_this$onProgress = this.onProgress) === null || _this$onProgress === void 0 ? void 0 : _this$onProgress.call(this, { + loaded: evt.loaded, + total: evt.lengthComputable ? evt.total : this._contentLength + }); + } + + get filename() { + return this._filename; + } + + get isRangeSupported() { + return this._isRangeSupported; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + get contentLength() { + return this._contentLength; + } + + get headersReady() { + return this._headersReceivedCapability.promise; + } + + async read() { + if (this._storedError) { + throw this._storedError; + } + + if (this._cachedChunks.length > 0) { + const chunk = this._cachedChunks.shift(); + + return { + value: chunk, + done: false }; - - var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({ - getResponseHeader: getResponseHeader, - isHttp: this._manager.isHttp, - rangeChunkSize: this._rangeChunkSize, - disableRange: this._disableRange - }), - allowRangeRequests = _validateRangeRequest.allowRangeRequests, - suggestedLength = _validateRangeRequest.suggestedLength; - - if (allowRangeRequests) { - this._isRangeSupported = true; - } - - this._contentLength = suggestedLength || this._contentLength; - this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); - - if (this._isRangeSupported) { - this._manager.abortRequest(fullRequestXhrId); - } - - this._headersReceivedCapability.resolve(); } - }, { - key: "_onDone", - value: function _onDone(args) { - if (args) { - if (this._requests.length > 0) { - var requestCapability = this._requests.shift(); - requestCapability.resolve({ - value: args.chunk, - done: false - }); - } else { - this._cachedChunks.push(args.chunk); - } - } + if (this._done) { + return { + value: undefined, + done: true + }; + } - this._done = true; + const requestCapability = (0, _util.createPromiseCapability)(); - if (this._cachedChunks.length > 0) { - return; - } + this._requests.push(requestCapability); - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + this._headersReceivedCapability.reject(reason); + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true }); - - this._requests = []; } - }, { - key: "_onError", - value: function _onError(status) { - var url = this._url; - var exception = (0, _network_utils.createResponseStatusError)(status, url); - this._storedError = exception; - this._headersReceivedCapability.reject(exception); + this._requests.length = 0; - this._requests.forEach(function (requestCapability) { - requestCapability.reject(exception); - }); - - this._requests = []; - this._cachedChunks = []; + if (this._manager.isPendingRequest(this._fullRequestId)) { + this._manager.abortRequest(this._fullRequestId); } - }, { - key: "_onProgress", - value: function _onProgress(data) { - if (this.onProgress) { - this.onProgress({ - loaded: data.loaded, - total: data.lengthComputable ? data.total : this._contentLength - }); - } - } - }, { - key: "read", - value: function () { - var _read = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee() { - var chunk, requestCapability; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (!this._storedError) { - _context.next = 2; - break; - } - throw this._storedError; + this._fullRequestReader = null; + } - case 2: - if (!(this._cachedChunks.length > 0)) { - _context.next = 5; - break; - } - - chunk = this._cachedChunks.shift(); - return _context.abrupt("return", { - value: chunk, - done: false - }); - - case 5: - if (!this._done) { - _context.next = 7; - break; - } - - return _context.abrupt("return", { - value: undefined, - done: true - }); - - case 7: - requestCapability = (0, _util.createPromiseCapability)(); - - this._requests.push(requestCapability); - - return _context.abrupt("return", requestCapability.promise); - - case 10: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function read() { - return _read.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - this._done = true; - - this._headersReceivedCapability.reject(reason); - - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - - this._requests = []; - - if (this._manager.isPendingRequest(this._fullRequestId)) { - this._manager.abortRequest(this._fullRequestId); - } - - this._fullRequestReader = null; - } - }, { - key: "filename", - get: function get() { - return this._filename; - } - }, { - key: "isRangeSupported", - get: function get() { - return this._isRangeSupported; - } - }, { - key: "isStreamingSupported", - get: function get() { - return this._isStreamingSupported; - } - }, { - key: "contentLength", - get: function get() { - return this._contentLength; - } - }, { - key: "headersReady", - get: function get() { - return this._headersReceivedCapability.promise; - } - }]); - - return PDFNetworkStreamFullRequestReader; -}(); - -var PDFNetworkStreamRangeRequestReader = -/*#__PURE__*/ -function () { - function PDFNetworkStreamRangeRequestReader(manager, begin, end) { - _classCallCheck(this, PDFNetworkStreamRangeRequestReader); +} +class PDFNetworkStreamRangeRequestReader { + constructor(manager, begin, end) { this._manager = manager; - var args = { + const args = { onDone: this._onDone.bind(this), + onError: this._onError.bind(this), onProgress: this._onProgress.bind(this) }; + this._url = manager.url; this._requestId = manager.requestRange(begin, end, args); this._requests = []; this._queuedChunk = null; this._done = false; + this._storedError = undefined; this.onProgress = null; this.onClosed = null; } - _createClass(PDFNetworkStreamRangeRequestReader, [{ - key: "_close", - value: function _close() { - if (this.onClosed) { - this.onClosed(this); - } - } - }, { - key: "_onDone", - value: function _onDone(data) { - var chunk = data.chunk; + _close() { + var _this$onClosed; - if (this._requests.length > 0) { - var requestCapability = this._requests.shift(); + (_this$onClosed = this.onClosed) === null || _this$onClosed === void 0 ? void 0 : _this$onClosed.call(this, this); + } - requestCapability.resolve({ - value: chunk, - done: false - }); - } else { - this._queuedChunk = chunk; - } + _onDone(data) { + const chunk = data.chunk; - this._done = true; + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); + requestCapability.resolve({ + value: chunk, + done: false }); - - this._requests = []; - - this._close(); + } else { + this._queuedChunk = chunk; } - }, { - key: "_onProgress", - value: function _onProgress(evt) { - if (!this.isStreamingSupported && this.onProgress) { - this.onProgress({ - loaded: evt.loaded - }); - } - } - }, { - key: "read", - value: function () { - var _read2 = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee2() { - var chunk, requestCapability; - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - if (!(this._queuedChunk !== null)) { - _context2.next = 4; - break; - } - chunk = this._queuedChunk; - this._queuedChunk = null; - return _context2.abrupt("return", { - value: chunk, - done: false - }); + this._done = true; - case 4: - if (!this._done) { - _context2.next = 6; - break; - } - - return _context2.abrupt("return", { - value: undefined, - done: true - }); - - case 6: - requestCapability = (0, _util.createPromiseCapability)(); - - this._requests.push(requestCapability); - - return _context2.abrupt("return", requestCapability.promise); - - case 9: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function read() { - return _read2.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - this._done = true; - - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true }); - - this._requests = []; - - if (this._manager.isPendingRequest(this._requestId)) { - this._manager.abortRequest(this._requestId); - } - - this._close(); } - }, { - key: "isStreamingSupported", - get: function get() { - return false; - } - }]); - return PDFNetworkStreamRangeRequestReader; -}(); + this._requests.length = 0; + + this._close(); + } + + _onError(status) { + this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url); + + for (const requestCapability of this._requests) { + requestCapability.reject(this._storedError); + } + + this._requests.length = 0; + this._queuedChunk = null; + } + + _onProgress(evt) { + if (!this.isStreamingSupported) { + var _this$onProgress2; + + (_this$onProgress2 = this.onProgress) === null || _this$onProgress2 === void 0 ? void 0 : _this$onProgress2.call(this, { + loaded: evt.loaded + }); + } + } + + get isStreamingSupported() { + return false; + } + + async read() { + if (this._storedError) { + throw this._storedError; + } + + if (this._queuedChunk !== null) { + const chunk = this._queuedChunk; + this._queuedChunk = null; + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + if (this._manager.isPendingRequest(this._requestId)) { + this._manager.abortRequest(this._requestId); + } + + this._close(); + } + +} /***/ }), -/* 169 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 161 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFFetchStream = void 0; -var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148)); - var _util = __w_pdfjs_require__(1); -var _network_utils = __w_pdfjs_require__(166); +var _network_utils = __w_pdfjs_require__(158); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +; function createFetchOptions(headers, withCredentials, abortController) { return { - method: 'GET', - headers: headers, - signal: abortController && abortController.signal, - mode: 'cors', - credentials: withCredentials ? 'include' : 'same-origin', - redirect: 'follow' + method: "GET", + headers, + signal: abortController.signal, + mode: "cors", + credentials: withCredentials ? "include" : "same-origin", + redirect: "follow" }; } -var PDFFetchStream = -/*#__PURE__*/ -function () { - function PDFFetchStream(source) { - _classCallCheck(this, PDFFetchStream); +function createHeaders(httpHeaders) { + const headers = new Headers(); + for (const property in httpHeaders) { + const value = httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + headers.append(property, value); + } + + return headers; +} + +class PDFFetchStream { + constructor(source) { this.source = source; this.isHttp = /^https?:/i.test(source.url); this.httpHeaders = this.isHttp && source.httpHeaders || {}; @@ -24262,64 +23906,51 @@ function () { this._rangeRequestReaders = []; } - _createClass(PDFFetchStream, [{ - key: "getFullReader", - value: function getFullReader() { - (0, _util.assert)(!this._fullRequestReader); - this._fullRequestReader = new PDFFetchStreamReader(this); - return this._fullRequestReader; + get _progressiveDataLength() { + var _this$_fullRequestRea, _this$_fullRequestRea2; + + return (_this$_fullRequestRea = (_this$_fullRequestRea2 = this._fullRequestReader) === null || _this$_fullRequestRea2 === void 0 ? void 0 : _this$_fullRequestRea2._loaded) !== null && _this$_fullRequestRea !== void 0 ? _this$_fullRequestRea : 0; + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFFetchStream.getFullReader can only be called once."); + this._fullRequestReader = new PDFFetchStreamReader(this); + return this._fullRequestReader; + } + + getRangeReader(begin, end) { + if (end <= this._progressiveDataLength) { + return null; } - }, { - key: "getRangeReader", - value: function getRangeReader(begin, end) { - if (end <= this._progressiveDataLength) { - return null; - } - var reader = new PDFFetchStreamRangeReader(this, begin, end); + const reader = new PDFFetchStreamRangeReader(this, begin, end); - this._rangeRequestReaders.push(reader); + this._rangeRequestReaders.push(reader); - return reader; + return reader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); } - }, { - key: "cancelAllRequests", - value: function cancelAllRequests(reason) { - if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); - } - var readers = this._rangeRequestReaders.slice(0); - - readers.forEach(function (reader) { - reader.cancel(reason); - }); + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); } - }, { - key: "_progressiveDataLength", - get: function get() { - return this._fullRequestReader ? this._fullRequestReader._loaded : 0; - } - }]); + } - return PDFFetchStream; -}(); +} exports.PDFFetchStream = PDFFetchStream; -var PDFFetchStreamReader = -/*#__PURE__*/ -function () { - function PDFFetchStreamReader(stream) { - var _this = this; - - _classCallCheck(this, PDFFetchStreamReader); - +class PDFFetchStreamReader { + constructor(stream) { this._stream = stream; this._reader = null; this._loaded = 0; this._filename = null; - var source = stream.source; + const source = stream.source; this._withCredentials = source.withCredentials || false; this._contentLength = source.length; this._headersCapability = (0, _util.createPromiseCapability)(); @@ -24330,295 +23961,489 @@ function () { this._disableRange = true; } - if (typeof AbortController !== 'undefined') { - this._abortController = new AbortController(); - } - + this._abortController = new AbortController(); this._isStreamingSupported = !source.disableStream; this._isRangeSupported = !source.disableRange; - this._headers = new Headers(); - - for (var property in this._stream.httpHeaders) { - var value = this._stream.httpHeaders[property]; - - if (typeof value === 'undefined') { - continue; - } - - this._headers.append(property, value); - } - - var url = source.url; - fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) { + this._headers = createHeaders(this._stream.httpHeaders); + const url = source.url; + fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => { if (!(0, _network_utils.validateResponseStatus)(response.status)) { throw (0, _network_utils.createResponseStatusError)(response.status, url); } - _this._reader = response.body.getReader(); + this._reader = response.body.getReader(); - _this._headersCapability.resolve(); + this._headersCapability.resolve(); - var getResponseHeader = function getResponseHeader(name) { + const getResponseHeader = name => { return response.headers.get(name); }; - var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({ - getResponseHeader: getResponseHeader, - isHttp: _this._stream.isHttp, - rangeChunkSize: _this._rangeChunkSize, - disableRange: _this._disableRange - }), - allowRangeRequests = _validateRangeRequest.allowRangeRequests, - suggestedLength = _validateRangeRequest.suggestedLength; + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: this._stream.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + this._isRangeSupported = allowRangeRequests; + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); - _this._isRangeSupported = allowRangeRequests; - _this._contentLength = suggestedLength || _this._contentLength; - _this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); - - if (!_this._isStreamingSupported && _this._isRangeSupported) { - _this.cancel(new _util.AbortException('Streaming is disabled.')); + if (!this._isStreamingSupported && this._isRangeSupported) { + this.cancel(new _util.AbortException("Streaming is disabled.")); } - })["catch"](this._headersCapability.reject); + }).catch(this._headersCapability.reject); this.onProgress = null; } - _createClass(PDFFetchStreamReader, [{ - key: "read", - value: function () { - var _read = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee() { - var _ref, value, done, buffer; + get headersReady() { + return this._headersCapability.promise; + } - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return this._headersCapability.promise; + get filename() { + return this._filename; + } - case 2: - _context.next = 4; - return this._reader.read(); + get contentLength() { + return this._contentLength; + } - case 4: - _ref = _context.sent; - value = _ref.value; - done = _ref.done; + get isRangeSupported() { + return this._isRangeSupported; + } - if (!done) { - _context.next = 9; - break; - } + get isStreamingSupported() { + return this._isStreamingSupported; + } - return _context.abrupt("return", { - value: value, - done: done - }); + async read() { + await this._headersCapability.promise; + const { + value, + done + } = await this._reader.read(); - case 9: - this._loaded += value.byteLength; - - if (this.onProgress) { - this.onProgress({ - loaded: this._loaded, - total: this._contentLength - }); - } - - buffer = new Uint8Array(value).buffer; - return _context.abrupt("return", { - value: buffer, - done: false - }); - - case 13: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function read() { - return _read.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - if (this._reader) { - this._reader.cancel(reason); - } - - if (this._abortController) { - this._abortController.abort(); - } + if (done) { + return { + value, + done + }; } - }, { - key: "headersReady", - get: function get() { - return this._headersCapability.promise; - } - }, { - key: "filename", - get: function get() { - return this._filename; - } - }, { - key: "contentLength", - get: function get() { - return this._contentLength; - } - }, { - key: "isRangeSupported", - get: function get() { - return this._isRangeSupported; - } - }, { - key: "isStreamingSupported", - get: function get() { - return this._isStreamingSupported; - } - }]); - return PDFFetchStreamReader; -}(); + this._loaded += value.byteLength; -var PDFFetchStreamRangeReader = -/*#__PURE__*/ -function () { - function PDFFetchStreamRangeReader(stream, begin, end) { - var _this2 = this; + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded, + total: this._contentLength + }); + } - _classCallCheck(this, PDFFetchStreamRangeReader); + const buffer = new Uint8Array(value).buffer; + return { + value: buffer, + done: false + }; + } + cancel(reason) { + if (this._reader) { + this._reader.cancel(reason); + } + + this._abortController.abort(); + } + +} + +class PDFFetchStreamRangeReader { + constructor(stream, begin, end) { this._stream = stream; this._reader = null; this._loaded = 0; - var source = stream.source; + const source = stream.source; this._withCredentials = source.withCredentials || false; this._readCapability = (0, _util.createPromiseCapability)(); this._isStreamingSupported = !source.disableStream; + this._abortController = new AbortController(); + this._headers = createHeaders(this._stream.httpHeaders); - if (typeof AbortController !== 'undefined') { - this._abortController = new AbortController(); - } + this._headers.append("Range", `bytes=${begin}-${end - 1}`); - this._headers = new Headers(); - - for (var property in this._stream.httpHeaders) { - var value = this._stream.httpHeaders[property]; - - if (typeof value === 'undefined') { - continue; - } - - this._headers.append(property, value); - } - - this._headers.append('Range', "bytes=".concat(begin, "-").concat(end - 1)); - - var url = source.url; - fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) { + const url = source.url; + fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => { if (!(0, _network_utils.validateResponseStatus)(response.status)) { throw (0, _network_utils.createResponseStatusError)(response.status, url); } - _this2._readCapability.resolve(); + this._readCapability.resolve(); - _this2._reader = response.body.getReader(); - }); + this._reader = response.body.getReader(); + }).catch(this._readCapability.reject); this.onProgress = null; } - _createClass(PDFFetchStreamRangeReader, [{ - key: "read", - value: function () { - var _read2 = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee2() { - var _ref2, value, done, buffer; + get isStreamingSupported() { + return this._isStreamingSupported; + } - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _context2.next = 2; - return this._readCapability.promise; + async read() { + await this._readCapability.promise; + const { + value, + done + } = await this._reader.read(); - case 2: - _context2.next = 4; - return this._reader.read(); - - case 4: - _ref2 = _context2.sent; - value = _ref2.value; - done = _ref2.done; - - if (!done) { - _context2.next = 9; - break; - } - - return _context2.abrupt("return", { - value: value, - done: done - }); - - case 9: - this._loaded += value.byteLength; - - if (this.onProgress) { - this.onProgress({ - loaded: this._loaded - }); - } - - buffer = new Uint8Array(value).buffer; - return _context2.abrupt("return", { - value: buffer, - done: false - }); - - case 13: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function read() { - return _read2.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - if (this._reader) { - this._reader.cancel(reason); - } - - if (this._abortController) { - this._abortController.abort(); - } + if (done) { + return { + value, + done + }; } - }, { - key: "isStreamingSupported", - get: function get() { - return this._isStreamingSupported; - } - }]); - return PDFFetchStreamRangeReader; -}(); + this._loaded += value.byteLength; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded + }); + } + + const buffer = new Uint8Array(value).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (this._reader) { + this._reader.cancel(reason); + } + + this._abortController.abort(); + } + +} /***/ }) -/******/ ]); +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __w_pdfjs_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; +var exports = __webpack_exports__; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "AnnotationEditorLayer", ({ + enumerable: true, + get: function () { + return _annotation_editor_layer.AnnotationEditorLayer; + } +})); +Object.defineProperty(exports, "AnnotationEditorParamsType", ({ + enumerable: true, + get: function () { + return _util.AnnotationEditorParamsType; + } +})); +Object.defineProperty(exports, "AnnotationEditorType", ({ + enumerable: true, + get: function () { + return _util.AnnotationEditorType; + } +})); +Object.defineProperty(exports, "AnnotationEditorUIManager", ({ + enumerable: true, + get: function () { + return _tools.AnnotationEditorUIManager; + } +})); +Object.defineProperty(exports, "AnnotationLayer", ({ + enumerable: true, + get: function () { + return _annotation_layer.AnnotationLayer; + } +})); +Object.defineProperty(exports, "AnnotationMode", ({ + enumerable: true, + get: function () { + return _util.AnnotationMode; + } +})); +Object.defineProperty(exports, "CMapCompressionType", ({ + enumerable: true, + get: function () { + return _util.CMapCompressionType; + } +})); +Object.defineProperty(exports, "GlobalWorkerOptions", ({ + enumerable: true, + get: function () { + return _worker_options.GlobalWorkerOptions; + } +})); +Object.defineProperty(exports, "InvalidPDFException", ({ + enumerable: true, + get: function () { + return _util.InvalidPDFException; + } +})); +Object.defineProperty(exports, "LoopbackPort", ({ + enumerable: true, + get: function () { + return _api.LoopbackPort; + } +})); +Object.defineProperty(exports, "MissingPDFException", ({ + enumerable: true, + get: function () { + return _util.MissingPDFException; + } +})); +Object.defineProperty(exports, "OPS", ({ + enumerable: true, + get: function () { + return _util.OPS; + } +})); +Object.defineProperty(exports, "PDFDataRangeTransport", ({ + enumerable: true, + get: function () { + return _api.PDFDataRangeTransport; + } +})); +Object.defineProperty(exports, "PDFDateString", ({ + enumerable: true, + get: function () { + return _display_utils.PDFDateString; + } +})); +Object.defineProperty(exports, "PDFWorker", ({ + enumerable: true, + get: function () { + return _api.PDFWorker; + } +})); +Object.defineProperty(exports, "PasswordResponses", ({ + enumerable: true, + get: function () { + return _util.PasswordResponses; + } +})); +Object.defineProperty(exports, "PermissionFlag", ({ + enumerable: true, + get: function () { + return _util.PermissionFlag; + } +})); +Object.defineProperty(exports, "PixelsPerInch", ({ + enumerable: true, + get: function () { + return _display_utils.PixelsPerInch; + } +})); +Object.defineProperty(exports, "RenderingCancelledException", ({ + enumerable: true, + get: function () { + return _display_utils.RenderingCancelledException; + } +})); +Object.defineProperty(exports, "SVGGraphics", ({ + enumerable: true, + get: function () { + return _svg.SVGGraphics; + } +})); +Object.defineProperty(exports, "UNSUPPORTED_FEATURES", ({ + enumerable: true, + get: function () { + return _util.UNSUPPORTED_FEATURES; + } +})); +Object.defineProperty(exports, "UnexpectedResponseException", ({ + enumerable: true, + get: function () { + return _util.UnexpectedResponseException; + } +})); +Object.defineProperty(exports, "Util", ({ + enumerable: true, + get: function () { + return _util.Util; + } +})); +Object.defineProperty(exports, "VerbosityLevel", ({ + enumerable: true, + get: function () { + return _util.VerbosityLevel; + } +})); +Object.defineProperty(exports, "XfaLayer", ({ + enumerable: true, + get: function () { + return _xfa_layer.XfaLayer; + } +})); +Object.defineProperty(exports, "build", ({ + enumerable: true, + get: function () { + return _api.build; + } +})); +Object.defineProperty(exports, "createPromiseCapability", ({ + enumerable: true, + get: function () { + return _util.createPromiseCapability; + } +})); +Object.defineProperty(exports, "createValidAbsoluteUrl", ({ + enumerable: true, + get: function () { + return _util.createValidAbsoluteUrl; + } +})); +Object.defineProperty(exports, "getDocument", ({ + enumerable: true, + get: function () { + return _api.getDocument; + } +})); +Object.defineProperty(exports, "getFilenameFromUrl", ({ + enumerable: true, + get: function () { + return _display_utils.getFilenameFromUrl; + } +})); +Object.defineProperty(exports, "getPdfFilenameFromUrl", ({ + enumerable: true, + get: function () { + return _display_utils.getPdfFilenameFromUrl; + } +})); +Object.defineProperty(exports, "getXfaPageViewport", ({ + enumerable: true, + get: function () { + return _display_utils.getXfaPageViewport; + } +})); +Object.defineProperty(exports, "isPdfFile", ({ + enumerable: true, + get: function () { + return _display_utils.isPdfFile; + } +})); +Object.defineProperty(exports, "loadScript", ({ + enumerable: true, + get: function () { + return _display_utils.loadScript; + } +})); +Object.defineProperty(exports, "renderTextLayer", ({ + enumerable: true, + get: function () { + return _text_layer.renderTextLayer; + } +})); +Object.defineProperty(exports, "shadow", ({ + enumerable: true, + get: function () { + return _util.shadow; + } +})); +Object.defineProperty(exports, "version", ({ + enumerable: true, + get: function () { + return _api.version; + } +})); + +var _util = __w_pdfjs_require__(1); + +var _api = __w_pdfjs_require__(129); + +var _display_utils = __w_pdfjs_require__(133); + +var _annotation_editor_layer = __w_pdfjs_require__(147); + +var _tools = __w_pdfjs_require__(132); + +var _annotation_layer = __w_pdfjs_require__(152); + +var _worker_options = __w_pdfjs_require__(140); + +var _is_node = __w_pdfjs_require__(3); + +var _text_layer = __w_pdfjs_require__(155); + +var _svg = __w_pdfjs_require__(156); + +var _xfa_layer = __w_pdfjs_require__(154); + +const pdfjsVersion = '2.16.105'; +const pdfjsBuild = '172ccdbe5'; +{ + if (_is_node.isNodeJS) { + const { + PDFNodeStream + } = __w_pdfjs_require__(157); + + (0, _api.setPDFNetworkStreamFactory)(params => { + return new PDFNodeStream(params); + }); + } else { + const { + PDFNetworkStream + } = __w_pdfjs_require__(160); + + const { + PDFFetchStream + } = __w_pdfjs_require__(161); + + (0, _api.setPDFNetworkStreamFactory)(params => { + if ((0, _display_utils.isValidFetchUrl)(params.url)) { + return new PDFFetchStream(params); + } + + return new PDFNetworkStream(params); + }); + } +} +})(); + +/******/ return __webpack_exports__; +/******/ })() +; }); -//# sourceMappingURL=pdf.js.map \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/build/pdf.sandbox.js b/addons/web/static/lib/pdfjs/build/pdf.sandbox.js new file mode 100644 index 00000000000..cb49df8fd69 --- /dev/null +++ b/addons/web/static/lib/pdfjs/build/pdf.sandbox.js @@ -0,0 +1,315 @@ +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2022 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * JavaScript code in this page + */ + +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define("pdfjs-dist/build/pdf.sandbox", [], factory); + else if(typeof exports === 'object') + exports["pdfjs-dist/build/pdf.sandbox"] = factory(); + else + root["pdfjs-dist/build/pdf.sandbox"] = root.pdfjsSandbox = factory(); +})(globalThis, () => { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((__unused_webpack_module, exports) => { + +Object.defineProperty(exports, "__esModule", ({value:true}));exports["default"]=void 0;var Module=(()=>{var _scriptDir=typeof document!=='undefined'&&document.currentScript?document.currentScript.src:undefined;return function(Module){Module=Module||{};var c;c||(c=typeof Module!=='undefined'?Module:{});var h,n;c.ready=new Promise(function(a,b){h=a;n=b;});var r=Object.assign({},c),t="";"undefined"!=typeof document&&document.currentScript&&(t=document.currentScript.src);_scriptDir&&(t=_scriptDir);0!==t.indexOf("blob:")?t=t.substr(0,t.replace(/[?#].*/,"").lastIndexOf("/")+1):t="";var aa=c.print||console.log.bind(console),u=c.printErr||console.warn.bind(console);Object.assign(c,r);r=null;var v;c.wasmBinary&&(v=c.wasmBinary);var noExitRuntime=c.noExitRuntime||!0;"object"!=typeof WebAssembly&&w("no native wasm support detected");var x,y=!1;function z(a,b,d,e){var f={string:function(l){var p=0;if(null!==l&&void 0!==l&&0!==l){var S=(l.length<<2)+1;p=A(S);B(l,C,p,S);}return p;},array:function(l){var p=A(l.length);D.set(l,p);return p;}};a=c["_"+a];var g=[],k=0;if(e)for(var m=0;m=d);)++e;if(16f?d+=String.fromCharCode(f):(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023));}}else d+=String.fromCharCode(f);}return d;}function G(a){return a?I(C,a):"";}function B(a,b,d,e){if(0=g){var k=a.charCodeAt(++f);g=65536+((g&1023)<<10)|k&1023;}if(127>=g){if(d>=e)break;b[d++]=g;}else{if(2047>=g){if(d+1>=e)break;b[d++]=192|g>>6;}else{if(65535>=g){if(d+2>=e)break;b[d++]=224|g>>12;}else{if(d+3>=e)break;b[d++]=240|g>>18;b[d++]=128|g>>12&63;}b[d++]=128|g>>6&63;}b[d++]=128|g&63;}}b[d]=0;}}function J(a){for(var b=0,d=0;d=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++b:b=2047>=e?b+2:65535>=e?b+3:b+4;}return b;}function K(a){var b=J(a)+1,d=L(b);d&&B(a,D,d,b);return d;}var M,D,C,N;function ba(){var a=x.buffer;M=a;c.HEAP8=D=new Int8Array(a);c.HEAP16=new Int16Array(a);c.HEAP32=N=new Int32Array(a);c.HEAPU8=C=new Uint8Array(a);c.HEAPU16=new Uint16Array(a);c.HEAPU32=new Uint32Array(a);c.HEAPF32=new Float32Array(a);c.HEAPF64=new Float64Array(a);}var O,ca=[],da=[],ea=[];function fa(){var a=c.preRun.shift();ca.unshift(a);}var P=0,Q=null,R=null;function w(a){if(c.onAbort)c.onAbort(a);a="Aborted("+a+")";u(a);y=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");n(a);throw a;}function T(a){return a.startsWith("data:application/octet-stream;base64,");}var U;U="data:application/octet-stream;base64,AGFzbQEAAAAByQZtYAR/fn9/AX5gA39/fwF/YAJ/fwF/YAJ/fwBgAX8Bf2AFf35/f38BfmADf39/AGABfwBgAXwBfGACf34BfmAEf39/fwF/YAJ/fgBgAn9/AX5gAn9+AX9gA39/fgF/YAN/fn8BfmABfgF/YAN/fn8AYAZ/fn9/f38BfmADf35/AX9gBX9/f39/AX9gBn9+fn9/fwF+YAN/fn4BfmAEf39/fwBgBH9/fn8Bf2ADf39/AX5gBH9/f38BfmAGf39/f39/AX9gBX9+fn5+AGABfwF+YAN/fn4Bf2ACfHwBfGABfgF+YAV/fn9+fwF/YAV/fn5/fwF+YAd/fn9+fn5/AX9gAABgBX9/f39/AGAEf35+fwBgBX9+fn5/AX9gB39/f39/f38Bf2AGf35/fn5/AX9gBH9+f34BfmACfn8Bf2AEf35+fwF/YAJ+fwBgCX9/f39/f39/fwF/YAR/fn5/AX5gBn9/f39/fwF+YAN/fn4AYAR/fn9/AX9gBX9+fn9/AGACfn4BfmAHf35/f39/fwF+YAF/AXxgA39/fgBgBH9+f38AYAR/fn9+AX9gBH9+fn4Bf2AEf39/fgF/YAh/f39/f39/fwF/YAd/f39/f39/AGACfH8BfGADfn9/AX9gA3x8fwF8YAR/f35/AGAEf35+fgF+YAABf2AGf3x/f39/AX9gAAF8YAV/fn9+fwF+YAF8AX5gAX4BfGAFf39+f38Bf2AGf39+fn5+AX9gBn9/f39/fwBgAn98AGAEf39+fwF+YAR/fn9+AGAFf39/f34BfmAHf35+fn9/fwF+YAR+fn5+AX9gCn9/f39/f39/f38Bf2AHf39/f39/fgF+YAd8f39/f39/AGADf39+AX5gBX9/f39/AX5gBX9+f39/AGAFf3x/f38BfmAGf35+fn5/AX9gBH98f38Bf2AGf35/f39/AX9gBX9/fn5/AX9gBX9+f39/AX9gBn9/fn5/fwF/YAV/fn5+fgF/YAJ/fwF8YAR/f35+AX9gBX9/fn5+AX5gB39/f35+fn8Bf2AEf39/fgF+YAJ8fwF/YAJ8fAF/YAh/fn5+fn9+fgF+YAN/fnwBfmAAAX5gAn5+AXxgA35+fgF/YAN/f3wAAkkMAWEBYQAXAWEBYgAkAWEBYwAKAWEBZABFAWEBZQADAWEBZgAGAWEBZwADAWEB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QgBSDwsgAactAAUhAiAAIAEQDCACQX9zQYABcUEHdg8LIANBB2tBbU0EQCABEEkiBUQAAAAAAAAAAGIgBb1C////////////AINCgYCAgICAgPj/AFRxDwsgACABEAxBASECCyACCwsAIAAgAUEAEKAECxkAIAAoAhAgARDoASIBRQRAIAAQyQELIAELPwEBfyMAQRBrIgIkAAJ/IAEgACgCEEcEQCACIAE2AgAgAEG8/QAgAhAVQX8MAQsgABARCyEAIAJBEGokACAACygBAX8jAEEQayICJAAgAiABOwEOIAAgAkEOakECEIoBGiACQRBqJAALCwAgACABQQEQ4gULxQoCBX8PfiMAQeAAayIFJAAgBEL///////8/gyEMIAIgBIVCgICAgICAgICAf4MhCiACQv///////z+DIg1CIIghDiAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgtCgICAgICAwP//AFQgC0KAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEKDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQogAyEBDAILIAEgC0KAgICAgIDA//8AhYRQBEAgAiADhFAEQEKAgICAgIDg//8AIQpCACEBDAMLIApCgICAgICAwP//AIQhCkIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQCABIAuEIQJCACEBIAJQBEBCgICAgICA4P//ACEKDAMLIApCgICAgICAwP//AIQhCgwCCyABIAuEUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyALQv///////z9YBEAgBUHQAGogASANIAEgDSANUCIGG3kgBkEGdK18pyIGQQ9rEHNBECAGayEGIAUpA1giDUIgiCEOIAUpA1AhAQsgAkL///////8/Vg0AIAVBQGsgAyAMIAMgDCAMUCIIG3kgCEEGdK18pyIIQQ9rEHMgBiAIa0EQaiEGIAUpA0ghDCAFKQNAIQMLIANCD4YiC0KAgP7/D4MiAiABQiCIIgR+IhAgC0IgiCITIAFC/////w+DIgF+fCIPQiCGIhEgASACfnwiCyARVK0gAiANQv////8PgyINfiIVIAQgE358IhEgDEIPhiADQjGIhCISQv////8PgyIDIAF+fCIUIA8gEFStQiCGIA9CIIiEfCIPIAIgDkKAgASEIgx+IhYgDSATfnwiDiASQiCIQoCAgIAIhCICIAF+fCIQIAMgBH58IhJCIIZ8Ihd8IQEgByAJaiAGakH//wBrIQYCQCACIAR+IhggDCATfnwiBCAYVK0gBCAEIAMgDX58IgRWrXwgAiAMfnwgBCAEIBEgFVStIBEgFFatfHwiBFatfCADIAx+IgMgAiANfnwiAiADVK1CIIYgAkIgiIR8IAQgAkIghnwiAiAEVK18IAIgAiAQIBJWrSAOIBZUrSAOIBBWrXx8QiCGIBJCIIiEfCICVq18IAIgAiAPIBRUrSAPIBdWrXx8IgJWrXwiBEKAgICAgIDAAINQRQRAIAZBAWohBgwBCyALQj+IIQMgBEIBhiACQj+IhCEEIAJCAYYgAUI/iIQhAiALQgGGIQsgAyABQgGGhCEBCyAGQf//AU4EQCAKQoCAgICAgMD//wCEIQpCACEBDAELAn4gBkEATARAQQEgBmsiB0GAAU8EQEIAIQEMAwsgBUEwaiALIAEgBkH/AGoiBhBzIAVBIGogAiAEIAYQcyAFQRBqIAsgASAHEKECIAUgAiAEIAcQoQIgBSkDMCAFKQM4hEIAUq0gBSkDICAFKQMQhIQhCyAFKQMoIAUpAxiEIQEgBSkDACECIAUpAwgMAQsgBEL///////8/gyAGrUIwhoQLIAqEIQogC1AgAUIAWSABQoCAgICAgICAgH9RG0UEQCAKIAJCAXwiASACVK18IQoMAQsgCyABQoCAgICAgICAgH+FhFBFBEAgAiEBDAELIAogAiACQgGDfCIBIAJUrXwhCgsgACABNwMAIAAgCjcDCCAFQeAAaiQAC2oBAn8CQCAAKALYAiIDRQ0AIAAoAuACIgQgACgC3AJODQAgACgC6AIgAUsNACAAKALkAiACRg0AIAMgBEEDdGoiAyACNgIEIAMgATYCACAAIAE2AugCIAAgBEEBajYC4AIgACACNgLkAgsLDAAgACgCQEF/ENADCyEAIAAgASACQoCAgIAwIAMgBEECEOMBIQIgACABEAwgAgsZACABBEAgACABQRBrrUKAgICAkH+EEAwLC28BAn8gAUIgiKciAyABpyICQQBIckUEQCACEJUBDwsgA0F4RgRAIAAgACgCECACENYCEBkPC0EAIQIgACABEJgEIgEQDQR/QQAFIAFCgICAgHCDQoCAgICAf1EEQCAAIAEQmAIPCyAAIAGnEKUECwvrAQICfwF+QoCAgIDgACEDIAAoAhQEfkKAgICA4AAFIAAoAgQhASAAKAIIIgJFBEAgACgCACABEBogAEEANgIEIAAoAgBBLxAyDwsgACgCDCACSgRAIAAoAgAoAhAgASACIAAoAhAiAXQgAWtBEWoQ5wEiAUUEQCAAKAIEIQELIAAgATYCBAsgASAAKAIQIgIEfyACBSABIAAoAghqQQA6ABAgACgCEAtBH3StIAEpAgRC/////3eDhCIDNwIEIAEgA0KAgICAeIMgADUCCEL/////B4OENwIEIABBADYCBCABrUKAgICAkH+ECwsPACAAKAJAQYACaiABEB4LSwECfyABQoCAgIBwWgR/IAGnIgMvAQYiAkENRgRAQQEPCyACQSlGBEAgAygCIC0AEA8LIAAoAhAoAkQgAkEYbGooAhBBAEcFQQALCxAAIAAgACgCKCkDCEEBEFMLFAEBfiAAIAEQLiECIAAgARAMIAILcgEBfwJ/IAAoAggiAiAAKAIMTgRAQX8gACACQQFqIAEQ1QINARoLAkAgACgCEARAIAAgACgCCCICQQFqNgIIIAAoAgQgAkEBdGogATsBEAwBCyAAIAAoAggiAkEBajYCCCACIAAoAgRqIAE6ABALQQALCywBAX8jAEEQayIDJAAgAyACNgIMIABB3ABqQYABIAEgAhDZAhogA0EQaiQACygBAX8CQCAAQoCAgIBwVA0AIAEgAKciAS8BBkcNACABKAIgIQILIAILKAAgACACQTAgAkEAEBQiAhANBEAgAUIANwMAQX8PCyAAIAEgAhCwAQsNACAAIAEgAkEAEKoDC38BA38gACEBAkAgAEEDcQRAA0AgAS0AAEUNAiABQQFqIgFBA3ENAAsLA0AgASICQQRqIQEgAigCACIDQX9zIANBgYKECGtxQYCBgoR4cUUNAAsgA0H/AXFFBEAgAiAAaw8LA0AgAi0AASEDIAJBAWoiASECIAMNAAsLIAEgAGsLFQAgACgCACAAKAIEEBogAEEANgIECwoAIABBMGtBCkkLIwECfyAAKAIAIgEgACgC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EBAPCyAAIAJBOWtB/wFxEBAPCyAAIAJBNWtB/wFxEBAPCyAAIAJBMWtB/wFxEBAPCyAAIAJBLWtB/wFxEBAPCyAAIAJBKWtB/wFxEBAPCyAAIAJBJWtB/wFxEBAPCyAAIAJBIWtB/wFxEBAPCyAAIAJBHWtB/wFxEBAPCyACQf8BSw0BAkACQAJAIAFB2ABrDgMAAQIECyAAQcABEBAMBQsgAEHBARAQDAQLIABBwgEQEAwDCyABQSJGDQELIAAgAUH/AXEQECAAIAJB//8DcRAxDwsgACACQRRrQf8BcRAQDwsgACACQf8BcRAQCxsBAX8gACABEDsEf0EABSAAQak2QQAQFkF/CwsZAQF/IAEgAhBAIgNFBEAgACACEJwDCyADCyYBAX8jAEEQayICJAAgAkEANgIMIABBASABQQAQqwMgAkEQaiQACxkAIAAoAhAgARCcAiIBRQRAIAAQyQELIAELbQEBfyMAQYACayIFJAAgBEGAwARxIAIgA0xyRQRAIAUgAUH/AXEgAiADayICQYACIAJBgAJJIgEbEEsaIAFFBEADQCAAIAVBgAIQZyACQYACayICQf8BSw0ACwsgACAFIAIQZwsgBUGAAmokAAsPACAAKAJAQYACaiABEBALbwIBfgF/IAAhBAJAAkAgARASDQAgACABQTsgAUEAEBQiAxANBEAgAw8LIAMQIg0BIAAgAxAMIAAgARCPAyIEDQBCgICAgOAADwsgBCgCKCACQQN0aikDABAPIQMLIAAgAyACEFMhASAAIAMQDCABCzEAIAAgASACQoCAgIAIfEL/////D1gEfiACQv////8PgwUgArkQFwsgA0GHgAEQzQILEAAgACAANgIEIAAgADYCAAt1AQF+IAAgASAEfiACIAN+fCADQiCIIgIgAUIgiCIEfnwgA0L/////D4MiAyABQv////8PgyIBfiIFQiCIIAMgBH58IgNCIIh8IAEgAn4gA0L/////D4N8IgFCIIh8NwMIIAAgBUL/////D4MgAUIghoQ3AwALUAEBfgJAIANBwABxBEAgASADQUBqrYYhAkIAIQEMAQsgA0UNACACIAOtIgSGIAFBwAAgA2utiIQhAiABIASGIQELIAAgATcDACAAIAI3AwgLYgACQAJAIAFBAEgNACAAKAKsAiABTA0AIAAoAqQCIAFBFGxqIgAg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GnZxIAAgBnFyEJ8DGyEHDAILIAAgBkHG0QAQeSEHDAELQX8hBwsgCkEQaiQAIAcLTAECfyMAQRBrIgMkAAJAIAFBgIABcUUEQCABQYCAAnFFDQEgABD7AUUNAQsgA0EANgIMIABBBCACQQAQqwNBfyEECyADQRBqJAAgBAvMAQECfwJAIAFCgICAgHBaBEAgAachAwNAAkAgAy0ABUEEcUUNACAAKAIQKAJEIAMvAQZBGGxqKAIUIgRFDQAgBCgCEEUNACAAIAOtQoCAgIBwhBAPIgEgAiAEKAIQERMAIQIgACABEAwgAg8LIAOtQoCAgIBwhBAPIQEgAEEAIAMgAhBPIQQgACABEAwgBA0CAkAgAy8BBkEVa0H//wNxQQhLDQAgACACEKUDIgRFDQAgBEEfdQ8LIAMoAhAoAiwiAw0ACwtBACEECyAECxoAIAAgASACQQBOBH4gAq0FIAK4EBcLEKEBCwsAIABB/////wdxC8cJAgR+BH8jAEHwAGsiCiQAIARC////////////AIMhBQJAAkAgAVAiCSACQv///////////wCDIgZCgICAgICAwP//AH1CgICAgICAwICAf1QgBlAbRQRAIANCAFIgBUKAgICAgIDA//8AfSIIQoCAgICAgMCAgH9WIAhCgICAgICAwICAf1EbDQELIAkgBkKAgICAgIDA//8AVCAGQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQQgASEDDAILIANQIAVCgICAgICAwP//AFQgBUKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCEEDAILIAEgBkKAgICAgIDA//8AhYRQBEBCgICAgICA4P//ACACIAEgA4UgAiAEhUKAgICAgICAgIB/hYRQIgkbIQRCACABIAkbIQMMAgsgAyAFQoCAgICAgMD//wCFhFANASABIAaEUARAIAMgBYRCAFINAiABIAODIQMgAiAEgyEEDAILIAMgBYRQRQ0AIAEhAyACIQQMAQsgAyABIAEgA1QgBSAGViAFIAZRGyIMGyEFIAQgAiAMGyIIQv///////z+DIQYgAiAEIAwbIgdCMIinQf//AXEhCyAIQjCIp0H//wFxIglFBEAgCkHgAGogBSAGIAUgBiAGUCIJG3kgCUEGdK18pyIJQQ9rEHMgCikDaCEGIAopA2AhBUEQIAlrIQkLIAEgAyAMGyEDIAdC////////P4MhBCALRQRAIApB0ABqIAMgBCADIAQgBFAiCxt5IAtBBnStfKciC0EPaxBzQRAgC2shCyAKKQNYIQQgCikDUCEDCyAEQgOGIANCPYiEQoCAgICAgIAEhCECIAZCA4YgBUI9iIQhBCADQgOGIQEgByAIhSEDAkAgCSALRg0AIAkgC2siC0H/AEsEQEIAIQJCASEBDAELIApBQGsgASACQYABIAtrEHMgCkEwaiABIAIgCxChAiAKKQMwIAopA0AgCikDSIRCAFKthCEBIAopAzghAgsgBEKAgICAgICABIQhByAFQgOGIQYCQCADQgBTBEBCACEDQgAhBCABIAaFIAIgB4WEUA0CIAYgAX0hBSAHIAJ9IAEgBlatfSIEQv////////8DVg0BIApBIGogBSAEIAUgBCAEUCILG3kgC0EGdK18p0EMayILEHMgCSALayEJIAopAyghBCAKKQMgIQUMAQsgASAGfCIFIAFUrSACIAd8fCIEQoCAgICAgIAIg1ANACAFQgGDIARCP4YgBUIBiISEIQUgCUEBaiEJIARCAYghBAsgCEKAgICAgICAgIB/gyEBIAlB//8BTgRAIAFCgICAgICAwP//AIQhBEIAIQMMAQtBACELAkAgCUEASgRAIAkhCwwBCyAKQRBqIAUgBCAJQf8AahBzIAogBSAEQQEgCWsQoQIgCikDACAKKQMQIAopAxiEQgBSrYQhBSAKKQMIIQQLIARCPYYgBUIDiIQiAiAFp0EHcSIJQQRLrXwiAyACVK0gBEIDiEL///////8/gyALrUIwhoQgAYR8IQQCQCAJQQRGBEAgBCADQgGDIgEgA3wiAyABVK18IQQMAQsgCUUNAQsLIAAgAzcDACAAIAQ3AwggCkHwAGokAAvJBQEFfyMAQeAAayIDJAAgAyABNgJcAkACQAJAAkACQAJAAkACQAJAAkACQANAIAJBFGwiBCADakEUayEFA0ACQCADIAMoAlwiAUEEajYCXAJAAkACQAJAAkAgASgCACIGDggAAQIDAwMECAULIAJBBE4NECADIAFBCGo2AlwgASgCBCEBIAMgBGoiBCAAKAIMIAAoAhAQiAEgAkEBaiECIAQgARC2BEUNBgwJCyACQQRODQ4gAyABQQhqNgJcIAEoAgQhASADIARqIgQg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A0EIaiACEI4ERQRAQQAhBCABIAMpAwgiAkKAgICAgICAEFoEfiAAQb8OEGtBfyEEQgAFIAILNwMACyADQRBqJAAgBAsNACAAIAEgAhAPEM4FC8wBAgF/AXwCfwNAAkACQAJ/AkACQCACEFYOCAAAAAAEBAQBBAsgAqcMAQsgAhBJIgS9IgJCNIinQf8PcSIDQZ0ISw0BIASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyEAQQAMAwtBACEAQQAgA0HSCEsNAhpBACACQv////////8Hg0KAgICAgICACIQgA0GTCGuthkIgiKciAGsgACACQgBTGyEAQQAMAgsgACACEKABIgIQDUUNAAtBACEAQX8LIQMgASAANgIAIAMLCwAgACABIAIQkwILLwEBfyMAQdAAayIDJAAgAyAAIANBEGogARCJATYCACAAIAIgAxAWIANB0ABqJAALLAEBfyAAKAIQIgEtAIgBRQRAIAFBAToAiAEgAEHaC0EAEFAgAUEAOgCIAQsLDQAgACABIAEQQxCtAwsWACAAIAEgAiADIAQgBSAAKQMwEIsCCxsAIAAgAUH/AXEQECAAIAIgACgCBGtBBGsQHguOAQECfyMAQRBrIgIkAAJ/IAEEQCAAQSBqIAAgAEHBAGtBGkkbIABB/wBNDQEaIAJBBGogAEECELcDGiACKAIEDAELIABBIGsgACAAQeEAa0EaSRsgAEH/AE0NABogAkEEaiAAQQAQtwMhASACKAIEIgMgACADQf8ASxsgACABQQFGGwshACACQRBqJAAgAAtmAQF/An9BACAAKAIIIgIgAU8NABpBfyAAKAIMDQAaIAAoAhQgACgCACACQQNsQQF2IgIgASABIAJJGyIBIAAoAhARAQAiAkUEQCAAQQE2AgxBfw8LIAAgATYCCCAAIAI2AgBBAAsLVQECfwJAIAFCgICAgHBUDQAgAaciAy8BBiIEQQpLQQEgBHRB8AlxRXINACAAIAMpAyAQDCADIAI3AyAPCyAAIAIQDCABEA1FBEAgAEGszABBABAWCwsnACAAIAApA8ABIAIgARAPIgFBAxDsARogACABIAMQ7gUgACABEAwLIAEBfiAAIAAgAiABIANBBEEAEMsBIgUgASAEENABIAULjgIBAn8jAEEwayIFJAACfyACIAEoAgBPBEAgBSACNgIkIAUg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ARAOIAAgBi0AOBBuIABBDhAOIAAoAhBBPUcNACAAQREQDiAAQQYQDiAAQasBEA4gAEHpAEF/EB0hBCAAEBENBiAAQQ4QDiAAEGINBiAGKAIwIghBtgFHIAhBPEdxRQRAIAAgBigCNBCtAQsgACAEECALIAAgBigCMCAGKAIsIAYoAjQgBigCPEEBIAwQ1AELIAAoAhBB3QBGDQAgB0Glf0YEQEHOzAAhCAwECyAAQSwQMEUNAQwFCwsgAEGDARAOIAAoAkAQqgEgABARDQMLAkAgBUUNACAAKAIQQT1HDQBBfyEHIABB6wBBfxAdIQEgABARDQQgACAKECAgAwRAIABBDhAOCyAAEGINBCAAQesAIAsQHRogACABECBBASEHDAQLIANFBEAgAEGAOUEAEBUMAwsgACgCQCgCgAIgDWpBsQEgDiANaxBLGiAAKAJAKAKkAiAKQRRsaiIAIAAoAgBBAWs2AgBBACEHDAMLIAAgCEEAEBUMAQsgACgCACAGKAI0EBMLQX8hBwsgBkFAayQAIAcLKwAgACgCQCgCpAFBAE4EQCAAQQYQDiAAQdkAEA4gACAAKAJALwGkARAYCwsSACAAQYN/RiAAQdUAakEuSXILEwAgACABIAIgAyAEQQBBABCKAgusAQIBfwF+IAApAgQiBKdB/////wdxIQMCQAJAIARCgICAgAiDUEUEQCACIAMgAiADShshAyAAQRBqIQADQCACIANGDQIgACACQQF0ai8BACABRg0DIAJBAWohAgwACwALIAFB/wFLDQAgAiADIAIgA0obIQMgAEEQaiEAIAFB/wFxIQEDQCACIANGDQEgACACai0AACABRg0CIAJBAWohAgwACwALQX8hAgsgAguNAQEBfyMAQRBrIgMkACADIAI3AwgCQCAAIAFBhgEgAUEAEBQiAhANDQAgACACEDsEQCAAIAIgAUEBIANBCGoQNiICEA0NASACECINASACECgNASAAIAIQDCAAQco8QQAQFkKAgICA4AAhAgwBCyAAIAIQDCAAIAFBASADQQhqEJAFIQILIANBEGokACACC6MBAgN/AX4gAEEQaiECIAEoAgAiBEEBaiEDAkAgACkCBCIFQoCAgIAIg1BFBEAgAiAEQQF0ai8BACIAQYD4A3FBgLADRyADIAWnQf////8HcU5yDQEgAiADQQF0ai8B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BiAHQQhrIggpAwA3AwAMyQELIAkgB0EYayIGKQMAEAwgBiAHQRBrIgYpAwA3AwAgBiAHQQhrIggpAwA3AwAMyAELIAcgB0EIaykDABAPNwMAIAdBCGohCAzHAQsgByAHQRBrKQMAEA83AwAgByAHQQhrKQMAEA83AwggB0EQaiEIDMYBCyAHIAdBGGspAwAQDzcDACAHIAdBEGspAwAQDzcDCCAHIAdBCGspAwAQDzcDECAHQRhqIQgMxQELIAcgB0EIayIGKQMANwMAIAYgB0EQaykDABAPNwMAIAdBCGohCAzEAQsgByAHQQhrIgYpAwAiATcDACAGIAdBEGsiBikDADcDACAGIAEQDzcDACAHQQhqIQgMwwELIAcgB0EIayIGKQMAIgE3AwAgB0EQayIIKQMAIScgCCAHQRhrIggpAwA3AwAgBiAnNwMAIAggARAPNwMAIAdBCGohCAzCAQsgByAHQQhrIgYpAwAiATcDACAHQRBrIggpAwAhJyAIIAdBGGsiCCkDADcDACAGICc3AwAgCCAHQSBrIgYpAwA3AwAgBiABEA83AwAgB0EIaiEIDMEBCyAHQRBrIgYpAwAhASAGIAdBGGsiBikDADcDACAGIAE3AwAMvwELIAdBGGsiBikDACEBIAYgB0EQayIGKQMANwMAIAdBCGsiCCkDACEnIAggATcDACAGICc3AwAMvgELIAdBIGsiBikDACEBIAYgB0EYayIGKQMANwMAIAdBEGsiCCkDACEnIAggB0EIayIIKQMANwMAIAYgJzcDACAIIAE3AwAMvQELIAdBKGsiBikDACEBIAYgB0EgayIGKQMANwMAIAdBGGsiCCkDACEnIAggB0EQayIIKQMANwMAIAYgJzcDACAIIAdBCGsiBikDADcDACAGIAE3AwAMvAELIAdBCGsiBikDACEBIAYgB0EQayIGKQMANwMAIAdBGGsiCCkDACEnIAggATcDACAGICc3AwAMuwELIAdBEGsiBikDACEBIAYgB0EYayIGKQMANwMAIAdBIGsiCCkDACEnIAggATcDACAGICc3AwAMugELIAdBEGsiBikDACEBIAYgB0EYayIGKQMANwMAIAdBIGsiCCkDACEnIAggB0EoayIIKQMANwMAIAYgJzcDACAIIAE3AwAMuQELIAdBCGsiBikDACEBIAYgB0EQayIG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gIB4RiABQv////8PVnJFBEAgCCABQgF9Qv////8PgzcDAAwoCyARIAEQDzcDGCAJICFBjgEQkgINLCAJIAggESkDGBAfDCcLIAdBCGsiCCkDACIBQv////8PWARAIAggAUL/////D4U3AwAgByEIDCgLIAchCCMAQRBrIgokACAJIApBDGogB0EIayINKQMAEMYBIQwgDUKAgICAMCAKNQIMQv////8PhSAMGzcDACAKQRBqJABBf0EAIAwbRQ0nDCsLIAdBCGsiCCkDACIBIAdBEGsiCikDACInhEL/////D1gEQCAKICenIAGndK03AwAMJwsgCSAHQaABEMgCRQ0mDCoLIAdBCGsiCCkDACIBIAdBEGsiCikDACInhEL/////D1gEQCAKAn4gJ6cgAad2IgZBAE4EQCAGrQwBCyAGuBAXCzcDAAwmCyMAQRBrIgokACAHQQhrIg0pAwAhAQJ/AkAgCSAKQQxqIAdBEGsiDCkDABDpAwRAIAkgARAMDAELIAkgCkEIaiABEOkDDQAgDAJ+IAooAgwgCigCCHYiDEEATgRAIAytDAELIAy4EBcLNwMAQQAMAQsgDEKAgICAMDcDACANQoCAgIAwNwMAQX8LIQwgCkEQaiQAIAxFDSUMKQsgB0EIayIIKQMAIgEgB0EQayIKKQMAIieEQv////8PWARAIAogJ6cgAad1rTcDAAwlCyAJIAdBoQEQyAJFDSQMKAsgB0EIayIIKQMAIgEgB0EQayIKKQMAIieEQv////8PWARAIAogASAngzcDAAwkCyAJIAdBrQEQyAJFDSMMJwsgB0EIayIIKQMAIAdBEGsiCikDAIQiAUL/////D1gEQCAKIAE3AwAMIwsgCSAHQa8BEMgCRQ0iDCYLIAdBCGsiCCkDACIBIAdBEGsiCikDACInhEL/////D1gEQCAKIAEgJ4VC/////w+DNwMADCILIAkgB0GuARDIAkUNIQwlCyAHQQhrIggpAwAiASAHQRBrIgopAwAiJ4RC/////w9YBEAgCiAnpyABp0itQoCAgIAQhDcDAAwhCyAJIAdBowEQlgNFDSAMJAsgB0EIayIIKQMAIgEgB0EQayIKKQMAIieEQv////8PWARAIAogJ6cgAadMrUKAgICAEIQ3AwAMIAsgCSAHQaQBEJYDRQ0fDCMLIAdBCGsiCCkDACIB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ACACAn9BACACKAIQIgFBO0YNABpBACABQf0ARg0AGkEAIAIoAjANABogAhCZAQ0dQQELEPYCIAIQvQENHAweCyACEBENGyACKAIwBEAgAkGIEEEAEBUMHAsgAhCZAQ0bIAJBLxAOIAIQvQFFDRwMGwsgAhARDRogAhCFARogAhDWASACEIgCDRogAkHpAEF/EB0hACACIAIoAkAtAG5Bf3NBAXEiARDxAQ0aAkAgAigCEEGvf0cEQCAAIQMMAQsgAkHrAEF/EB0hAyACEBENGyACIAAQICACIAEQ8QENGwsgAiADECAMFwsgAhA1IQAgAhA1IQEgAigCQCAHQRBqIAsgASAAQQAQqwEgAhARDRkgAhDWASACIAAQICACEIgCDRkgAkHpACABEB0aIAIQuAINGSACQesAIAAQHRogAiABECAgAigCQBCqAQwaCyACEDUhACACEDUhASACEDUhAyACKAJAIAdBEGogCyABIABBABCrASACEBENGCACIAMQICACENYBIAIQuAINGCACIAAQICACQbp/EDANGCACEIgCDRggAigCEEE7RgRAIAIQEQ0ZCyACQeoAIAMQHRogAiABECAgAigCQBCqAQwZCyACEBENFyACENYBQQAhASAHQQA2AgwCQCACKAIQIgBBWEcEQCAAQShHDQEgAiAHQQxqQQAQqQEaDAELIAIoAkAtAGxBAnFFBEAgAkHwIUEAEBUMGQsgAhARDRhBASEBCyACQSgQMA0XIActAAxBAXFFBEAgASEEIwBBQGoiBSQAIAIoAgAhDSACKAJAIg4oArwBIRAgAhA1IQMgAhA1IREgAhA1IRIgAhA1IRMgAhCFARpBASEIIAIoAkAgBUEQaiALIBIgA0EBEKsBIAUgEDYCKCACQesAQX8QHSEUIAIoAkAoAoQCIQkgAiATECAgAigCECEAQVEhAUF/IQoCQAJAAkACQAJAAkACQAJAAkAgAkEEENYDDgIAAQgLIABBSUYhDCAAQVFGIgEhCCABIABBsX9GckUgAEFJR3ENASAAIQELIAIQEQ0EAkAgAigCECIAQfsARiAAQdsARnJFBEAgAEGDf0YEQCACKAIoRQ0CCyACQZLfAEEAEBUMBgtBASEIIAIgAUEAQQFBf0EAENUBQQBIDQcgBUEANgI8DAMLIAUgDSACKAIgEBkiBjYCPCACEBEE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/wFxakEBayEGIAoLIQcgDiAPaiIOIBBNDQALCyAJQRBqJAAgBSAAIAgoAkAQogQiBkHt7wAgBhs2AhAgBUHIAGpBlyggBUEQahCEAiAAIAYQNyAEQX9HBEAgBSAENgIAIAVByABqQYHjACAFEIQCCyAFQcgAakEpEBAMAQtBACEDIAVByABqQcP3AEEAEIQCCyAFQcgAakEKEBAgA0UNAAsLIAVByABqQQAQEEKAgICAICERIAUoAlRFBEAgACAFKAJIEHYhEQsgBUHIAGoQlwEgACABQTUgEUEDEBsaIAVB4ABqJAAL7AECAn8BfiMAQRBrIgMkACABQQhrIgQpAwAhBQJ/AkAgACADQQxqIAFBEGsiASkDABDGAQRAIAAgBRAMDAELIAAgA0EIaiAFEMYBDQAgAQJ/AkACQAJAAkACQAJAIAJBrQFrDgMBAwIACwJAIAJBoAFrDgIFAAQLIAMoAgwgAygCCHUMBQsgAygCCCADKAIMcQwECyADKAIIIAMoAgxyDAMLIAMoAgggAygCDHMMAgsQAQALIAMoAgwgAygCCHQLrTcDAEEADAELIAFCgICAgDA3AwAgBEKAgICAMDcDAEF/CyEAIANBEGokACAAC+oEAgd/An4CQCABQoCAgIBwg0KAgICAkH9SBEBCgICAgOAAIQogACABED0iARANDQELAkAgAkKAgICAcINCgICAgJB/UQ0AQoCAgIDgACEKIAAgAhA9IgIQDUUNACABIQIMAQsCQCACpyIFKQIEIgpC/////weDUA0AAkAgAaciAygCAEEBRw0AIAMpAgQgCoVCgICAgAiDQgBSDQAgACgCECADEKMEIAUoAgQiBkH/////B3EiCCADKAIEIgRB/////wdxIgdqIAZBH3Z0IARBH3YiCWtBEWpJDQAgA0EQaiEEIAkEQCAEIAdBAXRqIAVBEGogBkEBdBAlGiADIAMpAgQiCiAFKQIEfEL/////B4MgCkKAgICAeIOENwIEDAILIAQgB2ogBUEQaiAIECUaIAMgAykCBCIKIAUpAgR8Qv////8HgyILIApCgICAgHiDhDcCBCAEIAunakEAOgAADAELAn4CQAJAIAUpAgQiCqdB/////wdxIAMpAgQiC6dB/////wdxaiIGQYCAgIAETwRAIABBmsMAQQAQUAwBCyAAIAYgCiALhKciCEEfdhD9ASIHDQELQoCAgIDgAAwBCyAHQRBqIQQCQCAIQQBOBEAgBCADQRBqIAMoAgRB/////wdxECUiBCADKAIEQf////8HcWogBUEQaiAFKAIEQf////8HcRAlGiAEIAZqQQA6AAAMAQsgBCADIAMoAgRB/////wdxEJQFIAQgAygCBEEBdGogBSAFKAIEQf////8HcRCUBQsgB61CgICAgJB/hAshCiAAIAEQDAwBCyABIQoLIAAgAhAMIAoLQAAgAAJ/An8gAwRAIAEoAiQgAkEDdGpBBGoMAQtBACABKAIgIgNFDQEaIAMgAS8BKCACakEEdGoLKAIACxDiAQsLACAAQZ8JQQAQFguBDAINfwR+IwBBgAFrIgskACALIQUjAEHgAWsiCCQAAkAgAb0iEkKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIBJC////////////AINCgYCAgICAgPj/AFoEQCAFQc7CuQI2AAAMAgsgAUQAAAAAAAAAAGMEQCAFQS06AAAgBUEBaiEFCyAFQdkLLQAAOgAIIAVB0QspAAA3AAAMAQsCQCAERQRAAn4gAZlEAAAAAAAA4ENjBEAgAbAMAQtCgICAgICAgICAfwsiE0KAgICAgICAEH1CgYCAgICAgGBUIBO5IAFicg0BIAhB1QFqIgNBADoAACATIBNCP4ciEoUgEn0hEiACrSEUA0AgAyICQQFrIgNBMEHXACASIBIgFIAiFSAUfn2nIgRBCkgbIARqOgAAIBIgFFohBCAVIRIgBA0ACyATQgBTBEAgAkECayIDQS06AAALIAUgAxCBBgwCC0QAAAAAAAAAACABIAFEAAAAAAAAAABhGyEBIARBAkcNACMAQYACayICJAACQCACQYABaiABIANBAWoiBEEAEIcDIAJqLQB/QTVHDQAgAkGAAWogASAEQYAIEIcDIgYgAiABIARBgBAQhwNHDQAgAkGAAWogAiAGEHcNAEGACEGAECACLQCAAUEtRhshCQsgBSABIAMgCRCHAxogAkGAAmokAAwBCyADIQIgCEEIaiENIAhBDGohDiAIQRBqIQwjAEGQA2siByQAAkAgBEEDcUEBRiIPRQRAQREhAkEBIQoDQCACIApNBEBBACEJDAMLIAEgAiAKakEBdiIJIA0gDiAMQQAgB0GQAmoiBhC+AiAGEPoFIAFhBEAg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AgAiAEECdGooAgAiAiABRg0BIAJBDGohAiAADQALQdX1AEG+4wBB+BRBrQ4QAAALIAAL8wYCBn8BfgJAAkACQAJ/IAJBAkwEQCACIAEpAgQiCUI+iKdGBEAgACABENYCIgMQ8gFFDQUgASABKAIAQQFrNgIAIAMPCyAAKAI0IAAoAiRBAWsgASACEOUFQf////8DcSIHcSIIQQJ0aiEDIAmnQf////8HcSEFA0AgAiADKAIAIgNFDQIaAkAgACgCOCADQQJ0aigCACIEKQIEIglCIIinQf////8DcSAHRyAJQj6IpyACR3IgCadB/////wdxIAVHcg0AIAQgASAFEOQFDQAgAxDyAQ0EIAQgBCgCAEEBajYCAAwECyAEQQxqIQMMAAsACyACQQNHIQdBAwshBQJAIAAoAjwNAEEAIQNB0wEgACgCLEEDbEECbRBKIgRB/////wNLDQEgACAAKAI4IARBAnQQ5wEiBkUNASAAKAIsIgJFBEAgAEEQEJwCIgJFBEAgACAGECEMAwsgAkEBNgIAIAIgAikCBEKAgICAgICAgECENwIEIAYgAjYCACAAIAAoAihBAWo2AihBASECCyAAIAI2AjwgACAGNgI4IAAgBDYCLCAEQQFrIQYDQCACIARPDQEgACgCOCACQQJ0akEAIAJBAWoiAyACIAZGGxDjBTYCACADIQIMAAsACwJAIAEEQCABKQIEIglC//////////8/WARAIAEgCSAFrUI+hoQ3AgQMAgsgACAJpyICQR91IAJB/////wdxIAJBH3Z0akERahDoASICRQRAQQAhAwwECyACQQE2AgAgAiACKQIEQv////93gyABKQIEQoCAgIAIg4QiCTcCBCACIAlCgICAgHiDIAEpAgRC/////weDhDcCBCACQRBqIAFBEGogASgCBCIDQR91IANB/////wdxIANBH3Z0akEBahAlGiAAIAEQpAQgAiEBDAELIABBEBDoASIBRQRAQQAPCyABQoGAgICAgICAgH83AgALIAAgACgCOCAAKAI8IgNBAnRqIgIoAgBBAXY2AjwgAiABNgIAIAEgAzYCDCABIAE1AgQgB61CIIaEIAWtQj6GhDcCBCAAIAAoAihBAWo2AiggBUEDRg0CIAEgACgCNCAIQQJ0aiIBKAIANgIMIAEgAzYCACAAKAIoIAAoAjBIDQIg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AgseACAAQTBrQQpJIABBX3FBwQBrQRpJciAAQd8ARnILrQEBA38gACgCQBoCQCAAKAIEIQMgACABEMYEDQBBBSADayEEA0AgACgCGCICLQAAQfwARwRAQQAPCyAAIAJBAWo2AhggACgCBCECIAAgA0EFEOsBBEAgABCsAkF/DwsgACgCACADakEJOgAAIAAoAgAgA2pBAWogAiAEahBdIABBB0EAELoBIQIgACABEMYEDQEgACgCACACaiAAKAIEIAJrQQRrEF0MAAsAC0F/C0gBAn8CQANAIAFBCkYNASABQQJ0QZLgAWovAQAgAEoNASABQQF0IQIgAUEBaiEBIAJBAXRBlOABai8BACAATA0AC0EBDwtBAAukAgEBfwJ/An8gAUH/AE0EQCAAIAE6AAAgAEEBagwBCwJAIAFB/w9NBEAgACABQQZ2QcABcjoAACAAIQIMAQsCfyABQf//A00EQCAAIAFBDHZB4AFyOgAAIABBAWoMAQsCQCABQf///wBNBEAgACABQRJ2QfABcjoAACAAIQIMAQsCfyABQf///x9NBEAgACABQRh2QfgBcjoAACAAQQFqDAELQQAgAUEASA0FGiAAIAFBHnZB/AFyOgAAIAAgAUEYdkE/cUGAAXI6AAEgAEECagsiAiABQRJ2QT9xQYABcjoAAAsgAiABQQx2QT9xQYABcjoAASACQQJqCyICIAFBBnZBP3FBgAFyOgAACyACIAFBP3FBgAFyOgABIAJBAmoLIABrCwskACAAQgA3AgAgACABNgIUIABCADcCCCAAIAJB4QIgAhs2AhALJwECfwJAIAAgAUEAEJsBIgMEQCADEJoBRQ0BIAAQdQtBfyECCyACC8kBAgN/AX4jAEEQayIFJAACQCAAIAFBAhBvIgEQDQ0AAkACQCACQQFHDQAgAykDACIHEJABRQ0AIAAgBUEMaiAHEA9BARDOAg0BIAAgAUEwAn4gBSgCDCICQQBOBEAgAq0MAQsgArgQFwsQSEEASA0BDAILIAJBACACQQBKGyECA0AgAiAERg0CIAAgASAEIAMgBEEDdGopAwAQDxCWAiEGIARBAWohBCAGQQBODQALCyAAIAEQDEKAgICA4AAhAQsgBUEQaiQAIAELEQAgACABIAIgAyAEIAUQywELDQAgAEEGQX9BBRDrBQt8AgJ+AX8gACACKQMA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CgIBBgYGBgYCAwAECyAApyEBDAULIACnQQAQ5QUhAQwECyAAp0HbGGwhAQwDCyAAp0HbGGy3DAELIAJBB0cNAUQAAAAAAAD4fyAAEEkiAyADvUL///////////8Ag0KAgICAgICA+P8AVhsLvSIAQiCIIACFp0HbGGwhAQsgASACcwsHACAAQQFxCy4BAX8gACAAIAEgACACEMoBIgIgAUEAEBQiARCmASEDIAAgARAMIAAgAhATIAMLEgAgAEEIdCAAQQh2ckH//wNxC1ABAX8gAEEgEC8iAgRAIAJBATYCACACQoCAgIDAAEKAgICAMCABGzcDGCACIAJBGGo2AhAgAiACLQAFQQFyOgAFIAAoAhAgAkEDEL4BCyACCwoAIAAoAgQgAEYLMgACQCAAIAIgAUEAQQAQJCICEA0NACACECINACAAIAIQDCAAEClCgICAgOAAIQILIAILCwAgACABIAIQxgELCwAgAEG2PEEAEBYLdQECfyMAQZABayIEJABB3PsAIQUCQAJAAkACQCABQQFqDgUDAgIAAQILQZ37ACEFDAELQdseIQULIAAgBEHQAGogAxCJASEBIAQgACAEQRBqIAIoAgQQiQE2AgQgBCABNgIAIAAgBSAEENMCCyAEQZABaiQAC2kBAn8jAEEQayIFJAAgBUEANgIIIAVCADcDACAAIAEgAiADIAQgBRChBSECA0AgBSgCACEBIAYgBSgCCE5FBEAgACABIAZBA3RqKAIEEBMgBkEBaiEGDAELCyAAIAEQGiAFQRBqJAAgAgseACABKAIAQQRHBEAgACABQQhqEIsDIAFBBDYCAAsLpQEBBX8jAEEQayIDJABBfyECAkAgACgCFA0AIAAoAgAgACgCBCABQQF0QRBqIANBDGoQtwEiBEUEQCAAEIoDDAELIARBEGohBSAAKAIIIQIgAygCDCEGA0AgAkEATEUEQCAFIAJBAWsiAkEBdGogAiAFai0AADsBAAwBCwsgAEEBNgIQIAAgBDYCBCAAIAZBAXYgAWo2AgxBACECCyADQRBqJAAgAgtUAQJ/IAAgASkDGCACECMgACABKQMAIAIQIwJAIAEoAjwiBEUNACABKAIgIQMDQCADIARPDQEgACADKQMAIAIQIyADQQhqIQMgASgCPCEEDAALAAsLGgEBfyABpygCICIDBEAgACADKQMA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BCQAAkACQCAAIARBCGogAUHiABCHASICRQ0AIAQpAwgiARASBEAgACACKQMAEJkEIQMMAgsgACABIAIpAwhBASACEDYiARANDQAgACABEC0iA0UEQEEAIQMMAgsgACACKQMAEKIBIgJBAEgNACACRQ0BIABB6iJBABAWC0F/IQMLIARBEGokACADDwsgAiACLQAFQf4BcToABUEBCy4BAX8gAKcpAyAiAEKAgICAcINCgICAgJB/UQR/IACnKAIEQf////8HcQVBAAsLCgAgACgCAEF8cQszACAAIAJBARD9ASIARQRAQoCAgIDgAA8LIABBEGogASACQQF0ECUaIACtQoCAgICQf4QLZQICfwF+QQQhAkKAgICAICEEAkACQAJAAkACQAJAIAEQViIDQQhqDgoDAgUFBQUFBQQBAAsgA0EHRg0DDAQLQQYhAgwCC0EFIQIMAQtBByECCyAAKAIoIAJBA3RqKQMAIQQLIAQLYAEBfCAAKQIEQv//////////P1gEQCABIAErAwhEAAAAAAAA8D8gACgCALciAqOgOQMIIAEgASsDECAAKAIEIgBBH3UgAEH/////B3EgAEEfdnRqQRFquCACo6A5AxALC+kGAQV/AkACQAJAAkACQAJAAkACQAJAIAEtAARBD3EOBgABBAIDBgULIAAgASgCECIHIAIRAwAgBxAqIQUDQCAHKAIgIANKBEACQCAFKAIERQ0AIAEoAhQgA0EDdGohBAJAAkACQAJAIAUoAgBBHnZBAWsOAwABAgMLIAQoAgAiBgRAIAAgBiACEQMACyAEKAIEIgRFDQMgACAEIAIRAwAMAwsgBCgCACIELQAFQQFxRQ0CIAAgBCACEQMADAILIAAgBBCbBCACEQMADAELIAAgBCkDACACECMLIANBAWohAyAFQQhqIQUMAQsLIAEvAQYiA0EBRg0GIAAoAkQgA0EYbGooAgwiA0UNBiAAIAGtQoCAgIBwhCACIAMREQAPCwNAIAEoAjggA0oEQCAAIAEoAjQgA0EDdGopAwAgAhAjIANBAWohAwwBCwsgASgCMCIBRQ0FIAAgASACEQMADwsgAS0ABUEBcUUNBSAAIAEoAhApAwAgAhAjDwsgASgCIARAIAAgAUEoaiACEO8DCyAAIAEpAxAgAhAjIAAgASkDGCACECMPCyABKAIsIgFFDQIgACABIAIRAwAPCxABAAsgAUHkAWohAyABQeABaiEHA0AgByADKAIAIgVHBEAgBUEIayEDQQAhBANAIAMoAiAgBEoEQAJAIAMoAhwgBEEUbGoiBigCCA0AIAYoAgQiBkUNACAAIAYgAhEDAAsgBEEBaiEEDAELCyAAIAMpA0AgAhAjIAAgAykDSCACECMgACADKQNgIAIQIyAAIAMpA2ggAhAjIAVBBGohAwwBCwsgACABKQPAASACECMgACABKQPIASACECMgACABKQOwASACECMgACABKQO4ASACECMgACABKQOoASACECNBACEDA0AgA0EIRgRAQQAhAwNAIAAoAkAgA0oEQCAAIAEoAiggA0EDdGopAwAgAhAjIANBAWohAwwBCwsgACABKQOYASACECMgACABKQOgASACECMgACABKQNQIAIQIyAAIAEpA0AgAhAjIAAgASkDSCACECMgACABKQM4IAIQIyAAIAEpAzAgAhAjIAEoAiQiAQRAIAAgASACEQMACwUgACABIANBA3RqKQNYIAIQIyADQQFqIQMMAQsLCw8LQZniAEG+4wBBjixB0joQAAALiAICAX4CfyMAQTBrIgQkAEHK5gAhBUKAgICA4AAhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQCABEFZBCGoOEAUGCQkJCQoEAAECAwkJCwgJCyAEIAE+AgAgBEEQaiIFQSBBnOMAIAQQVxoMCQsgAEEDQQIgAacbEDIhAwwJCyAAQQEQMiEDDAgLIABBxQAQMiEDDAcLIAAgAUEAEJsDIgEQDQRAIAEhAwwHCyAAIAEgAhCgBCEDIAAgARAMDAYLIAJFDQELIAEQDyEDDAQLIABBw8MAQQAQFgwDCyAAIAEQSUEKQQBBABDMAiEDDAILQbfmACEFCyAAIAUQdiEDCyAEQTBqJAAgAwutBAIIfwF+AkACQAJAAkACQCACQoCAgIBwg0KAgICAkH9SBEAgACACEC4iAhANRQ0BDAILIAIQDyECCyACpyIEQRBqIQcgBCkCBCIMp0H/////B3EhBgJAIAxCgICAgAiDUARAQQAhBANAIAQgBkZFBEAgBSAEIAdqLQAAQQd2aiEFIARBAWohBAwBCwsgBUUEQCAHIQQgAQ0EDAYLIAAgBSAGakEAEP0BIghFDQIgCEEQaiEEQQAhBQNAIAUgBkYN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C1QAIwBBEGsiAiQAIAAgAkEIaiADKQMAEEcEfkKAgICA4AAFIAIpAwhC////////////AINCgICAgICAgPj/AFatQoCAgIAQhAshASACQRBqJAAgAQv4AgIDfwN+IwBBMGsiCCQAIANCACADQgBVGyENIAVBAWshCiAFQQBMIQVCACEDA0ACQCADIA1RBEAgBCEMDAELQn8hDCAAIAIgAyAIQShqEIwBIglBAEgNAAJAIAlFDQAgBhASRQRAIAggCCkDKDcDACADIQsgA0KAgICACFoEQCADuRAXIQsLIAggAjcDECAIIAs3AwggCCAAIAYgB0EDIAgQJCILNwMoIAAgCCkDABAMIAAgCCkDCBAMIAsQDQ0CCwJAAkACQCAFDQAgACAIKQMoIgsQwgEiCUEASA0BIAlFDQAgACAIQSBqIAsQQUEASA0BIAAgASALIAgpAyAgBCAKQoCAgIAwQoCAgIAwENQEIgRCAFMNASAAIAsQDAwDCyAEQv////////8PUw0BIABBi8MAQQAQFiAIKQMoIQsLIAAgCxAMDAILIAAgASAEIAgpAygQcEEASA0BIARCAXwhBAsgA0IBfCEDDAELCyAIQTBqJAAgDAsMACAAQgAgAEIAVRsLKAACQCABEBJFBEAgARAoRQ0BCyAAIAEQPQ8LIAAgAUE4QQBBABC6AgujAgIGfwF+IwBBMGsiAiQAAkACQCADKQMAIgEQIkUNAEKAgICA4AAhCyAAIAEQmQQiA0EASA0BIANFBEAgAEHdygBBABAWDAILIAAgAkEsaiACQShqIAGnIglBAxCSAQ0BIAIoAiwhBiACKAIoIQdBACEDAkADQCADIAdHBEAgBiADQQN0aigCBCEIQYCCASEFAkAgBEUNACAAIAJBCGogCSAIEE8iCkEASA0DIApFDQAgAigCCCEFIAAgAkEIahBOQYCGAUGAggEgBUECcRshBQsgACABIAhCgICAgDBCgICAgDBCgICAgDAgBRB4QQBIDQIgA0EBaiEDDAELCyAAIAYgBxBmDAELIAAgBiAHEGYMAQsgARAPIQsLIAJBMGokACALC+sBAQF+AkACQCABECgEQCAAQek9EHYhBAwBCyABEBIEQCAAQf/gABB2IQQMAQsgACABECsiARANDQEgACABEMIBIgNBAEgEQCAAIAEQDEKAgICA4AAPCwJ/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RQRAIAUgAigCDCABGyEDIAYhAQwCCyADQQZrDgICAAYLIABBiNgAQQAQFQwECyACQShqIAQQwAFFDQEMAwsLIABBnzNBABAVDAELIABBxDNBABAVCyACQShqEEQgAkEQahBECyACQUBrJAAgCAszAQF/A0ACQCABQQBOBH8gASACRw0BQQEFQQALDwsgACgCzAEgAUEDdGooAgAhAQwACwALQwECfyAAKAKIASECQX8hAwJAA0AgAkEATA0BIAAoAoABIAJBAWsiAkEEdGooAgAgAUcNAAsgAkGAgICAAnIhAwsgAwuDAwEGfyABKAI4IQMCQAJAAkAgAS0AbkEBcQRAIANFBEBBry4hAyABKAJADQMLQdbVACEDIAJBOkYgAkHNAEZyDQJBACECIAEoAogBIgNBACADQQBKGyEEA0AgAiAERg0CQbHVACEDIAEoAoABIAJBBHRqKAIAIgZBOkYgBkHNAEZyDQMgAkEBaiECDAALAAsgA0UNACABLwFsIgJBggxGDQAgAkEIdkEDaw4EAAICAAILQQAhBCABKAKIASICQQAgAkEAShshCEEAIQMDQCADIAhGDQJBACECAkAgASgCgAEiBSADQQR0aigCACIGRQ0AA0ACQCACIANGBEBBACECIAEoAnwiBUEAIAVBAEobIQUDQCACIAVGDQQgBiABKAJ0IAJBBHRqIgcoAgBGBEAgBygCBEUNAwsgAkEBaiECDAALAAsgAkEEdCEHIAJBAWohAiAFIAdqKAIAIAZHDQELC0GvEiEDDAILIANBAWohAwwACwALIAAgA0EAEBVBfyEECyAEC2EBAX8gAEG2ARAOIABB9gAQHCAAIAAoAkAvAbwBEBggAEEREA4gAEHpAEF/EB0hASAAQbYBEA4gAEEIEBwgAEEAEBggAEEbEA4gAEEkEA4gAEEAEBggACABECAgAEEOEA4LUQECf0F/IQJBASEDA0ACQCAAIAEQuwENACADRQRAIAAoAkBBfzYCmAILIAAoAhBBLEcEQEEAIQIMAQsgABARDQAgAEEOEA5BACEDDAELCyACCykBAX4gACABEMoBIgFFBEBCgICAgOAADwsgACABEDIhAiAAIAEQEyACC9sCAQR/IwBBoAFrIgUkACABKAIAIQcgBUGAATYCCCAFIAVBEGo2AgwgBAR/IAVBIzoAEEEBBUEACyEE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DEEHEBsLIQogACAFEBMgB0EBaiEHIApBAE4NAAsMAQsgACAGIAgQZkEAIQYgACACEGAiDBANDQAgBCALNwMYIAQgDDcDECAAIAMgAUECIARBEGoQJCEBIAAgDBAMIAAgCxAMDAELIAAgBiAEKAIMEGYgACALEAxCgICAgOAAIQELIARBIGokACABC+sCAQN/IwBBQGoiAyQAAkAgACABEGMiARANDQACQCAAIANBIGogAaciBCgCBEH/////B3FBAmoQQg0AIANBIGpBIhA+DQAgA0EANgI8A0AgBCgCBEH/////B3EgAkoEQAJAAkACQAJAAkACQAJAAkACQAJAIAQgA0E8ahDbASICQQhrDgYFAgQBBgMACyACQSJGIAJB3ABGcg0GCyACQYBwcUGAsANHIAJBIE9xDQYgAyACNgIAIANBEGoiAkEQQcAPIAMQVxogA0EgaiACEI4BDQoMBwtB9AAhAgwEC0HyACECDAMLQe4AIQIMAgtB4gAhAgwBC0HmACECCyADQSBqQdwAED4NBCADQSBqIAIQPkUNAQwECyADQSBqIAIQwAENAwsgAygCPCECDAELCyADQSBqQSIQPg0AIAAgARAMIANBIGoQOSEBDAELIAAgARAMIANBIGoQREKAgICA4AAhAQsgA0FAayQAIAELbgEEf0F/IQZBfyACKAIAIgRBAXYgBGogBEGp1arVeksbIQUCQAJAIAMgASgCACIHRgRAIAAgBRAvIgBFDQIgACADIAQQJRoMAQsgACAHIAUQmgIiAEUNAQsgASAANgIAIAIgBTYCAEEAIQYLIAYLYQECfwNAIAAoAigiAUEATEUEQCAAIAFBAWsiATYCKCAAKAIAIAAoAgQgAUEDdGopAwAQDAwBCwsgACgCBCIBIABBCGoiAkcEQCAAKAIAIAEQGgsgAEEENgIsIAAgAjYCBAukBQILfwV+IwBBMGsiAiQAIAEpAyAhDyABKQMYIQ4gASkDCCENIAEpAwAhEAJ+AkACQCABKQMoIhEQngEEQCANEJ4BDQELIABB/MMAQQAQFgwBCyAAIAJBCGpBABBCGiACQQA2AiQCQCAOEBJFBEAgACACQSRqIA4Q3AENAQsgACACQShqIBAQ3AENACAAIAJBLGogASkDEBDHAUEASA0AIA2nIQcgAigCLCIKIAIoAihqIQsgEaciBCgC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CwsNACAAIAEgAkEAEN8BC0MAAnwgAb1CgICAgICAgPj/AINCgICAgICAgPj/AFEEQEQAAAAAAAD4fyAAmUQAAAAAAADwP2ENARoLIAAgARCCBgsLewEBfgJAAn4gBEEEcQRAQSYhAiAAIAEQYwwBC0ElIQIgACABECsLIgEQDQ0AIAAgAhCkASIFEA0NACAAQRAQLyICBEAgAkEANgIMIAIgBEEDcTYCCCACIAE3AwAgBSACEI0BIAUPCyAAIAUQDAsgACABEAxCgICAgOAAC5UBAgJ+AX8gACABEDIhAwJAIAEQXg0AQQAgACgCECgCOCABQQJ0aigCACkCBCICQoCAgICAgICAQINCgICAgICAgICAf1IgAkKAgICA8P///z+DUCACQv//////////v39WcRsNACACp0F/c0EfdkEBIAJC/////weDUBshBAsgBAR+IABBhOcAIANBgucAEL8BBSADCwvcAwEFfyAAQeAAaiIEEHEgAEHQAGohBSAAKAJUIQECQAJAA0AgASAFRwRAIAFBBGstAABBEE8NAiABKAIEIQIgACABQQhrIgNBBhCfBCADIAMtAARBD3FBEHI6AAQgAiEBIAMoAgANASADQQhqIgIQRiACIAQQTAwBCwsMAQtB+vQAQb7jAEHELEG6xgAQAAALIABB1ABqIQEgAEHQAGohAwJAAkADQCADIAEoAgAiAkcEQCACQQhrIgEoAgBBAEwNAiABIAEtAARBD3E6AAQgACABQQcQnwQgAkEEaiEBDAELCyAAQeQAaiEBIABB4ABqIQIDQCACIAEoAgAiAUcEQCAAIAFBCGtBCBCfBCABQQRqIQEMAQsLDAELQZfzAEG+4wBB5yxB7DsQAAALIAAiAkECOgBoIABB2ABqIQMgAEHgAGohBANAIAQgAigCZCIARwRAIABBCGshASAAQQRrLQAAQQ5xBEAgAUEIaiIAEEYgACADEEwFIAIgARDeBQsMAQsLIAJBADoAaCACKAJcIQACQAJAA0AgACADRwRAIABBBGstAABBDnENAiAAKAIEIQEgAiAAQQhrECEgASEADAELCyADEHEMAQtBv+0AQb7jAEGdLUGwJRAAAAsLpwEBBX8gAKciAygCECIBIAEoAhhBf3NBAnRBpH5yaigCACECIAEQKiEBA0AgAkUEQEEADwsgASACQQFrIgRB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AyACNgLIBQsgA0KOgICAcDcDgAEgA0GIBWogAygCkAUgA0GAAWoQLARAIAMoApQFIgJBAEgNFyADIAI2AsgFDBcLIAEgAygCtAUgAygCyAUQNCADQbAFakEAIAdrEMcDDBYLIANCjoCAgHA3A3AgA0GIBWogBCADQfAAahAsBEAgAygClAUiAkEASA0WIAMgAjYCyAUMFgsgA0Lp1IGAcDcDYCADQYgFaiAEIANB4ABqECwEQCAHQQBHIQgMDQsgASADKAK0BSADKALIBRA0IANBsAVqIAcQxwMgBCECDBkLIAkoAAEiB0H/AUoNDyABIAMoArQFIAMoAsgFEDQgA0GwBWoiAiAFQcUAa0H/AXEQECACIAdB/wFxEBAgBCECDBgLIAkoAAEhAiADQo6AgIBwNwOgASADQYgFaiAEIANBoAFqECwEQCAAIAIQEyADKAKUBSICQQBIDRQgAyACNgLIBQwUCyACQS9HDQ4gAEEvEBMgASADKAK0BSADKALIBRA0IANBsAVqQb8BEBAgBCECDBcLIANCyYCAgHA3A9gBIANC2Lb5gnA3A9ABIANBiAVqIAQiAiADQdABahAsDRYgA0F/NgLIASADQoGEkICQCTcDwAEgA0GIBWogAiADQcABahAsDRYgA0F/NgK4ASADQoaOqMiQCTcDsAEgA0GIBWogBCADQbABahAsDRYMDQsgA0KOgICAcDcDoAIgA0GIBWogBCADQaACahAsBEAgAygClAUiAkEASA0SIAMgAjYCyAUMEgsgA0KogICAcDcDkAIgA0GIBWogBCADQZACahAsBEACQCADKAKUBSICQQBIBEAgAygCyAUhAgwBCyADIAI2AsgFCyABIAMoArQFIAIQNCADQbAFakEpEBAMEgsgA0Lp1IGAcDcDgAJBACEIIANBiAVqIAQgA0GAAmoQLA0IIANCq4GAgHA3A/ABIANBiAVqIAQgA0HwAWoQLARAAkAgAygClAUiAkEASARAIAMoAsgFIQIMAQsgAyACNgLIBQsgASADKAK0BSACEDQgA0GwBWpB8AEQEAwSCyADQX82AugBIANCrIGAgJDNGjcD4AEgA0GIBWogBCADQeABahAsRQ0MAkAgAygClAUiBUEASARAIAMoAsgFIQUMAQsgAyAFNgLIBQsgASADKAK0BSAFEDQgA0GwBWpB8AEQECAD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ACAKIAIgCmoiBDYCFCAKIAEoAoQCIgI2AhggBCABKAKAAiACECUaIAAgASgCgAIQGiABQQA2AoACIAogASgCcDYCHCABKAJ8IgcgASgCiAEiBGpBAEwNBiABLQBuQQJxRQ0EIAEoAkQNBEEAIQIDQCACIAdOBEBBACECA0AgASgCiAEgAkwEQEEAIQIDQCACIAEoAsACTg0KIAAgAkEDdCIEIAEoAsgCaigCBBATIAEoAsgCIARqQQA2AgQgAkEBaiECDAALAAUgACABKAKAASACQQR0aigCABATIAJBAWohAgwBCwALAAUgACABKAJ0IAJBBHRqKAIAEBMgAkEBaiECIAEoAnwhBwwBCwALAAtB1fMAQb7jAEGD/gFBizYQAAALBSABKAJ0IAJBBHRqIgQgASgCzAEgBCgCBEEDdGoiBCgCBDYCCCAEIAI2AgQgAkEBaiECDAELCyAAIAEQjQNCgICAgOAADAMLIAogBSAKaiICNgIgIAIgASgCgAEgBEEEdBAlGiAKKAIgIAEoAogBQQR0aiABKAJ0IAEoAnxBBHQQJRoLIAogASgCfDsBKiAKIAEoAogBOwEoIAogASgCjAE7ASwgACABKAKAARAaIAAgASgCdBAaCyAKIAEoArgCIgQ2AjggBARAIAogCCAKaiICNgI0IAIgASgCtAIgBEEDdBAlGgsgACABKAK0AhAaIAFBADYCtAIgCiAUKAIMOwEuAkAgAS0AbkECcQRAIAAgASgC7AIQEyABQfQCahCXAQwBCyAKIAovABFBgAhyOwARIAogASgC7AI2AkAgCiABKALwAjYCRCAKIAAgASgC9AIgASgC+AIQmgIiAjYCUCACRQRAIAogASgC9AI2AlALIAogASgC+AI2AkwgCiABKAKMAzYCVCAKIAEoApADNgJICyABKALMASICIAFB0AFqRwRAIAAgAhAaCyAKIAEoAsACIgQ2AjwgBARAIAogBiAKaiICNgIkIAIgASgCyAIgBEEDdBAlGgsgACABKALIAhAaIAFBADYCyAIgCiAKLwARQX5xIAEvATRBAXFyIgI7ABEgCiABLwE4QQF0QQJxIAJBfXFyIgI7ABEgCiABLQBuOgAQIAogAS8BYEECdEEEcSACQXtxciICOwARIAogAkFPcSABLwFsQQR0QTBxciICOwARIAogASgCtAFBAEgE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DAELCyAGQQEgA2tBA3RqIgNBBGohByADKAIIIQQDQCAEIAdGDQEgBCgCBCEDIAQQRiAAKAIQIAQQvAIgAyEEDAALAAsgBUEwaiQAC8ECAgN+An8jAEEQayICJABCgICAgDAhBQJAAkAgACACQQhqIAAgARArIgEQQQ0AAkAgAikDCCIHQgBXBEAMAQsgB0IBfSEGAkACQAJAAkAgASACQQRqIAIQjgJFDQAgByACKAIAIgitUg0AIAGnIQkgAigCBCEDIARFDQEgAykDACEFIAMgA0EIaiAIQQN0QQhrEIECDAILAkAgBARAIAAgAUIAEGQiBRANDQYgACABQgBCASAGQQEQggNFDQEMBgsgACABIAYQZCIFEA0NBQsgACABIAYQlAJBAE4NAgwECyAIQQN0IANqQQhrKQMAIQULIAkgCSgCKEEBazYCKAsgB0KBgICACFQNACAGuRAXIQYLIAAgAUEwIAYQSEEATg0BCyAAIAUQDEKAgICA4AAhBQsgACABEAwgAkEQaiQAIAULEAAgACADKQMAQREgBBCBAwuuAgIFfgF/IwBBEGsiCiQAAn4CQCAAIApBCGogACABECsiBRBBDQAgCikDCCIBIAKsIgh8IgZCgICAgICAgBBZBEAgAEGqwwBBABAWDAELAkAgBEUgAkEATHJFBEAgACAFIAhCACABQX8QggMNAgwBCyABIQcLIAJBACACQQBKG60hCEIAIQEDQCABIAhSBEAgASAHfCEJIAGnIQIgAUIBfCEBIAAgBSAJIAMgAkEDdGopAwAQDxCRAUEATg0BDAILCyAAIAVBMCAGQoCAgIAIfCIHQv////8PWAR+IAZC/////w+DBSAGuRAXCxBIQQBIDQAgACAFEAwgBkL/////D4MgB0L/////D1gNARogBrkQFwwBCyAAIAUQDEKAgICA4AALIQEgCkEQaiQAIAELPAAgAUEAQdAAEEsiASAENgIMIAEgADYCACABIAIgA2o2AjwgASACNgI4IAFBATYCCCABQqCAgIAQNwMQC38BBH8gAS0AAEHbAEYEQCABQQFqIgMQQ0EBayECIAAoAhAoAjghBEHCASEBA0AgAUHPAUcEQAJAIAQgAUECdGooAgAiBSgCBEH/////B3EgAkcNACAFQRBqIAMgAhB3DQAgACABEBkPCyABQQFqIQEMAQsLEAEA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CyADKQMAEA8hBQwBCyAAEHUMAQsCQCAAIAEgBBBvIgcQDQRAIAAgBRAMDAELIAAgByAFIAYgCBDzA0UNASAAIAcQDAtCgICAgOAAIQcLIAJBEGokACAHC9IDAgJ+An8jAEEgayIEJAACQCABQv///////////wCDIgNCgICAgICAwIA8fSADQoCAgICAgMD/wwB9VARAIAFCBIYgAEI8iIQhAyAAQv//////////D4MiAEKBgICAgICAgAhaBEAgA0KBgICAgICAgMAAfCECDAILIANCgICAgICAgIBAfSECIABCgICAgICAgIAIUg0BIAIgA0IBg3whAgwBCyAAUCADQoCAgICAgMD//wBUIANCgICAgICAwP//AFEbRQRAIAFCBIYgAEI8iIRC/////////wODQoCAgICAgID8/wCEIQIMAQtCgICAgICAgPj/ACECIANC////////v//DAFYNAEIAIQIgA0IwiKciBUGR9wBJDQAgBEEQaiAAIAFC////////P4NCgICAgICAwACEIgIgBUGB9wBrEHMgBCAAIAJBgfgAIAVrEKECIAQpAwhCBIYgBCkDACIAQjyIhCECIAQpAxAgBCkDGIRCAFKtIABC//////////8Pg4QiAEKBgICAgICAgAhaBEAgAkIBfCECDAELIABCgICAgICAgIAIUg0AIAJCAYMgAnwhAgsgBEEgaiQAIAIgAUKAgICAgICAgIB/g4S/Cw8AIAAgASACQQBBAxCCAguiDwIFfw5+IwBB0AJrIgUkACAEQv///////z+DIQogAkL///////8/gyEMIAIgBIVCgICAgICAgICAf4MhDSAEQjCIp0H//wFxIQgCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAIQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIg9CgICAgICAwP//AFQgD0KAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCENDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQ0gAyEBDAILIAEgD0KAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACENDAMLIA1CgICAgICAwP//AIQhDUIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAPhFAEQEKAgICAgIDg//8AIA0gAiADhFAbIQ1CACEBDAILIAIgA4RQBEAgDUKAgICAgIDA//8AhCENQgAhAQwCCyAPQv///////z9YBEAgBUHAAmogASAMIAEgDCAMUCIGG3kgBkEGdK18pyIGQQ9rEHNBECAGayEGIAUpA8gCIQwgBSkDwAIhAQsgAkL///////8/Vg0AIAVBsAJqIAMgCiADIAogClAiBxt5IAdBBnStfKciB0EPaxBzIAYgB2pBEGshBiAFKQO4AiEKIAUpA7ACIQMLIAVBoAJqIApCgICAgICAwACEIhJCD4YgA0IxiIQiAkIAQoCAgICw5ryC9QAgAn0iBEIAEHIgBUGQAmpCACAFKQOoAn1CACAEQgAQciAFQYACaiAFKQOYAkIBhiAFKQOQAkI/iIQiBEIAIAJCABByIAVB8AFqIARCAEIAIAUpA4gCfUIAEHIgBUHgAWogBSkD+AFCAYYgBSkD8AFCP4iEIgRCACACQgAQciAFQdABaiAEQgBCACAFKQPoAX1CABByIAVBwAFqIAUpA9gBQgGGIAUpA9ABQj+IhCIEQgAgAkIAEHIgBUGwAWogBEIAQgAgBSkDyAF9QgAQciAFQaABaiACQgAgBSkDuAFCAYYgBSkDsAFCP4iEQgF9IgJCABByIAVBkAFqIANCD4ZCACACQgAQciAFQfAAaiACQgBCACAFKQOoASAFKQOgASIPIAUpA5gBfCIEIA9UrXwgBEIBVq18fUIAEHIgBUGAAWpCASAEfUIAIAJCABByIAYgCSAIa2ohBgJ/IAUpA3AiEEIBhiIUIAUpA4gBIg5CAYYgBSkDgAFCP4iEfCILQufsAH0iFUIgiCICIAxCgICAgICAwACEIhZCAYYgAUI/iIQiDEIgiCIEfiIRIAFCAYYiD0IgiCIKIAsgFVatIAsgFFStIAUpA3hCAYYgEEI/iIQgDkI/iHx8fEIBfSIQQiCIIgt+fCIOIBFUrSAOIA4gEEL/////D4MiECAMQv////8PgyIUfnwiDlatfCAEIAt+fCAEIBB+IhMgCyAUfnwiESATVK1CIIYgEUIgiIR8IA4gDiARQiCGfCIOVq18IA4gDiAVQv////8PgyIVIBR+IhMgAiAKfnwiESATVK0gESARIBAgD0L+////D4MiE358IhFWrXx8Ig5WrXwgDiAEIBV+IhcgCyATfnwiBCACIBR+fCILIAogEH58IhBCIIggCyAQVq0gBCAXVK0gBCALVq18fEIghoR8IgQgDlStfCAEIBEgAiATfiICIAogFX58IgpCIIggAiAKVq1CIIaEfCICIBFUrSACIBBCIIZ8IAJUrXx8IgIgBFStfCIEQv////////8AWARAIAVB0ABqIAIgBCADIBIQciABQjGGIAUpA1h9IAUpA1AiAUIAUq19IQtCACABfSEKIAZB/v8AagwBCyAFQeAAaiAEQj+GIAJCAYiEIgIgBEIBiCIEIAMgEhByIAFCMIYgBSkDaH0gBSkDYCIMQgBSrX0hC0IAIAx9IQogASEPIBYhDCAGQf//AGoLIgZB//8BTgRAIA1CgICAgICAwP//AIQhDUIAIQEMAQsCfiAGQQBKBEAgC0IBhiAKQj+IhCELIARC////////P4MgBq1CMIaEIQwgCkIBhgwBCyAGQY9/TARAQgAhAQwCCyAFQUBrIAIgBEEBIAZrEKECIAVBMGogDyAMIAZB8ABqEHMgBUEgaiADIBIgBSkDQCICIAUpA0giDBByIAUpAzggBSkDKEIBhiAFKQMgIgFCP4iEfSAFKQMwIgQgAUIBhiIBVK19IQsgBCABfQshBCAFQRBqIAMgEkIDQgAQciAFIAMgEkIFQgAQciAMIAIgAiADIAJCAYMiASAEfCIDVCALIAEgA1atfCIBIBJWIAEgElEbrXwiAlatfCIEIAIgAiAEQoCAgICAgMD//wBUIAMgBSkDEFYgASAFKQMYIgRWIAEgBFEbca18IgJWrXwiBCACIARCgICAgICAwP//AFQgAyAFKQMAViABIAUpAwgiA1YgASADURtxrXwiASACVK18IA2EIQ0LIAAgATcDACAAIA03AwggBUHQAmokAAvEAQIBfwJ+QX8hAwJAIABCAFIgAUL///////////8AgyIEQoCAgICAgMD//wBWIARCgICAgICAwP//AFEbDQBBACACQv///////////wCDIgVCgICAgICAwP//AFYgBUKAgICAgIDA//8AURsNACAAIAQgBYSEUARAQQAPCyABIAKDQgBZBEBBACABIAJTIAEgAlEbDQEgACABIAKFhEIAUg8LIABCAFIgASAC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QT9xQYABcjoAASAAIAFBBnZBwAFyOgAAQQIMBAsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMMBAsgAUGAgARrQf//P00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQMBAsLQcSzBEEZNgIAQX8FQQELDAELIAAgAToAAEEBCwsWACAARQRAQQAPC0HEswQgADYCAEF/C8QCAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBCWsOEgAKCwwKCwIDBAUMCwwMCgsHCAkLIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LAAsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsACyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAErAwA5AwAPCyAAIAIgAxEDAAsPCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwALawEEfyAAKAIALAAAEEVFBEBBAA8LA0AgACgCACEDQX8hASACQcyZs+YATQRAQX8gAywAAEEwayIEIAJBCmwiAWogBEH/////ByABa0obIQELIAAgA0EBajYCACABIQIgAywAARBFDQALIAIL8RICEX8BfiMAQdAAayIHJAAgByABNgJMIAdBN2ohFiAHQThqIRJBACEBAkACQAJAAkADQCABQf////8HIA1rSg0BIAEgDWohDSAHKAJMIgwhAQJAAkACQCAMLQAAIgsEQANAAkACQCALQf8BcSIIRQRAIAEhCwwBCyAIQSVHDQEgASELA0AgAS0AAUElRw0BIAcgAUECaiIINgJMIAtBAWohCyABLQACIQogCCEBIApBJUYNAAsLIAsgDGsiAUH/////ByANayIXSg0HIAAEQCAAIAwgARBnCyABDQZBfyEQQQEhCCAH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AhDvBSAFKQMIIQIgBSkDACEEDAELIAEgAkL///////8/gyAGrUIwhoQiCiADIARC////////P4MgBEIwiKdB//8BcSIHrUIwhoQiCRD/AUEATARAIAEgCiADIAkQ/wEEQCABIQQMAgsgBUHwAGogASACQgBCABAzIAUpA3ghAiAFKQNwIQQMAQsgBgR+IAEFIAVB4ABqIAEgCkIAQoCAgICAgMC7wAAQMyAFKQNoIgpCMIinQfgAayEGIAUpA2ALIQQgB0UEQCAFQdAAaiADIAlCAEKAgICAgIDAu8AAEDMgBSkDWCIJQjCIp0H4AGshByAFKQNQIQMLIAlC////////P4NCgICAgICAwACEIQkgCkL///////8/g0KAgICAgIDAAIQhCiAGIAdKBEADQAJ+IAogCX0gAyAEVq19IgtCAFkEQCALIAQgA30iBIRQBEAgBUEgaiABIAJCAEIAEDMgBSkDKCECIAUpAyAhBAwFCyALQgGGIARCP4iEDAELIApCAYYgBEI/iIQLIQogBEIBhiEEIAZBAWsiBiAHSg0ACyAHIQYLAkAgCiAJfSADIARWrX0iCUIAUwRAIAohCQwBCyAJIAQgA30iBIRCAFINACAFQTBqIAEgAkIAQgAQMyAFKQM4IQIgBSkDMCEEDAELIAlC////////P1gEQANAIARCP4ghASAGQQFrIQYgBEIBhiEEIAEgCUIBhoQiCUKAgICAgIDAAFQNAAsLIAhBgIACcSEHIAZBAEwEQCAFQUBrIAQgCUL///////8/gyAGQfgAaiAHcq1CMIaEQgBCgICAgICAwMM/EDMgBSkDSCECIAUpA0AhBAwBCyAJQv///////z+DIAYgB3KtQjCGhCECCyAAIAQ3AwAgACACNwMIIAVBgAFqJAALvwIBAX8jAEHQAGsiBCQAAkAgA0GAgAFOBEAgBEEgaiABIAJCAEKAgICAgICA//8AEDMgBCkDKCECIAQpAyAhASADQf//AUkEQCADQf//AGshAwwCCyAEQRBqIAEgAkIAQoCAgICAgID//wAQMyADQf3/AiADQf3/AkgbQf7/AWshAyAEKQMYIQIgBCkDECEBDAELIANBgYB/Sg0AIARBQGsgASACQgBCgICAgICAgDkQMyAEKQNIIQIgBCkDQCEBIANB9IB+SwRAIANBjf8AaiEDDAELIARB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AykDCBA4IgJFDQAgACABIAIgBhAPIARBABCIBCEDIAAgAhATIANBAEgNACADQQBHrUKAgICAEIQhBQsgBQsqACADKQMAIgFC/////29YBEAgABApQoCAgIDgAA8LIAAgAUEDQQAQgQMLYwEBfiADKQMAIgRC/////29YBEAgABApQoCAgIDgAA8LQoCAgIDgACEBAkAgACADKQMIEDgiAkUNACAAIAQgAhB6IQMgACACEBMgA0EASA0AIANBAEetQoCAgIAQhCEBCyABC2MBAn4CQAJAIAMpAwAiAUL/////b1gEQCAAECkMAQsgAykDCCEFIAEhBCACQQNOBEAgAykDECEECyAAIAUQOCICDQELQoCAgIDgAA8LIAAgASACIARBABAUIQEgACACEBMgAQtmAQF+IAMpAwAiBEL/////b1gEQCAAEClCgICAgOAADwtCgICAgOAAIQECQCAAIAMpAwgQOCICRQ0AIAAgBCACQQAQ3gEhAyAAIAIQEyADQQBIDQAgA0EAR61CgICAgBCEIQELIAELigECAX8CfiMAQRBrIgQkACADKQMIIQUgAykDACIGIQECQAJAAkACQCACQQNIDQAgAykDECIBELUBDQAgAEHfKUEAEBYMAQsgACAEQQxqIAUQiwQiAg0BC0KAgICA4AAhAQwBCyAAIAYgASAEKAIMIgMgAhCOAyEBIAAgAiADEJgDCyAEQRBqJAAgAQscACAAIAMpAwBBACACQQFrEEogA0EIakECEJoDC0MAIwBBEGsiAiQAAn5CgICAgOAAIAAgAkEMaiADKQMAEMcBDQAaQiAgAigCDCIARQ0AGiAAZ60LIQEgAkEQaiQAIAELUAAjAEEQayICJABCgICAgOAAIQECQCAAIAJBDGogAykDABCTAg0AIAAgAkEIaiADKQMIEJMCDQAgAigCCCACKAIMbK0hAQsgAkEQaiQAIAELBgAgALa7C1AAIAAgACkD0AEiAUIMiCABhSIBQhmGIAGFIgFCG4ggAYUiATcD0AEgAUKdurP7lJL9oiV+QgyIQoCAgICAgID4P4S/RAAAAAAAAPC/oBAXC/UDAwN8BX8DfiMAQRBrIggkACAIQgA3AwgCQAJAIAJBAEwNAEKAgICA4AAhASAAIAhBCGogAykDABBHDQFBASEJIAgrAwghBCACQQFHBEADQCACIAlGDQIgACAIIAMgCUEDdGopAwAQRw0DIAlBAWohCSAIKwMAIQUjAEEgayIHJAAgBL1C////////////AIMiDSAFvUL///////////8AgyIMIAwgDVYbIg6/IQQCQCAOQjSIpyIKQf8PRg0AIA0gDCAMIA1UGyIMvyEFAkAgDlANACAMQjSIpyILQf8PRg0AIAsgCmtBwQBOBEAgBSAEoCEEDAILAnwgC0H+C08EQCAERAAAAAAAADAUoiEEIAVEAAAAAAAAMBSiIQVEAAAAAAAAsGsMAQtEAAAAAAAA8D8gCkG8BEsNABogBEQAAAAAAACwa6IhBCAFRAAAAAAAALBroiEFRAAAAAAAADAUCyEGIAdBGGogB0EQaiAFEIQGIAdBCGogByAEEIQGIAYgBysDACAHKwMQoCAHKwMIoCAHKwMYoJ+iIQQMAQsgBSEECyAHQSBqJAAMAAsACyAEmSEECyAEvQJ/IASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIAt71RBEAgAK0hAQwBCyAEEBchAQsgCEEQaiQAIAELTgAgACAARAAAAAAAAPC/RAAAAAAAAPA/IABEAAAAAAAAAABjGyAAvUL///////////8Ag0KAgICAgICA+P8AVhsgAEQAAAAAAAAAAGEbC4MBAgJ+AX8gAL0iAUI0iKdB/w9xIgNB/gdNBEAgAUKAgICAgICAgIB/gyECIANB/gdHIAFCgICAgICAgPC/f1FyRQRAIAJCgICAgICAgPg/hL8PCyACvw8LIANBsghNBHwgAUI/hyABfEIBQbMIIANrrYYiAUIBiHxCACABfYO/BSAACwvdBAICfAV/IwBBEGsiCCQAAn4gAkUEQEQAAAAAAADw/0QAAAAAAADwfyAEGxAXDAELAnwgAykDACIBQv////8PWARAIAJBASACQQFKGyELIAGnIQlBASEHA0AgByALRwRAIAm3IAMgB0EDdGopAwAiAUKAgICAEFoNAxogAachCgJ/IAQEQCAJIAoQSgwBCyAJIAoQtAELIQkgB0EBaiEHDAELCyAJrQwCC0KAgICA4AAgACAIQQhqIAEQRw0BGkEBIQcgCCsDCAshBSAHIAIgAiAHSBshAgNAIAIgB0cEQEKAgICA4AAgACAIIAMgB0EDdGopAwAQRw0CGgJAIAW9Qv///////////wCDQoCAgICAgID4/wBWDQAgCCsDACIGvUL///////////8Ag0KAgICAgICA+P8AVgRAIAYhBQwBCyAEBEAgBSAFIAalIAa9Qv///////////wCDQoCAgICAgID4/wBWGyAGIAW9Qv///////////wCDQoCAgICAgID4/wBYGyAGvSAFvYO/IAVEAAAAAAAAAABiIAZEAAAAAAAAAABichshBQwBCyAFIAUgBqQgBr1C////////////AINCgICAgICAgPj/AFYbIAYgBb1C////////////AINCgICAgICAgPj/AFgbIAa9IAW9hL8gBUQAAAAAAAAAAGIgBkQAAAAAAAAAAGJyGyEFCyAHQQFqIQcMAQsLIAW9An8gBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIgC3vVEEQCAArQwBCyAFEBcLIQEgCEEQaiQAIAEL0AEBAn8jAEEQayICJAACfiAAIAFBJhBqIgNFBEAgBEEANgIAQoCAgIDgAAwBCwJAIAMpAwAiARASRQRAIAIgAygCDCIFNgIMIAUgAaciBigCBEH/////B3FJDQEgACABEAwgA0KAgICAMDcDAAsgBEEBNgIAQoCAgIAwDAELIAYgAkEMahDbASEHIAMgAigCDDYCDCAEQQA2AgAgB0H//wNNBEAgACAHQf//A3EQpgMMAQsgACAGIAVBAXRqQRBqQQIQnAQLIQEgAkEQaiQAIAELxwICAn8CfiMAQSBrIgIkAEKAgICA4AAhBwJAIAAgARBjIgEQDQ0AIAAgAkEIaiIFQQcQQhogBUE8ED4aIAUgBEEDdCIFQfDKAWooAgAiBhCOARpBnj0gBHZBAXFFBEAgAkEIaiIEQSAQPhogBCAFQfTKAWooAgAQjgEaIARByv4AEI4BGiAAIAMpAwAQYyIIEA0EQCAAIAEQDCACQQhqEEQMAgsgCKchA0EAIQQDQCAEIAMoAgRB/////wdxT0UEQAJAIAMgBBBNIgVBIkYEQCACQQhqQfTvABCOARoMAQsgAkEIaiAFEJYBGgsgBEEBaiEEDAELCyAAIAgQDCACQQhqQSIQPhoLIAJBCGoiAEE+ED4aIAAgARCPARogAEH29QAQjgEaIAAgBhCOARogAkEIakE+ED4aIAAQOSEHCyACQSBqJAAgBwu7BAEIfyMAQTBrIgIkAAJAIAAgARBjIgEQ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IAQgCSkDCBBwQQBIDQcLIARCAXwhBCABQgF8IQEMAAsACyAEQv7///////8PVQ0DIAAgBSAEIAYQDxBwQQBIDQQgBEIBfCEECyAKQQFqIQoMAQsLIAAgBUEwIARCgICAgAh8Qv////8PWAR+IARC/////w+DBSAEuRAXCxBIQQBIDQEMAgsgAEGqwwBBABAWCyAAIAUQDEKAgICA4AAhBQsgACAIEAwgCUEQaiQAIAULLQEBfkKAgICAMCECAkAgARCoAyIARQ0AIAAtABJBBHFFDQAgADUCRCECCyACCzMCAX4Bf0KAgICAMCECAkAgARCoAyIDRQ0AIAMtABJBBHFFDQAgACADKAJAEDIhAgsgAgsoAEKAgICA4AAgACADKQMAIAEQ2QUiAEEAR61CgICAgBCEIABBAEgbC6sBAgF+An9CgICAgOAAIQQgACABEGkEfkKAgICA4AAFQeb+ACECAkAgAaciAy8BBhD4AUUNAAJAIAMoAiAiAy8AESIFQYAIcUUNACADKAJUIgZFDQAgACAGIAMoAkgQ/gEPCyAFQQR2QQNxQQFrIgNBAksNACADQQJ0QaDdAWooAgAhAgsgACACIAAgAUE2IAFBABAUIgEQEgR+IABBLxAyBSABC0GeCBC/AQsLhwQDA34EfwN8AkAgACABEGkNACAAIAApAzBBDhBTIgUQDQ0AIAWnIgkgARC1AUEEdEEQcSAJLQAFQe8BcXI6AAUCQCAAQQAgAkEBaxBKIgJBA3RBGGoQLyIHRQ0AIAcgARAPIgE3AwAgAykDABAPIQQgByACNgIQIAcgBDcDCCACQQAgAkEAShshCgNAIAggCkcEQCAHIAhBA3RqIAMgCEEBaiIIQQN0aikDABAPNwMYDAELCyAJIAc2AiACfyABQv////9vWARAIAAQKUF/DAELIABBACABp0EwEE8LIgNBAEgNAAJAIANFDQAgACABQTAgAUEAEBQiBBANDQEgBEL/////D1gEQCAEpyIDIAJrQQAgAiADSButIQYMAQsgBBBWQQdGBEACQCAEEEkiDL1C////////////AINCgICAgICAgPj/AFYNACAMnSIMIAK3Ig1lDQAgDCANoSELCyALvQJ/IAuZRAAAAAAAAOBBYwRAIAuqDAELQYCAgIB4CyICt71RBEAgAq0hBgwCCyALEBchBgwBCyAA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EIQhAQsgACAGIAcQZgsgAkEwaiQAIAELnQECAX4Bf0KAgICAMCEBAkACQCAAIAMpAwAQKyIEEA0NACACQQEgAkEBShshBUEBIQIDQCACIAVGDQICQCADIAJBA3RqKQMAIgEQKA0AIAEQEg0AIAAgARArIgEQDQ0CIAAgBCABQoCAgIAwQQEQxgUNAiAAIAEQDAsgAkEBaiECDAALAAsgACAEEAwgACABEAxCgICAgOAAIQQLIAQLGAAgACADKQMAIAMpAwgQWq1CgICAgBCEC5sCAgN+A38jAEEgayICJABCgICAgOAAIQQgACADKQMAECsiBRANRQRAQoCAgIAwIQECfgJAIAAgAkEcaiACQRhqIAWnQQMQkgENACAAEDwiARANDQAgAigCHCEHIAIoAhghCEEAIQMDQCADIAhHBEAgACAHIANBA3RqIgkoAgQQYCIGEA0NAiACIAY3AwggAiAFNwMAIABCgICAgDBBAiACQQAQ2QQhBCAAIAYQDCAEEA0NAiAEEBJFBEAgACABIAkoAgQgBEGHgAEQG0EASA0DCyADQQFqIQMMAQsLIAAgByAIEGYgAQwBCyAAIAIoAhwgAigCGBBmIAAgBRAMIAEhBUKAgICA4AALIQQgACAFEAwLIAJBIGokACAEC20AAn4CQCADKQMAIgFC/////29YBEAgBEUNASAAEClCgICAgOAADwtCgICAgOAAIAAgARCZBCICQQBIDQEaIAQEQCACQQBHrUKAgICAEIQPCyACDQAgAEHdygBBABAWQoCAgIDgAA8LIAEQDwsLTwACQAJAIAMpAwAiAUL/////b1gEQCAERQRAQoCAgIAQDwsgABApDAELIAAgARCiASIAQQBODQELQoCAgIDgAA8LIABBAEetQoCAgIAQhAsQACAAIAMpAwBBAkEAEIEDCxAAIAAgAykDAEEBQQAQgQMLLQEBfkKAgICA4AAhASAAIAMpAwAiBCADKQMIENwEBH5CgICAgOAABSAEEA8LC30BAn4gAykDACIBQv////9vWARAIAAQKUKAgICA4AAPCyADKQMQIQZCgICAgOAAIQUCQCAAIAMpAwgQOCICRQ0AIAAgASACIAYgBEVBDnQQ2gQhAyAAIAIQEyADQQBIDQAgBARAIANBAEetQoCAgIAQhA8LIAEQDyEFCyAFCycAIAAgAykDACIBIAMpAwhBARCbAkEASARAQoCAgIDgAA8LIAEQDws2ACADKQMAIgFCIIinIgJBf0YgBEUgAkF+cUECR3FyRQRAIAAQKUKAgICA4AAPCyAAIAEQ/AELYgEBfgJAIAMpAwAiARAiDQAgARAoDQAgAEGczABBABAWQoCAgIDgAA8LAkAgACABEFUiARANRQRAIAMpAwgiBBASDQEgACABIAQQ3ARFDQEgACABEAwLQoCAgIDgAA8LIAELuQEBAn4gARAiRQRAIAAQKUKAgICA4AAPC0KAgICA4AAhBQJ+IAAgAUE2IAFBABAUIgQQEgRAIABBjgEQMgwBCyAAIAQQPQsiBBANBH5CgICAgOAABQJ+IAAgAUEzIAFBABAUIgEQEgRAIABBLxAyDAELIAAgARA9CyIBEA0EQCAAIAQQDEKAgICA4AAPCwJAIAQQ9wENACABEPcBDQAgAEHcgwEgBEGU/wAQvwEhBAsgACAEIAEQyQILC2oCAX8BfkGwswQoAgAEQBCBBQtBsLMEENYFIgI2AgAgAhDgBCECQcCzBCABNgIAQbSzBCACNgIAIAIgACAAEENBoO8AELYFIgMgARCnAwRAQbSzBCgCACADEAxBAA8LQbizBCADNwMAQQELvgICA38BfCMAQdAAayIEJAAgBEEQakEAQTgQSxogBEKAgICAgICA+D83AyBCgICAgMB+IQECQCACRQ0AIAJBByACQQdIGyICQQAgAkEAShshAgNAIAIgBUcEQCAAIARBCGogAyAFQQN0IgZqKQMAEEcEQEKAgICA4AAhAQwDCyAEKwMIIge9QoCAgICAgID4/wCDQoCAgICAgID4/wBRDQIgBEEQaiAGaiAHnTkDAAJAIAUNACAEKwMQIgdEAAAAAAAAAABmRSAHRAAAAAAAAFlAY0VyDQAgBCAHRAAAAAAAsJ1AoDkDEAsgBUEBaiEFDAELCyAEQRBqQQAQ+QMiB70CfyAHmUQAAAAAAADgQWMEQCAHqgwBC0GAgICAeAsiALe9UQRAIACtIQEMAQsgBxAXIQELIARB0ABqJAAgAQsIAEKAgICAMAsnABCrBSIBQoCAgIAIfEL/////D1gEQCABQv////8Pgw8LIAG5EBcLvwEBAn4jAEEQayICJAACfgJAIAAgACABECsiAUEBEJsDIgUQDQ0AIAUQkAEEQCAAIAJBCGogBRBHQQBIDQFCgICAgCAgAikDCEKAgICAgICA+P8Ag0KAgICAgICA+P8AUQ0CGgsgACABQZnFABDPAiIEEA0NACAAIAQQO0UEQCAAQcDZAEEAEBYgACAEEAwMAQsgACAEIAFBAEEAEDYMAQtCgICAgOAACyEEIAAgARAMIAAgBRAMIAJBEGokACAEC90BAgF8AX4jAEEQayICJABCgICAgOAAIQUCQCAAIAJBCGogARC5Ag0AIAAgAkEIaiADKQMAEEcNACACAn4gAisDCCIEvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUgRAIASdIgREAAAAAACwnUCgIAQgBEQAAAAAAABZQGMbIAQgBEQAAAAAAAAAAGYbIQQLIAS9An8gBJlEAAAAAAAA4EFjBEAgBKoMAQtBgICAgHgLIgO3vVEEQCADrQwBCyAEEBcLNwMAIAAgAUEBIAJBERD9BCEFCyACQRBqJAAgBQtRAQF+IwBBEGsiAiQAQoCAgIDgACEEAkAgACACQQhqIAEQuQINACAAIAJBCGogAykDABBHDQAgACABIAIrAwgQ+AMQ/gQhBAsgAkEQaiQAIAQLqQEBAXwjAEHQAGsiAiQAAn5CgICAgOAAIAAgASACIARBD3FBABDdAyIAQQBIDQAaQoCAgIDAfiAARQ0AGiAEQYACcQRAIAIgAisDAEQAAAAAALCdwKA5AwALIAIgBEEEdkEPcUEDdGorAwAiBb0CfyAFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAsiBLe9UQRAIAStDAELIAUQFwshASACQdAAaiQAIAELhQEBAXwjAEEQayICJAACfkKAgICA4AAgACACQQhqIAEQuQINABpCgICAgMB+IAIrAwgiBL1C////////////AINCgICAgICAgPj/AFYNABoCfiAEnSIEmUQAAAAAAADgQ2MEQCAEsAwBC0KAgICAgICAgIB/CxDcA60LIQEgAkEQaiQAIAELdAEBfgJAIAEQIkUEQCAAECkMAQsCQCADKQMAIgQQngFFDQAgACAEEDgiAkUNASAAIAIQE0ERIQMCQAJAAkAgAkHGAGsOAwIDAQALIAJBFkcNAgtBECEDCyAAIAEgAxCbAw8LIABBqhhBABAWC0KAgICA4AALaAEBfCMAQRBrIgIkAAJ+QoCAgIDgACAAIAJBCGogARC5Ag0AGiACKwMIIgS9An8gBJlEAAAAAAAA4EFjBEAgBKoMAQtBgICAgHgLIgC3vVEEQCAArQwBCyAEEBcLIQEgAkEQaiQAIAELxQEBAX8gBEEBcSEGIAUpAwBBMhBAIgIoAgQhBSADKQMAIQECQAJAAkAgBEECTgRAIAVBfnFBBEcNAiACQQU2AgQgBgRAIAAgAiABEN4DDAILIAAgAiABQQEQ/gIMAQsgBUEDRw0CIAIgBjYCFCABEA8hAQJAIAYEQCAAIAEQlAEMAQsgAigCREEIayABNwMACyAAIAIQggULQoCAgIAwDwtBre4AQb7jAEHTmQFB5zUQAAALQZjsAEG+4wBB3JkBQec1EAAAC4MCAgJ/An4jAEEgayICJAAgAUEyEEAhBgJAIAAgAkEQahCQAyIBEA1FBEAgBkUEQCAAQewbQQAQFiACIAAQkwE3AwggACACKQMYIgdCgICAgDBBASACQQhqECQhCCAAIAIpAwgQDCAAIAgQDCAAIAIpAxAQDCAAIAcQDAwCCyAAQTAQbCIFBEAgBSAENgIIIAUgAykDABAPNwMQIAUgARAPIgE3AxggBSACKQMQNwMgIAUgAikDGDcDKCAFIAZByABqEEwgBigCBEEDRg0CIAAgBhCCBQwCCyAAIAIpAxAQDCAAIAIpAxgQDCAAIAEQDAtCgICAgOAAIQELIAJBIGokACABCxgAIAAgAykDABAPIAAgBSkDABD5ARCTAwvdBAICfwJ+IwBBMGsiBSQAAkACQAJAIAAgBUEgahCQAyIIEA1FBEAgAUEwEEAiBkUEQCAAQbEqQQAQFgwCCwJAIARFBEAgBikDCBAPIQEMAQsgACAGKQMAIgFBBkEXIARBAUYbIAFBABAUIgEQDQ0CIAEQEkUEQCABEChFDQELQQEhAiADKQMAEA8hASAEQQFGBEAgBSAAIAFBARCTAzcDAEEAIQIMBAsgBSABNwMADAMLIAUgACAGKQMAIAEgAkEASiADIAVBFGoQlQUiBzcDGCAAIAEQDCAHEA0NAQJAIAUoAhRBAkcEQCAHIQEMAQsgBSAAIAcgBUEUahCfBSIBNwMYIAAgBxAMIAEQDQ0CCyABEA0NASAAIAApA1BBASAFQRhqQQAQjAIiARANBEAgACAFKQMYEAwMAgsgBSgCFCEDIwBBEGsiAiQAIAIgA0EAR61CgICAgBCENwMIIABBNkEBQQBBASACQQhqEOYBIQcgAkEQaiQAIAUgBzcDAAJAIAcQDUUEQCAAIAUpAxgQDCAFQoCAgIAwNwMIIAAgASAFIAVBIGoQuwIhAiAAIAcQDCAAIAEQDCAAIAUpAyAQDCAAIAUpAygQDCACDQEMBQsgACABEAwgACAFKQMYEAwgACAFKQMgEAwgACAFKQMoEAwLIAAgCBAMC0KAgICA4AAhCAwCCyAFIAAQkwE3AwBBASECCyAAIAVBIGogAkEDdHIpAwBCgICAgDBBASAFECQhASAAIAUpAwAQDCAAIAEQDCAAIAUpAyAQDCAAIAUpAygQDAsgBUEwaiQAIAgLBgAgARAPC/ECAQV+IwBBMGsiAiQAAkAgARAiRQRAIAAQKUKAgICA4AAhBQwBCyAAIAJBIGogARDDAiIFEA0NAEKAgICAMCEGQoCAgIAwIQQCQAJAIAAgAUGAASABQQAQFCIIEA0NACAAIAgQaQ0AIAAgAykDAEEAEPYBIgQQDQRADAELIAAgBEHqACAEQQAQFCIGEA0NAANAIAIgACAEIAYgAkEUahCvASIHNwMYIAcQDQ0BIAIoAhQNAiAAIAggAUEBIAJBGGoQJCEHIAAgAikDGBAMIAcQDUUEQCAAIAAgB0H/AEECIAJBIGoQugIQjQJFDQELCyAAIARBARCzARoLIAIgABCTATcDCCAAIAIpAyhCgICAgDBBASACQQhqECQhASAAIAIpAwgQDCAAIAUgASABEA0iAxsQDEKAgICA4AAgBSADGyEFCyAAIAgQDCAAIAYQDCAAIAQQDCAAIAIpAyAQDCAAIAIpAygQDAsgAkEwaiQAIAUL9gICBX4BfyMAQSBrIgIkACAAIAUpAwAQ+QEhCyACIAUpAxAiBzcDGCAFKQMgIQkgBSkDGCEIQoCAgIDgACEBAkAgACACQRRqIAUpAwgQkwINAAJAIAsNACAFQoGAgIAQNwMAAkAgBEEDcSIFQQFGBEAgABA8IgYQDQ0DAkAgAEG33wBB5uEAIARBBHEiBBsQdiIKEA0NACAAIAZBiAEgCkEHEBtBAEgNACAAIAZBiQFBwAAgBBsgAykDABAPQQcQG0EATg0CCyAAIAYQDAwDCyADKQMAEA8hBgsgACAHIAIoAhQgBkEHEJ8BQQBIDQEgACAJQX8Q4AMiA0EASA0BIANFDQACQCAFQQJGBEAgAiAAIAcQgwUiBjcDCCAGEA0NAyAAIAhCgICAgDBBASACQQhqECQhASAAIAIpAwgQDAwBCyAAIAhCgICAgDBBASACQRhqECQhAQsgARANDQEgACABEAwLQoCAgIAwIQELIAJBIGokACABC8AGAg5+AX8jAEHwAGsiAiQAIAJCgICAgDA3A1ACQCABECJFBEAgABApQoCAgIDgACEIDAELIAAgAkHgAGogARDDAiIIEA0NAEKAgICAMCEJQoCAgIAwIQZCgICAgDAhBwJAAkAgACABQYABIAFBABAUIg8QDQ0AIAAgDxBpDQACQCAAIAMpAwBBABD2ASIHEA0EQAwBCyAAIAdB6gAgB0EAEBQiCRANDQAgAiAAEFEiCjcDUCAKEA0NACAAEFEiBhANDQEgACAGQQBCAUEHEJ8BQQBIDQEgAkHgAGogBEECRkEDdHIhAyACKQNgIRIgAikDaCEQAkACQAJAA0AgAiAAIAcgCSACQQxqEK8BIgU3A1ggBRANDQUgAigCDEUEQCAAIA8gAUEBIAJB2ABqECQhDSAAIAIpA1gQDCANEA0NBCACIAo3AyAgAiAMNwMYIAJCgICAgBA3AxAgAykDACEFIAIgBjcDMCACIAU3AyggAEE1QQEgBEEFIAJBEGoQ5gEiBRANDQICQCAEQQFGBEAgAEE1QQFBBUEFIAJBEGoQ5gEiCxANDQQMAQsCQCAEQQJHBEAgBSERIBAiDiEFDAELIBIiDiERIAAgCiAMp0KAgICAMEEHEJ8BQQBIDQYLIAUhCyAOEA8aIBEhBQsgACAGQQEQ4ANBAEgEQCAAIA0QDCAAIAUQDAwECyACIAs3A0ggAiAFNwNAIAAgDUH/AEECIAJBQGsQugIhDiAAIAUQDCAAIAsQDCAMQgF8IQwgACAOEI0CRQ0BDAQLCyAAIAZBfxDgAyITQQBIDQQgE0UNBSAEQQJGBEAgACAKEIMFIgEQDQ0FIAAgChAMIAIgATcDUAsgACAAIAMpAwBCgICAgDBBASACQdAAahAkEI0CDQQMBQsgDSELCyAAIAsQDAsgACAHQQEQswEaDAELCyACIAAQkwE3AwAgACACKQNoIhBCgICAgDBBASACECQhASAAIAIpAwAQDCAAIAggASABEA0iAxsQDEKAgICA4AAgCCADGyEICyAAIA8QDCAAIAYQDCAAIAIpA1AQDCAAIAkQDCAAIAcQDCAAIAIpA2AQDCAAIBAQDAsgAkHwAGokACAICwkAIAUpAwAQDwsVACAAIAUpAwAQDxCUAUKAgICA4AALpgEBAX4jAEEQayICJAAgBSkDACEGIAIgACAFKQMIQoCAgIAwQQBBABAkIgE3AwgCQCABEA0NACAAIAZBASACQQhqQQAQjAIhBiAAIAIpAwgQDCAGEA0EQCAGIQEMAQsgAiAAQTNBNCAEG0EAQQBBASADEOYBIgE3AwAgACABEA0EfiAGBSAAIAZB/wBBASACELoCIQEgAikDAAsQDAsgAkEQaiQAIAEL8QEBAn4jAEEgayICJAAgAykDACEEAkAgACABQoCAgIAwEPMBIgUQDQ0AAkAgACAEEDtFBEAgAiAEEA8iBDcDECACIAQQDzcDGAwBCyACIAQ3AwggAiAFNwMAQQAhAwNAIANBAkYNASACQRBqIANBA3RqIABBMkEBIANBAiACEOYBIgQ3AwAgBBANBEAgA0EBRgRAIAAgAikDEBAMCyAAIAUQDEKAgICA4AAhBQwDBSADQQFqIQMMAQsACwALIAAgBRAMIAAgAUH/AEECIAJBEGoQxgIhBSAAIAIpAxAQDCAAIAIpAxgQDAsgAkEgaiQAIAULOQAjAEEQayICJAAgAkKAgICAMDcDACACIAMpAwA3AwggACABQf8AQQIgAhDGAiEBIAJBEGokACABC6UBAgF/A34jAEEQayICJABCgICAgOAAIQUCQCAAIAFBKhBqRQ0AIAAgAUKAgICAMBDzASIGEA0EQCAGIQUMAQsgACACIAYQwwIhByAAIAYQDAJAIAcQDQ0AIAAgASADIAIQuwIhAwNAIARBAkZFBEAgACACIARBA3RqKQMAEAwgBEEBaiEEDAELCyADRQ0AIAAgBxAMDAELIAchBQsgAkEQaiQAIAUL4AECA34BfyMAQRBrIgYkACABQQVGBEAgAikDECEDIAAgAikDGBD5ASEBIAYgAikDICIENwMIIAYCfiADEBIEQCAEEA8iAyABRQ0BGiAAIAMQlAFCgICAgOAADAELIAAgA0KAgICAMEEBIAZBCGoQJAsiAzcDACADEA0iAQRAIAYgABCTASIDNwMAC0KAgICAMCEEIAAgAiABQQN0aikDACIFEBIEfiADBSAAIAVCgICAgDBBASAGECQhBCAGKQMACxAMIAZBEGokACAEDwtB8vAAQb7jAEHw6QJBjOQAEAAAC4EBAQN/AkAgAUEyEEAiBEUNACAEQcwAaiEDIARByABqIQUDQCADKAIAIgMgBUZFBEAgACADKQMQIAIQIyAAIAMpAxggAhAjIAAgAykDICACECMgACADKQMoIAIQIyADQQRqIQMMAQsLIAQoAgRBfnFBBEYNACAAIARBCGogAhDvAwsLFgEBfyABQTIQQCICBEAgACACEK0FCwslAQF/IAFBMBBAIgMEQCAAIAMpAwAgAhAjIAAgAykDCCACECMLCycBAX8gAUEwEEAiAgRAIAAgAikDABAnIAAgAikDCBAnIAAgAhAhCwsWAQF/IAGnKAIgIgIEQCAAIAIQrgULCygBAX8gAacoAiAiAgRAIAAgAigCCBCFBSAAIAIpAwAQJyAAIAIQIQsLgAEBBH8gAUEqEEAiBgRAA0AgBEECRkUEQCAGIARBA3RqIgVBCGohAyAFQQRqIQUDQCADKAIAIgMgBUZFBEAgACADKQMIIAIQIyAAIAMpAxAgAhAjIAAgAykDGCACECMgA0EEaiEDDAELCyAEQQFqIQQMAQsLIAAgBikDGCACECMLC2kBBX8gAUEqEEAiBARAA0AgA0ECRkUEQCAEIANBA3RqIgJBBGohBSACKAIIIQIDQCACIAVGRQRAIAIoAgQhBiAAIAIQvAIgBiECDAELCyADQQFqIQMMAQsLIAAgBCkDGBAnIAAgBBAhCwtXAQF/QQAhAgN+IAJBAkYEQEKAgICAMA8LIAUgAkEDdCIEaiIGKQMAEBIEfiAGIAMgBGopAwAQDzcDACACQQFqIQIMAQUgAEGgGkEAEBZCgICAgOAACwsL0QIBA38jAEEQayIHJAACfiAAIAEgBUEjahBqIgJFBEAgBEEANgIAQoCAgIDgAAwBCwJAIAIpAwAiARASDQAgASAFQR9qEEAiAwRAAkAgAigCDCIIRQRAIAMoAgghBgwBCyAIKAIUIQYgACgCECAIEPEDCyADQQRqIQgDQCAGIAhGBEAgAkEANgIMIAAgAikDABAMIAJCgICAgDA3AwAMAwsgBkEQayEDIAZBDGsoAgAEQCADKAIUIQYMAQsLIAMgAygCAEEBajYCACACIAM2AgwgBEEANgIAIAIoAggiAkUEQCADKQMgEA8MAwsgByADKQMgIgE3AwAgBUUEQCADKQMoIQELIAcgATcDCCACQQFGBEAgARAPDAMLIABBAiAHEJEDDAILQdHqAEG+4wBBlugCQd0TEAAACyAEQQE2AgBCgICAgDALIQEgB0EQaiQAIAELeAECfkKAgICA4AAhBgJAIAAgASAEQQNxIgJBH2oQakUNACAAIAJBI2oQpAEiBRANDQAgAEEQEC8iAkUEQCAAIAUQDEKAgICA4AAPCyABEA8hASACQQA2AgwgAiAEQQJ1NgIIIAIgATcDACAFIAIQjQEgBSEGCyAGC5MCAgN+An8jAEEgayIIJABCgICAgOAAIQUCQCAAIAEgBEEfahBqIglFDQAgAykDACEHQoCAgIAwIQYgAkECTgRAIAMpAwghBgsgACAHEGkNACAJQQRqIQIgCSgCCCEDA0AgAiADRgRAQoCAgIAwIQUMAgsgA0EMaygCAARAIAMoAgQhAwUgA0EQayIJIAkoAgBBAWo2AgAgCCAJKQMgEA8iBTcDCCAERQRAIAkpAygQDyEFCyAIIAE3AxAgCCAFNwMAIAAgByAGQQMgCBAkIQUgACAIKQMAEAwgBEUEQCAAIAgpAwgQDAsgAygCBCEDIAAoAhAgCRDxAyAFEA0NAiAAIAUQDAsMAAsACyAIQSBqJAAgBQsxACAAIAEgAkEfahBqIgBFBEBCgICAgOAADwsgACgCDCIAQQBOBEAgAK0PCyAAuBAXC1kBAX8gACABIARBH2oQaiICRQRAQoCAgIDgAA8LIAJBBGohAyACKAIIIQQDfiADIARGBH5CgICAgDAFIARBEGshBSAEKAIEIQQgACgCECACIAUQhwUMAQsLC0kAIAAgASAEQR9qEGoiAkUEQEKAgICA4AAPCyAAIAIgAykDABCAAxD/AiIDRQRAQoCAgIAQDwsgACgCECACIAMQhwVCgYCAgBALNQAgACABIARBH2oQaiICRQRAQoCAgIDgAA8LIAAgAiADKQMAEIADEP8CQQBHrUKAgICAEIQLPgAgACABIARBH2oQaiICRQRAQoCAgIDgAA8LIAAgAiADKQMAEIADEP8CIgBFBEBCgICAgDAPCyAAKQMoEA8L+AMCA34Ff0KAgICA4AAhBwJAIAAgASAEQR9qEGoiAkUNACADKQMAEIADIQUCQCACKAIARQ0AIAUQIg0AIAAQKUKAgICA4AAPC0KAgICAMCEGIARBAXFFBEAgAykDCCEGCwJAIAAgAiAFEP8CIgQEQCAAIAQpAygQDAwBCwJAIABBMBAvIgRFDQAgBCACNgIIIARCATcDAAJAIAIoAgAEQCAEIAWnIgMoAhg2AgwgAyAENgIYDAELIAUQDxoLIAQgBTcDICAEQRhqIAIoAhAgAigCFEEBayAFEOIDcUEDdGoQTCAEQRBqIAJBBGoQTCACIAIoAgxBAWoiAzYCDCADIAIoAhhJDQAjAEEQayIIJAAgACACKAIQQQQgAigCFCIAQQF0IABBAUYbIgBBA3QgCEEMahC3ASIJBEAgCCgCDEEDdiAAaiEDQQAhAANAIAAgA0cEQCAJIABBA3RqEHEgAEEBaiEADAELCyADQQFrIQogAkEIaiEAIAJBBGohCwNAIAsgACgCACIARwRAIABBDGsoAgBFBEAgAEEQayIMQRhqIAkgDCkDIBDiAyAKcUEDdGoQTAsgAEEEaiEADAELCyACIAM2AhQgAiAJNgIQIAIgA0EBdDYCGAsgCEEQaiQACyAERQ0BCyAEIAYQDzcDKCABEA8hBwsgBwswACAFKQMAIgFBKRBAIgIEQCACQQE6ABEgACABEAwgBUKAgICAIDcDAAtCgICAgDALkQEBAn5CgICAgDAhAQJAIABCgICAgDAgAiADEIkGIgQQDQ0AIwBBEGsiAiQAIAIgBDcDCCAAQTFBAEEAQQEgAkEIahDmASEBIAJBEGokACABEA0NACAAEDwiBRANDQAgACAFQYMBIARBBxAbGiAAIAVBhAEgAUEHEBsaIAUPCyAAIAQQDCAAIAEQDEKAgICA4AAL2AICA38CfiMAQdAAayIGJABBfyEHAkAgACAGQcgAaiABQcIAEIcBIghFDQAgBikDSCIBEBIEQCAAIAgpAwAgAiADEA8gBCAFEIgEIQcMAQsCQAJAIAAgAhBgIgkQDQRAIAAgARAMDAELIAgpAwAhCiAGIAQ3AzggBiADNwMwIAYgCTcDKCAGIAo3AyAgACABIAgpAwhBBCAGQSBqEDYhASAAIAkQDCABEA0NAiAAIAEQLSIHBEAgACAGIAgoAgAgAhBPIgJBAEgNASACRQ0DAkAgBigCACICQRNxRQRAIAAgBikDCCADEFpFDQEMBAsgAkERcUEQRw0DIAYpAxgQEkUNAwsgACAGEE4gAEG/GkEAEBYMAQsgBUGAgAFxRQRAQQAhByAFQYCAAnFFDQMgABD7AUUNAwsgAEHACUEAEBYLQX8hBwwBCyAAIAYQTgsgBkHQAGokACAHC6ECAgJ/An4jAEFAaiIEJAACQAJAIAAgBEE4aiABQcEAEIcBIgVFDQAgBCkDOCIBEBIEQCAAIAUpAwAgAiADQQAQFCEBDAILIAAgAhBgIgYQDQRAIAAgARAMDAELIAUpAwAhByAEIAM3AzAgBCAGNwMoIAQgBzcDICAAIAEgBSkDCEEDIARBIGoQNiEBIAAgBhAMIAEQDQ0AIAAgBCAFKAIAIAIQTyICQQBIDQAgAkUNAQJAAkAgBCgCACICQRNxRQRAIAAgBCkDCCABEFpFDQEMAgsgAkERcUEQRw0BIAQpAxAQEkUNASABEBINAQsgACAEEE4gACABEAwgAEGWG0EAEBYMAQsgACAEEE4MAQtCgICAgOAAIQELIARBQGskACABC/UBAgN/An4jAEFAaiIDJABBfyEEAkAgACADQThqIAFB4wAQhwEiBUUNACADKQM4IgEQEgRAIAAgBSkDACACEHohBAwBCwJAAkAgACACEGAiBhANBEAgACABEAwMAQsgBSkDACEHIAMgBjcDKCADIAc3AyAgACABIAUpAwhBAiADQSBqEDYhASAAIAYQDCABEA0NAiAAIAEQLSIEDQIgACADIAUoAgAiBCACEE8iAkEASA0AIAJFDQEgAygCACECIAAgAxBOIAJBAXEEQCAELQAFQQFxDQILIABB+idBABAWC0F/IQQMAQtBACEECyADQUBrJAAgBAuyBQIDfwN+IwBBQGoiByQAQX8hCAJAIAAgB0E4aiABQeUAEIcBIglFDQAgBykDOCIKEBIEQCAAIAkpAwAgAiADIAQgBSAGEHghCAwBCwJAIAAgAhBgIgsQDQ0AAkAgABA8IgEQDQ0AIAZBgBBxBEAgACABQcEAIAQQD0EHEBsaCyAGQYAgcQRAIAAgAUHCACAFEA9BBxAbGgsgBkGAwABxBEAgACABQcAAIAMQD0EHEBsaCyAGQYAEcQRAIAAgAUE+IAZBAXZBAXGtQoCAgIAQhEEHEBsaCyAGQYAIcQRAIAAgAUE/IAZBAnZBAXGtQoCAgIAQhEEHEBsaCyAGQYACcUUNACAAIAFBPSAGQQFxrUKAgICAEIRBBxAbGgsgARANBEAgACALEAwMAQsgCSkDACEMIAcgATcDMCAHIAs3AyggByAMNwMgIAAgCiAJKQMIQQMgB0EgahA2IQogACALEAwgACABEAwgChANDQEgACAKEC1FBEBBACEIIAZBgIABcUUNAiAAQcc1QQAQFkF/IQgMAgsgACAHIAkoAgAiCSACEE8iAkEASA0BIAZBgQJxIQgCQAJAIAJFBEAgCEGAAkYNAUEBIQggCS0ABUEBcUUNAQwECwJAIAcoAgAiAiAGEKEDRSACQQFxIAhBgAJGcXINAAJAIAZBgDBxBEAgAkERcUEQRw0BIAZBgBBxBEAgACAEIAcpAxAQWkUNAwsgBkGAIHFFDQEgACAFIAcpAxgQWg0BDAILIAZBgMAAcUUNACAGQQJxRSACQQNxIgJBAkZxDQEgAg0AIAAgAyAHKQMIEFpFDQELIAZBgARxRQ0CIAcoAgBBE3FBAkcNAgsgACAHEE4LIABBiAtBABAWQX8hCAwCCyAAIAcQTkEBIQgMAQsgACAKEAwLIAdBQGskACAIC4cCAgR/An4jAEFAaiIDJABBfyEFAkAgACADQThqIAFB5AAQhwEiBEUNACADKQM4IgEQEgRAIAAgBCkDACACQQAQ3gEhBQwBCyAAIAIQYCIHEA0EQCAAIAEQDAwBCyAEKQMAIQggAyAHNwMoIAMgCDcDICAAIAEgBCkDCEECIANBIGoQNiEBIAAgBxAMIAEQDQ0AIAAgARAtIgZFBEBBACEFDAELIAAgAyAEKAIAIAIQTyICQQBIDQAgAgRAAkACQCADLQAAQQFxBEAgACAEKQMAEKIBIgJBAEgNASACDQILIABB5QpBABAWCyAAIAMQTgwCCyAAIAMQTgsgBiEFCyADQUBrJAAgBQvgBQILfwF+IwBBQGoiBSQAQX8hCwJAIAAgBUE4aiADQecAEIcBIgZFDQAgBSkDOCIDEBIEQCAAIAEgAiAGKAIAQQMQkgEhCwwBCyAAIAMgBikDCEEBIAYQNiIPEA0NACAFQQA2AiwgBUEANgI0IAVBADYCMCAAIAVBNGogDxDcASEHIAUoAjQhCgJAIAcNAAJAIApFDQAgACAKQQN0EGwiCQ0AQQAhCQwBCwJ/AkADQAJAIAQgCkYEQCAKQQEgCkEBSxshCEEBIQQDQCAEIAhGDQIgCSAEIAkgBEEDdGooAgQQiQUhByAEQQFqIQQgB0EASA0ACyAAQaIKQQAQFkEADAQLIAAgDyAEEHsiAxANDQICQCADEJ4BDQAgAxD2Aw0AIAAgAxAMIABBqCNBABAWQQAMBAsgACADEDghCCAAIAMQDCAIRQ0CIAkgBEEDdGoiB0EANgIAIAcgCDYCBCAEQQFqIQQMAQsLQQAgACAGKQMAEKIBIgxBAEgNARogBi0AEQRAIAAQywIMAQsgACAFQSxqIAVBMGogBigCAEEDEJIBBEAgBSgCMCEEIAUoAiwhCAwDCyAFKAIsIQggBSgCMCEEQQAhBwNAIAQgB0cEQCAGLQARBEAgABDLAgwFCyAAIAVBCGogBigCACAIIAdBA3RqIg0oAgQQTyIOQQBIDQQCQCAORQ0AIAAgBUEIahBOIAUtAAhBAXFBACAMGw0AIAkgCiANKAIEEIkFIg1BAEgEQCAAQZUeQQAQFgwGCyAMDQAgCSANQQN0akEBNgIACyAHQQFqIQcMAQsLAkAgDA0AQQAhBgNAIAYgCkYNASAGQQN0IQcgBkEBaiEGIAcgCWooAgANAAsgAEHTCEEAEBYMAwsgACAIIAQQZiAAIA8QDCABIAk2AgAgAiAKNgIAQQAhCwwDC0EACyEEQQAhCAsgACAIIAQQZiAAIAkgChBmIAAgDxAMCyAFQUBrJAAgCwvnAwIEfwJ+IwBB4ABrIgQkAEF/IQUCQCAAIARB2ABqIAJB5gAQhwEiBkUNACAGKAIAIQcgBCkDWCICEBIEQCAAIAEgByADEE8hBQwBCyAAIAMQYCIIEA0EQCAAIAIQDAwBCyAGKQMAIQkgBCAINwNIIAQgCTcDQCAAIAIgBikDCEECIARBQGsQNiECIAAgCBAMIAIQDQ0AAkACQAJAAkAgAhAiDQAgAhASDQAgACACEAwMAQsgACAEIAcgAxBPIgNBAEgNAiADBEAgACAEEE4LIAIQEgRAQQAhBSADRQ0EIAQtAABBAXFFDQEgBy0ABUEBcUUNAQwECyAAIAYpAwAQogEiBkEASA0CIAAgBEEgaiACEIoFIQcgACACEAwgB0EASA0DAkAgAwRAIAQoAgAiBUGAOkGAzgAgBCgCICIDQRBxGyADchChA0UNASADQQFxDQMgBUEBcQ0BIANBEnENAyAFQQJxDQEMAwsgBkUNACAELQAgQQFxDQILIAAgBEEgahBOCyAAQdwoQQAQFkF/IQUMAgsCQCABBEAgASAEKQMgNwMAIAEgBCkDODcDGCABIAQpAzA3AxAgASAEKQMoNwMIDAELIAAgBEEgahBOC0EBIQUMAQsgACACEAwLIARB4ABqJAAgBQslAQF/IAFBKRBAIgMEQCAAIAMpAwAgAhAjIAAgAykDCCACECMLCycBAX8gAUEpEEAiAgRAIAAgAikDABAnIAAgAikDCBAnIAAgAhAhCwsWACAAIAMpAwAgAykDCCADKQMQEP4DC7cBAgN+An8jAEEQayIHJAACQCAAIAdBDGogAykDABCQAiIIRQRAQoCAgIDgACEEDAELIAAgCCAHKAIMQZjvABD/AyEBIAAgCBA3AkAgARANIAJBAkhyDQAgACADKQMIIgYQO0UNAEKAgICA4AAhBAJAIAAQPCIFEA0EQCABIQUMAQsgACAFQS8gAUEHEBtBAEgNACAAIAVBLyAGEIsFIQQLIAAgBRAMDAELIAEhBAsgB0EQaiQAIAQLvQIBA34jAEEQayIDJAAgBAJ/AkACQCAAIAFBJxBqIgJFBEBCgICAgDAhAUKAgICAMCEGDAELIAIoAhgEQEKAgICAMCEBQQEMAwtCgICAgDAhBiAAIAIpAwAiCCACKQMIIgcQ2gEiARANDQAgARAoBEAgAkEBNgIYQoCAgIAwIQFBAQwDCyACKAIQBEAgACAAIAFCABBkED0iBhANDQEgBhD3AQRAIAAgA0EIaiAAIAhB1QAgCEEAEBQQsAFBAEgNAiAAIAhB1QACfiAHpyADKQMIIAIoAhQQhAMiB0KAgICACHxC/////w9YBEAgB0L/////D4MMAQsgB7kQFwsQSEEASA0CCyAAIAYQDAwCCyACQQE2AhgMAQsgACABEAwgACAGEAxCgICAgOAAIQELQQALNgIAIANBEGokACABCwYAIAEQDwuuBgIEfwt+IwBBMGsiBCQAAkAgARAiRQRAIAAQKUKAgICA4AAhAQwBC0KAgICAMCEIAkACQCAAIAMpAwAQLiIPEA0EQEKAgICAMCEKQoCAgIAwIQFCgICAgDAhDUKAgICAMCEQDAELIAAgASAAKQNIEPMBIhAQDQRAQoCAgIAwIQpCgICAgDAhAUKAgICAMCENDAELAkACQCAAIAAgAUHtACABQQAQFBA9Ig0QDQ0AIA2nIgJB9QBBABDZASEGIAJB+QBBABDZAUEASARAIABB3IMBIA1Bqw4QvwEiDRANDQELIAQgDTcDKCAEIAE3AyAgACAQQQIgBEEgahCyASIKEA0NASAAEFEiARANDQICQCADKQMIIgsQEgRAQX8hAyAEQX82AhwMAQsgACAEQRxqIAsQxwFBAEgNAyAEKAIcIgMNAAwECwJAIA+nIgcoAgRB/////wdxIgUEQCAGQX9zQR92IQYgA60hESAFrSESQgAhC0EAIQIDQCACrSEJIAIhAwNAIAMgBU8NAyAAIApB1QAgA60iDhBIQQBIDQYgACAIEAwgACAKIA8Q2gEiCBANDQYCQCAIECgNACAAIARBEGogACAKQdUAIApBABAUELABDQcgBCAEKQMQIgwgEiAMIBJTGyIMNwMQIAkgDFENACAAIAcgAiADEJ0BIgkQDQ0HIAAgASALIAkQcEEASA0HIAtCAXwiCSARUQ0IIAAgBEEIaiAIEEENByAMpyECQgEhDCALIAQpAwgiDkIBIA5CAVUbfCELA0AgCSALUQ0DIAAgACAIIAwQZBA9Ig4QDQ0IIAAgASAJIA4QcEEASA0IIAxCAXwhDCAJQgF8IgkgEVINAAsMCAsgByAOIAYQhAOnIQMMAAsACwALIAAgCiAPENoBIggQDQ0DIAgQKEUNBEIAIQtBACECCyAAIAcgAiAFIAIgBUkbIAUQnQEiCRANDQIgACABIAsgCRBwQQBODQMMAgtCgICAgDAhCgtCgICAgDAhAQsgACABEAxCgICAgOAAIQELIAAgDxAMIAAgEBAMIAAgChAMIAAgDRAMIAAgCBAMCyAEQTBqJAAgAQuZAgEEfgJ+AkAgARAiRQRAIAAQKQwBC0KAgICAMCEGAkACQCAAIAMpAwAQLiIHEA0EQEKAgICAMCEEDAELIAAgAUHVACABQQAQFCIEEA0NACAAIARCABBaRQRAIAAgAUHVAEIAEEhBAEgNAQsgACABIAcQ2gEiBRANDQEgACABQdUAIAFBABAUIgYQDQ0BAkAgACAGIAQQWgRAIAAgBBAMDAELIAAgAUHVACAEEEhBAE4NAEKAgICAMCEEDAILIAAgBxAMIAAgBhAMQv////8PIAUQKA0DGiAAIAVB1wAgBUEAEBQhASAAIAUQDCABDwtCgICAgDAhBQsgACAFEAwgACAHEAwgACAGEAwgACAEEAwLQoCAgIDgAAsLtAMCBX4BfyMAQSBrIgIkAAJAAkAgARAiRQRAIAAQKQwBC0KAgICAMCEFAkAgACADKQMAEC4iCBANBEBCgICAgDAhBEKAgICAMCEGQoCAgIAwIQcMAQsCQAJAIAAgASAAKQNIEPMBIgcQDQRAQoCAgIAwIQQMAQsgACAAIAFB7QAgAUEAEBQQPSIEEA1FDQELQoCAgIAwIQYMAQsgAiAENwMYIAIgATcDECAAIAdBAiACQRBqELIBIgYQDQ0AIAAgAkEIaiAAIAFB1QAgAUEAEBQQsAENACAAIAZB1QACfiACKQMIIgFCgICAgAh8Qv////8PWARAIAFC/////w+DDAELIAG5EBcLEEhBAEgNACAAQScQpAEiBRANDQAgAEEgEC8iA0UNACADIAg3AwggAyAGNwMAIAMgBKciCUHnAEEAENkBQX9zQR92NgIQIAlB9QBBABDZASEJIANBADYCGCADIAlBf3NBH3Y2AhQgBSADEI0BIAAgBxAMIAAgBBAMDAILIAAgCBAMIAAgBxAMIAAgBBAMIAAgBhAMIAAgBRAMC0KAgICA4AAhBQsgAkEgaiQAIAULpQMCBX4CfyMAQRBrIgIkAAJAAkAgARAiRQRAIAAQKQwBC0KAgICAMCEEAkACQCAAIAMpAwAQLiIGEA0NACAAIAAgAUHuACABQQAQFBAtIgNBAEgNAAJAIANFBEAgACABIAYQ2gEhBQwBCyAAIAAgAUHvACABQQAQFBAtIgNBAEgNASAAIAFB1QBCABBIQQBIDQEgABBRIgUQDQ0CIAanIQkDQCAAIAQQDCAAIAEgBhDaASIEEA0NAyAEEChFBEAgACAAIARCABBkED0iBxANDQQgBxD3ASEKIAAgBSAIIAcQkQFBAEgNBCAIQgF8IQggCkUNASAAIAJBCGogACABQdUAIAFBABAUELABQQBIDQQgACABQdUAAn4gCSACKQMIIAMQhAMiB0KAgICACHxC/////w9YBEAgB0L/////D4MMAQsgB7kQFwsQSEEASA0EDAELCyAIpw0AIAAgBRAMQoCAgIAgIQULIAAgBBAMIAAgBhAMDAMLQoCAgIAwIQULIAAgBRAMIAAgBBAMIAAgBhAMC0KAgICA4AAhBQsgAkEQaiQAIAULlRICC38MfiMAQZABayICJAAgAykDCCEZAkAgARAiRQRAIAAQKUKAgICA4AAhEwwBCyAAIAJByABqQQAQQhogAkEQaiIHQQA2AjAgB0KAgICAwAA3AyggByAANgIAIAcgB0EIajYCBEKAgICAMCEUQoCAgIDgACETAkACQCAAIAMpAwAQLiIVEA0EQEKAgICAMCEPQoCAgIAwIRJCgICAgDAhEUKAgICAMCEXDAELQoCAgIAwIRcCQCAAIBkQOyIKRQRAIAAgGRAuIhcQDQ0BIBenIQQLIAAgACABQe4AIAFBABAUEC0iA0EASA0AIAMEQCAAIAAgAUHvACABQQAQFBAtIgZBAEgNASAAIAFB1QBCABBIQQBIDQELAkAgBEUNACADRSAEKAIEQf////8HcXINAAJ/QQAhBEF/IAAgAUE8IAFBABAUIg8QDQ0AGiAAIA8gACkDSBBaIQcgACAPEAwCQCAHRQ0AQX8hBCAAIAFBhgEgAUEAEBQiDxANDQAgD0EwQQAQjwQhBCAAIA8QDAsgBAtFDQBBACEHIwBBMGsiBiQAQoCAgIDgACEPAkAgACABQQEQ3QEiA0UNACAAIAZBCGpBABBCGgJAIAAgFRAuIhMQDQ0AAkAgAygCBEEQaiILLQAAIgRBIXEiDEUEQCAGQgA3AyAMAQsgACABQdUAIAFBABAUIhAQDQ0BIAAgBkEgaiAQELABDQELQQAhAwJAIAstAAEiBUEATQ0AIAAgBUEDdBAvIgcNAEEAIQcMAQsgBEEQcSENIARBAXEhDiATpyIFQRBqIQkgBSkCBCIRp0EfdiEKIAYpAyAhEAJAAkADQCARQv////8HgyAQWQRAIAcgCyAJIBCnIBGnQf////8HcSAKIAAQxQQiBEEBRwRAIARBAE4EQEEAIARBAkcgDBsNBCAAIAFB1QBCABBIQQBODQQMBgsgAEGZNUEAEFAMBQsgBygCACEIIAYgBygCBCAJayAKdSIENgIsIAggCWsgCnUiCCADSgRAIAZBCGogBSADIAgQWQ0ECyAOBEACQCAIIAQiA0cNAAJAAkAgDUUNACAIIAUpAgQiEKdB/////wdxTw0AIBBCgICAgAiDQgBSDQELIAYgCEEBaiIDNgIsDAELIAUgBkEsahDbARogBigCLCEDCyAFKQIEIREgA6whECAEIQMMAgUgACABQdUAIAQiA60QSEEATg0DDAULAAsLIAYgEDcDIAsgBkEIaiAFIAMgBSgCBEH/////B3EQWQ0BIAAgExAMIAAgBxAaIAZBCGoQOSEPDAILIAYgBKw3AyALIAAgExAMIAAgBxAaIAZBCGoQRAsgBkEwaiQAIA8hEwwBCyAVpyEHIANFIQtCgICAgDAhEQNAAkACfwJAAkACQCAAIAEgFRDaASIPEA0NACAPECgNBCMAQRBrIggkAAJ/QX8gAkEQaiIDKAIwDQAaAkAgAygCKCIFIAMoAixIBEAgAygCBCEEDAELIAUgBUEBdWpBH2pBb3EiDEEDdCEEIAMoAgAhCQJAAkAgAygCBCIFIANBCGpGBEAgCUEAIAQgCEEMahC3ASIERQ0BIAQgBSkDADcDACAEIAUpAxg3AxggBCAFKQMQNwMQIAQgBSkDCDcDCAwCCyAJIAUgBCAIQQxqELcBIgQNAQsgAxCOBSADKAIAIA8QDCADQX82AjBBfwwCCyAIKAIMIQUgAyAENgIEIAMgBUEDdiAMajYCLCADKAIoIQULIAMgBUEBajYCKCAEIAVBA3RqIA83AwBBAAshAyAIQRBqJAAgCyADQQBIIgNyBEBBAkEEIAMbDAQLIAAgERAMIAAgACAPQgAQZBA9IhEQDQ0AIBEQ9wFFDQIgACACQeAAaiAAIAFB1QAgAUEAEBQQsAFBAE4NAQtCgICAgDAhD0KAgICAMCESDAYLIAAgAUHVAAJ+IAcgAikDYCAGEIQDIg9CgICAgAh8Qv////8PWARAIA9C/////w+DDAELIA+5EBcLEEgiA0EATg0AIANBHnZBAnEMAQtBAAshA0KAgICAMCEPQoCAgIAwIRIgAw4FAQUDBQAFCwtBACEGQQAhBEKAgICAMCEPQoCAgIAwIRIDQCACKAI4IARKBEAgACACQQxqIAIoAhQgBEEDdGopAwAiFhDcAUEASA0DIAAgERAMIAAgACAWQgAQZBA9IhEQDQ0DIAAgAiAAIBZB1wAgFkEAEBQQsAENAwJAIAIpAwAiECAHKQIEQv////8HgyIBVQRAIAIgATcDACABIRAMAQsgEEIAWQ0AQgAhECACQgA3AwALIAAgEhAMIAAQUSISEA0NAyAAIBJCACAREA8iERBwQQBIDQMgAigCDCIDQQEgA0EBSxsiA60hGkIBIQEDQCABIBpSBEAgACAWIAEQZCIYEA0NBSAYEBJFBEAgACAYED0iGBANDQYLIAAgEiABIBgQcCEFIAFCAXwhASAFQQBODQEMBQsLIAAgFBAMIAAgFkGHASAWQQAQFCIUEA0NAwJAIAoEQCAAIBIgGiAQQv////8PgxBwQQBIDQUgACASIANBAWqtIBUQDxBwQQBIDQUCQCAUEBINACAAIBIgA0ECaq0gFBAPIgEQcEEATg0AIAEhFAwGCyACIBI3A2ggAkKAgICAMDcDYCAAIA8QDCAAIAAgGUECIAJB4ABqQQAQmgMQPSEPDAELQoCAgIAwIQEgFBASRQRAIAAgFBArIgEQDQ0FCyACIBc3A4gBIAIgATcDgAEgAiASNwN4IAIgFTcDaCACIBE3A2AgAiAQQv////8PgzcDcCAAIA8QDCAAIAJB4ABqEI8FIQ8gACABEAwLIA8QDQ0DIAasIBBXBEAgAkHIAGoiAyAHIAYgEKcQWRogAyAPEJwBGiARpykCBEL/////B4MgEHynIQYLIARBAWohBAwBCwsgAkHIAGoiAyAHIAYgBygCBEH/////B3EQWRogAxA5IRMMAgtCgICAgDAhD0KAgICAMCESQoCAgIAwIRELIAJByABqEEQLIAJBEGoQjgUgACAXEAwgACAREAwgACASEAwgACAPEAwgACAUEAwgACAVEAwLIAJBkAFqJAAgEwuNAQAjAEEgayICJAACfgJAIAEQIkUEQCAAECkMAQsgACACQQhqIgNBABBCGiADQS8QPhoCQCADIAAgAUHsACABQQAQFBCPAQ0AIAJBCGoiA0EvED4aIAMgACABQe0AIAFBABAUEI8BDQAgAkEIahA5DAILIAJBCGoQRAtCgICAgOAACyEBIAJBIGokACABCz8BAX5CgICAgOAAIQQgACABIAMpAwAQ2gEiARANBH5CgICAgOAABSABECghAiAAIAEQDCACRa1CgICAgBCECwuAAgEDfgJAIAAgAUEBEN0BIgJFDQAgAykDCCEGAkACQCAAIAMpAwAiBEEAEN0BIgMEQCAGEBJFBEAgAEHn4ABBABAWQoCAgIDgAA8LIAM1AgBCgICAgJB/hBAPIQQgAzUCBEKAgICAkH+EEA8hBQwBC0KAgICAMCEFAn4gBBASBEAgAEEvEDIMAQsgACAEEC4LIgQQDQ0BIAAgBCAGEIQEIgUQDQ0BCyAAIAI1AgBCgICAgJB/hBAMIAAgAjUCBEKAgICAkH+EEAwgAiAFPgIEIAIgBD4CACAAIAFB1QBCABBIQQBIDQEgARAPDwsgACAEEAwgACAFEAwLQoCAgIDgAAtrAQF/IAFC/////29YBEAgABApQoCAgIDgAA8LAn4gACABQQAQ3QEiA0UEQEKAgICAMCAAIAEgACgCKCkDkAEQWg0BGiAAQRIQnANCgICAgOAADwsgAiADKAIELQAQcUEAR61CgICAgBCECwvGAwEHfyMAQSBrIgUkAAJAAkACQAJAAkAgAUL/////b1gEQCAAECkMAQsgACABIAAoAigpA5ABEFoNAiAAIAFBARDdASICDQELQoCAgIDgACEBDAMLIAIoAgAiBygCBCICQf////8HcSIDDQELIABBmvkAEHYhAQwBCyAAIAVBCGogAyACQR92EKoDGiAHKAIEQf////8HcSEIQQAhAANAAkACQCAAIAhIBEAgAEEBaiECQX8hBgJAAn8CQAJAAkACQAJAAkACQCAHIAAQTSIDQdsAaw4DAwECAAsgAiEAAkAgA0EKaw4EBAsLBQALIANBL0cNByAERQ0FQQEhBEEvIQMMBwtB3AAhAyACIAhODQYgAEECaiEAIAcgAhBNIQYMCQtBACEEQd0AIQMMBQtB2wAhAyAEIAIgCE5yDQYgAEECaiACIAcgAhBNQd0ARiICGyEAQd0AQX8gAhshBkEBIQQMBwtB7gAMAgtB8gAMAQtBACEEQS8LIQZB3AAhAwsgAiEADAILIAVBCGoQOSEBDAMLIAIhAEEBIQQLIAVBCGogAxCWARogBkEASA0AIAVBCGogBhCWARoMAAsACyAFQSBqJAAgAQvVAgIDfwF+IwBBEGsiBCQAAkAgAUL/////b1gEQCAAEClCgICAgOAAIQUMAQtCgICAgOAAIQUgACAAIAFB7gAgAUEAEBQQLSICQQBIDQAgAgR/IARB5wA6AAggBEEJagUgBEEIagshAiAAIAAgAUHQywAQzwIQLSIDQQBIDQAgAwRAIAJB6QA6AAAgAkEBaiECCyAAIAAgAUHwzAAQzwIQLSIDQQBIDQAgAwRAIAJB7QA6AAAgAkEBaiECCyAAIAAgAUG0PhDPAhAtIgNBAEgNACADBEAgAkHzADoAACACQQFqIQILIAAgACABQe8AIAFBABAUEC0iA0EASA0AIAMEQCACQfUAOgAAIAJBAWohAgsgACAAIAFB1wwQzwIQLSIDQQBIDQAgACAEQQhqIgAgAwR/IAJB+QA6AAAgAkEBagUgAgsgAGsQ/gEhBQsgBEEQaiQAIAUL1goCEX8BfiMAQRBrIgokAAJAIAAgARBjIgEQDQ0AIwBBEGsiByQAQX8hBCAAIgYgARAuIhUQDUUEQAJAIAYgFaciDSgCBEH/////B3EiCUEBEEpBAnQQLyIARQRAQQAhAAwBCyAHQQA2AgxBACEEA0AgCCAJTg0BIAAgBEECdGogDSAHQQxqENsBNgIAIARBAWohBCAHKAIMIQgMAAsACyAGIBUQDCAKIAA2AggLIAdBEGokACAGIAEQDEKAgICA4AAhASAEIgBBAEgNAAJAIAJFDQAgAykDACIVEBINAAJAIAYgCkEMaiAVEJACIgIEQAJAIAItAABBzgBHDQAgAi0AAUHGAEcNACACQQNBAiACLQACQcsARiIDG2otAAAiBEHDAGtB/wFxQQFLDQAgCigCDCACQQNqIAJBAmogAxsgAmtBAWpGDQILIAYgAhA3IAZB9DsQawsgBiAKKAIIEBoMAgsgBiACEDcgBCADQQF0akHDAGshBQsgCigCCCENIAYoAhAhAiMAQSBrIgckACAHQQhqIgMgAkErEOcCQX8hAgJAIAMgAEECdCIEEM4BDQACQCAFRQRAQQAhAyAAQQAgAEEAShshCQNAIAMgCUYNAiADQQJ0IQggA0EBaiEDIAggDWooAgBB/wFNDQALCyAHQQhqIgMgDSAAIAVBAXYQuAQgAygCDA0BIAcoAgghC0EAIQAgBygCDCIJQQJ2IgJBAWshCANAAkACQCAAIAJIBEAgCyAAIgNBAnRqKAIAEKgCRQ0BA0AgAyAIRgRAIAIhAAwDCyALIANBAWoiBEECdGooAgAiDhCoAiIPBEADQAJAIAAgA0oNACALIANBAnRqIgwoAgAiEBCoAiAPTA0AIAwgEDYCBCADQQFrIQMMAQsLIANBAnQgC2ogDjYCBCAEIQMMAQUgBCEADAMLAAsACwwBCyAAQQFqIQAMAQsLIAVBAXEgCUEISXINASACQQEgAkEBSxshEEEBIQlBASECA0AgCSAQRg0CIAsgCUECdGoiESgCACIFEKgCIQQgAiEDAkACQAJAA0AgA0EATA0BIAsgA0EBayIDQQJ0aiISKAIAIgAQqAIiCARAIAQgCEohAEGAAiEEIAANAQwCCwsCf0EAIQQgAEHMBGwgBUEcbGpBnI2hAWsgAEGAImtBEksgBUHhImtBFEtyRQ0AGgJAIABBgNgCayIDQaPXAEsNACADQf//A3FBHHAgBUGnI2siA0EbS3INACAAIANqDAELIwBBEGsiAyQAQbAHIQgDQAJAIAQgCEoEQEEAIQ4MAQsgA0EIaiAEIAhqQQJtIg9BAXRB4LQDai8BACIOQQZ2IhNBAnRB4MMCaigCACIMQQ52IhQgDkE/cWoiDiATIBQgDEEHdkH/AHEgDEEBdkE/cRC0BBogBSADKAIMayAAIAMoAggiDGsgACAMRhsiDEEASARAIA9BAWshCAwCCyAMRQ0AIA9BAWohBAwBCwsgA0EQaiQAIA4LIgANASARKAIAIQULIAsgAkECdGogBTYCACACQQFqIQIMAQsgEiAANgIACyAJQQFqIQkMAAsACyAHKAIIIgsgDSAEECUaIAAhAgsgCiALNgIEIAdBIGokACAGIA0QGiACQQBIDQAgCigCBCEDIwBBIGsiACQAAkAgBiAAQQhqIAIQQg0AQQAhBSACQQAgAkEAShshAgJAA0AgAiAFRg0BIAVBAnQhBCAFQQFqIQUgAEEIaiADIARqKAIAEMABRQ0ACyAAQQhqEEQMAQsgAEEIahA5IQELIABBIGokACAGIAooAgQQGgsgCkEQaiQAIAELuwECA38BfgJAAkAgAhBeRQ0AIAIQfCEHIAGnKQMgIgpCgICAgHCDQoCAgICQf1INACAHIAqnIggoAgRB/////wdxTw0AAkBBBCAGEKEDRQ0AQQEhAiAGQYDAAHFFDQIgA0KAgICAcINCgICAgJB/Ug0AIAOnIgkpAgRC/////weDQgFSDQAgCCAHEE0gCUEAEE1GDQILIAAgBkHG0QAQeQ8LIAAgASACIAMgBCAFIAZBgIAIchB4IQILIAILHQACfyACEF4EQEEAIAIQfCABEJoESQ0BGgtBAQsLrgEBAn8CQCADEF5FDQAgAqcpAyAiAkKAgICAcINCgICAgJB/Ug0AIAMQfCIDIAKnIgQpAgQiAqdB/////wdxTw0AQQEhBSABRQ0AIARBEGohBAJ/IAJCgICAgAiDUEUEQCAEIANBAXRqLwEADAELIAMgBGotAAALIQMgAUEENgIAIAAgA0H//wNxEKYDIQIgAUKAgICAMDcDGCABQoCAgIAwNwMQIAEgAjcDCAsgBQtoAQJ/IAGnKAIQIgMgAygCGCACcUF/c0ECdGooAgAhACADECohAwNAAkAgAEUEQEEAIQAMAQsgAEEDdCADaiIEQQhrIQAgBEEEaygCACACRg0AIAAoAgBB////H3EhAAwBCwsgAEEARwveAgECfiMAQSBrIgUkAAJAAkAgACABQSUQaiICRQ0AAkAgAikDACIBEBJFBEACQAJAIAGnIgMvAQZBFWtB//8DcUEITQRAIAMQmgFFDQEgABB1DAULIAAgBUEcaiABENwBDQQgBSgCHCEDDAELIAUgAygCKCIDNgIcCyADIAIoAgwiA0sNASAAIAIpAwAQDCACQoCAgIAwNwMACyAEQQE2AgBCgICAgDAhAQwCCyACIANBAWo2AgwgBEEANgIAIAIoAghFBEAgA0EATgRAIAOtIQEMAwsgA7gQFyEBDAILQoCAgIDgACEBIAAgAikDACADEHsiBhANDQEgAigCCEEBRgRAIAYhAQwCCyADQQBOBH4gA60FIAO4EBcLIQcgBSAGNwMIIAUgBzcDACAAQQIgBRCRAyEBIAAgBhAMIAAgBxAMDAELIARBADYCAEKAgICA4AAhAQsgBUEgaiQAIAELsQICBH8CfiMAQRBrIgEkACACKQMYIQcCQAJAIAIpAxAiCBCeAUUEQCAAQZ/5AEEAEBYMAQsgACAIEKYBIgRFBEBBACEEDAELIAAgBxCmASIFRQ0AAn8CQCAAIAQgBRC9BSIDRQ0AIAAgAxCGBEEASARAIABBARCmBEEADAILIAAgA61CgICAgFCEEA8gACkDwAFBAEEAELsFIgcQDQ0AIAAgBxAMIAMhBgsgBgshAyAAIAUQNyADRQ0AIAEgACADEIkDIgc3AwAgBxANDQAgACAAIAIpAwBCgICAgDBBASABECQQDCAAIAEpAwAQDAwBCyABIAAQkwE3AwggACAAIAIpAwhCgICAgDBBASABQQhqECQQDCAAIAEpAwgQDAsgACAEEDcgAUEQaiQAQoCAgIAwC2kBAn8jAEEQayIHJAACfwJAIAGnIggtAAVBCHFFDQAgACAHQQxqIAIQtgFFDQAgBygCDCAIKAIoTw0AQX8gACAIEKADDQEaCyAAIAEgAiADIAQgBSAGQYCACHIQeAshACAHQRBqJAAgAAtGAQJ+IAIgACgCABAyIQNBACEAIAIgASgCABAyIQQCQCADEA0NACAEEA0NACADpyAEpxCVAiEACyACIAMQDCACIAQQDCAAC2sBAX4CQAJAAkACQAJAIAMtAAUiAQ4EAwICAAELIAAgAygCCBD2BA8LIAFBCEYNAgsQAQALIAAgAygCDCADKAIAIAMtAAggAy0ACSADLgEGEMsBDwsgACAAEDwiBCADKAIIIAMoAgwQJiAECwkAIAAgAxCJAws8AQF+IAAQPCIEEA1FBEAgACAEQTwgAa1CgICAgHCEEA9BAxAbQQBOBEAgBA8LIAAgBBAMC0KAgICA4AALXwEBfwJAIAFFBEAgAkUNASAAIAIQpQUPCyACRQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARDpAQwBCyAAKAIIIAAoAgQgAmpPBH8gASACEPIFBUEACw8LQQALJgAgAQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARDpAQsLKAEBfwJAIAGnKAIgIgNFDQAgAygCAEEERg0AIAAgA0EIaiACEO8DCwscAQF/IAFBKBBAIgIEQCAAIAIQ7QMgACACECELCyUBAX8gAacoAiAiAwRAIAAgAykDACACECMgACADKQMIIAIQIwsLJwEBfyABpygCICICBEAgACACKQMAECcgACACKQMIECcgACACECELCx4BAX8gAacoAiAiAgRAIAAgAikDABAnIAAgAhAhCwtDAQJ/IAGnKAIgIgIEQAJAIAIpAwAiARDdBUUNACACKAIMIgNFDQAgACADEPEDIAIpAwAhAQsgACABECcgACACECELC1gBA38CQCABpygCICIERQ0AIARBCGohAyAEQQRqIQUDQCADKAIAIgMgBUYNASAEKAIARQRAIAAgAykDECACECMLIAAgAykDGCACECMgA0EEaiEDDAALAAsLgQEBBX8gAacoAiAiAgRAIAJBBGohBSACKAIIIQMDQCADIAVHBEAgAygCBCEGIANBEGshBCADQQxrKAIARQRAAkAgAigCAARAIAQQpgUMAQsgACAEKQMgECcLIAAgBCkDKBAnCyAAIAQQISAGIQMMAQsLIAAgAigCEBAhIAAgAhAhCwshAQF/IAGnKAIgIgMEQCAAIAM1AgxCgICAgHCEIAIQIwsLQAEBfyABpygCICICBEAgACACNQIMQoCAgIBwhCIBEN0FBH4gAhBGIAI1AgxCgICAgHCEBSABCxAnIAAgAhAhCwtbAQJ/IAGnKAIgIgIEQAJAAkAgAi0ABUUNACAAKAK8ASIDRQ0AIAAoAsQBIAIoAgggAxEDAAwBCyACKAIYIgNFDQAgACACKAIUIAIoAgggAxEGAAsgACACECELCykBAX8gACABpyICNQIkQoCAgICQf4QQJyAAIAI1AiBCgICAgJB/hBAnCxEAIAAgAacoAiApAwAgAhAjCxkBAX8gACABpygCICICKQMAECcgACACECELOgECfwJAIAFBDxBAIgRFDQADQCADIAQtAAVPDQEgACAEIANBA3RqKQMIIAIQIyADQQFqIQMMAAsACws8AQJ/IAFBDxBAIgMEQANAIAIgAy0ABU9FBEAgACADIAJBA3RqKQMIECcgAkEBaiECDAELCyAAIAMQIQsLSQECfyAAIAGnKAIgIgQpAwAgAhAjIAAgBCkDCCACECMDQCADIAQoAhBORQRAIAAgBCADQQN0aikDGCACECMgA0EBaiEDDAELCwtJAQJ/IAAgAacoAiAiAikDABAnIAAgAikDCBAnA0AgAyACKAIQTkUEQCAAIAIgA0EDdGopAxgQJyADQQFqIQMMAQsLIAAgAhAhC44BAQR/IAGnIgMoAiQhBSADKAIgIQQgAygCKCIDBEAgACADrUKAgICAcIQgAhAjCyAEBEACQCAFRQ0AQQAhAwNAIAMgBCgCPE4NAQJAIAUgA0ECdGooAgAiBkUNACAGLQAFQQFxRQ0AIAAgBiACEQMACyADQQFqIQMMAAsACyAAIAStQoCAgIBghCACECMLC3MBA38gAaciAigCKCIDBEAgACADrUKAgICAcIQQJwsgAigCICIDBEAgAigCJCIEBEBBACECA0AgAiADKAI8TkUEQCAAIAQgAkECdGooAgAQ+gEgAkEBaiECDAELCyAAIAQQIQsgACADrUKAgICAYIQQJwsLEgAgAacoAiAiAARAIAAQrgMLCw4AIAAgAacpAyAgAhAjCxkAIAAgAaciACkDIBAnIABCgICAgDA3AyALNQECfyABpyEEA0AgAyAEKAIoT0UEQCAAIAQoAiQgA0EDdGopAwAgAhAjIANBAWohAwwBCwsLPQEDfyABpyEDA0AgAygCJCEEIAIg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KQwBCyABIQgLIAAgBhAMIAAgBxAMCyAKQSBqJAAgCCEGDAELQoCAgIDgACEGIAAgCUEYaiABQdoAEIcBIgVFDQAgCSkDGCEHIAUtABBFBEAgACAHEAwgAEGpNkEAEBYMAQsgBxASBEAgACAFKQMAIAIgAyAEECQhBgwBCyAAIAMgBBCRAyIIEA1FBEAgBSkDACEBIAkgCDcDECAJIAI3AwggCSABNwMAIAAgByAFKQMIQQMgCRAkIQYLIAAgBxAMIAAgCBAMCyAJQSBqJAAgBgsFACAAmwuDAgMCfAJ/AX4gAL0iBUIgiKdB/////wdxIgNBgIDA/wdPBEAgACAAoA8LQZPx/dQCIQQCQCADQf//P00EQEGT8f3LAiEEIABEAAAAAAAAUEOivSIFQiCIp0H/////B3EiA0UNAQsgBUKAgICAgICAgIB/gyADQQNuIARqrUIghoS/IgIgAqIgAiAAo6IiASABIAGioiABRNft5NQAsMI/okTZUee+y0Tov6CiIAEgAUTC1klKYPH5P6JEICTwkuAo/r+gokSS5mEP5gP+P6CgIAKivUKAgICACHxCgICAgHyDvyIBIAAgASABoqMiACABoSABIAGgIACgo6IgAaAhAAsgAAuHAQMBfgF/AXwgAL0iAUL///////////8Ag78hAAJAAnwgAUI0iKdB/w9xIgJB/QdNBEAgAkHfB0kNAiAAIACgIgMgAyAAokQAAAAAAADwPyAAoaOgDAELIABEAAAAAAAA8D8gAKGjIgAgAKALELMDRAAAAAAAAOA/oiEACyAAmiAAIAFCAFMbC6gDAgV/AX4gAL1C////////////AINCgYCAgICAgPj/AFQgAb1C////////////AINCgICAgICAgPj/AFhxRQRAIAAgAaAPCyABvSIHQiCIpyICQYCAwP8DayAHpyIFckUEQCAAELIEDwsgAkEedkECcSIGIAC9IgdCP4inciEDAkAgB0IgiKdB/////wdxIgQgB6dyRQRAAkACQCADQQJrDgIAAQMLRBgtRFT7IQlADwtEGC1EVPshCcAPCyACQf////8HcSICIAVyRQRARBgtRFT7Ifk/IACmDwsCQCACQYCAwP8HRgRAIARBgIDA/wdHDQEgA0EDdEHQhARqKwMADwsgBEGAgMD/B0cgAkGAgIAgaiAET3FFBEBEGC1EVPsh+T8gAKYPCwJ8IAYEQEQAAAAAAAAAACAEQYCAgCBqIAJJDQEaCyAAIAGjmRCyBAshAAJAAkACQCADDgMEAAECCyAAmg8LRBgtRFT7IQlAIABEB1wUMyamobygoQ8LIABEB1wUMyamobygRBgtRFT7IQnAoA8LIANBA3RB8IQEaisDACEACyAAC7IBAwF+AX8BfCAAvSIBQv///////////wCDvyEAAkAgAUI0iKdB/w9xIgJBmQhPBEAgABDaAkTvOfr+Qi7mP6AhAAwBCyACQYAITwRAIAAgAKBEAAAAAAAA8D8gACAAokQAAAAAAADwP6CfIACgo6AQ2gIhAAwBCyACQeUHSQ0AIAAgAKIiAyADRAAAAAAAAPA/oJ9EAAAAAAAA8D+goyAAoBCzAyEACyAAmiAAIAFCAFMbC7kCAwF/A3wBfiAAvSIFQiCIp0H/////B3EiAUGAgMD/A08EQCAFpyABQYCAwP8Da3JFBEAgAEQYLURU+yH5P6JEAAAAAAAAcDigDwtEAAAAAAAAAAAgACAAoaMPCwJAIAFB/////gNNBEAgAUGAgEBqQYCAgPIDSQ0BIAAgACAAohCnAqIgAKAPC0QAAAAAAADwPyAAmaFEAAAAAAAA4D+iIgOfIQAgAxCnAiEEAnwgAUGz5rz/A08EQEQYLURU+yH5PyAAIASiIACgIgAgAKBEB1wUMyamkbygoQwBC0QYLURU+yHpPyAAvUKAgICAcIO/IgIgAqChIAAgAKAgBKJEB1wUMyamkTwgAyACIAKioSAAIAKgoyIAIACgoaGhRBgtRFT7Iek/oAsiAJogACAFQgBTGyEACyAAC3YBAX8gAL1CNIinQf8PcSIBQf8HTQRAIABEAAAAAAAA8L+gIgAgACAAoiAAIACgoJ+gELMDDwsgAUGYCE0EQCAAIACgRAAAAAAAAPC/IAAgAKJEAAAAAAAA8L+gnyAAoKOgENoCDwsgABDaAkTvOfr+Qi7mP6ALWgIBfwF+AkBBsLMEKAIABEBBtLMEKAIAIQIMAQtBsLMEENYFIgI2AgBBtLMEIAIQ4AQiAjYCAAsgAiAAIAAQQ0Gt7wAQtgUiAyABEKcDGkG0swQoAgAgAxAMCwuvpgRRAEGACAvheygpe30AKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt9ACgpIHsKICAgIFtuYXRpdmUgY29kZV0KfQBjYW5ub3QgbWl4ID8/IHdpdGggJiYgb3IgfHwAcHJveHk6IHByb3BlcnR5IG5vdCBwcmVzZW50IGluIHRhcmdldCB3ZXJlIHJldHVybmVkIGJ5IG5vbiBleHRlbnNpYmxlIHByb3h5AHJldm9rZWQgcHJveHkAUHJveHkAYWRkX3Byb3BlcnR5AHByb3h5OiBjYW5ub3Qgc2V0IHByb3BlcnR5AG5vIHNldHRlciBmb3IgcHJvcGVydHkAdmFsdWUgaGFzIG5vIHByb3BlcnR5AGNvdWxkIG5vdCBkZWxldGUgcHJvcGVydHkAcHJveHk6IGR1cGxpY2F0ZSBwcm9wZXJ0eQBKU19EZWZpbmVBdXRvSW5pdFByb3BlcnR5AGhhc093blByb3BlcnR5AHByb3h5OiBpbmNvbnNpc3RlbnQgZGVsZXRlUHJvcGVydHkAcHJveHk6IGluY29uc2lzdGVudCBkZWZpbmVQcm9wZXJ0eQBKU19EZWZpbmVQcm9wZXJ0eQAhbXItPmVtcHR5AGluZmluaXR5AEluZmluaXR5AG91dCBvZiBtZW1vcnkAdW5rbm93biB1bmljb2RlIGdlbmVyYWwgY2F0ZWdvcnkAR2VuZXJhbF9DYXRlZ29yeQBldmVyeQBhbnkAYXBwbHkAJyVzJyBpcyByZWFkLW9ubHkAZXhwZWN0aW5nIGNhdGNoIG9yIGZpbmFsbHkAc3RpY2t5AHN0cmluZ2lmeQBzdWJhcnJheQBlbXB0eSBhcnJheQBub24gaW50ZWdlciBpbmRleCBpbiB0eXBlZCBhcnJheQBuZWdhdGl2ZSBpbmRleCBpbiB0eXBlZCBhcnJheQBvdXQtb2YtYm91bmQgaW5kZXggaW4gdHlwZWQgYXJyYXkAY2Fubm90IGNyZWF0ZSBudW1lcmljIGluZGV4IGluIHR5cGVkIGFycmF5AGlzQXJyYXkAVHlwZWRBcnJheQBnZXREYXkAZ2V0VVRDRGF5AGpzX2dldF9hdG9tX2luZGV4AGludmFsaWQgYXJyYXkgaW5kZXgAb3V0LW9mLWJvdW5kIG51bWVyaWMgaW5kZXgASlNfQXRvbUlzQXJyYXlJbmRleABmaW5kSW5kZXgAaW52YWxpZCBleHBvcnQgc3ludGF4AGludmFsaWQgYXNzaWdubWVudCBzeW50YXgAbWF4AFx1JTA0eABpbnZhbGlkIG9wY29kZTogcGM9JXUgb3Bjb2RlPTB4JTAyeAAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AGxpbmUgdGVybWluYXRvciBub3QgYWxsb3dlZCBhZnRlciB0aHJvdwBwb3cAbm93AHN0YWNrIG92ZXJmbG93AG11c3QgYmUgY2FsbGVkIHdpdGggbmV3AGlzVmlldwBEYXRhVmlldwByYXcAJXUAY2xhc3MgZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAZnVuY3Rpb24gZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAbGV4aWNhbCBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABkdXBsaWNhdGUgYXJndW1lbnQgbmFtZXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0AGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0AGltcG9ydC5tZXRhIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb250ZXh0AEpTX0ZyZWVDb250ZXh0AEpTQ29udGV4dABqc19tYXBfaXRlcmF0b3JfbmV4dABqc19hc3luY19nZW5lcmF0b3JfcmVzdW1lX25leHQAdW5leHBlY3RlZCBlbmQgb2YgaW5wdXQAdHQAZXhwb3J0ZWQgdmFyaWFibGUgJyVzJyBkb2VzIG5vdCBleGlzdABwcml2YXRlIGNsYXNzIGZpZWxkICclcycgZG9lcyBub3QgZXhpc3QAdGVzdABhc3NpZ25tZW50IHJlc3QgcHJvcGVydHkgbXVzdCBiZSBsYXN0AHNxcnQAc29ydABjYnJ0AHRyaW1TdGFydABwYWRTdGFydAB1bmtub3duIHVuaWNvZGUgc2NyaXB0AFNjcmlwdABoeXBvdABmcmVlX3plcm9fcmVmY291bnQAc3RyX2luZGV4ID09IG51bV9rZXlzX2NvdW50ICsgc3RyX2tleXNfY291bnQAbnVtX2luZGV4ID09IG51bV9rZXlzX2NvdW50AHN5bV9pbmRleCA9PSBhdG9tX2NvdW50AGxhYmVsID49IDAgJiYgbGFiZWwgPCBzLT5sYWJlbF9jb3VudABsYWIxID49IDAgJiYgbGFiMSA8IHMtPmxhYmVsX2NvdW50AHZhbCA8IHMtPmNhcHR1cmVfY291bnQAdmFsMiA8IHMtPmNhcHR1cmVfY291bnQAaW52YWxpZCByZXBlYXQgY291bnQAaW52YWxpZCByZXBldGl0aW9uIGNvdW50AGZvbnQAaW52YWxpZCBjb2RlIHBvaW50AGZyb21Db2RlUG9pbnQAaW52YWxpZCBoaW50AGVuY29kZVVSSUNvbXBvbmVudABkZWNvZGVVUklDb21wb25lbnQAdW5leHBlY3RlZCBlbmQgb2YgY29tbWVudABpbnZhbGlkIHN3aXRjaCBzdGF0ZW1lbnQAcGFyc2VJbnQAZHVwbGljYXRlIGRlZmF1bHQAc3BsaXQAZXhwZWN0aW5nIGhleCBkaWdpdAB0cmltUmlnaHQAcmVkdWNlUmlnaHQAdW5zaGlmdAB0cmltTGVmdABpbnZhbGlkIG9mZnNldABpbnZhbGlkIGJ5dGVPZmZzZXQAZ2V0VGltZXpvbmVPZmZzZXQAcmVzb2x2aW5nIGZ1bmN0aW9uIGFscmVhZHkgc2V0AHByb3h5OiBpbmNvbnNpc3RlbnQgc2V0AGZpbmRfanVtcF90YXJnZXQAZXhwZWN0aW5nIHRhcmdldABpbnZhbGlkIGRlc3RydWN0dXJpbmcgdGFyZ2V0AHByb3h5OiBpbmNvbnNpc3RlbnQgZ2V0AFdlYWtTZXQAY29uc3RydWN0AEpTX0ZyZWVBdG9tU3RydWN0AHVzZSBzdHJpY3QAUmVmbGVjdAByZWplY3QAbm90IGFuIEFzeW5jR2VuZXJhdG9yIG9iamVjdABjYW5ub3QgY29udmVydCB0byBvYmplY3QAaW52YWxpZCBicmFuZCBvbiBvYmplY3QAb3BlcmFuZCAncHJvdG90eXBlJyBwcm9wZXJ0eSBpcyBub3QgYW4gb2JqZWN0AHJlY2VpdmVyIGlzIG5vdCBhbiBvYmplY3QAaXRlcmF0b3IgbXVzdCByZXR1cm4gYW4gb2JqZWN0AG5vdCBhIERhdGUgb2JqZWN0AG5vdCBhIG9iamVjdABKU09iamVjdABwYXJzZUZsb2F0AGZsYXQAbm90aGluZyB0byByZXBlYXQAY29uY2F0AGNvZGVQb2ludEF0AGNoYXJBdABjaGFyQ29kZUF0AGtleXMAcHJveHk6IHRhcmdldCBwcm9wZXJ0eSBtdXN0IGJlIHByZXNlbnQgaW4gcHJveHkgb3duS2V5cwAgIGZhc3QgYXJyYXlzAGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnIGlzIGFtYmlndW91cwBwcml2YXRlIGNsYXNzIGZpZWxkICclcycgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgYXJndW1lbnRzAFRvbyBtYW55IGNhbGwgYXJndW1lbnRzACAgZWxlbWVudHMAaW52YWxpZCBudW1iZXIgb2YgZGlnaXRzAGJpbmFyeSBvYmplY3RzAGludmFsaWQgcHJvcGVydHkgYWNjZXNzAGpzX29wX2RlZmluZV9jbGFzcwBmZC0+Ynl0ZV9jb2RlLmJ1ZltkZWZpbmVfY2xhc3NfcG9zXSA9PSBPUF9kZWZpbmVfY2xhc3MAX19nZXRDbGFzcwBzZXRIb3VycwBnZXRIb3VycwBzZXRVVENIb3VycwBnZXRVVENIb3VycwBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzAHRvbyBtYW55IGltYnJpY2F0ZWQgcXVhbnRpZmllcnMAdW5pY29kZV9wcm9wX29wcwBhY29zAGZvciBhd2FpdCBpcyBvbmx5IHZhbGlkIGluIGFzeW5jaHJvbm91cyBmdW5jdGlvbnMAbmV3LnRhcmdldCBvbmx5IGFsbG93ZWQgd2l0aGluIGZ1bmN0aW9ucwBieXRlY29kZSBmdW5jdGlvbnMAQyBmdW5jdGlvbnMAcHJveHk6IGluY29uc2lzdGVudCBwcmV2ZW50RXh0ZW5zaW9ucwBTY3JpcHRfRXh0ZW5zaW9ucwBhdG9tcwBwcm94eTogcHJvcGVydGllcyBtdXN0IGJlIHN0cmluZ3Mgb3Igc3ltYm9scwBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMAcmVzb2x2ZV9sYWJlbHMASlNfRXZhbFRoaXMAc3RyaW5ncwBpbnZhbGlkIGRlc2NyaXB0b3IgZmxhZ3MAaW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gZmxhZ3MAdmFsdWVzAHNldE1pbnV0ZXMAZ2V0TWludXRlcwBzZXRVVENNaW51dGVzAGdldFVUQ01pbnV0ZXMAdG9vIG1hbnkgY2FwdHVyZXMAICBzaGFwZXMAZ2V0T3duUHJvcGVydHlOYW1lcwBnY19mcmVlX2N5Y2xlcwBhZGRfZXZhbF92YXJpYWJsZXMAcmVzb2x2ZV92YXJpYWJsZXMAdG9vIG1hbnkgbG9jYWwgdmFyaWFibGVzAHRvbyBtYW55IGNsb3N1cmUgdmFyaWFibGVzAGNvbXBhY3RfcHJvcGVydGllcwAgIHByb3BlcnRpZXMAZGVmaW5lUHJvcGVydGllcwBlbnRyaWVzAGZyb21FbnRyaWVzAHRvbyBtYW55IHJhbmdlcwBpbmNsdWRlcwBzZXRNaWxsaXNlY29uZHMAZ2V0TWlsbGlzZWNvbmRzAHNldFVUQ01pbGxpc2Vjb25kcwBnZXRVVENNaWxsaXNlY29uZHMAc2V0U2Vjb25kcwBnZXRTZWNvbmRzAHNldFVUQ1NlY29uZHMAZ2V0VVRDU2Vjb25kcwBpdGFsaWNzAGFicwBwcm94eTogaW5jb25zaXN0ZW50IGhhcwAlLipzACAoJXMAc2V0ICVzAGdldCAlcwAgICAgYXQgJXMAbm90IGEgJXMAdW5zdXBwb3J0ZWQga2V5d29yZDogJXMAc3Vic3RyAHByb3h5OiBpbmNvbnNpc3RlbnQgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAHN1cGVyKCkgaXMgb25seSB2YWxpZCBpbiBhIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IAcGFyZW50IGNsYXNzIG11c3QgYmUgY29uc3RydWN0b3IAbm90IGEgY29uc3RydWN0b3IAQXJyYXkgSXRlcmF0b3IAU2V0IEl0ZXJhdG9yAE1hcCBJdGVyYXRvcgBSZWdFeHAgU3RyaW5nIEl0ZXJhdG9yAG5vdCBhbiBBc3luYy1mcm9tLVN5bmMgSXRlcmF0b3IAY2Fubm90IGludm9rZSBhIHJ1bm5pbmcgZ2VuZXJhdG9yAG5vdCBhIGdlbmVyYXRvcgBBc3luY0dlbmVyYXRvcgBzeW50YXggZXJyb3IAU3ludGF4RXJyb3IARXZhbEVycm9yAEludGVybmFsRXJyb3IAQWdncmVnYXRlRXJyb3IAVHlwZUVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAVVJJRXJyb3IAZmxvb3IAZm9udGNvbG9yAGFuY2hvcgBmb3IAa2V5Rm9yAGV4cGVjdGluZyBzdXJyb2dhdGUgcGFpcgBhIGRlY2xhcmF0aW9uIGluIHRoZSBoZWFkIG9mIGEgZm9yLSVzIGxvb3AgY2FuJ3QgaGF2ZSBhbiBpbml0aWFsaXplcgAnYXJndW1lbnRzJyBpZGVudGlmaWVyIGlzIG5vdCBhbGxvd2VkIGluIGNsYXNzIGZpZWxkIGluaXRpYWxpemVyAGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgZ2V0dGVyIG9yIHNldHRlcgBpbnZhbGlkIHNldHRlcgBpbnZhbGlkIGdldHRlcgBmaWx0ZXIAbWlzc2luZyBmb3JtYWwgcGFyYW1ldGVyACJ1c2Ugc3RyaWN0IiBub3QgYWxsb3dlZCBpbiBmdW5jdGlvbiB3aXRoIGRlZmF1bHQgb3IgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXIAaW52YWxpZCBjaGFyYWN0ZXIAdW5leHBlY3RlZCBjaGFyYWN0ZXIAcHJpdmF0ZSBjbGFzcyBmaWVsZCBmb3JiaWRkZW4gYWZ0ZXIgc3VwZXIAaW52YWxpZCByZWRlZmluaXRpb24gb2YgbGV4aWNhbCBpZGVudGlmaWVyACdsZXQnIGlzIG5vdCBhIHZhbGlkIGxleGljYWwgaWRlbnRpZmllcgBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBnbG9iYWwgaWRlbnRpZmllcgB5aWVsZCBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAJyVzJyBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAb3RoZXIAYXRvbTFfaXNfaW50ZWdlciAmJiBhdG9tMl9pc19pbnRlZ2VyAGlzSW50ZWdlcgBpc1NhZmVJbnRlZ2VyAGJ1ZmZlcgBTaGFyZWRBcnJheUJ1ZmZlcgBjYW5ub3QgdXNlIGlkZW50aWNhbCBBcnJheUJ1ZmZlcgBjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gbnVtYmVyAG5vdCBhIG51bWJlcgBsaW5lTnVtYmVyAG1hbGZvcm1lZCB1bmljb2RlIGNoYXIAY2xlYXIAc2V0WWVhcgBnZXRZZWFyAHNldEZ1bGxZZWFyAGdldEZ1bGxZZWFyAHNldFVUQ0Z1bGxZZWFyAGdldFVUQ0Z1bGxZZWFyAHVuZXhwZWN0ZWQgbGluZSB0ZXJtaW5hdG9yIGluIHJlZ2V4cAB1bmV4cGVjdGVkIGVuZCBvZiByZWdleHAAUmVnRXhwAHN1cABpbnZhbGlkIGdyb3VwAHBvcABjb250aW51ZSBtdXN0IGJlIGluc2lkZSBsb29wAGR1bXAAbnVtX2tleXNfY21wAHVzZSBzdHJpcABtYXAAZmxhdE1hcABXZWFrTWFwAGV4cGVjdGluZyAneycgYWZ0ZXIgXHAAbG9nMXAAaGFzT3duAGl0ZXJhdG9yX2Nsb3NlX3JldHVybgBwcm9taXNlIHNlbGYgcmVzb2x1dGlvbgBvdXQgb2YgbWVtb3J5IGluIHJlZ2V4cCBleGVjdXRpb24AZGVzY3JpcHRpb24AcHJveHk6IGRlZmluZVByb3BlcnR5IGV4Y2VwdGlvbgBqc19hc3luY19nZW5lcmF0b3JfcmVzb2x2ZV9mdW5jdGlvbgBqc19jcmVhdGVfZnVuY3Rpb24Ac2V0L2FkZCBpcyBub3QgYSBmdW5jdGlvbgByZXR1cm4gbm90IGluIGEgZnVuY3Rpb24AQXN5bmNHZW5lcmF0b3JGdW5jdGlvbgBjYWxsRXh0ZXJuYWxGdW5jdGlvbgBBc3luY0Z1bmN0aW9uAGF3YWl0IGluIGRlZmF1bHQgZXhwcmVzc2lvbgB5aWVsZCBpbiBkZWZhdWx0IGV4cHJlc3Npb24AaW52YWxpZCBkZWNpbWFsIGVzY2FwZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AYmFjayByZWZlcmVuY2Ugb3V0IG9mIHJhbmdlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbgBpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AZXhwZWN0ZWQgJ29mJyBvciAnaW4nIGluIGZvciBjb250cm9sIGV4cHJlc3Npb24AdG9vIGNvbXBsaWNhdGVkIGRlc3RydWN0dXJpbmcgZXhwcmVzc2lvbgBleHBlY3RlZCAnfScgYWZ0ZXIgdGVtcGxhdGUgZXhwcmVzc2lvbgB0b1ByZWNpc2lvbgBhc2luAGpvaW4AbWluAGNvcHlXaXRoaW4AdGVtcGxhdGUgbGl0ZXJhbCBjYW5ub3QgYXBwZWFyIGluIGFuIG9wdGlvbmFsIGNoYWluAGNpcmN1bGFyIHByb3RvdHlwZSBjaGFpbgBhc3NpZ24AaXNGcm96ZW4AbWFya19jaGlsZHJlbgAocG9zICsgbGVuKSA8PSBiY19idWZfbGVuAHVuZXhwZWN0ZWQgZWxsaXBzaXMgdG9rZW4AdGhlbgBzZXR0ZXIgaXMgZm9yYmlkZGVuAG51bGwgb3IgdW5kZWZpbmVkIGFyZSBmb3JiaWRkZW4AYXRhbgBuYW4Abm90IGEgYm9vbGVhbgBCb29sZWFuAGdjX3NjYW4AYmFkIG5vcm1hbGl6YXRpb24gZm9ybQBKU19OZXdTeW1ib2xGcm9tQXRvbQBmcm9tAHJhbmRvbQB0cmltAGltdWwAbm90IGEgc3ltYm9sAFN5bWJvbABSZWdFeHAgZXhlYyBtZXRob2QgbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwAcGFyZW50IHByb3RvdHlwZSBtdXN0IGJlIGFuIG9iamVjdCBvciBudWxsAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiBudWxsAGNhbm5vdCByZWFkIHByb3BlcnR5ICclcycgb2YgbnVsbABOdWxsAGZpbGwAbmV3IEFycmF5QnVmZmVyIGlzIHRvbyBzbWFsbABUeXBlZEFycmF5IGxlbmd0aCBpcyB0b28gc21hbGwAY2FsbABkb3RBbGwAbWF0Y2hBbGwAcmVwbGFjZUFsbABjZWlsAHVwZGF0ZV9sYWJlbABiY19idWZbcG9zXSA9PSBPUF9sYWJlbABldmFsAGludmFsaWQgbnVtYmVyIGxpdGVyYWwAbWFsZm9ybWVkIGVzY2FwZSBzZXF1ZW5jZSBpbiBzdHJpbmcgbGl0ZXJhbABKU19TZXRQcm9wZXJ0eUludGVybmFsAEpTX0dldE93blByb3BlcnR5TmFtZXNJbnRlcm5hbABfX0pTX0V2YWxJbnRlcm5hbAB0b0V4cG9uZW50aWFsAHNlYWwAZ2xvYmFsAGJsaW5rAF9fZGF0ZV9jbG9jawBzdGFjawBscmVfZXhlY19iYWNrdHJhY2sAcy0+aXNfd2VhawBpAHNldE1vbnRoAGdldE1vbnRoAHNldFVUQ01vbnRoAGdldFVUQ01vbnRoAGludmFsaWQga2V5d29yZDogd2l0aABzdGFydHNXaXRoAGVuZHNXaXRoAHByb3AgPT0gSlNfQVRPTV9sZW5ndGgAaW52YWxpZCBhcnJheSBsZW5ndGgAaW52YWxpZCBhcnJheSBidWZmZXIgbGVuZ3RoAGludmFsaWQgbGVuZ3RoAGludmFsaWQgYnl0ZUxlbmd0aABNYXRoAHB1c2gAYWNvc2gASlNfUmVzaXplQXRvbUhhc2gAYXNpbmgAYXRhbmgAYnJlYWsgbXVzdCBiZSBpbnNpZGUgbG9vcCBvciBzd2l0Y2gAbWF0Y2gAY2F0Y2gAc2VhcmNoAGZvckVhY2gAbG9nAEFycmF5IHRvbyBsb25nAHN0cmluZyB0b28gbG9uZwBBcnJheSBsb28gbG9uZwBzdWJzdHJpbmcAY2Fubm90IGNvbnZlcnQgc3ltYm9sIHRvIHN0cmluZwB1bmV4cGVjdGVkIGVuZCBvZiBzdHJpbmcAbm90IGEgc3RyaW5nAGludmFsaWQgY2hhcmFjdGVyIGluIGEgSlNPTiBzdHJpbmcAdG9TdHJpbmcAdG9EYXRlU3RyaW5nAHRvTG9jYWxlRGF0ZVN0cmluZwB0b1RpbWVTdHJpbmcAdG9Mb2NhbGVUaW1lU3RyaW5nAHRvTG9jYWxlU3RyaW5nAHRvR01UU3RyaW5nAEpTU3RyaW5nAHRvSVNPU3RyaW5nAHRvVVRDU3RyaW5nAGR1cGxpY2F0ZSBpbXBvcnQgYmluZGluZwBpbnZhbGlkIGltcG9ydCBiaW5kaW5nAGJpZwByZWdleHAgbXVzdCBoYXZlIHRoZSAnZycgZmxhZwBvZgBpbmYAZGlmZiA9PSAoaW50OF90KWRpZmYAZGlmZiA9PSAoaW50MTZfdClkaWZmAGhyZWYAZ2NfZGVjcmVmAGZyZWVfdmFyX3JlZgBvcHRpbWl6ZV9zY29wZV9tYWtlX2dsb2JhbF9yZWYAcmVzZXRfd2Vha19yZWYAZGVsZXRlX3dlYWtfcmVmAG9wdGltaXplX3Njb3BlX21ha2VfcmVmAGluZGV4T2YAbGFzdEluZGV4T2YAdmFsdWVPZgBzZXRQcm90b3R5cGVPZgBnZXRQcm90b3R5cGVPZgBpc1Byb3RvdHlwZU9mACUuKmYAZm9udHNpemUAbmV3X3NpemUgPD0gc2gtPnByb3Bfc2l6ZQBkZXNjciA8IHJ0LT5hdG9tX3NpemUAYXRvbSA8IHJ0LT5hdG9tX3NpemUAY29tcHV0ZV9zdGFja19zaXplAG4gPCBidWZfc2l6ZQBub3JtYWxpemUAZnJlZXplAHJlc29sdmUAdG9QcmltaXRpdmUAcHV0X2x2YWx1ZQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgdmFsdWUAcmVzdCBlbGVtZW50IGNhbm5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZQBpbnZhbGlkIHJldCB2YWx1ZQBfX0pTX0F0b21Ub1ZhbHVlAF9fcXVvdGUAaXNGaW5pdGUAZGVsZXRlAGNyZWF0ZQBzZXREYXRlAGdldERhdGUAc2V0VVRDRGF0ZQBnZXRVVENEYXRlAEludmFsaWQgRGF0ZQByZXZlcnNlAHBhcnNlAHByb3h5IHByZXZlbnRFeHRlbnNpb25zIGhhbmRsZXIgcmV0dXJuZWQgZmFsc2UAUHJvbWlzZQB0b0xvd2VyQ2FzZQB0b0xvY2FsZUxvd2VyQ2FzZQB0b1VwcGVyQ2FzZQB0b0xvY2FsZVVwcGVyQ2FzZQBpZ25vcmVDYXNlAGxvY2FsZUNvbXBhcmUAcHJveHk6IGluY29uc2lzdGVudCBwcm90b3R5cGUAcHJveHk6IGJhZCBwcm90b3R5cGUAbm90IGEgcHJvdG90eXBlAGludmFsaWQgb2JqZWN0IHR5cGUAdW5lc2NhcGUAbm9uZQByZXN0IGVsZW1lbnQgbXVzdCBiZSB0aGUgbGFzdCBvbmUAbXVsdGlsaW5lACAgcGMybGluZQBzb21lAEpTX0ZyZWVSdW50aW1lAEpTUnVudGltZQBzZXRUaW1lAGdldFRpbWUAc2V0X29iamVjdF9uYW1lAGV4cGVjdGluZyBwcm9wZXJ0eSBuYW1lAHVua25vd24gdW5pY29kZSBwcm9wZXJ0eSBuYW1lAGludmFsaWQgcHJvcGVydHkgbmFtZQBkdXBsaWNhdGUgX19wcm90b19fIHByb3BlcnR5IG5hbWUAaW52YWxpZCByZWRlZmluaXRpb24gb2YgcGFyYW1ldGVyIG5hbWUAZXhwZWN0aW5nIGdyb3VwIG5hbWUAZHVwbGljYXRlIGdyb3VwIG5hbWUAaW52YWxpZCBncm91cCBuYW1lAGR1cGxpY2F0ZSBsYWJlbCBuYW1lAGludmFsaWQgZmlyc3QgY2hhcmFjdGVyIG9mIHByaXZhdGUgbmFtZQBpbnZhbGlkIGxleGljYWwgdmFyaWFibGUgbmFtZQBpbnZhbGlkIG1ldGhvZCBuYW1lAGV4cGVjdGluZyBmaWVsZCBuYW1lAGludmFsaWQgZmllbGQgbmFtZQBjbGFzcyBzdGF0ZW1lbnQgcmVxdWlyZXMgYSBuYW1lAGZpbGVOYW1lAGNvbXBpbGUAb2JqZWN0IGlzIG5vdCBleHRlbnNpYmxlAHByb3h5OiBpbmNvbnNpc3RlbnQgaXNFeHRlbnNpYmxlAGNhbm5vdCBoYXZlIHNldHRlci9nZXR0ZXIgYW5kIHZhbHVlIG9yIHdyaXRhYmxlAHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUAdmFsdWUgaXMgbm90IGl0ZXJhYmxlAHByb3BlcnR5SXNFbnVtZXJhYmxlAG1pc3NpbmcgaW5pdGlhbGl6ZXIgZm9yIGNvbnN0IHZhcmlhYmxlAGxleGljYWwgdmFyaWFibGUAaW52YWxpZCByZWRlZmluaXRpb24gb2YgYSB2YXJpYWJsZQByZXZvY2FibGUAc3RyaWtlAGludmFsaWQgY2xhc3MgcmFuZ2UAbWVzc2FnZQBhc3luY19mdW5jX2ZyZWUAaW52YWxpZCBsdmFsdWUgaW4gc3RyaWN0IG1vZGUAaW52YWxpZCB2YXJpYWJsZSBuYW1lIGluIHN0cmljdCBtb2RlAGNhbm5vdCBkZWxldGUgYSBkaXJlY3QgcmVmZXJlbmNlIGluIHN0cmljdCBtb2RlAG9jdGFsIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlAG9jdGFsIGxpdGVyYWxzIGFyZSBkZXByZWNhdGVkIGluIHN0cmljdCBtb2RlAHVuaWNvZGUAICBieXRlY29kZQBKU0Z1bmN0aW9uQnl0ZWNvZGUAc2tpcF9kZWFkX2NvZGUAaW52YWxpZCBhcmd1bWVudCBuYW1lIGluIHN0cmljdCBjb2RlAGludmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgY29kZQBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBnbG9iYWwgaWRlbnRpZmllciBpbiBtb2R1bGUgY29kZQBpbXBvcnQubWV0YSBvbmx5IHZhbGlkIGluIG1vZHVsZSBjb2RlAGZyb21DaGFyQ29kZQBpbnZhbGlkIGZvciBpbi9vZiBsZWZ0IGhhbmQtc2lkZQBpbnZhbGlkIGFzc2lnbm1lbnQgbGVmdC1oYW5kIHNpZGUAcmVkdWNlAHNvdXJjZQAndGhpcycgY2FuIGJlIGluaXRpYWxpemVkIG9ubHkgb25jZQBwcm9wZXJ0eSBjb25zdHJ1Y3RvciBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlAGludmFsaWQgVVRGLTggc2VxdWVuY2UAY2lyY3VsYXIgcmVmZXJlbmNlAHNsaWNlAHNwbGljZQByYWNlAHJlcGxhY2UAJSsuKmUAdW5leHBlY3RlZCAnYXdhaXQnIGtleXdvcmQAdW5leHBlY3RlZCAneWllbGQnIGtleXdvcmQAbWFwX2RlY3JlZl9yZWNvcmQAaXRlcmF0b3IgZG9lcyBub3QgaGF2ZSBhIHRocm93IG1ldGhvZABvYmplY3QgbmVlZHMgdG9JU09TdHJpbmcgbWV0aG9kACdzdXBlcicgaXMgb25seSB2YWxpZCBpbiBhIG1ldGhvZABmcm91bmQAYnJlYWsvY29udGludWUgbGFiZWwgbm90IGZvdW5kAG91dCBvZiBib3VuZABmaW5kAGJpbmQAaW52YWxpZCBpbmRleCBmb3IgYXBwZW5kAGV4dHJhbmVvdXMgY2hhcmFjdGVycyBhdCB0aGUgZW5kAHVuZXhwZWN0ZWQgZGF0YSBhdCB0aGUgZW5kAHVuZXhwZWN0ZWQgZW5kAGludmFsaWQgaW5jcmVtZW50L2RlY3JlbWVudCBvcGVyYW5kAGludmFsaWQgJ2luc3RhbmNlb2YnIHJpZ2h0IG9wZXJhbmQAaW52YWxpZCAnaW4nIG9wZXJhbmQAdHJpbUVuZABwYWRFbmQAYm9sZAAlbGxkAGdjX2RlY3JlZl9jaGlsZAByZXNvbHZlX3Njb3BlX3ByaXZhdGVfZmllbGQAY2Fubm90IGRlbGV0ZSBhIHByaXZhdGUgY2xhc3MgZmllbGQAZXhwZWN0aW5nIDxicmFuZD4gcHJpdmF0ZSBmaWVsZAAlcyBpcyBub3QgaW5pdGlhbGl6ZWQAZml4ZWQAdG9GaXhlZABzZXRfb2JqZWN0X25hbWVfY29tcHV0ZWQAcmVnZXggbm90IHN1cHBvcnRlZABldmFsIGlzIG5vdCBzdXBwb3J0ZWQAUmVnRXhwIGFyZSBub3Qgc3VwcG9ydGVkAGludGVycnVwdGVkACVzIG9iamVjdCBleHBlY3RlZABpZGVudGlmaWVyIGV4cGVjdGVkAGJ5dGVjb2RlIGZ1bmN0aW9uIGV4cGVjdGVkAHN0cmluZyBleHBlY3RlZABmcm9tIGNsYXVzZSBleHBlY3RlZABmdW5jdGlvbiBuYW1lIGV4cGVjdGVkAHZhcmlhYmxlIG5hbWUgZXhwZWN0ZWQAbWV0YSBleHBlY3RlZAByZWplY3RlZABtZW1vcnkgYWxsb2NhdGVkAG1lbW9yeSB1c2VkAGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IgbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIHVuZGVmaW5lZABjYW5ub3Qgc2V0IHByb3BlcnR5ICclcycgb2YgdW5kZWZpbmVkAGNhbm5vdCByZWFkIHByb3BlcnR5ICclcycgb2YgdW5kZWZpbmVkAGZsYWdzIG11c3QgYmUgdW5kZWZpbmVkAFVuZGVmaW5lZABwcml2YXRlIGNsYXNzIGZpZWxkIGlzIGFscmVhZHkgZGVmaW5lZAAnJXMnIGlzIG5vdCBkZWZpbmVkAGdyb3VwIG5hbWUgbm90IGRlZmluZWQAYWxsU2V0dGxlZABmdWxmaWxsZWQAY2Fubm90IGJlIGNhbGxlZABpc1NlYWxlZAAhc2gtPmlzX2hhc2hlZAB2YXJfcmVmLT5pc19kZXRhY2hlZABBcnJheUJ1ZmZlciBpcyBkZXRhY2hlZABhZGQAJSswN2QAJTA0ZAAlMDJkJTAyZAAlMDJkLyUwMmQvJTAqZAAlLjNzICUuM3MgJTAyZCAlMCpkADolZABpbnZhbGlkIHRocm93IHZhciB0eXBlICVkAHNjAGpzX2RlZl9tYWxsb2MAdHJ1bmMAZ2MAZXhlYwAvdG1wL3F1aWNranMvcXVpY2tqcy5jAC90bXAvcXVpY2tqcy9saWJyZWdleHAuYwAvdG1wL3F1aWNranMvbGlidW5pY29kZS5jAHN1YgBwcm9taXNlX3JlYWN0aW9uX2pvYgBqc19wcm9taXNlX3Jlc29sdmVfdGhlbmFibGVfam9iAHJ3YQBfX2xvb2t1cFNldHRlcl9fAF9fZGVmaW5lU2V0dGVyX18AX19sb29rdXBHZXR0ZXJfXwBfX2RlZmluZUdldHRlcl9fAF9fcHJvdG9fXwBbU3ltYm9sLnNwbGl0XQBbU3ltYm9sLnNwZWNpZXNdAFtTeW1ib2wuaXRlcmF0b3JdAFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0AW1N5bWJvbC5tYXRjaEFsbF0AW1N5bWJvbC5tYXRjaF0AW1N5bWJvbC5zZWFyY2hdAFtTeW1ib2wudG9TdHJpbmdUYWddAFtTeW1ib2wudG9QcmltaXRpdmVdAFt1bnN1cHBvcnRlZCB0eXBlXQBbZnVuY3Rpb24gYnl0ZWNvZGVdAFtTeW1ib2wuaGFzSW5zdGFuY2VdAFtTeW1ib2wucmVwbGFjZV0AWwAlMDJkOiUwMmQ6JTAyZC4lMDNkWgBQT1NJVElWRV9JTkZJTklUWQBORUdBVElWRV9JTkZJTklUWQBwLT5jbGFzc19pZCA9PSBKU19DTEFTU19BUlJBWQBzdGFja19sZW4gPCBQT1BfU1RBQ0tfTEVOX01BWAAtJTAyZC0lMDJkVABKU19BdG9tR2V0U3RyUlQAb3Bjb2RlIDwgUkVPUF9DT1VOVABCWVRFU19QRVJfRUxFTUVOVAAlMDJkOiUwMmQ6JTAyZCBHTVQASlNfVkFMVUVfR0VUX1RBRyhzZi0+Y3VyX2Z1bmMpID09IEpTX1RBR19PQkpFQ1QAdmFyX2tpbmQgPT0gSlNfVkFSX1BSSVZBVEVfU0VUVEVSAE1BWF9TQUZFX0lOVEVHRVIATUlOX1NBRkVfSU5URUdFUgBpc05hTgBEYXRlIHZhbHVlIGlzIE5hTgB0b0pTT04ARVBTSUxPTgBOQU4AJTAyZDolMDJkOiUwMmQgJWNNAHMtPmxhYmVsX3Nsb3RzW2xhYmVsXS5maXJzdF9yZWxvYyA9PSBOVUxMAGxhYmVsX3Nsb3RzW2ldLmZpcnN0X3JlbG9jID09IE5VTEwAcHJzICE9IE5VTEwAc2YtPmN1cl9zcCAhPSBOVUxMAHNmICE9IE5VTEwAbXIxICE9IE5VTEwAdmFyX2tpbmQgIT0gSlNfVkFSX05PUk1BTABiLT5mdW5jX2tpbmQgPT0gSlNfRlVOQ19OT1JNQUwAZW5jb2RlVVJJAGRlY29kZVVSSQBQSQBzcGVjaWFsID09IFBVVF9MVkFMVUVfTk9LRUVQIHx8IHNwZWNpYWwgPT0gUFVUX0xWQUxVRV9OT0tFRVBfREVQVEgAcy0+c3RhdGUgPT0gSlNfQVNZTkNfR0VORVJBVE9SX1NUQVRFX0VYRUNVVElORwBJTkYAMDEyMzQ1Njc4OUFCQ0RFRgBTSVpFAE1BWF9WQUxVRQBNSU5fVkFMVUUATkFNRQBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX0dMT0JBTCB8fCBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX01PRFVMRQBwLT5nY19vYmpfdHlwZSA9PSBKU19HQ19PQkpfVFlQRV9KU19PQkpFQ1QgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfRlVOQ1RJT05fQllURUNPREUATE9HMkUATE9HMTBFAHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9BV0FJVElOR19SRVRVUk4gfHwgcy0+c3RhdGUgPT0gSlNfQVNZTkNfR0VORVJBVE9SX1NUQVRFX0NPTVBMRVRFRABVVEMAPGlucHV0PgA8aW5pdFNjcmlwdD4APGV2YWxTY3JpcHQ+ADxzZXQ+ADxhbm9ueW1vdXM+ADxjb21tRnVuPgA8Y2FsbEV4dGVybmFsRnVuY3Rpb24+ADxudWxsPgAmcXVvdDsAc2V0VWludDgAZ2V0VWludDgAc2V0SW50OABnZXRJbnQ4AG1hbGZvcm1lZCBVVEYtOAByYWRpeCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYAc2V0VWludDE2AGdldFVpbnQxNgBzZXRJbnQxNgBnZXRJbnQxNgBhcmdjID09IDUAc2V0RmxvYXQ2NABnZXRGbG9hdDY0AGFyZ2MgPT0gMwBhdGFuMgBsb2cyAFNRUlQxXzIAU1FSVDIATE4yAGNsejMyAHNldFVpbnQzMgBnZXRVaW50MzIAc2V0SW50MzIAZ2V0SW50MzIAc2V0RmxvYXQzMgBnZXRGbG9hdDMyAHN0YWNrX2xlbiA+PSAyAEpTX0F0b21Jc051bWVyaWNJbmRleDEAanNfZmN2dDEAZXhwbTEAbHMtPmFkZHIgPT0gLTEAc3RhY2tfbGVuID49IDEAcC0+c2hhcGUtPmhlYWRlci5yZWZfY291bnQgPT0gMQBzdGFja19sZW4gPT0gMQBqc19mcmVlX3NoYXBlMABsb2cxMABMTjEwAHAtPnJlZl9jb3VudCA+IDAAdmFyX3JlZi0+aGVhZGVyLnJlZl9jb3VudCA+IDAAc3RhY2tfc2l6ZSA+IDAAY3Bvb2xfaWR4ID49IDAAcnQtPmF0b21fY291bnQgPj0gMABscy0+cmVmX2NvdW50ID49IDAAcy0+aXNfZXZhbCB8fCBzLT5jbG9zdXJlX3Zhcl9jb3VudCA9PSAwAHAtPnJlZl9jb3VudCA9PSAwAGN0eC0+aGVhZGVyLnJlZl9jb3VudCA9PSAwAHNoLT5oZWFkZXIucmVmX2NvdW50ID09IDAAcC0+bWFyayA9PSAwAChwci0+dS5pbml0LnJlYWxtX2FuZF9pZCAmIDMpID09IDAAKG5ld19oYXNoX3NpemUgJiAobmV3X2hhc2hfc2l6ZSAtIDEpKSA9PSAwAGkgIT0gMABzaXplICE9IDAAXiRcLiorPygpW117fXwvADwvAG1pc3NpbmcgYmluZGluZyBwYXR0ZXJuLi4uAGFzeW5jIGZ1bmN0aW9uICoACn0pAGxpc3RfZW1wdHkoJnJ0LT5nY19vYmpfbGlzdCkAaiA9PSAoc2gtPnByb3BfY291bnQgLSBzaC0+ZGVsZXRlZF9wcm9wX2NvdW50KQBKU19Jc1VuZGVmaW5lZChmdW5jX3JldCkAIV9fSlNfQXRvbUlzVGFnZ2VkSW50KGRlc2NyKQAhYXRvbV9pc19mcmVlKHApAChudWxsKQAgKG5hdGl2ZSkAanNfY2xhc3NfaGFzX2J5dGVjb2RlKHAtPmNsYXNzX2lkKQB1bmNvbnNpc3RlbnQgc3RhY2sgc2l6ZTogJWQgJWQgKHBjPSVkKQBieXRlY29kZSBidWZmZXIgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgdW5kZXJmbG93IChvcD0lZCwgcGM9JWQpAGludmFsaWQgb3Bjb2RlIChvcD0lZCwgcGM9JWQpACg/OikAbm8gZnVuY3Rpb24gZmlsZW5hbWUgZm9yIGltcG9ydCgpAC1fLiF+KicoKQAgYW5vbnltb3VzKABTeW1ib2woAGV4cGVjdGluZyAnfScAY2xhc3MgY29uc3RydWN0b3JzIG11c3QgYmUgaW52b2tlZCB3aXRoICduZXcnAGV4cGVjdGluZyAnYXMnAHVuZXhwZWN0ZWQgdG9rZW4gaW4gZXhwcmVzc2lvbjogJyUuKnMnAHVuZXhwZWN0ZWQgdG9rZW46ICclLipzJwByZWRlY2xhcmF0aW9uIG9mICclcycAZHVwbGljYXRlIGV4cG9ydGVkIG5hbWUgJyVzJwBjaXJjdWxhciByZWZlcmVuY2Ugd2hlbiBsb29raW5nIGZvciBleHBvcnQgJyVzJyBpbiBtb2R1bGUgJyVzJwBDb3VsZCBub3QgZmluZCBleHBvcnQgJyVzJyBpbiBtb2R1bGUgJyVzJwBjb3VsZCBub3QgbG9hZCBtb2R1bGUgJyVzJwBjYW5ub3QgZGVmaW5lIHZhcmlhYmxlICclcycAdW5kZWZpbmVkIHByaXZhdGUgZmllbGQgJyVzJwB1bnN1cHBvcnRlZCByZWZlcmVuY2UgdG8gJ3N1cGVyJwBpbnZhbGlkIHVzZSBvZiAnc3VwZXInACdmb3IgYXdhaXQnIGxvb3Agc2hvdWxkIGJlIHVzZWQgd2l0aCAnb2YnAGV4cGVjdGluZyAnJWMnAHVucGFyZW50aGVzaXplZCB1bmFyeSBleHByZXNzaW9uIGNhbid0IGFwcGVhciBvbiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgJyoqJwBpbnZhbGlkIHVzZSBvZiAnaW1wb3J0KCknAGV4cGVjdGluZyAlJQA7Lz86QCY9KyQsIwA9IgBzZXQgAGdldCAAW29iamVjdCAAYXN5bmMgZnVuY3Rpb24gAGJvdW5kIAAlLjNzLCAlMDJkICUuM3MgJTAqZCAAYXN5bmMgADogACAgICAgICAgICAACikgewoACkpTT2JqZWN0IGNsYXNzZXMKACUtMjBzICU4cyAlOHMKACAgJTVkICAlMi4wZCAlcwoAICAlM3UgKyAlLTJ1ICAlcwoAICBt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YWJsZQB2YWx1ZQBnZXQAc2V0AG9mAF9fcHJvdG9fXwB1bmRlZmluZWQAbnVtYmVyAGJvb2xlYW4Ac3RyaW5nAG9iamVjdABzeW1ib2wAaW50ZWdlcgB1bmtub3duAGFyZ3VtZW50cwBjYWxsZWUAY2FsbGVyADxldmFsPgA8cmV0PgA8dmFyPgA8YXJnX3Zhcj4APHdpdGg+AGxhc3RJbmRleAB0YXJnZXQAaW5kZXgAaW5wdXQAZGVmaW5lUHJvcGVydGllcwBhcHBseQBqb2luAGNvbmNhdABzcGxpdABjb25zdHJ1Y3QAZ2V0UHJvdG90eXBlT2YAc2V0UHJvdG90eXBlT2YAaXNFeHRlbnNpYmxlAHByZXZlbnRFeHRlbnNpb25zAGhhcwBkZWxldGVQcm9wZXJ0eQBkZWZpbmVQcm9wZXJ0eQBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAb3duS2V5cwBhZGQAZG9uZQBuZXh0AHZhbHVlcwBzb3VyY2UAZmxhZ3MAZ2xvYmFsAHVuaWNvZGUAcmF3AG5ldy50YXJnZXQAdGhpcy5hY3RpdmVfZnVuYwA8aG9tZV9vYmplY3Q+ADxjb21wdXRlZF9maWVsZD4APHN0YXRpY19jb21wdXRlZF9maWVsZD4APGNsYXNzX2ZpZWxkc19pbml0PgA8YnJhbmQ+ACNjb25zdHJ1Y3RvcgBhcwBmcm9tAG1ldGEAKmRlZmF1bHQqACoATW9kdWxlAHRoZW4AcmVzb2x2ZQByZWplY3QAcHJvbWlzZQBwcm94eQByZXZva2UAYXN5bmMAZXhlYwBncm91cHMAc3RhdHVzAHJlYXNvbgBnbG9iYWxUaGlzAHRvSlNPTgBPYmplY3QAQXJyYXkARXJyb3IATnVtYmVyAFN0cmluZwBCb29sZWFuAFN5bWJvbABBcmd1bWVudHMATWF0aABKU09OAERhdGUARnVuY3Rpb24AR2VuZXJhdG9yRnVuY3Rpb24ARm9ySW5JdGVyYXRvcgBSZWdFeHAAQXJyYXlCdWZmZXIAU2hhcmVkQXJyYXlCdWZmZXIAVWludDhDbGFtcGVkQXJyYXkASW50OEFycmF5AFVpbnQ4QXJyYXkASW50MTZBcnJheQBVaW50MTZBcnJheQBJbnQzMkFycmF5AFVpbnQzMkFycmF5AEZsb2F0MzJBcnJheQBGbG9hdDY0QXJyYXkARGF0YVZpZXcATWFwAFNldABXZWFrTWFwAFdlYWtTZXQATWFwIEl0ZXJhdG9yAFNldCBJdGVyYXRvcgBBcnJheSBJdGVyYXRvcgBTdHJpbmcgSXRlcmF0b3IAUmVnRXhwIFN0cmluZyBJdGVyYXRvcgBHZW5lcmF0b3IAUHJveHkAUHJvbWlzZQBQcm9taXNlUmVzb2x2ZUZ1bmN0aW9uAFByb21pc2VSZWplY3RGdW5jdGlvbgBBc3luY0Z1bmN0aW9uAEFzeW5jRnVuY3Rpb25SZXNvbHZlAEFzeW5jRnVuY3Rpb25SZWplY3QAQXN5bmNHZW5lcmF0b3JGdW5jdGlvbgBBc3luY0dlbmVyYXRvcgBFdmFsRXJyb3IAUmFuZ2VFcnJvcgBSZWZlcmVuY2VFcnJvcgBTeW50YXhFcnJvcgBUeXBlRXJyb3IAVVJJRXJyb3IASW50ZXJuYWxFcnJvcgA8YnJhbmQ+AFN5bWJvbC50b1ByaW1pdGl2ZQBTeW1ib2wuaXRlcmF0b3IAU3ltYm9sLm1hdGNoAFN5bWJvbC5tYXRjaEFsbABTeW1ib2wucmVwbGFjZQBTeW1ib2wuc2VhcmNoAFN5bWJvbC5zcGxpdABTeW1ib2wudG9TdHJpbmdUYWcAU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZQBTeW1ib2wuaGFzSW5zdGFuY2UAU3ltYm9sLnNwZWNpZXMAU3ltYm9sLnVuc2NvcGFibGVzAFN5bWJvbC5hc3luY0l0ZXJhdG9yAAAAAAABAAAABQABFAUAARUFAAEVBQABFwUAARcBAAEAAQABAAEAAQABAAEAAQABAAEAAQACAAEFAwABCgEBAAABAgEAAQMCAAEBAgABAgMAAQIEAAEDBgABAgMAAQMEAAEEBQABAwMAAQQEAAEFBQABAgIAAQQEAAEDAwABAwMAAQQEAAEFBQADAgENAwEBDQMBAA0DAgENAwIADQMAAQ0DAwEKAQEAAAEAAAABAQIAAQAAAAECAgABAgAAAQEAAAEBAAAGAAAYBQEBDwMCAQoBAgEAAQEBAAEBAQAFAAEXBQABFwUAARcFAQAXBQEAFwUCABcBAgMAAQMAAAYAABgGAAAYBgEAGAUBARcFAQIXBQIAFwECAQABAwAAAQMB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AFCD4wBQA+UAQJDmAACB7gBAEu8AtAH4AFCD+ABAAvoAMAH7ADCB+wBAKPwAMAEQAUASEQExAR0BQIIdATCBHgExAR8BAYIfAUCCIAEwgSEBMAEiATCBIgFACiMBAQEoAQGBKAEBASkBAIEpAQABKgEAAisBAIEsAQCBLQEBAS4BAAEwAQGBMAEAgTEBAYEyAQEBMwEAATQBAIE0AQEBNQEBgTUBAQE2AQCBNwEBgTgBAAE5AQCBOgEBgT4BAAFAAQEBQQEAgUEBAYFDAQABRAEAgUQBAAJFAQABRgEAAUkBAYFOAQEBTwFzgaIBQAS4AUACuwEAg70BMIG/ATABwwEwA8QBMAHGATACxwHQAcgBMJHIATCJ0QEAAdYBAIPWAdMB2AEAkdgBcwHhAQCJ4QEAAeYBAILmATCB5wFzAegBc4HoAXOB6gFzAesBAIHrAUAY7AFzAfgBc4H4AQAB+QEAgfkBoAH6AXOB+gFAgvsBMIH8AUAC/QEwg/4BMBAAAjAgCAIAIBgCABAoAkAiMAJANkUCMAFgAkCOYAIAgWcCQGBoAjCmmAIAprACtYHDAjEmUAgxgWMIMYFmCAAraAgAg34IEVDQCRAG+AkgBvwJdAFADnSBQA50AUEOdIFBDnQBQg50gUIOdAFDDoCBQw6AAUQOMCtIDjCDXg4BgbwOAYG+DgEBxw5AfgAPQBg/D7UBSw+2gUsPtgFMD7aBTA+3AU0PgIFNDzABTw9AYFAPAAiADzAIhA8ABogPMAaMDwAIkA8wCJQPAAiYDzAInA8ABqAPMAakD7ABqA8AgagP0wGpDwCBqQ/TAaoPAIGqD9MBqw8AgasPMIGsDzCBrQ8wga4PMIGvDwAIsA8wCLQPAAK4DwAEuQ8AArsPAQK8DwECvQ8BAr4PtwjAD2cIxA+4CMgPaAjMD7gI0A9oCNQPAALYD7kB2Q+xgdkPuQHaD7EB2w/XgdsPMALcDzAC3Q9hAd4PcwHfD7kB4Q+ygeEPugHiD7IB4w/YgeMPMATkD2IB5g8AAugP0AHpD9CB6Q+wAesP0IHrDzAC7A8wAu0PAQLwD9MB8Q/TgfEPugHyDwGB8g+wAfMP04HzDzAC9A8wAvUPMQH2D7oB+Q+ygfkPuwH6D7IB+w/ZgfsPMAL8DzAC/Q9iAf4PoAGTEKABlRCggZUQMQGZEAEBpxAxELAQARC4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iacwH4CIiq2PQZQ4h4+Jt5WAjfkqAAgwB4mvIAgniUFIg2BLaInViaWEuoaYiUP0ALYz0ICKgWBMqoFSYK2BlkIdIi85hp2DQJOCRYixQf+2g7E4jYCVII5FTzCQDgEEQQSGiIlBY4C8jUXVhuw0iVKViWwFBUDv+gYAcAkA8ApAVwwA8A1Axw8A6hcgRRsgVSAgDKhgN6oAUP4AOg0BgxEBxBQhRBkhWh1Bn7xhsNoh8AEOAAAAAEFkbGFtLEFkbG0AQWhvbSxBaG9tAEFuYXRvbGlhbl9IaWVyb2dseXBocyxIbHV3AEFyYWJpYyxBcmFiAEFybWVuaWFuLEFybW4AQXZlc3RhbixBdnN0AEJhbGluZXNlLEJhbGkAQmFtdW0sQmFtdQBCYXNzYV9WYWgsQmFzcwBCYXRhayxCYXRrAEJlbmdhbGksQmVuZwBCaGFpa3N1a2ksQmhrcwBCb3BvbW9mbyxCb3BvAEJyYWhtaSxCcmFoAEJyYWlsbGUsQnJhaQBCdWdpbmVzZSxCdWdpAEJ1aGlkLEJ1aGQAQ2FuYWRpYW5fQWJvcmlnaW5hbCxDYW5zAENhcmlhbixDYXJpAENhdWNhc2lhbl9BbGJhbmlhbixBZ2hiAENoYWttYSxDYWttAENoYW0sQ2hhbQBDaGVyb2tlZSxDaGVyAENob3Jhc21pYW4sQ2hycwBDb21tb24sWnl5eQBDb3B0aWMsQ29wdCxRYWFjAEN1bmVpZm9ybSxYc3V4AEN5cHJpb3QsQ3BydABDeXJpbGxpYyxDeXJsAEN5cHJvX01pbm9hbixDcG1uAERlc2VyZXQsRHNydABEZXZhbmFnYXJpLERldmEARGl2ZXNfQWt1cnUsRGlhawBEb2dyYSxEb2dyAER1cGxveWFuLER1cGwARWd5cHRpYW5fSGllcm9nbHlwaHMsRWd5cABFbGJhc2FuLEVsYmEARWx5bWFpYyxFbHltAEV0aGlvcGljLEV0aGkAR2VvcmdpYW4sR2VvcgBHbGFnb2xpdGljLEdsYWcAR290aGljLEdvdGgAR3JhbnRoYSxHcmFuAEdyZWVrLEdyZWsAR3VqYXJhdGksR3VqcgBHdW5qYWxhX0dvbmRpLEdvbmcAR3VybXVraGksR3VydQBIYW4sSGFuaQBIYW5ndWwsSGFuZwBIYW5pZmlfUm9oaW5neWEsUm9oZwBIYW51bm9vLEhhbm8ASGF0cmFuLEhhdHIASGVicmV3LEhlYnIASGlyYWdhbmEsSGlyYQBJbXBlcmlhbF9BcmFtYWljLEFybWkASW5oZXJpdGVkLFppbmgsUWFhaQBJbnNjcmlwdGlvbmFsX1BhaGxhdmksUGhsaQBJbnNjcmlwdGlvbmFsX1BhcnRoaWFuLFBydGkASmF2YW5lc2UsSmF2YQBLYWl0aGksS3RoaQBLYW5uYWRhLEtuZGEAS2F0YWthbmEsS2FuYQBLYXlhaF9MaSxLYWxpAEtoYXJvc2h0aGksS2hhcgBLaG1lcixLaG1yAEtob2praSxLaG9qAEtoaXRhbl9TbWFsbF9TY3JpcHQsS2l0cwBLaHVkYXdhZGksU2luZABMYW8sTGFvbwBMYXRpbixMYXRuAExlcGNoYSxMZXBjAExpbWJ1LExpbWIATGluZWFyX0EsTGluYQBMaW5lYXJfQixMaW5iAExpc3UsTGlzdQBMeWNpYW4sTHljaQBMeWRpYW4sTHlkaQBNYWthc2FyLE1ha2EATWFoYWphbmksTWFoagBNYWxheWFsYW0sTWx5bQBNYW5kYWljLE1hbmQATWFuaWNoYWVhbixNYW5pAE1hcmNoZW4sTWFyYwBNYXNhcmFtX0dvbmRpLEdvbm0ATWVkZWZhaWRyaW4sTWVkZgBNZWV0ZWlfTWF5ZWssTXRlaQBNZW5kZV9LaWtha3VpLE1lbmQATWVyb2l0aWNfQ3Vyc2l2ZSxNZXJjAE1lcm9pdGljX0hpZXJvZ2x5cGhzLE1lcm8ATWlhbyxQbHJkAE1vZGksTW9kaQBNb25nb2xpYW4sTW9uZwBNcm8sTXJvbwBNdWx0YW5pLE11bHQATXlhbm1hcixNeW1yAE5hYmF0YWVhbixOYmF0AE5hbmRpbmFnYXJpLE5hbmQATmV3X1RhaV9MdWUsVGFsdQBOZXdhLE5ld2EATmtvLE5rb28ATnVzaHUsTnNodQBOeWlha2VuZ19QdWFjaHVlX0htb25nLEhtbnAAT2doYW0sT2dhbQBPbF9DaGlraSxPbGNrAE9sZF9IdW5nYXJpYW4sSHVuZwBPbGRfSXRhbGljLEl0YWwAT2xkX05vcnRoX0FyYWJpYW4sTmFyYgBPbGRfUGVybWljLFBlcm0AT2xkX1BlcnNpYW4sWHBlbwBPbGRfU29nZGlhbixTb2dvAE9sZF9Tb3V0aF9BcmFiaWFuLFNhcmIAT2xkX1R1cmtpYyxPcmtoAE9sZF9VeWdodXIsT3VncgBPcml5YSxPcnlhAE9zYWdlLE9zZ2UAT3NtYW55YSxPc21hAFBhaGF3aF9IbW9uZyxIbW5nAFBhbG15cmVuZSxQYWxtAFBhdV9DaW5fSGF1LFBhdWMAUGhhZ3NfUGEsUGhhZwBQaG9lbmljaWFuLFBobngAUHNhbHRlcl9QYWhsYXZpLFBobHAAUmVqYW5nLFJqbmcAUnVuaWMsUnVucgBTYW1hcml0YW4sU2FtcgBTYXVyYXNodHJhLFNhdXIAU2hhcmFkYSxTaHJkAFNoYXZpYW4sU2hhdwBTaWRkaGFtLFNpZGQAU2lnbldyaXRpbmcsU2dudwBTaW5oYWxhLFNpbmgAU29nZGlhbixTb2dkAFNvcmFfU29tcGVuZyxTb3JhAFNveW9tYm8sU295bwBTdW5kYW5lc2UsU3VuZABTeWxvdGlfTmFncmksU3lsbwBTeXJpYWMsU3lyYwBUYWdhbG9nLFRnbGcAVGFnYmFud2EsVGFnYgBUYWlfTGUsVGFsZQBUYWlfVGhhbSxMYW5hAFRhaV9WaWV0LFRhdnQAVGFrcmksVGFrcgBUYW1pbCxUYW1sAFRhbmd1dCxUYW5nAFRlbHVndSxUZWx1AFRoYWFuYSxUaGFhAFRoYWksVGhhaQBUaWJldGFuLFRpYnQAVGlmaW5hZ2gsVGZuZwBUaXJodXRhLFRpcmgAVGFuZ3NhLFRuc2EAVG90byxUb3RvAFVnYXJpdGljLFVnYXIAVmFpLFZhaWkAVml0aGt1cWksVml0aABXYW5jaG8sV2NobwBXYXJhbmdfQ2l0aSxXYXJhAFllemlkaSxZZXppAFlpLFlpaWkAWmFuYWJhemFyX1NxdWFyZSxaYW5iAAAAAAAAAMAZmUaFGZlGrhmARo4ZgEaEGZZGgBmeRoAZ4WBGphmERoQZgQ2TGeAPOIMsgBmCLAGDLIAZgCwDgCyAGYAsgBmCLACALACTLAC+LI0ajyzgJB2BOOBIHQClBQGxBQGCBQC2NQeaNQOFNQqEBIAZhQSAGY0EgBmCBIAZnwSAGYkEijiZBIA44AsEgBmhBI2JALuJAYKJrwSxkw26ZAGCZK19AY59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U2MsQ3VycmVuY3lfU3ltYm9sAFNrLE1vZGlmaWVyX1N5bWJvbABTbyxPdGhlcl9TeW1ib2wAUGMsQ29ubmVjdG9yX1B1bmN0dWF0aW9uAFBkLERhc2hfUHVuY3R1YXRpb24AUHMsT3Blbl9QdW5jdHVhdGlvbgBQZSxDbG9zZV9QdW5jdHVhdGlvbgBQaSxJbml0aWFsX1B1bmN0dWF0aW9uAFBmLEZpbmFsX1B1bmN0dWF0aW9uAFBvLE90aGVyX1B1bmN0dWF0aW9uAFpzLFNwYWNlX1NlcGFyYXRvcgBabCxMaW5lX1NlcGFyYXRvcgBacCxQYXJhZ3JhcGhfU2VwYXJhdG9yAENjLENvbnRyb2wsY250cmwAQ2YsRm9ybWF0AENzLFN1cnJvZ2F0ZQBDbyxQcml2YXRlX1VzZQBMQyxDYXNlZF9MZXR0ZXIATCxMZXR0ZXIATSxNYXJrLENvbWJpbmluZ19NYXJrAE4sTnVtYmVyAFMsU3ltYm9sAFAsUHVuY3R1YXRpb24scHVuY3QAWixTZXBhcmF0b3IAQyxPdGhlcgBBoLsCC7AIDgAAAD4AAADAAQAAAA4AAADwAAAAAH8AAACAAwEAADxBU0NJSV9IZXhfRGlnaXQsQUhleABCaWRpX0NvbnRyb2wsQmlkaV9DAERhc2gARGVwcmVjYXRlZCxEZXAARGlhY3JpdGljLERpYQBFeHRlbmRlcixFeHQASGV4X0RpZ2l0LEhleABJRFNfQmluYXJ5X09wZXJhdG9yLElEU0IASURTX1RyaW5hcnlfT3BlcmF0b3IsSURTVABJZGVvZ3JhcGhpYyxJZGVvAEpvaW5fQ29udHJvbCxKb2luX0MATG9naWNhbF9PcmRlcl9FeGNlcHRpb24sTE9FAE5vbmNoYXJhY3Rlcl9Db2RlX1BvaW50LE5DaGFyAFBhdHRlcm5fU3ludGF4LFBhdF9TeW4AUGF0dGVybl9XaGl0ZV9TcGFjZSxQYXRfV1MAUXVvdGF0aW9uX01hcmssUU1hcmsAUmFkaWNhbABSZWdpb25hbF9JbmRpY2F0b3IsUkkAU2VudGVuY2VfVGVybWluYWwsU1Rlcm0AU29mdF9Eb3R0ZWQsU0QAVGVybWluYWxfUHVuY3R1YXRpb24sVGVybQBVbmlmaWVkX0lkZW9ncmFwaCxVSWRlbwBWYXJpYXRpb25fU2VsZWN0b3IsVlMAV2hpdGVfU3BhY2Usc3BhY2UAQmlkaV9NaXJyb3JlZCxCaWRpX00ARW1vamkARW1vamlfQ29tcG9uZW50LEVDb21wAEVtb2ppX01vZGlmaWVyLEVNb2QARW1vamlfTW9kaWZpZXJfQmFzZSxFQmFzZQBFbW9qaV9QcmVzZW50YXRpb24sRVByZXMARXh0ZW5kZWRfUGljdG9ncmFwaGljLEV4dFBpY3QARGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludCxESQBJRF9TdGFydCxJRFMAQ2FzZV9JZ25vcmFibGUsQ0kAQVNDSUkAQWxwaGFiZXRpYyxBbHBoYQBBbnkAQXNzaWduZWQAQ2FzZWQAQ2hhbmdlc19XaGVuX0Nhc2Vmb2xkZWQsQ1dDRgBDaGFuZ2VzX1doZW5fQ2FzZW1hcHBlZCxDV0NNAENoYW5nZXNfV2hlbl9Mb3dlcmNhc2VkLENXTABDaGFuZ2VzX1doZW5fTkZLQ19DYXNlZm9sZGVkLENXS0NGAENoYW5nZXNfV2hlbl9UaXRsZWNhc2VkLENXVABDaGFuZ2VzX1doZW5fVXBwZXJjYXNlZCxDV1UAR3JhcGhlbWVfQmFzZSxHcl9CYXNlAEdyYXBoZW1lX0V4dGVuZCxHcl9FeHQASURfQ29udGludWUsSURDAExvd2VyY2FzZSxMb3dlcgBNYXRoAFVwcGVyY2FzZSxVcHBlcgBYSURfQ29udGludWUsWElEQwBYSURfU3RhcnQsWElEUwBB4MMCC9QVgQAoAJcAKgCBgCoAl8ArABWBLACXAC0AgUAtAJcALgAVQS4AmQEvABYgMABCCEAAQopEAEIESgCWAEwAF4FMAEICTQBCQ04AL8FPAELDUAC/QFIAQgNTAEIJVQBCCFoAlgBeAEJDXgCBwF8AQgFoAELBawCFAXEAF8NxAERIcwBEg3cAQoN5AL4CewCXQXwAQgF9AEQEfgBCDoAAQoGHAESHiQCDBKwAFwO2AIMCuAAUAtAAlgDRAIAA3QCXgN4AgIDfAJcA4QA+QeEAgMDhAL4E4gCug+oAroLyAK0B9AAuwfQAA0H1AAMD/ACBQP4APgIAAb7AAQG+AQMBvkAGAb5ADgE+AhQBvsAVAb4BFwFEgR0BREEwAUQCNAFEgTUB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QmNhbGtjYWxwAEZuAEa8A0a8A2dtAGdrAGdIAHprSHpNSHpHSHpUSHq8AxMhbQATIWQAEyFrABMhZgBtbgBtvANtbQBtYwBtawBtYwAKCk8ACk9tALIAYwAICk8KClAAClBtALMAawBtALMAbQAVInMAbQAVInMAsgBQYWtQYU1QYUdQYXJhZHJhZNFzcgBhAGQAFSJzALIAcABzbgBzvANzbQBzcABWbgBWvANWbQBWawBWTQBWcABXbgBXvANXbQBXawBXTQBXawCpA00AqQNhLm0uQnFjY2NkQ9FrZ0NvLmRCR3loYUhQaW5LS0tNa3RsbWxubG9nbHhtYm1pbG1vbFBIcC5tLlBQTVBSc3JTdldiVtFtQdFtMQDlZTEAMADlZTIAMADlZTMAMADlZWdhbEoETARDRlEmAVMBJ6c3q2sCUqtIjPRmyo7IjNFuMk7lU5yfnJ9RWdGRh1VIWfZhaXaFfz+Guof4iI+QAmobbdlw3nM9hGqR8ZmCTnVTBGsbci2GHp5QXetvzYVkicli2IEfiMpeF2dqbfxyzpCGT7dR3lLEZNNqEHLndgGABoZchu+NMpdvm/qdjHh/eaB9yYMEk3+e1orfWARfYHx+gGJyynjCjPeW2FhiXBNq2m0Pby99N35LltJSi4DcUcxRHHq+ffGDdZaAi89iAmr+ijlO51sSYIdzcHUXU/t4v0+pXw1OzGx4ZSJ9w1NeWAF3SYSqirprsI+IbP5i5YKgY2V1rk5pUclRgWjnfG+C0orPkfVSQlRzWexexWX+byp5rZVqmpeezp6bUsZmd2tij3RekGEAYppkI29JcYl0ynn0fW+AJo/uhCOQSpMXUqNSvVTIcMKIqorJXvVfe2Ouaz58dXPkTvlW51u6XRxgsnNpdJp/RoA0kvaWSJcYmItPrnm0kbiW4WCGTtpQ7ls/XJllAmrOcUJ2/IR8kI2fiGYulolSe2fzZ0FtnG4JdFl1a3gQfV6YbVEuYniWK1AZXeptKo+LX0RhF2iHc4aWKVIPVGVcE2ZOZ6ho5WwGdOJ1eX/PiOGIzJHilj9Tum4dVNBxmHT6haOWV5yfnpdny23ogct6IHuSfMBymXBYi8BONoM6UgdSpl7TYtZ8hVsebbRmO49MiE2Wi4nTXkBRwFUAAAAAWlgAAHRmAAAAAN5RKnPKdjx5XnlleY95Vpe+fL1/AAAShgAA+IoAAAAAOJD9kO+Y/JgombSd3pC3lq5P51BNUclS5FJRU51VBlZoVkBYqFhkXG5clGBoYY5h8mFPZeJlkWaFaHdtGm4ib25xK3IidJF4PnlJeUh5UHlWeV15jXmOeUB6gXrAe/R9CX5BfnJ/BYDtgXmCeYJXhBCJlokBizmL04wIjbaPOJDjlv+XO5h1YO5CGIICJk61UWhRgE9FUYBRx1L6Up1VVVWZVeJVWlizWERZVFliWihb0l7ZXmlfrV/YYE5hCGGOYWBh8mE0YsRjHGRSZFZldGYXZxtnVmd5a7prQW3bbstuIm8ecG5xp3c1cq9yKnNxdAZ1O3Uddh92ynbbdvR2SndAd8x4sXrAe3t8W330fT5/BYBSg++DeYdBiYaJlom/iviKy4oBi/6K7Yo5i4qLCI04j3KQmZF2knyW45ZWl9uX/5cLmDuYEpucn0ooRCjVM507GEA5QElS0FzTfkOfjp8qoAJmZmZpZmxmZmlmZmx/AXRzAHRlBQ8RDwAPBhkRDwjZBbQFAAAAAPIFtwXQBRIAAwQLDA0YGukFwQXpBcIFSfvBBUn7wgXQBbcF0AW4BdAFvAXYBbwF3gW8BeAFvAXjBbwFuQUtAy4DLwMwAzEDHAAYBiIGKwbQBdwFcQYAAAoKCgoNDQ0NDw8PDwkJCQkODg4OCAgICDMzMzM1NTU1ExMTExISEhIVFRUVFhYWFhwcGxsdHRcXJycgIDg4ODg+Pj4+QkJCQkBAQEBJSUpKSkpPT1BQUFBNTU1NYWFiYkkGZGRkZH5+fX1/fy6Cgnx8gICHh4eHAAAmBgABAAEArwCvACIAIgChAKEAoACgAKIAogCqAKoAqgAjACMAI8wGAAAAACYGAAYABwAfACMAJAIGAgcCCAIfAiMCJAQGBAcECAQfBCMEJAUGBR8FIwUkBgcGHwcGBx8IBggHCB8NBg0HDQgNHw8HDx8QBhAHEAgQHxEHER8SHxMGEx8UBhQfGwYbBxsIGx8bIxskHAccHxwjHCQdAR0GHQcdCB0eHR8dIx0kHgYeBx4IHh8eIx4kHwYfBx8IHx8fIx8kIAYgByAIIB8gIyAkIQYhHyEjISQkBiQHJAgkHyQjJCQKSgtKI0ogAEwGUQZRBv8AHyYGAAsADAAfACAAIwAkAgsCDAIfAiACIwIkBAsEDAQfJgYEIAQjBCQFCwUMBR8FIAUjBSQbIxskHCMcJB0BHR4dHx0jHSQeHx4jHiQfAR8fIAsgDCAfICAgIyAkI0okCyQMJB8kICQjJCQABgAHAAgAHwAhAgYCBwIIAh8CIQQGBAcECAQfBCEFHwYHBh8HBgcfCAYIHw0GDQcNCA0fDwcPCA8fEAYQBxAIEB8RBxIfEwYTHxQGFB8bBhsHGwgbHxwHHB8dBh0HHQgdHh0fHgYeBx4IHh8eIR8GHwcfCB8fIAYgByAIIB8gISEGIR8hSiQGJAckCCQfJCEAHwAhAh8CIQQfBCEFHwUhDR8NIQ4fDiEdHh0fHh8gHyAhJB8kIUAGTgZRBicGECIQIxIiEiMTIhMjDCIMIw0iDSMGIgYjBSIFIwciByMOIg4jDyIPIw0FDQYNBw0eDQoMCg4KDwoQIhAjEiISIxMiEyMMIgwjDSINIwYiBiMFIgUjByIHIw4iDiMPIg8jDQUNBg0HDR4NCgwKDgoPCg0FDQYNBw0eDCANIBAeDAUMBgwHDQUNBg0HEB4RHgAkACQqBgACGwADAgADAgADGwAEGwAbAgAbAwAbBAIbAwIbAwMbIAMbHwkDAgkCAwkCHwkbAwkbAwkbAgkbGwkbGwsDAwsDAwsbGwoDGwoDGwoCIAobBAobBAobGwobGwwDHwwEGwwEGw0bAw0bAw0bGw0bIA8CGw8bGw8bGw8bHxAbGxAbIBAbHxcEGxcEGxgbAxgbGxoDGxoDIBoDHxoCAhoCAhoEGxoEGxobAxobAxsDAhsDGxsDIBsCAxsCGxsEAhsEGygGHQQGHx0EHx0dHgUdHgUhHgQdHgQdHgQhHh0iHh0hIh0dIh0dAAYiAgQiAgQhAgYiAgYhAh0iAh0hBB0iBAUhBB0hCwYhDQUiDAUiDgUiHAQiHB0iIgUiIgQiIh0iHR0iGh0iHgUiGh0FHAUdER0iGx0iHgQFHQYiHAQdGx0dHAQdHgQFBAUiBQQiHQQiGR0iAAUiGx0dEQQdDR0dCwYiHgQiNQYAD50ND50nBgAdHSAAHAEKHgYeCA4dEh4KDCEdEh0jICEMHR41BgAPFCcGDh0i/wAdHSD/Eh0jIP8hDB0eJwYFHf8FHQAdICcGCqUAHSwAATACMDoAOwAhAD8AFjAXMCYgEyASAQBfXygpe30IMAwNCAkCAwABBAUGB1sAXQA+ID4gPiA+IF8AXwBfACwAATAuAAAAOwA6AD8AIQAUICgAKQB7AH0AFDAVMCMmKistPD49AFwkJUBABv8LAAv/DCAATQZABv8OAA7/DwAP/xAAEP8RABH/EgASIQYAAQECAgMDBAQFBQUFBgYHBwcHCAgJCQkJCgoKCgsLCwsMDAwMDQ0NDQ4ODw8QEBEREhISEhMTExMUFBQUFRUVFRYWFhYXFxcXGBgYGBkZGRkgICAgISEhISIiIiIjIyMjJCQkJCUlJSUmJiYmJycoKCkpKSkiBiIAIgAiASIBIgMiAyIFIgUhAIUpATABCwwA+vGgoqSmqOLk5sL7oaOlp6mqrK6wsrS2uLq8vsDDxcfJysvMzc7R1Nfa3d7f4OHj5efo6err7O7ymJkxMU8xVTFbMWExogCjAKwArwCmAKUAqSAAAAIlkCGRIZIhkyGgJcsl0ALRAuYAmQJTAgAAowJmq6UCpAJWAlcCkR1YAl4CqQJkAmICYAKbAicBnAJnAoQCqgKrAmwCBN+Op24CBd+OAgbf+AB2AncCcQB6AgjffQJ+AoACqAKmAmerpwKIAnEsAACPAqECogKYAsABwQHCAQrfHt9BBEAAAAAAFJkQuhAAAAAAmxC6EAUFpRC6EAUxEScRMhEnEVVHEz4TRxNXE1W5FLoUuRSwFAAAAAC5FL0UVVC4Fa8VuRWvFVU1GTAZBVfRZdFY0WXRX9Fu0V/Rb9Ff0XDRX9Fx0V/RctFVVVUFudFl0brRZdG70W7RvNFu0bvRb9G80W/RVVVVQQBhAEEAYQBpAEEAYQBBAENEAABHAABKSwAATk9QUQBTVFVWV1hZWmFiY2QAZmgAcABBAGEAQUIAREVGR0oAUwBhAEFCAERFRkcASUpLTE0AT1MAYQBBAGEAQQBhAEEAYQBBAGEAQQBhAEEAYQAxATcCkQOjA7ED0QMkAB8EIAWRA6MDsQPRAyQAHwQgBZEDowOxA9EDJAAfBCAFkQOjA7ED0QMkAB8EIAWRA6MDsQPRAyQAHwQgBQsMMAAwADAAMAAwACcGAAEFCCoGHggDDSAZGhscCQ8XCxgHCgABBAYMDhBEkHdFKAYsBgAARwYzBhcQERITAAYOAg80BioGKwYuBgAANgYAADoGLQYAAEoGAABEBgAARgYzBjkGAAA1BkIGAAA0BgAAAAAuBgAANgYAADoGAAC6BgAAbwYAACgGLAYAAEcGAAAAAC0GNwZKBkMGAABFBkYGMwY5BkEGNQZCBgAANAYqBisGLgYAADYGOAY6Bm4GAAChBicGAAEFCCAhCwYQIyoGGhscCQ8XCxgHCgABBAYMDhAoBiwGLwYAAEgGMgYtBjcGSgYqBhobHAkPFwsYBwoAAQQGDA4QMC4wACwAKABBACkAFDBTABUwQ1JDRFdaQQBIVk1WU0RTU1BQVldDTUNNRE1SREpLMDAAaGhLYldbzFPHMIxOGlnjiSlZpE4gZiFxmWVNUoxfjVGwZR1SQn0fdamM8Fg5VBRvlWJVYwBOCU5KkOZdLU7zUwdjcI1TYoF5enoIVIBuCWcIZzN1clK2VU2RFDAVMCxnCU6MTolbuXBTYtd23VJXZZdf71MwADhOBQAJIgFgT65Pu08CUHpQmVDnUM9QnjQ6Bk1RVFFkUXdRHAW5NGdRjVFLBZdRpFHMTqxRtVHfkfVRA1LfNDtSRlJyUndSFTUCACCAgAAIAADHUgACHTM+P1CCipOstri4uCwKcHDKU99TYwvrU/FTBlSeVDhUSFRoVKJU9lQQVVNVY1WEVYRVmVWrVbNVwlUWVwZWF1dRVnRWB1LuWM5X9FcNWItXMlgxWKxY5BTyWPdYBlkaWSJZYlmoFuoW7FkbWida2FlmWu42/DYIWz5bPlvIGcNb2FvnW/NbGBv/WwZcU18iXIE3YFxuXMBcjVzkHUNd5h1uXWtdfF3hXeJdLzj9XShePV5pXmI4gyF8OLBes162XspekqP+XjEjMSMBgiJfIl/HOLgy2mFiX2tf4ziaX81f11/5X4FgOjkcOZRg1CbHYAICAAAAAAAAAAgACgAAAggAgAgAAAiAKIACAAACSGEABAYEMkZqXGeWqq7I011iAFR38wwrPWP8Ymhjg2PkY/ErImTFY6ljLjppZH5knWR3ZGw6T2VsZQow42X4ZklmGTuRZgg75DqSUZVRAGecZq2A2UMXZxtnIWdeZ1NnwzNJO/pnhWdSaIVobTSOaB9oFGmdO0Jpo2nqaahqozbbahg8IWunOFRrTjxya59rumu7a406Cx36Ok5svDy/bM1sZ2wWbT5td21BbWlteG2FbR49NG0vbm5uMz3Lbsdu0T75bW5vXj+OP8ZvOXAecBtwlj1KcH1wd3CtcCUFRXFjQpxxq0MocjVyUHIIRoBylXI1RwIgAAAgAAAAAAiAAAACAoCKAAAgAAgKAICIgCAUSHpzi3OsPqVzuD64Pkd0XHRxdIV0ynQbPyR1Nkw+dZJMcHWfIRB2oU+4T0RQ/D8IQPR281DyUBlRM1Eedx93H3dKdzlAi3dGQJZAHVROeIx4zHjjQCZWVnmaVsVWj3nreS9BQHpKek96fFmnWqda7noCQqtbxnvJeydCgFzSfKBC6HzjfAB9hl9jfQFDx30CfkV+NEMoYkdiWUPZYnp/PmOVf/p/BYDaZCNlYICoZXCAXzPVQ7KAA4ELRD6BtVqnZ7VnkzOcMwGCBIKej2tEkYKLgp2Cs1KxgrOCvYLmgjxr5YIdg2ODrYMjg72D54NXhFODyoPMg9yDNmxrbQIAACAiKqAKACCAKACoICAAAoAiAooIAKoAAAACAAAo1WwrRfGE84QWhcpzZIUsb11FYUWxb9Jwa0VQhlyGZ4ZphqmGiIYOh+KGeYcoh2uHhofXReGHAYj5RWCIY4hndteI3og1RvqIuzSueGZ5vkbHRqCK7YqKi1WMqHyrjMGMG413jS9/BAjLjbyN8I3eCNSOOI/She2FlJDxkBGRLocbkTiS15LYknyS+ZMVlPqLi5WVSbeVd43mScOWsl0jl0WRGpJuSnZK4JcKlLJKlpQLmAuYKZi2leKYM0spmaeZwpn+mc5LMJsSm0Cc/ZzOTO1MZ53OoPhMBaEOopGiu55WTfme/p4Fnw+fFp87nwCmAoigAAAAAIAAKAAIoICggACAgAAKiIAAgAAgKgCARCAVIk0DAJcFIMYFAOcGAEUHAJwIAE0JADwLAD0NADYPADgQIDoZAMsaINMcAM8dAOIgAC4wICupIO2rADkKAYQPIcARAUMUATkYIUIdIWfRATDhIUvpAQBB4K0DC/EGss/UAOgD3ADoANgE3AHKA9wBygrcBAED3McA8MAC3MIB3IDCA9zAAOgB3MBB6QDqQekA6gDpzLDixLDYANzDANzCAN4A3MUF3MEA3MEA3gDkwEkKQxOAABeAQRiAwADcgAASsBfHQh6vRxvBAdzEANzBANyPACOwNMaBwwDcwIHBgADcwQDcogAkncAA3MEA3MEC3MAB3MAA3MIA3MAA3MAA3MAA3MGwb8YA3MCIANyXw4DIgMKAxKoC3LALwALcw6nEBNzNgADcwQDcwQDcwgLcQhvCANzBAdzEsAsAB48ACYLAANzBsDYAB48ACa/AsAwAB48ACbA9AAePAAmwPQAHjwAJsE4ACbA9AAePAAmGAFQAW7A0AAePAAmwPAEJjwAJsEsACbA8AWcACYwDa7A7AXYACYwDerAbAdyaANyAANyAANiwBkGBgACEhAOCgQCCgMEACYDBsA0A3LA/AAeAAQmwIQDcsp7Cs4MBCZ0ACbBsAAmJwLCaAOSwXgDewADcsKrAANywFgAJk8eBANyvxAXcwQDcgAHcwQHcxADcw7A0AAeOAAmlwADcxrAFAQmwCQAHigEJsBIAB7BnwkEABNzBA9zAQQAFAYMA3IXAgsGwlcEA3MYA3MEA6gDWANwAyuQA6AHkANwA2sAA6QDcwADcsp/BAQHDAgHBg8CCAQHAANzAAQED3MC4A83CsFwACbAv37H5ANoA5ADoAN4B4LA4AQi4baPAg8mfwbAfwbDjAAmkAAmwZgAJmtGwCALcpAAJsC4AB4sACbC+wIDBANyBwYTBgMCwAwAJsMUACbhG/wAastDGBtzBs5wA3LCxANywZMS2YQDcgMCnwAABANyDAAmwdMAA3LIMw7FSwbBoAdzCANzAA9ywAMAA3MAA3LCPAAmoAAmNAAmwCAAJAAewFMKvAQmwDQAHsBsACYgAB7A5AAkAB7CBAAcACbAfAQePAAmXxoLEsJwACYIAB5bAsDIACQAHsMoACQAHsE0ACbBFAAkAB7BCAAmw3AAJAAew0QEJgwAHsGsACbAiAAmRAAmwIAAJsXQACbDRAAeAAQmwIAAJuEUnBAGwCsa0iAEGuER7AAG4DJUB2AIBggDiBNiHB9yBxAHcncOwY8K4BYrGgNCBxoDBgMSw1MaxRsCwDMO1rwbcsDzFAAcAQeC0AwviDgFKwEkCSoACgQKCAoMCwALCAgAKhAJCJIUCwAeACYIJQCSAIsQCgiKEIoYixgLIAsoCzAKHAooizgKMIpAikiKOIogCiQKKAoIkAAMCAwQDiwKAJAgDhAmGCVgkAgoGA5gimiKeIgAJCgOgIgwDDgNACBADEgOiIqYiwAmkIqgiqiKMAo0CjgJAA0IDRAOAA48CjiTCB4gJigmQJEYDrCIABLAiQgiyIgIEtCJABEQEtiJCBMIiwCLEIsYiyCJACcAEkQLKIsQEzCLCBNAiziKSApMClAKVAkAFQgUICpYClCREBcQHjAmOCcAGkiRECAgjCiOABQwjhAWQCZIJDiOCBRIjhgWIBRQjjAUWI5gJigUeI5AFICOaCY4FJCMiI5kCmgKbAsAFwgXEBZwCrCTGBcgFxgeUCZYJAAeqJCYjygUqIygjQCNCI0QjRiPMBUojSCNMI04jUCO4JJ0CzgW+JAwKUiMABrwkuiRABlQjQgZEBlYjWCOgAqECogKjAsECwwIBCqQCQySlAsEHgQmDCUEkgSLFAoMihSKHIscCyQLLAs0CpwKLIs8CjSKRIpMijyKoAqkCqgKDJAEDAwMFA6sCgSQJA4UJhwlZJAMKBwOZIpsinyIBCQsDoSINAw8DQQgRAxMDoyKnIsEJpSKpIqsigCOsAq0CrgJBA0MDRQOvAo8kwweJCYsJkSRHA60iAQSECLEiQwizIgMEtSJBBEUEtyJDBMMiwSLFIsciySJBCcEEsQLLIsUEzSLDBNEizyKyArMCtAK1AkEFQwUJCrYClSRFBcUHjQmPCcEGkyRFCAkjCyOBBQ0jhQWRCZMJDyODBRMjhwWJBRUjjQUXI5kJiwUfI4EjkQUhI5sJjwUlIyMjuQK6ArsCwQXDBcUFvAKtJMcFyQXHB5UJlwkBB6skJyPLBSsjKSNBI0MjRSNHI80FSyNJI4IjTSNPI1EjuSS9As8FvyQNClMjvwK9JIMjuyRBBlUjQwZFBlcjWSMBMYAMAC5GJEQkSiRIJAAIQglECQQIiCKGJIQkiiSIJK4imCSWJJwkmiQAIwYKAiMECkYJzgfKB8gHzAdHJEUkSyRJJAEIQwlFCQUIiSKHJIUkiySJJK8imSSXJJ0kmyQBIwcKAyMFCkcJzwfLB8kHzQdQJE4kVCRSJFEkTyRVJFMklCKWIpUilyIEIwYjBSMHIxgjGSMaIxsjLCMtIy4jLyMAJKIkoCSmJKQkqCSjJKEkpySlJKkksCSuJLQksiS2JLEkryS1JLMktySCCIAIgQgCCAMInCKdIgoKCwqDCEALiiyBDIksiCxAJUElAC0HLgANQCZBJoAuAQ3IJskmAC+ELwINgy+CL0AN2CbZJoYxBA1AJ0EnADGGMAYNhTCEMEENQCgAMgcNTyhQKIAyhCwDLlcoQg2BLIAswCTBJIYsgyzAKEMNwCXBJUApRA3AJsEmBS4CLsApRQ0FLwQvgA3QJtEmgC9AKoIN4CbhJoAwgTDAKoMNBDADMIENwCfBJ4IwQCuEDUcoSCiEMYExBi8IDYEvBTBGDYMwgjEADgEOQA+AEYIRAw8AD8ARAQ9AEQISBBKBD0ASwA9CEoAPRBKEEoIPhhKIEooSwBKCEoERgxFDEEAQwRFBEEERAxIFEsEQQRIAEEMSwBBFEoUSwhCHEokSixLBEoMSgBAAEQERABIBEoASgRJAE0ETQxNCE0QTwhMAFMATQBSAFMAUQBVBFUAXABdBF8AXABgCGAEYQBiAGAAZwBjBGAEZQBlCGUEZgBnAGcIZwRmAHMAcwB2AHwAgAiAEIAYgCCBAIIAggiDAIMEgACG4IrkiECMRIxwjHSNMJFYkTSRXJIwkjSSeJJ8kACUCJQQlwCsBJQMlBSXBK8IrwyvEK8UrxivHK4AlgiWEJcgrgSWDJYUlySvKK8srzCvNK84rzysAJgImASYDJoAmgiaBJoMmwibEJsYmACzDJsUmxyYBLAIsAywELAUsBiwHLMomzCbOJggsyybNJs8mCSwKLAssDCwNLA4sDyzSJtQm1ibTJtUm1ybaJtwm3ibbJt0m3yYAJwInAScDJ4AngieBJ4MnACgCKAQoASgDKAUoQihEKEYoSShLKE0oQCxKKEwoTihBLEIsQyxELEUsRixHLFEoUyhVKEgsUihUKFYoSSxKLEssTCxNLE4sTyyCLAEugDGHLAEvAi8DLwYuhTEAMAEwAjBARkFGgEbARsJGwUYAR0BHgEfAR8JHAElASYBJgkkASsJJA0oESkBKQUqASoFKwErBSsBLwUsASwFLQEtBS8JLw0uAS4FLgkuDSwBMAUwCTANMAFZAVEJURFRGVEhUSlRMVE5UUFRSVFRUVlSAVIJUhFTAVMFUAFUBVUBVQVWAVYFVwFXBVYBWwFgAVwJXBFcGVwhXClcMVw5XEFcSVxRXFldAV0JXRFeAV4FXwFfBVwBYAVhAWEFYgFiBWABZAVkCWQNZQFlAj0KPgI/Aj8GPAJABkEGQQJBDkICQgZDAkABB0MMDC8Ye+hgXVg1WEhMWDBYRNukCNkw24RISFhMOEA7iEhIMEwz6GRcWbQ8WDg8FFAwbDw4PDCsOAjYOCwUVSxbhDwzB4hAM4gD/MAL/CAL/J78iIQJfXyEiYQIhAkFCIQIhAp9/Al9fIQJfPwIFPyJlAQMCAQMCAQMC/wgC/woCAQMCXyEC/zKiIQIhIl9BAv8A4jwF4hPkCm7kBO4GhM4EDgTuCeZofwQOPyAEQhYBYC4BFkEAAQAhAuEJAOEB4hs/AkFC/xBiPwxfPwLhK+Io/xoPhij/L/8GAv9YAOEeIAS24iEWESAvDQDmJREGFiYWJhYG4ADlE2BlNuADu0w2DTYv5gMWG1blGATlAuYN6QJ2JQblWxYFxhsPpiQmD2Yl6QJFLwX2BgAbBQblFuYTIOVR5gMF4AbpAuUZ5gEkD1YEIAYt5Q5mBOYBBEYEhiD2BwDlEUYgFgDlA4DlEA6lADug5gDlIQTmEBvmGAflLgYHBgVH5gBnBicFxuUCJjbpAhYE5QcGJwDlACAlIOUOAMUABUBlIAYFR2YgJyAnBgXgAAdgJQBFJiDpAiUtqw8NBRYGICYHAKVgJSDlDgDFACUAJQAlIAYARyZgJiBGQAbAZQAFwOkCJkUGFuACJgcA5QEARQDlDgDFACUAhSAGBUeGACYHACcGIAXgByUmIOkCFg3ABaYABicA5QAgJSDlDgDFACUAhSAGBQcGB2YgJyAnBsAmB2AlAEUmIOkCDwWr4AIGBQClQEUAZUAlAAUAJUAlQEVA5QRgJwYnQEcARwYgBaAH4AbpAkuvDQ+ABkcG5QAARQDlDwDlCCAGBUZnAEYAZsAmAEUgBSAlJiDpAsAWyw8FBicW5QAARQDlDwDlAgCFIAYFBwaHAAYnACcmwCegJQAlJiDpAgAl4AUmJ+UBAEUA5SEmBUdmAEcARwYFD2BFB8tFJiDpAusBD6UABicA5QpA5RAA5QEABSDFQAZgR0YABgDnAKDpAiAnFuAE5SgGJcZgDaUE5gAW6QI24B0lAAUAhQDlEAAFAOUCBiXmAQUghQAEAKYg6QIgZeAYBU/2Bw8WTyav6QLrAg8GDwYPBhITEhMn5QAA5Rxg5gYHhhYmheYDAOYcAO8ABq8AL5ZvNuAd5SMnZgemByYnJgXpAralJyZlRgVHJcdFZuUFBicmpwYFB+kCRwYv4R4AAYABIOIjFgRC5YDBAGUgxQAFAGUg5SEAZSDlGQBlIMUABQBlIOUHAOUxAGUg5TsgRvYB6wxA5QjvAqDhTiCiIBHlgeQPFuUJF+USEhNA5UNWSuUAwOUKRgfgAeULJgc24AHlCibgBOUFAEUAJuAE5SwmB8bnAAYn5gNWBFYNBQYg6QKg6wKgthF2RhsG6QKg5RsE5S3AhSblGgYFgOU+4ALlFwBGZyZHYCcGp0ZgD0A26QLlFiCF4APlJGDlEqDpAgtA7xrlDyYnBiA25S0HBgfGAAYHBifmAKfmAiAG6QKg6QKg1gS2IOYGCOYI4ClmB+UnBgeGBwaHBiflAEDpAtbvAuYB7wE2ACYH5RYHZicmB0Yl6QLlJAYHJkcGB0Yn4AB25RznAOYAJyZAlukCQEXpAuUWpDbiAcDhIyBB9gDgAEYW5gUHxmUGpQYlByYFgOIk5DfiBQTiGuQd5jj/gA7iAP9a4gDhAKIgoSDiAOEA4gDhAKIgoSDiAAABAAEAAQA/wuEA4gYg4gDjAOIA4wDiAOMAggAiYQMOAk5CACJhA05iICJhAE7iAIFOIEIAImEDLgD3A5uxNhQVEjQVEhT2ABgZmxf2ARQVdjBWDBIT9gMMFhD2AhebAPsCCwQgq0wSEwTrAkwSEwDkBUDtGeAH5gVoBkjmBOAHLwFvAS8CQSJBAg8BLwyBrwEPAQ8BD2EPAmECZQIvIiGMP0IPDC8CD+sI6hs/agsvYIyPLG8MLwwvDM8M7xcsLwwPDO8X7ICE7wASExIT7wwszxIT70kM7xbsEe8grO894BHvA+AN6zTvRusO74AvDO8BDO8u7ADvZwzvgHASExITEhMSExITEhMSE+sW7ySMEhPsFxITEhMSExITEhPsCO+AeOx7EhMSExITEhMSExITEhMSExITEhMSE+w3EhMSE+wYEhPsgHrvKOwNL6zvHyDvGADvYeEo4ihfISLfQQI/Aj+CJEEC/1oCr39GP4B2CzbiHgACgAIg5TDABBbgBgblD+ABxQDFAMUAxQDFAMUAxQDFAOYYNhQVFBVWFBUWFBX2ARE2ERYUFTYUFRITEhMSExITlgT2AjF2ERYS9gUvVhITEhMSExITEeAa7xIA71HgBO+ATuAS7wRgF1YPBAUKEhMSExITEhMSEy8SExITEhMSExESMw/qAWYnEYQvSgQFFi8A5U4gJi4kBRHlUhZEBYDlIwDlVgAva+8C5RjvHOAE5QjvFwDrAu8W6wAP6wfvGOsC7x/rB++AuOWZOO845cARjQTlg+9A7y/gAeUgpDblgIQEVuUI6QIl4Az/JgUGSBbmAhYE/xQkJuU+6gImtuAA7g/kAS7/BiL/NgTiAJ//AgQufwV/Iv8NYQKBAv8HQQI/gD8AAgACf+AQRD8FJALFBkUGZQblDycmB28GQKsvDQ+g5Sx24AAn5SrnCCbgADbpAqDmCqVWBRYlBukC5RTmADblD+YDJ+ADFuUVQEYH5ScGJ2YnJkf2BQAE6QJgNoUGBOUB6QKFAOUhpicmJybgAUUG5QAGByDpAiB25QgEpU8FBwYH5SoGBUYlJoUmBQYF4BAlBDblAwcmJzYFJAcG4AKlIKUgpeABxQDFAOIjDmTiAQQuYOJI5RsnBicGJxYHBiDpAqDlqxzgBOUPYOUpYPyHeP2YeOWA5iDlYuAewuAEgoAFBuUCDOUFAIUABQAlACUA5WTuCeAI5YDjExLvCOU4IOUuwA/gGOUEDU/mCNYSExag5ggWMTASExITEhMSExITEhMSExITNhITdlBWAHYREhMSExITVgwRTAAWDTZghQDlfyAbAFYNVhITFgwWETbpAjZMNuESEhYTDhAO4hISDBMMEhMWEhM25QIE5SUk5RdApSClIKUgRUAtDA4PLQAPbC/gAlsvIOUEAOUSAOULACUA5Qcg5QbgGuVzgFZg6yVA7wHqLWvvCStPAO8FQA/gJ+8lBuB65RVA5SngBwbrE2DlGGvgAeUMCuUACoDlHoaA5RYAFuUcYOUAForgIuEg4iDlRiDpAqDhHGDiHGDlIOAA5SzgAxbhAwDhBwDBACEA4gMA4gcAwgAi4DvlgK/gAeUO4ALlAOAQpADkIgDkAeA9pSAFAOUkACVABSDlDwAW6wDlDy/L5RfgAOsB4CjlCwAlgIvlDqtAFuUSgBbgOOUwYCsl6wgg6yYFRgAmgGZlAEUA5RUgRmAG6wHA9gHA5RUrFuUVS+AY5QAP5RQmYIvW4AHlLkDW5Q4g6wDlC4DrAOUKwHbgBMvgSOVB4C/hK+AF4ivAq+UcZuAA6QLggJ7rFwDlIgAmESAl4EblFesCBeAA5Q7mA2uW4A7lCmZ24B7lDcvgDOUP4AEHBgflLeYH1mDrDOkCBiUmBeABRgflJUdmJyY2G3YG4AIbIOURwOkCoEblHIYH5gAA6QJ2BScF4ADlGwY2BeABJgflKEfmASdldmYWBwbpAgUWBVYA6wzgA+UKAOURR0YnBgcmtgbgOcUABQBlAOUHAOUCFqDlJwZH5gCA6QKgJicA5QAgJSDlDgDFACUAhQAmBScGZyAnIEcgBaAHgIUnIMZAhuCAA+UtR+YAJ0YHBmWW6QI2ABYGReAW5ShHpgcGZyYHJiUWBeAA6QLggB7lJ0dmIGcmByb2D2Um4BrlKEfmACcGByZWBeAD6QKg9gXgC+UjBgcGJ6YHBgUWoOkC4C7lEyBGJ2YHhmDpAitWD8XggDHlJEfmAQcmFuBc4RjiGOkC6wHgBOUAIAUg5QAAJQDlEKcAJyAmBwYFBwUHBlbgAekC4D7lACDlH0dmICZnBgUWBQfgEwXmAuUgpgcFZvYABuAABaYnRuUm5gUHJlYFluAF5UHggH/lAQDlHQfGAKYHBgWW4ALpAusLQDblFiDmDgAHxgcmBybgQcUAJQDlHqZABgAmAMYFBuAA6QKgpQAlAOUYhwAmACcGBwYFwOkC4ICu5QsmJzbggC8F4AfrDe8Abe8J4AUW5YMS4F7qZwCW4APlgDzgicTlWTbgBeWDpwD7AeCPP+WBv+ChMeWBscDlFwDpAmA25UcA6QKg5RYghhbgAuUoxpZvZBYP4ALpAgDLAOUNgOUL4IIo4RjiGOsPduBd5UNgBgXnL8Bm5AXgOCQWBAbgAyfgBuWXcOAA5YRO4CLlAeCiX2QAxAAkAOWAm+AlReAJZeAA5YEE4Ih85WOA5QVA5QHA5QIgDyYWe+CR1OYmIOYP4AHvbOA074Bu4ALvHyDvNCdGT6f7AOYAL8bvFmbvNeAN7zpGD+CAEusM4ATvT+AB6xHgf+ES4hLhEsIA4grhEuISAQAhIAEgISBhAOEAYgACAMIA4gPhEuISIQBhIOEAAMEA4hIhAGEAgQABQMEA4hLhEuIS4RLiEuES4hLhEuIS4RLiEuES4hQg4REM4hEMouERDOIRDKLhEQziEQyi4REM4hEMouERDOIRDKI/IOkq74F45i9v5irvAAbvBgYvluAHhgDmB+CDyOICBeIM4IBZxgDmCSDGACYAhuCATeUlQMbEIOkCYAUP4IC45RYG4AnlJGbpAoAN4IRYxQBlACUA5QcA5YA9IOsBxuAh4RriGsYEYOkCYDbggonrMw9LDWvgROslD+sH4IA6ZQDlEwAlAAUgBQDlAgBlAAUABaAFYAUABQAFAEUAJQAFIAUABQAFAAUABQAlAAUgZQDFAGUAZQAFAOUCAOUJgEUAhQDlCeAsLOCAhu8kYO9c4ATvByDvBwDvBwDvHeAC6wXvgBngMO8V4AXvJGDvAcAv4Aav4IAS74Bzju+CUIDvCEDvBUDvbOAE71HA7wRgD+AH7wRg7zDgAO8CoO8g4ADvFiAv4EbvgMzgBO8GII9Aj0DP4AHvFUDvA4Cv4ALvAqDvAOAAz+AB74ALAO8v4B3pAuCDfuXAZljgGOWPscDlgFYg5ZX64AblnKngi5flgZbghVrlksPgyqwuG+AW+1jgeOaAaODAvYj9wL92IP3Av3YgAAAA9SsAAHoUAAD8BQBBoOIDC8YBYPIAAIDyAABQ8wAAAPUAADv1AABQ9QAAoPUAAMD1AADL9QAA4PUAAECBAAAA9gAAIPYAAED2AABg9gAAkPYAAFD4AABV+AAAYPgAAKD4AADA+AAAUPoAAKz6AAC4+gAAvfoAAND6AAAS+wAAFvsAADD7AACA+wAAuvsAAND7AADv+wAA+PsAAAD8AADQ/AAAIP0AACD+AABK/gAAYP4AAID+AAAw/wAAIAABADwAAQBAAAEAkAABADABAQDQAQEAkHwAAHB5AEHw4wMLZBwAyAChATsADwBBACAACwAMABMAgAIfABcAFgAhAMABBQAKADcAFwCHAVwADAAFAAQAQgAEAA8ARwA6AAsAHwAJAAQAwgBKAPYAKgANABYArQDvABwABABHAJEAnAAzADcE0AIAQeDkAwuRBayA/oBE24BSeoBICIFOBIBC4oBgzWaAQKiA1oAAAAAA3YBDcBGAmQmBXB+AmoKKgJ+Dl4GNgcCMGBEckQMBiQAUKBEJAgUTJMohGAgIACELC5EJAAYAKUEhg0CnCICXgJCAQbyBi4gkIQkUjQABhZeBuACAnIOIgUFVgZ6JQZKVvoOfgWDUYgADgEDSAIBg1MDUgMYBCAkLgIsABoDAAw8GgJsDBAAWgEFTgZiAmICegJiAnoCYgJ6AmICegJgHgbFV/xiaAQAIgIkDAAAoGAAAAgEACAAAAAABAAsGAwMAgImAkCIEgJAAAAAAAAAAAENEgEJpjQABAQDHiq+MBo+A5DMZC4CigJ2P5YrkCogCA0CmixaFk7UJjgEiiYGcgrkxCYGJgImBnIK5IwkLgJ0KgIqCuTgQgZSBlROCuTEJgYiBiYGdgLoiEIKJgKeDuTAQF4GKgZyCuTAQF4GKgZuDuTAQgomAiYGcgsooAIeRgbwBhpGA4gEogY+AQKKQioqAo+2LAAuWGxARMoOMiwCJg0ZzgZ2BnYGdgcGSQLuBoYD1i4OIQN2EuImBk8mBioKwhK+Ou4KdiAm4irGSQa+NRsCzSPWfYHhzh6GBQWEHgJaE14GxjwC4gKWEm4usg6+LpIDCjYsHgayCsQARDICrJIBA7IdgTzKASFaERoUQDINDE4NBgoFBUoK0jayBjICsiIiAvIKji5GBuIKvjI2B24gIKECfiZaDuTEJgYmAiYFA0IwC6ZFA7DGGnIHRjgDpiuaNQQCMQPYoCQoAgECNMSuAm4mpIIORiq2NQZY4htKVgI35KgAIEAKAwSAIg0Fbg2BQVwC2M9yBYEyrgGAjYDCQDgEESRuAR+eZhZmFmQBBgOoDC5EBQKmAjoBB9IgxnYTfgLOAWbC+jIChpEKwgIyAj4xA0o9DT5lHkYFgeh2BQNGAQIaBQ2GDYFwfARCpgIhgIV+PQ0WZYcxfmYWZhZkAAAAAAABJvYCXgEFlgJeA5YCXgEDpgJGB5oCXgPaAjoBNVIBE1YBQIIFgz22BU52Al4BBV4CLgEDwgEN/gGC4MweEbC6s3wBBoOsDCzdDToBODoFGUoFIroBQ/YBgzjqAzohtAAYAnd//QO9OD1iEgUiQgJSAT2uBQLaAQs6AT+CIRmeAAEHg6wMLE0X/hUDWgLCAQX+Bz4BhB9mAjoAAQYDsAws3Q3mASreA/oBgIeaBYMvAhUGVgfMAAAAAAAAAgEEegQBDeYBgLR+BYMvAhUGVgfMAAAAAAAAAgABBwOwDCxZBwwgIgaSBTtyqCk6HPz+Hi4COgK6AAEHg7AMLIUDegM+Al4BEPIBZEYBA5D8/h4kRBQIRgKkRgGDbB4aLhABBkO0DC4cEQJ8GAAEAARIQgp+AzwGAiweA+wEBgKWAQLuInimE2giBiYCjBAIECIDJgpyAQZOAQJOA14NC3of7CIDSAYChEYBA/IFC1ID+gKeBrYC1gIgDAwOAi4CIACaAkICIAwMDgIuAQUGA4YFGUoHUhEUbEIqAkYCbjIChpEDZgEDVAAAAAAAAAT8/h4kRBAApBBKAiBKAiBERBAiPACCLEioICwAHgowGkoGagIyKgNYYEIoBDAoAEBECBgUchY+Pj4iAQKEIgUD3gUE01ZmaRSCA5oLkgEGegUDwgEEugNKAi0DVqYC0AILfCYDegLDdgo3fnoCnh66AQX9gcpuBQNGAQIASgUNhg4iAYE2VQQ0IAIGJAAAJgsOB6aWGiyQAlwQAAQGA66BBapG/gbWnjIKZlZSBi4CSAxoAgECGCICfmUCDFQ0NChYGgIhHhyCpgIhgtOSDVLmGjYe/hUI+1IDGAQgJC4CLAAaAwAMPBoCbAwQAFoBBU4FBI4GxVf8YmgEACICJAwAAKBgAAAIBAAgAAAAAAQALBgMDAICJgJAiBICQQkOKhJ6An5mCooDugoyrg4gxSZ2JYPwFQh1rBeFP/6+JNZmFRhuAWfCBmYS2gwCsgEVbgLKATkCARASASAiFvICmgI6AQYWATAMBgJ4LgJuAQb2AkoDugGDNj4GkgImAQKiAT56AAEGg8QMLF0FIgEUogEkCAIBIKIFIxIVCuIFt3NWAAEHA8QMLhwPdAIDGBQMBgUH2QJ4HJZALgIiBQPyEQNCAtpCAmgABAECFO4FAhQsKgsKa2oq5iqGB/YeoiY+bvICPAoObgMmAj4DtgI+A7YCPgK6Cu4CPBoD2gO2Aj4DtgI+A7IGPgPuA+yiA6oCMhMqBmgAAA4HBEIG9gO8AgacLhJgwgImBQsCCQ7OBQLKKiIBBWoJBODmAr46BiueAjoCliLWBQImBv4XRmBgoCrG+2IukikG8AIKKgoyCjIKMgUzvgkE8gEH5heiD3oBgdXGAiwiAm4HRgY2h5YLsgUDJgJqRuIOjgN6Ai4CjgECUgsCDsoDjhIiC/4FgTy+AQwCPQQ0AgK6ArIHCgEL7gESeKKmAiEMpgUI6hUIdirCDQL+AqIDHgfeBvYDLgIiC54FAsYHQgI+AlzKEQMwCgPqBQPqB/YD1gfKAQQyBQQELgECbgNKAkYDQgEGkgEEBAIHQgGBNV4S6hkRXkM+BYD/9GDCBXwCtgZZCHxIvOYadg0+BhkF2gLyDRd+G7BCCAEHQ9AMLcUC2gEIXgUNtgEG4gENZgELvgP6ASUKAt4BCYoBBjYDDgFOIgKqE5oHcgmBvFYBF9YBDwYCVgECIgOuAlIFgVHqASA+BS9mAQmeCRM6AYFCogUSbCIBgcVeBSAWCr4k1mYVg/qiJNZmFYC/vCYdgL/GBAEHQ9QMLVWAwBYGYiI2CQ8RZv79gUf9gWP9BbYHpYHUJgJpX94dE1amIYCRmQYtgTQNgpt+fUDiGQN2BVoGNXTBMHkIdReFTSmAgC4FOP4T6hErvEYBgkPkJAIEAQbD2AwtHYP3Pn0INgWD//YFg//2BYP/9gWD//YFg//2BYP/9gWD//YFg//2BYP/9gWD//YFg//2BYP/9gWD//YFg//2BYP/9gWD//YEAQYD3AwtFoI6JhpkYgJmDoTAACAALAwKAloCegF8Xl4eOgZKAiUEwQs9An0J1nURrQf//QYATmI6AYM0MgUEEgYiEkYDjgF+HgZeBAEHQ9wML8gGhA4BAgoCOgF9bh5iBTgaAQciDjIJgziCDQLwDgNmBYC5/mYDYi0DVYfHlmQAAAACggIuAj4BFSIBAkoJAs4CqgkD1gLwAAoFBJIFG44FDFQOBQwSAQMWBQMsEgEE5gUFhg0CtCYGcgUC7gcCBQ7uBiIJN44CMgJWBQayAYHT7gEENgUDiAoBBfYHVgd6AQJeBQJKCQI+BQPiAYFJlAoFAqICLgI+AwIBK84FE/ISrg0C8gfSD/oJAgA2Aj4HXCIHrgEGggUF0DI7ogUD4gkIEAIBA+oHWgUGjgUKzgWBLdIFAhIDAgYqAQ1KAYE4FgF3ngABB0PkDC8YC6IFAw4BBGICdgLOAk4BBP4DhAIBZCICygIwCgECDgECcgEGkgEDVgUsxgGGnpIGxgbGBsYGxgbGBsYGxgbGBsYGxgbGBsYFIhYAAAAAAAACggIkAgIoKgEM9B4BCAIC4gMeAjQCCQLOAqooAQOqBtY6egEEEgUTzgUCrA4VBNoFDFIdDBID7gsaBQJwSgKYZgUE5gUFhg0CtCIKcgUC7hL2BQ7uBiIJN44CMA4CJAAqBQauBYHT6gUEMgkDihEF9gdWB3oBAloJAkoL+gI+BQPiAYFJjEINAqICJAICKCoDAAYBEOYCvgESFgEDGgEE1gUCXhcOF2INDt4Srg0C8hu+D/oJAgA2Aj4HXhOuAQaCCi4FBZRqO6IFA+IJCBACAQPqB1guBQZ2CrIBChIFFdoRgRfiBQISAwIKJgENRgWBOBYBd5oMAQaD8Aws3YDP/Wb+/YFH/YFoNCACBiQAACYJhBdVgpt+fUDiGQN2BVoGNXTBUHlNKWAoQgGDl749tAu9A7wBB4PwDCxaIhJGA44CZgFXegEl+ipwMgK6AT5+AAEGA/QMLhwSngZEAgJsAgJwAgKyAjoBOfYNHXIFJm4GJgbWBjYFAsIBAvxoqAgoYGAADiCCAkSOICAA5ngsgiAmSIYghC5eBjzuTDoFEPI3JARgIFBwSjUGSlQ2AjTg1EBwBDBgCCYkpgYuSAwgACAMhKpeBigsYCQuqD4CnIAAUIhgUAED/gEICGgiBjQmJqodBqokPYM48LIFAoYGRAICbAICcAAAIgWDXdoC4gLiAuIC4gAAAAKIFBInuA4BfjICLgEDXgJWA2YWOgUFugYuAQKWAmIoaQMaAQOaBiYCIgLkYhIgBAQkDAQAJAgIPFAAEi4oJAAiAkQGBkSgACgwBC4GKDAkECACBkwwoGQMBASgBAAAFAgWAiYGOAQMAAxCAioGvgoiAjYCNgEFzgUHOgpKBsgOARNmAi4BCWACAYb1pgEDJgECfgYuBjQGJypkBloCTAYiUgUCtoYHvCQKB0gqAQQaAvooolzEPiwEZA4GMCQeBiASCixcRAAMFAgXVr8UnCoSIEAEQgYlA4osYQRqugImAQLjvIiKGiJyCiiWJiS8+AKIFBIlf0oBA1IBg3SqAYPPVmUH6hEWvg2wGa99h8/qEYCYcgEDagI+DYcx2gLsRAYL0CYqUkhAaAjAAl4BAyAuAlAOBQK0ShNKAj4KIgIqAQj4BBz2AiIkKt4C8CAiAkBCMQOSCqYYAQZCBBAuRAWAjGYFAzBoBgEIIgZSBsYuqgJKAjAeBkAwPBICUBggDAQYDgZuAogADEIC8gpeAjYBDWoGyA4BhxK2AQMmAQL0BicqZAJeAkwEggpSBQK2gi4iAxYCVi6oci5AQgsYAgEC6gb6MGJeRgJmBjIDV1K/FKBIKIooOiEDiixhBGq6AiYBAuO8iIoaInIKKJYmJLz4AQbCCBAvTAUCoA4BfjICLgEDXgJWA2YWOgUFugYuA3oDFgJiKGkDGgEDmgYmAiIC5GCiLgPGJ9YGKAAAoECiJgY4BAwADEICKhKyCiICNgI2AQXOBQc6CkoGyA4BE2YCLgEJYAIBhvWVA/4yCnoC7hYuBjQGJkbiajomAkwGIA4hBsYRBPYdBCa//84vUqouDt4eJhaeHndGLroCJgEG4QP9D/QAAAABArIBCoIBCy4BLQYFGUoHUhEf6hJmEsI9Q84BgzJqPQO6AQJ+AzohgvKaDVM6HbC6ET/8AQZCEBAtgT7thBWes3T8YLURU+yHpP5v2gdILc+8/GC1EVPsh+T/iZS8ifyt6PAdcFDMmpoE8vcvweogHcDwHXBQzJqaRPBgtRFT7Iek/GC1EVPsh6b/SITN/fNkCQNIhM3982QLAAEH/hAQL6BWAGC1EVPshCUAYLURU+yEJwAMAAAAEAAAABAAAAAYAAACD+aIARE5uAPwpFQDRVycA3TT1AGLbwAA8mZUAQZBDAGNR/gC73qsAt2HFADpuJADSTUIASQbgAAnqLgAcktEA6x3+ACmxHADoPqcA9TWCAES7LgCc6YQAtCZwAEF+XwDWkTkAU4M5AJz0OQCLX4QAKPm9APgfOwDe/5cAD5gFABEv7wAKWosAbR9tAM9+NgAJyycARk+3AJ5mPwAt6l8Auid1AOXrxwA9e/EA9zkHAJJSigD7a+oAH7FfAAhdjQAwA1YAe/xGAPCrawAgvM8ANvSaAOOpHQBeYZEACBvmAIWZZQCgFF8AjUBoAIDY/wAnc00ABgYxAMpWFQDJqHMAe+JgAGuMwAAZxEcAzWfDAAno3ABZgyoAi3bEAKYclgBEr90AGVfRAKU+BQAFB/8AM34/AMIy6ACYT94Au30yACY9wwAea+8An/heADUfOgB/8soA8YcdAHyQIQBqJHwA1W76ADAtdwAVO0MAtRTGAMMZnQCtxMIALE1BAAwAXQCGfUYA43EtAJvGmgAzYgAAtNJ8ALSnlwA3VdUA1z72AKMQGABNdvwAZJ0qAHDXqwBjfPgAerBXABcV5wDASVYAO9bZAKeEOAAkI8sA1op3AFpUIwAAH7kA8QobABnO3wCfMf8AZh5qAJlXYQCs+0cAfn/YACJltwAy6IkA5r9gAO/EzQBsNgkAXT/UABbe1wBYO94A3puSANIiKAAohugA4lhNAMbKMgAI4xYA4H3LABfAUADzHacAGOBbAC4TNACDEmIAg0gBAPWOWwCtsH8AHunyAEhKQwAQZ9MAqt3YAK5fQgBqYc4ACiikANOZtAAGpvIAXHd/AKPCgwBhPIgAinN4AK+MWgBv170ALaZjAPS/ywCNge8AJsFnAFXKRQDK2TYAKKjSAMJhjQASyXcABCYUABJGmwDEWcQAyMVEAE2ykQAAF/MA1EOtAClJ5QD91RAAAL78AB6UzABwzu4AEz71AOzxgACz58MAx/goAJMFlADBcT4ALgmzAAtF8wCIEpwAqyB7AC61nwBHksIAezIvAAxVbQByp5AAa+cfADHLlgB5FkoAQXniAPTfiQDolJcA4uaEAJkxlwCI7WsAX182ALv9DgBImrQAZ6RsAHFyQgCNXTIAnxW4ALzlCQCNMSUA93Q5ADAFHAANDAEASwhoACzuWABHqpAAdOcCAL3WJAD3faYAbkhyAJ8W7wCOlKYAtJH2ANFTUQDPCvIAIJgzAPVLfgCyY2gA3T5fAEBdAwCFiX8AVVIpADdkwABt2BAAMkgyAFtMdQBOcdQARVRuAAsJwQAq9WkAFGbVACcHnQBdBFAAtDvbAOp2xQCH+RcASWt9AB0nugCWaSkAxsysAK0UVACQ4moAiNmJACxyUAAEpL4AdweUAPMwcAAA/CcA6nGoAGbCSQBk4D0Al92DAKM/lwBDlP0ADYaMADFB3gCSOZ0A3XCMABe35wAI3zsAFTcrAFyAoABagJMAEBGSAA/o2ABsgK8A2/9LADiQDwBZGHYAYqUVAGHLuwDHibkAEEC9ANLyBABJdScA67b2ANsiuwAKFKoAiSYvAGSDdgAJOzMADpQaAFE6qgAdo8IAr+2uAFwmEgBtwk0ALXqcAMBWlwADP4MACfD2ACtAjABtMZkAObQHAAwgFQDYw1sA9ZLEAMatSwBOyqUApzfNAOapNgCrkpQA3UJoABlj3gB2jO8AaItSAPzbNwCuoasA3xUxAACuoQAM+9oAZE1mAO0FtwApZTAAV1a/AEf/OgBq+bkAdb7zACiT3wCrgDAAZoz2AATLFQD6IgYA2eQdAD2zpABXG48ANs0JAE5C6QATvqQAMyO1APCqGgBPZagA0sGlAAs/DwBbeM0AI/l2AHuLBACJF3IAxqZTAG9u4gDv6wAAm0pYAMTatwCqZroAds/PANECHQCx8S0AjJnBAMOtdwCGSNoA912gAMaA9ACs8C8A3eyaAD9cvADQ3m0AkMcfACrbtgCjJToAAK+aAK1TkwC2VwQAKS20AEuAfgDaB6cAdqoOAHtZoQAWEioA3LctAPrl/QCJ2/4Aib79AOR2bAAGqfwAPoBwAIVuFQD9h/8AKD4HAGFnMwAqGIYATb3qALPnrwCPbW4AlWc5ADG/WwCE10gAMN8WAMctQwAlYTUAyXDOADDLuAC/bP0ApACiAAVs5ABa3aAAIW9HAGIS0gC5XIQAcGFJAGtW4ACZUgEAUFU3AB7VtwAz8cQAE25fAF0w5ACFLqkAHbLDAKEyNgAIt6QA6rHUABb3IQCPaeQAJ/93AAwDgACNQC0AT82gACClmQCzotMAL10KALT5QgAR2ssAfb7QAJvbwQCrF70AyqKBAAhqXAAuVRcAJwBVAH8U8ADhB4YAFAtkAJZBjQCHvt4A2v0qAGsltgB7iTQABfP+ALm/ngBoak8ASiqoAE/EWgAt+LwA11qYAPTHlQANTY0AIDqmAKRXXwAUP7EAgDiVAMwgAQBx3YYAyd62AL9g9QBNZREAAQdrAIywrACywNAAUVVIAB77DgCVcsMAowY7AMBANQAG3HsA4EXMAE4p+gDWysgA6PNBAHxk3gCbZNgA2b4xAKSXwwB3WNQAaePFAPDaEwC6OjwARhhGAFV1XwDSvfUAbpLGAKwuXQAORO0AHD5CAGHEhwAp/ekA59bzACJ8ygBvkTUACODFAP/XjQBuauIAsP3GAJMIwQB8XXQAa62yAM1unQA+cnsAxhFqAPfPqQApc98Atcm6ALcAUQDisg0AdLokAOV9YAB02IoADRUsAIEYDAB+ZpQAASkWAJ96dgD9/b4AVkXvANl+NgDs2RMAi7q5AMSX/AAxqCcA8W7DAJTFNgDYqFYAtKi1AM/MDgASiS0Ab1c0ACxWiQCZzuMA1iC5AGteqgA+KpwAEV/MAP0LSgDh9PsAjjttAOKGLADp1IQA/LSpAO/u0QAuNckALzlhADghRAAb2cgAgfwKAPtKagAvHNgAU7SEAE6ZjABUIswAKlXcAMDG1gALGZYAGnC4AGmVZAAmWmAAP1LuAH8RDwD0tREA/Mv1ADS8LQA0vO4A6F3MAN1eYABnjpsAkjPvAMkXuABhWJsA4Ve8AFGDxgDYPhAA3XFIAC0c3QCvGKEAISxGAFnz1wDZepgAnlTAAE+G+gBWBvwA5XmuAIkiNgA4rSIAZ5PcAFXoqgCCJjgAyuebAFENpACZM7EAqdcOAGkFSABlsvAAf4inAIhMlwD50TYAIZKzAHuCSgCYzyEAQJ/cANxHVQDhdDoAZ+tCAP6d3wBe1F8Ae2ekALqsegBV9qIAK4gjAEG6VQBZbggAISqGADlHgwCJ4+YA5Z7UAEn7QAD/VukAHA/KAMVZigCU+isA08HFAA/FzwDbWq4AR8WGAIVDYgAhhjsALHmUABBhhwAqTHsAgCwaAEO/EgCIJpAAeDyJAKjE5ADl23sAxDrCACb06gD3Z4oADZK/AGWjKwA9k7EAvXwLAKRR3AAn3WMAaeHdAJqUGQCoKZUAaM4oAAnttABEnyAATpjKAHCCYwB+fCMAD7kyAKf1jgAUVucAIfEIALWdKgBvfk0ApRlRALX5qwCC39YAlt1hABY2AgDEOp8Ag6KhAHLtbQA5jXoAgripAGsyXABGJ1sAADTtANIAdwD89FUAAVlNAOBxgABB85oEC60BQPsh+T8AAAAALUR0PgAAAICYRvg8AAAAYFHMeDsAAACAgxvwOQAAAEAgJXo4AAAAgCKC4zYAAAAAHfNpNf6CK2VHFWdAAAAAAAAAOEMAAPr+Qi52vzo7nrya9wy9vf3/////3z88VFVVVVXFP5ErF89VVaU/F9CkZxERgT8AAAAAAADIQu85+v5CLuY/JMSC/72/zj+19AzXCGusP8xQRtKrsoM/hDpOm+DXVT8AQa6cBAuSEPA/br+IGk87mzw1M/upPfbvP13c2JwTYHG8YYB3Pprs7z/RZocQel6QvIV/bugV4+8/E/ZnNVLSjDx0hRXTsNnvP/qO+SOAzou83vbdKWvQ7z9hyOZhTvdgPMibdRhFx+8/mdMzW+SjkDyD88bKPr7vP217g12mmpc8D4n5bFi17z/87/2SGrWOPPdHciuSrO8/0ZwvcD2+Pjyi0dMy7KPvPwtukIk0A2q8G9P+r2ab7z8OvS8qUlaVvFFbEtABk+8/VepOjO+AULzMMWzAvYrvPxb01bkjyZG84C2prpqC7z+vVVzp49OAPFGOpciYeu8/SJOl6hUbgLx7UX08uHLvPz0y3lXwH4+86o2MOPlq7z+/UxM/jImLPHXLb+tbY+8/JusRdpzZlrzUXASE4FvvP2AvOj737Jo8qrloMYdU7z+dOIbLguePvB3Z/CJQTe8/jcOmREFvijzWjGKIO0bvP30E5LAFeoA8ltx9kUk/7z+UqKjj/Y6WPDhidW56OO8/fUh08hhehzw/prJPzjHvP/LnH5grR4A83XziZUUr7z9eCHE/e7iWvIFj9eHfJO8/MasJbeH3gjzh3h/1nR7vP/q/bxqbIT28kNna0H8Y7z+0CgxygjeLPAsD5KaFEu8/j8vOiZIUbjxWLz6prwzvP7arsE11TYM8FbcxCv4G7z9MdKziAUKGPDHYTPxwAe8/SvjTXTndjzz/FmSyCPzuPwRbjjuAo4a88Z+SX8X27j9oUEvM7UqSvMupOjen8e4/ji1RG/gHmbxm2AVtruzuP9I2lD7o0XG895/lNNvn7j8VG86zGRmZvOWoE8Mt4+4/bUwqp0ifhTwiNBJMpt7uP4ppKHpgEpO8HICsBEXa7j9biRdIj6dYvCou9yEK1u4/G5pJZ5ssfLyXqFDZ9dHuPxGswmDtY0M8LYlhYAjO7j/vZAY7CWaWPFcAHe1Byu4/eQOh2uHMbjzQPMG1osbuPzASDz+O/5M83tPX8CrD7j+wr3q7zpB2PCcqNtXav+4/d+BU670dkzwN3f2ZsrzuP46jcQA0lI+8pyyddrK57j9Jo5PczN6HvEJmz6Latu4/XzgPvcbeeLyCT51WK7TuP/Zce+xGEoa8D5JdyqSx7j+O1/0YBTWTPNontTZHr+4/BZuKL7eYezz9x5fUEq3uPwlUHOLhY5A8KVRI3Qer7j/qxhlQhcc0PLdGWYomqe4/NcBkK+YylDxIIa0Vb6fuP592mWFK5Iy8Cdx2ueGl7j+oTe87xTOMvIVVOrB+pO4/rukriXhThLwgw8w0RqPuP1hYVnjdzpO8JSJVgjii7j9kGX6AqhBXPHOpTNRVoe4/KCJev++zk7zNO39mnqDuP4K5NIetEmq8v9oLdRKg7j/uqW2472djvC8aZTyyn+4/UYjgVD3cgLyElFH5fZ/uP88+Wn5kH3i8dF/s6HWf7j+wfYvASu6GvHSBpUian+4/iuZVHjIZhrzJZ0JW65/uP9PUCV7LnJA8P13eT2mg7j8dpU253DJ7vIcB63MUoe4/a8BnVP3slDwywTAB7aHuP1Vs1qvh62U8Yk7PNvOi7j9Cz7MvxaGIvBIaPlQnpO4/NDc78bZpk7wTzkyZiaXuPx7/GTqEXoC8rccjRhqn7j9uV3LYUNSUvO2SRJvZqO4/AIoOW2etkDyZZorZx6ruP7Tq8MEvt40826AqQuWs7j//58WcYLZlvIxEtRYyr+4/RF/zWYP2ezw2dxWZrrHuP4M9HqcfCZO8xv+RC1u07j8pHmyLuKldvOXFzbA3t+4/WbmQfPkjbLwPUsjLRLruP6r59CJDQ5K8UE7en4K97j9LjmbXbMqFvLoHynDxwO4/J86RK/yvcTyQ8KOCkcTuP7tzCuE10m08IyPjGWPI7j9jImIiBMWHvGXlXXtmzO4/1THi44YcizwzLUrsm9DuPxW7vNPRu5G8XSU+sgPV7j/SMe6cMcyQPFizMBOe2e4/s1pzboRphDy//XlVa97uP7SdjpfN34K8evPTv2vj7j+HM8uSdxqMPK3TWpmf6O4/+tnRSo97kLxmto0pB+7uP7qu3FbZw1W8+xVPuKLz7j9A9qY9DqSQvDpZ5Y1y+e4/NJOtOPTWaLxHXvvydv/uPzWKWGvi7pG8SgahMLAF7z/N3V8K1/90PNLBS5AeDO8/rJiS+vu9kbwJHtdbwhLvP7MMrzCubnM8nFKF3ZsZ7z+U/Z9cMuOOPHrQ/1+rIO8/rFkJ0Y/ghDxL0Vcu8SfvP2caTjivzWM8tecGlG0v7z9oGZJsLGtnPGmQ79wgN+8/0rXMgxiKgLz6w11VCz/vP2/6/z9drY+8fIkHSi1H7z9JqXU4rg2QvPKJDQiHT+8/pwc9poWjdDyHpPvcGFjvPw8iQCCekYK8mIPJFuNg7z+sksHVUFqOPIUy2wPmae8/S2sBrFk6hDxgtAHzIXPvPx8+tAch1YK8X5t7M5d87z/JDUc7uSqJvCmh9RRGhu8/04g6YAS2dDz2P4vnLpDvP3FynVHsxYM8g0zH+1Ga7z/wkdOPEvePvNqQpKKvpO8/fXQj4piujbzxZ44tSK/vPwggqkG8w448J1ph7hu67z8y66nDlCuEPJe6azcrxe8/7oXRMalkijxARW5bdtDvP+3jO+S6N468FL6crf3b7z+dzZFNO4l3PNiQnoHB5+8/icxgQcEFUzzxcY8rwvPvPwAAAAAAAPA/AAAAAAAA+D8AAAAAAAAAAAbQz0Pr/Uw+AEHLrAQLlgFAA7jiP9F0ngBXnb0qgHBSD///PicKAAAAZAAAAOgDAAAQJwAAoIYBAEBCDwCAlpgAAOH1BRgAAAA1AAAAcQAAAGv////O+///kr///wAAAAAAAAAAGQAKABkZGQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAAZABEKGRkZAwoHAAEACQsYAAAJBgsAAAsABhkAAAAZGRkAQfGtBAshDgAAAAAAAAAAGQAKDRkZGQANAAACAAkOAAAACQAOAAAOAEGrrgQLAQwAQbeuBAsVEwAAAAATAAAAAAkMAAAAAAAMAAAMAEHlrgQLARAAQfGuBAsVDwAAAAQPAAAAAAkQAAAAAAAQAAAQAEGfrwQLARIAQauvBAseEQAAAAARAAAAAAkSAAAAAAASAAASAAAaAAAAGhoaAEHirwQLDhoAAAAaGhoAAAAAAAAJAEGTsAQLARQAQZ+wBAsVFwAAAAAXAAAAAAkUAAAAAAAUAAAUAEHNsAQLARYAQdmwBAsnFQAAAAAVAAAAAAkWAAAAAAAWAAAWAAAwMTIzNDU2Nzg5QUJDREVGAEGksQQLAncBAEHMsQQLCP//////////AEGQsgQLAQUAQZyyBAsCcgEAQbSyBAsOcwEAAHQBAACYGgEAAAQAQcyyBAsBAQBB3LIECwX/////CgBBoLMECwcQGQEAkCBR";if(!T(U)){var ha=U;U=c.locateFile?c.locateFile(ha,t):t+ha;}function ia(){var a=U;try{if(a==U&&v)return new Uint8Array(v);if(T(a))try{var b=ja(a.slice(37)),d=new Uint8Array(b.length);for(a=0;a>2]=60*Math.max(f,m);N[b>>2]=Number(f!=m);a=e(g);b=e(k);a=K(a);b=K(b);m>2]=a,N[d+4>>2]=b):(N[d>>2]=b,N[d+4>>2]=a);}function W(a,b,d){W.B||(W.B=!0,la(a,b,d));}function X(a){var b=J(a)+1,d=L(b);B(a,C,d,b);return d;}function ma(){}var na=[null,[],[]];ma=(a,b,d)=>{a=G(a);b=null!==b?JSON.parse(G(b)):[];try{const e=c.externalCall(a,b);return e?X(e):null;}catch(e){return c.HEAPU8[d]=1,X(e.message);}};var ja="function"==typeof atob?atob:function(a){var b="",d=0;a=a.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));e=e<<2|f>>4;f=(f&15)<<4|g>>2;var m=(g&3)<<6|k;b+=String.fromCharCode(e);64!==g&&(b+=String.fromCharCode(f));64!==k&&(b+=String.fromCharCode(m));}while(d>2]);N[b>>2]=a.getSeconds();N[b+4>>2]=a.getMinutes();N[b+8>>2]=a.getHours();N[b+12>>2]=a.getDate();N[b+16>>2]=a.getMonth();N[b+20>>2]=a.getFullYear()-1900;N[b+24>>2]=a.getDay();var d=new Date(a.getFullYear(),0,1);N[b+28>>2]=(a.getTime()-d.getTime())/864E5|0;N[b+36>>2]=-(60*a.getTimezoneOffset());var e=new Date(a.getFullYear(),6,1).getTimezoneOffset();d=d.getTimezoneOffset();N[b+32>>2]=(e!=d&&a.getTimezoneOffset()==Math.min(d,e))|0;},f:W,b:function(){w("");},h:ma,g:function(a,b){a=G(a);let d;try{d=window.JSON.parse(a);}catch(e){d=a;}0!==b?window.alert(a):window.console.log("DUMP",d);},j:function(a){var b=C.length;a>>>=0;if(2147483648=d;d*=2){var e=b*(1+.2/d);e=Math.min(e,a+100663296);var f=Math;e=Math.max(a,e);f=f.min.call(f,2147483648,e+(65536-e%65536)%65536);a:{try{x.grow(f-M.byteLength+65535>>>16);ba();var g=1;break a;}catch(k){}g=void 0;}if(g)return!0;}return!1;},c:function(a,b,d,e){for(var f=0,g=0;g>2],m=N[b+4>>2];b+=8;for(var q=0;q>2]=f;return 0;},k:function(a){a=G(a);window.console.log(a);},i:function(a){a=G(a);return Date.parse(a);},l:function(a,b,d,e){a=G(a);b=G(b);d=G(d);d=`Quickjs -- ${a}: ${b}\n${d}`;0!==e?window.alert(d):window.console.error(d);}};(function(){function a(f){c.asm=f.exports;x=c.asm.m;ba();O=c.asm.v;da.unshift(c.asm.n);P--;c.monitorRunDependencies&&c.monitorRunDependencies(P);0==P&&(null!==Q&&(clearInterval(Q),Q=null),R&&(f=R,R=null,f()));}function b(f){a(f.instance);}function d(f){return ka().then(function(g){return WebAssembly.instantiate(g,e);}).then(function(g){return g;}).then(f,function(g){u("failed to asynchronously prepare wasm: "+g);w(g);});}var e={a:oa};P++;c.monitorRunDependencies&&c.monitorRunDependencies(P);if(c.instantiateWasm)try{return c.instantiateWasm(e,a);}catch(f){return u("Module.instantiateWasm callback failed with error: "+f),!1;}(function(){return v||"function"!=typeof WebAssembly.instantiateStreaming||T(U)||"function"!=typeof fetch?d(b):fetch(U,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,e).then(b,function(g){u("wasm streaming compile failed: "+g);u("falling back to ArrayBuffer instantiation");return d(b);});});})().catch(n);return{};})();c.___wasm_call_ctors=function(){return(c.___wasm_call_ctors=c.asm.n).apply(null,arguments);};c._evalInSandbox=function(){return(c._evalInSandbox=c.asm.o).apply(null,arguments);};c._nukeSandbox=function(){return(c._nukeSandbox=c.asm.p).apply(null,arguments);};c._init=function(){return(c._init=c.asm.q).apply(null,arguments);};c._commFun=function(){return(c._commFun=c.asm.r).apply(null,arguments);};c._dumpMemoryUse=function(){return(c._dumpMemoryUse=c.asm.s).apply(null,arguments);};var L=c._malloc=function(){return(L=c._malloc=c.asm.t).apply(null,arguments);};c._free=function(){return(c._free=c.asm.u).apply(null,arguments);};var E=c.stackSave=function(){return(E=c.stackSave=c.asm.w).apply(null,arguments);},F=c.stackRestore=function(){return(F=c.stackRestore=c.asm.x).apply(null,arguments);},A=c.stackAlloc=function(){return(A=c.stackAlloc=c.asm.y).apply(null,arguments);};c.ccall=z;c.cwrap=function(a,b,d,e){d=d||[];var f=d.every(function(g){return"number"===g;});return"string"!==b&&f&&!e?c["_"+a]:function(){return z(a,b,d,arguments,e);};};c.stringToNewUTF8=X;var Y;R=function pa(){Y||Z();Y||(R=pa);};function Z(){function a(){if(!Y&&(Y=!0,c.calledRun=!0,!y)){V(da);h(c);if(c.onRuntimeInitialized)c.onRuntimeInitialized();if(c.postRun)for("function"==typeof c.postRun&&(c.postRun=[c.postRun]);c.postRun.length;){var b=c.postRun.shift();ea.unshift(b);}V(ea);}}if(!(0 { + + + +class SandboxSupportBase { + constructor(win) { + this.win = win; + this.timeoutIds = new Map(); + this.commFun = null; + } + + destroy() { + this.commFunc = null; + this.timeoutIds.forEach(_ref => { + let [_, id] = _ref; + return this.win.clearTimeout(id); + }); + this.timeoutIds = null; + } + + exportValueToSandbox(val) { + throw new Error("Not implemented"); + } + + importValueFromSandbox(val) { + throw new Error("Not implemented"); + } + + createErrorForSandbox(errorMessage) { + throw new Error("Not implemented"); + } + + callSandboxFunction(name, args) { + try { + args = this.exportValueToSandbox(args); + this.commFun(name, args); + } catch (e) { + this.win.console.error(e); + } + } + + createSandboxExternals() { + const externals = { + setTimeout: (callbackId, nMilliseconds) => { + if (typeof callbackId !== "number" || typeof nMilliseconds !== "number") { + return; + } + + const id = this.win.setTimeout(() => { + this.timeoutIds.delete(callbackId); + this.callSandboxFunction("timeoutCb", { + callbackId, + interval: false + }); + }, nMilliseconds); + this.timeoutIds.set(callbackId, id); + }, + clearTimeout: id => { + this.win.clearTimeout(this.timeoutIds.get(id)); + this.timeoutIds.delete(id); + }, + setInterval: (callbackId, nMilliseconds) => { + if (typeof callbackId !== "number" || typeof nMilliseconds !== "number") { + return; + } + + const id = this.win.setInterval(() => { + this.callSandboxFunction("timeoutCb", { + callbackId, + interval: true + }); + }, nMilliseconds); + this.timeoutIds.set(callbackId, id); + }, + clearInterval: id => { + this.win.clearInterval(this.timeoutIds.get(id)); + this.timeoutIds.delete(id); + }, + alert: cMsg => { + if (typeof cMsg !== "string") { + return; + } + + this.win.alert(cMsg); + }, + confirm: cMsg => { + if (typeof cMsg !== "string") { + return false; + } + + return this.win.confirm(cMsg); + }, + prompt: (cQuestion, cDefault) => { + if (typeof cQuestion !== "string" || typeof cDefault !== "string") { + return null; + } + + return this.win.prompt(cQuestion, cDefault); + }, + parseURL: cUrl => { + const url = new this.win.URL(cUrl); + const props = ["hash", "host", "hostname", "href", "origin", "password", "pathname", "port", "protocol", "search", "searchParams", "username"]; + return Object.fromEntries(props.map(name => [name, url[name].toString()])); + }, + send: data => { + if (!data) { + return; + } + + const event = new this.win.CustomEvent("updatefromsandbox", { + detail: this.importValueFromSandbox(data) + }); + this.win.dispatchEvent(event); + } + }; + Object.setPrototypeOf(externals, null); + return (name, args) => { + try { + const result = externals[name](...args); + return this.exportValueToSandbox(result); + } catch (error) { + var _error$toString; + + throw this.createErrorForSandbox((_error$toString = error === null || error === void 0 ? void 0 : error.toString()) !== null && _error$toString !== void 0 ? _error$toString : ""); + } + }; + } + +} + +{ + exports.SandboxSupportBase = SandboxSupportBase; +} + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __w_pdfjs_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +var exports = __webpack_exports__; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.QuickJSSandbox = QuickJSSandbox; + +var _quickjsEval = _interopRequireDefault(__w_pdfjs_require__(1)); + +var _pdfSandboxExternal = __w_pdfjs_require__(2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const pdfjsVersion = '2.16.105'; +const pdfjsBuild = '172ccdbe5'; + +class SandboxSupport extends _pdfSandboxExternal.SandboxSupportBase { + exportValueToSandbox(val) { + return JSON.stringify(val); + } + + importValueFromSandbox(val) { + return val; + } + + createErrorForSandbox(errorMessage) { + return new Error(errorMessage); + } + +} + +class Sandbox { + constructor(win, module) { + this.support = new SandboxSupport(win, this); + module.externalCall = this.support.createSandboxExternals(); + this._module = module; + this._alertOnError = 0; + } + + create(data) { + const code = ['(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === \'object\' && typeof module === \'object\')\n\t\tmodule.exports = factory();\n\telse if(typeof define === \'function\' && define.amd)\n\t\tdefine("pdfjs-dist/build/pdf.scripting", [], factory);\n\telse if(typeof exports === \'object\')\n\t\texports["pdfjs-dist/build/pdf.scripting"] = factory();\n\telse\n\t\troot.pdfjsScripting = factory();\n})(globalThis, () => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t"use strict";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.initSandbox = initSandbox;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _field = __w_pdfjs_require__(3);\n\nvar _aform = __w_pdfjs_require__(8);\n\nvar _app = __w_pdfjs_require__(9);\n\nvar _color = __w_pdfjs_require__(5);\n\nvar _console = __w_pdfjs_require__(13);\n\nvar _doc = __w_pdfjs_require__(14);\n\nvar _proxy = __w_pdfjs_require__(16);\n\nvar _util = __w_pdfjs_require__(17);\n\nfunction initSandbox(params) {\n delete globalThis.pdfjsScripting;\n const externalCall = globalThis.callExternalFunction;\n delete globalThis.callExternalFunction;\n\n const globalEval = code => globalThis.eval(code);\n\n const send = data => externalCall("send", [data]);\n\n const proxyHandler = new _proxy.ProxyHandler();\n const {\n data\n } = params;\n const doc = new _doc.Doc({\n send,\n globalEval,\n ...data.docInfo\n });\n const _document = {\n obj: doc,\n wrapped: new Proxy(doc, proxyHandler)\n };\n const app = new _app.App({\n send,\n globalEval,\n externalCall,\n _document,\n calculationOrder: data.calculationOrder,\n proxyHandler,\n ...data.appInfo\n });\n const util = new _util.Util({\n externalCall\n });\n const appObjects = app._objects;\n\n if (data.objects) {\n const annotations = [];\n\n for (const [name, objs] of Object.entries(data.objects)) {\n annotations.length = 0;\n let container = null;\n\n for (const obj of objs) {\n if (obj.type !== "") {\n annotations.push(obj);\n } else {\n container = obj;\n }\n }\n\n let obj = container;\n\n if (annotations.length > 0) {\n obj = annotations[0];\n obj.send = send;\n }\n\n obj.globalEval = globalEval;\n obj.doc = _document;\n obj.fieldPath = name;\n obj.appObjects = appObjects;\n let field;\n\n switch (obj.type) {\n case "radiobutton":\n {\n const otherButtons = annotations.slice(1);\n field = new _field.RadioButtonField(otherButtons, obj);\n break;\n }\n\n case "checkbox":\n {\n const otherButtons = annotations.slice(1);\n field = new _field.CheckboxField(otherButtons, obj);\n break;\n }\n\n case "text":\n if (annotations.length <= 1) {\n field = new _field.Field(obj);\n break;\n }\n\n obj.siblings = annotations.map(x => x.id).slice(1);\n field = new _field.Field(obj);\n break;\n\n default:\n field = new _field.Field(obj);\n }\n\n const wrapped = new Proxy(field, proxyHandler);\n const _object = {\n obj: field,\n wrapped\n };\n\n doc._addField(name, _object);\n\n for (const object of objs) {\n appObjects[object.id] = _object;\n }\n\n if (container) {\n appObjects[container.id] = _object;\n }\n }\n }\n\n const color = new _color.Color();\n globalThis.event = null;\n globalThis.global = Object.create(null);\n globalThis.app = new Proxy(app, proxyHandler);\n globalThis.color = new Proxy(color, proxyHandler);\n globalThis.console = new Proxy(new _console.Console({\n send\n }), proxyHandler);\n globalThis.util = new Proxy(util, proxyHandler);\n globalThis.border = _constants.Border;\n globalThis.cursor = _constants.Cursor;\n globalThis.display = _constants.Display;\n globalThis.font = _constants.Font;\n globalThis.highlight = _constants.Highlight;\n globalThis.position = _constants.Position;\n globalThis.scaleHow = _constants.ScaleHow;\n globalThis.scaleWhen = _constants.ScaleWhen;\n globalThis.style = _constants.Style;\n globalThis.trans = _constants.Trans;\n globalThis.zoomtype = _constants.ZoomType;\n globalThis.ADBE = {\n Reader_Value_Asked: true,\n Viewer_Value_Asked: true\n };\n const aform = new _aform.AForm(doc, app, util, color);\n\n for (const name of Object.getOwnPropertyNames(_aform.AForm.prototype)) {\n if (name !== "constructor" && !name.startsWith("_")) {\n globalThis[name] = aform[name].bind(aform);\n }\n }\n\n for (const [name, value] of Object.entries(_constants.GlobalConstants)) {\n Object.defineProperty(globalThis, name, {\n value,\n writable: false\n });\n }\n\n Object.defineProperties(globalThis, {\n ColorConvert: {\n value: color.convert.bind(color),\n writable: true\n },\n ColorEqual: {\n value: color.equal.bind(color),\n writable: true\n }\n });\n const properties = Object.create(null);\n\n for (const name of Object.getOwnPropertyNames(_doc.Doc.prototype)) {\n if (name === "constructor" || name.startsWith("_")) {\n continue;\n }\n\n const descriptor = Object.getOwnPropertyDescriptor(_doc.Doc.prototype, name);\n\n if (descriptor.get) {\n properties[name] = {\n get: descriptor.get.bind(doc),\n set: descriptor.set.bind(doc)\n };\n } else {\n properties[name] = {\n value: _doc.Doc.prototype[name].bind(doc)\n };\n }\n }\n\n Object.defineProperties(globalThis, properties);\n const functions = {\n dispatchEvent: app._dispatchEvent.bind(app),\n timeoutCb: app._evalCallback.bind(app)\n };\n return (name, args) => {\n try {\n functions[name](args);\n } catch (error) {\n const value = `${error.toString()}\\n${error.stack}`;\n send({\n command: "error",\n value\n });\n }\n };\n}\n\n/***/ }),\n/* 2 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.ZoomType = exports.Trans = exports.Style = exports.ScaleWhen = exports.ScaleHow = exports.Position = exports.Highlight = exports.GlobalConstants = exports.Font = exports.Display = exports.Cursor = exports.Border = void 0;\nconst Border = Object.freeze({\n s: "solid",\n d: "dashed",\n b: "beveled",\n i: "inset",\n u: "underline"\n});\nexports.Border = Border;\nconst Cursor = Object.freeze({\n visible: 0,\n hidden: 1,\n delay: 2\n});\nexports.Cursor = Cursor;\nconst Display = Object.freeze({\n visible: 0,\n hidden: 1,\n noPrint: 2,\n noView: 3\n});\nexports.Display = Display;\nconst Font = Object.freeze({\n Times: "Times-Roman",\n TimesB: "Times-Bold",\n TimesI: "Times-Italic",\n TimesBI: "Times-BoldItalic",\n Helv: "Helvetica",\n HelvB: "Helvetica-Bold",\n HelvI: "Helvetica-Oblique",\n HelvBI: "Helvetica-BoldOblique",\n Cour: "Courier",\n CourB: "Courier-Bold",\n CourI: "Courier-Oblique",\n CourBI: "Courier-BoldOblique",\n Symbol: "Symbol",\n ZapfD: "ZapfDingbats",\n KaGo: "HeiseiKakuGo-W5-UniJIS-UCS2-H",\n KaMi: "HeiseiMin-W3-UniJIS-UCS2-H"\n});\nexports.Font = Font;\nconst Highlight = Object.freeze({\n n: "none",\n i: "invert",\n p: "push",\n o: "outline"\n});\nexports.Highlight = Highlight;\nconst Position = Object.freeze({\n textOnly: 0,\n iconOnly: 1,\n iconTextV: 2,\n textIconV: 3,\n iconTextH: 4,\n textIconH: 5,\n overlay: 6\n});\nexports.Position = Position;\nconst ScaleHow = Object.freeze({\n proportional: 0,\n anamorphic: 1\n});\nexports.ScaleHow = ScaleHow;\nconst ScaleWhen = Object.freeze({\n always: 0,\n never: 1,\n tooBig: 2,\n tooSmall: 3\n});\nexports.ScaleWhen = ScaleWhen;\nconst Style = Object.freeze({\n ch: "check",\n cr: "cross",\n di: "diamond",\n ci: "circle",\n st: "star",\n sq: "square"\n});\nexports.Style = Style;\nconst Trans = Object.freeze({\n blindsH: "BlindsHorizontal",\n blindsV: "BlindsVertical",\n boxI: "BoxIn",\n boxO: "BoxOut",\n dissolve: "Dissolve",\n glitterD: "GlitterDown",\n glitterR: "GlitterRight",\n glitterRD: "GlitterRightDown",\n random: "Random",\n replace: "Replace",\n splitHI: "SplitHorizontalIn",\n splitHO: "SplitHorizontalOut",\n splitVI: "SplitVerticalIn",\n splitVO: "SplitVerticalOut",\n wipeD: "WipeDown",\n wipeL: "WipeLeft",\n wipeR: "WipeRight",\n wipeU: "WipeUp"\n});\nexports.Trans = Trans;\nconst ZoomType = Object.freeze({\n none: "NoVary",\n fitP: "FitPage",\n fitW: "FitWidth",\n fitH: "FitHeight",\n fitV: "FitVisibleWidth",\n pref: "Preferred",\n refW: "ReflowWidth"\n});\nexports.ZoomType = ZoomType;\nconst GlobalConstants = Object.freeze({\n IDS_GREATER_THAN: "Invalid value: must be greater than or equal to % s.",\n IDS_GT_AND_LT: "Invalid value: must be greater than or equal to % s " + "and less than or equal to % s.",\n IDS_LESS_THAN: "Invalid value: must be less than or equal to % s.",\n IDS_INVALID_MONTH: "** Invalid **",\n IDS_INVALID_DATE: "Invalid date / time: please ensure that the date / time exists.Field",\n IDS_INVALID_DATE2: " should match format ",\n IDS_INVALID_VALUE: "The value entered does not match the format of the field",\n IDS_AM: "am",\n IDS_PM: "pm",\n IDS_MONTH_INFO: "January[1] February[2] March[3] April[4] May[5] " + "June[6] July[7] August[8] September[9] October[10] " + "November[11] December[12] Sept[9] Jan[1] Feb[2] Mar[3] " + "Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] Nov[11] Dec[12]",\n IDS_STARTUP_CONSOLE_MSG: "** ^ _ ^ **",\n RE_NUMBER_ENTRY_DOT_SEP: ["[+-]?\\\\d*\\\\.?\\\\d*"],\n RE_NUMBER_COMMIT_DOT_SEP: ["[+-]?\\\\d+(\\\\.\\\\d+)?", "[+-]?\\\\.\\\\d+", "[+-]?\\\\d+\\\\."],\n RE_NUMBER_ENTRY_COMMA_SEP: ["[+-]?\\\\d*,?\\\\d*"],\n RE_NUMBER_COMMIT_COMMA_SEP: ["[+-]?\\\\d+([.,]\\\\d+)?", "[+-]?[.,]\\\\d+", "[+-]?\\\\d+[.,]"],\n RE_ZIP_ENTRY: ["\\\\d{0,5}"],\n RE_ZIP_COMMIT: ["\\\\d{5}"],\n RE_ZIP4_ENTRY: ["\\\\d{0,5}(\\\\.|[- ])?\\\\d{0,4}"],\n RE_ZIP4_COMMIT: ["\\\\d{5}(\\\\.|[- ])?\\\\d{4}"],\n RE_PHONE_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}", "\\\\(\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "011(\\\\.|[- \\\\d])*"],\n RE_PHONE_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\d{3}(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\(\\\\d{3}\\\\)(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "011(\\\\.|[- \\\\d])*"],\n RE_SSN_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,2}(\\\\.|[- ])?\\\\d{0,4}"],\n RE_SSN_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{2}(\\\\.|[- ])?\\\\d{4}"]\n});\nexports.GlobalConstants = GlobalConstants;\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.RadioButtonField = exports.Field = exports.CheckboxField = void 0;\n\nvar _common = __w_pdfjs_require__(4);\n\nvar _color = __w_pdfjs_require__(5);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Field extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this.alignment = data.alignment || "left";\n this.borderStyle = data.borderStyle || "";\n this.buttonAlignX = data.buttonAlignX || 50;\n this.buttonAlignY = data.buttonAlignY || 50;\n this.buttonFitBounds = data.buttonFitBounds;\n this.buttonPosition = data.buttonPosition;\n this.buttonScaleHow = data.buttonScaleHow;\n this.ButtonScaleWhen = data.buttonScaleWhen;\n this.calcOrderIndex = data.calcOrderIndex;\n this.comb = data.comb;\n this.commitOnSelChange = data.commitOnSelChange;\n this.currentValueIndices = data.currentValueIndices;\n this.defaultStyle = data.defaultStyle;\n this.defaultValue = data.defaultValue;\n this.doNotScroll = data.doNotScroll;\n this.doNotSpellCheck = data.doNotSpellCheck;\n this.delay = data.delay;\n this.display = data.display;\n this.doc = data.doc.wrapped;\n this.editable = data.editable;\n this.exportValues = data.exportValues;\n this.fileSelect = data.fileSelect;\n this.hidden = data.hidden;\n this.highlight = data.highlight;\n this.lineWidth = data.lineWidth;\n this.multiline = data.multiline;\n this.multipleSelection = !!data.multipleSelection;\n this.name = data.name;\n this.password = data.password;\n this.print = data.print;\n this.radiosInUnison = data.radiosInUnison;\n this.readonly = data.readonly;\n this.rect = data.rect;\n this.required = data.required;\n this.richText = data.richText;\n this.richValue = data.richValue;\n this.style = data.style;\n this.submitName = data.submitName;\n this.textFont = data.textFont;\n this.textSize = data.textSize;\n this.type = data.type;\n this.userName = data.userName;\n this._actions = (0, _common.createActionsMap)(data.actions);\n this._browseForFileToSubmit = data.browseForFileToSubmit || null;\n this._buttonCaption = null;\n this._buttonIcon = null;\n this._charLimit = data.charLimit;\n this._children = null;\n this._currentValueIndices = data.currentValueIndices || 0;\n this._document = data.doc;\n this._fieldPath = data.fieldPath;\n this._fillColor = data.fillColor || ["T"];\n this._isChoice = Array.isArray(data.items);\n this._items = data.items || [];\n this._page = data.page || 0;\n this._strokeColor = data.strokeColor || ["G", 0];\n this._textColor = data.textColor || ["G", 0];\n this._value = data.value || "";\n this._kidIds = data.kidIds || null;\n this._fieldType = (0, _common.getFieldType)(this._actions);\n this._siblings = data.siblings || null;\n this._rotation = data.rotation || 0;\n this._globalEval = data.globalEval;\n this._appObjects = data.appObjects;\n }\n\n get currentValueIndices() {\n if (!this._isChoice) {\n return 0;\n }\n\n return this._currentValueIndices;\n }\n\n set currentValueIndices(indices) {\n if (!this._isChoice) {\n return;\n }\n\n if (!Array.isArray(indices)) {\n indices = [indices];\n }\n\n if (!indices.every(i => typeof i === "number" && Number.isInteger(i) && i >= 0 && i < this.numItems)) {\n return;\n }\n\n indices.sort();\n\n if (this.multipleSelection) {\n this._currentValueIndices = indices;\n this._value = [];\n indices.forEach(i => {\n this._value.push(this._items[i].displayValue);\n });\n } else {\n if (indices.length > 0) {\n indices = indices.splice(1, indices.length - 1);\n this._currentValueIndices = indices[0];\n this._value = this._items[this._currentValueIndices];\n }\n }\n\n this._send({\n id: this._id,\n indices\n });\n }\n\n get fillColor() {\n return this._fillColor;\n }\n\n set fillColor(color) {\n if (_color.Color._isValidColor(color)) {\n this._fillColor = color;\n }\n }\n\n get bgColor() {\n return this.fillColor;\n }\n\n set bgColor(color) {\n this.fillColor = color;\n }\n\n get charLimit() {\n return this._charLimit;\n }\n\n set charLimit(limit) {\n if (typeof limit !== "number") {\n throw new Error("Invalid argument value");\n }\n\n this._charLimit = Math.max(0, Math.floor(limit));\n }\n\n get numItems() {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n return this._items.length;\n }\n\n set numItems(_) {\n throw new Error("field.numItems is read-only");\n }\n\n get strokeColor() {\n return this._strokeColor;\n }\n\n set strokeColor(color) {\n if (_color.Color._isValidColor(color)) {\n this._strokeColor = color;\n }\n }\n\n get borderColor() {\n return this.strokeColor;\n }\n\n set borderColor(color) {\n this.strokeColor = color;\n }\n\n get page() {\n return this._page;\n }\n\n set page(_) {\n throw new Error("field.page is read-only");\n }\n\n get rotation() {\n return this._rotation;\n }\n\n set rotation(angle) {\n angle = Math.floor(angle);\n\n if (angle % 90 !== 0) {\n throw new Error("Invalid rotation: must be a multiple of 90");\n }\n\n angle %= 360;\n\n if (angle < 0) {\n angle += 360;\n }\n\n this._rotation = angle;\n }\n\n get textColor() {\n return this._textColor;\n }\n\n set textColor(color) {\n if (_color.Color._isValidColor(color)) {\n this._textColor = color;\n }\n }\n\n get fgColor() {\n return this.textColor;\n }\n\n set fgColor(color) {\n this.textColor = color;\n }\n\n get value() {\n return this._value;\n }\n\n set value(value) {\n if (value === "") {\n this._value = "";\n } else if (typeof value === "string") {\n switch (this._fieldType) {\n case _common.FieldType.number:\n case _common.FieldType.percent:\n value = parseFloat(value);\n\n if (!isNaN(value)) {\n this._value = value;\n }\n\n break;\n\n default:\n this._value = value;\n }\n } else {\n this._value = value;\n }\n\n if (this._isChoice) {\n if (this.multipleSelection) {\n const values = new Set(value);\n\n if (Array.isArray(this._currentValueIndices)) {\n this._currentValueIndices.length = 0;\n } else {\n this._currentValueIndices = [];\n }\n\n this._items.forEach((_ref, i) => {\n let {\n displayValue\n } = _ref;\n\n if (values.has(displayValue)) {\n this._currentValueIndices.push(i);\n }\n });\n } else {\n this._currentValueIndices = this._items.findIndex(_ref2 => {\n let {\n displayValue\n } = _ref2;\n return value === displayValue;\n });\n }\n }\n }\n\n get valueAsString() {\n var _this$_value;\n\n return ((_this$_value = this._value) !== null && _this$_value !== void 0 ? _this$_value : "").toString();\n }\n\n set valueAsString(_) {}\n\n browseForFileToSubmit() {\n if (this._browseForFileToSubmit) {\n this._browseForFileToSubmit();\n }\n }\n\n buttonGetCaption() {\n let nFace = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this._buttonCaption) {\n return this._buttonCaption[nFace];\n }\n\n return "";\n }\n\n buttonGetIcon() {\n let nFace = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this._buttonIcon) {\n return this._buttonIcon[nFace];\n }\n\n return null;\n }\n\n buttonImportIcon() {\n let cPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n let nPave = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n }\n\n buttonSetCaption(cCaption) {\n let nFace = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (!this._buttonCaption) {\n this._buttonCaption = ["", "", ""];\n }\n\n this._buttonCaption[nFace] = cCaption;\n }\n\n buttonSetIcon(oIcon) {\n let nFace = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (!this._buttonIcon) {\n this._buttonIcon = [null, null, null];\n }\n\n this._buttonIcon[nFace] = oIcon;\n }\n\n checkThisBox(nWidget) {\n let bCheckIt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n }\n\n clearItems() {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n this._items = [];\n\n this._send({\n id: this._id,\n clear: null\n });\n }\n\n deleteItemAt() {\n let nIdx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n if (!this.numItems) {\n return;\n }\n\n if (nIdx === null) {\n nIdx = Array.isArray(this._currentValueIndices) ? this._currentValueIndices[0] : this._currentValueIndices;\n nIdx = nIdx || 0;\n }\n\n if (nIdx < 0 || nIdx >= this.numItems) {\n nIdx = this.numItems - 1;\n }\n\n this._items.splice(nIdx, 1);\n\n if (Array.isArray(this._currentValueIndices)) {\n let index = this._currentValueIndices.findIndex(i => i >= nIdx);\n\n if (index !== -1) {\n if (this._currentValueIndices[index] === nIdx) {\n this._currentValueIndices.splice(index, 1);\n }\n\n for (const ii = this._currentValueIndices.length; index < ii; index++) {\n --this._currentValueIndices[index];\n }\n }\n } else {\n if (this._currentValueIndices === nIdx) {\n this._currentValueIndices = this.numItems > 0 ? 0 : -1;\n } else if (this._currentValueIndices > nIdx) {\n --this._currentValueIndices;\n }\n }\n\n this._send({\n id: this._id,\n remove: nIdx\n });\n }\n\n getItemAt() {\n let nIdx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;\n let bExportValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n if (nIdx < 0 || nIdx >= this.numItems) {\n nIdx = this.numItems - 1;\n }\n\n const item = this._items[nIdx];\n return bExportValue ? item.exportValue : item.displayValue;\n }\n\n getArray() {\n if (this._kidIds) {\n return this._kidIds.map(id => this._appObjects[id].wrapped);\n }\n\n if (this._children === null) {\n this._children = this._document.obj._getChildren(this._fieldPath).map(child => child.wrapped);\n }\n\n return this._children;\n }\n\n getLock() {\n return undefined;\n }\n\n isBoxChecked(nWidget) {\n return false;\n }\n\n isDefaultChecked(nWidget) {\n return false;\n }\n\n insertItemAt(cName) {\n let cExport = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n let nIdx = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n if (!cName) {\n return;\n }\n\n if (nIdx < 0 || nIdx > this.numItems) {\n nIdx = this.numItems;\n }\n\n if (this._items.some(_ref3 => {\n let {\n displayValue\n } = _ref3;\n return displayValue === cName;\n })) {\n return;\n }\n\n if (cExport === undefined) {\n cExport = cName;\n }\n\n const data = {\n displayValue: cName,\n exportValue: cExport\n };\n\n this._items.splice(nIdx, 0, data);\n\n if (Array.isArray(this._currentValueIndices)) {\n let index = this._currentValueIndices.findIndex(i => i >= nIdx);\n\n if (index !== -1) {\n for (const ii = this._currentValueIndices.length; index < ii; index++) {\n ++this._currentValueIndices[index];\n }\n }\n } else if (this._currentValueIndices >= nIdx) {\n ++this._currentValueIndices;\n }\n\n this._send({\n id: this._id,\n insert: {\n index: nIdx,\n ...data\n }\n });\n }\n\n setAction(cTrigger, cScript) {\n if (typeof cTrigger !== "string" || typeof cScript !== "string") {\n return;\n }\n\n if (!(cTrigger in this._actions)) {\n this._actions[cTrigger] = [];\n }\n\n this._actions[cTrigger].push(cScript);\n }\n\n setFocus() {\n this._send({\n id: this._id,\n focus: true\n });\n }\n\n setItems(oArray) {\n if (!this._isChoice) {\n throw new Error("Not a choice widget");\n }\n\n this._items.length = 0;\n\n for (const element of oArray) {\n let displayValue, exportValue;\n\n if (Array.isArray(element)) {\n var _element$, _element$2;\n\n displayValue = ((_element$ = element[0]) === null || _element$ === void 0 ? void 0 : _element$.toString()) || "";\n exportValue = ((_element$2 = element[1]) === null || _element$2 === void 0 ? void 0 : _element$2.toString()) || "";\n } else {\n displayValue = exportValue = (element === null || element === void 0 ? void 0 : element.toString()) || "";\n }\n\n this._items.push({\n displayValue,\n exportValue\n });\n }\n\n this._currentValueIndices = 0;\n\n this._send({\n id: this._id,\n items: this._items\n });\n }\n\n setLock() {}\n\n signatureGetModifications() {}\n\n signatureGetSeedValue() {}\n\n signatureInfo() {}\n\n signatureSetSeedValue() {}\n\n signatureSign() {}\n\n signatureValidate() {}\n\n _isButton() {\n return false;\n }\n\n _reset() {\n this.value = this.defaultValue;\n }\n\n _runActions(event) {\n const eventName = event.name;\n\n if (!this._actions.has(eventName)) {\n return false;\n }\n\n const actions = this._actions.get(eventName);\n\n try {\n for (const action of actions) {\n this._globalEval(action);\n }\n } catch (error) {\n event.rc = false;\n throw error;\n }\n\n return true;\n }\n\n}\n\nexports.Field = Field;\n\nclass RadioButtonField extends Field {\n constructor(otherButtons, data) {\n super(data);\n this.exportValues = [this.exportValues];\n this._radioIds = [this._id];\n this._radioActions = [this._actions];\n\n for (const radioData of otherButtons) {\n this.exportValues.push(radioData.exportValues);\n\n this._radioIds.push(radioData.id);\n\n this._radioActions.push((0, _common.createActionsMap)(radioData.actions));\n\n if (this._value === radioData.exportValues) {\n this._id = radioData.id;\n }\n }\n }\n\n get value() {\n return this._value;\n }\n\n set value(value) {\n if (value === null || value === undefined) {\n this._value = "";\n }\n\n const i = this.exportValues.indexOf(value);\n\n if (0 <= i && i < this._radioIds.length) {\n this._id = this._radioIds[i];\n this._value = value;\n } else if (value === "Off" && this._radioIds.length === 2) {\n const nextI = (1 + this._radioIds.indexOf(this._id)) % 2;\n this._id = this._radioIds[nextI];\n this._value = this.exportValues[nextI];\n }\n }\n\n checkThisBox(nWidget) {\n let bCheckIt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (nWidget < 0 || nWidget >= this._radioIds.length || !bCheckIt) {\n return;\n }\n\n this._id = this._radioIds[nWidget];\n this._value = this.exportValues[nWidget];\n\n this._send({\n id: this._id,\n value: this._value\n });\n }\n\n isBoxChecked(nWidget) {\n return nWidget >= 0 && nWidget < this._radioIds.length && this._id === this._radioIds[nWidget];\n }\n\n isDefaultChecked(nWidget) {\n return nWidget >= 0 && nWidget < this.exportValues.length && this.defaultValue === this.exportValues[nWidget];\n }\n\n _getExportValue(state) {\n const i = this._radioIds.indexOf(this._id);\n\n return this.exportValues[i];\n }\n\n _runActions(event) {\n const i = this._radioIds.indexOf(this._id);\n\n this._actions = this._radioActions[i];\n return super._runActions(event);\n }\n\n _isButton() {\n return true;\n }\n\n}\n\nexports.RadioButtonField = RadioButtonField;\n\nclass CheckboxField extends RadioButtonField {\n get value() {\n return this._value;\n }\n\n set value(value) {\n if (!value || value === "Off") {\n this._value = "Off";\n } else {\n super.value = value;\n }\n }\n\n _getExportValue(state) {\n return state ? super._getExportValue(state) : "Off";\n }\n\n isBoxChecked(nWidget) {\n if (this._value === "Off") {\n return false;\n }\n\n return super.isBoxChecked(nWidget);\n }\n\n isDefaultChecked(nWidget) {\n if (this.defaultValue === "Off") {\n return this._value === "Off";\n }\n\n return super.isDefaultChecked(nWidget);\n }\n\n checkThisBox(nWidget) {\n let bCheckIt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (nWidget < 0 || nWidget >= this._radioIds.length) {\n return;\n }\n\n this._id = this._radioIds[nWidget];\n this._value = bCheckIt ? this.exportValues[nWidget] : "Off";\n\n this._send({\n id: this._id,\n value: this._value\n });\n }\n\n}\n\nexports.CheckboxField = CheckboxField;\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.FieldType = void 0;\nexports.createActionsMap = createActionsMap;\nexports.getFieldType = getFieldType;\nconst FieldType = {\n none: 0,\n number: 1,\n percent: 2,\n date: 3,\n time: 4\n};\nexports.FieldType = FieldType;\n\nfunction createActionsMap(actions) {\n const actionsMap = new Map();\n\n if (actions) {\n for (const [eventType, actionsForEvent] of Object.entries(actions)) {\n actionsMap.set(eventType, actionsForEvent);\n }\n }\n\n return actionsMap;\n}\n\nfunction getFieldType(actions) {\n let format = actions.get("Format");\n\n if (!format) {\n return FieldType.none;\n }\n\n format = format[0];\n format = format.trim();\n\n if (format.startsWith("AFNumber_")) {\n return FieldType.number;\n }\n\n if (format.startsWith("AFPercent_")) {\n return FieldType.percent;\n }\n\n if (format.startsWith("AFDate_")) {\n return FieldType.date;\n }\n\n if (format.startsWith("AFTime__")) {\n return FieldType.time;\n }\n\n return FieldType.none;\n}\n\n/***/ }),\n/* 5 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Color = void 0;\n\nvar _scripting_utils = __w_pdfjs_require__(6);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Color extends _pdf_object.PDFObject {\n constructor() {\n super({});\n this.transparent = ["T"];\n this.black = ["G", 0];\n this.white = ["G", 1];\n this.red = ["RGB", 1, 0, 0];\n this.green = ["RGB", 0, 1, 0];\n this.blue = ["RGB", 0, 0, 1];\n this.cyan = ["CMYK", 1, 0, 0, 0];\n this.magenta = ["CMYK", 0, 1, 0, 0];\n this.yellow = ["CMYK", 0, 0, 1, 0];\n this.dkGray = ["G", 0.25];\n this.gray = ["G", 0.5];\n this.ltGray = ["G", 0.75];\n }\n\n static _isValidSpace(cColorSpace) {\n return typeof cColorSpace === "string" && (cColorSpace === "T" || cColorSpace === "G" || cColorSpace === "RGB" || cColorSpace === "CMYK");\n }\n\n static _isValidColor(colorArray) {\n if (!Array.isArray(colorArray) || colorArray.length === 0) {\n return false;\n }\n\n const space = colorArray[0];\n\n if (!Color._isValidSpace(space)) {\n return false;\n }\n\n switch (space) {\n case "T":\n if (colorArray.length !== 1) {\n return false;\n }\n\n break;\n\n case "G":\n if (colorArray.length !== 2) {\n return false;\n }\n\n break;\n\n case "RGB":\n if (colorArray.length !== 4) {\n return false;\n }\n\n break;\n\n case "CMYK":\n if (colorArray.length !== 5) {\n return false;\n }\n\n break;\n\n default:\n return false;\n }\n\n return colorArray.slice(1).every(c => typeof c === "number" && c >= 0 && c <= 1);\n }\n\n static _getCorrectColor(colorArray) {\n return Color._isValidColor(colorArray) ? colorArray : ["G", 0];\n }\n\n convert(colorArray, cColorSpace) {\n if (!Color._isValidSpace(cColorSpace)) {\n return this.black;\n }\n\n if (cColorSpace === "T") {\n return ["T"];\n }\n\n colorArray = Color._getCorrectColor(colorArray);\n\n if (colorArray[0] === cColorSpace) {\n return colorArray;\n }\n\n if (colorArray[0] === "T") {\n return this.convert(this.black, cColorSpace);\n }\n\n return _scripting_utils.ColorConverters[`${colorArray[0]}_${cColorSpace}`](colorArray.slice(1));\n }\n\n equal(colorArray1, colorArray2) {\n colorArray1 = Color._getCorrectColor(colorArray1);\n colorArray2 = Color._getCorrectColor(colorArray2);\n\n if (colorArray1[0] === "T" || colorArray2[0] === "T") {\n return colorArray1[0] === "T" && colorArray2[0] === "T";\n }\n\n if (colorArray1[0] !== colorArray2[0]) {\n colorArray2 = this.convert(colorArray2, colorArray1[0]);\n }\n\n return colorArray1.slice(1).every((c, i) => c === colorArray2[i + 1]);\n }\n\n}\n\nexports.Color = Color;\n\n/***/ }),\n/* 6 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.ColorConverters = void 0;\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0");\n}\n\nclass ColorConverters {\n static CMYK_G(_ref) {\n let [c, y, m, k] = _ref;\n return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n\n static G_CMYK(_ref2) {\n let [g] = _ref2;\n return ["CMYK", 0, 0, 0, 1 - g];\n }\n\n static G_RGB(_ref3) {\n let [g] = _ref3;\n return ["RGB", g, g, g];\n }\n\n static G_HTML(_ref4) {\n let [g] = _ref4;\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n\n static RGB_G(_ref5) {\n let [r, g, b] = _ref5;\n return ["G", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n\n static RGB_HTML(_ref6) {\n let [r, g, b] = _ref6;\n const R = makeColorComp(r);\n const G = makeColorComp(g);\n const B = makeColorComp(b);\n return `#${R}${G}${B}`;\n }\n\n static T_HTML() {\n return "#00000000";\n }\n\n static CMYK_RGB(_ref7) {\n let [c, y, m, k] = _ref7;\n return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n\n static RGB_CMYK(_ref8) {\n let [r, g, b] = _ref8;\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return ["CMYK", c, m, y, k];\n }\n\n}\n\nexports.ColorConverters = ColorConverters;\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.PDFObject = void 0;\n\nclass PDFObject {\n constructor(data) {\n this._expandos = Object.create(null);\n this._send = data.send || null;\n this._id = data.id || null;\n }\n\n}\n\nexports.PDFObject = PDFObject;\n\n/***/ }),\n/* 8 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.AForm = void 0;\n\nvar _constants = __w_pdfjs_require__(2);\n\nclass AForm {\n constructor(document, app, util, color) {\n this._document = document;\n this._app = app;\n this._util = util;\n this._color = color;\n this._dateFormats = ["m/d", "m/d/yy", "mm/dd/yy", "mm/yy", "d-mmm", "d-mmm-yy", "dd-mmm-yy", "yy-mm-dd", "mmm-yy", "mmmm-yy", "mmm d, yyyy", "mmmm d, yyyy", "m/d/yy h:MM tt", "m/d/yy HH:MM"];\n this._timeFormats = ["HH:MM", "h:MM tt", "HH:MM:ss", "h:MM:ss tt"];\n this._emailRegex = new RegExp("^[a-zA-Z0-9.!#$%&\'*+\\\\/=?^_`{|}~-]+" + "@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?" + "(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$");\n }\n\n _mkTargetName(event) {\n return event.target ? `[ ${event.target.name} ]` : "";\n }\n\n _parseDate(cFormat, cDate) {\n let date = null;\n\n try {\n date = this._util.scand(cFormat, cDate);\n } catch (error) {}\n\n if (!date) {\n date = Date.parse(cDate);\n\n if (isNaN(date)) {\n date = null;\n } else {\n date = new Date(date);\n }\n }\n\n return date;\n }\n\n AFMergeChange() {\n let event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : globalThis.event;\n\n if (event.willCommit) {\n return event.value.toString();\n }\n\n return this._app._eventDispatcher.mergeChange(event);\n }\n\n AFParseDateEx(cString, cOrder) {\n return this._parseDate(cOrder, cString);\n }\n\n AFExtractNums(str) {\n if (typeof str === "number") {\n return [str];\n }\n\n if (!str || typeof str !== "string") {\n return null;\n }\n\n const first = str.charAt(0);\n\n if (first === "." || first === ",") {\n str = `0${str}`;\n }\n\n const numbers = str.match(/(\\d+)/g);\n\n if (numbers.length === 0) {\n return null;\n }\n\n return numbers;\n }\n\n AFMakeNumber(str) {\n if (typeof str === "number") {\n return str;\n }\n\n if (typeof str !== "string") {\n return null;\n }\n\n str = str.trim().replace(",", ".");\n const number = parseFloat(str);\n\n if (isNaN(number) || !isFinite(number)) {\n return null;\n }\n\n return number;\n }\n\n AFMakeArrayFromList(string) {\n if (typeof string === "string") {\n return string.split(/, ?/g);\n }\n\n return string;\n }\n\n AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n let value = this.AFMakeNumber(event.value);\n\n if (value === null) {\n event.value = "";\n return;\n }\n\n const sign = Math.sign(value);\n const buf = [];\n let hasParen = false;\n\n if (sign === -1 && bCurrencyPrepend && negStyle === 0) {\n buf.push("-");\n }\n\n if ((negStyle === 2 || negStyle === 3) && sign === -1) {\n buf.push("(");\n hasParen = true;\n }\n\n if (bCurrencyPrepend) {\n buf.push(strCurrency);\n }\n\n sepStyle = Math.min(Math.max(0, Math.floor(sepStyle)), 4);\n buf.push("%,", sepStyle, ".", nDec.toString(), "f");\n\n if (!bCurrencyPrepend) {\n buf.push(strCurrency);\n }\n\n if (hasParen) {\n buf.push(")");\n }\n\n if (negStyle === 1 || negStyle === 3) {\n event.target.textColor = sign === 1 ? this._color.black : this._color.red;\n }\n\n if ((negStyle !== 0 || bCurrencyPrepend) && sign === -1) {\n value = -value;\n }\n\n const formatStr = buf.join("");\n event.value = this._util.printf(formatStr, value);\n }\n\n AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n const event = globalThis.event;\n let value = this.AFMergeChange(event);\n\n if (!value) {\n return;\n }\n\n value = value.trim();\n let pattern;\n\n if (sepStyle > 1) {\n pattern = event.willCommit ? /^[+-]?(\\d+(,\\d*)?|,\\d+)$/ : /^[+-]?\\d*,?\\d*$/;\n } else {\n pattern = event.willCommit ? /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)$/ : /^[+-]?\\d*\\.?\\d*$/;\n }\n\n if (!pattern.test(value)) {\n if (event.willCommit) {\n const err = `${_constants.GlobalConstants.IDS_INVALID_VALUE} ${this._mkTargetName(event)}`;\n\n this._app.alert(err);\n }\n\n event.rc = false;\n }\n\n if (event.willCommit && sepStyle > 1) {\n event.value = parseFloat(value.replace(",", "."));\n }\n }\n\n AFPercent_Format(nDec, sepStyle) {\n let percentPrepend = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (typeof nDec !== "number") {\n return;\n }\n\n if (typeof sepStyle !== "number") {\n return;\n }\n\n if (nDec < 0) {\n throw new Error("Invalid nDec value in AFPercent_Format");\n }\n\n const event = globalThis.event;\n\n if (nDec > 512) {\n event.value = "%";\n return;\n }\n\n nDec = Math.floor(nDec);\n sepStyle = Math.min(Math.max(0, Math.floor(sepStyle)), 4);\n let value = this.AFMakeNumber(event.value);\n\n if (value === null) {\n event.value = "%";\n return;\n }\n\n const formatStr = `%,${sepStyle}.${nDec}f`;\n value = this._util.printf(formatStr, value * 100);\n\n if (percentPrepend) {\n event.value = `%${value}`;\n } else {\n event.value = `${value}%`;\n }\n }\n\n AFPercent_Keystroke(nDec, sepStyle) {\n this.AFNumber_Keystroke(nDec, sepStyle, 0, 0, "", true);\n }\n\n AFDate_FormatEx(cFormat) {\n const event = globalThis.event;\n const value = event.value;\n\n if (!value) {\n return;\n }\n\n const date = this._parseDate(cFormat, value);\n\n if (date !== null) {\n event.value = this._util.printd(cFormat, date);\n }\n }\n\n AFDate_Format(pdf) {\n if (pdf >= 0 && pdf < this._dateFormats.length) {\n this.AFDate_FormatEx(this._dateFormats[pdf]);\n }\n }\n\n AFDate_KeystrokeEx(cFormat) {\n const event = globalThis.event;\n\n if (!event.willCommit) {\n return;\n }\n\n const value = this.AFMergeChange(event);\n\n if (!value) {\n return;\n }\n\n if (this._parseDate(cFormat, value) === null) {\n const invalid = _constants.GlobalConstants.IDS_INVALID_DATE;\n const invalid2 = _constants.GlobalConstants.IDS_INVALID_DATE2;\n const err = `${invalid} ${this._mkTargetName(event)}${invalid2}${cFormat}`;\n\n this._app.alert(err);\n\n event.rc = false;\n }\n }\n\n AFDate_Keystroke(pdf) {\n if (pdf >= 0 && pdf < this._dateFormats.length) {\n this.AFDate_KeystrokeEx(this._dateFormats[pdf]);\n }\n }\n\n AFRange_Validate(bGreaterThan, nGreaterThan, bLessThan, nLessThan) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n const value = this.AFMakeNumber(event.value);\n\n if (value === null) {\n return;\n }\n\n bGreaterThan = !!bGreaterThan;\n bLessThan = !!bLessThan;\n\n if (bGreaterThan) {\n nGreaterThan = this.AFMakeNumber(nGreaterThan);\n\n if (nGreaterThan === null) {\n return;\n }\n }\n\n if (bLessThan) {\n nLessThan = this.AFMakeNumber(nLessThan);\n\n if (nLessThan === null) {\n return;\n }\n }\n\n let err = "";\n\n if (bGreaterThan && bLessThan) {\n if (value < nGreaterThan || value > nLessThan) {\n err = this._util.printf(_constants.GlobalConstants.IDS_GT_AND_LT, nGreaterThan, nLessThan);\n }\n } else if (bGreaterThan) {\n if (value < nGreaterThan) {\n err = this._util.printf(_constants.GlobalConstants.IDS_GREATER_THAN, nGreaterThan);\n }\n } else if (value > nLessThan) {\n err = this._util.printf(_constants.GlobalConstants.IDS_LESS_THAN, nLessThan);\n }\n\n if (err) {\n this._app.alert(err);\n\n event.rc = false;\n }\n }\n\n AFSimple(cFunction, nValue1, nValue2) {\n const value1 = this.AFMakeNumber(nValue1);\n\n if (value1 === null) {\n throw new Error("Invalid nValue1 in AFSimple");\n }\n\n const value2 = this.AFMakeNumber(nValue2);\n\n if (value2 === null) {\n throw new Error("Invalid nValue2 in AFSimple");\n }\n\n switch (cFunction) {\n case "AVG":\n return (value1 + value2) / 2;\n\n case "SUM":\n return value1 + value2;\n\n case "PRD":\n return value1 * value2;\n\n case "MIN":\n return Math.min(value1, value2);\n\n case "MAX":\n return Math.max(value1, value2);\n }\n\n throw new Error("Invalid cFunction in AFSimple");\n }\n\n AFSimple_Calculate(cFunction, cFields) {\n const actions = {\n AVG: args => args.reduce((acc, value) => acc + value, 0) / args.length,\n SUM: args => args.reduce((acc, value) => acc + value, 0),\n PRD: args => args.reduce((acc, value) => acc * value, 1),\n MIN: args => args.reduce((acc, value) => Math.min(acc, value), Number.MAX_VALUE),\n MAX: args => args.reduce((acc, value) => Math.max(acc, value), Number.MIN_VALUE)\n };\n\n if (!(cFunction in actions)) {\n throw new TypeError("Invalid function in AFSimple_Calculate");\n }\n\n const event = globalThis.event;\n const values = [];\n\n for (const cField of cFields) {\n const field = this._document.getField(cField);\n\n if (!field) {\n continue;\n }\n\n const number = this.AFMakeNumber(field.value);\n\n if (number !== null) {\n values.push(number);\n }\n }\n\n if (values.length === 0) {\n event.value = cFunction === "PRD" ? 1 : 0;\n return;\n }\n\n const res = actions[cFunction](values);\n event.value = Math.round(1e6 * res) / 1e6;\n }\n\n AFSpecial_Format(psf) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n psf = this.AFMakeNumber(psf);\n let formatStr;\n\n switch (psf) {\n case 0:\n formatStr = "99999";\n break;\n\n case 1:\n formatStr = "99999-9999";\n break;\n\n case 2:\n if (this._util.printx("9999999999", event.value).length >= 10) {\n formatStr = "(999) 999-9999";\n } else {\n formatStr = "999-9999";\n }\n\n break;\n\n case 3:\n formatStr = "999-99-9999";\n break;\n\n default:\n throw new Error("Invalid psf in AFSpecial_Format");\n }\n\n event.value = this._util.printx(formatStr, event.value);\n }\n\n AFSpecial_KeystrokeEx(cMask) {\n if (!cMask) {\n return;\n }\n\n const event = globalThis.event;\n const value = this.AFMergeChange(event);\n\n if (!value) {\n return;\n }\n\n const checkers = new Map([["9", char => char >= "0" && char <= "9"], ["A", char => "a" <= char && char <= "z" || "A" <= char && char <= "Z"], ["O", char => "a" <= char && char <= "z" || "A" <= char && char <= "Z" || "0" <= char && char <= "9"], ["X", char => true]]);\n\n function _checkValidity(_value, _cMask) {\n for (let i = 0, ii = _value.length; i < ii; i++) {\n const mask = _cMask.charAt(i);\n\n const char = _value.charAt(i);\n\n const checker = checkers.get(mask);\n\n if (checker) {\n if (!checker(char)) {\n return false;\n }\n } else if (mask !== char) {\n return false;\n }\n }\n\n return true;\n }\n\n const err = `${_constants.GlobalConstants.IDS_INVALID_VALUE} = "${cMask}"`;\n\n if (value.length > cMask.length) {\n this._app.alert(err);\n\n event.rc = false;\n return;\n }\n\n if (event.willCommit) {\n if (value.length < cMask.length) {\n this._app.alert(err);\n\n event.rc = false;\n return;\n }\n\n if (!_checkValidity(value, cMask)) {\n this._app.alert(err);\n\n event.rc = false;\n return;\n }\n\n event.value += cMask.substring(value.length);\n return;\n }\n\n if (value.length < cMask.length) {\n cMask = cMask.substring(0, value.length);\n }\n\n if (!_checkValidity(value, cMask)) {\n this._app.alert(err);\n\n event.rc = false;\n }\n }\n\n AFSpecial_Keystroke(psf) {\n const event = globalThis.event;\n psf = this.AFMakeNumber(psf);\n let formatStr;\n\n switch (psf) {\n case 0:\n formatStr = "99999";\n break;\n\n case 1:\n formatStr = "99999-9999";\n break;\n\n case 2:\n const value = this.AFMergeChange(event);\n\n if (value.length > 8 || value.startsWith("(")) {\n formatStr = "(999) 999-9999";\n } else {\n formatStr = "999-9999";\n }\n\n break;\n\n case 3:\n formatStr = "999-99-9999";\n break;\n\n default:\n throw new Error("Invalid psf in AFSpecial_Keystroke");\n }\n\n this.AFSpecial_KeystrokeEx(formatStr);\n }\n\n AFTime_FormatEx(cFormat) {\n this.AFDate_FormatEx(cFormat);\n }\n\n AFTime_Format(pdf) {\n if (pdf >= 0 && pdf < this._timeFormats.length) {\n this.AFDate_FormatEx(this._timeFormats[pdf]);\n }\n }\n\n AFTime_KeystrokeEx(cFormat) {\n this.AFDate_KeystrokeEx(cFormat);\n }\n\n AFTime_Keystroke(pdf) {\n if (pdf >= 0 && pdf < this._timeFormats.length) {\n this.AFDate_KeystrokeEx(this._timeFormats[pdf]);\n }\n }\n\n eMailValidate(str) {\n return this._emailRegex.test(str);\n }\n\n}\n\nexports.AForm = AForm;\n\n/***/ }),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.App = void 0;\n\nvar _color = __w_pdfjs_require__(5);\n\nvar _event = __w_pdfjs_require__(10);\n\nvar _fullscreen = __w_pdfjs_require__(11);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nvar _thermometer = __w_pdfjs_require__(12);\n\nconst VIEWER_TYPE = "PDF.js";\nconst VIEWER_VARIATION = "Full";\nconst VIEWER_VERSION = 21.00720099;\nconst FORMS_VERSION = 21.00720099;\n\nclass App extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._constants = null;\n this._focusRect = true;\n this._fs = null;\n this._language = App._getLanguage(data.language);\n this._openInPlace = false;\n this._platform = App._getPlatform(data.platform);\n this._runtimeHighlight = false;\n this._runtimeHighlightColor = ["T"];\n this._thermometer = null;\n this._toolbar = false;\n this._document = data._document;\n this._proxyHandler = data.proxyHandler;\n this._objects = Object.create(null);\n this._eventDispatcher = new _event.EventDispatcher(this._document, data.calculationOrder, this._objects);\n this._timeoutIds = new WeakMap();\n\n if (typeof FinalizationRegistry !== "undefined") {\n this._timeoutIdsRegistry = new FinalizationRegistry(this._cleanTimeout.bind(this));\n } else {\n this._timeoutIdsRegistry = null;\n }\n\n this._timeoutCallbackIds = new Map();\n this._timeoutCallbackId = 0;\n this._globalEval = data.globalEval;\n this._externalCall = data.externalCall;\n this._document = data._document;\n }\n\n _dispatchEvent(pdfEvent) {\n this._eventDispatcher.dispatch(pdfEvent);\n }\n\n _registerTimeoutCallback(cExpr) {\n const id = this._timeoutCallbackId++;\n\n this._timeoutCallbackIds.set(id, cExpr);\n\n return id;\n }\n\n _unregisterTimeoutCallback(id) {\n this._timeoutCallbackIds.delete(id);\n }\n\n _evalCallback(_ref) {\n let {\n callbackId,\n interval\n } = _ref;\n\n const expr = this._timeoutCallbackIds.get(callbackId);\n\n if (!interval) {\n this._unregisterTimeoutCallback(callbackId);\n }\n\n if (expr) {\n this._globalEval(expr);\n }\n }\n\n _registerTimeout(callbackId, interval) {\n const timeout = Object.create(null);\n const id = {\n callbackId,\n interval\n };\n\n this._timeoutIds.set(timeout, id);\n\n if (this._timeoutIdsRegistry) {\n this._timeoutIdsRegistry.register(timeout, id);\n }\n\n return timeout;\n }\n\n _unregisterTimeout(timeout) {\n if (this._timeoutIdsRegistry) {\n this._timeoutIdsRegistry.unregister(timeout);\n }\n\n const data = this._timeoutIds.get(timeout);\n\n if (!data) {\n return;\n }\n\n this._timeoutIds.delete(timeout);\n\n this._cleanTimeout(data);\n }\n\n _cleanTimeout(_ref2) {\n let {\n callbackId,\n interval\n } = _ref2;\n\n this._unregisterTimeoutCallback(callbackId);\n\n if (interval) {\n this._externalCall("clearInterval", [callbackId]);\n } else {\n this._externalCall("clearTimeout", [callbackId]);\n }\n }\n\n static _getPlatform(platform) {\n if (typeof platform === "string") {\n platform = platform.toLowerCase();\n\n if (platform.includes("win")) {\n return "WIN";\n } else if (platform.includes("mac")) {\n return "MAC";\n }\n }\n\n return "UNIX";\n }\n\n static _getLanguage(language) {\n const [main, sub] = language.toLowerCase().split(/[-_]/);\n\n switch (main) {\n case "zh":\n if (sub === "cn" || sub === "sg") {\n return "CHS";\n }\n\n return "CHT";\n\n case "da":\n return "DAN";\n\n case "de":\n return "DEU";\n\n case "es":\n return "ESP";\n\n case "fr":\n return "FRA";\n\n case "it":\n return "ITA";\n\n case "ko":\n return "KOR";\n\n case "ja":\n return "JPN";\n\n case "nl":\n return "NLD";\n\n case "no":\n return "NOR";\n\n case "pt":\n if (sub === "br") {\n return "PTB";\n }\n\n return "ENU";\n\n case "fi":\n return "SUO";\n\n case "SV":\n return "SVE";\n\n default:\n return "ENU";\n }\n }\n\n get activeDocs() {\n return [this._document.wrapped];\n }\n\n set activeDocs(_) {\n throw new Error("app.activeDocs is read-only");\n }\n\n get calculate() {\n return this._document.obj.calculate;\n }\n\n set calculate(calculate) {\n this._document.obj.calculate = calculate;\n }\n\n get constants() {\n if (!this._constants) {\n this._constants = Object.freeze({\n align: Object.freeze({\n left: 0,\n center: 1,\n right: 2,\n top: 3,\n bottom: 4\n })\n });\n }\n\n return this._constants;\n }\n\n set constants(_) {\n throw new Error("app.constants is read-only");\n }\n\n get focusRect() {\n return this._focusRect;\n }\n\n set focusRect(val) {\n this._focusRect = val;\n }\n\n get formsVersion() {\n return FORMS_VERSION;\n }\n\n set formsVersion(_) {\n throw new Error("app.formsVersion is read-only");\n }\n\n get fromPDFConverters() {\n return [];\n }\n\n set fromPDFConverters(_) {\n throw new Error("app.fromPDFConverters is read-only");\n }\n\n get fs() {\n if (this._fs === null) {\n this._fs = new Proxy(new _fullscreen.FullScreen({\n send: this._send\n }), this._proxyHandler);\n }\n\n return this._fs;\n }\n\n set fs(_) {\n throw new Error("app.fs is read-only");\n }\n\n get language() {\n return this._language;\n }\n\n set language(_) {\n throw new Error("app.language is read-only");\n }\n\n get media() {\n return undefined;\n }\n\n set media(_) {\n throw new Error("app.media is read-only");\n }\n\n get monitors() {\n return [];\n }\n\n set monitors(_) {\n throw new Error("app.monitors is read-only");\n }\n\n get numPlugins() {\n return 0;\n }\n\n set numPlugins(_) {\n throw new Error("app.numPlugins is read-only");\n }\n\n get openInPlace() {\n return this._openInPlace;\n }\n\n set openInPlace(val) {\n this._openInPlace = val;\n }\n\n get platform() {\n return this._platform;\n }\n\n set platform(_) {\n throw new Error("app.platform is read-only");\n }\n\n get plugins() {\n return [];\n }\n\n set plugins(_) {\n throw new Error("app.plugins is read-only");\n }\n\n get printColorProfiles() {\n return [];\n }\n\n set printColorProfiles(_) {\n throw new Error("app.printColorProfiles is read-only");\n }\n\n get printerNames() {\n return [];\n }\n\n set printerNames(_) {\n throw new Error("app.printerNames is read-only");\n }\n\n get runtimeHighlight() {\n return this._runtimeHighlight;\n }\n\n set runtimeHighlight(val) {\n this._runtimeHighlight = val;\n }\n\n get runtimeHighlightColor() {\n return this._runtimeHighlightColor;\n }\n\n set runtimeHighlightColor(val) {\n if (_color.Color._isValidColor(val)) {\n this._runtimeHighlightColor = val;\n }\n }\n\n get thermometer() {\n if (this._thermometer === null) {\n this._thermometer = new Proxy(new _thermometer.Thermometer({\n send: this._send\n }), this._proxyHandler);\n }\n\n return this._thermometer;\n }\n\n set thermometer(_) {\n throw new Error("app.thermometer is read-only");\n }\n\n get toolbar() {\n return this._toolbar;\n }\n\n set toolbar(val) {\n this._toolbar = val;\n }\n\n get toolbarHorizontal() {\n return this.toolbar;\n }\n\n set toolbarHorizontal(value) {\n this.toolbar = value;\n }\n\n get toolbarVertical() {\n return this.toolbar;\n }\n\n set toolbarVertical(value) {\n this.toolbar = value;\n }\n\n get viewerType() {\n return VIEWER_TYPE;\n }\n\n set viewerType(_) {\n throw new Error("app.viewerType is read-only");\n }\n\n get viewerVariation() {\n return VIEWER_VARIATION;\n }\n\n set viewerVariation(_) {\n throw new Error("app.viewerVariation is read-only");\n }\n\n get viewerVersion() {\n return VIEWER_VERSION;\n }\n\n set viewerVersion(_) {\n throw new Error("app.viewerVersion is read-only");\n }\n\n addMenuItem() {}\n\n addSubMenu() {}\n\n addToolButton() {}\n\n alert(cMsg) {\n let nIcon = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let nType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let cTitle = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "PDF.js";\n let oDoc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n let oCheckbox = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n\n if (cMsg && typeof cMsg === "object") {\n nType = cMsg.nType;\n cMsg = cMsg.cMsg;\n }\n\n cMsg = (cMsg || "").toString();\n nType = typeof nType !== "number" || isNaN(nType) || nType < 0 || nType > 3 ? 0 : nType;\n\n if (nType >= 2) {\n return this._externalCall("confirm", [cMsg]) ? 4 : 3;\n }\n\n this._externalCall("alert", [cMsg]);\n\n return 1;\n }\n\n beep() {}\n\n beginPriv() {}\n\n browseForDoc() {}\n\n clearInterval(oInterval) {\n this._unregisterTimeout(oInterval);\n }\n\n clearTimeOut(oTime) {\n this._unregisterTimeout(oTime);\n }\n\n endPriv() {}\n\n execDialog() {}\n\n execMenuItem(item) {\n switch (item) {\n case "SaveAs":\n case "FirstPage":\n case "LastPage":\n case "NextPage":\n case "PrevPage":\n case "ZoomViewIn":\n case "ZoomViewOut":\n this._send({\n command: item\n });\n\n break;\n\n case "FitPage":\n this._send({\n command: "zoom",\n value: "page-fit"\n });\n\n break;\n\n case "Print":\n this._send({\n command: "print"\n });\n\n break;\n }\n }\n\n getNthPlugInName() {}\n\n getPath() {}\n\n goBack() {}\n\n goForward() {}\n\n hideMenuItem() {}\n\n hideToolbarButton() {}\n\n launchURL() {}\n\n listMenuItems() {}\n\n listToolbarButtons() {}\n\n loadPolicyFile() {}\n\n mailGetAddrs() {}\n\n mailMsg() {}\n\n newDoc() {}\n\n newCollection() {}\n\n newFDF() {}\n\n openDoc() {}\n\n openFDF() {}\n\n popUpMenu() {}\n\n popUpMenuEx() {}\n\n removeToolButton() {}\n\n response(cQuestion) {\n let cTitle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";\n let cDefault = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "";\n let bPassword = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "";\n let cLabel = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : "";\n\n if (cQuestion && typeof cQuestion === "object") {\n cDefault = cQuestion.cDefault;\n cQuestion = cQuestion.cQuestion;\n }\n\n cQuestion = (cQuestion || "").toString();\n cDefault = (cDefault || "").toString();\n return this._externalCall("prompt", [cQuestion, cDefault || ""]);\n }\n\n setInterval(cExpr) {\n let nMilliseconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (cExpr && typeof cExpr === "object") {\n nMilliseconds = cExpr.nMilliseconds || 0;\n cExpr = cExpr.cExpr;\n }\n\n if (typeof cExpr !== "string") {\n throw new TypeError("First argument of app.setInterval must be a string");\n }\n\n if (typeof nMilliseconds !== "number") {\n throw new TypeError("Second argument of app.setInterval must be a number");\n }\n\n const callbackId = this._registerTimeoutCallback(cExpr);\n\n this._externalCall("setInterval", [callbackId, nMilliseconds]);\n\n return this._registerTimeout(callbackId, true);\n }\n\n setTimeOut(cExpr) {\n let nMilliseconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (cExpr && typeof cExpr === "object") {\n nMilliseconds = cExpr.nMilliseconds || 0;\n cExpr = cExpr.cExpr;\n }\n\n if (typeof cExpr !== "string") {\n throw new TypeError("First argument of app.setTimeOut must be a string");\n }\n\n if (typeof nMilliseconds !== "number") {\n throw new TypeError("Second argument of app.setTimeOut must be a number");\n }\n\n const callbackId = this._registerTimeoutCallback(cExpr);\n\n this._externalCall("setTimeout", [callbackId, nMilliseconds]);\n\n return this._registerTimeout(callbackId, false);\n }\n\n trustedFunction() {}\n\n trustPropagatorFunction() {}\n\n}\n\nexports.App = App;\n\n/***/ }),\n/* 10 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.EventDispatcher = exports.Event = void 0;\n\nclass Event {\n constructor(data) {\n var _data$selEnd, _data$selStart;\n\n this.change = data.change || "";\n this.changeEx = data.changeEx || null;\n this.commitKey = data.commitKey || 0;\n this.fieldFull = data.fieldFull || false;\n this.keyDown = data.keyDown || false;\n this.modifier = data.modifier || false;\n this.name = data.name;\n this.rc = true;\n this.richChange = data.richChange || [];\n this.richChangeEx = data.richChangeEx || [];\n this.richValue = data.richValue || [];\n this.selEnd = (_data$selEnd = data.selEnd) !== null && _data$selEnd !== void 0 ? _data$selEnd : -1;\n this.selStart = (_data$selStart = data.selStart) !== null && _data$selStart !== void 0 ? _data$selStart : -1;\n this.shift = data.shift || false;\n this.source = data.source || null;\n this.target = data.target || null;\n this.targetName = "";\n this.type = "Field";\n this.value = data.value || "";\n this.willCommit = data.willCommit || false;\n }\n\n}\n\nexports.Event = Event;\n\nclass EventDispatcher {\n constructor(document, calculationOrder, objects) {\n this._document = document;\n this._calculationOrder = calculationOrder;\n this._objects = objects;\n this._document.obj._eventDispatcher = this;\n this._isCalculating = false;\n }\n\n mergeChange(event) {\n let value = event.value;\n\n if (Array.isArray(value)) {\n return value;\n }\n\n if (typeof value !== "string") {\n value = value.toString();\n }\n\n const prefix = event.selStart >= 0 ? value.substring(0, event.selStart) : "";\n const postfix = event.selEnd >= 0 && event.selEnd <= value.length ? value.substring(event.selEnd) : "";\n return `${prefix}${event.change}${postfix}`;\n }\n\n dispatch(baseEvent) {\n const id = baseEvent.id;\n\n if (!(id in this._objects)) {\n let event;\n\n if (id === "doc" || id === "page") {\n event = globalThis.event = new Event(baseEvent);\n event.source = event.target = this._document.wrapped;\n event.name = baseEvent.name;\n }\n\n if (id === "doc") {\n if (event.name === "Open") {\n this.formatAll();\n }\n\n this._document.obj._dispatchDocEvent(event.name);\n } else if (id === "page") {\n this._document.obj._dispatchPageEvent(event.name, baseEvent.actions, baseEvent.pageNumber);\n } else if (id === "app" && baseEvent.name === "ResetForm") {\n for (const fieldId of baseEvent.ids) {\n const obj = this._objects[fieldId];\n\n if (obj) {\n obj.obj._reset();\n }\n }\n }\n\n return;\n }\n\n const name = baseEvent.name;\n const source = this._objects[id];\n const event = globalThis.event = new Event(baseEvent);\n let savedChange;\n\n if (source.obj._isButton()) {\n source.obj._id = id;\n event.value = source.obj._getExportValue(event.value);\n\n if (name === "Action") {\n source.obj._value = event.value;\n }\n }\n\n switch (name) {\n case "Keystroke":\n savedChange = {\n value: event.value,\n change: event.change,\n selStart: event.selStart,\n selEnd: event.selEnd\n };\n break;\n\n case "Blur":\n case "Focus":\n Object.defineProperty(event, "value", {\n configurable: false,\n writable: false,\n enumerable: true,\n value: event.value\n });\n break;\n\n case "Validate":\n this.runValidation(source, event);\n return;\n\n case "Action":\n this.runActions(source, source, event, name);\n this.runCalculate(source, event);\n return;\n }\n\n this.runActions(source, source, event, name);\n\n if (name !== "Keystroke") {\n return;\n }\n\n if (event.rc) {\n if (event.willCommit) {\n this.runValidation(source, event);\n } else {\n const value = source.obj.value = this.mergeChange(event);\n let selStart, selEnd;\n\n if (event.selStart !== savedChange.selStart || event.selEnd !== savedChange.selEnd) {\n selStart = event.selStart;\n selEnd = event.selEnd;\n } else {\n selEnd = selStart = savedChange.selStart + event.change.length;\n }\n\n source.obj._send({\n id: source.obj._id,\n siblings: source.obj._siblings,\n value,\n selRange: [selStart, selEnd]\n });\n }\n } else if (!event.willCommit) {\n source.obj._send({\n id: source.obj._id,\n siblings: source.obj._siblings,\n value: savedChange.value,\n selRange: [savedChange.selStart, savedChange.selEnd]\n });\n } else {\n source.obj._send({\n id: source.obj._id,\n siblings: source.obj._siblings,\n value: "",\n formattedValue: null,\n selRange: [0, 0]\n });\n }\n }\n\n formatAll() {\n const event = globalThis.event = new Event({});\n\n for (const source of Object.values(this._objects)) {\n event.value = source.obj.value;\n\n if (this.runActions(source, source, event, "Format")) {\n var _event$value, _event$value$toString;\n\n source.obj._send({\n id: source.obj._id,\n siblings: source.obj._siblings,\n formattedValue: (_event$value = event.value) === null || _event$value === void 0 ? void 0 : (_event$value$toString = _event$value.toString) === null || _event$value$toString === void 0 ? void 0 : _event$value$toString.call(_event$value)\n });\n }\n }\n }\n\n runValidation(source, event) {\n const didValidateRun = this.runActions(source, source, event, "Validate");\n\n if (event.rc) {\n source.obj.value = event.value;\n this.runCalculate(source, event);\n const savedValue = event.value = source.obj.value;\n let formattedValue = null;\n\n if (this.runActions(source, source, event, "Format")) {\n var _event$value2, _event$value2$toStrin;\n\n formattedValue = (_event$value2 = event.value) === null || _event$value2 === void 0 ? void 0 : (_event$value2$toStrin = _event$value2.toString) === null || _event$value2$toStrin === void 0 ? void 0 : _event$value2$toStrin.call(_event$value2);\n }\n\n source.obj._send({\n id: source.obj._id,\n siblings: source.obj._siblings,\n value: savedValue,\n formattedValue\n });\n\n event.value = savedValue;\n } else if (didValidateRun) {\n source.obj._send({\n id: source.obj._id,\n siblings: source.obj._siblings,\n value: "",\n formattedValue: null,\n selRange: [0, 0]\n });\n }\n }\n\n runActions(source, target, event, eventName) {\n event.source = source.wrapped;\n event.target = target.wrapped;\n event.name = eventName;\n event.targetName = target.obj.name;\n event.rc = true;\n return target.obj._runActions(event);\n }\n\n calculateNow() {\n if (!this._calculationOrder || this._isCalculating || !this._document.obj.calculate) {\n return;\n }\n\n this._isCalculating = true;\n const first = this._calculationOrder[0];\n const source = this._objects[first];\n globalThis.event = new Event({});\n\n try {\n this.runCalculate(source, globalThis.event);\n } catch (error) {\n this._isCalculating = false;\n throw error;\n }\n\n this._isCalculating = false;\n }\n\n runCalculate(source, event) {\n if (!this._calculationOrder || !this._document.obj.calculate) {\n return;\n }\n\n for (const targetId of this._calculationOrder) {\n if (!(targetId in this._objects)) {\n continue;\n }\n\n if (!this._document.obj.calculate) {\n break;\n }\n\n event.value = null;\n const target = this._objects[targetId];\n let savedValue = target.obj.value;\n this.runActions(source, target, event, "Calculate");\n\n if (!event.rc) {\n continue;\n }\n\n if (event.value !== null) {\n target.obj.value = event.value;\n }\n\n event.value = target.obj.value;\n this.runActions(target, target, event, "Validate");\n\n if (!event.rc) {\n if (target.obj.value !== savedValue) {\n target.wrapped.value = savedValue;\n }\n\n continue;\n }\n\n savedValue = event.value = target.obj.value;\n let formattedValue = null;\n\n if (this.runActions(target, target, event, "Format")) {\n var _event$value3, _event$value3$toStrin;\n\n formattedValue = (_event$value3 = event.value) === null || _event$value3 === void 0 ? void 0 : (_event$value3$toStrin = _event$value3.toString) === null || _event$value3$toStrin === void 0 ? void 0 : _event$value3$toStrin.call(_event$value3);\n }\n\n target.obj._send({\n id: target.obj._id,\n siblings: target.obj._siblings,\n value: savedValue,\n formattedValue\n });\n }\n }\n\n}\n\nexports.EventDispatcher = EventDispatcher;\n\n/***/ }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.FullScreen = void 0;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass FullScreen extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._backgroundColor = [];\n this._clickAdvances = true;\n this._cursor = _constants.Cursor.hidden;\n this._defaultTransition = "";\n this._escapeExits = true;\n this._isFullScreen = true;\n this._loop = false;\n this._timeDelay = 3600;\n this._usePageTiming = false;\n this._useTimer = false;\n }\n\n get backgroundColor() {\n return this._backgroundColor;\n }\n\n set backgroundColor(_) {}\n\n get clickAdvances() {\n return this._clickAdvances;\n }\n\n set clickAdvances(_) {}\n\n get cursor() {\n return this._cursor;\n }\n\n set cursor(_) {}\n\n get defaultTransition() {\n return this._defaultTransition;\n }\n\n set defaultTransition(_) {}\n\n get escapeExits() {\n return this._escapeExits;\n }\n\n set escapeExits(_) {}\n\n get isFullScreen() {\n return this._isFullScreen;\n }\n\n set isFullScreen(_) {}\n\n get loop() {\n return this._loop;\n }\n\n set loop(_) {}\n\n get timeDelay() {\n return this._timeDelay;\n }\n\n set timeDelay(_) {}\n\n get transitions() {\n return ["Replace", "WipeRight", "WipeLeft", "WipeDown", "WipeUp", "SplitHorizontalIn", "SplitHorizontalOut", "SplitVerticalIn", "SplitVerticalOut", "BlindsHorizontal", "BlindsVertical", "BoxIn", "BoxOut", "GlitterRight", "GlitterDown", "GlitterRightDown", "Dissolve", "Random"];\n }\n\n set transitions(_) {\n throw new Error("fullscreen.transitions is read-only");\n }\n\n get usePageTiming() {\n return this._usePageTiming;\n }\n\n set usePageTiming(_) {}\n\n get useTimer() {\n return this._useTimer;\n }\n\n set useTimer(_) {}\n\n}\n\nexports.FullScreen = FullScreen;\n\n/***/ }),\n/* 12 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Thermometer = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Thermometer extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._cancelled = false;\n this._duration = 100;\n this._text = "";\n this._value = 0;\n }\n\n get cancelled() {\n return this._cancelled;\n }\n\n set cancelled(_) {\n throw new Error("thermometer.cancelled is read-only");\n }\n\n get duration() {\n return this._duration;\n }\n\n set duration(val) {\n this._duration = val;\n }\n\n get text() {\n return this._text;\n }\n\n set text(val) {\n this._text = val;\n }\n\n get value() {\n return this._value;\n }\n\n set value(val) {\n this._value = val;\n }\n\n begin() {}\n\n end() {}\n\n}\n\nexports.Thermometer = Thermometer;\n\n/***/ }),\n/* 13 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Console = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Console extends _pdf_object.PDFObject {\n clear() {\n this._send({\n id: "clear"\n });\n }\n\n hide() {}\n\n println(msg) {\n if (typeof msg === "string") {\n this._send({\n command: "println",\n value: "PDF.js Console:: " + msg\n });\n }\n }\n\n show() {}\n\n}\n\nexports.Console = Console;\n\n/***/ }),\n/* 14 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Doc = void 0;\n\nvar _common = __w_pdfjs_require__(4);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nvar _print_params = __w_pdfjs_require__(15);\n\nvar _constants = __w_pdfjs_require__(2);\n\nclass InfoProxyHandler {\n static get(obj, prop) {\n return obj[prop.toLowerCase()];\n }\n\n static set(obj, prop, value) {\n throw new Error(`doc.info.${prop} is read-only`);\n }\n\n}\n\nclass Doc extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._expandos = globalThis;\n this._baseURL = data.baseURL || "";\n this._calculate = true;\n this._delay = false;\n this._dirty = false;\n this._disclosed = false;\n this._media = undefined;\n this._metadata = data.metadata || "";\n this._noautocomplete = undefined;\n this._nocache = undefined;\n this._spellDictionaryOrder = [];\n this._spellLanguageOrder = [];\n this._printParams = null;\n this._fields = new Map();\n this._fieldNames = [];\n this._event = null;\n this._author = data.Author || "";\n this._creator = data.Creator || "";\n this._creationDate = this._getDate(data.CreationDate) || null;\n this._docID = data.docID || ["", ""];\n this._documentFileName = data.filename || "";\n this._filesize = data.filesize || 0;\n this._keywords = data.Keywords || "";\n this._layout = data.layout || "";\n this._modDate = this._getDate(data.ModDate) || null;\n this._numFields = 0;\n this._numPages = data.numPages || 1;\n this._pageNum = data.pageNum || 0;\n this._producer = data.Producer || "";\n this._securityHandler = data.EncryptFilterName || null;\n this._subject = data.Subject || "";\n this._title = data.Title || "";\n this._URL = data.URL || "";\n this._info = new Proxy({\n title: this._title,\n author: this._author,\n authors: data.authors || [this._author],\n subject: this._subject,\n keywords: this._keywords,\n creator: this._creator,\n producer: this._producer,\n creationdate: this._creationDate,\n moddate: this._modDate,\n trapped: data.Trapped || "Unknown"\n }, InfoProxyHandler);\n this._zoomType = _constants.ZoomType.none;\n this._zoom = data.zoom || 100;\n this._actions = (0, _common.createActionsMap)(data.actions);\n this._globalEval = data.globalEval;\n this._pageActions = new Map();\n }\n\n _dispatchDocEvent(name) {\n if (name === "Open") {\n const dontRun = new Set(["WillClose", "WillSave", "DidSave", "WillPrint", "DidPrint", "OpenAction"]);\n\n for (const actionName of this._actions.keys()) {\n if (!dontRun.has(actionName)) {\n this._runActions(actionName);\n }\n }\n\n this._runActions("OpenAction");\n } else {\n this._runActions(name);\n }\n }\n\n _dispatchPageEvent(name, actions, pageNumber) {\n var _this$_pageActions$ge;\n\n if (name === "PageOpen") {\n if (!this._pageActions.has(pageNumber)) {\n this._pageActions.set(pageNumber, (0, _common.createActionsMap)(actions));\n }\n\n this._pageNum = pageNumber - 1;\n }\n\n actions = (_this$_pageActions$ge = this._pageActions.get(pageNumber)) === null || _this$_pageActions$ge === void 0 ? void 0 : _this$_pageActions$ge.get(name);\n\n if (actions) {\n for (const action of actions) {\n this._globalEval(action);\n }\n }\n }\n\n _runActions(name) {\n const actions = this._actions.get(name);\n\n if (actions) {\n for (const action of actions) {\n this._globalEval(action);\n }\n }\n }\n\n _addField(name, field) {\n this._fields.set(name, field);\n\n this._fieldNames.push(name);\n\n this._numFields++;\n }\n\n _getDate(date) {\n if (!date || date.length < 15 || !date.startsWith("D:")) {\n return date;\n }\n\n date = date.substring(2);\n const year = date.substring(0, 4);\n const month = date.substring(4, 6);\n const day = date.substring(6, 8);\n const hour = date.substring(8, 10);\n const minute = date.substring(10, 12);\n const o = date.charAt(12);\n let second, offsetPos;\n\n if (o === "Z" || o === "+" || o === "-") {\n second = "00";\n offsetPos = 12;\n } else {\n second = date.substring(12, 14);\n offsetPos = 14;\n }\n\n const offset = date.substring(offsetPos).replaceAll("\'", "");\n return new Date(`${year}-${month}-${day}T${hour}:${minute}:${second}${offset}`);\n }\n\n get author() {\n return this._author;\n }\n\n set author(_) {\n throw new Error("doc.author is read-only");\n }\n\n get baseURL() {\n return this._baseURL;\n }\n\n set baseURL(baseURL) {\n this._baseURL = baseURL;\n }\n\n get bookmarkRoot() {\n return undefined;\n }\n\n set bookmarkRoot(_) {\n throw new Error("doc.bookmarkRoot is read-only");\n }\n\n get calculate() {\n return this._calculate;\n }\n\n set calculate(calculate) {\n this._calculate = calculate;\n }\n\n get creator() {\n return this._creator;\n }\n\n set creator(_) {\n throw new Error("doc.creator is read-only");\n }\n\n get dataObjects() {\n return [];\n }\n\n set dataObjects(_) {\n throw new Error("doc.dataObjects is read-only");\n }\n\n get delay() {\n return this._delay;\n }\n\n set delay(delay) {\n this._delay = delay;\n }\n\n get dirty() {\n return this._dirty;\n }\n\n set dirty(dirty) {\n this._dirty = dirty;\n }\n\n get disclosed() {\n return this._disclosed;\n }\n\n set disclosed(disclosed) {\n this._disclosed = disclosed;\n }\n\n get docID() {\n return this._docID;\n }\n\n set docID(_) {\n throw new Error("doc.docID is read-only");\n }\n\n get documentFileName() {\n return this._documentFileName;\n }\n\n set documentFileName(_) {\n throw new Error("doc.documentFileName is read-only");\n }\n\n get dynamicXFAForm() {\n return false;\n }\n\n set dynamicXFAForm(_) {\n throw new Error("doc.dynamicXFAForm is read-only");\n }\n\n get external() {\n return true;\n }\n\n set external(_) {\n throw new Error("doc.external is read-only");\n }\n\n get filesize() {\n return this._filesize;\n }\n\n set filesize(_) {\n throw new Error("doc.filesize is read-only");\n }\n\n get hidden() {\n return false;\n }\n\n set hidden(_) {\n throw new Error("doc.hidden is read-only");\n }\n\n get hostContainer() {\n return undefined;\n }\n\n set hostContainer(_) {\n throw new Error("doc.hostContainer is read-only");\n }\n\n get icons() {\n return undefined;\n }\n\n set icons(_) {\n throw new Error("doc.icons is read-only");\n }\n\n get info() {\n return this._info;\n }\n\n set info(_) {\n throw new Error("doc.info is read-only");\n }\n\n get innerAppWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set innerAppWindowRect(_) {\n throw new Error("doc.innerAppWindowRect is read-only");\n }\n\n get innerDocWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set innerDocWindowRect(_) {\n throw new Error("doc.innerDocWindowRect is read-only");\n }\n\n get isModal() {\n return false;\n }\n\n set isModal(_) {\n throw new Error("doc.isModal is read-only");\n }\n\n get keywords() {\n return this._keywords;\n }\n\n set keywords(_) {\n throw new Error("doc.keywords is read-only");\n }\n\n get layout() {\n return this._layout;\n }\n\n set layout(value) {\n if (typeof value !== "string") {\n return;\n }\n\n if (value !== "SinglePage" && value !== "OneColumn" && value !== "TwoColumnLeft" && value !== "TwoPageLeft" && value !== "TwoColumnRight" && value !== "TwoPageRight") {\n value = "SinglePage";\n }\n\n this._send({\n command: "layout",\n value\n });\n\n this._layout = value;\n }\n\n get media() {\n return this._media;\n }\n\n set media(media) {\n this._media = media;\n }\n\n get metadata() {\n return this._metadata;\n }\n\n set metadata(metadata) {\n this._metadata = metadata;\n }\n\n get modDate() {\n return this._modDate;\n }\n\n set modDate(_) {\n throw new Error("doc.modDate is read-only");\n }\n\n get mouseX() {\n return 0;\n }\n\n set mouseX(_) {\n throw new Error("doc.mouseX is read-only");\n }\n\n get mouseY() {\n return 0;\n }\n\n set mouseY(_) {\n throw new Error("doc.mouseY is read-only");\n }\n\n get noautocomplete() {\n return this._noautocomplete;\n }\n\n set noautocomplete(noautocomplete) {\n this._noautocomplete = noautocomplete;\n }\n\n get nocache() {\n return this._nocache;\n }\n\n set nocache(nocache) {\n this._nocache = nocache;\n }\n\n get numFields() {\n return this._numFields;\n }\n\n set numFields(_) {\n throw new Error("doc.numFields is read-only");\n }\n\n get numPages() {\n return this._numPages;\n }\n\n set numPages(_) {\n throw new Error("doc.numPages is read-only");\n }\n\n get numTemplates() {\n return 0;\n }\n\n set numTemplates(_) {\n throw new Error("doc.numTemplates is read-only");\n }\n\n get outerAppWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set outerAppWindowRect(_) {\n throw new Error("doc.outerAppWindowRect is read-only");\n }\n\n get outerDocWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set outerDocWindowRect(_) {\n throw new Error("doc.outerDocWindowRect is read-only");\n }\n\n get pageNum() {\n return this._pageNum;\n }\n\n set pageNum(value) {\n if (typeof value !== "number" || value < 0 || value >= this._numPages) {\n return;\n }\n\n this._send({\n command: "page-num",\n value\n });\n\n this._pageNum = value;\n }\n\n get pageWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set pageWindowRect(_) {\n throw new Error("doc.pageWindowRect is read-only");\n }\n\n get path() {\n return "";\n }\n\n set path(_) {\n throw new Error("doc.path is read-only");\n }\n\n get permStatusReady() {\n return true;\n }\n\n set permStatusReady(_) {\n throw new Error("doc.permStatusReady is read-only");\n }\n\n get producer() {\n return this._producer;\n }\n\n set producer(_) {\n throw new Error("doc.producer is read-only");\n }\n\n get requiresFullSave() {\n return false;\n }\n\n set requiresFullSave(_) {\n throw new Error("doc.requiresFullSave is read-only");\n }\n\n get securityHandler() {\n return this._securityHandler;\n }\n\n set securityHandler(_) {\n throw new Error("doc.securityHandler is read-only");\n }\n\n get selectedAnnots() {\n return [];\n }\n\n set selectedAnnots(_) {\n throw new Error("doc.selectedAnnots is read-only");\n }\n\n get sounds() {\n return [];\n }\n\n set sounds(_) {\n throw new Error("doc.sounds is read-only");\n }\n\n get spellDictionaryOrder() {\n return this._spellDictionaryOrder;\n }\n\n set spellDictionaryOrder(spellDictionaryOrder) {\n this._spellDictionaryOrder = spellDictionaryOrder;\n }\n\n get spellLanguageOrder() {\n return this._spellLanguageOrder;\n }\n\n set spellLanguageOrder(spellLanguageOrder) {\n this._spellLanguageOrder = spellLanguageOrder;\n }\n\n get subject() {\n return this._subject;\n }\n\n set subject(_) {\n throw new Error("doc.subject is read-only");\n }\n\n get templates() {\n return [];\n }\n\n set templates(_) {\n throw new Error("doc.templates is read-only");\n }\n\n get title() {\n return this._title;\n }\n\n set title(_) {\n throw new Error("doc.title is read-only");\n }\n\n get URL() {\n return this._URL;\n }\n\n set URL(_) {\n throw new Error("doc.URL is read-only");\n }\n\n get viewState() {\n return undefined;\n }\n\n set viewState(_) {\n throw new Error("doc.viewState is read-only");\n }\n\n get xfa() {\n return this._xfa;\n }\n\n set xfa(_) {\n throw new Error("doc.xfa is read-only");\n }\n\n get XFAForeground() {\n return false;\n }\n\n set XFAForeground(_) {\n throw new Error("doc.XFAForeground is read-only");\n }\n\n get zoomType() {\n return this._zoomType;\n }\n\n set zoomType(type) {\n if (typeof type !== "string") {\n return;\n }\n\n switch (type) {\n case _constants.ZoomType.none:\n this._send({\n command: "zoom",\n value: 1\n });\n\n break;\n\n case _constants.ZoomType.fitP:\n this._send({\n command: "zoom",\n value: "page-fit"\n });\n\n break;\n\n case _constants.ZoomType.fitW:\n this._send({\n command: "zoom",\n value: "page-width"\n });\n\n break;\n\n case _constants.ZoomType.fitH:\n this._send({\n command: "zoom",\n value: "page-height"\n });\n\n break;\n\n case _constants.ZoomType.fitV:\n this._send({\n command: "zoom",\n value: "auto"\n });\n\n break;\n\n case _constants.ZoomType.pref:\n case _constants.ZoomType.refW:\n break;\n\n default:\n return;\n }\n\n this._zoomType = type;\n }\n\n get zoom() {\n return this._zoom;\n }\n\n set zoom(value) {\n if (typeof value !== "number" || value < 8.33 || value > 6400) {\n return;\n }\n\n this._send({\n command: "zoom",\n value: value / 100\n });\n }\n\n addAnnot() {}\n\n addField() {}\n\n addIcon() {}\n\n addLink() {}\n\n addRecipientListCryptFilter() {}\n\n addRequirement() {}\n\n addScript() {}\n\n addThumbnails() {}\n\n addWatermarkFromFile() {}\n\n addWatermarkFromText() {}\n\n addWeblinks() {}\n\n bringToFront() {}\n\n calculateNow() {\n this._eventDispatcher.calculateNow();\n }\n\n closeDoc() {}\n\n colorConvertPage() {}\n\n createDataObject() {}\n\n createTemplate() {}\n\n deletePages() {}\n\n deleteSound() {}\n\n embedDocAsDataObject() {}\n\n embedOutputIntent() {}\n\n encryptForRecipients() {}\n\n encryptUsingPolicy() {}\n\n exportAsFDF() {}\n\n exportAsFDFStr() {}\n\n exportAsText() {}\n\n exportAsXFDF() {}\n\n exportAsXFDFStr() {}\n\n exportDataObject() {}\n\n exportXFAData() {}\n\n extractPages() {}\n\n flattenPages() {}\n\n getAnnot() {}\n\n getAnnots() {}\n\n getAnnot3D() {}\n\n getAnnots3D() {}\n\n getColorConvertAction() {}\n\n getDataObject() {}\n\n getDataObjectContents() {}\n\n _getField(cName) {\n if (cName && typeof cName === "object") {\n cName = cName.cName;\n }\n\n if (typeof cName !== "string") {\n throw new TypeError("Invalid field name: must be a string");\n }\n\n const searchedField = this._fields.get(cName);\n\n if (searchedField) {\n return searchedField;\n }\n\n const parts = cName.split("#");\n let childIndex = NaN;\n\n if (parts.length === 2) {\n childIndex = Math.floor(parseFloat(parts[1]));\n cName = parts[0];\n }\n\n for (const [name, field] of this._fields.entries()) {\n if (name.endsWith(cName)) {\n if (!isNaN(childIndex)) {\n const children = this._getChildren(name);\n\n if (childIndex < 0 || childIndex >= children.length) {\n childIndex = 0;\n }\n\n if (childIndex < children.length) {\n this._fields.set(cName, children[childIndex]);\n\n return children[childIndex];\n }\n }\n\n this._fields.set(cName, field);\n\n return field;\n }\n }\n\n return null;\n }\n\n getField(cName) {\n const field = this._getField(cName);\n\n if (!field) {\n return null;\n }\n\n return field.wrapped;\n }\n\n _getChildren(fieldName) {\n const len = fieldName.length;\n const children = [];\n const pattern = /^\\.[^.]+$/;\n\n for (const [name, field] of this._fields.entries()) {\n if (name.startsWith(fieldName)) {\n const finalPart = name.slice(len);\n\n if (finalPart.match(pattern)) {\n children.push(field);\n }\n }\n }\n\n return children;\n }\n\n getIcon() {}\n\n getLegalWarnings() {}\n\n getLinks() {}\n\n getNthFieldName(nIndex) {\n if (nIndex && typeof nIndex === "object") {\n nIndex = nIndex.nIndex;\n }\n\n if (typeof nIndex !== "number") {\n throw new TypeError("Invalid field index: must be a number");\n }\n\n if (0 <= nIndex && nIndex < this.numFields) {\n return this._fieldNames[Math.trunc(nIndex)];\n }\n\n return null;\n }\n\n getNthTemplate() {\n return null;\n }\n\n getOCGs() {}\n\n getOCGOrder() {}\n\n getPageBox() {}\n\n getPageLabel() {}\n\n getPageNthWord() {}\n\n getPageNthWordQuads() {}\n\n getPageNumWords() {}\n\n getPageRotation() {}\n\n getPageTransition() {}\n\n getPrintParams() {\n if (!this._printParams) {\n this._printParams = new _print_params.PrintParams({\n lastPage: this._numPages - 1\n });\n }\n\n return this._printParams;\n }\n\n getSound() {}\n\n getTemplate() {}\n\n getURL() {}\n\n gotoNamedDest() {}\n\n importAnFDF() {}\n\n importAnXFDF() {}\n\n importDataObject() {}\n\n importIcon() {}\n\n importSound() {}\n\n importTextData() {}\n\n importXFAData() {}\n\n insertPages() {}\n\n mailDoc() {}\n\n mailForm() {}\n\n movePage() {}\n\n newPage() {}\n\n openDataObject() {}\n\n print() {\n let bUI = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n let nStart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let nEnd = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;\n let bSilent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n let bShrinkToFit = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n let bPrintAsImage = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n let bReverse = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;\n let bAnnotations = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : true;\n let printParams = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : null;\n\n if (bUI && typeof bUI === "object") {\n nStart = bUI.nStart;\n nEnd = bUI.nEnd;\n bSilent = bUI.bSilent;\n bShrinkToFit = bUI.bShrinkToFit;\n bPrintAsImage = bUI.bPrintAsImage;\n bReverse = bUI.bReverse;\n bAnnotations = bUI.bAnnotations;\n printParams = bUI.printParams;\n bUI = bUI.bUI;\n }\n\n if (printParams) {\n nStart = printParams.firstPage;\n nEnd = printParams.lastPage;\n }\n\n if (typeof nStart === "number") {\n nStart = Math.max(0, Math.trunc(nStart));\n } else {\n nStart = 0;\n }\n\n if (typeof nEnd === "number") {\n nEnd = Math.max(0, Math.trunc(nEnd));\n } else {\n nEnd = -1;\n }\n\n this._send({\n command: "print",\n start: nStart,\n end: nEnd\n });\n }\n\n removeDataObject() {}\n\n removeField() {}\n\n removeIcon() {}\n\n removeLinks() {}\n\n removeRequirement() {}\n\n removeScript() {}\n\n removeTemplate() {}\n\n removeThumbnails() {}\n\n removeWeblinks() {}\n\n replacePages() {}\n\n resetForm() {\n let aFields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n if (aFields && typeof aFields === "object") {\n aFields = aFields.aFields;\n }\n\n if (aFields && !Array.isArray(aFields)) {\n aFields = [aFields];\n }\n\n let mustCalculate = false;\n let fieldsToReset;\n\n if (aFields) {\n fieldsToReset = [];\n\n for (const fieldName of aFields) {\n if (!fieldName) {\n continue;\n }\n\n if (typeof fieldName !== "string") {\n fieldsToReset = null;\n break;\n }\n\n const field = this._getField(fieldName);\n\n if (!field) {\n continue;\n }\n\n fieldsToReset.push(field);\n mustCalculate = true;\n }\n }\n\n if (!fieldsToReset) {\n fieldsToReset = this._fields.values();\n mustCalculate = this._fields.size !== 0;\n }\n\n for (const field of fieldsToReset) {\n field.obj.value = field.obj.defaultValue;\n\n this._send({\n id: field.obj._id,\n siblings: field.obj._siblings,\n value: field.obj.defaultValue,\n formattedValue: null,\n selRange: [0, 0]\n });\n }\n\n if (mustCalculate) {\n this.calculateNow();\n }\n }\n\n saveAs() {}\n\n scroll() {}\n\n selectPageNthWord() {}\n\n setAction() {}\n\n setDataObjectContents() {}\n\n setOCGOrder() {}\n\n setPageAction() {}\n\n setPageBoxes() {}\n\n setPageLabels() {}\n\n setPageRotations() {}\n\n setPageTabOrder() {}\n\n setPageTransitions() {}\n\n spawnPageFromTemplate() {}\n\n submitForm() {}\n\n syncAnnotScan() {}\n\n}\n\nexports.Doc = Doc;\n\n/***/ }),\n/* 15 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.PrintParams = void 0;\n\nclass PrintParams {\n constructor(data) {\n this.binaryOk = true;\n this.bitmapDPI = 150;\n this.booklet = {\n binding: 0,\n duplexMode: 0,\n subsetFrom: 0,\n subsetTo: -1\n };\n this.colorOverride = 0;\n this.colorProfile = "";\n this.constants = Object.freeze({\n bookletBindings: Object.freeze({\n Left: 0,\n Right: 1,\n LeftTall: 2,\n RightTall: 3\n }),\n bookletDuplexMode: Object.freeze({\n BothSides: 0,\n FrontSideOnly: 1,\n BasicSideOnly: 2\n }),\n colorOverrides: Object.freeze({\n auto: 0,\n gray: 1,\n mono: 2\n }),\n fontPolicies: Object.freeze({\n everyPage: 0,\n jobStart: 1,\n pageRange: 2\n }),\n handling: Object.freeze({\n none: 0,\n fit: 1,\n shrink: 2,\n tileAll: 3,\n tileLarge: 4,\n nUp: 5,\n booklet: 6\n }),\n interactionLevel: Object.freeze({\n automatic: 0,\n full: 1,\n silent: 2\n }),\n nUpPageOrders: Object.freeze({\n Horizontal: 0,\n HorizontalReversed: 1,\n Vertical: 2\n }),\n printContents: Object.freeze({\n doc: 0,\n docAndComments: 1,\n formFieldsOnly: 2\n }),\n flagValues: Object.freeze({\n applyOverPrint: 1,\n applySoftProofSettings: 1 << 1,\n applyWorkingColorSpaces: 1 << 2,\n emitHalftones: 1 << 3,\n emitPostScriptXObjects: 1 << 4,\n emitFormsAsPSForms: 1 << 5,\n maxJP2KRes: 1 << 6,\n setPageSize: 1 << 7,\n suppressBG: 1 << 8,\n suppressCenter: 1 << 9,\n suppressCJKFontSubst: 1 << 10,\n suppressCropClip: 1 << 1,\n suppressRotate: 1 << 12,\n suppressTransfer: 1 << 13,\n suppressUCR: 1 << 14,\n useTrapAnnots: 1 << 15,\n usePrintersMarks: 1 << 16\n }),\n rasterFlagValues: Object.freeze({\n textToOutline: 1,\n strokesToOutline: 1 << 1,\n allowComplexClip: 1 << 2,\n preserveOverprint: 1 << 3\n }),\n subsets: Object.freeze({\n all: 0,\n even: 1,\n odd: 2\n }),\n tileMarks: Object.freeze({\n none: 0,\n west: 1,\n east: 2\n }),\n usages: Object.freeze({\n auto: 0,\n use: 1,\n noUse: 2\n })\n });\n this.downloadFarEastFonts = false;\n this.fileName = "";\n this.firstPage = 0;\n this.flags = 0;\n this.fontPolicy = 0;\n this.gradientDPI = 150;\n this.interactive = 1;\n this.lastPage = data.lastPage;\n this.npUpAutoRotate = false;\n this.npUpNumPagesH = 2;\n this.npUpNumPagesV = 2;\n this.npUpPageBorder = false;\n this.npUpPageOrder = 0;\n this.pageHandling = 0;\n this.pageSubset = 0;\n this.printAsImage = false;\n this.printContent = 0;\n this.printerName = "";\n this.psLevel = 0;\n this.rasterFlags = 0;\n this.reversePages = false;\n this.tileLabel = false;\n this.tileMark = 0;\n this.tileOverlap = 0;\n this.tileScale = 1.0;\n this.transparencyLevel = 75;\n this.usePrinterCRD = 0;\n this.useT1Conversion = 0;\n }\n\n}\n\nexports.PrintParams = PrintParams;\n\n/***/ }),\n/* 16 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.ProxyHandler = void 0;\n\nclass ProxyHandler {\n constructor() {\n this.nosend = new Set(["delay"]);\n }\n\n get(obj, prop) {\n if (prop in obj._expandos) {\n const val = obj._expandos[prop];\n\n if (typeof val === "function") {\n return val.bind(obj);\n }\n\n return val;\n }\n\n if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n const val = obj[prop];\n\n if (typeof val === "function") {\n return val.bind(obj);\n }\n\n return val;\n }\n\n return undefined;\n }\n\n set(obj, prop, value) {\n if (obj._kidIds) {\n obj._kidIds.forEach(id => {\n obj._appObjects[id].wrapped[prop] = value;\n });\n }\n\n if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n const old = obj[prop];\n obj[prop] = value;\n\n if (!this.nosend.has(prop) && obj._send && obj._id !== null && typeof old !== "function") {\n const data = {\n id: obj._id\n };\n data[prop] = obj[prop];\n\n if (!obj._siblings) {\n obj._send(data);\n } else {\n data.siblings = obj._siblings;\n\n obj._send(data);\n }\n }\n } else {\n obj._expandos[prop] = value;\n }\n\n return true;\n }\n\n has(obj, prop) {\n return prop in obj._expandos || typeof prop === "string" && !prop.startsWith("_") && prop in obj;\n }\n\n getPrototypeOf(obj) {\n return null;\n }\n\n setPrototypeOf(obj, proto) {\n return false;\n }\n\n isExtensible(obj) {\n return true;\n }\n\n preventExtensions(obj) {\n return false;\n }\n\n getOwnPropertyDescriptor(obj, prop) {\n if (prop in obj._expandos) {\n return {\n configurable: true,\n enumerable: true,\n value: obj._expandos[prop]\n };\n }\n\n if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n return {\n configurable: true,\n enumerable: true,\n value: obj[prop]\n };\n }\n\n return undefined;\n }\n\n defineProperty(obj, key, descriptor) {\n Object.defineProperty(obj._expandos, key, descriptor);\n return true;\n }\n\n deleteProperty(obj, prop) {\n if (prop in obj._expandos) {\n delete obj._expandos[prop];\n }\n }\n\n ownKeys(obj) {\n const fromExpandos = Reflect.ownKeys(obj._expandos);\n const fromObj = Reflect.ownKeys(obj).filter(k => !k.startsWith("_"));\n return fromExpandos.concat(fromObj);\n }\n\n}\n\nexports.ProxyHandler = ProxyHandler;\n\n/***/ }),\n/* 17 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Util = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Util extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._scandCache = new Map();\n this._months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];\n this._days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];\n this.MILLISECONDS_IN_DAY = 86400000;\n this.MILLISECONDS_IN_WEEK = 604800000;\n this._externalCall = data.externalCall;\n }\n\n printf() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 0) {\n throw new Error("Invalid number of params in printf");\n }\n\n if (typeof args[0] !== "string") {\n throw new TypeError("First argument of printf must be a string");\n }\n\n const pattern = /%(,[0-4])?([+ 0#]+)?(\\d+)?(\\.\\d+)?(.)/g;\n const PLUS = 1;\n const SPACE = 2;\n const ZERO = 4;\n const HASH = 8;\n let i = 0;\n return args[0].replace(pattern, function (match, nDecSep, cFlags, nWidth, nPrecision, cConvChar) {\n if (cConvChar !== "d" && cConvChar !== "f" && cConvChar !== "s" && cConvChar !== "x") {\n const buf = ["%"];\n\n for (const str of [nDecSep, cFlags, nWidth, nPrecision, cConvChar]) {\n if (str) {\n buf.push(str);\n }\n }\n\n return buf.join("");\n }\n\n i++;\n\n if (i === args.length) {\n throw new Error("Not enough arguments in printf");\n }\n\n const arg = args[i];\n\n if (cConvChar === "s") {\n return arg.toString();\n }\n\n let flags = 0;\n\n if (cFlags) {\n for (const flag of cFlags) {\n switch (flag) {\n case "+":\n flags |= PLUS;\n break;\n\n case " ":\n flags |= SPACE;\n break;\n\n case "0":\n flags |= ZERO;\n break;\n\n case "#":\n flags |= HASH;\n break;\n }\n }\n }\n\n cFlags = flags;\n\n if (nWidth) {\n nWidth = parseInt(nWidth);\n }\n\n let intPart = Math.trunc(arg);\n\n if (cConvChar === "x") {\n let hex = Math.abs(intPart).toString(16).toUpperCase();\n\n if (nWidth !== undefined) {\n hex = hex.padStart(nWidth, cFlags & ZERO ? "0" : " ");\n }\n\n if (cFlags & HASH) {\n hex = `0x${hex}`;\n }\n\n return hex;\n }\n\n if (nPrecision) {\n nPrecision = parseInt(nPrecision.substring(1));\n }\n\n nDecSep = nDecSep ? nDecSep.substring(1) : "0";\n const separators = {\n 0: [",", "."],\n 1: ["", "."],\n 2: [".", ","],\n 3: ["", ","],\n 4: ["\'", "."]\n };\n const [thousandSep, decimalSep] = separators[nDecSep];\n let decPart = "";\n\n if (cConvChar === "f") {\n if (nPrecision !== undefined) {\n decPart = Math.abs(arg - intPart).toFixed(nPrecision);\n } else {\n decPart = Math.abs(arg - intPart).toString();\n }\n\n if (decPart.length > 2) {\n decPart = `${decimalSep}${decPart.substring(2)}`;\n } else if (cFlags & HASH) {\n decPart = ".";\n } else {\n decPart = "";\n }\n }\n\n let sign = "";\n\n if (intPart < 0) {\n sign = "-";\n intPart = -intPart;\n } else if (cFlags & PLUS) {\n sign = "+";\n } else if (cFlags & SPACE) {\n sign = " ";\n }\n\n if (thousandSep && intPart >= 1000) {\n const buf = [];\n\n while (true) {\n buf.push((intPart % 1000).toString().padStart(3, "0"));\n intPart = Math.trunc(intPart / 1000);\n\n if (intPart < 1000) {\n buf.push(intPart.toString());\n break;\n }\n }\n\n intPart = buf.reverse().join(thousandSep);\n } else {\n intPart = intPart.toString();\n }\n\n let n = `${intPart}${decPart}`;\n\n if (nWidth !== undefined) {\n n = n.padStart(nWidth - sign.length, cFlags & ZERO ? "0" : " ");\n }\n\n return `${sign}${n}`;\n });\n }\n\n iconStreamFromIcon() {}\n\n printd(cFormat, oDate) {\n switch (cFormat) {\n case 0:\n return this.printd("D:yyyymmddHHMMss", oDate);\n\n case 1:\n return this.printd("yyyy.mm.dd HH:MM:ss", oDate);\n\n case 2:\n return this.printd("m/d/yy h:MM:ss tt", oDate);\n }\n\n const handlers = {\n mmmm: data => {\n return this._months[data.month];\n },\n mmm: data => {\n return this._months[data.month].substring(0, 3);\n },\n mm: data => {\n return (data.month + 1).toString().padStart(2, "0");\n },\n m: data => {\n return (data.month + 1).toString();\n },\n dddd: data => {\n return this._days[data.dayOfWeek];\n },\n ddd: data => {\n return this._days[data.dayOfWeek].substring(0, 3);\n },\n dd: data => {\n return data.day.toString().padStart(2, "0");\n },\n d: data => {\n return data.day.toString();\n },\n yyyy: data => {\n return data.year.toString();\n },\n yy: data => {\n return (data.year % 100).toString().padStart(2, "0");\n },\n HH: data => {\n return data.hours.toString().padStart(2, "0");\n },\n H: data => {\n return data.hours.toString();\n },\n hh: data => {\n return (1 + (data.hours + 11) % 12).toString().padStart(2, "0");\n },\n h: data => {\n return (1 + (data.hours + 11) % 12).toString();\n },\n MM: data => {\n return data.minutes.toString().padStart(2, "0");\n },\n M: data => {\n return data.minutes.toString();\n },\n ss: data => {\n return data.seconds.toString().padStart(2, "0");\n },\n s: data => {\n return data.seconds.toString();\n },\n tt: data => {\n return data.hours < 12 ? "am" : "pm";\n },\n t: data => {\n return data.hours < 12 ? "a" : "p";\n }\n };\n const data = {\n year: oDate.getFullYear(),\n month: oDate.getMonth(),\n day: oDate.getDate(),\n dayOfWeek: oDate.getDay(),\n hours: oDate.getHours(),\n minutes: oDate.getMinutes(),\n seconds: oDate.getSeconds()\n };\n const patterns = /(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t|\\\\.)/g;\n return cFormat.replace(patterns, function (match, pattern) {\n if (pattern in handlers) {\n return handlers[pattern](data);\n }\n\n return pattern.charCodeAt(1);\n });\n }\n\n printx(cFormat, cSource) {\n const handlers = [x => x, x => x.toUpperCase(), x => x.toLowerCase()];\n const buf = [];\n let i = 0;\n const ii = cSource.length;\n let currCase = handlers[0];\n let escaped = false;\n\n for (const command of cFormat) {\n if (escaped) {\n buf.push(command);\n escaped = false;\n continue;\n }\n\n if (i >= ii) {\n break;\n }\n\n switch (command) {\n case "?":\n buf.push(currCase(cSource.charAt(i++)));\n break;\n\n case "X":\n while (i < ii) {\n const char = cSource.charAt(i++);\n\n if ("a" <= char && char <= "z" || "A" <= char && char <= "Z" || "0" <= char && char <= "9") {\n buf.push(currCase(char));\n break;\n }\n }\n\n break;\n\n case "A":\n while (i < ii) {\n const char = cSource.charAt(i++);\n\n if ("a" <= char && char <= "z" || "A" <= char && char <= "Z") {\n buf.push(currCase(char));\n break;\n }\n }\n\n break;\n\n case "9":\n while (i < ii) {\n const char = cSource.charAt(i++);\n\n if ("0" <= char && char <= "9") {\n buf.push(char);\n break;\n }\n }\n\n break;\n\n case "*":\n while (i < ii) {\n buf.push(currCase(cSource.charAt(i++)));\n }\n\n break;\n\n case "\\\\":\n escaped = true;\n break;\n\n case ">":\n currCase = handlers[1];\n break;\n\n case "<":\n currCase = handlers[2];\n break;\n\n case "=":\n currCase = handlers[0];\n break;\n\n default:\n buf.push(command);\n }\n }\n\n return buf.join("");\n }\n\n scand(cFormat, cDate) {\n if (typeof cDate !== "string") {\n return new Date(cDate);\n }\n\n if (cDate === "") {\n return new Date();\n }\n\n switch (cFormat) {\n case 0:\n return this.scand("D:yyyymmddHHMMss", cDate);\n\n case 1:\n return this.scand("yyyy.mm.dd HH:MM:ss", cDate);\n\n case 2:\n return this.scand("m/d/yy h:MM:ss tt", cDate);\n }\n\n if (!this._scandCache.has(cFormat)) {\n const months = this._months;\n const days = this._days;\n const handlers = {\n mmmm: {\n pattern: `(${months.join("|")})`,\n action: (value, data) => {\n data.month = months.indexOf(value);\n }\n },\n mmm: {\n pattern: `(${months.map(month => month.substring(0, 3)).join("|")})`,\n action: (value, data) => {\n data.month = months.findIndex(month => month.substring(0, 3) === value);\n }\n },\n mm: {\n pattern: `(\\\\d{2})`,\n action: (value, data) => {\n data.month = parseInt(value) - 1;\n }\n },\n m: {\n pattern: `(\\\\d{1,2})`,\n action: (value, data) => {\n data.month = parseInt(value) - 1;\n }\n },\n dddd: {\n pattern: `(${days.join("|")})`,\n action: (value, data) => {\n data.day = days.indexOf(value);\n }\n },\n ddd: {\n pattern: `(${days.map(day => day.substring(0, 3)).join("|")})`,\n action: (value, data) => {\n data.day = days.findIndex(day => day.substring(0, 3) === value);\n }\n },\n dd: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.day = parseInt(value);\n }\n },\n d: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.day = parseInt(value);\n }\n },\n yyyy: {\n pattern: "(\\\\d{4})",\n action: (value, data) => {\n data.year = parseInt(value);\n }\n },\n yy: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.year = 2000 + parseInt(value);\n }\n },\n HH: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n H: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n hh: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n h: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n MM: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.minutes = parseInt(value);\n }\n },\n M: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.minutes = parseInt(value);\n }\n },\n ss: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.seconds = parseInt(value);\n }\n },\n s: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.seconds = parseInt(value);\n }\n },\n tt: {\n pattern: "([aApP][mM])",\n action: (value, data) => {\n const char = value.charAt(0);\n data.am = char === "a" || char === "A";\n }\n },\n t: {\n pattern: "([aApP])",\n action: (value, data) => {\n data.am = value === "a" || value === "A";\n }\n }\n };\n const escapedFormat = cFormat.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, "\\\\$&");\n const patterns = /(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t)/g;\n const actions = [];\n const re = escapedFormat.replace(patterns, function (match, patternElement) {\n const {\n pattern,\n action\n } = handlers[patternElement];\n actions.push(action);\n return pattern;\n });\n\n this._scandCache.set(cFormat, [re, actions]);\n }\n\n const [re, actions] = this._scandCache.get(cFormat);\n\n const matches = new RegExp(`^${re}$`, "g").exec(cDate);\n\n if (!matches || matches.length !== actions.length + 1) {\n return null;\n }\n\n const data = {\n year: 2000,\n month: 0,\n day: 1,\n hours: 0,\n minutes: 0,\n seconds: 0,\n am: null\n };\n actions.forEach((action, i) => action(matches[i + 1], data));\n\n if (data.am !== null) {\n data.hours = data.hours % 12 + (data.am ? 0 : 12);\n }\n\n return new Date(data.year, data.month, data.day, data.hours, data.minutes, data.seconds);\n }\n\n spansToXML() {}\n\n stringFromStream() {}\n\n xmlToSpans() {}\n\n}\n\nexports.Util = Util;\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\nvar exports = __webpack_exports__;\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nObject.defineProperty(exports, "initSandbox", ({\n enumerable: true,\n get: function () {\n return _initialization.initSandbox;\n }\n}));\n\nvar _initialization = __w_pdfjs_require__(1);\n\nconst pdfjsVersion = \'2.16.105\';\nconst pdfjsBuild = \'172ccdbe5\';\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});']; + code.push("delete dump;"); + let success = false; + let buf = 0; + + try { + const sandboxData = JSON.stringify(data); + code.push(`pdfjsScripting.initSandbox({ data: ${sandboxData} })`); + buf = this._module.stringToNewUTF8(code.join("\n")); + success = !!this._module.ccall("init", "number", ["number", "number"], [buf, this._alertOnError]); + } catch (error) { + console.error(error); + } finally { + if (buf) { + this._module.ccall("free", "number", ["number"], [buf]); + } + } + + if (success) { + this.support.commFun = this._module.cwrap("commFun", null, ["string", "string"]); + } else { + this.nukeSandbox(); + throw new Error("Cannot start sandbox"); + } + } + + dispatchEvent(event) { + var _this$support; + + (_this$support = this.support) === null || _this$support === void 0 ? void 0 : _this$support.callSandboxFunction("dispatchEvent", event); + } + + dumpMemoryUse() { + if (this._module) { + this._module.ccall("dumpMemoryUse", null, []); + } + } + + nukeSandbox() { + if (this._module !== null) { + this.support.destroy(); + this.support = null; + + this._module.ccall("nukeSandbox", null, []); + + this._module = null; + } + } + + evalForTesting(code, key) { + throw new Error("Not implemented: evalForTesting"); + } + +} + +function QuickJSSandbox() { + return (0, _quickjsEval.default)().then(module => { + return new Sandbox(window, module); + }); +} +})(); + +/******/ return __webpack_exports__; +/******/ })() +; +}); diff --git a/addons/web/static/lib/pdfjs/build/pdf.worker.js b/addons/web/static/lib/pdfjs/build/pdf.worker.js index c74ad3c96ac..b0c5f849c70 100644 --- a/addons/web/static/lib/pdfjs/build/pdf.worker.js +++ b/addons/web/static/lib/pdfjs/build/pdf.worker.js @@ -1,8 +1,8 @@ /** * @licstart The following is the entire license notice for the - * Javascript code in this page + * JavaScript code in this page * - * Copyright 2019 Mozilla Foundation + * Copyright 2022 Mozilla Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ * limitations under the License. * * @licend The above is the entire license notice for the - * Javascript code in this page + * JavaScript code in this page */ (function webpackUniversalModuleDefinition(root, factory) { @@ -29,244 +29,128 @@ exports["pdfjs-dist/build/pdf.worker"] = factory(); else root["pdfjs-dist/build/pdf.worker"] = root.pdfjsWorker = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __w_pdfjs_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __w_pdfjs_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __w_pdfjs_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __w_pdfjs_require__.d = function(exports, name, getter) { -/******/ if(!__w_pdfjs_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __w_pdfjs_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __w_pdfjs_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __w_pdfjs_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __w_pdfjs_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __w_pdfjs_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __w_pdfjs_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __w_pdfjs_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var pdfjsVersion = '2.2.228'; -var pdfjsBuild = 'd7afb74a'; - -var pdfjsCoreWorker = __w_pdfjs_require__(1); - -exports.WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler; - -/***/ }), +})(globalThis, () => { +return /******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ([ +/* 0 */, /* 1 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.WorkerMessageHandler = exports.WorkerTask = void 0; +})); +exports.WorkerTask = exports.WorkerMessageHandler = void 0; -var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2)); +var _util = __w_pdfjs_require__(2); -var _util = __w_pdfjs_require__(5); +var _primitives = __w_pdfjs_require__(130); -var _primitives = __w_pdfjs_require__(151); +var _core_utils = __w_pdfjs_require__(131); -var _pdf_manager = __w_pdfjs_require__(152); +var _pdf_manager = __w_pdfjs_require__(133); -var _is_node = _interopRequireDefault(__w_pdfjs_require__(8)); +var _cleanup_helper = __w_pdfjs_require__(196); -var _message_handler = __w_pdfjs_require__(191); +var _writer = __w_pdfjs_require__(190); -var _worker_stream = __w_pdfjs_require__(192); +var _is_node = __w_pdfjs_require__(4); -var _core_utils = __w_pdfjs_require__(154); +var _message_handler = __w_pdfjs_require__(227); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +var _worker_stream = __w_pdfjs_require__(228); -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } - -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } - -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var WorkerTask = function WorkerTaskClosure() { - function WorkerTask(name) { +class WorkerTask { + constructor(name) { this.name = name; this.terminated = false; this._capability = (0, _util.createPromiseCapability)(); } - WorkerTask.prototype = { - get finished() { - return this._capability.promise; - }, + get finished() { + return this._capability.promise; + } - finish: function finish() { - this._capability.resolve(); - }, - terminate: function terminate() { - this.terminated = true; - }, - ensureNotTerminated: function ensureNotTerminated() { - if (this.terminated) { - throw new Error('Worker task was terminated'); - } + finish() { + this._capability.resolve(); + } + + terminate() { + this.terminated = true; + } + + ensureNotTerminated() { + if (this.terminated) { + throw new Error("Worker task was terminated"); } - }; - return WorkerTask; -}(); + } + +} exports.WorkerTask = WorkerTask; -var WorkerMessageHandler = { - setup: function setup(handler, port) { - var testMessageProcessed = false; - handler.on('test', function wphSetupTest(data) { + +class WorkerMessageHandler { + static setup(handler, port) { + let testMessageProcessed = false; + handler.on("test", function wphSetupTest(data) { if (testMessageProcessed) { return; } testMessageProcessed = true; - - if (!(data instanceof Uint8Array)) { - handler.send('test', false); - return; - } - - var supportTransfers = data[0] === 255; - handler.postMessageTransfers = supportTransfers; - var xhr = new XMLHttpRequest(); - var responseExists = 'response' in xhr; - - try { - xhr.responseType; - } catch (e) { - responseExists = false; - } - - if (!responseExists) { - handler.send('test', false); - return; - } - - handler.send('test', { - supportTypedArray: true, - supportTransfers: supportTransfers - }); + handler.send("test", data instanceof Uint8Array); }); - handler.on('configure', function wphConfigure(data) { + handler.on("configure", function wphConfigure(data) { (0, _util.setVerbosityLevel)(data.verbosity); }); - handler.on('GetDocRequest', function wphSetupDoc(data) { + handler.on("GetDocRequest", function wphSetupDoc(data) { return WorkerMessageHandler.createDocumentHandler(data, port); }); - }, - createDocumentHandler: function createDocumentHandler(docParams, port) { - var pdfManager; - var terminated = false; - var cancelXHRs = null; - var WorkerTasks = []; - var verbosity = (0, _util.getVerbosityLevel)(); - var apiVersion = docParams.apiVersion; - var workerVersion = '2.2.228'; + } + + static createDocumentHandler(docParams, port) { + let pdfManager; + let terminated = false; + let cancelXHRs = null; + const WorkerTasks = []; + const verbosity = (0, _util.getVerbosityLevel)(); + const apiVersion = docParams.apiVersion; + const workerVersion = '2.16.105'; if (apiVersion !== workerVersion) { - throw new Error("The API version \"".concat(apiVersion, "\" does not match ") + "the Worker version \"".concat(workerVersion, "\".")); + throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version "${workerVersion}".`); } - var docId = docParams.docId; - var docBaseUrl = docParams.docBaseUrl; - var workerHandlerName = docParams.docId + '_worker'; - var handler = new _message_handler.MessageHandler(workerHandlerName, docId, port); - handler.postMessageTransfers = docParams.postMessageTransfers; + const enumerableProperties = []; + + for (const property in []) { + enumerableProperties.push(property); + } + + if (enumerableProperties.length) { + throw new Error("The `Array.prototype` contains unexpected enumerable properties: " + enumerableProperties.join(", ") + "; thus breaking e.g. `for...in` iteration of `Array`s."); + } + + if (typeof ReadableStream === "undefined") { + const partialMsg = "The browser/environment lacks native support for critical " + "functionality used by the PDF.js library (e.g. `ReadableStream`); "; + + if (_is_node.isNodeJS) { + throw new Error(partialMsg + "please use a `legacy`-build instead."); + } + + throw new Error(partialMsg + "please update to a supported browser."); + } + + const docId = docParams.docId; + const docBaseUrl = docParams.docBaseUrl; + const workerHandlerName = docParams.docId + "_worker"; + let handler = new _message_handler.MessageHandler(workerHandlerName, docId, port); function ensureNotTerminated() { if (terminated) { - throw new Error('Worker was terminated'); + throw new Error("Worker was terminated"); } } @@ -276,77 +160,42 @@ var WorkerMessageHandler = { function finishWorkerTask(task) { task.finish(); - var i = WorkerTasks.indexOf(task); + const i = WorkerTasks.indexOf(task); WorkerTasks.splice(i, 1); } - function loadDocument(_x) { - return _loadDocument.apply(this, arguments); + async function loadDocument(recoveryMode) { + await pdfManager.ensureDoc("checkHeader"); + await pdfManager.ensureDoc("parseStartXRef"); + await pdfManager.ensureDoc("parse", [recoveryMode]); + await pdfManager.ensureDoc("checkFirstPage", [recoveryMode]); + await pdfManager.ensureDoc("checkLastPage", [recoveryMode]); + const isPureXfa = await pdfManager.ensureDoc("isPureXfa"); + + if (isPureXfa) { + const task = new WorkerTask("loadXfaFonts"); + startWorkerTask(task); + await Promise.all([pdfManager.loadXfaFonts(handler, task).catch(reason => {}).then(() => finishWorkerTask(task)), pdfManager.loadXfaImages()]); + } + + const [numPages, fingerprints] = await Promise.all([pdfManager.ensureDoc("numPages"), pdfManager.ensureDoc("fingerprints")]); + const htmlForXfa = isPureXfa ? await pdfManager.ensureDoc("htmlForXfa") : null; + return { + numPages, + fingerprints, + htmlForXfa + }; } - function _loadDocument() { - _loadDocument = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee(recoveryMode) { - var _ref4, _ref5, numPages, fingerprint; - - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return pdfManager.ensureDoc('checkHeader'); - - case 2: - _context.next = 4; - return pdfManager.ensureDoc('parseStartXRef'); - - case 4: - _context.next = 6; - return pdfManager.ensureDoc('parse', [recoveryMode]); - - case 6: - if (recoveryMode) { - _context.next = 9; - break; - } - - _context.next = 9; - return pdfManager.ensureDoc('checkFirstPage'); - - case 9: - _context.next = 11; - return Promise.all([pdfManager.ensureDoc('numPages'), pdfManager.ensureDoc('fingerprint')]); - - case 11: - _ref4 = _context.sent; - _ref5 = _slicedToArray(_ref4, 2); - numPages = _ref5[0]; - fingerprint = _ref5[1]; - return _context.abrupt("return", { - numPages: numPages, - fingerprint: fingerprint - }); - - case 16: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - return _loadDocument.apply(this, arguments); - } - - function getPdfManager(data, evaluatorOptions) { - var pdfManagerCapability = (0, _util.createPromiseCapability)(); - var pdfManager; - var source = data.source; + function getPdfManager(data, evaluatorOptions, enableXfa) { + const pdfManagerCapability = (0, _util.createPromiseCapability)(); + let newPdfManager; + const source = data.source; if (source.data) { try { - pdfManager = new _pdf_manager.LocalPdfManager(docId, source.data, source.password, evaluatorOptions, docBaseUrl); - pdfManagerCapability.resolve(pdfManager); + newPdfManager = new _pdf_manager.LocalPdfManager(docId, source.data, source.password, handler, evaluatorOptions, enableXfa, docBaseUrl); + pdfManagerCapability.resolve(newPdfManager); } catch (ex) { pdfManagerCapability.reject(ex); } @@ -354,7 +203,7 @@ var WorkerMessageHandler = { return pdfManagerCapability.promise; } - var pdfStream, + let pdfStream, cachedChunks = []; try { @@ -364,44 +213,44 @@ var WorkerMessageHandler = { return pdfManagerCapability.promise; } - var fullRequest = pdfStream.getFullReader(); + const fullRequest = pdfStream.getFullReader(); fullRequest.headersReady.then(function () { if (!fullRequest.isRangeSupported) { return; } - var disableAutoFetch = source.disableAutoFetch || fullRequest.isStreamingSupported; - pdfManager = new _pdf_manager.NetworkPdfManager(docId, pdfStream, { + const disableAutoFetch = source.disableAutoFetch || fullRequest.isStreamingSupported; + newPdfManager = new _pdf_manager.NetworkPdfManager(docId, pdfStream, { msgHandler: handler, password: source.password, length: fullRequest.contentLength, - disableAutoFetch: disableAutoFetch, + disableAutoFetch, rangeChunkSize: source.rangeChunkSize - }, evaluatorOptions, docBaseUrl); + }, evaluatorOptions, enableXfa, docBaseUrl); - for (var i = 0; i < cachedChunks.length; i++) { - pdfManager.sendProgressiveData(cachedChunks[i]); + for (const chunk of cachedChunks) { + newPdfManager.sendProgressiveData(chunk); } cachedChunks = []; - pdfManagerCapability.resolve(pdfManager); + pdfManagerCapability.resolve(newPdfManager); cancelXHRs = null; - })["catch"](function (reason) { + }).catch(function (reason) { pdfManagerCapability.reject(reason); cancelXHRs = null; }); - var loaded = 0; + let loaded = 0; - var flushChunks = function flushChunks() { - var pdfFile = (0, _util.arraysToBytes)(cachedChunks); + const flushChunks = function () { + const pdfFile = (0, _util.arraysToBytes)(cachedChunks); if (source.length && pdfFile.length !== source.length) { - (0, _util.warn)('reported HTTP length is different from actual'); + (0, _util.warn)("reported HTTP length is different from actual"); } try { - pdfManager = new _pdf_manager.LocalPdfManager(docId, pdfFile, source.password, evaluatorOptions, docBaseUrl); - pdfManagerCapability.resolve(pdfManager); + newPdfManager = new _pdf_manager.LocalPdfManager(docId, pdfFile, source.password, handler, evaluatorOptions, enableXfa, docBaseUrl); + pdfManagerCapability.resolve(newPdfManager); } catch (ex) { pdfManagerCapability.reject(ex); } @@ -409,13 +258,18 @@ var WorkerMessageHandler = { cachedChunks = []; }; - var readPromise = new Promise(function (resolve, reject) { - var readChunk = function readChunk(chunk) { + const readPromise = new Promise(function (resolve, reject) { + const readChunk = function (_ref) { + let { + value, + done + } = _ref; + try { ensureNotTerminated(); - if (chunk.done) { - if (!pdfManager) { + if (done) { + if (!newPdfManager) { flushChunks(); } @@ -423,20 +277,19 @@ var WorkerMessageHandler = { return; } - var data = chunk.value; - loaded += (0, _util.arrayByteLength)(data); + loaded += (0, _util.arrayByteLength)(value); if (!fullRequest.isStreamingSupported) { - handler.send('DocProgress', { - loaded: loaded, + handler.send("DocProgress", { + loaded, total: Math.max(loaded, fullRequest.contentLength || 0) }); } - if (pdfManager) { - pdfManager.sendProgressiveData(data); + if (newPdfManager) { + newPdfManager.sendProgressiveData(value); } else { - cachedChunks.push(data); + cachedChunks.push(value); } fullRequest.read().then(readChunk, reject); @@ -447,13 +300,13 @@ var WorkerMessageHandler = { fullRequest.read().then(readChunk, reject); }); - readPromise["catch"](function (e) { + readPromise.catch(function (e) { pdfManagerCapability.reject(e); cancelXHRs = null; }); - cancelXHRs = function cancelXHRs() { - pdfStream.cancelAllRequests('abort'); + cancelXHRs = function (reason) { + pdfStream.cancelAllRequests(reason); }; return pdfManagerCapability.promise; @@ -462,43 +315,42 @@ var WorkerMessageHandler = { function setupDoc(data) { function onSuccess(doc) { ensureNotTerminated(); - handler.send('GetDoc', { + handler.send("GetDoc", { pdfInfo: doc }); } - function onFailure(e) { + function onFailure(ex) { ensureNotTerminated(); - if (e instanceof _util.PasswordException) { - var task = new WorkerTask('PasswordException: response ' + e.code); + if (ex instanceof _util.PasswordException) { + const task = new WorkerTask(`PasswordException: response ${ex.code}`); startWorkerTask(task); - handler.sendWithPromise('PasswordRequest', e).then(function (data) { + handler.sendWithPromise("PasswordRequest", ex).then(function (_ref2) { + let { + password + } = _ref2; finishWorkerTask(task); - pdfManager.updatePassword(data.password); + pdfManager.updatePassword(password); pdfManagerReady(); - })["catch"](function (boundException) { + }).catch(function () { finishWorkerTask(task); - handler.send('PasswordException', boundException); - }.bind(null, e)); - } else if (e instanceof _util.InvalidPDFException) { - handler.send('InvalidPDF', e); - } else if (e instanceof _util.MissingPDFException) { - handler.send('MissingPDF', e); - } else if (e instanceof _util.UnexpectedResponseException) { - handler.send('UnexpectedResponse', e); + handler.send("DocException", ex); + }); + } else if (ex instanceof _util.InvalidPDFException || ex instanceof _util.MissingPDFException || ex instanceof _util.UnexpectedResponseException || ex instanceof _util.UnknownErrorException) { + handler.send("DocException", ex); } else { - handler.send('UnknownError', new _util.UnknownErrorException(e.message, e.toString())); + handler.send("DocException", new _util.UnknownErrorException(ex.message, ex.toString())); } } function pdfManagerReady() { ensureNotTerminated(); - loadDocument(false).then(onSuccess, function loadFailure(ex) { + loadDocument(false).then(onSuccess, function (reason) { ensureNotTerminated(); - if (!(ex instanceof _core_utils.XRefParseException)) { - onFailure(ex); + if (!(reason instanceof _core_utils.XRefParseException)) { + onFailure(reason); return; } @@ -507,186 +359,305 @@ var WorkerMessageHandler = { ensureNotTerminated(); loadDocument(true).then(onSuccess, onFailure); }); - }, onFailure); + }); } ensureNotTerminated(); - var evaluatorOptions = { - forceDataSchema: data.disableCreateObjectURL, + const evaluatorOptions = { maxImageSize: data.maxImageSize, disableFontFace: data.disableFontFace, - nativeImageDecoderSupport: data.nativeImageDecoderSupport, ignoreErrors: data.ignoreErrors, - isEvalSupported: data.isEvalSupported + isEvalSupported: data.isEvalSupported, + fontExtraProperties: data.fontExtraProperties, + useSystemFonts: data.useSystemFonts, + cMapUrl: data.cMapUrl, + standardFontDataUrl: data.standardFontDataUrl }; - getPdfManager(data, evaluatorOptions).then(function (newPdfManager) { + getPdfManager(data, evaluatorOptions, data.enableXfa).then(function (newPdfManager) { if (terminated) { - newPdfManager.terminate(); - throw new Error('Worker was terminated'); + newPdfManager.terminate(new _util.AbortException("Worker was terminated.")); + throw new Error("Worker was terminated"); } pdfManager = newPdfManager; pdfManager.onLoadedStream().then(function (stream) { - handler.send('DataLoaded', { + handler.send("DataLoaded", { length: stream.bytes.byteLength }); }); }).then(pdfManagerReady, onFailure); } - handler.on('GetPage', function wphSetupGetPage(data) { + handler.on("GetPage", function wphSetupGetPage(data) { return pdfManager.getPage(data.pageIndex).then(function (page) { - return Promise.all([pdfManager.ensure(page, 'rotate'), pdfManager.ensure(page, 'ref'), pdfManager.ensure(page, 'userUnit'), pdfManager.ensure(page, 'view')]).then(function (_ref) { - var _ref2 = _slicedToArray(_ref, 4), - rotate = _ref2[0], - ref = _ref2[1], - userUnit = _ref2[2], - view = _ref2[3]; - + return Promise.all([pdfManager.ensure(page, "rotate"), pdfManager.ensure(page, "ref"), pdfManager.ensure(page, "userUnit"), pdfManager.ensure(page, "view")]).then(function (_ref3) { + let [rotate, ref, userUnit, view] = _ref3; return { - rotate: rotate, - ref: ref, - userUnit: userUnit, - view: view + rotate, + ref, + userUnit, + view }; }); }); }); - handler.on('GetPageIndex', function wphSetupGetPageIndex(data) { - var ref = _primitives.Ref.get(data.ref.num, data.ref.gen); + handler.on("GetPageIndex", function wphSetupGetPageIndex(data) { + const pageRef = _primitives.Ref.get(data.num, data.gen); - var catalog = pdfManager.pdfDocument.catalog; - return catalog.getPageIndex(ref); + return pdfManager.ensureCatalog("getPageIndex", [pageRef]); }); - handler.on('GetDestinations', function wphSetupGetDestinations(data) { - return pdfManager.ensureCatalog('destinations'); + handler.on("GetDestinations", function wphSetupGetDestinations(data) { + return pdfManager.ensureCatalog("destinations"); }); - handler.on('GetDestination', function wphSetupGetDestination(data) { - return pdfManager.ensureCatalog('getDestination', [data.id]); + handler.on("GetDestination", function wphSetupGetDestination(data) { + return pdfManager.ensureCatalog("getDestination", [data.id]); }); - handler.on('GetPageLabels', function wphSetupGetPageLabels(data) { - return pdfManager.ensureCatalog('pageLabels'); + handler.on("GetPageLabels", function wphSetupGetPageLabels(data) { + return pdfManager.ensureCatalog("pageLabels"); }); - handler.on('GetPageLayout', function wphSetupGetPageLayout(data) { - return pdfManager.ensureCatalog('pageLayout'); + handler.on("GetPageLayout", function wphSetupGetPageLayout(data) { + return pdfManager.ensureCatalog("pageLayout"); }); - handler.on('GetPageMode', function wphSetupGetPageMode(data) { - return pdfManager.ensureCatalog('pageMode'); + handler.on("GetPageMode", function wphSetupGetPageMode(data) { + return pdfManager.ensureCatalog("pageMode"); }); - handler.on('GetViewerPreferences', function (data) { - return pdfManager.ensureCatalog('viewerPreferences'); + handler.on("GetViewerPreferences", function (data) { + return pdfManager.ensureCatalog("viewerPreferences"); }); - handler.on('GetOpenActionDestination', function (data) { - return pdfManager.ensureCatalog('openActionDestination'); + handler.on("GetOpenAction", function (data) { + return pdfManager.ensureCatalog("openAction"); }); - handler.on('GetAttachments', function wphSetupGetAttachments(data) { - return pdfManager.ensureCatalog('attachments'); + handler.on("GetAttachments", function wphSetupGetAttachments(data) { + return pdfManager.ensureCatalog("attachments"); }); - handler.on('GetJavaScript', function wphSetupGetJavaScript(data) { - return pdfManager.ensureCatalog('javaScript'); + handler.on("GetJavaScript", function wphSetupGetJavaScript(data) { + return pdfManager.ensureCatalog("javaScript"); }); - handler.on('GetOutline', function wphSetupGetOutline(data) { - return pdfManager.ensureCatalog('documentOutline'); + handler.on("GetDocJSActions", function wphSetupGetDocJSActions(data) { + return pdfManager.ensureCatalog("jsActions"); }); - handler.on('GetPermissions', function (data) { - return pdfManager.ensureCatalog('permissions'); + handler.on("GetPageJSActions", function (_ref4) { + let { + pageIndex + } = _ref4; + return pdfManager.getPage(pageIndex).then(function (page) { + return pdfManager.ensure(page, "jsActions"); + }); }); - handler.on('GetMetadata', function wphSetupGetMetadata(data) { - return Promise.all([pdfManager.ensureDoc('documentInfo'), pdfManager.ensureCatalog('metadata')]); + handler.on("GetOutline", function wphSetupGetOutline(data) { + return pdfManager.ensureCatalog("documentOutline"); }); - handler.on('GetData', function wphSetupGetData(data) { + handler.on("GetOptionalContentConfig", function (data) { + return pdfManager.ensureCatalog("optionalContentConfig"); + }); + handler.on("GetPermissions", function (data) { + return pdfManager.ensureCatalog("permissions"); + }); + handler.on("GetMetadata", function wphSetupGetMetadata(data) { + return Promise.all([pdfManager.ensureDoc("documentInfo"), pdfManager.ensureCatalog("metadata")]); + }); + handler.on("GetMarkInfo", function wphSetupGetMarkInfo(data) { + return pdfManager.ensureCatalog("markInfo"); + }); + handler.on("GetData", function wphSetupGetData(data) { pdfManager.requestLoadedStream(); return pdfManager.onLoadedStream().then(function (stream) { return stream.bytes; }); }); - handler.on('GetStats', function wphSetupGetStats(data) { - return pdfManager.pdfDocument.xref.stats; - }); - handler.on('GetAnnotations', function (_ref3) { - var pageIndex = _ref3.pageIndex, - intent = _ref3.intent; + handler.on("GetAnnotations", function (_ref5) { + let { + pageIndex, + intent + } = _ref5; return pdfManager.getPage(pageIndex).then(function (page) { - return page.getAnnotationsData(intent); + const task = new WorkerTask(`GetAnnotations: page ${pageIndex}`); + startWorkerTask(task); + return page.getAnnotationsData(handler, task, intent).then(data => { + finishWorkerTask(task); + return data; + }, reason => { + finishWorkerTask(task); + }); }); }); - handler.on('RenderPageRequest', function wphSetupRenderPage(data) { - var pageIndex = data.pageIndex; + handler.on("GetFieldObjects", function (data) { + return pdfManager.ensureDoc("fieldObjects"); + }); + handler.on("HasJSActions", function (data) { + return pdfManager.ensureDoc("hasJSActions"); + }); + handler.on("GetCalculationOrderIds", function (data) { + return pdfManager.ensureDoc("calculationOrderIds"); + }); + handler.on("SaveDocument", function (_ref6) { + let { + isPureXfa, + numPages, + annotationStorage, + filename + } = _ref6; + pdfManager.requestLoadedStream(); + const newAnnotationsByPage = !isPureXfa ? (0, _core_utils.getNewAnnotationsMap)(annotationStorage) : null; + const promises = [pdfManager.onLoadedStream(), pdfManager.ensureCatalog("acroForm"), pdfManager.ensureCatalog("acroFormRef"), pdfManager.ensureDoc("xref"), pdfManager.ensureDoc("startXRef")]; + + if (newAnnotationsByPage) { + for (const [pageIndex, annotations] of newAnnotationsByPage) { + promises.push(pdfManager.getPage(pageIndex).then(page => { + const task = new WorkerTask(`Save (editor): page ${pageIndex}`); + return page.saveNewAnnotations(handler, task, annotations).finally(function () { + finishWorkerTask(task); + }); + })); + } + } + + if (isPureXfa) { + promises.push(pdfManager.serializeXfaData(annotationStorage)); + } else { + for (let pageIndex = 0; pageIndex < numPages; pageIndex++) { + promises.push(pdfManager.getPage(pageIndex).then(function (page) { + const task = new WorkerTask(`Save: page ${pageIndex}`); + return page.save(handler, task, annotationStorage).finally(function () { + finishWorkerTask(task); + }); + })); + } + } + + return Promise.all(promises).then(function (_ref7) { + let [stream, acroForm, acroFormRef, xref, startXRef, ...refs] = _ref7; + let newRefs = []; + let xfaData = null; + + if (isPureXfa) { + xfaData = refs[0]; + + if (!xfaData) { + return stream.bytes; + } + } else { + newRefs = refs.flat(2); + + if (newRefs.length === 0) { + return stream.bytes; + } + } + + const xfa = acroForm instanceof _primitives.Dict && acroForm.get("XFA") || null; + let xfaDatasetsRef = null; + let hasXfaDatasetsEntry = false; + + if (Array.isArray(xfa)) { + for (let i = 0, ii = xfa.length; i < ii; i += 2) { + if (xfa[i] === "datasets") { + xfaDatasetsRef = xfa[i + 1]; + acroFormRef = null; + hasXfaDatasetsEntry = true; + } + } + + if (xfaDatasetsRef === null) { + xfaDatasetsRef = xref.getNewRef(); + } + } else if (xfa) { + acroFormRef = null; + (0, _util.warn)("Unsupported XFA type."); + } + + let newXrefInfo = Object.create(null); + + if (xref.trailer) { + const infoObj = Object.create(null); + const xrefInfo = xref.trailer.get("Info") || null; + + if (xrefInfo instanceof _primitives.Dict) { + xrefInfo.forEach((key, value) => { + if (typeof value === "string") { + infoObj[key] = (0, _util.stringToPDFString)(value); + } + }); + } + + newXrefInfo = { + rootRef: xref.trailer.getRaw("Root") || null, + encryptRef: xref.trailer.getRaw("Encrypt") || null, + newRef: xref.getNewRef(), + infoRef: xref.trailer.getRaw("Info") || null, + info: infoObj, + fileIds: xref.trailer.get("ID") || null, + startXRef, + filename + }; + } + + xref.resetNewRef(); + return (0, _writer.incrementalUpdate)({ + originalData: stream.bytes, + xrefInfo: newXrefInfo, + newRefs, + xref, + hasXfa: !!xfa, + xfaDatasetsRef, + hasXfaDatasetsEntry, + acroFormRef, + acroForm, + xfaData + }); + }); + }); + handler.on("GetOperatorList", function wphSetupRenderPage(data, sink) { + const pageIndex = data.pageIndex; pdfManager.getPage(pageIndex).then(function (page) { - var task = new WorkerTask('RenderPageRequest: page ' + pageIndex); + const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`); startWorkerTask(task); - var start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0; + const start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0; page.getOperatorList({ - handler: handler, - task: task, + handler, + sink, + task, intent: data.intent, - renderInteractiveForms: data.renderInteractiveForms - }).then(function (operatorList) { + cacheKey: data.cacheKey, + annotationStorage: data.annotationStorage + }).then(function (operatorListInfo) { finishWorkerTask(task); if (start) { - (0, _util.info)("page=".concat(pageIndex + 1, " - getOperatorList: time=") + "".concat(Date.now() - start, "ms, len=").concat(operatorList.totalLength)); + (0, _util.info)(`page=${pageIndex + 1} - getOperatorList: time=` + `${Date.now() - start}ms, len=${operatorListInfo.length}`); } - }, function (e) { + + sink.close(); + }, function (reason) { finishWorkerTask(task); if (task.terminated) { return; } - handler.send('UnsupportedFeature', { - featureId: _util.UNSUPPORTED_FEATURES.unknown - }); - var minimumStackMessage = 'worker.js: while trying to getPage() and getOperatorList()'; - var wrappedException; - - if (typeof e === 'string') { - wrappedException = { - message: e, - stack: minimumStackMessage - }; - } else if (_typeof(e) === 'object') { - wrappedException = { - message: e.message || e.toString(), - stack: e.stack || minimumStackMessage - }; - } else { - wrappedException = { - message: 'Unknown exception type: ' + _typeof(e), - stack: minimumStackMessage - }; - } - - handler.send('PageError', { - pageIndex: pageIndex, - error: wrappedException, - intent: data.intent + handler.send("UnsupportedFeature", { + featureId: _util.UNSUPPORTED_FEATURES.errorOperatorList }); + sink.error(reason); }); }); - }, this); - handler.on('GetTextContent', function wphExtractText(data, sink) { - var pageIndex = data.pageIndex; - - sink.onPull = function (desiredSize) {}; - - sink.onCancel = function (reason) {}; - + }); + handler.on("GetTextContent", function wphExtractText(data, sink) { + const pageIndex = data.pageIndex; pdfManager.getPage(pageIndex).then(function (page) { - var task = new WorkerTask('GetTextContent: page ' + pageIndex); + const task = new WorkerTask("GetTextContent: page " + pageIndex); startWorkerTask(task); - var start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0; + const start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0; page.extractTextContent({ - handler: handler, - task: task, - sink: sink, - normalizeWhitespace: data.normalizeWhitespace, + handler, + task, + sink, + includeMarkedContent: data.includeMarkedContent, combineTextItems: data.combineTextItems }).then(function () { finishWorkerTask(task); if (start) { - (0, _util.info)("page=".concat(pageIndex + 1, " - getTextContent: time=") + "".concat(Date.now() - start, "ms")); + (0, _util.info)(`page=${pageIndex + 1} - getTextContent: time=` + `${Date.now() - start}ms`); } sink.close(); @@ -698,757 +669,155 @@ var WorkerMessageHandler = { } sink.error(reason); - throw reason; }); }); }); - handler.on('FontFallback', function (data) { + handler.on("GetStructTree", function wphGetStructTree(data) { + return pdfManager.getPage(data.pageIndex).then(function (page) { + return pdfManager.ensure(page, "getStructTree"); + }); + }); + handler.on("FontFallback", function (data) { return pdfManager.fontFallback(data.id, handler); }); - handler.on('Cleanup', function wphCleanup(data) { - return pdfManager.cleanup(); + handler.on("Cleanup", function wphCleanup(data) { + return pdfManager.cleanup(true); }); - handler.on('Terminate', function wphTerminate(data) { + handler.on("Terminate", function wphTerminate(data) { terminated = true; + const waitOn = []; if (pdfManager) { - pdfManager.terminate(); + pdfManager.terminate(new _util.AbortException("Worker was terminated.")); + const cleanupPromise = pdfManager.cleanup(); + waitOn.push(cleanupPromise); pdfManager = null; + } else { + (0, _cleanup_helper.clearGlobalCaches)(); } if (cancelXHRs) { - cancelXHRs(); + cancelXHRs(new _util.AbortException("Worker was terminated.")); } - (0, _primitives.clearPrimitiveCaches)(); - var waitOn = []; - WorkerTasks.forEach(function (task) { + for (const task of WorkerTasks) { waitOn.push(task.finished); task.terminate(); - }); + } + return Promise.all(waitOn).then(function () { handler.destroy(); handler = null; }); }); - handler.on('Ready', function wphReady(data) { + handler.on("Ready", function wphReady(data) { setupDoc(docParams); docParams = null; }); return workerHandlerName; - }, - initializeFromPort: function initializeFromPort(port) { - var handler = new _message_handler.MessageHandler('worker', 'main', port); - WorkerMessageHandler.setup(handler, port); - handler.send('ready', null); } -}; + + static initializeFromPort(port) { + const handler = new _message_handler.MessageHandler("worker", "main", port); + WorkerMessageHandler.setup(handler, port); + handler.send("ready", null); + } + +} + exports.WorkerMessageHandler = WorkerMessageHandler; function isMessagePort(maybePort) { - return typeof maybePort.postMessage === 'function' && 'onmessage' in maybePort; + return typeof maybePort.postMessage === "function" && "onmessage" in maybePort; } -if (typeof window === 'undefined' && !(0, _is_node["default"])() && typeof self !== 'undefined' && isMessagePort(self)) { +if (typeof window === "undefined" && !_is_node.isNodeJS && typeof self !== "undefined" && isMessagePort(self)) { WorkerMessageHandler.initializeFromPort(self); } /***/ }), /* 2 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -module.exports = __w_pdfjs_require__(3); - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(module) { - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -var runtime = function (exports) { - "use strict"; - - var Op = Object.prototype; - var hasOwn = Op.hasOwnProperty; - var undefined; - var $Symbol = typeof Symbol === "function" ? Symbol : {}; - var iteratorSymbol = $Symbol.iterator || "@@iterator"; - var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; - var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; - - function wrap(innerFn, outerFn, self, tryLocsList) { - var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; - var generator = Object.create(protoGenerator.prototype); - var context = new Context(tryLocsList || []); - generator._invoke = makeInvokeMethod(innerFn, self, context); - return generator; - } - - exports.wrap = wrap; - - function tryCatch(fn, obj, arg) { - try { - return { - type: "normal", - arg: fn.call(obj, arg) - }; - } catch (err) { - return { - type: "throw", - arg: err - }; - } - } - - var GenStateSuspendedStart = "suspendedStart"; - var GenStateSuspendedYield = "suspendedYield"; - var GenStateExecuting = "executing"; - var GenStateCompleted = "completed"; - var ContinueSentinel = {}; - - function Generator() {} - - function GeneratorFunction() {} - - function GeneratorFunctionPrototype() {} - - var IteratorPrototype = {}; - - IteratorPrototype[iteratorSymbol] = function () { - return this; - }; - - var getProto = Object.getPrototypeOf; - var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); - - if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { - IteratorPrototype = NativeIteratorPrototype; - } - - var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); - GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; - GeneratorFunctionPrototype.constructor = GeneratorFunction; - GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction"; - - function defineIteratorMethods(prototype) { - ["next", "throw", "return"].forEach(function (method) { - prototype[method] = function (arg) { - return this._invoke(method, arg); - }; - }); - } - - exports.isGeneratorFunction = function (genFun) { - var ctor = typeof genFun === "function" && genFun.constructor; - return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === "GeneratorFunction" : false; - }; - - exports.mark = function (genFun) { - if (Object.setPrototypeOf) { - Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); - } else { - genFun.__proto__ = GeneratorFunctionPrototype; - - if (!(toStringTagSymbol in genFun)) { - genFun[toStringTagSymbol] = "GeneratorFunction"; - } - } - - genFun.prototype = Object.create(Gp); - return genFun; - }; - - exports.awrap = function (arg) { - return { - __await: arg - }; - }; - - function AsyncIterator(generator) { - function invoke(method, arg, resolve, reject) { - var record = tryCatch(generator[method], generator, arg); - - if (record.type === "throw") { - reject(record.arg); - } else { - var result = record.arg; - var value = result.value; - - if (value && _typeof(value) === "object" && hasOwn.call(value, "__await")) { - return Promise.resolve(value.__await).then(function (value) { - invoke("next", value, resolve, reject); - }, function (err) { - invoke("throw", err, resolve, reject); - }); - } - - return Promise.resolve(value).then(function (unwrapped) { - result.value = unwrapped; - resolve(result); - }, function (error) { - return invoke("throw", error, resolve, reject); - }); - } - } - - var previousPromise; - - function enqueue(method, arg) { - function callInvokeWithMethodAndArg() { - return new Promise(function (resolve, reject) { - invoke(method, arg, resolve, reject); - }); - } - - return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); - } - - this._invoke = enqueue; - } - - defineIteratorMethods(AsyncIterator.prototype); - - AsyncIterator.prototype[asyncIteratorSymbol] = function () { - return this; - }; - - exports.AsyncIterator = AsyncIterator; - - exports.async = function (innerFn, outerFn, self, tryLocsList) { - var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList)); - return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { - return result.done ? result.value : iter.next(); - }); - }; - - function makeInvokeMethod(innerFn, self, context) { - var state = GenStateSuspendedStart; - return function invoke(method, arg) { - if (state === GenStateExecuting) { - throw new Error("Generator is already running"); - } - - if (state === GenStateCompleted) { - if (method === "throw") { - throw arg; - } - - return doneResult(); - } - - context.method = method; - context.arg = arg; - - while (true) { - var delegate = context.delegate; - - if (delegate) { - var delegateResult = maybeInvokeDelegate(delegate, context); - - if (delegateResult) { - if (delegateResult === ContinueSentinel) continue; - return delegateResult; - } - } - - if (context.method === "next") { - context.sent = context._sent = context.arg; - } else if (context.method === "throw") { - if (state === GenStateSuspendedStart) { - state = GenStateCompleted; - throw context.arg; - } - - context.dispatchException(context.arg); - } else if (context.method === "return") { - context.abrupt("return", context.arg); - } - - state = GenStateExecuting; - var record = tryCatch(innerFn, self, context); - - if (record.type === "normal") { - state = context.done ? GenStateCompleted : GenStateSuspendedYield; - - if (record.arg === ContinueSentinel) { - continue; - } - - return { - value: record.arg, - done: context.done - }; - } else if (record.type === "throw") { - state = GenStateCompleted; - context.method = "throw"; - context.arg = record.arg; - } - } - }; - } - - function maybeInvokeDelegate(delegate, context) { - var method = delegate.iterator[context.method]; - - if (method === undefined) { - context.delegate = null; - - if (context.method === "throw") { - if (delegate.iterator["return"]) { - context.method = "return"; - context.arg = undefined; - maybeInvokeDelegate(delegate, context); - - if (context.method === "throw") { - return ContinueSentinel; - } - } - - context.method = "throw"; - context.arg = new TypeError("The iterator does not provide a 'throw' method"); - } - - return ContinueSentinel; - } - - var record = tryCatch(method, delegate.iterator, context.arg); - - if (record.type === "throw") { - context.method = "throw"; - context.arg = record.arg; - context.delegate = null; - return ContinueSentinel; - } - - var info = record.arg; - - if (!info) { - context.method = "throw"; - context.arg = new TypeError("iterator result is not an object"); - context.delegate = null; - return ContinueSentinel; - } - - if (info.done) { - context[delegate.resultName] = info.value; - context.next = delegate.nextLoc; - - if (context.method !== "return") { - context.method = "next"; - context.arg = undefined; - } - } else { - return info; - } - - context.delegate = null; - return ContinueSentinel; - } - - defineIteratorMethods(Gp); - Gp[toStringTagSymbol] = "Generator"; - - Gp[iteratorSymbol] = function () { - return this; - }; - - Gp.toString = function () { - return "[object Generator]"; - }; - - function pushTryEntry(locs) { - var entry = { - tryLoc: locs[0] - }; - - if (1 in locs) { - entry.catchLoc = locs[1]; - } - - if (2 in locs) { - entry.finallyLoc = locs[2]; - entry.afterLoc = locs[3]; - } - - this.tryEntries.push(entry); - } - - function resetTryEntry(entry) { - var record = entry.completion || {}; - record.type = "normal"; - delete record.arg; - entry.completion = record; - } - - function Context(tryLocsList) { - this.tryEntries = [{ - tryLoc: "root" - }]; - tryLocsList.forEach(pushTryEntry, this); - this.reset(true); - } - - exports.keys = function (object) { - var keys = []; - - for (var key in object) { - keys.push(key); - } - - keys.reverse(); - return function next() { - while (keys.length) { - var key = keys.pop(); - - if (key in object) { - next.value = key; - next.done = false; - return next; - } - } - - next.done = true; - return next; - }; - }; - - function values(iterable) { - if (iterable) { - var iteratorMethod = iterable[iteratorSymbol]; - - if (iteratorMethod) { - return iteratorMethod.call(iterable); - } - - if (typeof iterable.next === "function") { - return iterable; - } - - if (!isNaN(iterable.length)) { - var i = -1, - next = function next() { - while (++i < iterable.length) { - if (hasOwn.call(iterable, i)) { - next.value = iterable[i]; - next.done = false; - return next; - } - } - - next.value = undefined; - next.done = true; - return next; - }; - - return next.next = next; - } - } - - return { - next: doneResult - }; - } - - exports.values = values; - - function doneResult() { - return { - value: undefined, - done: true - }; - } - - Context.prototype = { - constructor: Context, - reset: function reset(skipTempReset) { - this.prev = 0; - this.next = 0; - this.sent = this._sent = undefined; - this.done = false; - this.delegate = null; - this.method = "next"; - this.arg = undefined; - this.tryEntries.forEach(resetTryEntry); - - if (!skipTempReset) { - for (var name in this) { - if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) { - this[name] = undefined; - } - } - } - }, - stop: function stop() { - this.done = true; - var rootEntry = this.tryEntries[0]; - var rootRecord = rootEntry.completion; - - if (rootRecord.type === "throw") { - throw rootRecord.arg; - } - - return this.rval; - }, - dispatchException: function dispatchException(exception) { - if (this.done) { - throw exception; - } - - var context = this; - - function handle(loc, caught) { - record.type = "throw"; - record.arg = exception; - context.next = loc; - - if (caught) { - context.method = "next"; - context.arg = undefined; - } - - return !!caught; - } - - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - var record = entry.completion; - - if (entry.tryLoc === "root") { - return handle("end"); - } - - if (entry.tryLoc <= this.prev) { - var hasCatch = hasOwn.call(entry, "catchLoc"); - var hasFinally = hasOwn.call(entry, "finallyLoc"); - - if (hasCatch && hasFinally) { - if (this.prev < entry.catchLoc) { - return handle(entry.catchLoc, true); - } else if (this.prev < entry.finallyLoc) { - return handle(entry.finallyLoc); - } - } else if (hasCatch) { - if (this.prev < entry.catchLoc) { - return handle(entry.catchLoc, true); - } - } else if (hasFinally) { - if (this.prev < entry.finallyLoc) { - return handle(entry.finallyLoc); - } - } else { - throw new Error("try statement without catch or finally"); - } - } - } - }, - abrupt: function abrupt(type, arg) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { - var finallyEntry = entry; - break; - } - } - - if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) { - finallyEntry = null; - } - - var record = finallyEntry ? finallyEntry.completion : {}; - record.type = type; - record.arg = arg; - - if (finallyEntry) { - this.method = "next"; - this.next = finallyEntry.finallyLoc; - return ContinueSentinel; - } - - return this.complete(record); - }, - complete: function complete(record, afterLoc) { - if (record.type === "throw") { - throw record.arg; - } - - if (record.type === "break" || record.type === "continue") { - this.next = record.arg; - } else if (record.type === "return") { - this.rval = this.arg = record.arg; - this.method = "return"; - this.next = "end"; - } else if (record.type === "normal" && afterLoc) { - this.next = afterLoc; - } - - return ContinueSentinel; - }, - finish: function finish(finallyLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.finallyLoc === finallyLoc) { - this.complete(entry.completion, entry.afterLoc); - resetTryEntry(entry); - return ContinueSentinel; - } - } - }, - "catch": function _catch(tryLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.tryLoc === tryLoc) { - var record = entry.completion; - - if (record.type === "throw") { - var thrown = record.arg; - resetTryEntry(entry); - } - - return thrown; - } - } - - throw new Error("illegal catch attempt"); - }, - delegateYield: function delegateYield(iterable, resultName, nextLoc) { - this.delegate = { - iterator: values(iterable), - resultName: resultName, - nextLoc: nextLoc - }; - - if (this.method === "next") { - this.arg = undefined; - } - - return ContinueSentinel; - } - }; - return exports; -}(( false ? undefined : _typeof(module)) === "object" ? module.exports : {}); - -try { - regeneratorRuntime = runtime; -} catch (accidentalStrictMode) { - Function("r", "regeneratorRuntime = r")(runtime); -} -/* WEBPACK VAR INJECTION */}.call(this, __w_pdfjs_require__(4)(module))) - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -module.exports = function (module) { - if (!module.webpackPolyfill) { - module.deprecate = function () {}; - - module.paths = []; - if (!module.children) module.children = []; - Object.defineProperty(module, "loaded", { - enumerable: true, - get: function get() { - return module.l; - } - }); - Object.defineProperty(module, "id", { - enumerable: true, - get: function get() { - return module.i; - } - }); - module.webpackPolyfill = 1; - } - - return module; -}; - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); +exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.LINE_FACTOR = exports.LINE_DESCENT_FACTOR = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationEditorType = exports.AnnotationEditorPrefix = exports.AnnotationEditorParamsType = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; exports.arrayByteLength = arrayByteLength; exports.arraysToBytes = arraysToBytes; exports.assert = assert; exports.bytesToString = bytesToString; exports.createPromiseCapability = createPromiseCapability; +exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.escapeString = escapeString; +exports.getModificationDate = getModificationDate; exports.getVerbosityLevel = getVerbosityLevel; exports.info = info; exports.isArrayBuffer = isArrayBuffer; exports.isArrayEqual = isArrayEqual; -exports.isBool = isBool; -exports.isEmptyObj = isEmptyObj; -exports.isNum = isNum; -exports.isString = isString; -exports.isSpace = isSpace; -exports.isSameOrigin = isSameOrigin; -exports.createValidAbsoluteUrl = createValidAbsoluteUrl; -exports.isLittleEndian = isLittleEndian; -exports.isEvalSupported = isEvalSupported; -exports.log2 = log2; -exports.readInt8 = readInt8; -exports.readUint16 = readUint16; -exports.readUint32 = readUint32; -exports.removeNullCharacters = removeNullCharacters; +exports.isAscii = isAscii; +exports.objectFromMap = objectFromMap; +exports.objectSize = objectSize; exports.setVerbosityLevel = setVerbosityLevel; exports.shadow = shadow; exports.string32 = string32; exports.stringToBytes = stringToBytes; exports.stringToPDFString = stringToPDFString; +exports.stringToUTF16BEString = stringToUTF16BEString; exports.stringToUTF8String = stringToUTF8String; +exports.unreachable = unreachable; exports.utf8StringToString = utf8StringToString; exports.warn = warn; -exports.unreachable = unreachable; -Object.defineProperty(exports, "ReadableStream", { - enumerable: true, - get: function get() { - return _streams_polyfill.ReadableStream; - } -}); -Object.defineProperty(exports, "URL", { - enumerable: true, - get: function get() { - return _url_polyfill.URL; - } -}); -exports.createObjectURL = exports.FormatError = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.NativeImageDecoding = exports.MissingPDFException = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = void 0; -__w_pdfjs_require__(6); +__w_pdfjs_require__(3); -var _streams_polyfill = __w_pdfjs_require__(147); - -var _url_polyfill = __w_pdfjs_require__(149); - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; +const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; exports.IDENTITY_MATRIX = IDENTITY_MATRIX; -var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; +const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; -var NativeImageDecoding = { - NONE: 'none', - DECODE: 'decode', - DISPLAY: 'display' +const LINE_FACTOR = 1.35; +exports.LINE_FACTOR = LINE_FACTOR; +const LINE_DESCENT_FACTOR = 0.35; +exports.LINE_DESCENT_FACTOR = LINE_DESCENT_FACTOR; +const RenderingIntentFlag = { + ANY: 0x01, + DISPLAY: 0x02, + PRINT: 0x04, + ANNOTATIONS_FORMS: 0x10, + ANNOTATIONS_STORAGE: 0x20, + ANNOTATIONS_DISABLE: 0x40, + OPLIST: 0x100 }; -exports.NativeImageDecoding = NativeImageDecoding; -var PermissionFlag = { +exports.RenderingIntentFlag = RenderingIntentFlag; +const AnnotationMode = { + DISABLE: 0, + ENABLE: 1, + ENABLE_FORMS: 2, + ENABLE_STORAGE: 3 +}; +exports.AnnotationMode = AnnotationMode; +const AnnotationEditorPrefix = "pdfjs_internal_editor_"; +exports.AnnotationEditorPrefix = AnnotationEditorPrefix; +const AnnotationEditorType = { + DISABLE: -1, + NONE: 0, + FREETEXT: 3, + INK: 15 +}; +exports.AnnotationEditorType = AnnotationEditorType; +const AnnotationEditorParamsType = { + FREETEXT_SIZE: 1, + FREETEXT_COLOR: 2, + FREETEXT_OPACITY: 3, + INK_COLOR: 11, + INK_THICKNESS: 12, + INK_OPACITY: 13 +}; +exports.AnnotationEditorParamsType = AnnotationEditorParamsType; +const PermissionFlag = { PRINT: 0x04, MODIFY_CONTENTS: 0x08, COPY: 0x10, @@ -1459,7 +828,7 @@ var PermissionFlag = { PRINT_HIGH_QUALITY: 0x800 }; exports.PermissionFlag = PermissionFlag; -var TextRenderingMode = { +const TextRenderingMode = { FILL: 0, STROKE: 1, FILL_STROKE: 2, @@ -1472,13 +841,13 @@ var TextRenderingMode = { ADD_TO_PATH_FLAG: 4 }; exports.TextRenderingMode = TextRenderingMode; -var ImageKind = { +const ImageKind = { GRAYSCALE_1BPP: 1, RGB_24BPP: 2, RGBA_32BPP: 3 }; exports.ImageKind = ImageKind; -var AnnotationType = { +const AnnotationType = { TEXT: 1, LINK: 2, FREETEXT: 3, @@ -1507,7 +876,30 @@ var AnnotationType = { REDACT: 26 }; exports.AnnotationType = AnnotationType; -var AnnotationFlag = { +const AnnotationStateModelType = { + MARKED: "Marked", + REVIEW: "Review" +}; +exports.AnnotationStateModelType = AnnotationStateModelType; +const AnnotationMarkedState = { + MARKED: "Marked", + UNMARKED: "Unmarked" +}; +exports.AnnotationMarkedState = AnnotationMarkedState; +const AnnotationReviewState = { + ACCEPTED: "Accepted", + REJECTED: "Rejected", + CANCELLED: "Cancelled", + COMPLETED: "Completed", + NONE: "None" +}; +exports.AnnotationReviewState = AnnotationReviewState; +const AnnotationReplyType = { + GROUP: "Group", + REPLY: "R" +}; +exports.AnnotationReplyType = AnnotationReplyType; +const AnnotationFlag = { INVISIBLE: 0x01, HIDDEN: 0x02, PRINT: 0x04, @@ -1520,7 +912,7 @@ var AnnotationFlag = { LOCKEDCONTENTS: 0x200 }; exports.AnnotationFlag = AnnotationFlag; -var AnnotationFieldFlag = { +const AnnotationFieldFlag = { READONLY: 0x0000001, REQUIRED: 0x0000002, NOEXPORT: 0x0000004, @@ -1542,7 +934,7 @@ var AnnotationFieldFlag = { COMMITONSELCHANGE: 0x4000000 }; exports.AnnotationFieldFlag = AnnotationFieldFlag; -var AnnotationBorderStyleType = { +const AnnotationBorderStyleType = { SOLID: 1, DASHED: 2, BEVELED: 3, @@ -1550,46 +942,77 @@ var AnnotationBorderStyleType = { UNDERLINE: 5 }; exports.AnnotationBorderStyleType = AnnotationBorderStyleType; -var StreamType = { - UNKNOWN: 0, - FLATE: 1, - LZW: 2, - DCT: 3, - JPX: 4, - JBIG: 5, - A85: 6, - AHX: 7, - CCF: 8, - RL: 9 +const AnnotationActionEventType = { + E: "Mouse Enter", + X: "Mouse Exit", + D: "Mouse Down", + U: "Mouse Up", + Fo: "Focus", + Bl: "Blur", + PO: "PageOpen", + PC: "PageClose", + PV: "PageVisible", + PI: "PageInvisible", + K: "Keystroke", + F: "Format", + V: "Validate", + C: "Calculate" +}; +exports.AnnotationActionEventType = AnnotationActionEventType; +const DocumentActionEventType = { + WC: "WillClose", + WS: "WillSave", + DS: "DidSave", + WP: "WillPrint", + DP: "DidPrint" +}; +exports.DocumentActionEventType = DocumentActionEventType; +const PageActionEventType = { + O: "PageOpen", + C: "PageClose" +}; +exports.PageActionEventType = PageActionEventType; +const StreamType = { + UNKNOWN: "UNKNOWN", + FLATE: "FLATE", + LZW: "LZW", + DCT: "DCT", + JPX: "JPX", + JBIG: "JBIG", + A85: "A85", + AHX: "AHX", + CCF: "CCF", + RLX: "RLX" }; exports.StreamType = StreamType; -var FontType = { - UNKNOWN: 0, - TYPE1: 1, - TYPE1C: 2, - CIDFONTTYPE0: 3, - CIDFONTTYPE0C: 4, - TRUETYPE: 5, - CIDFONTTYPE2: 6, - TYPE3: 7, - OPENTYPE: 8, - TYPE0: 9, - MMTYPE1: 10 +const FontType = { + UNKNOWN: "UNKNOWN", + TYPE1: "TYPE1", + TYPE1STANDARD: "TYPE1STANDARD", + TYPE1C: "TYPE1C", + CIDFONTTYPE0: "CIDFONTTYPE0", + CIDFONTTYPE0C: "CIDFONTTYPE0C", + TRUETYPE: "TRUETYPE", + CIDFONTTYPE2: "CIDFONTTYPE2", + TYPE3: "TYPE3", + OPENTYPE: "OPENTYPE", + TYPE0: "TYPE0", + MMTYPE1: "MMTYPE1" }; exports.FontType = FontType; -var VerbosityLevel = { +const VerbosityLevel = { ERRORS: 0, WARNINGS: 1, INFOS: 5 }; exports.VerbosityLevel = VerbosityLevel; -var CMapCompressionType = { +const CMapCompressionType = { NONE: 0, BINARY: 1, STREAM: 2 }; exports.CMapCompressionType = CMapCompressionType; -var OPS = { +const OPS = { dependency: 1, setLineWidth: 2, setLineCap: 3, @@ -1683,21 +1106,37 @@ var OPS = { constructPath: 91 }; exports.OPS = OPS; -var UNSUPPORTED_FEATURES = { - unknown: 'unknown', - forms: 'forms', - javaScript: 'javaScript', - smask: 'smask', - shadingPattern: 'shadingPattern', - font: 'font' +const UNSUPPORTED_FEATURES = { + unknown: "unknown", + forms: "forms", + javaScript: "javaScript", + signatures: "signatures", + smask: "smask", + shadingPattern: "shadingPattern", + font: "font", + errorTilingPattern: "errorTilingPattern", + errorExtGState: "errorExtGState", + errorXObject: "errorXObject", + errorFontLoadType3: "errorFontLoadType3", + errorFontState: "errorFontState", + errorFontMissing: "errorFontMissing", + errorFontTranslate: "errorFontTranslate", + errorColorSpace: "errorColorSpace", + errorOperatorList: "errorOperatorList", + errorFontToUnicode: "errorFontToUnicode", + errorFontLoadNative: "errorFontLoadNative", + errorFontBuildPath: "errorFontBuildPath", + errorFontGetPath: "errorFontGetPath", + errorMarkedContent: "errorMarkedContent", + errorContentSubStream: "errorContentSubStream" }; exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; -var PasswordResponses = { +const PasswordResponses = { NEED_PASSWORD: 1, INCORRECT_PASSWORD: 2 }; exports.PasswordResponses = PasswordResponses; -var verbosity = VerbosityLevel.WARNINGS; +let verbosity = VerbosityLevel.WARNINGS; function setVerbosityLevel(level) { if (Number.isInteger(level)) { @@ -1711,13 +1150,13 @@ function getVerbosityLevel() { function info(msg) { if (verbosity >= VerbosityLevel.INFOS) { - console.log('Info: ' + msg); + console.log(`Info: ${msg}`); } } function warn(msg) { if (verbosity >= VerbosityLevel.WARNINGS) { - console.log('Warning: ' + msg); + console.log(`Warning: ${msg}`); } } @@ -1731,32 +1170,17 @@ function assert(cond, msg) { } } -function isSameOrigin(baseUrl, otherUrl) { - try { - var base = new _url_polyfill.URL(baseUrl); - - if (!base.origin || base.origin === 'null') { - return false; - } - } catch (e) { - return false; - } - - var other = new _url_polyfill.URL(otherUrl, base); - return base.origin === other.origin; -} - function _isValidProtocol(url) { if (!url) { return false; } switch (url.protocol) { - case 'http:': - case 'https:': - case 'ftp:': - case 'mailto:': - case 'tel:': + case "http:": + case "https:": + case "ftp:": + case "mailto:": + case "tel:": return true; default: @@ -1764,13 +1188,32 @@ function _isValidProtocol(url) { } } -function createValidAbsoluteUrl(url, baseUrl) { +function createValidAbsoluteUrl(url) { + let baseUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + if (!url) { return null; } try { - var absoluteUrl = baseUrl ? new _url_polyfill.URL(url, baseUrl) : new _url_polyfill.URL(url); + if (options && typeof url === "string") { + if (options.addDefaultProtocol && url.startsWith("www.")) { + const dots = url.match(/\./g); + + if (dots && dots.length >= 2) { + url = `http://${url}`; + } + } + + if (options.tryConvertEncoding) { + try { + url = stringToUTF8String(url); + } catch (ex) {} + } + } + + const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); if (_isValidProtocol(absoluteUrl)) { return absoluteUrl; @@ -1782,7 +1225,7 @@ function createValidAbsoluteUrl(url, baseUrl) { function shadow(obj, prop, value) { Object.defineProperty(obj, prop, { - value: value, + value, enumerable: true, configurable: true, writable: false @@ -1790,137 +1233,122 @@ function shadow(obj, prop, value) { return value; } -var PasswordException = function PasswordExceptionClosure() { - function PasswordException(msg, code) { - this.name = 'PasswordException'; - this.message = msg; +const BaseException = function BaseExceptionClosure() { + function BaseException(message, name) { + if (this.constructor === BaseException) { + unreachable("Cannot initialize BaseException."); + } + + this.message = message; + this.name = name; + } + + BaseException.prototype = new Error(); + BaseException.constructor = BaseException; + return BaseException; +}(); + +exports.BaseException = BaseException; + +class PasswordException extends BaseException { + constructor(msg, code) { + super(msg, "PasswordException"); this.code = code; } - PasswordException.prototype = new Error(); - PasswordException.constructor = PasswordException; - return PasswordException; -}(); +} exports.PasswordException = PasswordException; -var UnknownErrorException = function UnknownErrorExceptionClosure() { - function UnknownErrorException(msg, details) { - this.name = 'UnknownErrorException'; - this.message = msg; +class UnknownErrorException extends BaseException { + constructor(msg, details) { + super(msg, "UnknownErrorException"); this.details = details; } - UnknownErrorException.prototype = new Error(); - UnknownErrorException.constructor = UnknownErrorException; - return UnknownErrorException; -}(); +} exports.UnknownErrorException = UnknownErrorException; -var InvalidPDFException = function InvalidPDFExceptionClosure() { - function InvalidPDFException(msg) { - this.name = 'InvalidPDFException'; - this.message = msg; +class InvalidPDFException extends BaseException { + constructor(msg) { + super(msg, "InvalidPDFException"); } - InvalidPDFException.prototype = new Error(); - InvalidPDFException.constructor = InvalidPDFException; - return InvalidPDFException; -}(); +} exports.InvalidPDFException = InvalidPDFException; -var MissingPDFException = function MissingPDFExceptionClosure() { - function MissingPDFException(msg) { - this.name = 'MissingPDFException'; - this.message = msg; +class MissingPDFException extends BaseException { + constructor(msg) { + super(msg, "MissingPDFException"); } - MissingPDFException.prototype = new Error(); - MissingPDFException.constructor = MissingPDFException; - return MissingPDFException; -}(); +} exports.MissingPDFException = MissingPDFException; -var UnexpectedResponseException = function UnexpectedResponseExceptionClosure() { - function UnexpectedResponseException(msg, status) { - this.name = 'UnexpectedResponseException'; - this.message = msg; +class UnexpectedResponseException extends BaseException { + constructor(msg, status) { + super(msg, "UnexpectedResponseException"); this.status = status; } - UnexpectedResponseException.prototype = new Error(); - UnexpectedResponseException.constructor = UnexpectedResponseException; - return UnexpectedResponseException; -}(); +} exports.UnexpectedResponseException = UnexpectedResponseException; -var FormatError = function FormatErrorClosure() { - function FormatError(msg) { - this.message = msg; +class FormatError extends BaseException { + constructor(msg) { + super(msg, "FormatError"); } - FormatError.prototype = new Error(); - FormatError.prototype.name = 'FormatError'; - FormatError.constructor = FormatError; - return FormatError; -}(); +} exports.FormatError = FormatError; -var AbortException = function AbortExceptionClosure() { - function AbortException(msg) { - this.name = 'AbortException'; - this.message = msg; +class AbortException extends BaseException { + constructor(msg) { + super(msg, "AbortException"); } - AbortException.prototype = new Error(); - AbortException.constructor = AbortException; - return AbortException; -}(); - -exports.AbortException = AbortException; -var NullCharactersRegExp = /\x00/g; - -function removeNullCharacters(str) { - if (typeof str !== 'string') { - warn('The argument for removeNullCharacters must be a string.'); - return str; - } - - return str.replace(NullCharactersRegExp, ''); } +exports.AbortException = AbortException; + function bytesToString(bytes) { - assert(bytes !== null && _typeof(bytes) === 'object' && bytes.length !== undefined, 'Invalid argument for bytesToString'); - var length = bytes.length; - var MAX_ARGUMENT_COUNT = 8192; + if (typeof bytes !== "object" || bytes === null || bytes.length === undefined) { + unreachable("Invalid argument for bytesToString"); + } + + const length = bytes.length; + const MAX_ARGUMENT_COUNT = 8192; if (length < MAX_ARGUMENT_COUNT) { return String.fromCharCode.apply(null, bytes); } - var strBuf = []; + const strBuf = []; - for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) { - var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); - var chunk = bytes.subarray(i, chunkEnd); + for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) { + const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); + const chunk = bytes.subarray(i, chunkEnd); strBuf.push(String.fromCharCode.apply(null, chunk)); } - return strBuf.join(''); + return strBuf.join(""); } function stringToBytes(str) { - assert(typeof str === 'string', 'Invalid argument for stringToBytes'); - var length = str.length; - var bytes = new Uint8Array(length); + if (typeof str !== "string") { + unreachable("Invalid argument for stringToBytes"); + } - for (var i = 0; i < length; ++i) { - bytes[i] = str.charCodeAt(i) & 0xFF; + const length = str.length; + const bytes = new Uint8Array(length); + + for (let i = 0; i < length; ++i) { + bytes[i] = str.charCodeAt(i) & 0xff; } return bytes; @@ -1931,41 +1359,41 @@ function arrayByteLength(arr) { return arr.length; } - assert(arr.byteLength !== undefined); - return arr.byteLength; + if (arr.byteLength !== undefined) { + return arr.byteLength; + } + + unreachable("Invalid argument for arrayByteLength"); } function arraysToBytes(arr) { - if (arr.length === 1 && arr[0] instanceof Uint8Array) { + const length = arr.length; + + if (length === 1 && arr[0] instanceof Uint8Array) { return arr[0]; } - var resultLength = 0; - var i, - ii = arr.length; - var item, itemLength; + let resultLength = 0; - for (i = 0; i < ii; i++) { - item = arr[i]; - itemLength = arrayByteLength(item); - resultLength += itemLength; + for (let i = 0; i < length; i++) { + resultLength += arrayByteLength(arr[i]); } - var pos = 0; - var data = new Uint8Array(resultLength); + let pos = 0; + const data = new Uint8Array(resultLength); - for (i = 0; i < ii; i++) { - item = arr[i]; + for (let i = 0; i < length; i++) { + let item = arr[i]; if (!(item instanceof Uint8Array)) { - if (typeof item === 'string') { + if (typeof item === "string") { item = stringToBytes(item); } else { item = new Uint8Array(item); } } - itemLength = item.byteLength; + const itemLength = item.byteLength; data.set(item, pos); pos += itemLength; } @@ -1977,103 +1405,162 @@ function string32(value) { return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); } -function log2(x) { - if (x <= 0) { - return 0; +function objectSize(obj) { + return Object.keys(obj).length; +} + +function objectFromMap(map) { + const obj = Object.create(null); + + for (const [key, value] of map) { + obj[key] = value; } - return Math.ceil(Math.log2(x)); -} - -function readInt8(data, start) { - return data[start] << 24 >> 24; -} - -function readUint16(data, offset) { - return data[offset] << 8 | data[offset + 1]; -} - -function readUint32(data, offset) { - return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0; + return obj; } function isLittleEndian() { - var buffer8 = new Uint8Array(4); + const buffer8 = new Uint8Array(4); buffer8[0] = 1; - var view32 = new Uint32Array(buffer8.buffer, 0, 1); + const view32 = new Uint32Array(buffer8.buffer, 0, 1); return view32[0] === 1; } function isEvalSupported() { try { - new Function(''); + new Function(""); return true; } catch (e) { return false; } } -var Util = function UtilClosure() { - function Util() {} +class FeatureTest { + static get isLittleEndian() { + return shadow(this, "isLittleEndian", isLittleEndian()); + } - var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')']; + static get isEvalSupported() { + return shadow(this, "isEvalSupported", isEvalSupported()); + } - Util.makeCssRgb = function Util_makeCssRgb(r, g, b) { - rgbBuf[1] = r; - rgbBuf[3] = g; - rgbBuf[5] = b; - return rgbBuf.join(''); - }; + static get isOffscreenCanvasSupported() { + return shadow(this, "isOffscreenCanvasSupported", typeof OffscreenCanvas !== "undefined"); + } - Util.transform = function Util_transform(m1, m2) { +} + +exports.FeatureTest = FeatureTest; +const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0")); + +class Util { + static makeHexColor(r, g, b) { + return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`; + } + + static scaleMinMax(transform, minMax) { + let temp; + + if (transform[0]) { + if (transform[0] < 0) { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + } + + minMax[0] *= transform[0]; + minMax[1] *= transform[0]; + + if (transform[3] < 0) { + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + } + + minMax[2] *= transform[3]; + minMax[3] *= transform[3]; + } else { + temp = minMax[0]; + minMax[0] = minMax[2]; + minMax[2] = temp; + temp = minMax[1]; + minMax[1] = minMax[3]; + minMax[3] = temp; + + if (transform[1] < 0) { + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + } + + minMax[2] *= transform[1]; + minMax[3] *= transform[1]; + + if (transform[2] < 0) { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + } + + minMax[0] *= transform[2]; + minMax[1] *= transform[2]; + } + + minMax[0] += transform[4]; + minMax[1] += transform[4]; + minMax[2] += transform[5]; + minMax[3] += transform[5]; + } + + static transform(m1, m2) { return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]]; - }; + } - Util.applyTransform = function Util_applyTransform(p, m) { - var xt = p[0] * m[0] + p[1] * m[2] + m[4]; - var yt = p[0] * m[1] + p[1] * m[3] + m[5]; + static applyTransform(p, m) { + const xt = p[0] * m[0] + p[1] * m[2] + m[4]; + const yt = p[0] * m[1] + p[1] * m[3] + m[5]; return [xt, yt]; - }; + } - Util.applyInverseTransform = function Util_applyInverseTransform(p, m) { - var d = m[0] * m[3] - m[1] * m[2]; - var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; - var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; + static applyInverseTransform(p, m) { + const d = m[0] * m[3] - m[1] * m[2]; + const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; + const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; return [xt, yt]; - }; + } - Util.getAxialAlignedBoundingBox = function Util_getAxialAlignedBoundingBox(r, m) { - var p1 = Util.applyTransform(r, m); - var p2 = Util.applyTransform(r.slice(2, 4), m); - var p3 = Util.applyTransform([r[0], r[3]], m); - var p4 = Util.applyTransform([r[2], r[1]], m); + static getAxialAlignedBoundingBox(r, m) { + const p1 = Util.applyTransform(r, m); + const p2 = Util.applyTransform(r.slice(2, 4), m); + const p3 = Util.applyTransform([r[0], r[3]], m); + const p4 = Util.applyTransform([r[2], r[1]], m); return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])]; - }; + } - Util.inverseTransform = function Util_inverseTransform(m) { - var d = m[0] * m[3] - m[1] * m[2]; + static inverseTransform(m) { + const d = m[0] * m[3] - m[1] * m[2]; return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d]; - }; + } - Util.apply3dTransform = function Util_apply3dTransform(m, v) { + static apply3dTransform(m, v) { return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]]; - }; + } - Util.singularValueDecompose2dScale = function Util_singularValueDecompose2dScale(m) { - var transpose = [m[0], m[2], m[1], m[3]]; - var a = m[0] * transpose[0] + m[1] * transpose[2]; - var b = m[0] * transpose[1] + m[1] * transpose[3]; - var c = m[2] * transpose[0] + m[3] * transpose[2]; - var d = m[2] * transpose[1] + m[3] * transpose[3]; - var first = (a + d) / 2; - var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2; - var sx = first + second || 1; - var sy = first - second || 1; + static singularValueDecompose2dScale(m) { + const transpose = [m[0], m[2], m[1], m[3]]; + const a = m[0] * transpose[0] + m[1] * transpose[2]; + const b = m[0] * transpose[1] + m[1] * transpose[3]; + const c = m[2] * transpose[0] + m[3] * transpose[2]; + const d = m[2] * transpose[1] + m[3] * transpose[3]; + const first = (a + d) / 2; + const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2; + const sx = first + second || 1; + const sy = first - second || 1; return [Math.sqrt(sx), Math.sqrt(sy)]; - }; + } - Util.normalizeRect = function Util_normalizeRect(rect) { - var r = rect.slice(0); + static normalizeRect(rect) { + const r = rect.slice(0); if (rect[0] > rect[2]) { r[0] = rect[2]; @@ -2086,59 +1573,160 @@ var Util = function UtilClosure() { } return r; - }; + } - Util.intersect = function Util_intersect(rect1, rect2) { - function compare(a, b) { - return a - b; + static intersect(rect1, rect2) { + const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2])); + const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2])); + + if (xLow > xHigh) { + return null; } - var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare), - orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare), - result = []; - rect1 = Util.normalizeRect(rect1); - rect2 = Util.normalizeRect(rect2); + const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3])); + const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3])); - if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) { - result[0] = orderedX[1]; - result[2] = orderedX[2]; - } else { - return false; + if (yLow > yHigh) { + return null; } - if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) { - result[1] = orderedY[1]; - result[3] = orderedY[2]; - } else { - return false; + return [xLow, yLow, xHigh, yHigh]; + } + + static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) { + const tvalues = [], + bounds = [[], []]; + let a, b, c, t, t1, t2, b2ac, sqrtb2ac; + + for (let i = 0; i < 2; ++i) { + if (i === 0) { + b = 6 * x0 - 12 * x1 + 6 * x2; + a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3; + c = 3 * x1 - 3 * x0; + } else { + b = 6 * y0 - 12 * y1 + 6 * y2; + a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3; + c = 3 * y1 - 3 * y0; + } + + if (Math.abs(a) < 1e-12) { + if (Math.abs(b) < 1e-12) { + continue; + } + + t = -c / b; + + if (0 < t && t < 1) { + tvalues.push(t); + } + + continue; + } + + b2ac = b * b - 4 * c * a; + sqrtb2ac = Math.sqrt(b2ac); + + if (b2ac < 0) { + continue; + } + + t1 = (-b + sqrtb2ac) / (2 * a); + + if (0 < t1 && t1 < 1) { + tvalues.push(t1); + } + + t2 = (-b - sqrtb2ac) / (2 * a); + + if (0 < t2 && t2 < 1) { + tvalues.push(t2); + } } - return result; - }; + let j = tvalues.length, + mt; + const jlen = j; - return Util; -}(); + while (j--) { + t = tvalues[j]; + mt = 1 - t; + bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3; + bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3; + } + + bounds[0][jlen] = x0; + bounds[1][jlen] = y0; + bounds[0][jlen + 1] = x3; + bounds[1][jlen + 1] = y3; + bounds[0].length = bounds[1].length = jlen + 2; + return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])]; + } + +} exports.Util = Util; -var PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC]; +const PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]; function stringToPDFString(str) { - var i, - n = str.length, - strBuf = []; + if (str[0] >= "\xEF") { + let encoding; - if (str[0] === '\xFE' && str[1] === '\xFF') { - for (i = 2; i < n; i += 2) { - strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1))); + if (str[0] === "\xFE" && str[1] === "\xFF") { + encoding = "utf-16be"; + } else if (str[0] === "\xFF" && str[1] === "\xFE") { + encoding = "utf-16le"; + } else if (str[0] === "\xEF" && str[1] === "\xBB" && str[2] === "\xBF") { + encoding = "utf-8"; } - } else { - for (i = 0; i < n; ++i) { - var code = PDFStringTranslateTable[str.charCodeAt(i)]; - strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); + + if (encoding) { + try { + const decoder = new TextDecoder(encoding, { + fatal: true + }); + const buffer = stringToBytes(str); + return decoder.decode(buffer); + } catch (ex) { + warn(`stringToPDFString: "${ex}".`); + } } } - return strBuf.join(''); + const strBuf = []; + + for (let i = 0, ii = str.length; i < ii; i++) { + const code = PDFStringTranslateTable[str.charCodeAt(i)]; + strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); + } + + return strBuf.join(""); +} + +function escapeString(str) { + return str.replace(/([()\\\n\r])/g, match => { + if (match === "\n") { + return "\\n"; + } else if (match === "\r") { + return "\\r"; + } + + return `\\${match}`; + }); +} + +function isAscii(str) { + return /^[\x00-\x7F]*$/.test(str); +} + +function stringToUTF16BEString(str) { + const buf = ["\xFE\xFF"]; + + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.charCodeAt(i); + buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff)); + } + + return buf.join(""); } function stringToUTF8String(str) { @@ -2149,28 +1737,8 @@ function utf8StringToString(str) { return unescape(encodeURIComponent(str)); } -function isEmptyObj(obj) { - for (var key in obj) { - return false; - } - - return true; -} - -function isBool(v) { - return typeof v === 'boolean'; -} - -function isNum(v) { - return typeof v === 'number'; -} - -function isString(v) { - return typeof v === 'string'; -} - function isArrayBuffer(v) { - return _typeof(v) === 'object' && v !== null && v.byteLength !== undefined; + return typeof v === "object" && v !== null && v.byteLength !== undefined; } function isArrayEqual(arr1, arr2) { @@ -2178,22 +1746,29 @@ function isArrayEqual(arr1, arr2) { return false; } - return arr1.every(function (element, index) { - return element === arr2[index]; - }); + for (let i = 0, ii = arr1.length; i < ii; i++) { + if (arr1[i] !== arr2[i]) { + return false; + } + } + + return true; } -function isSpace(ch) { - return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A; +function getModificationDate() { + let date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date(); + const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")]; + return buffer.join(""); } function createPromiseCapability() { - var capability = Object.create(null); - var isSettled = false; - Object.defineProperty(capability, 'settled', { - get: function get() { + const capability = Object.create(null); + let isSettled = false; + Object.defineProperty(capability, "settled", { + get() { return isSettled; } + }); capability.promise = new Promise(function (resolve, reject) { capability.resolve = function (data) { @@ -2209,8806 +1784,3428 @@ function createPromiseCapability() { return capability; } -var createObjectURL = function createObjectURLClosure() { - var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - return function createObjectURL(data, contentType) { - var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - if (!forceDataSchema && _url_polyfill.URL.createObjectURL) { - var blob = new Blob([data], { - type: contentType - }); - return _url_polyfill.URL.createObjectURL(blob); - } - - var buffer = 'data:' + contentType + ';base64,'; - - for (var i = 0, ii = data.length; i < ii; i += 3) { - var b1 = data[i] & 0xFF; - var b2 = data[i + 1] & 0xFF; - var b3 = data[i + 2] & 0xFF; - var d1 = b1 >> 2, - d2 = (b1 & 3) << 4 | b2 >> 4; - var d3 = i + 1 < ii ? (b2 & 0xF) << 2 | b3 >> 6 : 64; - var d4 = i + 2 < ii ? b3 & 0x3F : 64; - buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4]; - } - - return buffer; - }; -}(); - -exports.createObjectURL = createObjectURL; - /***/ }), -/* 6 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 3 */ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } +var _is_node = __w_pdfjs_require__(4); -var globalScope = __w_pdfjs_require__(7); - -if (!globalScope._pdfjsCompatibilityChecked) { - globalScope._pdfjsCompatibilityChecked = true; - - var isNodeJS = __w_pdfjs_require__(8); - - var hasDOM = (typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object' && (typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object'; +if (!globalThis._pdfjsCompatibilityChecked) { + globalThis._pdfjsCompatibilityChecked = true; (function checkNodeBtoa() { - if (globalScope.btoa || !isNodeJS()) { + if (globalThis.btoa || !_is_node.isNodeJS) { return; } - globalScope.btoa = function (chars) { - return Buffer.from(chars, 'binary').toString('base64'); + globalThis.btoa = function (chars) { + return Buffer.from(chars, "binary").toString("base64"); }; })(); (function checkNodeAtob() { - if (globalScope.atob || !isNodeJS()) { + if (globalThis.atob || !_is_node.isNodeJS) { return; } - globalScope.atob = function (input) { - return Buffer.from(input, 'base64').toString('binary'); + globalThis.atob = function (input) { + return Buffer.from(input, "base64").toString("binary"); }; })(); - (function checkChildNodeRemove() { - if (!hasDOM) { + (function checkDOMMatrix() { + if (globalThis.DOMMatrix || !_is_node.isNodeJS) { return; } - if (typeof Element.prototype.remove !== 'undefined') { - return; - } - - Element.prototype.remove = function () { - if (this.parentNode) { - this.parentNode.removeChild(this); - } - }; + globalThis.DOMMatrix = require("dommatrix/dist/dommatrix.js"); })(); - (function checkDOMTokenListAddRemove() { - if (!hasDOM || isNodeJS()) { + (function checkReadableStream() { + if (globalThis.ReadableStream || !_is_node.isNodeJS) { return; } - var div = document.createElement('div'); - div.classList.add('testOne', 'testTwo'); - - if (div.classList.contains('testOne') === true && div.classList.contains('testTwo') === true) { - return; - } - - var OriginalDOMTokenListAdd = DOMTokenList.prototype.add; - var OriginalDOMTokenListRemove = DOMTokenList.prototype.remove; - - DOMTokenList.prototype.add = function () { - for (var _len = arguments.length, tokens = new Array(_len), _key = 0; _key < _len; _key++) { - tokens[_key] = arguments[_key]; - } - - for (var _i = 0, _tokens = tokens; _i < _tokens.length; _i++) { - var token = _tokens[_i]; - OriginalDOMTokenListAdd.call(this, token); - } - }; - - DOMTokenList.prototype.remove = function () { - for (var _len2 = arguments.length, tokens = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - tokens[_key2] = arguments[_key2]; - } - - for (var _i2 = 0, _tokens2 = tokens; _i2 < _tokens2.length; _i2++) { - var token = _tokens2[_i2]; - OriginalDOMTokenListRemove.call(this, token); - } - }; + globalThis.ReadableStream = require("web-streams-polyfill/dist/ponyfill.js").ReadableStream; })(); - (function checkDOMTokenListToggle() { - if (!hasDOM || isNodeJS()) { + (function checkArrayAt() { + if (Array.prototype.at) { return; } - var div = document.createElement('div'); - - if (div.classList.toggle('test', 0) === false) { - return; - } - - DOMTokenList.prototype.toggle = function (token) { - var force = arguments.length > 1 ? !!arguments[1] : !this.contains(token); - return this[force ? 'add' : 'remove'](token), force; - }; + __w_pdfjs_require__(5); })(); - (function checkStringStartsWith() { - if (String.prototype.startsWith) { + (function checkTypedArrayAt() { + if (Uint8Array.prototype.at) { return; } - __w_pdfjs_require__(9); + __w_pdfjs_require__(77); })(); - (function checkStringEndsWith() { - if (String.prototype.endsWith) { + (function checkStructuredClone() { + if (globalThis.structuredClone) { return; } - __w_pdfjs_require__(40); - })(); - - (function checkStringIncludes() { - if (String.prototype.includes) { - return; - } - - __w_pdfjs_require__(42); - })(); - - (function checkArrayIncludes() { - if (Array.prototype.includes) { - return; - } - - __w_pdfjs_require__(44); - })(); - - (function checkArrayFrom() { - if (Array.from) { - return; - } - - __w_pdfjs_require__(51); - })(); - - (function checkObjectAssign() { - if (Object.assign) { - return; - } - - __w_pdfjs_require__(74); - })(); - - (function checkMathLog2() { - if (Math.log2) { - return; - } - - Math.log2 = __w_pdfjs_require__(79); - })(); - - (function checkNumberIsNaN() { - if (Number.isNaN) { - return; - } - - Number.isNaN = __w_pdfjs_require__(81); - })(); - - (function checkNumberIsInteger() { - if (Number.isInteger) { - return; - } - - Number.isInteger = __w_pdfjs_require__(83); - })(); - - (function checkPromise() { - if (globalScope.Promise && globalScope.Promise.prototype && globalScope.Promise.prototype["finally"]) { - return; - } - - globalScope.Promise = __w_pdfjs_require__(86); - })(); - - (function checkWeakMap() { - if (globalScope.WeakMap) { - return; - } - - globalScope.WeakMap = __w_pdfjs_require__(106); - })(); - - (function checkWeakSet() { - if (globalScope.WeakSet) { - return; - } - - globalScope.WeakSet = __w_pdfjs_require__(123); - })(); - - (function checkStringCodePointAt() { - if (String.codePointAt) { - return; - } - - String.codePointAt = __w_pdfjs_require__(127); - })(); - - (function checkStringFromCodePoint() { - if (String.fromCodePoint) { - return; - } - - String.fromCodePoint = __w_pdfjs_require__(129); - })(); - - (function checkSymbol() { - if (globalScope.Symbol) { - return; - } - - __w_pdfjs_require__(131); - })(); - - (function checkStringPadStart() { - if (String.prototype.padStart) { - return; - } - - __w_pdfjs_require__(138); - })(); - - (function checkStringPadEnd() { - if (String.prototype.padEnd) { - return; - } - - __w_pdfjs_require__(142); - })(); - - (function checkObjectValues() { - if (Object.values) { - return; - } - - Object.values = __w_pdfjs_require__(144); + __w_pdfjs_require__(87); })(); } /***/ }), -/* 7 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 4 */ +/***/ ((__unused_webpack_module, exports) => { "use strict"; -module.exports = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : {}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isNodeJS = void 0; +const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser"); +exports.isNodeJS = isNodeJS; /***/ }), -/* 8 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 5 */ +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { + +__w_pdfjs_require__(6); +var entryUnbind = __w_pdfjs_require__(76); +module.exports = entryUnbind('Array', 'at'); + +/***/ }), +/* 6 */ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; +var $ = __w_pdfjs_require__(7); +var toObject = __w_pdfjs_require__(42); +var lengthOfArrayLike = __w_pdfjs_require__(66); +var toIntegerOrInfinity = __w_pdfjs_require__(64); +var addToUnscopables = __w_pdfjs_require__(71); +$({ + target: 'Array', + proto: true +}, { + at: function at(index) { + var O = toObject(this); + var len = lengthOfArrayLike(O); + var relativeIndex = toIntegerOrInfinity(index); + var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex; + return k < 0 || k >= len ? undefined : O[k]; + } +}); +addToUnscopables('at'); -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } +/***/ }), +/* 7 */ +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -module.exports = function isNodeJS() { - return (typeof process === "undefined" ? "undefined" : _typeof(process)) === 'object' && process + '' === '[object process]' && !process.versions['nw'] && !process.versions['electron']; +var global = __w_pdfjs_require__(8); +var getOwnPropertyDescriptor = (__w_pdfjs_require__(9).f); +var createNonEnumerableProperty = __w_pdfjs_require__(46); +var defineBuiltIn = __w_pdfjs_require__(50); +var defineGlobalProperty = __w_pdfjs_require__(40); +var copyConstructorProperties = __w_pdfjs_require__(58); +var isForced = __w_pdfjs_require__(70); +module.exports = function (options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = global; + } else if (STATIC) { + target = global[TARGET] || defineGlobalProperty(TARGET, {}); + } else { + target = (global[TARGET] || {}).prototype; + } + if (target) + for (key in source) { + sourceProperty = source[key]; + if (options.dontCallGetSet) { + descriptor = getOwnPropertyDescriptor(target, key); + targetProperty = descriptor && descriptor.value; + } else + targetProperty = target[key]; + FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); + if (!FORCED && targetProperty !== undefined) { + if (typeof sourceProperty == typeof targetProperty) + continue; + copyConstructorProperties(sourceProperty, targetProperty); + } + if (options.sham || targetProperty && targetProperty.sham) { + createNonEnumerableProperty(sourceProperty, 'sham', true); + } + defineBuiltIn(target, key, sourceProperty, options); + } }; +/***/ }), +/* 8 */ +/***/ ((module) => { + +var check = function (it) { + return it && it.Math == Math && it; +}; +module.exports = check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || check(typeof self == 'object' && self) || check(typeof global == 'object' && global) || (function () { + return this; +}()) || Function('return this')(); + /***/ }), /* 9 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(10); - -module.exports = __w_pdfjs_require__(13).String.startsWith; +var DESCRIPTORS = __w_pdfjs_require__(10); +var call = __w_pdfjs_require__(12); +var propertyIsEnumerableModule = __w_pdfjs_require__(14); +var createPropertyDescriptor = __w_pdfjs_require__(15); +var toIndexedObject = __w_pdfjs_require__(16); +var toPropertyKey = __w_pdfjs_require__(21); +var hasOwn = __w_pdfjs_require__(41); +var IE8_DOM_DEFINE = __w_pdfjs_require__(44); +var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; +exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPropertyKey(P); + if (IE8_DOM_DEFINE) + try { + return $getOwnPropertyDescriptor(O, P); + } catch (error) { + } + if (hasOwn(O, P)) + return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]); +}; /***/ }), /* 10 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(11); - -var toLength = __w_pdfjs_require__(32); - -var context = __w_pdfjs_require__(34); - -var STARTS_WITH = 'startsWith'; -var $startsWith = ''[STARTS_WITH]; -$export($export.P + $export.F * __w_pdfjs_require__(39)(STARTS_WITH), 'String', { - startsWith: function startsWith(searchString) { - var that = context(this, searchString, STARTS_WITH); - var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length)); - var search = String(searchString); - return $startsWith ? $startsWith.call(that, search, index) : that.slice(index, index + search.length) === search; +var fails = __w_pdfjs_require__(11); +module.exports = !fails(function () { + return Object.defineProperty({}, 1, { + get: function () { + return 7; } + })[1] != 7; }); /***/ }), /* 11 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var global = __w_pdfjs_require__(12); - -var core = __w_pdfjs_require__(13); - -var hide = __w_pdfjs_require__(14); - -var redefine = __w_pdfjs_require__(24); - -var ctx = __w_pdfjs_require__(30); - -var PROTOTYPE = 'prototype'; - -var $export = function $export(type, name, source) { - var IS_FORCED = type & $export.F; - var IS_GLOBAL = type & $export.G; - var IS_STATIC = type & $export.S; - var IS_PROTO = type & $export.P; - var IS_BIND = type & $export.B; - var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]; - var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); - var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); - var key, own, out, exp; - if (IS_GLOBAL) source = name; - - for (key in source) { - own = !IS_FORCED && target && target[key] !== undefined; - out = (own ? target : source)[key]; - exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; - if (target) redefine(target, key, out, type & $export.U); - if (exports[key] != out) hide(exports, key, exp); - if (IS_PROTO && expProto[key] != out) expProto[key] = out; - } +module.exports = function (exec) { + try { + return !!exec(); + } catch (error) { + return true; + } }; -global.core = core; -$export.F = 1; -$export.G = 2; -$export.S = 4; -$export.P = 8; -$export.B = 16; -$export.W = 32; -$export.U = 64; -$export.R = 128; -module.exports = $export; - /***/ }), /* 12 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); -if (typeof __g == 'number') __g = global; +var NATIVE_BIND = __w_pdfjs_require__(13); +var call = Function.prototype.call; +module.exports = NATIVE_BIND ? call.bind(call) : function () { + return call.apply(call, arguments); +}; /***/ }), /* 13 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var core = module.exports = { - version: '2.6.9' -}; -if (typeof __e == 'number') __e = core; +var fails = __w_pdfjs_require__(11); +module.exports = !fails(function () { + var test = function () { + }.bind(); + return typeof test != 'function' || test.hasOwnProperty('prototype'); +}); /***/ }), /* 14 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports) => { "use strict"; - -var dP = __w_pdfjs_require__(15); - -var createDesc = __w_pdfjs_require__(23); - -module.exports = __w_pdfjs_require__(19) ? function (object, key, value) { - return dP.f(object, key, createDesc(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; +var $propertyIsEnumerable = {}.propertyIsEnumerable; +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; +var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1); +exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; +} : $propertyIsEnumerable; /***/ }), /* 15 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var anObject = __w_pdfjs_require__(16); - -var IE8_DOM_DEFINE = __w_pdfjs_require__(18); - -var toPrimitive = __w_pdfjs_require__(22); - -var dP = Object.defineProperty; -exports.f = __w_pdfjs_require__(19) ? Object.defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return dP(O, P, Attributes); - } catch (e) {} - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; }; /***/ }), /* 16 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var isObject = __w_pdfjs_require__(17); +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { +var IndexedObject = __w_pdfjs_require__(17); +var requireObjectCoercible = __w_pdfjs_require__(20); module.exports = function (it) { - if (!isObject(it)) throw TypeError(it + ' is not an object!'); - return it; + return IndexedObject(requireObjectCoercible(it)); }; /***/ }), /* 17 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -module.exports = function (it) { - return _typeof(it) === 'object' ? it !== null : typeof it === 'function'; -}; +var uncurryThis = __w_pdfjs_require__(18); +var fails = __w_pdfjs_require__(11); +var classof = __w_pdfjs_require__(19); +var $Object = Object; +var split = uncurryThis(''.split); +module.exports = fails(function () { + return !$Object('z').propertyIsEnumerable(0); +}) ? function (it) { + return classof(it) == 'String' ? split(it, '') : $Object(it); +} : $Object; /***/ }), /* 18 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = !__w_pdfjs_require__(19) && !__w_pdfjs_require__(20)(function () { - return Object.defineProperty(__w_pdfjs_require__(21)('div'), 'a', { - get: function get() { - return 7; - } - }).a != 7; -}); +var NATIVE_BIND = __w_pdfjs_require__(13); +var FunctionPrototype = Function.prototype; +var bind = FunctionPrototype.bind; +var call = FunctionPrototype.call; +var uncurryThis = NATIVE_BIND && bind.bind(call, call); +module.exports = NATIVE_BIND ? function (fn) { + return fn && uncurryThis(fn); +} : function (fn) { + return fn && function () { + return call.apply(fn, arguments); + }; +}; /***/ }), /* 19 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = !__w_pdfjs_require__(20)(function () { - return Object.defineProperty({}, 'a', { - get: function get() { - return 7; - } - }).a != 7; -}); +var uncurryThis = __w_pdfjs_require__(18); +var toString = uncurryThis({}.toString); +var stringSlice = uncurryThis(''.slice); +module.exports = function (it) { + return stringSlice(toString(it), 8, -1); +}; /***/ }), /* 20 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -module.exports = function (exec) { - try { - return !!exec(); - } catch (e) { - return true; - } +var $TypeError = TypeError; +module.exports = function (it) { + if (it == undefined) + throw $TypeError("Can't call method on " + it); + return it; }; /***/ }), /* 21 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var isObject = __w_pdfjs_require__(17); - -var document = __w_pdfjs_require__(12).document; - -var is = isObject(document) && isObject(document.createElement); - -module.exports = function (it) { - return is ? document.createElement(it) : {}; +var toPrimitive = __w_pdfjs_require__(22); +var isSymbol = __w_pdfjs_require__(25); +module.exports = function (argument) { + var key = toPrimitive(argument, 'string'); + return isSymbol(key) ? key : key + ''; }; /***/ }), /* 22 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var isObject = __w_pdfjs_require__(17); - -module.exports = function (it, S) { - if (!isObject(it)) return it; - var fn, val; - if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; - if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - throw TypeError("Can't convert object to primitive value"); +var call = __w_pdfjs_require__(12); +var isObject = __w_pdfjs_require__(23); +var isSymbol = __w_pdfjs_require__(25); +var getMethod = __w_pdfjs_require__(32); +var ordinaryToPrimitive = __w_pdfjs_require__(35); +var wellKnownSymbol = __w_pdfjs_require__(36); +var $TypeError = TypeError; +var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); +module.exports = function (input, pref) { + if (!isObject(input) || isSymbol(input)) + return input; + var exoticToPrim = getMethod(input, TO_PRIMITIVE); + var result; + if (exoticToPrim) { + if (pref === undefined) + pref = 'default'; + result = call(exoticToPrim, input, pref); + if (!isObject(result) || isSymbol(result)) + return result; + throw $TypeError("Can't convert object to primitive value"); + } + if (pref === undefined) + pref = 'number'; + return ordinaryToPrimitive(input, pref); }; /***/ }), /* 23 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; +var isCallable = __w_pdfjs_require__(24); +module.exports = function (it) { + return typeof it == 'object' ? it !== null : isCallable(it); }; /***/ }), /* 24 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var global = __w_pdfjs_require__(12); - -var hide = __w_pdfjs_require__(14); - -var has = __w_pdfjs_require__(25); - -var SRC = __w_pdfjs_require__(26)('src'); - -var $toString = __w_pdfjs_require__(27); - -var TO_STRING = 'toString'; -var TPL = ('' + $toString).split(TO_STRING); - -__w_pdfjs_require__(13).inspectSource = function (it) { - return $toString.call(it); +module.exports = function (argument) { + return typeof argument == 'function'; }; -(module.exports = function (O, key, val, safe) { - var isFunction = typeof val == 'function'; - if (isFunction) has(val, 'name') || hide(val, 'name', key); - if (O[key] === val) return; - if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); - - if (O === global) { - O[key] = val; - } else if (!safe) { - delete O[key]; - hide(O, key, val); - } else if (O[key]) { - O[key] = val; - } else { - hide(O, key, val); - } -})(Function.prototype, TO_STRING, function toString() { - return typeof this == 'function' && this[SRC] || $toString.call(this); -}); - /***/ }), /* 25 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var hasOwnProperty = {}.hasOwnProperty; - -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); +var getBuiltIn = __w_pdfjs_require__(26); +var isCallable = __w_pdfjs_require__(24); +var isPrototypeOf = __w_pdfjs_require__(27); +var USE_SYMBOL_AS_UID = __w_pdfjs_require__(28); +var $Object = Object; +module.exports = USE_SYMBOL_AS_UID ? function (it) { + return typeof it == 'symbol'; +} : function (it) { + var $Symbol = getBuiltIn('Symbol'); + return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it)); }; /***/ }), /* 26 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var id = 0; -var px = Math.random(); - -module.exports = function (key) { - return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +var global = __w_pdfjs_require__(8); +var isCallable = __w_pdfjs_require__(24); +var aFunction = function (argument) { + return isCallable(argument) ? argument : undefined; +}; +module.exports = function (namespace, method) { + return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method]; }; /***/ }), /* 27 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = __w_pdfjs_require__(28)('native-function-to-string', Function.toString); +var uncurryThis = __w_pdfjs_require__(18); +module.exports = uncurryThis({}.isPrototypeOf); /***/ }), /* 28 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var core = __w_pdfjs_require__(13); - -var global = __w_pdfjs_require__(12); - -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || (global[SHARED] = {}); -(module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: core.version, - mode: __w_pdfjs_require__(29) ? 'pure' : 'global', - copyright: '© 2019 Denis Pushkarev (zloirock.ru)' -}); +var NATIVE_SYMBOL = __w_pdfjs_require__(29); +module.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == 'symbol'; /***/ }), /* 29 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = false; +var V8_VERSION = __w_pdfjs_require__(30); +var fails = __w_pdfjs_require__(11); +module.exports = !!Object.getOwnPropertySymbols && !fails(function () { + var symbol = Symbol(); + return !String(symbol) || !(Object(symbol) instanceof Symbol) || !Symbol.sham && V8_VERSION && V8_VERSION < 41; +}); /***/ }), /* 30 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var aFunction = __w_pdfjs_require__(31); - -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - - switch (length) { - case 1: - return function (a) { - return fn.call(that, a); - }; - - case 2: - return function (a, b) { - return fn.call(that, a, b); - }; - - case 3: - return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - - return function () { - return fn.apply(that, arguments); - }; -}; +var global = __w_pdfjs_require__(8); +var userAgent = __w_pdfjs_require__(31); +var process = global.process; +var Deno = global.Deno; +var versions = process && process.versions || Deno && Deno.version; +var v8 = versions && versions.v8; +var match, version; +if (v8) { + match = v8.split('.'); + version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); +} +if (!version && userAgent) { + match = userAgent.match(/Edge\/(\d+)/); + if (!match || match[1] >= 74) { + match = userAgent.match(/Chrome\/(\d+)/); + if (match) + version = +match[1]; + } +} +module.exports = version; /***/ }), /* 31 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = function (it) { - if (typeof it != 'function') throw TypeError(it + ' is not a function!'); - return it; -}; +var getBuiltIn = __w_pdfjs_require__(26); +module.exports = getBuiltIn('navigator', 'userAgent') || ''; /***/ }), /* 32 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var toInteger = __w_pdfjs_require__(33); - -var min = Math.min; - -module.exports = function (it) { - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; +var aCallable = __w_pdfjs_require__(33); +module.exports = function (V, P) { + var func = V[P]; + return func == null ? undefined : aCallable(func); }; /***/ }), /* 33 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var ceil = Math.ceil; -var floor = Math.floor; - -module.exports = function (it) { - return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +var isCallable = __w_pdfjs_require__(24); +var tryToString = __w_pdfjs_require__(34); +var $TypeError = TypeError; +module.exports = function (argument) { + if (isCallable(argument)) + return argument; + throw $TypeError(tryToString(argument) + ' is not a function'); }; /***/ }), /* 34 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var isRegExp = __w_pdfjs_require__(35); - -var defined = __w_pdfjs_require__(38); - -module.exports = function (that, searchString, NAME) { - if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!"); - return String(defined(that)); +var $String = String; +module.exports = function (argument) { + try { + return $String(argument); + } catch (error) { + return 'Object'; + } }; /***/ }), /* 35 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var isObject = __w_pdfjs_require__(17); - -var cof = __w_pdfjs_require__(36); - -var MATCH = __w_pdfjs_require__(37)('match'); - -module.exports = function (it) { - var isRegExp; - return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp'); +var call = __w_pdfjs_require__(12); +var isCallable = __w_pdfjs_require__(24); +var isObject = __w_pdfjs_require__(23); +var $TypeError = TypeError; +module.exports = function (input, pref) { + var fn, val; + if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) + return val; + if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) + return val; + if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) + return val; + throw $TypeError("Can't convert object to primitive value"); }; /***/ }), /* 36 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var toString = {}.toString; - -module.exports = function (it) { - return toString.call(it).slice(8, -1); +var global = __w_pdfjs_require__(8); +var shared = __w_pdfjs_require__(37); +var hasOwn = __w_pdfjs_require__(41); +var uid = __w_pdfjs_require__(43); +var NATIVE_SYMBOL = __w_pdfjs_require__(29); +var USE_SYMBOL_AS_UID = __w_pdfjs_require__(28); +var WellKnownSymbolsStore = shared('wks'); +var Symbol = global.Symbol; +var symbolFor = Symbol && Symbol['for']; +var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid; +module.exports = function (name) { + if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) { + var description = 'Symbol.' + name; + if (NATIVE_SYMBOL && hasOwn(Symbol, name)) { + WellKnownSymbolsStore[name] = Symbol[name]; + } else if (USE_SYMBOL_AS_UID && symbolFor) { + WellKnownSymbolsStore[name] = symbolFor(description); + } else { + WellKnownSymbolsStore[name] = createWellKnownSymbol(description); + } + } + return WellKnownSymbolsStore[name]; }; /***/ }), /* 37 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var store = __w_pdfjs_require__(28)('wks'); - -var uid = __w_pdfjs_require__(26); - -var _Symbol = __w_pdfjs_require__(12).Symbol; - -var USE_SYMBOL = typeof _Symbol == 'function'; - -var $exports = module.exports = function (name) { - return store[name] || (store[name] = USE_SYMBOL && _Symbol[name] || (USE_SYMBOL ? _Symbol : uid)('Symbol.' + name)); -}; - -$exports.store = store; +var IS_PURE = __w_pdfjs_require__(38); +var store = __w_pdfjs_require__(39); +(module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); +})('versions', []).push({ + version: '3.24.1', + mode: IS_PURE ? 'pure' : 'global', + copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)', + license: 'https://github.com/zloirock/core-js/blob/v3.24.1/LICENSE', + source: 'https://github.com/zloirock/core-js' +}); /***/ }), /* 38 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; -}; +module.exports = false; /***/ }), /* 39 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var MATCH = __w_pdfjs_require__(37)('match'); - -module.exports = function (KEY) { - var re = /./; - - try { - '/./'[KEY](re); - } catch (e) { - try { - re[MATCH] = false; - return !'/./'[KEY](re); - } catch (f) {} - } - - return true; -}; +var global = __w_pdfjs_require__(8); +var defineGlobalProperty = __w_pdfjs_require__(40); +var SHARED = '__core-js_shared__'; +var store = global[SHARED] || defineGlobalProperty(SHARED, {}); +module.exports = store; /***/ }), /* 40 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(41); - -module.exports = __w_pdfjs_require__(13).String.endsWith; +var global = __w_pdfjs_require__(8); +var defineProperty = Object.defineProperty; +module.exports = function (key, value) { + try { + defineProperty(global, key, { + value: value, + configurable: true, + writable: true + }); + } catch (error) { + global[key] = value; + } + return value; +}; /***/ }), /* 41 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(11); - -var toLength = __w_pdfjs_require__(32); - -var context = __w_pdfjs_require__(34); - -var ENDS_WITH = 'endsWith'; -var $endsWith = ''[ENDS_WITH]; -$export($export.P + $export.F * __w_pdfjs_require__(39)(ENDS_WITH), 'String', { - endsWith: function endsWith(searchString) { - var that = context(this, searchString, ENDS_WITH); - var endPosition = arguments.length > 1 ? arguments[1] : undefined; - var len = toLength(that.length); - var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len); - var search = String(searchString); - return $endsWith ? $endsWith.call(that, search, end) : that.slice(end - search.length, end) === search; - } -}); +var uncurryThis = __w_pdfjs_require__(18); +var toObject = __w_pdfjs_require__(42); +var hasOwnProperty = uncurryThis({}.hasOwnProperty); +module.exports = Object.hasOwn || function hasOwn(it, key) { + return hasOwnProperty(toObject(it), key); +}; /***/ }), /* 42 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(43); - -module.exports = __w_pdfjs_require__(13).String.includes; +var requireObjectCoercible = __w_pdfjs_require__(20); +var $Object = Object; +module.exports = function (argument) { + return $Object(requireObjectCoercible(argument)); +}; /***/ }), /* 43 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(11); - -var context = __w_pdfjs_require__(34); - -var INCLUDES = 'includes'; -$export($export.P + $export.F * __w_pdfjs_require__(39)(INCLUDES), 'String', { - includes: function includes(searchString) { - return !!~context(this, searchString, INCLUDES).indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined); - } -}); +var uncurryThis = __w_pdfjs_require__(18); +var id = 0; +var postfix = Math.random(); +var toString = uncurryThis(1.0.toString); +module.exports = function (key) { + return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36); +}; /***/ }), /* 44 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(45); - -module.exports = __w_pdfjs_require__(13).Array.includes; +var DESCRIPTORS = __w_pdfjs_require__(10); +var fails = __w_pdfjs_require__(11); +var createElement = __w_pdfjs_require__(45); +module.exports = !DESCRIPTORS && !fails(function () { + return Object.defineProperty(createElement('div'), 'a', { + get: function () { + return 7; + } + }).a != 7; +}); /***/ }), /* 45 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(11); - -var $includes = __w_pdfjs_require__(46)(true); - -$export($export.P, 'Array', { - includes: function includes(el) { - return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); - } -}); - -__w_pdfjs_require__(50)('includes'); +var global = __w_pdfjs_require__(8); +var isObject = __w_pdfjs_require__(23); +var document = global.document; +var EXISTS = isObject(document) && isObject(document.createElement); +module.exports = function (it) { + return EXISTS ? document.createElement(it) : {}; +}; /***/ }), /* 46 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var toIObject = __w_pdfjs_require__(47); - -var toLength = __w_pdfjs_require__(32); - -var toAbsoluteIndex = __w_pdfjs_require__(49); - -module.exports = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - if (value != value) return true; - } else for (; length > index; index++) { - if (IS_INCLUDES || index in O) { - if (O[index] === el) return IS_INCLUDES || index || 0; - } - } - return !IS_INCLUDES && -1; - }; +var DESCRIPTORS = __w_pdfjs_require__(10); +var definePropertyModule = __w_pdfjs_require__(47); +var createPropertyDescriptor = __w_pdfjs_require__(15); +module.exports = DESCRIPTORS ? function (object, key, value) { + return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; }; /***/ }), /* 47 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; - - -var IObject = __w_pdfjs_require__(48); - -var defined = __w_pdfjs_require__(38); - -module.exports = function (it) { - return IObject(defined(it)); +var DESCRIPTORS = __w_pdfjs_require__(10); +var IE8_DOM_DEFINE = __w_pdfjs_require__(44); +var V8_PROTOTYPE_DEFINE_BUG = __w_pdfjs_require__(48); +var anObject = __w_pdfjs_require__(49); +var toPropertyKey = __w_pdfjs_require__(21); +var $TypeError = TypeError; +var $defineProperty = Object.defineProperty; +var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; +var ENUMERABLE = 'enumerable'; +var CONFIGURABLE = 'configurable'; +var WRITABLE = 'writable'; +exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { + var current = $getOwnPropertyDescriptor(O, P); + if (current && current[WRITABLE]) { + O[P] = Attributes.value; + Attributes = { + configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE], + enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], + writable: false + }; + } + } + return $defineProperty(O, P, Attributes); +} : $defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (IE8_DOM_DEFINE) + try { + return $defineProperty(O, P, Attributes); + } catch (error) { + } + if ('get' in Attributes || 'set' in Attributes) + throw $TypeError('Accessors not supported'); + if ('value' in Attributes) + O[P] = Attributes.value; + return O; }; /***/ }), /* 48 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var cof = __w_pdfjs_require__(36); - -module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { - return cof(it) == 'String' ? it.split('') : Object(it); -}; +var DESCRIPTORS = __w_pdfjs_require__(10); +var fails = __w_pdfjs_require__(11); +module.exports = DESCRIPTORS && fails(function () { + return Object.defineProperty(function () { + }, 'prototype', { + value: 42, + writable: false + }).prototype != 42; +}); /***/ }), /* 49 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var toInteger = __w_pdfjs_require__(33); - -var max = Math.max; -var min = Math.min; - -module.exports = function (index, length) { - index = toInteger(index); - return index < 0 ? max(index + length, 0) : min(index, length); +var isObject = __w_pdfjs_require__(23); +var $String = String; +var $TypeError = TypeError; +module.exports = function (argument) { + if (isObject(argument)) + return argument; + throw $TypeError($String(argument) + ' is not an object'); }; /***/ }), /* 50 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var UNSCOPABLES = __w_pdfjs_require__(37)('unscopables'); - -var ArrayProto = Array.prototype; -if (ArrayProto[UNSCOPABLES] == undefined) __w_pdfjs_require__(14)(ArrayProto, UNSCOPABLES, {}); - -module.exports = function (key) { - ArrayProto[UNSCOPABLES][key] = true; +var isCallable = __w_pdfjs_require__(24); +var definePropertyModule = __w_pdfjs_require__(47); +var makeBuiltIn = __w_pdfjs_require__(51); +var defineGlobalProperty = __w_pdfjs_require__(40); +module.exports = function (O, key, value, options) { + if (!options) + options = {}; + var simple = options.enumerable; + var name = options.name !== undefined ? options.name : key; + if (isCallable(value)) + makeBuiltIn(value, name, options); + if (options.global) { + if (simple) + O[key] = value; + else + defineGlobalProperty(key, value); + } else { + try { + if (!options.unsafe) + delete O[key]; + else if (O[key]) + simple = true; + } catch (error) { + } + if (simple) + O[key] = value; + else + definePropertyModule.f(O, key, { + value: value, + enumerable: false, + configurable: !options.nonConfigurable, + writable: !options.nonWritable + }); + } + return O; }; /***/ }), /* 51 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(52); - -__w_pdfjs_require__(67); - -module.exports = __w_pdfjs_require__(13).Array.from; +var fails = __w_pdfjs_require__(11); +var isCallable = __w_pdfjs_require__(24); +var hasOwn = __w_pdfjs_require__(41); +var DESCRIPTORS = __w_pdfjs_require__(10); +var CONFIGURABLE_FUNCTION_NAME = (__w_pdfjs_require__(52).CONFIGURABLE); +var inspectSource = __w_pdfjs_require__(53); +var InternalStateModule = __w_pdfjs_require__(54); +var enforceInternalState = InternalStateModule.enforce; +var getInternalState = InternalStateModule.get; +var defineProperty = Object.defineProperty; +var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () { + return defineProperty(function () { + }, 'length', { value: 8 }).length !== 8; +}); +var TEMPLATE = String(String).split('String'); +var makeBuiltIn = module.exports = function (value, name, options) { + if (String(name).slice(0, 7) === 'Symbol(') { + name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']'; + } + if (options && options.getter) + name = 'get ' + name; + if (options && options.setter) + name = 'set ' + name; + if (!hasOwn(value, 'name') || CONFIGURABLE_FUNCTION_NAME && value.name !== name) { + if (DESCRIPTORS) + defineProperty(value, 'name', { + value: name, + configurable: true + }); + else + value.name = name; + } + if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) { + defineProperty(value, 'length', { value: options.arity }); + } + try { + if (options && hasOwn(options, 'constructor') && options.constructor) { + if (DESCRIPTORS) + defineProperty(value, 'prototype', { writable: false }); + } else if (value.prototype) + value.prototype = undefined; + } catch (error) { + } + var state = enforceInternalState(value); + if (!hasOwn(state, 'source')) { + state.source = TEMPLATE.join(typeof name == 'string' ? name : ''); + } + return value; +}; +Function.prototype.toString = makeBuiltIn(function toString() { + return isCallable(this) && getInternalState(this).source || inspectSource(this); +}, 'toString'); /***/ }), /* 52 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $at = __w_pdfjs_require__(53)(true); - -__w_pdfjs_require__(54)(String, 'String', function (iterated) { - this._t = String(iterated); - this._i = 0; -}, function () { - var O = this._t; - var index = this._i; - var point; - if (index >= O.length) return { - value: undefined, - done: true - }; - point = $at(O, index); - this._i += point.length; - return { - value: point, - done: false - }; -}); +var DESCRIPTORS = __w_pdfjs_require__(10); +var hasOwn = __w_pdfjs_require__(41); +var FunctionPrototype = Function.prototype; +var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor; +var EXISTS = hasOwn(FunctionPrototype, 'name'); +var PROPER = EXISTS && function something() { +}.name === 'something'; +var CONFIGURABLE = EXISTS && (!DESCRIPTORS || DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable); +module.exports = { + EXISTS: EXISTS, + PROPER: PROPER, + CONFIGURABLE: CONFIGURABLE +}; /***/ }), /* 53 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var toInteger = __w_pdfjs_require__(33); - -var defined = __w_pdfjs_require__(38); - -module.exports = function (TO_STRING) { - return function (that, pos) { - var s = String(defined(that)); - var i = toInteger(pos); - var l = s.length; - var a, b; - if (i < 0 || i >= l) return TO_STRING ? '' : undefined; - a = s.charCodeAt(i); - return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; - }; -}; +var uncurryThis = __w_pdfjs_require__(18); +var isCallable = __w_pdfjs_require__(24); +var store = __w_pdfjs_require__(39); +var functionToString = uncurryThis(Function.toString); +if (!isCallable(store.inspectSource)) { + store.inspectSource = function (it) { + return functionToString(it); + }; +} +module.exports = store.inspectSource; /***/ }), /* 54 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var LIBRARY = __w_pdfjs_require__(29); - -var $export = __w_pdfjs_require__(11); - -var redefine = __w_pdfjs_require__(24); - -var hide = __w_pdfjs_require__(14); - -var Iterators = __w_pdfjs_require__(55); - -var $iterCreate = __w_pdfjs_require__(56); - -var setToStringTag = __w_pdfjs_require__(64); - -var getPrototypeOf = __w_pdfjs_require__(65); - -var ITERATOR = __w_pdfjs_require__(37)('iterator'); - -var BUGGY = !([].keys && 'next' in [].keys()); -var FF_ITERATOR = '@@iterator'; -var KEYS = 'keys'; -var VALUES = 'values'; - -var returnThis = function returnThis() { - return this; +var NATIVE_WEAK_MAP = __w_pdfjs_require__(55); +var global = __w_pdfjs_require__(8); +var uncurryThis = __w_pdfjs_require__(18); +var isObject = __w_pdfjs_require__(23); +var createNonEnumerableProperty = __w_pdfjs_require__(46); +var hasOwn = __w_pdfjs_require__(41); +var shared = __w_pdfjs_require__(39); +var sharedKey = __w_pdfjs_require__(56); +var hiddenKeys = __w_pdfjs_require__(57); +var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; +var TypeError = global.TypeError; +var WeakMap = global.WeakMap; +var set, get, has; +var enforce = function (it) { + return has(it) ? get(it) : set(it, {}); }; - -module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { - $iterCreate(Constructor, NAME, next); - - var getMethod = function getMethod(kind) { - if (!BUGGY && kind in proto) return proto[kind]; - - switch (kind) { - case KEYS: - return function keys() { - return new Constructor(this, kind); - }; - - case VALUES: - return function values() { - return new Constructor(this, kind); - }; - } - - return function entries() { - return new Constructor(this, kind); - }; - }; - - var TAG = NAME + ' Iterator'; - var DEF_VALUES = DEFAULT == VALUES; - var VALUES_BUG = false; - var proto = Base.prototype; - var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; - var $default = $native || getMethod(DEFAULT); - var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; - var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; - var methods, key, IteratorPrototype; - - if ($anyNative) { - IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); - - if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { - setToStringTag(IteratorPrototype, TAG, true); - if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); - } +var getterFor = function (TYPE) { + return function (it) { + var state; + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw TypeError('Incompatible receiver, ' + TYPE + ' required'); } - - if (DEF_VALUES && $native && $native.name !== VALUES) { - VALUES_BUG = true; - - $default = function values() { - return $native.call(this); - }; - } - - if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { - hide(proto, ITERATOR, $default); - } - - Iterators[NAME] = $default; - Iterators[TAG] = returnThis; - - if (DEFAULT) { - methods = { - values: DEF_VALUES ? $default : getMethod(VALUES), - keys: IS_SET ? $default : getMethod(KEYS), - entries: $entries - }; - if (FORCED) for (key in methods) { - if (!(key in proto)) redefine(proto, key, methods[key]); - } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); - } - - return methods; + return state; + }; +}; +if (NATIVE_WEAK_MAP || shared.state) { + var store = shared.state || (shared.state = new WeakMap()); + var wmget = uncurryThis(store.get); + var wmhas = uncurryThis(store.has); + var wmset = uncurryThis(store.set); + set = function (it, metadata) { + if (wmhas(store, it)) + throw new TypeError(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + wmset(store, it, metadata); + return metadata; + }; + get = function (it) { + return wmget(store, it) || {}; + }; + has = function (it) { + return wmhas(store, it); + }; +} else { + var STATE = sharedKey('state'); + hiddenKeys[STATE] = true; + set = function (it, metadata) { + if (hasOwn(it, STATE)) + throw new TypeError(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + createNonEnumerableProperty(it, STATE, metadata); + return metadata; + }; + get = function (it) { + return hasOwn(it, STATE) ? it[STATE] : {}; + }; + has = function (it) { + return hasOwn(it, STATE); + }; +} +module.exports = { + set: set, + get: get, + has: has, + enforce: enforce, + getterFor: getterFor }; /***/ }), /* 55 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = {}; +var global = __w_pdfjs_require__(8); +var isCallable = __w_pdfjs_require__(24); +var inspectSource = __w_pdfjs_require__(53); +var WeakMap = global.WeakMap; +module.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap)); /***/ }), /* 56 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var create = __w_pdfjs_require__(57); - -var descriptor = __w_pdfjs_require__(23); - -var setToStringTag = __w_pdfjs_require__(64); - -var IteratorPrototype = {}; - -__w_pdfjs_require__(14)(IteratorPrototype, __w_pdfjs_require__(37)('iterator'), function () { - return this; -}); - -module.exports = function (Constructor, NAME, next) { - Constructor.prototype = create(IteratorPrototype, { - next: descriptor(1, next) - }); - setToStringTag(Constructor, NAME + ' Iterator'); +var shared = __w_pdfjs_require__(37); +var uid = __w_pdfjs_require__(43); +var keys = shared('keys'); +module.exports = function (key) { + return keys[key] || (keys[key] = uid(key)); }; /***/ }), /* 57 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var anObject = __w_pdfjs_require__(16); - -var dPs = __w_pdfjs_require__(58); - -var enumBugKeys = __w_pdfjs_require__(62); - -var IE_PROTO = __w_pdfjs_require__(61)('IE_PROTO'); - -var Empty = function Empty() {}; - -var PROTOTYPE = 'prototype'; - -var _createDict = function createDict() { - var iframe = __w_pdfjs_require__(21)('iframe'); - - var i = enumBugKeys.length; - var lt = '<'; - var gt = '>'; - var iframeDocument; - iframe.style.display = 'none'; - - __w_pdfjs_require__(63).appendChild(iframe); - - iframe.src = 'javascript:'; - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); - iframeDocument.close(); - _createDict = iframeDocument.F; - - while (i--) { - delete _createDict[PROTOTYPE][enumBugKeys[i]]; - } - - return _createDict(); -}; - -module.exports = Object.create || function create(O, Properties) { - var result; - - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - result[IE_PROTO] = O; - } else result = _createDict(); - - return Properties === undefined ? result : dPs(result, Properties); -}; +module.exports = {}; /***/ }), /* 58 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var dP = __w_pdfjs_require__(15); - -var anObject = __w_pdfjs_require__(16); - -var getKeys = __w_pdfjs_require__(59); - -module.exports = __w_pdfjs_require__(19) ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = getKeys(Properties); - var length = keys.length; - var i = 0; - var P; - - while (length > i) { - dP.f(O, P = keys[i++], Properties[P]); +var hasOwn = __w_pdfjs_require__(41); +var ownKeys = __w_pdfjs_require__(59); +var getOwnPropertyDescriptorModule = __w_pdfjs_require__(9); +var definePropertyModule = __w_pdfjs_require__(47); +module.exports = function (target, source, exceptions) { + var keys = ownKeys(source); + var defineProperty = definePropertyModule.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { + defineProperty(target, key, getOwnPropertyDescriptor(source, key)); } - - return O; + } }; /***/ }), /* 59 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $keys = __w_pdfjs_require__(60); - -var enumBugKeys = __w_pdfjs_require__(62); - -module.exports = Object.keys || function keys(O) { - return $keys(O, enumBugKeys); +var getBuiltIn = __w_pdfjs_require__(26); +var uncurryThis = __w_pdfjs_require__(18); +var getOwnPropertyNamesModule = __w_pdfjs_require__(60); +var getOwnPropertySymbolsModule = __w_pdfjs_require__(69); +var anObject = __w_pdfjs_require__(49); +var concat = uncurryThis([].concat); +module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { + var keys = getOwnPropertyNamesModule.f(anObject(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys; }; /***/ }), /* 60 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; - - -var has = __w_pdfjs_require__(25); - -var toIObject = __w_pdfjs_require__(47); - -var arrayIndexOf = __w_pdfjs_require__(46)(false); - -var IE_PROTO = __w_pdfjs_require__(61)('IE_PROTO'); - -module.exports = function (object, names) { - var O = toIObject(object); - var i = 0; - var result = []; - var key; - - for (key in O) { - if (key != IE_PROTO) has(O, key) && result.push(key); - } - - while (names.length > i) { - if (has(O, key = names[i++])) { - ~arrayIndexOf(result, key) || result.push(key); - } - } - - return result; +var internalObjectKeys = __w_pdfjs_require__(61); +var enumBugKeys = __w_pdfjs_require__(68); +var hiddenKeys = enumBugKeys.concat('length', 'prototype'); +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys(O, hiddenKeys); }; /***/ }), /* 61 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var shared = __w_pdfjs_require__(28)('keys'); - -var uid = __w_pdfjs_require__(26); - -module.exports = function (key) { - return shared[key] || (shared[key] = uid(key)); +var uncurryThis = __w_pdfjs_require__(18); +var hasOwn = __w_pdfjs_require__(41); +var toIndexedObject = __w_pdfjs_require__(16); +var indexOf = (__w_pdfjs_require__(62).indexOf); +var hiddenKeys = __w_pdfjs_require__(57); +var push = uncurryThis([].push); +module.exports = function (object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + for (key in O) + !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key); + while (names.length > i) + if (hasOwn(O, key = names[i++])) { + ~indexOf(result, key) || push(result, key); + } + return result; }; /***/ }), /* 62 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'.split(','); +var toIndexedObject = __w_pdfjs_require__(16); +var toAbsoluteIndex = __w_pdfjs_require__(63); +var lengthOfArrayLike = __w_pdfjs_require__(66); +var createMethod = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = lengthOfArrayLike(O); + var index = toAbsoluteIndex(fromIndex, length); + var value; + if (IS_INCLUDES && el != el) + while (length > index) { + value = O[index++]; + if (value != value) + return true; + } + else + for (; length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) + return IS_INCLUDES || index || 0; + } + return !IS_INCLUDES && -1; + }; +}; +module.exports = { + includes: createMethod(true), + indexOf: createMethod(false) +}; /***/ }), /* 63 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var document = __w_pdfjs_require__(12).document; - -module.exports = document && document.documentElement; +var toIntegerOrInfinity = __w_pdfjs_require__(64); +var max = Math.max; +var min = Math.min; +module.exports = function (index, length) { + var integer = toIntegerOrInfinity(index); + return integer < 0 ? max(integer + length, 0) : min(integer, length); +}; /***/ }), /* 64 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var def = __w_pdfjs_require__(15).f; - -var has = __w_pdfjs_require__(25); - -var TAG = __w_pdfjs_require__(37)('toStringTag'); - -module.exports = function (it, tag, stat) { - if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { - configurable: true, - value: tag - }); +var trunc = __w_pdfjs_require__(65); +module.exports = function (argument) { + var number = +argument; + return number !== number || number === 0 ? 0 : trunc(number); }; /***/ }), /* 65 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var has = __w_pdfjs_require__(25); - -var toObject = __w_pdfjs_require__(66); - -var IE_PROTO = __w_pdfjs_require__(61)('IE_PROTO'); - -var ObjectProto = Object.prototype; - -module.exports = Object.getPrototypeOf || function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) return O[IE_PROTO]; - - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } - - return O instanceof Object ? ObjectProto : null; +var ceil = Math.ceil; +var floor = Math.floor; +module.exports = Math.trunc || function trunc(x) { + var n = +x; + return (n > 0 ? floor : ceil)(n); }; /***/ }), /* 66 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var defined = __w_pdfjs_require__(38); - -module.exports = function (it) { - return Object(defined(it)); +var toLength = __w_pdfjs_require__(67); +module.exports = function (obj) { + return toLength(obj.length); }; /***/ }), /* 67 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var ctx = __w_pdfjs_require__(30); - -var $export = __w_pdfjs_require__(11); - -var toObject = __w_pdfjs_require__(66); - -var call = __w_pdfjs_require__(68); - -var isArrayIter = __w_pdfjs_require__(69); - -var toLength = __w_pdfjs_require__(32); - -var createProperty = __w_pdfjs_require__(70); - -var getIterFn = __w_pdfjs_require__(71); - -$export($export.S + $export.F * !__w_pdfjs_require__(73)(function (iter) { - Array.from(iter); -}), 'Array', { - from: function from(arrayLike) { - var O = toObject(arrayLike); - var C = typeof this == 'function' ? this : Array; - var aLen = arguments.length; - var mapfn = aLen > 1 ? arguments[1] : undefined; - var mapping = mapfn !== undefined; - var index = 0; - var iterFn = getIterFn(O); - var length, result, step, iterator; - if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); - - if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) { - for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) { - createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); - } - } else { - length = toLength(O.length); - - for (result = new C(length); length > index; index++) { - createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); - } - } - - result.length = index; - return result; - } -}); +var toIntegerOrInfinity = __w_pdfjs_require__(64); +var min = Math.min; +module.exports = function (argument) { + return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; +}; /***/ }), /* 68 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var anObject = __w_pdfjs_require__(16); - -module.exports = function (iterator, fn, value, entries) { - try { - return entries ? fn(anObject(value)[0], value[1]) : fn(value); - } catch (e) { - var ret = iterator['return']; - if (ret !== undefined) anObject(ret.call(iterator)); - throw e; - } -}; +module.exports = [ + 'constructor', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'toLocaleString', + 'toString', + 'valueOf' +]; /***/ }), /* 69 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var Iterators = __w_pdfjs_require__(55); - -var ITERATOR = __w_pdfjs_require__(37)('iterator'); - -var ArrayProto = Array.prototype; - -module.exports = function (it) { - return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); -}; - -/***/ }), -/* 70 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var $defineProperty = __w_pdfjs_require__(15); - -var createDesc = __w_pdfjs_require__(23); - -module.exports = function (object, index, value) { - if (index in object) $defineProperty.f(object, index, createDesc(0, value));else object[index] = value; -}; - -/***/ }), -/* 71 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var classof = __w_pdfjs_require__(72); - -var ITERATOR = __w_pdfjs_require__(37)('iterator'); - -var Iterators = __w_pdfjs_require__(55); - -module.exports = __w_pdfjs_require__(13).getIteratorMethod = function (it) { - if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)]; -}; - -/***/ }), -/* 72 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var cof = __w_pdfjs_require__(36); - -var TAG = __w_pdfjs_require__(37)('toStringTag'); - -var ARG = cof(function () { - return arguments; -}()) == 'Arguments'; - -var tryGet = function tryGet(it, key) { - try { - return it[key]; - } catch (e) {} -}; - -module.exports = function (it) { - var O, T, B; - return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T : ARG ? cof(O) : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; -}; - -/***/ }), -/* 73 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var ITERATOR = __w_pdfjs_require__(37)('iterator'); - -var SAFE_CLOSING = false; - -try { - var riter = [7][ITERATOR](); - - riter['return'] = function () { - SAFE_CLOSING = true; - }; - - Array.from(riter, function () { - throw 2; - }); -} catch (e) {} - -module.exports = function (exec, skipClosing) { - if (!skipClosing && !SAFE_CLOSING) return false; - var safe = false; - - try { - var arr = [7]; - var iter = arr[ITERATOR](); - - iter.next = function () { - return { - done: safe = true - }; - }; - - arr[ITERATOR] = function () { - return iter; - }; - - exec(arr); - } catch (e) {} - - return safe; -}; - -/***/ }), -/* 74 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -__w_pdfjs_require__(75); - -module.exports = __w_pdfjs_require__(13).Object.assign; - -/***/ }), -/* 75 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var $export = __w_pdfjs_require__(11); - -$export($export.S + $export.F, 'Object', { - assign: __w_pdfjs_require__(76) -}); - -/***/ }), -/* 76 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var DESCRIPTORS = __w_pdfjs_require__(19); - -var getKeys = __w_pdfjs_require__(59); - -var gOPS = __w_pdfjs_require__(77); - -var pIE = __w_pdfjs_require__(78); - -var toObject = __w_pdfjs_require__(66); - -var IObject = __w_pdfjs_require__(48); - -var $assign = Object.assign; -module.exports = !$assign || __w_pdfjs_require__(20)(function () { - var A = {}; - var B = {}; - var S = Symbol(); - var K = 'abcdefghijklmnopqrst'; - A[S] = 7; - K.split('').forEach(function (k) { - B[k] = k; - }); - return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; -}) ? function assign(target, source) { - var T = toObject(target); - var aLen = arguments.length; - var index = 1; - var getSymbols = gOPS.f; - var isEnum = pIE.f; - - while (aLen > index) { - var S = IObject(arguments[index++]); - var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S); - var length = keys.length; - var j = 0; - var key; - - while (length > j) { - key = keys[j++]; - if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key]; - } - } - - return T; -} : $assign; - -/***/ }), -/* 77 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - +/***/ ((__unused_webpack_module, exports) => { exports.f = Object.getOwnPropertySymbols; +/***/ }), +/* 70 */ +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { + +var fails = __w_pdfjs_require__(11); +var isCallable = __w_pdfjs_require__(24); +var replacement = /#|\.prototype\./; +var isForced = function (feature, detection) { + var value = data[normalize(feature)]; + return value == POLYFILL ? true : value == NATIVE ? false : isCallable(detection) ? fails(detection) : !!detection; +}; +var normalize = isForced.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); +}; +var data = isForced.data = {}; +var NATIVE = isForced.NATIVE = 'N'; +var POLYFILL = isForced.POLYFILL = 'P'; +module.exports = isForced; + +/***/ }), +/* 71 */ +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { + +var wellKnownSymbol = __w_pdfjs_require__(36); +var create = __w_pdfjs_require__(72); +var defineProperty = (__w_pdfjs_require__(47).f); +var UNSCOPABLES = wellKnownSymbol('unscopables'); +var ArrayPrototype = Array.prototype; +if (ArrayPrototype[UNSCOPABLES] == undefined) { + defineProperty(ArrayPrototype, UNSCOPABLES, { + configurable: true, + value: create(null) + }); +} +module.exports = function (key) { + ArrayPrototype[UNSCOPABLES][key] = true; +}; + +/***/ }), +/* 72 */ +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { + +var anObject = __w_pdfjs_require__(49); +var definePropertiesModule = __w_pdfjs_require__(73); +var enumBugKeys = __w_pdfjs_require__(68); +var hiddenKeys = __w_pdfjs_require__(57); +var html = __w_pdfjs_require__(75); +var documentCreateElement = __w_pdfjs_require__(45); +var sharedKey = __w_pdfjs_require__(56); +var GT = '>'; +var LT = '<'; +var PROTOTYPE = 'prototype'; +var SCRIPT = 'script'; +var IE_PROTO = sharedKey('IE_PROTO'); +var EmptyConstructor = function () { +}; +var scriptTag = function (content) { + return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; +}; +var NullProtoObjectViaActiveX = function (activeXDocument) { + activeXDocument.write(scriptTag('')); + activeXDocument.close(); + var temp = activeXDocument.parentWindow.Object; + activeXDocument = null; + return temp; +}; +var NullProtoObjectViaIFrame = function () { + var iframe = documentCreateElement('iframe'); + var JS = 'java' + SCRIPT + ':'; + var iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + iframe.src = String(JS); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(scriptTag('document.F=Object')); + iframeDocument.close(); + return iframeDocument.F; +}; +var activeXDocument; +var NullProtoObject = function () { + try { + activeXDocument = new ActiveXObject('htmlfile'); + } catch (error) { + } + NullProtoObject = typeof document != 'undefined' ? document.domain && activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame() : NullProtoObjectViaActiveX(activeXDocument); + var length = enumBugKeys.length; + while (length--) + delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; + return NullProtoObject(); +}; +hiddenKeys[IE_PROTO] = true; +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + EmptyConstructor[PROTOTYPE] = anObject(O); + result = new EmptyConstructor(); + EmptyConstructor[PROTOTYPE] = null; + result[IE_PROTO] = O; + } else + result = NullProtoObject(); + return Properties === undefined ? result : definePropertiesModule.f(result, Properties); +}; + +/***/ }), +/* 73 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +var DESCRIPTORS = __w_pdfjs_require__(10); +var V8_PROTOTYPE_DEFINE_BUG = __w_pdfjs_require__(48); +var definePropertyModule = __w_pdfjs_require__(47); +var anObject = __w_pdfjs_require__(49); +var toIndexedObject = __w_pdfjs_require__(16); +var objectKeys = __w_pdfjs_require__(74); +exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var props = toIndexedObject(Properties); + var keys = objectKeys(Properties); + var length = keys.length; + var index = 0; + var key; + while (length > index) + definePropertyModule.f(O, key = keys[index++], props[key]); + return O; +}; + +/***/ }), +/* 74 */ +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { + +var internalObjectKeys = __w_pdfjs_require__(61); +var enumBugKeys = __w_pdfjs_require__(68); +module.exports = Object.keys || function keys(O) { + return internalObjectKeys(O, enumBugKeys); +}; + +/***/ }), +/* 75 */ +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { + +var getBuiltIn = __w_pdfjs_require__(26); +module.exports = getBuiltIn('document', 'documentElement'); + +/***/ }), +/* 76 */ +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { + +var global = __w_pdfjs_require__(8); +var uncurryThis = __w_pdfjs_require__(18); +module.exports = function (CONSTRUCTOR, METHOD) { + return uncurryThis(global[CONSTRUCTOR].prototype[METHOD]); +}; + +/***/ }), +/* 77 */ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { + +__w_pdfjs_require__(78); + /***/ }), /* 78 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -exports.f = {}.propertyIsEnumerable; +var ArrayBufferViewCore = __w_pdfjs_require__(79); +var lengthOfArrayLike = __w_pdfjs_require__(66); +var toIntegerOrInfinity = __w_pdfjs_require__(64); +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +exportTypedArrayMethod('at', function at(index) { + var O = aTypedArray(this); + var len = lengthOfArrayLike(O); + var relativeIndex = toIntegerOrInfinity(index); + var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex; + return k < 0 || k >= len ? undefined : O[k]; +}); /***/ }), /* 79 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -__w_pdfjs_require__(80); - -module.exports = __w_pdfjs_require__(13).Math.log2; +var NATIVE_ARRAY_BUFFER = __w_pdfjs_require__(80); +var DESCRIPTORS = __w_pdfjs_require__(10); +var global = __w_pdfjs_require__(8); +var isCallable = __w_pdfjs_require__(24); +var isObject = __w_pdfjs_require__(23); +var hasOwn = __w_pdfjs_require__(41); +var classof = __w_pdfjs_require__(81); +var tryToString = __w_pdfjs_require__(34); +var createNonEnumerableProperty = __w_pdfjs_require__(46); +var defineBuiltIn = __w_pdfjs_require__(50); +var defineProperty = (__w_pdfjs_require__(47).f); +var isPrototypeOf = __w_pdfjs_require__(27); +var getPrototypeOf = __w_pdfjs_require__(83); +var setPrototypeOf = __w_pdfjs_require__(85); +var wellKnownSymbol = __w_pdfjs_require__(36); +var uid = __w_pdfjs_require__(43); +var InternalStateModule = __w_pdfjs_require__(54); +var enforceInternalState = InternalStateModule.enforce; +var getInternalState = InternalStateModule.get; +var Int8Array = global.Int8Array; +var Int8ArrayPrototype = Int8Array && Int8Array.prototype; +var Uint8ClampedArray = global.Uint8ClampedArray; +var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype; +var TypedArray = Int8Array && getPrototypeOf(Int8Array); +var TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype); +var ObjectPrototype = Object.prototype; +var TypeError = global.TypeError; +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG'); +var TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor'; +var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera'; +var TYPED_ARRAY_TAG_REQUIRED = false; +var NAME, Constructor, Prototype; +var TypedArrayConstructorsList = { + Int8Array: 1, + Uint8Array: 1, + Uint8ClampedArray: 1, + Int16Array: 2, + Uint16Array: 2, + Int32Array: 4, + Uint32Array: 4, + Float32Array: 4, + Float64Array: 8 +}; +var BigIntArrayConstructorsList = { + BigInt64Array: 8, + BigUint64Array: 8 +}; +var isView = function isView(it) { + if (!isObject(it)) + return false; + var klass = classof(it); + return klass === 'DataView' || hasOwn(TypedArrayConstructorsList, klass) || hasOwn(BigIntArrayConstructorsList, klass); +}; +var getTypedArrayConstructor = function (it) { + var proto = getPrototypeOf(it); + if (!isObject(proto)) + return; + var state = getInternalState(proto); + return state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto); +}; +var isTypedArray = function (it) { + if (!isObject(it)) + return false; + var klass = classof(it); + return hasOwn(TypedArrayConstructorsList, klass) || hasOwn(BigIntArrayConstructorsList, klass); +}; +var aTypedArray = function (it) { + if (isTypedArray(it)) + return it; + throw TypeError('Target is not a typed array'); +}; +var aTypedArrayConstructor = function (C) { + if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) + return C; + throw TypeError(tryToString(C) + ' is not a typed array constructor'); +}; +var exportTypedArrayMethod = function (KEY, property, forced, options) { + if (!DESCRIPTORS) + return; + if (forced) + for (var ARRAY in TypedArrayConstructorsList) { + var TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) + try { + delete TypedArrayConstructor.prototype[KEY]; + } catch (error) { + try { + TypedArrayConstructor.prototype[KEY] = property; + } catch (error2) { + } + } + } + if (!TypedArrayPrototype[KEY] || forced) { + defineBuiltIn(TypedArrayPrototype, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options); + } +}; +var exportTypedArrayStaticMethod = function (KEY, property, forced) { + var ARRAY, TypedArrayConstructor; + if (!DESCRIPTORS) + return; + if (setPrototypeOf) { + if (forced) + for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) + try { + delete TypedArrayConstructor[KEY]; + } catch (error) { + } + } + if (!TypedArray[KEY] || forced) { + try { + return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property); + } catch (error) { + } + } else + return; + } + for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) { + defineBuiltIn(TypedArrayConstructor, KEY, property); + } + } +}; +for (NAME in TypedArrayConstructorsList) { + Constructor = global[NAME]; + Prototype = Constructor && Constructor.prototype; + if (Prototype) + enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; + else + NATIVE_ARRAY_BUFFER_VIEWS = false; +} +for (NAME in BigIntArrayConstructorsList) { + Constructor = global[NAME]; + Prototype = Constructor && Constructor.prototype; + if (Prototype) + enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; +} +if (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) { + TypedArray = function TypedArray() { + throw TypeError('Incorrect invocation'); + }; + if (NATIVE_ARRAY_BUFFER_VIEWS) + for (NAME in TypedArrayConstructorsList) { + if (global[NAME]) + setPrototypeOf(global[NAME], TypedArray); + } +} +if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) { + TypedArrayPrototype = TypedArray.prototype; + if (NATIVE_ARRAY_BUFFER_VIEWS) + for (NAME in TypedArrayConstructorsList) { + if (global[NAME]) + setPrototypeOf(global[NAME].prototype, TypedArrayPrototype); + } +} +if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) { + setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype); +} +if (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) { + TYPED_ARRAY_TAG_REQUIRED = true; + defineProperty(TypedArrayPrototype, TO_STRING_TAG, { + get: function () { + return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined; + } + }); + for (NAME in TypedArrayConstructorsList) + if (global[NAME]) { + createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME); + } +} +module.exports = { + NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS, + TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG, + aTypedArray: aTypedArray, + aTypedArrayConstructor: aTypedArrayConstructor, + exportTypedArrayMethod: exportTypedArrayMethod, + exportTypedArrayStaticMethod: exportTypedArrayStaticMethod, + getTypedArrayConstructor: getTypedArrayConstructor, + isView: isView, + isTypedArray: isTypedArray, + TypedArray: TypedArray, + TypedArrayPrototype: TypedArrayPrototype +}; /***/ }), /* 80 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var $export = __w_pdfjs_require__(11); - -$export($export.S, 'Math', { - log2: function log2(x) { - return Math.log(x) / Math.LN2; - } -}); +module.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined'; /***/ }), /* 81 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(82); - -module.exports = __w_pdfjs_require__(13).Number.isNaN; +var TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(82); +var isCallable = __w_pdfjs_require__(24); +var classofRaw = __w_pdfjs_require__(19); +var wellKnownSymbol = __w_pdfjs_require__(36); +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var $Object = Object; +var CORRECT_ARGUMENTS = classofRaw((function () { + return arguments; +}())) == 'Arguments'; +var tryGet = function (it, key) { + try { + return it[key]; + } catch (error) { + } +}; +module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result; +}; /***/ }), /* 82 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(11); - -$export($export.S, 'Number', { - isNaN: function isNaN(number) { - return number != number; - } -}); +var wellKnownSymbol = __w_pdfjs_require__(36); +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var test = {}; +test[TO_STRING_TAG] = 'z'; +module.exports = String(test) === '[object z]'; /***/ }), /* 83 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(84); - -module.exports = __w_pdfjs_require__(13).Number.isInteger; +var hasOwn = __w_pdfjs_require__(41); +var isCallable = __w_pdfjs_require__(24); +var toObject = __w_pdfjs_require__(42); +var sharedKey = __w_pdfjs_require__(56); +var CORRECT_PROTOTYPE_GETTER = __w_pdfjs_require__(84); +var IE_PROTO = sharedKey('IE_PROTO'); +var $Object = Object; +var ObjectPrototype = $Object.prototype; +module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) { + var object = toObject(O); + if (hasOwn(object, IE_PROTO)) + return object[IE_PROTO]; + var constructor = object.constructor; + if (isCallable(constructor) && object instanceof constructor) { + return constructor.prototype; + } + return object instanceof $Object ? ObjectPrototype : null; +}; /***/ }), /* 84 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(11); - -$export($export.S, 'Number', { - isInteger: __w_pdfjs_require__(85) +var fails = __w_pdfjs_require__(11); +module.exports = !fails(function () { + function F() { + } + F.prototype.constructor = null; + return Object.getPrototypeOf(new F()) !== F.prototype; }); /***/ }), /* 85 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var isObject = __w_pdfjs_require__(17); - -var floor = Math.floor; - -module.exports = function isInteger(it) { - return !isObject(it) && isFinite(it) && floor(it) === it; -}; +var uncurryThis = __w_pdfjs_require__(18); +var anObject = __w_pdfjs_require__(49); +var aPossiblePrototype = __w_pdfjs_require__(86); +module.exports = Object.setPrototypeOf || ('__proto__' in {} ? (function () { + var CORRECT_SETTER = false; + var test = {}; + var setter; + try { + setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set); + setter(test, []); + CORRECT_SETTER = test instanceof Array; + } catch (error) { + } + return function setPrototypeOf(O, proto) { + anObject(O); + aPossiblePrototype(proto); + if (CORRECT_SETTER) + setter(O, proto); + else + O.__proto__ = proto; + return O; + }; +}()) : undefined); /***/ }), /* 86 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(87); - -__w_pdfjs_require__(52); - -__w_pdfjs_require__(88); - -__w_pdfjs_require__(91); - -__w_pdfjs_require__(104); - -__w_pdfjs_require__(105); - -module.exports = __w_pdfjs_require__(13).Promise; +var isCallable = __w_pdfjs_require__(24); +var $String = String; +var $TypeError = TypeError; +module.exports = function (argument) { + if (typeof argument == 'object' || isCallable(argument)) + return argument; + throw $TypeError("Can't set " + $String(argument) + ' as a prototype'); +}; /***/ }), /* 87 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var classof = __w_pdfjs_require__(72); - -var test = {}; -test[__w_pdfjs_require__(37)('toStringTag')] = 'z'; - -if (test + '' != '[object z]') { - __w_pdfjs_require__(24)(Object.prototype, 'toString', function toString() { - return '[object ' + classof(this) + ']'; - }, true); -} +__w_pdfjs_require__(88); +__w_pdfjs_require__(94); +__w_pdfjs_require__(96); +__w_pdfjs_require__(118); +__w_pdfjs_require__(120); +var path = __w_pdfjs_require__(129); +module.exports = path.structuredClone; /***/ }), /* 88 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var $iterators = __w_pdfjs_require__(89); - -var getKeys = __w_pdfjs_require__(59); - -var redefine = __w_pdfjs_require__(24); - -var global = __w_pdfjs_require__(12); - -var hide = __w_pdfjs_require__(14); - -var Iterators = __w_pdfjs_require__(55); - -var wks = __w_pdfjs_require__(37); - -var ITERATOR = wks('iterator'); -var TO_STRING_TAG = wks('toStringTag'); -var ArrayValues = Iterators.Array; -var DOMIterables = { - CSSRuleList: true, - CSSStyleDeclaration: false, - CSSValueList: false, - ClientRectList: false, - DOMRectList: false, - DOMStringList: false, - DOMTokenList: true, - DataTransferItemList: false, - FileList: false, - HTMLAllCollection: false, - HTMLCollection: false, - HTMLFormElement: false, - HTMLSelectElement: false, - MediaList: true, - MimeTypeArray: false, - NamedNodeMap: false, - NodeList: true, - PaintRequestList: false, - Plugin: false, - PluginArray: false, - SVGLengthList: false, - SVGNumberList: false, - SVGPathSegList: false, - SVGPointList: false, - SVGStringList: false, - SVGTransformList: false, - SourceBufferList: false, - StyleSheetList: true, - TextTrackCueList: false, - TextTrackList: false, - TouchList: false -}; - -for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) { - var NAME = collections[i]; - var explicit = DOMIterables[NAME]; - var Collection = global[NAME]; - var proto = Collection && Collection.prototype; - var key; - - if (proto) { - if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues); - if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); - Iterators[NAME] = ArrayValues; - if (explicit) for (key in $iterators) { - if (!proto[key]) redefine(proto, key, $iterators[key], true); - } - } -} - -/***/ }), -/* 89 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var addToUnscopables = __w_pdfjs_require__(50); - -var step = __w_pdfjs_require__(90); - -var Iterators = __w_pdfjs_require__(55); - -var toIObject = __w_pdfjs_require__(47); - -module.exports = __w_pdfjs_require__(54)(Array, 'Array', function (iterated, kind) { - this._t = toIObject(iterated); - this._i = 0; - this._k = kind; +var toIndexedObject = __w_pdfjs_require__(16); +var addToUnscopables = __w_pdfjs_require__(71); +var Iterators = __w_pdfjs_require__(89); +var InternalStateModule = __w_pdfjs_require__(54); +var defineProperty = (__w_pdfjs_require__(47).f); +var defineIterator = __w_pdfjs_require__(90); +var IS_PURE = __w_pdfjs_require__(38); +var DESCRIPTORS = __w_pdfjs_require__(10); +var ARRAY_ITERATOR = 'Array Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); +module.exports = defineIterator(Array, 'Array', function (iterated, kind) { + setInternalState(this, { + type: ARRAY_ITERATOR, + target: toIndexedObject(iterated), + index: 0, + kind: kind + }); }, function () { - var O = this._t; - var kind = this._k; - var index = this._i++; - - if (!O || index >= O.length) { - this._t = undefined; - return step(1); - } - - if (kind == 'keys') return step(0, index); - if (kind == 'values') return step(0, O[index]); - return step(0, [index, O[index]]); + var state = getInternalState(this); + var target = state.target; + var kind = state.kind; + var index = state.index++; + if (!target || index >= target.length) { + state.target = undefined; + return { + value: undefined, + done: true + }; + } + if (kind == 'keys') + return { + value: index, + done: false + }; + if (kind == 'values') + return { + value: target[index], + done: false + }; + return { + value: [ + index, + target[index] + ], + done: false + }; }, 'values'); -Iterators.Arguments = Iterators.Array; +var values = Iterators.Arguments = Iterators.Array; addToUnscopables('keys'); addToUnscopables('values'); addToUnscopables('entries'); +if (!IS_PURE && DESCRIPTORS && values.name !== 'values') + try { + defineProperty(values, 'name', { value: 'values' }); + } catch (error) { + } + +/***/ }), +/* 89 */ +/***/ ((module) => { + +module.exports = {}; /***/ }), /* 90 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -module.exports = function (done, value) { - return { - value: value, - done: !!done +var $ = __w_pdfjs_require__(7); +var call = __w_pdfjs_require__(12); +var IS_PURE = __w_pdfjs_require__(38); +var FunctionName = __w_pdfjs_require__(52); +var isCallable = __w_pdfjs_require__(24); +var createIteratorConstructor = __w_pdfjs_require__(91); +var getPrototypeOf = __w_pdfjs_require__(83); +var setPrototypeOf = __w_pdfjs_require__(85); +var setToStringTag = __w_pdfjs_require__(93); +var createNonEnumerableProperty = __w_pdfjs_require__(46); +var defineBuiltIn = __w_pdfjs_require__(50); +var wellKnownSymbol = __w_pdfjs_require__(36); +var Iterators = __w_pdfjs_require__(89); +var IteratorsCore = __w_pdfjs_require__(92); +var PROPER_FUNCTION_NAME = FunctionName.PROPER; +var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; +var IteratorPrototype = IteratorsCore.IteratorPrototype; +var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; +var ITERATOR = wellKnownSymbol('iterator'); +var KEYS = 'keys'; +var VALUES = 'values'; +var ENTRIES = 'entries'; +var returnThis = function () { + return this; +}; +module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor(IteratorConstructor, NAME, next); + var getIterationMethod = function (KIND) { + if (KIND === DEFAULT && defaultIterator) + return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) + return IterablePrototype[KIND]; + switch (KIND) { + case KEYS: + return function keys() { + return new IteratorConstructor(this, KIND); + }; + case VALUES: + return function values() { + return new IteratorConstructor(this, KIND); + }; + case ENTRIES: + return function entries() { + return new IteratorConstructor(this, KIND); + }; + } + return function () { + return new IteratorConstructor(this); }; + }; + var TO_STRING_TAG = NAME + ' Iterator'; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype['@@iterator'] || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + if (anyNativeIterator) { + CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); + if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { + if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { + if (setPrototypeOf) { + setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); + } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) { + defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis); + } + } + setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); + if (IS_PURE) + Iterators[TO_STRING_TAG] = returnThis; + } + } + if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { + if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) { + createNonEnumerableProperty(IterablePrototype, 'name', VALUES); + } else { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { + return call(nativeIterator, this); + }; + } + } + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) + for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + defineBuiltIn(IterablePrototype, KEY, methods[KEY]); + } + } + else + $({ + target: NAME, + proto: true, + forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME + }, methods); + } + if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { + defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT }); + } + Iterators[NAME] = defaultIterator; + return methods; }; /***/ }), /* 91 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var LIBRARY = __w_pdfjs_require__(29); - -var global = __w_pdfjs_require__(12); - -var ctx = __w_pdfjs_require__(30); - -var classof = __w_pdfjs_require__(72); - -var $export = __w_pdfjs_require__(11); - -var isObject = __w_pdfjs_require__(17); - -var aFunction = __w_pdfjs_require__(31); - -var anInstance = __w_pdfjs_require__(92); - -var forOf = __w_pdfjs_require__(93); - -var speciesConstructor = __w_pdfjs_require__(94); - -var task = __w_pdfjs_require__(95).set; - -var microtask = __w_pdfjs_require__(97)(); - -var newPromiseCapabilityModule = __w_pdfjs_require__(98); - -var perform = __w_pdfjs_require__(99); - -var userAgent = __w_pdfjs_require__(100); - -var promiseResolve = __w_pdfjs_require__(101); - -var PROMISE = 'Promise'; -var TypeError = global.TypeError; -var process = global.process; -var versions = process && process.versions; -var v8 = versions && versions.v8 || ''; -var $Promise = global[PROMISE]; -var isNode = classof(process) == 'process'; - -var empty = function empty() {}; - -var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper; -var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f; -var USE_NATIVE = !!function () { - try { - var promise = $Promise.resolve(1); - - var FakePromise = (promise.constructor = {})[__w_pdfjs_require__(37)('species')] = function (exec) { - exec(empty, empty); - }; - - return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise && v8.indexOf('6.6') !== 0 && userAgent.indexOf('Chrome/66') === -1; - } catch (e) {} -}(); - -var isThenable = function isThenable(it) { - var then; - return isObject(it) && typeof (then = it.then) == 'function' ? then : false; +var IteratorPrototype = (__w_pdfjs_require__(92).IteratorPrototype); +var create = __w_pdfjs_require__(72); +var createPropertyDescriptor = __w_pdfjs_require__(15); +var setToStringTag = __w_pdfjs_require__(93); +var Iterators = __w_pdfjs_require__(89); +var returnThis = function () { + return this; }; - -var notify = function notify(promise, isReject) { - if (promise._n) return; - promise._n = true; - var chain = promise._c; - microtask(function () { - var value = promise._v; - var ok = promise._s == 1; - var i = 0; - - var run = function run(reaction) { - var handler = ok ? reaction.ok : reaction.fail; - var resolve = reaction.resolve; - var reject = reaction.reject; - var domain = reaction.domain; - var result, then, exited; - - try { - if (handler) { - if (!ok) { - if (promise._h == 2) onHandleUnhandled(promise); - promise._h = 1; - } - - if (handler === true) result = value;else { - if (domain) domain.enter(); - result = handler(value); - - if (domain) { - domain.exit(); - exited = true; - } - } - - if (result === reaction.promise) { - reject(TypeError('Promise-chain cycle')); - } else if (then = isThenable(result)) { - then.call(result, resolve, reject); - } else resolve(result); - } else reject(value); - } catch (e) { - if (domain && !exited) domain.exit(); - reject(e); - } - }; - - while (chain.length > i) { - run(chain[i++]); - } - - promise._c = []; - promise._n = false; - if (isReject && !promise._h) onUnhandled(promise); - }); +module.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) { + var TO_STRING_TAG = NAME + ' Iterator'; + IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) }); + setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); + Iterators[TO_STRING_TAG] = returnThis; + return IteratorConstructor; }; -var onUnhandled = function onUnhandled(promise) { - task.call(global, function () { - var value = promise._v; - var unhandled = isUnhandled(promise); - var result, handler, console; - - if (unhandled) { - result = perform(function () { - if (isNode) { - process.emit('unhandledRejection', value, promise); - } else if (handler = global.onunhandledrejection) { - handler({ - promise: promise, - reason: value - }); - } else if ((console = global.console) && console.error) { - console.error('Unhandled promise rejection', value); - } - }); - promise._h = isNode || isUnhandled(promise) ? 2 : 1; - } - - promise._a = undefined; - if (unhandled && result.e) throw result.v; - }); -}; - -var isUnhandled = function isUnhandled(promise) { - return promise._h !== 1 && (promise._a || promise._c).length === 0; -}; - -var onHandleUnhandled = function onHandleUnhandled(promise) { - task.call(global, function () { - var handler; - - if (isNode) { - process.emit('rejectionHandled', promise); - } else if (handler = global.onrejectionhandled) { - handler({ - promise: promise, - reason: promise._v - }); - } - }); -}; - -var $reject = function $reject(value) { - var promise = this; - if (promise._d) return; - promise._d = true; - promise = promise._w || promise; - promise._v = value; - promise._s = 2; - if (!promise._a) promise._a = promise._c.slice(); - notify(promise, true); -}; - -var $resolve = function $resolve(value) { - var promise = this; - var then; - if (promise._d) return; - promise._d = true; - promise = promise._w || promise; - - try { - if (promise === value) throw TypeError("Promise can't be resolved itself"); - - if (then = isThenable(value)) { - microtask(function () { - var wrapper = { - _w: promise, - _d: false - }; - - try { - then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1)); - } catch (e) { - $reject.call(wrapper, e); - } - }); - } else { - promise._v = value; - promise._s = 1; - notify(promise, false); - } - } catch (e) { - $reject.call({ - _w: promise, - _d: false - }, e); - } -}; - -if (!USE_NATIVE) { - $Promise = function Promise(executor) { - anInstance(this, $Promise, PROMISE, '_h'); - aFunction(executor); - Internal.call(this); - - try { - executor(ctx($resolve, this, 1), ctx($reject, this, 1)); - } catch (err) { - $reject.call(this, err); - } - }; - - Internal = function Promise(executor) { - this._c = []; - this._a = undefined; - this._s = 0; - this._d = false; - this._v = undefined; - this._h = 0; - this._n = false; - }; - - Internal.prototype = __w_pdfjs_require__(102)($Promise.prototype, { - then: function then(onFulfilled, onRejected) { - var reaction = newPromiseCapability(speciesConstructor(this, $Promise)); - reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; - reaction.fail = typeof onRejected == 'function' && onRejected; - reaction.domain = isNode ? process.domain : undefined; - - this._c.push(reaction); - - if (this._a) this._a.push(reaction); - if (this._s) notify(this, false); - return reaction.promise; - }, - 'catch': function _catch(onRejected) { - return this.then(undefined, onRejected); - } - }); - - OwnPromiseCapability = function OwnPromiseCapability() { - var promise = new Internal(); - this.promise = promise; - this.resolve = ctx($resolve, promise, 1); - this.reject = ctx($reject, promise, 1); - }; - - newPromiseCapabilityModule.f = newPromiseCapability = function newPromiseCapability(C) { - return C === $Promise || C === Wrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C); - }; -} - -$export($export.G + $export.W + $export.F * !USE_NATIVE, { - Promise: $Promise -}); - -__w_pdfjs_require__(64)($Promise, PROMISE); - -__w_pdfjs_require__(103)(PROMISE); - -Wrapper = __w_pdfjs_require__(13)[PROMISE]; -$export($export.S + $export.F * !USE_NATIVE, PROMISE, { - reject: function reject(r) { - var capability = newPromiseCapability(this); - var $$reject = capability.reject; - $$reject(r); - return capability.promise; - } -}); -$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, { - resolve: function resolve(x) { - return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x); - } -}); -$export($export.S + $export.F * !(USE_NATIVE && __w_pdfjs_require__(73)(function (iter) { - $Promise.all(iter)['catch'](empty); -})), PROMISE, { - all: function all(iterable) { - var C = this; - var capability = newPromiseCapability(C); - var resolve = capability.resolve; - var reject = capability.reject; - var result = perform(function () { - var values = []; - var index = 0; - var remaining = 1; - forOf(iterable, false, function (promise) { - var $index = index++; - var alreadyCalled = false; - values.push(undefined); - remaining++; - C.resolve(promise).then(function (value) { - if (alreadyCalled) return; - alreadyCalled = true; - values[$index] = value; - --remaining || resolve(values); - }, reject); - }); - --remaining || resolve(values); - }); - if (result.e) reject(result.v); - return capability.promise; - }, - race: function race(iterable) { - var C = this; - var capability = newPromiseCapability(C); - var reject = capability.reject; - var result = perform(function () { - forOf(iterable, false, function (promise) { - C.resolve(promise).then(capability.resolve, reject); - }); - }); - if (result.e) reject(result.v); - return capability.promise; - } -}); - /***/ }), /* 92 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -module.exports = function (it, Constructor, name, forbiddenField) { - if (!(it instanceof Constructor) || forbiddenField !== undefined && forbiddenField in it) { - throw TypeError(name + ': incorrect invocation!'); - } - - return it; +var fails = __w_pdfjs_require__(11); +var isCallable = __w_pdfjs_require__(24); +var create = __w_pdfjs_require__(72); +var getPrototypeOf = __w_pdfjs_require__(83); +var defineBuiltIn = __w_pdfjs_require__(50); +var wellKnownSymbol = __w_pdfjs_require__(36); +var IS_PURE = __w_pdfjs_require__(38); +var ITERATOR = wellKnownSymbol('iterator'); +var BUGGY_SAFARI_ITERATORS = false; +var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; +if ([].keys) { + arrayIterator = [].keys(); + if (!('next' in arrayIterator)) + BUGGY_SAFARI_ITERATORS = true; + else { + PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) + IteratorPrototype = PrototypeOfArrayIteratorPrototype; + } +} +var NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () { + var test = {}; + return IteratorPrototype[ITERATOR].call(test) !== test; +}); +if (NEW_ITERATOR_PROTOTYPE) + IteratorPrototype = {}; +else if (IS_PURE) + IteratorPrototype = create(IteratorPrototype); +if (!isCallable(IteratorPrototype[ITERATOR])) { + defineBuiltIn(IteratorPrototype, ITERATOR, function () { + return this; + }); +} +module.exports = { + IteratorPrototype: IteratorPrototype, + BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS }; /***/ }), /* 93 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var ctx = __w_pdfjs_require__(30); - -var call = __w_pdfjs_require__(68); - -var isArrayIter = __w_pdfjs_require__(69); - -var anObject = __w_pdfjs_require__(16); - -var toLength = __w_pdfjs_require__(32); - -var getIterFn = __w_pdfjs_require__(71); - -var BREAK = {}; -var RETURN = {}; - -var _exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { - var iterFn = ITERATOR ? function () { - return iterable; - } : getIterFn(iterable); - var f = ctx(fn, that, entries ? 2 : 1); - var index = 0; - var length, step, iterator, result; - if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!'); - if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) { - result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); - if (result === BREAK || result === RETURN) return result; - } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) { - result = call(iterator, f, step.value, entries); - if (result === BREAK || result === RETURN) return result; - } +var defineProperty = (__w_pdfjs_require__(47).f); +var hasOwn = __w_pdfjs_require__(41); +var wellKnownSymbol = __w_pdfjs_require__(36); +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +module.exports = function (target, TAG, STATIC) { + if (target && !STATIC) + target = target.prototype; + if (target && !hasOwn(target, TO_STRING_TAG)) { + defineProperty(target, TO_STRING_TAG, { + configurable: true, + value: TAG + }); + } }; -_exports.BREAK = BREAK; -_exports.RETURN = RETURN; - /***/ }), /* 94 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var anObject = __w_pdfjs_require__(16); - -var aFunction = __w_pdfjs_require__(31); - -var SPECIES = __w_pdfjs_require__(37)('species'); - -module.exports = function (O, D) { - var C = anObject(O).constructor; - var S; - return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); -}; +var TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(82); +var defineBuiltIn = __w_pdfjs_require__(50); +var toString = __w_pdfjs_require__(95); +if (!TO_STRING_TAG_SUPPORT) { + defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true }); +} /***/ }), /* 95 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var ctx = __w_pdfjs_require__(30); - -var invoke = __w_pdfjs_require__(96); - -var html = __w_pdfjs_require__(63); - -var cel = __w_pdfjs_require__(21); - -var global = __w_pdfjs_require__(12); - -var process = global.process; -var setTask = global.setImmediate; -var clearTask = global.clearImmediate; -var MessageChannel = global.MessageChannel; -var Dispatch = global.Dispatch; -var counter = 0; -var queue = {}; -var ONREADYSTATECHANGE = 'onreadystatechange'; -var defer, channel, port; - -var run = function run() { - var id = +this; - - if (queue.hasOwnProperty(id)) { - var fn = queue[id]; - delete queue[id]; - fn(); - } -}; - -var listener = function listener(event) { - run.call(event.data); -}; - -if (!setTask || !clearTask) { - setTask = function setImmediate(fn) { - var args = []; - var i = 1; - - while (arguments.length > i) { - args.push(arguments[i++]); - } - - queue[++counter] = function () { - invoke(typeof fn == 'function' ? fn : Function(fn), args); - }; - - defer(counter); - return counter; - }; - - clearTask = function clearImmediate(id) { - delete queue[id]; - }; - - if (__w_pdfjs_require__(36)(process) == 'process') { - defer = function defer(id) { - process.nextTick(ctx(run, id, 1)); - }; - } else if (Dispatch && Dispatch.now) { - defer = function defer(id) { - Dispatch.now(ctx(run, id, 1)); - }; - } else if (MessageChannel) { - channel = new MessageChannel(); - port = channel.port2; - channel.port1.onmessage = listener; - defer = ctx(port.postMessage, port, 1); - } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) { - defer = function defer(id) { - global.postMessage(id + '', '*'); - }; - - global.addEventListener('message', listener, false); - } else if (ONREADYSTATECHANGE in cel('script')) { - defer = function defer(id) { - html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () { - html.removeChild(this); - run.call(id); - }; - }; - } else { - defer = function defer(id) { - setTimeout(ctx(run, id, 1), 0); - }; - } -} - -module.exports = { - set: setTask, - clear: clearTask +var TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(82); +var classof = __w_pdfjs_require__(81); +module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() { + return '[object ' + classof(this) + ']'; }; /***/ }), /* 96 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = function (fn, args, that) { - var un = that === undefined; - - switch (args.length) { - case 0: - return un ? fn() : fn.call(that); - - case 1: - return un ? fn(args[0]) : fn.call(that, args[0]); - - case 2: - return un ? fn(args[0], args[1]) : fn.call(that, args[0], args[1]); - - case 3: - return un ? fn(args[0], args[1], args[2]) : fn.call(that, args[0], args[1], args[2]); - - case 4: - return un ? fn(args[0], args[1], args[2], args[3]) : fn.call(that, args[0], args[1], args[2], args[3]); - } - - return fn.apply(that, args); -}; +__w_pdfjs_require__(97); /***/ }), /* 97 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var global = __w_pdfjs_require__(12); - -var macrotask = __w_pdfjs_require__(95).set; - -var Observer = global.MutationObserver || global.WebKitMutationObserver; -var process = global.process; -var Promise = global.Promise; -var isNode = __w_pdfjs_require__(36)(process) == 'process'; - -module.exports = function () { - var head, last, notify; - - var flush = function flush() { - var parent, fn; - if (isNode && (parent = process.domain)) parent.exit(); - - while (head) { - fn = head.fn; - head = head.next; - - try { - fn(); - } catch (e) { - if (head) notify();else last = undefined; - throw e; - } - } - - last = undefined; - if (parent) parent.enter(); - }; - - if (isNode) { - notify = function notify() { - process.nextTick(flush); - }; - } else if (Observer && !(global.navigator && global.navigator.standalone)) { - var toggle = true; - var node = document.createTextNode(''); - new Observer(flush).observe(node, { - characterData: true - }); - - notify = function notify() { - node.data = toggle = !toggle; - }; - } else if (Promise && Promise.resolve) { - var promise = Promise.resolve(undefined); - - notify = function notify() { - promise.then(flush); - }; - } else { - notify = function notify() { - macrotask.call(global, flush); - }; - } - - return function (fn) { - var task = { - fn: fn, - next: undefined - }; - if (last) last.next = task; - - if (!head) { - head = task; - notify(); - } - - last = task; - }; -}; +var collection = __w_pdfjs_require__(98); +var collectionStrong = __w_pdfjs_require__(115); +collection('Map', function (init) { + return function Map() { + return init(this, arguments.length ? arguments[0] : undefined); + }; +}, collectionStrong); /***/ }), /* 98 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var aFunction = __w_pdfjs_require__(31); - -function PromiseCapability(C) { - var resolve, reject; - this.promise = new C(function ($$resolve, $$reject) { - if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); - resolve = $$resolve; - reject = $$reject; +var $ = __w_pdfjs_require__(7); +var global = __w_pdfjs_require__(8); +var uncurryThis = __w_pdfjs_require__(18); +var isForced = __w_pdfjs_require__(70); +var defineBuiltIn = __w_pdfjs_require__(50); +var InternalMetadataModule = __w_pdfjs_require__(99); +var iterate = __w_pdfjs_require__(106); +var anInstance = __w_pdfjs_require__(112); +var isCallable = __w_pdfjs_require__(24); +var isObject = __w_pdfjs_require__(23); +var fails = __w_pdfjs_require__(11); +var checkCorrectnessOfIteration = __w_pdfjs_require__(113); +var setToStringTag = __w_pdfjs_require__(93); +var inheritIfRequired = __w_pdfjs_require__(114); +module.exports = function (CONSTRUCTOR_NAME, wrapper, common) { + var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1; + var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1; + var ADDER = IS_MAP ? 'set' : 'add'; + var NativeConstructor = global[CONSTRUCTOR_NAME]; + var NativePrototype = NativeConstructor && NativeConstructor.prototype; + var Constructor = NativeConstructor; + var exported = {}; + var fixMethod = function (KEY) { + var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]); + defineBuiltIn(NativePrototype, KEY, KEY == 'add' ? function add(value) { + uncurriedNativeMethod(this, value === 0 ? 0 : value); + return this; + } : KEY == 'delete' ? function (key) { + return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : KEY == 'get' ? function get(key) { + return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : KEY == 'has' ? function has(key) { + return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : function set(key, value) { + uncurriedNativeMethod(this, key === 0 ? 0 : key, value); + return this; }); - this.resolve = aFunction(resolve); - this.reject = aFunction(reject); -} - -module.exports.f = function (C) { - return new PromiseCapability(C); + }; + var REPLACE = isForced(CONSTRUCTOR_NAME, !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () { + new NativeConstructor().entries().next(); + }))); + if (REPLACE) { + Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); + InternalMetadataModule.enable(); + } else if (isForced(CONSTRUCTOR_NAME, true)) { + var instance = new Constructor(); + var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; + var THROWS_ON_PRIMITIVES = fails(function () { + instance.has(1); + }); + var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { + new NativeConstructor(iterable); + }); + var BUGGY_ZERO = !IS_WEAK && fails(function () { + var $instance = new NativeConstructor(); + var index = 5; + while (index--) + $instance[ADDER](index, index); + return !$instance.has(-0); + }); + if (!ACCEPT_ITERABLES) { + Constructor = wrapper(function (dummy, iterable) { + anInstance(dummy, NativePrototype); + var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor); + if (iterable != undefined) + iterate(iterable, that[ADDER], { + that: that, + AS_ENTRIES: IS_MAP + }); + return that; + }); + Constructor.prototype = NativePrototype; + NativePrototype.constructor = Constructor; + } + if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + if (BUGGY_ZERO || HASNT_CHAINING) + fixMethod(ADDER); + if (IS_WEAK && NativePrototype.clear) + delete NativePrototype.clear; + } + exported[CONSTRUCTOR_NAME] = Constructor; + $({ + global: true, + constructor: true, + forced: Constructor != NativeConstructor + }, exported); + setToStringTag(Constructor, CONSTRUCTOR_NAME); + if (!IS_WEAK) + common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); + return Constructor; }; /***/ }), /* 99 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -module.exports = function (exec) { - try { - return { - e: false, - v: exec() - }; - } catch (e) { - return { - e: true, - v: e - }; +var $ = __w_pdfjs_require__(7); +var uncurryThis = __w_pdfjs_require__(18); +var hiddenKeys = __w_pdfjs_require__(57); +var isObject = __w_pdfjs_require__(23); +var hasOwn = __w_pdfjs_require__(41); +var defineProperty = (__w_pdfjs_require__(47).f); +var getOwnPropertyNamesModule = __w_pdfjs_require__(60); +var getOwnPropertyNamesExternalModule = __w_pdfjs_require__(100); +var isExtensible = __w_pdfjs_require__(103); +var uid = __w_pdfjs_require__(43); +var FREEZING = __w_pdfjs_require__(105); +var REQUIRED = false; +var METADATA = uid('meta'); +var id = 0; +var setMetadata = function (it) { + defineProperty(it, METADATA, { + value: { + objectID: 'O' + id++, + weakData: {} } + }); }; +var fastKey = function (it, create) { + if (!isObject(it)) + return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!hasOwn(it, METADATA)) { + if (!isExtensible(it)) + return 'F'; + if (!create) + return 'E'; + setMetadata(it); + } + return it[METADATA].objectID; +}; +var getWeakData = function (it, create) { + if (!hasOwn(it, METADATA)) { + if (!isExtensible(it)) + return true; + if (!create) + return false; + setMetadata(it); + } + return it[METADATA].weakData; +}; +var onFreeze = function (it) { + if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) + setMetadata(it); + return it; +}; +var enable = function () { + meta.enable = function () { + }; + REQUIRED = true; + var getOwnPropertyNames = getOwnPropertyNamesModule.f; + var splice = uncurryThis([].splice); + var test = {}; + test[METADATA] = 1; + if (getOwnPropertyNames(test).length) { + getOwnPropertyNamesModule.f = function (it) { + var result = getOwnPropertyNames(it); + for (var i = 0, length = result.length; i < length; i++) { + if (result[i] === METADATA) { + splice(result, i, 1); + break; + } + } + return result; + }; + $({ + target: 'Object', + stat: true, + forced: true + }, { getOwnPropertyNames: getOwnPropertyNamesExternalModule.f }); + } +}; +var meta = module.exports = { + enable: enable, + fastKey: fastKey, + getWeakData: getWeakData, + onFreeze: onFreeze +}; +hiddenKeys[METADATA] = true; /***/ }), /* 100 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var global = __w_pdfjs_require__(12); - -var navigator = global.navigator; -module.exports = navigator && navigator.userAgent || ''; +var classof = __w_pdfjs_require__(19); +var toIndexedObject = __w_pdfjs_require__(16); +var $getOwnPropertyNames = (__w_pdfjs_require__(60).f); +var arraySlice = __w_pdfjs_require__(101); +var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; +var getWindowNames = function (it) { + try { + return $getOwnPropertyNames(it); + } catch (error) { + return arraySlice(windowNames); + } +}; +module.exports.f = function getOwnPropertyNames(it) { + return windowNames && classof(it) == 'Window' ? getWindowNames(it) : $getOwnPropertyNames(toIndexedObject(it)); +}; /***/ }), /* 101 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var anObject = __w_pdfjs_require__(16); - -var isObject = __w_pdfjs_require__(17); - -var newPromiseCapability = __w_pdfjs_require__(98); - -module.exports = function (C, x) { - anObject(C); - if (isObject(x) && x.constructor === C) return x; - var promiseCapability = newPromiseCapability.f(C); - var resolve = promiseCapability.resolve; - resolve(x); - return promiseCapability.promise; +var toAbsoluteIndex = __w_pdfjs_require__(63); +var lengthOfArrayLike = __w_pdfjs_require__(66); +var createProperty = __w_pdfjs_require__(102); +var $Array = Array; +var max = Math.max; +module.exports = function (O, start, end) { + var length = lengthOfArrayLike(O); + var k = toAbsoluteIndex(start, length); + var fin = toAbsoluteIndex(end === undefined ? length : end, length); + var result = $Array(max(fin - k, 0)); + for (var n = 0; k < fin; k++, n++) + createProperty(result, n, O[k]); + result.length = n; + return result; }; /***/ }), /* 102 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var redefine = __w_pdfjs_require__(24); - -module.exports = function (target, src, safe) { - for (var key in src) { - redefine(target, key, src[key], safe); - } - - return target; +var toPropertyKey = __w_pdfjs_require__(21); +var definePropertyModule = __w_pdfjs_require__(47); +var createPropertyDescriptor = __w_pdfjs_require__(15); +module.exports = function (object, key, value) { + var propertyKey = toPropertyKey(key); + if (propertyKey in object) + definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); + else + object[propertyKey] = value; }; /***/ }), /* 103 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var global = __w_pdfjs_require__(12); - -var dP = __w_pdfjs_require__(15); - -var DESCRIPTORS = __w_pdfjs_require__(19); - -var SPECIES = __w_pdfjs_require__(37)('species'); - -module.exports = function (KEY) { - var C = global[KEY]; - if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { - configurable: true, - get: function get() { - return this; - } - }); -}; +var fails = __w_pdfjs_require__(11); +var isObject = __w_pdfjs_require__(23); +var classof = __w_pdfjs_require__(19); +var ARRAY_BUFFER_NON_EXTENSIBLE = __w_pdfjs_require__(104); +var $isExtensible = Object.isExtensible; +var FAILS_ON_PRIMITIVES = fails(function () { + $isExtensible(1); +}); +module.exports = FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE ? function isExtensible(it) { + if (!isObject(it)) + return false; + if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') + return false; + return $isExtensible ? $isExtensible(it) : true; +} : $isExtensible; /***/ }), /* 104 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(11); - -var core = __w_pdfjs_require__(13); - -var global = __w_pdfjs_require__(12); - -var speciesConstructor = __w_pdfjs_require__(94); - -var promiseResolve = __w_pdfjs_require__(101); - -$export($export.P + $export.R, 'Promise', { - 'finally': function _finally(onFinally) { - var C = speciesConstructor(this, core.Promise || global.Promise); - var isFunction = typeof onFinally == 'function'; - return this.then(isFunction ? function (x) { - return promiseResolve(C, onFinally()).then(function () { - return x; - }); - } : onFinally, isFunction ? function (e) { - return promiseResolve(C, onFinally()).then(function () { - throw e; - }); - } : onFinally); - } +var fails = __w_pdfjs_require__(11); +module.exports = fails(function () { + if (typeof ArrayBuffer == 'function') { + var buffer = new ArrayBuffer(8); + if (Object.isExtensible(buffer)) + Object.defineProperty(buffer, 'a', { value: 8 }); + } }); /***/ }), /* 105 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(11); - -var newPromiseCapability = __w_pdfjs_require__(98); - -var perform = __w_pdfjs_require__(99); - -$export($export.S, 'Promise', { - 'try': function _try(callbackfn) { - var promiseCapability = newPromiseCapability.f(this); - var result = perform(callbackfn); - (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v); - return promiseCapability.promise; - } +var fails = __w_pdfjs_require__(11); +module.exports = !fails(function () { + return Object.isExtensible(Object.preventExtensions({})); }); /***/ }), /* 106 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(87); - -__w_pdfjs_require__(88); - -__w_pdfjs_require__(107); - -__w_pdfjs_require__(119); - -__w_pdfjs_require__(121); - -module.exports = __w_pdfjs_require__(13).WeakMap; +var bind = __w_pdfjs_require__(107); +var call = __w_pdfjs_require__(12); +var anObject = __w_pdfjs_require__(49); +var tryToString = __w_pdfjs_require__(34); +var isArrayIteratorMethod = __w_pdfjs_require__(108); +var lengthOfArrayLike = __w_pdfjs_require__(66); +var isPrototypeOf = __w_pdfjs_require__(27); +var getIterator = __w_pdfjs_require__(109); +var getIteratorMethod = __w_pdfjs_require__(110); +var iteratorClose = __w_pdfjs_require__(111); +var $TypeError = TypeError; +var Result = function (stopped, result) { + this.stopped = stopped; + this.result = result; +}; +var ResultPrototype = Result.prototype; +module.exports = function (iterable, unboundFunction, options) { + var that = options && options.that; + var AS_ENTRIES = !!(options && options.AS_ENTRIES); + var IS_RECORD = !!(options && options.IS_RECORD); + var IS_ITERATOR = !!(options && options.IS_ITERATOR); + var INTERRUPTED = !!(options && options.INTERRUPTED); + var fn = bind(unboundFunction, that); + var iterator, iterFn, index, length, result, next, step; + var stop = function (condition) { + if (iterator) + iteratorClose(iterator, 'normal', condition); + return new Result(true, condition); + }; + var callFn = function (value) { + if (AS_ENTRIES) { + anObject(value); + return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]); + } + return INTERRUPTED ? fn(value, stop) : fn(value); + }; + if (IS_RECORD) { + iterator = iterable.iterator; + } else if (IS_ITERATOR) { + iterator = iterable; + } else { + iterFn = getIteratorMethod(iterable); + if (!iterFn) + throw $TypeError(tryToString(iterable) + ' is not iterable'); + if (isArrayIteratorMethod(iterFn)) { + for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) { + result = callFn(iterable[index]); + if (result && isPrototypeOf(ResultPrototype, result)) + return result; + } + return new Result(false); + } + iterator = getIterator(iterable, iterFn); + } + next = IS_RECORD ? iterable.next : iterator.next; + while (!(step = call(next, iterator)).done) { + try { + result = callFn(step.value); + } catch (error) { + iteratorClose(iterator, 'throw', error); + } + if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) + return result; + } + return new Result(false); +}; /***/ }), /* 107 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var global = __w_pdfjs_require__(12); - -var each = __w_pdfjs_require__(108)(0); - -var redefine = __w_pdfjs_require__(24); - -var meta = __w_pdfjs_require__(112); - -var assign = __w_pdfjs_require__(76); - -var weak = __w_pdfjs_require__(113); - -var isObject = __w_pdfjs_require__(17); - -var validate = __w_pdfjs_require__(114); - -var NATIVE_WEAK_MAP = __w_pdfjs_require__(114); - -var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global; -var WEAK_MAP = 'WeakMap'; -var getWeak = meta.getWeak; -var isExtensible = Object.isExtensible; -var uncaughtFrozenStore = weak.ufstore; -var InternalMap; - -var wrapper = function wrapper(get) { - return function WeakMap() { - return get(this, arguments.length > 0 ? arguments[0] : undefined); - }; +var uncurryThis = __w_pdfjs_require__(18); +var aCallable = __w_pdfjs_require__(33); +var NATIVE_BIND = __w_pdfjs_require__(13); +var bind = uncurryThis(uncurryThis.bind); +module.exports = function (fn, that) { + aCallable(fn); + return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function () { + return fn.apply(that, arguments); + }; }; -var methods = { - get: function get(key) { - if (isObject(key)) { - var data = getWeak(key); - if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key); - return data ? data[this._i] : undefined; - } - }, - set: function set(key, value) { - return weak.def(validate(this, WEAK_MAP), key, value); - } -}; - -var $WeakMap = module.exports = __w_pdfjs_require__(115)(WEAK_MAP, wrapper, methods, weak, true, true); - -if (NATIVE_WEAK_MAP && IS_IE11) { - InternalMap = weak.getConstructor(wrapper, WEAK_MAP); - assign(InternalMap.prototype, methods); - meta.NEED = true; - each(['delete', 'has', 'get', 'set'], function (key) { - var proto = $WeakMap.prototype; - var method = proto[key]; - redefine(proto, key, function (a, b) { - if (isObject(a) && !isExtensible(a)) { - if (!this._f) this._f = new InternalMap(); - - var result = this._f[key](a, b); - - return key == 'set' ? this : result; - } - - return method.call(this, a, b); - }); - }); -} - /***/ }), /* 108 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var ctx = __w_pdfjs_require__(30); - -var IObject = __w_pdfjs_require__(48); - -var toObject = __w_pdfjs_require__(66); - -var toLength = __w_pdfjs_require__(32); - -var asc = __w_pdfjs_require__(109); - -module.exports = function (TYPE, $create) { - var IS_MAP = TYPE == 1; - var IS_FILTER = TYPE == 2; - var IS_SOME = TYPE == 3; - var IS_EVERY = TYPE == 4; - var IS_FIND_INDEX = TYPE == 6; - var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; - var create = $create || asc; - return function ($this, callbackfn, that) { - var O = toObject($this); - var self = IObject(O); - var f = ctx(callbackfn, that, 3); - var length = toLength(self.length); - var index = 0; - var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; - var val, res; - - for (; length > index; index++) { - if (NO_HOLES || index in self) { - val = self[index]; - res = f(val, index, O); - - if (TYPE) { - if (IS_MAP) result[index] = res;else if (res) switch (TYPE) { - case 3: - return true; - - case 5: - return val; - - case 6: - return index; - - case 2: - result.push(val); - } else if (IS_EVERY) return false; - } - } - } - - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; - }; +var wellKnownSymbol = __w_pdfjs_require__(36); +var Iterators = __w_pdfjs_require__(89); +var ITERATOR = wellKnownSymbol('iterator'); +var ArrayPrototype = Array.prototype; +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); }; /***/ }), /* 109 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var speciesConstructor = __w_pdfjs_require__(110); - -module.exports = function (original, length) { - return new (speciesConstructor(original))(length); +var call = __w_pdfjs_require__(12); +var aCallable = __w_pdfjs_require__(33); +var anObject = __w_pdfjs_require__(49); +var tryToString = __w_pdfjs_require__(34); +var getIteratorMethod = __w_pdfjs_require__(110); +var $TypeError = TypeError; +module.exports = function (argument, usingIterator) { + var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator; + if (aCallable(iteratorMethod)) + return anObject(call(iteratorMethod, argument)); + throw $TypeError(tryToString(argument) + ' is not iterable'); }; /***/ }), /* 110 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var isObject = __w_pdfjs_require__(17); - -var isArray = __w_pdfjs_require__(111); - -var SPECIES = __w_pdfjs_require__(37)('species'); - -module.exports = function (original) { - var C; - - if (isArray(original)) { - C = original.constructor; - if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; - - if (isObject(C)) { - C = C[SPECIES]; - if (C === null) C = undefined; - } - } - - return C === undefined ? Array : C; +var classof = __w_pdfjs_require__(81); +var getMethod = __w_pdfjs_require__(32); +var Iterators = __w_pdfjs_require__(89); +var wellKnownSymbol = __w_pdfjs_require__(36); +var ITERATOR = wellKnownSymbol('iterator'); +module.exports = function (it) { + if (it != undefined) + return getMethod(it, ITERATOR) || getMethod(it, '@@iterator') || Iterators[classof(it)]; }; /***/ }), /* 111 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var cof = __w_pdfjs_require__(36); - -module.exports = Array.isArray || function isArray(arg) { - return cof(arg) == 'Array'; +var call = __w_pdfjs_require__(12); +var anObject = __w_pdfjs_require__(49); +var getMethod = __w_pdfjs_require__(32); +module.exports = function (iterator, kind, value) { + var innerResult, innerError; + anObject(iterator); + try { + innerResult = getMethod(iterator, 'return'); + if (!innerResult) { + if (kind === 'throw') + throw value; + return value; + } + innerResult = call(innerResult, iterator); + } catch (error) { + innerError = true; + innerResult = error; + } + if (kind === 'throw') + throw value; + if (innerError) + throw innerResult; + anObject(innerResult); + return value; }; /***/ }), /* 112 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -var META = __w_pdfjs_require__(26)('meta'); - -var isObject = __w_pdfjs_require__(17); - -var has = __w_pdfjs_require__(25); - -var setDesc = __w_pdfjs_require__(15).f; - -var id = 0; - -var isExtensible = Object.isExtensible || function () { - return true; -}; - -var FREEZE = !__w_pdfjs_require__(20)(function () { - return isExtensible(Object.preventExtensions({})); -}); - -var setMeta = function setMeta(it) { - setDesc(it, META, { - value: { - i: 'O' + ++id, - w: {} - } - }); -}; - -var fastKey = function fastKey(it, create) { - if (!isObject(it)) return _typeof(it) == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - - if (!has(it, META)) { - if (!isExtensible(it)) return 'F'; - if (!create) return 'E'; - setMeta(it); - } - - return it[META].i; -}; - -var getWeak = function getWeak(it, create) { - if (!has(it, META)) { - if (!isExtensible(it)) return true; - if (!create) return false; - setMeta(it); - } - - return it[META].w; -}; - -var onFreeze = function onFreeze(it) { - if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); +var isPrototypeOf = __w_pdfjs_require__(27); +var $TypeError = TypeError; +module.exports = function (it, Prototype) { + if (isPrototypeOf(Prototype, it)) return it; -}; - -var meta = module.exports = { - KEY: META, - NEED: false, - fastKey: fastKey, - getWeak: getWeak, - onFreeze: onFreeze + throw $TypeError('Incorrect invocation'); }; /***/ }), /* 113 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var redefineAll = __w_pdfjs_require__(102); - -var getWeak = __w_pdfjs_require__(112).getWeak; - -var anObject = __w_pdfjs_require__(16); - -var isObject = __w_pdfjs_require__(17); - -var anInstance = __w_pdfjs_require__(92); - -var forOf = __w_pdfjs_require__(93); - -var createArrayMethod = __w_pdfjs_require__(108); - -var $has = __w_pdfjs_require__(25); - -var validate = __w_pdfjs_require__(114); - -var arrayFind = createArrayMethod(5); -var arrayFindIndex = createArrayMethod(6); -var id = 0; - -var uncaughtFrozenStore = function uncaughtFrozenStore(that) { - return that._l || (that._l = new UncaughtFrozenStore()); -}; - -var UncaughtFrozenStore = function UncaughtFrozenStore() { - this.a = []; -}; - -var findUncaughtFrozen = function findUncaughtFrozen(store, key) { - return arrayFind(store.a, function (it) { - return it[0] === key; - }); -}; - -UncaughtFrozenStore.prototype = { - get: function get(key) { - var entry = findUncaughtFrozen(this, key); - if (entry) return entry[1]; +var wellKnownSymbol = __w_pdfjs_require__(36); +var ITERATOR = wellKnownSymbol('iterator'); +var SAFE_CLOSING = false; +try { + var called = 0; + var iteratorWithReturn = { + next: function () { + return { done: !!called++ }; }, - has: function has(key) { - return !!findUncaughtFrozen(this, key); - }, - set: function set(key, value) { - var entry = findUncaughtFrozen(this, key); - if (entry) entry[1] = value;else this.a.push([key, value]); - }, - 'delete': function _delete(key) { - var index = arrayFindIndex(this.a, function (it) { - return it[0] === key; - }); - if (~index) this.a.splice(index, 1); - return !!~index; + 'return': function () { + SAFE_CLOSING = true; } -}; -module.exports = { - getConstructor: function getConstructor(wrapper, NAME, IS_MAP, ADDER) { - var C = wrapper(function (that, iterable) { - anInstance(that, C, NAME, '_i'); - that._t = NAME; - that._i = id++; - that._l = undefined; - if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); - }); - redefineAll(C.prototype, { - 'delete': function _delete(key) { - if (!isObject(key)) return false; - var data = getWeak(key); - if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key); - return data && $has(data, this._i) && delete data[this._i]; - }, - has: function has(key) { - if (!isObject(key)) return false; - var data = getWeak(key); - if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key); - return data && $has(data, this._i); - } - }); - return C; - }, - def: function def(that, key, value) { - var data = getWeak(anObject(key), true); - if (data === true) uncaughtFrozenStore(that).set(key, value);else data[that._i] = value; - return that; - }, - ufstore: uncaughtFrozenStore + }; + iteratorWithReturn[ITERATOR] = function () { + return this; + }; + Array.from(iteratorWithReturn, function () { + throw 2; + }); +} catch (error) { +} +module.exports = function (exec, SKIP_CLOSING) { + if (!SKIP_CLOSING && !SAFE_CLOSING) + return false; + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR] = function () { + return { + next: function () { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { + } + return ITERATION_SUPPORT; }; /***/ }), /* 114 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var isObject = __w_pdfjs_require__(17); - -module.exports = function (it, TYPE) { - if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!'); - return it; +var isCallable = __w_pdfjs_require__(24); +var isObject = __w_pdfjs_require__(23); +var setPrototypeOf = __w_pdfjs_require__(85); +module.exports = function ($this, dummy, Wrapper) { + var NewTarget, NewTargetPrototype; + if (setPrototypeOf && isCallable(NewTarget = dummy.constructor) && NewTarget !== Wrapper && isObject(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype) + setPrototypeOf($this, NewTargetPrototype); + return $this; }; /***/ }), /* 115 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var global = __w_pdfjs_require__(12); - -var $export = __w_pdfjs_require__(11); - -var redefine = __w_pdfjs_require__(24); - -var redefineAll = __w_pdfjs_require__(102); - -var meta = __w_pdfjs_require__(112); - -var forOf = __w_pdfjs_require__(93); - -var anInstance = __w_pdfjs_require__(92); - -var isObject = __w_pdfjs_require__(17); - -var fails = __w_pdfjs_require__(20); - -var $iterDetect = __w_pdfjs_require__(73); - -var setToStringTag = __w_pdfjs_require__(64); - -var inheritIfRequired = __w_pdfjs_require__(116); - -module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) { - var Base = global[NAME]; - var C = Base; - var ADDER = IS_MAP ? 'set' : 'add'; - var proto = C && C.prototype; - var O = {}; - - var fixMethod = function fixMethod(KEY) { - var fn = proto[KEY]; - redefine(proto, KEY, KEY == 'delete' ? function (a) { - return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); - } : KEY == 'has' ? function has(a) { - return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); - } : KEY == 'get' ? function get(a) { - return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a); - } : KEY == 'add' ? function add(a) { - fn.call(this, a === 0 ? 0 : a); - return this; - } : function set(a, b) { - fn.call(this, a === 0 ? 0 : a, b); - return this; +var defineProperty = (__w_pdfjs_require__(47).f); +var create = __w_pdfjs_require__(72); +var defineBuiltIns = __w_pdfjs_require__(116); +var bind = __w_pdfjs_require__(107); +var anInstance = __w_pdfjs_require__(112); +var iterate = __w_pdfjs_require__(106); +var defineIterator = __w_pdfjs_require__(90); +var setSpecies = __w_pdfjs_require__(117); +var DESCRIPTORS = __w_pdfjs_require__(10); +var fastKey = (__w_pdfjs_require__(99).fastKey); +var InternalStateModule = __w_pdfjs_require__(54); +var setInternalState = InternalStateModule.set; +var internalStateGetterFor = InternalStateModule.getterFor; +module.exports = { + getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { + var Constructor = wrapper(function (that, iterable) { + anInstance(that, Prototype); + setInternalState(that, { + type: CONSTRUCTOR_NAME, + index: create(null), + first: undefined, + last: undefined, + size: 0 + }); + if (!DESCRIPTORS) + that.size = 0; + if (iterable != undefined) + iterate(iterable, that[ADDER], { + that: that, + AS_ENTRIES: IS_MAP }); + }); + var Prototype = Constructor.prototype; + var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); + var define = function (that, key, value) { + var state = getInternalState(that); + var entry = getEntry(that, key); + var previous, index; + if (entry) { + entry.value = value; + } else { + state.last = entry = { + index: index = fastKey(key, true), + key: key, + value: value, + previous: previous = state.last, + next: undefined, + removed: false + }; + if (!state.first) + state.first = entry; + if (previous) + previous.next = entry; + if (DESCRIPTORS) + state.size++; + else + that.size++; + if (index !== 'F') + state.index[index] = entry; + } + return that; }; - - if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () { - new C().entries().next(); - }))) { - C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); - redefineAll(C.prototype, methods); - meta.NEED = true; - } else { - var instance = new C(); - var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; - var THROWS_ON_PRIMITIVES = fails(function () { - instance.has(1); - }); - var ACCEPT_ITERABLES = $iterDetect(function (iter) { - new C(iter); - }); - var BUGGY_ZERO = !IS_WEAK && fails(function () { - var $instance = new C(); - var index = 5; - - while (index--) { - $instance[ADDER](index, index); - } - - return !$instance.has(-0); - }); - - if (!ACCEPT_ITERABLES) { - C = wrapper(function (target, iterable) { - anInstance(target, C, NAME); - var that = inheritIfRequired(new Base(), target, C); - if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); - return that; - }); - C.prototype = proto; - proto.constructor = C; + var getEntry = function (that, key) { + var state = getInternalState(that); + var index = fastKey(key); + var entry; + if (index !== 'F') + return state.index[index]; + for (entry = state.first; entry; entry = entry.next) { + if (entry.key == key) + return entry; + } + }; + defineBuiltIns(Prototype, { + clear: function clear() { + var that = this; + var state = getInternalState(that); + var data = state.index; + var entry = state.first; + while (entry) { + entry.removed = true; + if (entry.previous) + entry.previous = entry.previous.next = undefined; + delete data[entry.index]; + entry = entry.next; } - - if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { - fixMethod('delete'); - fixMethod('has'); - IS_MAP && fixMethod('get'); + state.first = state.last = undefined; + if (DESCRIPTORS) + state.size = 0; + else + that.size = 0; + }, + 'delete': function (key) { + var that = this; + var state = getInternalState(that); + var entry = getEntry(that, key); + if (entry) { + var next = entry.next; + var prev = entry.previous; + delete state.index[entry.index]; + entry.removed = true; + if (prev) + prev.next = next; + if (next) + next.previous = prev; + if (state.first == entry) + state.first = next; + if (state.last == entry) + state.last = prev; + if (DESCRIPTORS) + state.size--; + else + that.size--; } - - if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); - if (IS_WEAK && proto.clear) delete proto.clear; - } - - setToStringTag(C, NAME); - O[NAME] = C; - $export($export.G + $export.W + $export.F * (C != Base), O); - if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP); - return C; + return !!entry; + }, + forEach: function forEach(callbackfn) { + var state = getInternalState(this); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined); + var entry; + while (entry = entry ? entry.next : state.first) { + boundFunction(entry.value, entry.key, this); + while (entry && entry.removed) + entry = entry.previous; + } + }, + has: function has(key) { + return !!getEntry(this, key); + } + }); + defineBuiltIns(Prototype, IS_MAP ? { + get: function get(key) { + var entry = getEntry(this, key); + return entry && entry.value; + }, + set: function set(key, value) { + return define(this, key === 0 ? 0 : key, value); + } + } : { + add: function add(value) { + return define(this, value = value === 0 ? 0 : value, value); + } + }); + if (DESCRIPTORS) + defineProperty(Prototype, 'size', { + get: function () { + return getInternalState(this).size; + } + }); + return Constructor; + }, + setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) { + var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator'; + var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME); + var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME); + defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) { + setInternalState(this, { + type: ITERATOR_NAME, + target: iterated, + state: getInternalCollectionState(iterated), + kind: kind, + last: undefined + }); + }, function () { + var state = getInternalIteratorState(this); + var kind = state.kind; + var entry = state.last; + while (entry && entry.removed) + entry = entry.previous; + if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) { + state.target = undefined; + return { + value: undefined, + done: true + }; + } + if (kind == 'keys') + return { + value: entry.key, + done: false + }; + if (kind == 'values') + return { + value: entry.value, + done: false + }; + return { + value: [ + entry.key, + entry.value + ], + done: false + }; + }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); + setSpecies(CONSTRUCTOR_NAME); + } }; /***/ }), /* 116 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var isObject = __w_pdfjs_require__(17); - -var setPrototypeOf = __w_pdfjs_require__(117).set; - -module.exports = function (that, target, C) { - var S = target.constructor; - var P; - - if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) { - setPrototypeOf(that, P); - } - - return that; +var defineBuiltIn = __w_pdfjs_require__(50); +module.exports = function (target, src, options) { + for (var key in src) + defineBuiltIn(target, key, src[key], options); + return target; }; /***/ }), /* 117 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var isObject = __w_pdfjs_require__(17); - -var anObject = __w_pdfjs_require__(16); - -var check = function check(O, proto) { - anObject(O); - if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); -}; - -module.exports = { - set: Object.setPrototypeOf || ('__proto__' in {} ? function (test, buggy, set) { - try { - set = __w_pdfjs_require__(30)(Function.call, __w_pdfjs_require__(118).f(Object.prototype, '__proto__').set, 2); - set(test, []); - buggy = !(test instanceof Array); - } catch (e) { - buggy = true; - } - - return function setPrototypeOf(O, proto) { - check(O, proto); - if (buggy) O.__proto__ = proto;else set(O, proto); - return O; - }; - }({}, false) : undefined), - check: check +var getBuiltIn = __w_pdfjs_require__(26); +var definePropertyModule = __w_pdfjs_require__(47); +var wellKnownSymbol = __w_pdfjs_require__(36); +var DESCRIPTORS = __w_pdfjs_require__(10); +var SPECIES = wellKnownSymbol('species'); +module.exports = function (CONSTRUCTOR_NAME) { + var Constructor = getBuiltIn(CONSTRUCTOR_NAME); + var defineProperty = definePropertyModule.f; + if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { + defineProperty(Constructor, SPECIES, { + configurable: true, + get: function () { + return this; + } + }); + } }; /***/ }), /* 118 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var pIE = __w_pdfjs_require__(78); - -var createDesc = __w_pdfjs_require__(23); - -var toIObject = __w_pdfjs_require__(47); - -var toPrimitive = __w_pdfjs_require__(22); - -var has = __w_pdfjs_require__(25); - -var IE8_DOM_DEFINE = __w_pdfjs_require__(18); - -var gOPD = Object.getOwnPropertyDescriptor; -exports.f = __w_pdfjs_require__(19) ? gOPD : function getOwnPropertyDescriptor(O, P) { - O = toIObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return gOPD(O, P); - } catch (e) {} - if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); -}; +__w_pdfjs_require__(119); /***/ }), /* 119 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -__w_pdfjs_require__(120)('WeakMap'); +var collection = __w_pdfjs_require__(98); +var collectionStrong = __w_pdfjs_require__(115); +collection('Set', function (init) { + return function Set() { + return init(this, arguments.length ? arguments[0] : undefined); + }; +}, collectionStrong); /***/ }), /* 120 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(11); - -module.exports = function (COLLECTION) { - $export($export.S, COLLECTION, { - of: function of() { - var length = arguments.length; - var A = new Array(length); - - while (length--) { - A[length] = arguments[length]; - } - - return new this(A); - } - }); +var IS_PURE = __w_pdfjs_require__(38); +var $ = __w_pdfjs_require__(7); +var global = __w_pdfjs_require__(8); +var getBuiltin = __w_pdfjs_require__(26); +var uncurryThis = __w_pdfjs_require__(18); +var fails = __w_pdfjs_require__(11); +var uid = __w_pdfjs_require__(43); +var isCallable = __w_pdfjs_require__(24); +var isConstructor = __w_pdfjs_require__(121); +var isObject = __w_pdfjs_require__(23); +var isSymbol = __w_pdfjs_require__(25); +var iterate = __w_pdfjs_require__(106); +var anObject = __w_pdfjs_require__(49); +var classof = __w_pdfjs_require__(81); +var hasOwn = __w_pdfjs_require__(41); +var createProperty = __w_pdfjs_require__(102); +var createNonEnumerableProperty = __w_pdfjs_require__(46); +var lengthOfArrayLike = __w_pdfjs_require__(66); +var validateArgumentsLength = __w_pdfjs_require__(122); +var getRegExpFlags = __w_pdfjs_require__(123); +var ERROR_STACK_INSTALLABLE = __w_pdfjs_require__(125); +var V8 = __w_pdfjs_require__(30); +var IS_BROWSER = __w_pdfjs_require__(126); +var IS_DENO = __w_pdfjs_require__(127); +var IS_NODE = __w_pdfjs_require__(128); +var Object = global.Object; +var Date = global.Date; +var Error = global.Error; +var EvalError = global.EvalError; +var RangeError = global.RangeError; +var ReferenceError = global.ReferenceError; +var SyntaxError = global.SyntaxError; +var TypeError = global.TypeError; +var URIError = global.URIError; +var PerformanceMark = global.PerformanceMark; +var WebAssembly = global.WebAssembly; +var CompileError = WebAssembly && WebAssembly.CompileError || Error; +var LinkError = WebAssembly && WebAssembly.LinkError || Error; +var RuntimeError = WebAssembly && WebAssembly.RuntimeError || Error; +var DOMException = getBuiltin('DOMException'); +var Set = getBuiltin('Set'); +var Map = getBuiltin('Map'); +var MapPrototype = Map.prototype; +var mapHas = uncurryThis(MapPrototype.has); +var mapGet = uncurryThis(MapPrototype.get); +var mapSet = uncurryThis(MapPrototype.set); +var setAdd = uncurryThis(Set.prototype.add); +var objectKeys = getBuiltin('Object', 'keys'); +var push = uncurryThis([].push); +var booleanValueOf = uncurryThis(true.valueOf); +var numberValueOf = uncurryThis(1.0.valueOf); +var stringValueOf = uncurryThis(''.valueOf); +var getTime = uncurryThis(Date.prototype.getTime); +var PERFORMANCE_MARK = uid('structuredClone'); +var DATA_CLONE_ERROR = 'DataCloneError'; +var TRANSFERRING = 'Transferring'; +var checkBasicSemantic = function (structuredCloneImplementation) { + return !fails(function () { + var set1 = new global.Set([7]); + var set2 = structuredCloneImplementation(set1); + var number = structuredCloneImplementation(Object(7)); + return set2 == set1 || !set2.has(7) || typeof number != 'object' || number != 7; + }) && structuredCloneImplementation; }; +var checkErrorsCloning = function (structuredCloneImplementation, $Error) { + return !fails(function () { + var error = new $Error(); + var test = structuredCloneImplementation({ + a: error, + b: error + }); + return !(test && test.a === test.b && test.a instanceof $Error && test.a.stack === error.stack); + }); +}; +var checkNewErrorsCloningSemantic = function (structuredCloneImplementation) { + return !fails(function () { + var test = structuredCloneImplementation(new global.AggregateError([1], PERFORMANCE_MARK, { cause: 3 })); + return test.name != 'AggregateError' || test.errors[0] != 1 || test.message != PERFORMANCE_MARK || test.cause != 3; + }); +}; +var nativeStructuredClone = global.structuredClone; +var FORCED_REPLACEMENT = IS_PURE || !checkErrorsCloning(nativeStructuredClone, Error) || !checkErrorsCloning(nativeStructuredClone, DOMException) || !checkNewErrorsCloningSemantic(nativeStructuredClone); +var structuredCloneFromMark = !nativeStructuredClone && checkBasicSemantic(function (value) { + return new PerformanceMark(PERFORMANCE_MARK, { detail: value }).detail; +}); +var nativeRestrictedStructuredClone = checkBasicSemantic(nativeStructuredClone) || structuredCloneFromMark; +var throwUncloneable = function (type) { + throw new DOMException('Uncloneable type: ' + type, DATA_CLONE_ERROR); +}; +var throwUnpolyfillable = function (type, kind) { + throw new DOMException((kind || 'Cloning') + ' of ' + type + ' cannot be properly polyfilled in this engine', DATA_CLONE_ERROR); +}; +var structuredCloneInternal = function (value, map) { + if (isSymbol(value)) + throwUncloneable('Symbol'); + if (!isObject(value)) + return value; + if (map) { + if (mapHas(map, value)) + return mapGet(map, value); + } else + map = new Map(); + var type = classof(value); + var deep = false; + var C, name, cloned, dataTransfer, i, length, keys, key, source, target; + switch (type) { + case 'Array': + cloned = []; + deep = true; + break; + case 'Object': + cloned = {}; + deep = true; + break; + case 'Map': + cloned = new Map(); + deep = true; + break; + case 'Set': + cloned = new Set(); + deep = true; + break; + case 'RegExp': + cloned = new RegExp(value.source, getRegExpFlags(value)); + break; + case 'Error': + name = value.name; + switch (name) { + case 'AggregateError': + cloned = getBuiltin('AggregateError')([]); + break; + case 'EvalError': + cloned = EvalError(); + break; + case 'RangeError': + cloned = RangeError(); + break; + case 'ReferenceError': + cloned = ReferenceError(); + break; + case 'SyntaxError': + cloned = SyntaxError(); + break; + case 'TypeError': + cloned = TypeError(); + break; + case 'URIError': + cloned = URIError(); + break; + case 'CompileError': + cloned = CompileError(); + break; + case 'LinkError': + cloned = LinkError(); + break; + case 'RuntimeError': + cloned = RuntimeError(); + break; + default: + cloned = Error(); + } + deep = true; + break; + case 'DOMException': + cloned = new DOMException(value.message, value.name); + deep = true; + break; + case 'DataView': + case 'Int8Array': + case 'Uint8Array': + case 'Uint8ClampedArray': + case 'Int16Array': + case 'Uint16Array': + case 'Int32Array': + case 'Uint32Array': + case 'Float32Array': + case 'Float64Array': + case 'BigInt64Array': + case 'BigUint64Array': + C = global[type]; + if (!isObject(C)) + throwUnpolyfillable(type); + cloned = new C(structuredCloneInternal(value.buffer, map), value.byteOffset, type === 'DataView' ? value.byteLength : value.length); + break; + case 'DOMQuad': + try { + cloned = new DOMQuad(structuredCloneInternal(value.p1, map), structuredCloneInternal(value.p2, map), structuredCloneInternal(value.p3, map), structuredCloneInternal(value.p4, map)); + } catch (error) { + if (nativeRestrictedStructuredClone) { + cloned = nativeRestrictedStructuredClone(value); + } else + throwUnpolyfillable(type); + } + break; + case 'FileList': + C = global.DataTransfer; + if (isConstructor(C)) { + dataTransfer = new C(); + for (i = 0, length = lengthOfArrayLike(value); i < length; i++) { + dataTransfer.items.add(structuredCloneInternal(value[i], map)); + } + cloned = dataTransfer.files; + } else if (nativeRestrictedStructuredClone) { + cloned = nativeRestrictedStructuredClone(value); + } else + throwUnpolyfillable(type); + break; + case 'ImageData': + try { + cloned = new ImageData(structuredCloneInternal(value.data, map), value.width, value.height, { colorSpace: value.colorSpace }); + } catch (error) { + if (nativeRestrictedStructuredClone) { + cloned = nativeRestrictedStructuredClone(value); + } else + throwUnpolyfillable(type); + } + break; + default: + if (nativeRestrictedStructuredClone) { + cloned = nativeRestrictedStructuredClone(value); + } else + switch (type) { + case 'BigInt': + cloned = Object(value.valueOf()); + break; + case 'Boolean': + cloned = Object(booleanValueOf(value)); + break; + case 'Number': + cloned = Object(numberValueOf(value)); + break; + case 'String': + cloned = Object(stringValueOf(value)); + break; + case 'Date': + cloned = new Date(getTime(value)); + break; + case 'ArrayBuffer': + C = global.DataView; + if (!C && typeof value.slice != 'function') + throwUnpolyfillable(type); + try { + if (typeof value.slice == 'function') { + cloned = value.slice(0); + } else { + length = value.byteLength; + cloned = new ArrayBuffer(length); + source = new C(value); + target = new C(cloned); + for (i = 0; i < length; i++) { + target.setUint8(i, source.getUint8(i)); + } + } + } catch (error) { + throw new DOMException('ArrayBuffer is detached', DATA_CLONE_ERROR); + } + break; + case 'SharedArrayBuffer': + cloned = value; + break; + case 'Blob': + try { + cloned = value.slice(0, value.size, value.type); + } catch (error) { + throwUnpolyfillable(type); + } + break; + case 'DOMPoint': + case 'DOMPointReadOnly': + C = global[type]; + try { + cloned = C.fromPoint ? C.fromPoint(value) : new C(value.x, value.y, value.z, value.w); + } catch (error) { + throwUnpolyfillable(type); + } + break; + case 'DOMRect': + case 'DOMRectReadOnly': + C = global[type]; + try { + cloned = C.fromRect ? C.fromRect(value) : new C(value.x, value.y, value.width, value.height); + } catch (error) { + throwUnpolyfillable(type); + } + break; + case 'DOMMatrix': + case 'DOMMatrixReadOnly': + C = global[type]; + try { + cloned = C.fromMatrix ? C.fromMatrix(value) : new C(value); + } catch (error) { + throwUnpolyfillable(type); + } + break; + case 'AudioData': + case 'VideoFrame': + if (!isCallable(value.clone)) + throwUnpolyfillable(type); + try { + cloned = value.clone(); + } catch (error) { + throwUncloneable(type); + } + break; + case 'File': + try { + cloned = new File([value], value.name, value); + } catch (error) { + throwUnpolyfillable(type); + } + break; + case 'CryptoKey': + case 'GPUCompilationMessage': + case 'GPUCompilationInfo': + case 'ImageBitmap': + case 'RTCCertificate': + case 'WebAssembly.Module': + throwUnpolyfillable(type); + default: + throwUncloneable(type); + } + } + mapSet(map, value, cloned); + if (deep) + switch (type) { + case 'Array': + case 'Object': + keys = objectKeys(value); + for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) { + key = keys[i]; + createProperty(cloned, key, structuredCloneInternal(value[key], map)); + } + break; + case 'Map': + value.forEach(function (v, k) { + mapSet(cloned, structuredCloneInternal(k, map), structuredCloneInternal(v, map)); + }); + break; + case 'Set': + value.forEach(function (v) { + setAdd(cloned, structuredCloneInternal(v, map)); + }); + break; + case 'Error': + createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map)); + if (hasOwn(value, 'cause')) { + createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map)); + } + if (name == 'AggregateError') { + cloned.errors = structuredCloneInternal(value.errors, map); + } + case 'DOMException': + if (ERROR_STACK_INSTALLABLE) { + createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map)); + } + } + return cloned; +}; +var PROPER_TRANSFER = nativeStructuredClone && !fails(function () { + if (IS_DENO && V8 > 92 || IS_NODE && V8 > 94 || IS_BROWSER && V8 > 97) + return false; + var buffer = new ArrayBuffer(8); + var clone = nativeStructuredClone(buffer, { transfer: [buffer] }); + return buffer.byteLength != 0 || clone.byteLength != 8; +}); +var tryToTransfer = function (rawTransfer, map) { + if (!isObject(rawTransfer)) + throw TypeError('Transfer option cannot be converted to a sequence'); + var transfer = []; + iterate(rawTransfer, function (value) { + push(transfer, anObject(value)); + }); + var i = 0; + var length = lengthOfArrayLike(transfer); + var value, type, C, transferredArray, transferred, canvas, context; + if (PROPER_TRANSFER) { + transferredArray = nativeStructuredClone(transfer, { transfer: transfer }); + while (i < length) + mapSet(map, transfer[i], transferredArray[i++]); + } else + while (i < length) { + value = transfer[i++]; + if (mapHas(map, value)) + throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR); + type = classof(value); + switch (type) { + case 'ImageBitmap': + C = global.OffscreenCanvas; + if (!isConstructor(C)) + throwUnpolyfillable(type, TRANSFERRING); + try { + canvas = new C(value.width, value.height); + context = canvas.getContext('bitmaprenderer'); + context.transferFromImageBitmap(value); + transferred = canvas.transferToImageBitmap(); + } catch (error) { + } + break; + case 'AudioData': + case 'VideoFrame': + if (!isCallable(value.clone) || !isCallable(value.close)) + throwUnpolyfillable(type, TRANSFERRING); + try { + transferred = value.clone(); + value.close(); + } catch (error) { + } + break; + case 'ArrayBuffer': + case 'MessagePort': + case 'OffscreenCanvas': + case 'ReadableStream': + case 'TransformStream': + case 'WritableStream': + throwUnpolyfillable(type, TRANSFERRING); + } + if (transferred === undefined) + throw new DOMException('This object cannot be transferred: ' + type, DATA_CLONE_ERROR); + mapSet(map, value, transferred); + } +}; +$({ + global: true, + enumerable: true, + sham: !PROPER_TRANSFER, + forced: FORCED_REPLACEMENT +}, { + structuredClone: function structuredClone(value) { + var options = validateArgumentsLength(arguments.length, 1) > 1 && arguments[1] != null ? anObject(arguments[1]) : undefined; + var transfer = options ? options.transfer : undefined; + var map; + if (transfer !== undefined) { + map = new Map(); + tryToTransfer(transfer, map); + } + return structuredCloneInternal(value, map); + } +}); /***/ }), /* 121 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(122)('WeakMap'); +var uncurryThis = __w_pdfjs_require__(18); +var fails = __w_pdfjs_require__(11); +var isCallable = __w_pdfjs_require__(24); +var classof = __w_pdfjs_require__(81); +var getBuiltIn = __w_pdfjs_require__(26); +var inspectSource = __w_pdfjs_require__(53); +var noop = function () { +}; +var empty = []; +var construct = getBuiltIn('Reflect', 'construct'); +var constructorRegExp = /^\s*(?:class|function)\b/; +var exec = uncurryThis(constructorRegExp.exec); +var INCORRECT_TO_STRING = !constructorRegExp.exec(noop); +var isConstructorModern = function isConstructor(argument) { + if (!isCallable(argument)) + return false; + try { + construct(noop, empty, argument); + return true; + } catch (error) { + return false; + } +}; +var isConstructorLegacy = function isConstructor(argument) { + if (!isCallable(argument)) + return false; + switch (classof(argument)) { + case 'AsyncFunction': + case 'GeneratorFunction': + case 'AsyncGeneratorFunction': + return false; + } + try { + return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); + } catch (error) { + return true; + } +}; +isConstructorLegacy.sham = true; +module.exports = !construct || fails(function () { + var called; + return isConstructorModern(isConstructorModern.call) || !isConstructorModern(Object) || !isConstructorModern(function () { + called = true; + }) || called; +}) ? isConstructorLegacy : isConstructorModern; /***/ }), /* 122 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -var $export = __w_pdfjs_require__(11); - -var aFunction = __w_pdfjs_require__(31); - -var ctx = __w_pdfjs_require__(30); - -var forOf = __w_pdfjs_require__(93); - -module.exports = function (COLLECTION) { - $export($export.S, COLLECTION, { - from: function from(source) { - var mapFn = arguments[1]; - var mapping, A, n, cb; - aFunction(this); - mapping = mapFn !== undefined; - if (mapping) aFunction(mapFn); - if (source == undefined) return new this(); - A = []; - - if (mapping) { - n = 0; - cb = ctx(mapFn, arguments[2], 2); - forOf(source, false, function (nextItem) { - A.push(cb(nextItem, n++)); - }); - } else { - forOf(source, false, A.push, A); - } - - return new this(A); - } - }); +var $TypeError = TypeError; +module.exports = function (passed, required) { + if (passed < required) + throw $TypeError('Not enough arguments'); + return passed; }; /***/ }), /* 123 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(87); - -__w_pdfjs_require__(88); - -__w_pdfjs_require__(124); - -__w_pdfjs_require__(125); - -__w_pdfjs_require__(126); - -module.exports = __w_pdfjs_require__(13).WeakSet; +var call = __w_pdfjs_require__(12); +var hasOwn = __w_pdfjs_require__(41); +var isPrototypeOf = __w_pdfjs_require__(27); +var regExpFlags = __w_pdfjs_require__(124); +var RegExpPrototype = RegExp.prototype; +module.exports = function (R) { + var flags = R.flags; + return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R) ? call(regExpFlags, R) : flags; +}; /***/ }), /* 124 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { "use strict"; - -var weak = __w_pdfjs_require__(113); - -var validate = __w_pdfjs_require__(114); - -var WEAK_SET = 'WeakSet'; - -__w_pdfjs_require__(115)(WEAK_SET, function (get) { - return function WeakSet() { - return get(this, arguments.length > 0 ? arguments[0] : undefined); - }; -}, { - add: function add(value) { - return weak.def(validate(this, WEAK_SET), value, true); - } -}, weak, false, true); +var anObject = __w_pdfjs_require__(49); +module.exports = function () { + var that = anObject(this); + var result = ''; + if (that.hasIndices) + result += 'd'; + if (that.global) + result += 'g'; + if (that.ignoreCase) + result += 'i'; + if (that.multiline) + result += 'm'; + if (that.dotAll) + result += 's'; + if (that.unicode) + result += 'u'; + if (that.unicodeSets) + result += 'v'; + if (that.sticky) + result += 'y'; + return result; +}; /***/ }), /* 125 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(120)('WeakSet'); +var fails = __w_pdfjs_require__(11); +var createPropertyDescriptor = __w_pdfjs_require__(15); +module.exports = !fails(function () { + var error = Error('a'); + if (!('stack' in error)) + return true; + Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7)); + return error.stack !== 7; +}); /***/ }), /* 126 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(122)('WeakSet'); +var IS_DENO = __w_pdfjs_require__(127); +var IS_NODE = __w_pdfjs_require__(128); +module.exports = !IS_DENO && !IS_NODE && typeof window == 'object' && typeof document == 'object'; /***/ }), /* 127 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module) => { -"use strict"; - - -__w_pdfjs_require__(128); - -module.exports = __w_pdfjs_require__(13).String.codePointAt; +module.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object'; /***/ }), /* 128 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -var $export = __w_pdfjs_require__(11); - -var $at = __w_pdfjs_require__(53)(false); - -$export($export.P, 'String', { - codePointAt: function codePointAt(pos) { - return $at(this, pos); - } -}); +var classof = __w_pdfjs_require__(19); +var global = __w_pdfjs_require__(8); +module.exports = classof(global.process) == 'process'; /***/ }), /* 129 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; - - -__w_pdfjs_require__(130); - -module.exports = __w_pdfjs_require__(13).String.fromCodePoint; +var global = __w_pdfjs_require__(8); +module.exports = global; /***/ }), /* 130 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -var $export = __w_pdfjs_require__(11); - -var toAbsoluteIndex = __w_pdfjs_require__(49); - -var fromCharCode = String.fromCharCode; -var $fromCodePoint = String.fromCodePoint; -$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', { - fromCodePoint: function fromCodePoint(x) { - var res = []; - var aLen = arguments.length; - var i = 0; - var code; - - while (aLen > i) { - code = +arguments[i++]; - if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point'); - res.push(code < 0x10000 ? fromCharCode(code) : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)); - } - - return res.join(''); - } -}); - -/***/ }), -/* 131 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -__w_pdfjs_require__(132); - -__w_pdfjs_require__(87); - -module.exports = __w_pdfjs_require__(13).Symbol; - -/***/ }), -/* 132 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -var global = __w_pdfjs_require__(12); - -var has = __w_pdfjs_require__(25); - -var DESCRIPTORS = __w_pdfjs_require__(19); - -var $export = __w_pdfjs_require__(11); - -var redefine = __w_pdfjs_require__(24); - -var META = __w_pdfjs_require__(112).KEY; - -var $fails = __w_pdfjs_require__(20); - -var shared = __w_pdfjs_require__(28); - -var setToStringTag = __w_pdfjs_require__(64); - -var uid = __w_pdfjs_require__(26); - -var wks = __w_pdfjs_require__(37); - -var wksExt = __w_pdfjs_require__(133); - -var wksDefine = __w_pdfjs_require__(134); - -var enumKeys = __w_pdfjs_require__(135); - -var isArray = __w_pdfjs_require__(111); - -var anObject = __w_pdfjs_require__(16); - -var isObject = __w_pdfjs_require__(17); - -var toObject = __w_pdfjs_require__(66); - -var toIObject = __w_pdfjs_require__(47); - -var toPrimitive = __w_pdfjs_require__(22); - -var createDesc = __w_pdfjs_require__(23); - -var _create = __w_pdfjs_require__(57); - -var gOPNExt = __w_pdfjs_require__(136); - -var $GOPD = __w_pdfjs_require__(118); - -var $GOPS = __w_pdfjs_require__(77); - -var $DP = __w_pdfjs_require__(15); - -var $keys = __w_pdfjs_require__(59); - -var gOPD = $GOPD.f; -var dP = $DP.f; -var gOPN = gOPNExt.f; -var $Symbol = global.Symbol; -var $JSON = global.JSON; - -var _stringify = $JSON && $JSON.stringify; - -var PROTOTYPE = 'prototype'; -var HIDDEN = wks('_hidden'); -var TO_PRIMITIVE = wks('toPrimitive'); -var isEnum = {}.propertyIsEnumerable; -var SymbolRegistry = shared('symbol-registry'); -var AllSymbols = shared('symbols'); -var OPSymbols = shared('op-symbols'); -var ObjectProto = Object[PROTOTYPE]; -var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f; -var QObject = global.QObject; -var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; -var setSymbolDesc = DESCRIPTORS && $fails(function () { - return _create(dP({}, 'a', { - get: function get() { - return dP(this, 'a', { - value: 7 - }).a; - } - })).a != 7; -}) ? function (it, key, D) { - var protoDesc = gOPD(ObjectProto, key); - if (protoDesc) delete ObjectProto[key]; - dP(it, key, D); - if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); -} : dP; - -var wrap = function wrap(tag) { - var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); - - sym._k = tag; - return sym; -}; - -var isSymbol = USE_NATIVE && _typeof($Symbol.iterator) == 'symbol' ? function (it) { - return _typeof(it) == 'symbol'; -} : function (it) { - return it instanceof $Symbol; -}; - -var $defineProperty = function defineProperty(it, key, D) { - if (it === ObjectProto) $defineProperty(OPSymbols, key, D); - anObject(it); - key = toPrimitive(key, true); - anObject(D); - - if (has(AllSymbols, key)) { - if (!D.enumerable) { - if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); - it[HIDDEN][key] = true; - } else { - if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; - D = _create(D, { - enumerable: createDesc(0, false) - }); - } - - return setSymbolDesc(it, key, D); - } - - return dP(it, key, D); -}; - -var $defineProperties = function defineProperties(it, P) { - anObject(it); - var keys = enumKeys(P = toIObject(P)); - var i = 0; - var l = keys.length; - var key; - - while (l > i) { - $defineProperty(it, key = keys[i++], P[key]); - } - - return it; -}; - -var $create = function create(it, P) { - return P === undefined ? _create(it) : $defineProperties(_create(it), P); -}; - -var $propertyIsEnumerable = function propertyIsEnumerable(key) { - var E = isEnum.call(this, key = toPrimitive(key, true)); - if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; - return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; -}; - -var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { - it = toIObject(it); - key = toPrimitive(key, true); - if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; - var D = gOPD(it, key); - if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; - return D; -}; - -var $getOwnPropertyNames = function getOwnPropertyNames(it) { - var names = gOPN(toIObject(it)); - var result = []; - var i = 0; - var key; - - while (names.length > i) { - if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); - } - - return result; -}; - -var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { - var IS_OP = it === ObjectProto; - var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); - var result = []; - var i = 0; - var key; - - while (names.length > i) { - if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); - } - - return result; -}; - -if (!USE_NATIVE) { - $Symbol = function _Symbol() { - if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); - var tag = uid(arguments.length > 0 ? arguments[0] : undefined); - - var $set = function $set(value) { - if (this === ObjectProto) $set.call(OPSymbols, value); - if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; - setSymbolDesc(this, tag, createDesc(1, value)); - }; - - if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { - configurable: true, - set: $set - }); - return wrap(tag); - }; - - redefine($Symbol[PROTOTYPE], 'toString', function toString() { - return this._k; - }); - $GOPD.f = $getOwnPropertyDescriptor; - $DP.f = $defineProperty; - __w_pdfjs_require__(137).f = gOPNExt.f = $getOwnPropertyNames; - __w_pdfjs_require__(78).f = $propertyIsEnumerable; - $GOPS.f = $getOwnPropertySymbols; - - if (DESCRIPTORS && !__w_pdfjs_require__(29)) { - redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); - } - - wksExt.f = function (name) { - return wrap(wks(name)); - }; -} - -$export($export.G + $export.W + $export.F * !USE_NATIVE, { - Symbol: $Symbol -}); - -for (var es6Symbols = 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'.split(','), j = 0; es6Symbols.length > j;) { - wks(es6Symbols[j++]); -} - -for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) { - wksDefine(wellKnownSymbols[k++]); -} - -$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { - 'for': function _for(key) { - return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key); - }, - keyFor: function keyFor(sym) { - if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); - - for (var key in SymbolRegistry) { - if (SymbolRegistry[key] === sym) return key; - } - }, - useSetter: function useSetter() { - setter = true; - }, - useSimple: function useSimple() { - setter = false; - } -}); -$export($export.S + $export.F * !USE_NATIVE, 'Object', { - create: $create, - defineProperty: $defineProperty, - defineProperties: $defineProperties, - getOwnPropertyDescriptor: $getOwnPropertyDescriptor, - getOwnPropertyNames: $getOwnPropertyNames, - getOwnPropertySymbols: $getOwnPropertySymbols -}); -var FAILS_ON_PRIMITIVES = $fails(function () { - $GOPS.f(1); -}); -$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', { - getOwnPropertySymbols: function getOwnPropertySymbols(it) { - return $GOPS.f(toObject(it)); - } -}); -$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { - var S = $Symbol(); - return _stringify([S]) != '[null]' || _stringify({ - a: S - }) != '{}' || _stringify(Object(S)) != '{}'; -})), 'JSON', { - stringify: function stringify(it) { - var args = [it]; - var i = 1; - var replacer, $replacer; - - while (arguments.length > i) { - args.push(arguments[i++]); - } - - $replacer = replacer = args[1]; - if (!isObject(replacer) && it === undefined || isSymbol(it)) return; - if (!isArray(replacer)) replacer = function replacer(key, value) { - if (typeof $replacer == 'function') value = $replacer.call(this, key, value); - if (!isSymbol(value)) return value; - }; - args[1] = replacer; - return _stringify.apply($JSON, args); - } -}); -$Symbol[PROTOTYPE][TO_PRIMITIVE] || __w_pdfjs_require__(14)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); -setToStringTag($Symbol, 'Symbol'); -setToStringTag(Math, 'Math', true); -setToStringTag(global.JSON, 'JSON', true); - -/***/ }), -/* 133 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -exports.f = __w_pdfjs_require__(37); - -/***/ }), -/* 134 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var global = __w_pdfjs_require__(12); - -var core = __w_pdfjs_require__(13); - -var LIBRARY = __w_pdfjs_require__(29); - -var wksExt = __w_pdfjs_require__(133); - -var defineProperty = __w_pdfjs_require__(15).f; - -module.exports = function (name) { - var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); - if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { - value: wksExt.f(name) - }); -}; - -/***/ }), -/* 135 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var getKeys = __w_pdfjs_require__(59); - -var gOPS = __w_pdfjs_require__(77); - -var pIE = __w_pdfjs_require__(78); - -module.exports = function (it) { - var result = getKeys(it); - var getSymbols = gOPS.f; - - if (getSymbols) { - var symbols = getSymbols(it); - var isEnum = pIE.f; - var i = 0; - var key; - - while (symbols.length > i) { - if (isEnum.call(it, key = symbols[i++])) result.push(key); - } - } - - return result; -}; - -/***/ }), -/* 136 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -var toIObject = __w_pdfjs_require__(47); - -var gOPN = __w_pdfjs_require__(137).f; - -var toString = {}.toString; -var windowNames = (typeof window === "undefined" ? "undefined" : _typeof(window)) == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; - -var getWindowNames = function getWindowNames(it) { - try { - return gOPN(it); - } catch (e) { - return windowNames.slice(); - } -}; - -module.exports.f = function getOwnPropertyNames(it) { - return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); -}; - -/***/ }), -/* 137 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var $keys = __w_pdfjs_require__(60); - -var hiddenKeys = __w_pdfjs_require__(62).concat('length', 'prototype'); - -exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return $keys(O, hiddenKeys); -}; - -/***/ }), -/* 138 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -__w_pdfjs_require__(139); - -module.exports = __w_pdfjs_require__(13).String.padStart; - -/***/ }), -/* 139 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var $export = __w_pdfjs_require__(11); - -var $pad = __w_pdfjs_require__(140); - -var userAgent = __w_pdfjs_require__(100); - -var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent); -$export($export.P + $export.F * WEBKIT_BUG, 'String', { - padStart: function padStart(maxLength) { - return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true); - } -}); - -/***/ }), -/* 140 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var toLength = __w_pdfjs_require__(32); - -var repeat = __w_pdfjs_require__(141); - -var defined = __w_pdfjs_require__(38); - -module.exports = function (that, maxLength, fillString, left) { - var S = String(defined(that)); - var stringLength = S.length; - var fillStr = fillString === undefined ? ' ' : String(fillString); - var intMaxLength = toLength(maxLength); - if (intMaxLength <= stringLength || fillStr == '') return S; - var fillLen = intMaxLength - stringLength; - var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length)); - if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen); - return left ? stringFiller + S : S + stringFiller; -}; - -/***/ }), -/* 141 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var toInteger = __w_pdfjs_require__(33); - -var defined = __w_pdfjs_require__(38); - -module.exports = function repeat(count) { - var str = String(defined(this)); - var res = ''; - var n = toInteger(count); - if (n < 0 || n == Infinity) throw RangeError("Count can't be negative"); - - for (; n > 0; (n >>>= 1) && (str += str)) { - if (n & 1) res += str; - } - - return res; -}; - -/***/ }), -/* 142 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -__w_pdfjs_require__(143); - -module.exports = __w_pdfjs_require__(13).String.padEnd; - -/***/ }), -/* 143 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var $export = __w_pdfjs_require__(11); - -var $pad = __w_pdfjs_require__(140); - -var userAgent = __w_pdfjs_require__(100); - -var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent); -$export($export.P + $export.F * WEBKIT_BUG, 'String', { - padEnd: function padEnd(maxLength) { - return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false); - } -}); - -/***/ }), -/* 144 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -__w_pdfjs_require__(145); - -module.exports = __w_pdfjs_require__(13).Object.values; - -/***/ }), -/* 145 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var $export = __w_pdfjs_require__(11); - -var $values = __w_pdfjs_require__(146)(false); - -$export($export.S, 'Object', { - values: function values(it) { - return $values(it); - } -}); - -/***/ }), -/* 146 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var DESCRIPTORS = __w_pdfjs_require__(19); - -var getKeys = __w_pdfjs_require__(59); - -var toIObject = __w_pdfjs_require__(47); - -var isEnum = __w_pdfjs_require__(78).f; - -module.exports = function (isEntries) { - return function (it) { - var O = toIObject(it); - var keys = getKeys(O); - var length = keys.length; - var i = 0; - var result = []; - var key; - - while (length > i) { - key = keys[i++]; - - if (!DESCRIPTORS || isEnum.call(O, key)) { - result.push(isEntries ? [key, O[key]] : O[key]); - } - } - - return result; - }; -}; - -/***/ }), -/* 147 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -{ - var isReadableStreamSupported = false; - - if (typeof ReadableStream !== 'undefined') { - try { - new ReadableStream({ - start: function start(controller) { - controller.close(); - } - }); - isReadableStreamSupported = true; - } catch (e) {} - } - - if (isReadableStreamSupported) { - exports.ReadableStream = ReadableStream; - } else { - exports.ReadableStream = __w_pdfjs_require__(148).ReadableStream; - } -} - -/***/ }), -/* 148 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); } - -(function (e, a) { - for (var i in a) { - e[i] = a[i]; - } -})(exports, function (modules) { - var installedModules = {}; - - function __w_pdfjs_require__(moduleId) { - if (installedModules[moduleId]) return installedModules[moduleId].exports; - var module = installedModules[moduleId] = { - i: moduleId, - l: false, - exports: {} - }; - modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__); - module.l = true; - return module.exports; - } - - __w_pdfjs_require__.m = modules; - __w_pdfjs_require__.c = installedModules; - - __w_pdfjs_require__.i = function (value) { - return value; - }; - - __w_pdfjs_require__.d = function (exports, name, getter) { - if (!__w_pdfjs_require__.o(exports, name)) { - Object.defineProperty(exports, name, { - configurable: false, - enumerable: true, - get: getter - }); - } - }; - - __w_pdfjs_require__.n = function (module) { - var getter = module && module.__esModule ? function getDefault() { - return module['default']; - } : function getModuleExports() { - return module; - }; - - __w_pdfjs_require__.d(getter, 'a', getter); - - return getter; - }; - - __w_pdfjs_require__.o = function (object, property) { - return Object.prototype.hasOwnProperty.call(object, property); - }; - - __w_pdfjs_require__.p = ""; - return __w_pdfjs_require__(__w_pdfjs_require__.s = 7); -}([function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) { - return _typeof2(obj); - } : function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj); - }; - - var _require = __w_pdfjs_require__(1), - assert = _require.assert; - - function IsPropertyKey(argument) { - return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol'; - } - - exports.typeIsObject = function (x) { - return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function'; - }; - - exports.createDataProperty = function (o, p, v) { - assert(exports.typeIsObject(o)); - Object.defineProperty(o, p, { - value: v, - writable: true, - enumerable: true, - configurable: true - }); - }; - - exports.createArrayFromList = function (elements) { - return elements.slice(); - }; - - exports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) { - new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset); - }; - - exports.CreateIterResultObject = function (value, done) { - assert(typeof done === 'boolean'); - var obj = {}; - Object.defineProperty(obj, 'value', { - value: value, - enumerable: true, - writable: true, - configurable: true - }); - Object.defineProperty(obj, 'done', { - value: done, - enumerable: true, - writable: true, - configurable: true - }); - return obj; - }; - - exports.IsFiniteNonNegativeNumber = function (v) { - if (Number.isNaN(v)) { - return false; - } - - if (v === Infinity) { - return false; - } - - if (v < 0) { - return false; - } - - return true; - }; - - function Call(F, V, args) { - if (typeof F !== 'function') { - throw new TypeError('Argument is not a function'); - } - - return Function.prototype.apply.call(F, V, args); - } - - exports.InvokeOrNoop = function (O, P, args) { - assert(O !== undefined); - assert(IsPropertyKey(P)); - assert(Array.isArray(args)); - var method = O[P]; - - if (method === undefined) { - return undefined; - } - - return Call(method, O, args); - }; - - exports.PromiseInvokeOrNoop = function (O, P, args) { - assert(O !== undefined); - assert(IsPropertyKey(P)); - assert(Array.isArray(args)); - - try { - return Promise.resolve(exports.InvokeOrNoop(O, P, args)); - } catch (returnValueE) { - return Promise.reject(returnValueE); - } - }; - - exports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) { - assert(O !== undefined); - assert(IsPropertyKey(P)); - assert(Array.isArray(args)); - assert(Array.isArray(argsF)); - var method = void 0; - - try { - method = O[P]; - } catch (methodE) { - return Promise.reject(methodE); - } - - if (method === undefined) { - return F.apply(null, argsF); - } - - try { - return Promise.resolve(Call(method, O, args)); - } catch (e) { - return Promise.reject(e); - } - }; - - exports.TransferArrayBuffer = function (O) { - return O.slice(); - }; - - exports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) { - highWaterMark = Number(highWaterMark); - - if (Number.isNaN(highWaterMark) || highWaterMark < 0) { - throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN'); - } - - return highWaterMark; - }; - - exports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) { - if (size !== undefined && typeof size !== 'function') { - throw new TypeError('size property of a queuing strategy must be a function'); - } - - highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark); - return { - size: size, - highWaterMark: highWaterMark - }; - }; -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - function rethrowAssertionErrorRejection(e) { - if (e && e.constructor === AssertionError) { - setTimeout(function () { - throw e; - }, 0); - } - } - - function AssertionError(message) { - this.name = 'AssertionError'; - this.message = message || ''; - this.stack = new Error().stack; - } - - AssertionError.prototype = Object.create(Error.prototype); - AssertionError.prototype.constructor = AssertionError; - - function assert(value, message) { - if (!value) { - throw new AssertionError(message); - } - } - - module.exports = { - rethrowAssertionErrorRejection: rethrowAssertionErrorRejection, - AssertionError: AssertionError, - assert: assert - }; -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - var _require = __w_pdfjs_require__(0), - InvokeOrNoop = _require.InvokeOrNoop, - PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop, - ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy, - typeIsObject = _require.typeIsObject; - - var _require2 = __w_pdfjs_require__(1), - assert = _require2.assert, - rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection; - - var _require3 = __w_pdfjs_require__(3), - DequeueValue = _require3.DequeueValue, - EnqueueValueWithSize = _require3.EnqueueValueWithSize, - PeekQueueValue = _require3.PeekQueueValue, - ResetQueue = _require3.ResetQueue; - - var WritableStream = function () { - function WritableStream() { - var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - size = _ref.size, - _ref$highWaterMark = _ref.highWaterMark, - highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark; - - _classCallCheck(this, WritableStream); - - this._state = 'writable'; - this._storedError = undefined; - this._writer = undefined; - this._writableStreamController = undefined; - this._writeRequests = []; - this._inFlightWriteRequest = undefined; - this._closeRequest = undefined; - this._inFlightCloseRequest = undefined; - this._pendingAbortRequest = undefined; - this._backpressure = false; - var type = underlyingSink.type; - - if (type !== undefined) { - throw new RangeError('Invalid type is specified'); - } - - this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark); - - this._writableStreamController.__startSteps(); - } - - _createClass(WritableStream, [{ - key: 'abort', - value: function abort(reason) { - if (IsWritableStream(this) === false) { - return Promise.reject(streamBrandCheckException('abort')); - } - - if (IsWritableStreamLocked(this) === true) { - return Promise.reject(new TypeError('Cannot abort a stream that already has a writer')); - } - - return WritableStreamAbort(this, reason); - } - }, { - key: 'getWriter', - value: function getWriter() { - if (IsWritableStream(this) === false) { - throw streamBrandCheckException('getWriter'); - } - - return AcquireWritableStreamDefaultWriter(this); - } - }, { - key: 'locked', - get: function get() { - if (IsWritableStream(this) === false) { - throw streamBrandCheckException('locked'); - } - - return IsWritableStreamLocked(this); - } - }]); - - return WritableStream; - }(); - - module.exports = { - AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter, - IsWritableStream: IsWritableStream, - IsWritableStreamLocked: IsWritableStreamLocked, - WritableStream: WritableStream, - WritableStreamAbort: WritableStreamAbort, - WritableStreamDefaultControllerError: WritableStreamDefaultControllerError, - WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation, - WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease, - WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite, - WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight - }; - - function AcquireWritableStreamDefaultWriter(stream) { - return new WritableStreamDefaultWriter(stream); - } - - function IsWritableStream(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) { - return false; - } - - return true; - } - - function IsWritableStreamLocked(stream) { - assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams'); - - if (stream._writer === undefined) { - return false; - } - - return true; - } - - function WritableStreamAbort(stream, reason) { - var state = stream._state; - - if (state === 'closed') { - return Promise.resolve(undefined); - } - - if (state === 'errored') { - return Promise.reject(stream._storedError); - } - - var error = new TypeError('Requested to abort'); - - if (stream._pendingAbortRequest !== undefined) { - return Promise.reject(error); - } - - assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring'); - var wasAlreadyErroring = false; - - if (state === 'erroring') { - wasAlreadyErroring = true; - reason = undefined; - } - - var promise = new Promise(function (resolve, reject) { - stream._pendingAbortRequest = { - _resolve: resolve, - _reject: reject, - _reason: reason, - _wasAlreadyErroring: wasAlreadyErroring - }; - }); - - if (wasAlreadyErroring === false) { - WritableStreamStartErroring(stream, error); - } - - return promise; - } - - function WritableStreamAddWriteRequest(stream) { - assert(IsWritableStreamLocked(stream) === true); - assert(stream._state === 'writable'); - var promise = new Promise(function (resolve, reject) { - var writeRequest = { - _resolve: resolve, - _reject: reject - }; - - stream._writeRequests.push(writeRequest); - }); - return promise; - } - - function WritableStreamDealWithRejection(stream, error) { - var state = stream._state; - - if (state === 'writable') { - WritableStreamStartErroring(stream, error); - return; - } - - assert(state === 'erroring'); - WritableStreamFinishErroring(stream); - } - - function WritableStreamStartErroring(stream, reason) { - assert(stream._storedError === undefined, 'stream._storedError === undefined'); - assert(stream._state === 'writable', 'state must be writable'); - var controller = stream._writableStreamController; - assert(controller !== undefined, 'controller must not be undefined'); - stream._state = 'erroring'; - stream._storedError = reason; - var writer = stream._writer; - - if (writer !== undefined) { - WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason); - } - - if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) { - WritableStreamFinishErroring(stream); - } - } - - function WritableStreamFinishErroring(stream) { - assert(stream._state === 'erroring', 'stream._state === erroring'); - assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false'); - stream._state = 'errored'; - - stream._writableStreamController.__errorSteps(); - - var storedError = stream._storedError; - - for (var i = 0; i < stream._writeRequests.length; i++) { - var writeRequest = stream._writeRequests[i]; - - writeRequest._reject(storedError); - } - - stream._writeRequests = []; - - if (stream._pendingAbortRequest === undefined) { - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - return; - } - - var abortRequest = stream._pendingAbortRequest; - stream._pendingAbortRequest = undefined; - - if (abortRequest._wasAlreadyErroring === true) { - abortRequest._reject(storedError); - - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - return; - } - - var promise = stream._writableStreamController.__abortSteps(abortRequest._reason); - - promise.then(function () { - abortRequest._resolve(); - - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - }, function (reason) { - abortRequest._reject(reason); - - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - }); - } - - function WritableStreamFinishInFlightWrite(stream) { - assert(stream._inFlightWriteRequest !== undefined); - - stream._inFlightWriteRequest._resolve(undefined); - - stream._inFlightWriteRequest = undefined; - } - - function WritableStreamFinishInFlightWriteWithError(stream, error) { - assert(stream._inFlightWriteRequest !== undefined); - - stream._inFlightWriteRequest._reject(error); - - stream._inFlightWriteRequest = undefined; - assert(stream._state === 'writable' || stream._state === 'erroring'); - WritableStreamDealWithRejection(stream, error); - } - - function WritableStreamFinishInFlightClose(stream) { - assert(stream._inFlightCloseRequest !== undefined); - - stream._inFlightCloseRequest._resolve(undefined); - - stream._inFlightCloseRequest = undefined; - var state = stream._state; - assert(state === 'writable' || state === 'erroring'); - - if (state === 'erroring') { - stream._storedError = undefined; - - if (stream._pendingAbortRequest !== undefined) { - stream._pendingAbortRequest._resolve(); - - stream._pendingAbortRequest = undefined; - } - } - - stream._state = 'closed'; - var writer = stream._writer; - - if (writer !== undefined) { - defaultWriterClosedPromiseResolve(writer); - } - - assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined'); - assert(stream._storedError === undefined, 'stream._storedError === undefined'); - } - - function WritableStreamFinishInFlightCloseWithError(stream, error) { - assert(stream._inFlightCloseRequest !== undefined); - - stream._inFlightCloseRequest._reject(error); - - stream._inFlightCloseRequest = undefined; - assert(stream._state === 'writable' || stream._state === 'erroring'); - - if (stream._pendingAbortRequest !== undefined) { - stream._pendingAbortRequest._reject(error); - - stream._pendingAbortRequest = undefined; - } - - WritableStreamDealWithRejection(stream, error); - } - - function WritableStreamCloseQueuedOrInFlight(stream) { - if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) { - return false; - } - - return true; - } - - function WritableStreamHasOperationMarkedInFlight(stream) { - if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) { - return false; - } - - return true; - } - - function WritableStreamMarkCloseRequestInFlight(stream) { - assert(stream._inFlightCloseRequest === undefined); - assert(stream._closeRequest !== undefined); - stream._inFlightCloseRequest = stream._closeRequest; - stream._closeRequest = undefined; - } - - function WritableStreamMarkFirstWriteRequestInFlight(stream) { - assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request'); - assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty'); - stream._inFlightWriteRequest = stream._writeRequests.shift(); - } - - function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) { - assert(stream._state === 'errored', '_stream_.[[state]] is `"errored"`'); - - if (stream._closeRequest !== undefined) { - assert(stream._inFlightCloseRequest === undefined); - - stream._closeRequest._reject(stream._storedError); - - stream._closeRequest = undefined; - } - - var writer = stream._writer; - - if (writer !== undefined) { - defaultWriterClosedPromiseReject(writer, stream._storedError); - - writer._closedPromise["catch"](function () {}); - } - } - - function WritableStreamUpdateBackpressure(stream, backpressure) { - assert(stream._state === 'writable'); - assert(WritableStreamCloseQueuedOrInFlight(stream) === false); - var writer = stream._writer; - - if (writer !== undefined && backpressure !== stream._backpressure) { - if (backpressure === true) { - defaultWriterReadyPromiseReset(writer); - } else { - assert(backpressure === false); - defaultWriterReadyPromiseResolve(writer); - } - } - - stream._backpressure = backpressure; - } - - var WritableStreamDefaultWriter = function () { - function WritableStreamDefaultWriter(stream) { - _classCallCheck(this, WritableStreamDefaultWriter); - - if (IsWritableStream(stream) === false) { - throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance'); - } - - if (IsWritableStreamLocked(stream) === true) { - throw new TypeError('This stream has already been locked for exclusive writing by another writer'); - } - - this._ownerWritableStream = stream; - stream._writer = this; - var state = stream._state; - - if (state === 'writable') { - if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) { - defaultWriterReadyPromiseInitialize(this); - } else { - defaultWriterReadyPromiseInitializeAsResolved(this); - } - - defaultWriterClosedPromiseInitialize(this); - } else if (state === 'erroring') { - defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError); - - this._readyPromise["catch"](function () {}); - - defaultWriterClosedPromiseInitialize(this); - } else if (state === 'closed') { - defaultWriterReadyPromiseInitializeAsResolved(this); - defaultWriterClosedPromiseInitializeAsResolved(this); - } else { - assert(state === 'errored', 'state must be errored'); - var storedError = stream._storedError; - defaultWriterReadyPromiseInitializeAsRejected(this, storedError); - - this._readyPromise["catch"](function () {}); - - defaultWriterClosedPromiseInitializeAsRejected(this, storedError); - - this._closedPromise["catch"](function () {}); - } - } - - _createClass(WritableStreamDefaultWriter, [{ - key: 'abort', - value: function abort(reason) { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('abort')); - } - - if (this._ownerWritableStream === undefined) { - return Promise.reject(defaultWriterLockException('abort')); - } - - return WritableStreamDefaultWriterAbort(this, reason); - } - }, { - key: 'close', - value: function close() { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('close')); - } - - var stream = this._ownerWritableStream; - - if (stream === undefined) { - return Promise.reject(defaultWriterLockException('close')); - } - - if (WritableStreamCloseQueuedOrInFlight(stream) === true) { - return Promise.reject(new TypeError('cannot close an already-closing stream')); - } - - return WritableStreamDefaultWriterClose(this); - } - }, { - key: 'releaseLock', - value: function releaseLock() { - if (IsWritableStreamDefaultWriter(this) === false) { - throw defaultWriterBrandCheckException('releaseLock'); - } - - var stream = this._ownerWritableStream; - - if (stream === undefined) { - return; - } - - assert(stream._writer !== undefined); - WritableStreamDefaultWriterRelease(this); - } - }, { - key: 'write', - value: function write(chunk) { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('write')); - } - - if (this._ownerWritableStream === undefined) { - return Promise.reject(defaultWriterLockException('write to')); - } - - return WritableStreamDefaultWriterWrite(this, chunk); - } - }, { - key: 'closed', - get: function get() { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('closed')); - } - - return this._closedPromise; - } - }, { - key: 'desiredSize', - get: function get() { - if (IsWritableStreamDefaultWriter(this) === false) { - throw defaultWriterBrandCheckException('desiredSize'); - } - - if (this._ownerWritableStream === undefined) { - throw defaultWriterLockException('desiredSize'); - } - - return WritableStreamDefaultWriterGetDesiredSize(this); - } - }, { - key: 'ready', - get: function get() { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('ready')); - } - - return this._readyPromise; - } - }]); - - return WritableStreamDefaultWriter; - }(); - - function IsWritableStreamDefaultWriter(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) { - return false; - } - - return true; - } - - function WritableStreamDefaultWriterAbort(writer, reason) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - return WritableStreamAbort(stream, reason); - } - - function WritableStreamDefaultWriterClose(writer) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - var state = stream._state; - - if (state === 'closed' || state === 'errored') { - return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed')); - } - - assert(state === 'writable' || state === 'erroring'); - assert(WritableStreamCloseQueuedOrInFlight(stream) === false); - var promise = new Promise(function (resolve, reject) { - var closeRequest = { - _resolve: resolve, - _reject: reject - }; - stream._closeRequest = closeRequest; - }); - - if (stream._backpressure === true && state === 'writable') { - defaultWriterReadyPromiseResolve(writer); - } - - WritableStreamDefaultControllerClose(stream._writableStreamController); - return promise; - } - - function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - var state = stream._state; - - if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') { - return Promise.resolve(); - } - - if (state === 'errored') { - return Promise.reject(stream._storedError); - } - - assert(state === 'writable' || state === 'erroring'); - return WritableStreamDefaultWriterClose(writer); - } - - function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) { - if (writer._closedPromiseState === 'pending') { - defaultWriterClosedPromiseReject(writer, error); - } else { - defaultWriterClosedPromiseResetToRejected(writer, error); - } - - writer._closedPromise["catch"](function () {}); - } - - function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) { - if (writer._readyPromiseState === 'pending') { - defaultWriterReadyPromiseReject(writer, error); - } else { - defaultWriterReadyPromiseResetToRejected(writer, error); - } - - writer._readyPromise["catch"](function () {}); - } - - function WritableStreamDefaultWriterGetDesiredSize(writer) { - var stream = writer._ownerWritableStream; - var state = stream._state; - - if (state === 'errored' || state === 'erroring') { - return null; - } - - if (state === 'closed') { - return 0; - } - - return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController); - } - - function WritableStreamDefaultWriterRelease(writer) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - assert(stream._writer === writer); - var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\'s closedness'); - WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError); - WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError); - stream._writer = undefined; - writer._ownerWritableStream = undefined; - } - - function WritableStreamDefaultWriterWrite(writer, chunk) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - var controller = stream._writableStreamController; - var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk); - - if (stream !== writer._ownerWritableStream) { - return Promise.reject(defaultWriterLockException('write to')); - } - - var state = stream._state; - - if (state === 'errored') { - return Promise.reject(stream._storedError); - } - - if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') { - return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to')); - } - - if (state === 'erroring') { - return Promise.reject(stream._storedError); - } - - assert(state === 'writable'); - var promise = WritableStreamAddWriteRequest(stream); - WritableStreamDefaultControllerWrite(controller, chunk, chunkSize); - return promise; - } - - var WritableStreamDefaultController = function () { - function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) { - _classCallCheck(this, WritableStreamDefaultController); - - if (IsWritableStream(stream) === false) { - throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance'); - } - - if (stream._writableStreamController !== undefined) { - throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor'); - } - - this._controlledWritableStream = stream; - this._underlyingSink = underlyingSink; - this._queue = undefined; - this._queueTotalSize = undefined; - ResetQueue(this); - this._started = false; - var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark); - this._strategySize = normalizedStrategy.size; - this._strategyHWM = normalizedStrategy.highWaterMark; - var backpressure = WritableStreamDefaultControllerGetBackpressure(this); - WritableStreamUpdateBackpressure(stream, backpressure); - } - - _createClass(WritableStreamDefaultController, [{ - key: 'error', - value: function error(e) { - if (IsWritableStreamDefaultController(this) === false) { - throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController'); - } - - var state = this._controlledWritableStream._state; - - if (state !== 'writable') { - return; - } - - WritableStreamDefaultControllerError(this, e); - } - }, { - key: '__abortSteps', - value: function __abortSteps(reason) { - return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]); - } - }, { - key: '__errorSteps', - value: function __errorSteps() { - ResetQueue(this); - } - }, { - key: '__startSteps', - value: function __startSteps() { - var _this = this; - - var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]); - var stream = this._controlledWritableStream; - Promise.resolve(startResult).then(function () { - assert(stream._state === 'writable' || stream._state === 'erroring'); - _this._started = true; - WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this); - }, function (r) { - assert(stream._state === 'writable' || stream._state === 'erroring'); - _this._started = true; - WritableStreamDealWithRejection(stream, r); - })["catch"](rethrowAssertionErrorRejection); - } - }]); - - return WritableStreamDefaultController; - }(); - - function WritableStreamDefaultControllerClose(controller) { - EnqueueValueWithSize(controller, 'close', 0); - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - } - - function WritableStreamDefaultControllerGetChunkSize(controller, chunk) { - var strategySize = controller._strategySize; - - if (strategySize === undefined) { - return 1; - } - - try { - return strategySize(chunk); - } catch (chunkSizeE) { - WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE); - return 1; - } - } - - function WritableStreamDefaultControllerGetDesiredSize(controller) { - return controller._strategyHWM - controller._queueTotalSize; - } - - function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) { - var writeRecord = { - chunk: chunk - }; - - try { - EnqueueValueWithSize(controller, writeRecord, chunkSize); - } catch (enqueueE) { - WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE); - return; - } - - var stream = controller._controlledWritableStream; - - if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') { - var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); - WritableStreamUpdateBackpressure(stream, backpressure); - } - - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - } - - function IsWritableStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) { - return false; - } - - return true; - } - - function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) { - var stream = controller._controlledWritableStream; - - if (controller._started === false) { - return; - } - - if (stream._inFlightWriteRequest !== undefined) { - return; - } - - var state = stream._state; - - if (state === 'closed' || state === 'errored') { - return; - } - - if (state === 'erroring') { - WritableStreamFinishErroring(stream); - return; - } - - if (controller._queue.length === 0) { - return; - } - - var writeRecord = PeekQueueValue(controller); - - if (writeRecord === 'close') { - WritableStreamDefaultControllerProcessClose(controller); - } else { - WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk); - } - } - - function WritableStreamDefaultControllerErrorIfNeeded(controller, error) { - if (controller._controlledWritableStream._state === 'writable') { - WritableStreamDefaultControllerError(controller, error); - } - } - - function WritableStreamDefaultControllerProcessClose(controller) { - var stream = controller._controlledWritableStream; - WritableStreamMarkCloseRequestInFlight(stream); - DequeueValue(controller); - assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued'); - var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []); - sinkClosePromise.then(function () { - WritableStreamFinishInFlightClose(stream); - }, function (reason) { - WritableStreamFinishInFlightCloseWithError(stream, reason); - })["catch"](rethrowAssertionErrorRejection); - } - - function WritableStreamDefaultControllerProcessWrite(controller, chunk) { - var stream = controller._controlledWritableStream; - WritableStreamMarkFirstWriteRequestInFlight(stream); - var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]); - sinkWritePromise.then(function () { - WritableStreamFinishInFlightWrite(stream); - var state = stream._state; - assert(state === 'writable' || state === 'erroring'); - DequeueValue(controller); - - if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') { - var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); - WritableStreamUpdateBackpressure(stream, backpressure); - } - - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - }, function (reason) { - WritableStreamFinishInFlightWriteWithError(stream, reason); - })["catch"](rethrowAssertionErrorRejection); - } - - function WritableStreamDefaultControllerGetBackpressure(controller) { - var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller); - return desiredSize <= 0; - } - - function WritableStreamDefaultControllerError(controller, error) { - var stream = controller._controlledWritableStream; - assert(stream._state === 'writable'); - WritableStreamStartErroring(stream, error); - } - - function streamBrandCheckException(name) { - return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream'); - } - - function defaultWriterBrandCheckException(name) { - return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter'); - } - - function defaultWriterLockException(name) { - return new TypeError('Cannot ' + name + ' a stream using a released writer'); - } - - function defaultWriterClosedPromiseInitialize(writer) { - writer._closedPromise = new Promise(function (resolve, reject) { - writer._closedPromise_resolve = resolve; - writer._closedPromise_reject = reject; - writer._closedPromiseState = 'pending'; - }); - } - - function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) { - writer._closedPromise = Promise.reject(reason); - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'rejected'; - } - - function defaultWriterClosedPromiseInitializeAsResolved(writer) { - writer._closedPromise = Promise.resolve(undefined); - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'resolved'; - } - - function defaultWriterClosedPromiseReject(writer, reason) { - assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined'); - assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined'); - assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending'); - - writer._closedPromise_reject(reason); - - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'rejected'; - } - - function defaultWriterClosedPromiseResetToRejected(writer, reason) { - assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined'); - assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined'); - assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending'); - writer._closedPromise = Promise.reject(reason); - writer._closedPromiseState = 'rejected'; - } - - function defaultWriterClosedPromiseResolve(writer) { - assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined'); - assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined'); - assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending'); - - writer._closedPromise_resolve(undefined); - - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'resolved'; - } - - function defaultWriterReadyPromiseInitialize(writer) { - writer._readyPromise = new Promise(function (resolve, reject) { - writer._readyPromise_resolve = resolve; - writer._readyPromise_reject = reject; - }); - writer._readyPromiseState = 'pending'; - } - - function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) { - writer._readyPromise = Promise.reject(reason); - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'rejected'; - } - - function defaultWriterReadyPromiseInitializeAsResolved(writer) { - writer._readyPromise = Promise.resolve(undefined); - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'fulfilled'; - } - - function defaultWriterReadyPromiseReject(writer, reason) { - assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined'); - assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined'); - - writer._readyPromise_reject(reason); - - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'rejected'; - } - - function defaultWriterReadyPromiseReset(writer) { - assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined'); - assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined'); - writer._readyPromise = new Promise(function (resolve, reject) { - writer._readyPromise_resolve = resolve; - writer._readyPromise_reject = reject; - }); - writer._readyPromiseState = 'pending'; - } - - function defaultWriterReadyPromiseResetToRejected(writer, reason) { - assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined'); - assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined'); - writer._readyPromise = Promise.reject(reason); - writer._readyPromiseState = 'rejected'; - } - - function defaultWriterReadyPromiseResolve(writer) { - assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined'); - assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined'); - - writer._readyPromise_resolve(undefined); - - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'fulfilled'; - } -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var _require = __w_pdfjs_require__(0), - IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber; - - var _require2 = __w_pdfjs_require__(1), - assert = _require2.assert; - - exports.DequeueValue = function (container) { - assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].'); - assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.'); - - var pair = container._queue.shift(); - - container._queueTotalSize -= pair.size; - - if (container._queueTotalSize < 0) { - container._queueTotalSize = 0; - } - - return pair.value; - }; - - exports.EnqueueValueWithSize = function (container, value, size) { - assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].'); - size = Number(size); - - if (!IsFiniteNonNegativeNumber(size)) { - throw new RangeError('Size must be a finite, non-NaN, non-negative number.'); - } - - container._queue.push({ - value: value, - size: size - }); - - container._queueTotalSize += size; - }; - - exports.PeekQueueValue = function (container) { - assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].'); - assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.'); - var pair = container._queue[0]; - return pair.value; - }; - - exports.ResetQueue = function (container) { - assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].'); - container._queue = []; - container._queueTotalSize = 0; - }; -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - var _require = __w_pdfjs_require__(0), - ArrayBufferCopy = _require.ArrayBufferCopy, - CreateIterResultObject = _require.CreateIterResultObject, - IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber, - InvokeOrNoop = _require.InvokeOrNoop, - PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop, - TransferArrayBuffer = _require.TransferArrayBuffer, - ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy, - ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark; - - var _require2 = __w_pdfjs_require__(0), - createArrayFromList = _require2.createArrayFromList, - createDataProperty = _require2.createDataProperty, - typeIsObject = _require2.typeIsObject; - - var _require3 = __w_pdfjs_require__(1), - assert = _require3.assert, - rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection; - - var _require4 = __w_pdfjs_require__(3), - DequeueValue = _require4.DequeueValue, - EnqueueValueWithSize = _require4.EnqueueValueWithSize, - ResetQueue = _require4.ResetQueue; - - var _require5 = __w_pdfjs_require__(2), - AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter, - IsWritableStream = _require5.IsWritableStream, - IsWritableStreamLocked = _require5.IsWritableStreamLocked, - WritableStreamAbort = _require5.WritableStreamAbort, - WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation, - WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease, - WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite, - WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight; - - var ReadableStream = function () { - function ReadableStream() { - var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - size = _ref.size, - highWaterMark = _ref.highWaterMark; - - _classCallCheck(this, ReadableStream); - - this._state = 'readable'; - this._reader = undefined; - this._storedError = undefined; - this._disturbed = false; - this._readableStreamController = undefined; - var type = underlyingSource.type; - var typeString = String(type); - - if (typeString === 'bytes') { - if (highWaterMark === undefined) { - highWaterMark = 0; - } - - this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark); - } else if (type === undefined) { - if (highWaterMark === undefined) { - highWaterMark = 1; - } - - this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark); - } else { - throw new RangeError('Invalid type is specified'); - } - } - - _createClass(ReadableStream, [{ - key: 'cancel', - value: function cancel(reason) { - if (IsReadableStream(this) === false) { - return Promise.reject(streamBrandCheckException('cancel')); - } - - if (IsReadableStreamLocked(this) === true) { - return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader')); - } - - return ReadableStreamCancel(this, reason); - } - }, { - key: 'getReader', - value: function getReader() { - var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - mode = _ref2.mode; - - if (IsReadableStream(this) === false) { - throw streamBrandCheckException('getReader'); - } - - if (mode === undefined) { - return AcquireReadableStreamDefaultReader(this); - } - - mode = String(mode); - - if (mode === 'byob') { - return AcquireReadableStreamBYOBReader(this); - } - - throw new RangeError('Invalid mode is specified'); - } - }, { - key: 'pipeThrough', - value: function pipeThrough(_ref3, options) { - var writable = _ref3.writable, - readable = _ref3.readable; - var promise = this.pipeTo(writable, options); - ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise); - return readable; - } - }, { - key: 'pipeTo', - value: function pipeTo(dest) { - var _this = this; - - var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - preventClose = _ref4.preventClose, - preventAbort = _ref4.preventAbort, - preventCancel = _ref4.preventCancel; - - if (IsReadableStream(this) === false) { - return Promise.reject(streamBrandCheckException('pipeTo')); - } - - if (IsWritableStream(dest) === false) { - return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\'s first argument must be a WritableStream')); - } - - preventClose = Boolean(preventClose); - preventAbort = Boolean(preventAbort); - preventCancel = Boolean(preventCancel); - - if (IsReadableStreamLocked(this) === true) { - return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream')); - } - - if (IsWritableStreamLocked(dest) === true) { - return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream')); - } - - var reader = AcquireReadableStreamDefaultReader(this); - var writer = AcquireWritableStreamDefaultWriter(dest); - var shuttingDown = false; - var currentWrite = Promise.resolve(); - return new Promise(function (resolve, reject) { - function pipeLoop() { - currentWrite = Promise.resolve(); - - if (shuttingDown === true) { - return Promise.resolve(); - } - - return writer._readyPromise.then(function () { - return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) { - var value = _ref5.value, - done = _ref5.done; - - if (done === true) { - return; - } - - currentWrite = WritableStreamDefaultWriterWrite(writer, value)["catch"](function () {}); - }); - }).then(pipeLoop); - } - - isOrBecomesErrored(_this, reader._closedPromise, function (storedError) { - if (preventAbort === false) { - shutdownWithAction(function () { - return WritableStreamAbort(dest, storedError); - }, true, storedError); - } else { - shutdown(true, storedError); - } - }); - isOrBecomesErrored(dest, writer._closedPromise, function (storedError) { - if (preventCancel === false) { - shutdownWithAction(function () { - return ReadableStreamCancel(_this, storedError); - }, true, storedError); - } else { - shutdown(true, storedError); - } - }); - isOrBecomesClosed(_this, reader._closedPromise, function () { - if (preventClose === false) { - shutdownWithAction(function () { - return WritableStreamDefaultWriterCloseWithErrorPropagation(writer); - }); - } else { - shutdown(); - } - }); - - if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') { - var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it'); - - if (preventCancel === false) { - shutdownWithAction(function () { - return ReadableStreamCancel(_this, destClosed); - }, true, destClosed); - } else { - shutdown(true, destClosed); - } - } - - pipeLoop()["catch"](function (err) { - currentWrite = Promise.resolve(); - rethrowAssertionErrorRejection(err); - }); - - function waitForWritesToFinish() { - var oldCurrentWrite = currentWrite; - return currentWrite.then(function () { - return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined; - }); - } - - function isOrBecomesErrored(stream, promise, action) { - if (stream._state === 'errored') { - action(stream._storedError); - } else { - promise["catch"](action)["catch"](rethrowAssertionErrorRejection); - } - } - - function isOrBecomesClosed(stream, promise, action) { - if (stream._state === 'closed') { - action(); - } else { - promise.then(action)["catch"](rethrowAssertionErrorRejection); - } - } - - function shutdownWithAction(action, originalIsError, originalError) { - if (shuttingDown === true) { - return; - } - - shuttingDown = true; - - if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) { - waitForWritesToFinish().then(doTheRest); - } else { - doTheRest(); - } - - function doTheRest() { - action().then(function () { - return finalize(originalIsError, originalError); - }, function (newError) { - return finalize(true, newError); - })["catch"](rethrowAssertionErrorRejection); - } - } - - function shutdown(isError, error) { - if (shuttingDown === true) { - return; - } - - shuttingDown = true; - - if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) { - waitForWritesToFinish().then(function () { - return finalize(isError, error); - })["catch"](rethrowAssertionErrorRejection); - } else { - finalize(isError, error); - } - } - - function finalize(isError, error) { - WritableStreamDefaultWriterRelease(writer); - ReadableStreamReaderGenericRelease(reader); - - if (isError) { - reject(error); - } else { - resolve(undefined); - } - } - }); - } - }, { - key: 'tee', - value: function tee() { - if (IsReadableStream(this) === false) { - throw streamBrandCheckException('tee'); - } - - var branches = ReadableStreamTee(this, false); - return createArrayFromList(branches); - } - }, { - key: 'locked', - get: function get() { - if (IsReadableStream(this) === false) { - throw streamBrandCheckException('locked'); - } - - return IsReadableStreamLocked(this); - } - }]); - - return ReadableStream; - }(); - - module.exports = { - ReadableStream: ReadableStream, - IsReadableStreamDisturbed: IsReadableStreamDisturbed, - ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose, - ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue, - ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError, - ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize - }; - - function AcquireReadableStreamBYOBReader(stream) { - return new ReadableStreamBYOBReader(stream); - } - - function AcquireReadableStreamDefaultReader(stream) { - return new ReadableStreamDefaultReader(stream); - } - - function IsReadableStream(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) { - return false; - } - - return true; - } - - function IsReadableStreamDisturbed(stream) { - assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams'); - return stream._disturbed; - } - - function IsReadableStreamLocked(stream) { - assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams'); - - if (stream._reader === undefined) { - return false; - } - - return true; - } - - function ReadableStreamTee(stream, cloneForBranch2) { - assert(IsReadableStream(stream) === true); - assert(typeof cloneForBranch2 === 'boolean'); - var reader = AcquireReadableStreamDefaultReader(stream); - var teeState = { - closedOrErrored: false, - canceled1: false, - canceled2: false, - reason1: undefined, - reason2: undefined - }; - teeState.promise = new Promise(function (resolve) { - teeState._resolve = resolve; - }); - var pull = create_ReadableStreamTeePullFunction(); - pull._reader = reader; - pull._teeState = teeState; - pull._cloneForBranch2 = cloneForBranch2; - var cancel1 = create_ReadableStreamTeeBranch1CancelFunction(); - cancel1._stream = stream; - cancel1._teeState = teeState; - var cancel2 = create_ReadableStreamTeeBranch2CancelFunction(); - cancel2._stream = stream; - cancel2._teeState = teeState; - var underlyingSource1 = Object.create(Object.prototype); - createDataProperty(underlyingSource1, 'pull', pull); - createDataProperty(underlyingSource1, 'cancel', cancel1); - var branch1Stream = new ReadableStream(underlyingSource1); - var underlyingSource2 = Object.create(Object.prototype); - createDataProperty(underlyingSource2, 'pull', pull); - createDataProperty(underlyingSource2, 'cancel', cancel2); - var branch2Stream = new ReadableStream(underlyingSource2); - pull._branch1 = branch1Stream._readableStreamController; - pull._branch2 = branch2Stream._readableStreamController; - - reader._closedPromise["catch"](function (r) { - if (teeState.closedOrErrored === true) { - return; - } - - ReadableStreamDefaultControllerError(pull._branch1, r); - ReadableStreamDefaultControllerError(pull._branch2, r); - teeState.closedOrErrored = true; - }); - - return [branch1Stream, branch2Stream]; - } - - function create_ReadableStreamTeePullFunction() { - function f() { - var reader = f._reader, - branch1 = f._branch1, - branch2 = f._branch2, - teeState = f._teeState; - return ReadableStreamDefaultReaderRead(reader).then(function (result) { - assert(typeIsObject(result)); - var value = result.value; - var done = result.done; - assert(typeof done === 'boolean'); - - if (done === true && teeState.closedOrErrored === false) { - if (teeState.canceled1 === false) { - ReadableStreamDefaultControllerClose(branch1); - } - - if (teeState.canceled2 === false) { - ReadableStreamDefaultControllerClose(branch2); - } - - teeState.closedOrErrored = true; - } - - if (teeState.closedOrErrored === true) { - return; - } - - var value1 = value; - var value2 = value; - - if (teeState.canceled1 === false) { - ReadableStreamDefaultControllerEnqueue(branch1, value1); - } - - if (teeState.canceled2 === false) { - ReadableStreamDefaultControllerEnqueue(branch2, value2); - } - }); - } - - return f; - } - - function create_ReadableStreamTeeBranch1CancelFunction() { - function f(reason) { - var stream = f._stream, - teeState = f._teeState; - teeState.canceled1 = true; - teeState.reason1 = reason; - - if (teeState.canceled2 === true) { - var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]); - var cancelResult = ReadableStreamCancel(stream, compositeReason); - - teeState._resolve(cancelResult); - } - - return teeState.promise; - } - - return f; - } - - function create_ReadableStreamTeeBranch2CancelFunction() { - function f(reason) { - var stream = f._stream, - teeState = f._teeState; - teeState.canceled2 = true; - teeState.reason2 = reason; - - if (teeState.canceled1 === true) { - var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]); - var cancelResult = ReadableStreamCancel(stream, compositeReason); - - teeState._resolve(cancelResult); - } - - return teeState.promise; - } - - return f; - } - - function ReadableStreamAddReadIntoRequest(stream) { - assert(IsReadableStreamBYOBReader(stream._reader) === true); - assert(stream._state === 'readable' || stream._state === 'closed'); - var promise = new Promise(function (resolve, reject) { - var readIntoRequest = { - _resolve: resolve, - _reject: reject - }; - - stream._reader._readIntoRequests.push(readIntoRequest); - }); - return promise; - } - - function ReadableStreamAddReadRequest(stream) { - assert(IsReadableStreamDefaultReader(stream._reader) === true); - assert(stream._state === 'readable'); - var promise = new Promise(function (resolve, reject) { - var readRequest = { - _resolve: resolve, - _reject: reject - }; - - stream._reader._readRequests.push(readRequest); - }); - return promise; - } - - function ReadableStreamCancel(stream, reason) { - stream._disturbed = true; - - if (stream._state === 'closed') { - return Promise.resolve(undefined); - } - - if (stream._state === 'errored') { - return Promise.reject(stream._storedError); - } - - ReadableStreamClose(stream); - - var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason); - - return sourceCancelPromise.then(function () { - return undefined; - }); - } - - function ReadableStreamClose(stream) { - assert(stream._state === 'readable'); - stream._state = 'closed'; - var reader = stream._reader; - - if (reader === undefined) { - return undefined; - } - - if (IsReadableStreamDefaultReader(reader) === true) { - for (var i = 0; i < reader._readRequests.length; i++) { - var _resolve = reader._readRequests[i]._resolve; - - _resolve(CreateIterResultObject(undefined, true)); - } - - reader._readRequests = []; - } - - defaultReaderClosedPromiseResolve(reader); - return undefined; - } - - function ReadableStreamError(stream, e) { - assert(IsReadableStream(stream) === true, 'stream must be ReadableStream'); - assert(stream._state === 'readable', 'state must be readable'); - stream._state = 'errored'; - stream._storedError = e; - var reader = stream._reader; - - if (reader === undefined) { - return undefined; - } - - if (IsReadableStreamDefaultReader(reader) === true) { - for (var i = 0; i < reader._readRequests.length; i++) { - var readRequest = reader._readRequests[i]; - - readRequest._reject(e); - } - - reader._readRequests = []; - } else { - assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader'); - - for (var _i = 0; _i < reader._readIntoRequests.length; _i++) { - var readIntoRequest = reader._readIntoRequests[_i]; - - readIntoRequest._reject(e); - } - - reader._readIntoRequests = []; - } - - defaultReaderClosedPromiseReject(reader, e); - - reader._closedPromise["catch"](function () {}); - } - - function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) { - var reader = stream._reader; - assert(reader._readIntoRequests.length > 0); - - var readIntoRequest = reader._readIntoRequests.shift(); - - readIntoRequest._resolve(CreateIterResultObject(chunk, done)); - } - - function ReadableStreamFulfillReadRequest(stream, chunk, done) { - var reader = stream._reader; - assert(reader._readRequests.length > 0); - - var readRequest = reader._readRequests.shift(); - - readRequest._resolve(CreateIterResultObject(chunk, done)); - } - - function ReadableStreamGetNumReadIntoRequests(stream) { - return stream._reader._readIntoRequests.length; - } - - function ReadableStreamGetNumReadRequests(stream) { - return stream._reader._readRequests.length; - } - - function ReadableStreamHasBYOBReader(stream) { - var reader = stream._reader; - - if (reader === undefined) { - return false; - } - - if (IsReadableStreamBYOBReader(reader) === false) { - return false; - } - - return true; - } - - function ReadableStreamHasDefaultReader(stream) { - var reader = stream._reader; - - if (reader === undefined) { - return false; - } - - if (IsReadableStreamDefaultReader(reader) === false) { - return false; - } - - return true; - } - - var ReadableStreamDefaultReader = function () { - function ReadableStreamDefaultReader(stream) { - _classCallCheck(this, ReadableStreamDefaultReader); - - if (IsReadableStream(stream) === false) { - throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance'); - } - - if (IsReadableStreamLocked(stream) === true) { - throw new TypeError('This stream has already been locked for exclusive reading by another reader'); - } - - ReadableStreamReaderGenericInitialize(this, stream); - this._readRequests = []; - } - - _createClass(ReadableStreamDefaultReader, [{ - key: 'cancel', - value: function cancel(reason) { - if (IsReadableStreamDefaultReader(this) === false) { - return Promise.reject(defaultReaderBrandCheckException('cancel')); - } - - if (this._ownerReadableStream === undefined) { - return Promise.reject(readerLockException('cancel')); - } - - return ReadableStreamReaderGenericCancel(this, reason); - } - }, { - key: 'read', - value: function read() { - if (IsReadableStreamDefaultReader(this) === false) { - return Promise.reject(defaultReaderBrandCheckException('read')); - } - - if (this._ownerReadableStream === undefined) { - return Promise.reject(readerLockException('read from')); - } - - return ReadableStreamDefaultReaderRead(this); - } - }, { - key: 'releaseLock', - value: function releaseLock() { - if (IsReadableStreamDefaultReader(this) === false) { - throw defaultReaderBrandCheckException('releaseLock'); - } - - if (this._ownerReadableStream === undefined) { - return; - } - - if (this._readRequests.length > 0) { - throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'); - } - - ReadableStreamReaderGenericRelease(this); - } - }, { - key: 'closed', - get: function get() { - if (IsReadableStreamDefaultReader(this) === false) { - return Promise.reject(defaultReaderBrandCheckException('closed')); - } - - return this._closedPromise; - } - }]); - - return ReadableStreamDefaultReader; - }(); - - var ReadableStreamBYOBReader = function () { - function ReadableStreamBYOBReader(stream) { - _classCallCheck(this, ReadableStreamBYOBReader); - - if (!IsReadableStream(stream)) { - throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source'); - } - - if (IsReadableByteStreamController(stream._readableStreamController) === false) { - throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source'); - } - - if (IsReadableStreamLocked(stream)) { - throw new TypeError('This stream has already been locked for exclusive reading by another reader'); - } - - ReadableStreamReaderGenericInitialize(this, stream); - this._readIntoRequests = []; - } - - _createClass(ReadableStreamBYOBReader, [{ - key: 'cancel', - value: function cancel(reason) { - if (!IsReadableStreamBYOBReader(this)) { - return Promise.reject(byobReaderBrandCheckException('cancel')); - } - - if (this._ownerReadableStream === undefined) { - return Promise.reject(readerLockException('cancel')); - } - - return ReadableStreamReaderGenericCancel(this, reason); - } - }, { - key: 'read', - value: function read(view) { - if (!IsReadableStreamBYOBReader(this)) { - return Promise.reject(byobReaderBrandCheckException('read')); - } - - if (this._ownerReadableStream === undefined) { - return Promise.reject(readerLockException('read from')); - } - - if (!ArrayBuffer.isView(view)) { - return Promise.reject(new TypeError('view must be an array buffer view')); - } - - if (view.byteLength === 0) { - return Promise.reject(new TypeError('view must have non-zero byteLength')); - } - - return ReadableStreamBYOBReaderRead(this, view); - } - }, { - key: 'releaseLock', - value: function releaseLock() { - if (!IsReadableStreamBYOBReader(this)) { - throw byobReaderBrandCheckException('releaseLock'); - } - - if (this._ownerReadableStream === undefined) { - return; - } - - if (this._readIntoRequests.length > 0) { - throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'); - } - - ReadableStreamReaderGenericRelease(this); - } - }, { - key: 'closed', - get: function get() { - if (!IsReadableStreamBYOBReader(this)) { - return Promise.reject(byobReaderBrandCheckException('closed')); - } - - return this._closedPromise; - } - }]); - - return ReadableStreamBYOBReader; - }(); - - function IsReadableStreamBYOBReader(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) { - return false; - } - - return true; - } - - function IsReadableStreamDefaultReader(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) { - return false; - } - - return true; - } - - function ReadableStreamReaderGenericInitialize(reader, stream) { - reader._ownerReadableStream = stream; - stream._reader = reader; - - if (stream._state === 'readable') { - defaultReaderClosedPromiseInitialize(reader); - } else if (stream._state === 'closed') { - defaultReaderClosedPromiseInitializeAsResolved(reader); - } else { - assert(stream._state === 'errored', 'state must be errored'); - defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError); - - reader._closedPromise["catch"](function () {}); - } - } - - function ReadableStreamReaderGenericCancel(reader, reason) { - var stream = reader._ownerReadableStream; - assert(stream !== undefined); - return ReadableStreamCancel(stream, reason); - } - - function ReadableStreamReaderGenericRelease(reader) { - assert(reader._ownerReadableStream !== undefined); - assert(reader._ownerReadableStream._reader === reader); - - if (reader._ownerReadableStream._state === 'readable') { - defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness')); - } else { - defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness')); - } - - reader._closedPromise["catch"](function () {}); - - reader._ownerReadableStream._reader = undefined; - reader._ownerReadableStream = undefined; - } - - function ReadableStreamBYOBReaderRead(reader, view) { - var stream = reader._ownerReadableStream; - assert(stream !== undefined); - stream._disturbed = true; - - if (stream._state === 'errored') { - return Promise.reject(stream._storedError); - } - - return ReadableByteStreamControllerPullInto(stream._readableStreamController, view); - } - - function ReadableStreamDefaultReaderRead(reader) { - var stream = reader._ownerReadableStream; - assert(stream !== undefined); - stream._disturbed = true; - - if (stream._state === 'closed') { - return Promise.resolve(CreateIterResultObject(undefined, true)); - } - - if (stream._state === 'errored') { - return Promise.reject(stream._storedError); - } - - assert(stream._state === 'readable'); - return stream._readableStreamController.__pullSteps(); - } - - var ReadableStreamDefaultController = function () { - function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) { - _classCallCheck(this, ReadableStreamDefaultController); - - if (IsReadableStream(stream) === false) { - throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance'); - } - - if (stream._readableStreamController !== undefined) { - throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor'); - } - - this._controlledReadableStream = stream; - this._underlyingSource = underlyingSource; - this._queue = undefined; - this._queueTotalSize = undefined; - ResetQueue(this); - this._started = false; - this._closeRequested = false; - this._pullAgain = false; - this._pulling = false; - var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark); - this._strategySize = normalizedStrategy.size; - this._strategyHWM = normalizedStrategy.highWaterMark; - var controller = this; - var startResult = InvokeOrNoop(underlyingSource, 'start', [this]); - Promise.resolve(startResult).then(function () { - controller._started = true; - assert(controller._pulling === false); - assert(controller._pullAgain === false); - ReadableStreamDefaultControllerCallPullIfNeeded(controller); - }, function (r) { - ReadableStreamDefaultControllerErrorIfNeeded(controller, r); - })["catch"](rethrowAssertionErrorRejection); - } - - _createClass(ReadableStreamDefaultController, [{ - key: 'close', - value: function close() { - if (IsReadableStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('close'); - } - - if (this._closeRequested === true) { - throw new TypeError('The stream has already been closed; do not close it again!'); - } - - var state = this._controlledReadableStream._state; - - if (state !== 'readable') { - throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed'); - } - - ReadableStreamDefaultControllerClose(this); - } - }, { - key: 'enqueue', - value: function enqueue(chunk) { - if (IsReadableStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('enqueue'); - } - - if (this._closeRequested === true) { - throw new TypeError('stream is closed or draining'); - } - - var state = this._controlledReadableStream._state; - - if (state !== 'readable') { - throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to'); - } - - return ReadableStreamDefaultControllerEnqueue(this, chunk); - } - }, { - key: 'error', - value: function error(e) { - if (IsReadableStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('error'); - } - - var stream = this._controlledReadableStream; - - if (stream._state !== 'readable') { - throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored'); - } - - ReadableStreamDefaultControllerError(this, e); - } - }, { - key: '__cancelSteps', - value: function __cancelSteps(reason) { - ResetQueue(this); - return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]); - } - }, { - key: '__pullSteps', - value: function __pullSteps() { - var stream = this._controlledReadableStream; - - if (this._queue.length > 0) { - var chunk = DequeueValue(this); - - if (this._closeRequested === true && this._queue.length === 0) { - ReadableStreamClose(stream); - } else { - ReadableStreamDefaultControllerCallPullIfNeeded(this); - } - - return Promise.resolve(CreateIterResultObject(chunk, false)); - } - - var pendingPromise = ReadableStreamAddReadRequest(stream); - ReadableStreamDefaultControllerCallPullIfNeeded(this); - return pendingPromise; - } - }, { - key: 'desiredSize', - get: function get() { - if (IsReadableStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('desiredSize'); - } - - return ReadableStreamDefaultControllerGetDesiredSize(this); - } - }]); - - return ReadableStreamDefaultController; - }(); - - function IsReadableStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) { - return false; - } - - return true; - } - - function ReadableStreamDefaultControllerCallPullIfNeeded(controller) { - var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller); - - if (shouldPull === false) { - return undefined; - } - - if (controller._pulling === true) { - controller._pullAgain = true; - return undefined; - } - - assert(controller._pullAgain === false); - controller._pulling = true; - var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]); - pullPromise.then(function () { - controller._pulling = false; - - if (controller._pullAgain === true) { - controller._pullAgain = false; - return ReadableStreamDefaultControllerCallPullIfNeeded(controller); - } - - return undefined; - }, function (e) { - ReadableStreamDefaultControllerErrorIfNeeded(controller, e); - })["catch"](rethrowAssertionErrorRejection); - return undefined; - } - - function ReadableStreamDefaultControllerShouldCallPull(controller) { - var stream = controller._controlledReadableStream; - - if (stream._state === 'closed' || stream._state === 'errored') { - return false; - } - - if (controller._closeRequested === true) { - return false; - } - - if (controller._started === false) { - return false; - } - - if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { - return true; - } - - var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller); - - if (desiredSize > 0) { - return true; - } - - return false; - } - - function ReadableStreamDefaultControllerClose(controller) { - var stream = controller._controlledReadableStream; - assert(controller._closeRequested === false); - assert(stream._state === 'readable'); - controller._closeRequested = true; - - if (controller._queue.length === 0) { - ReadableStreamClose(stream); - } - } - - function ReadableStreamDefaultControllerEnqueue(controller, chunk) { - var stream = controller._controlledReadableStream; - assert(controller._closeRequested === false); - assert(stream._state === 'readable'); - - if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { - ReadableStreamFulfillReadRequest(stream, chunk, false); - } else { - var chunkSize = 1; - - if (controller._strategySize !== undefined) { - var strategySize = controller._strategySize; - - try { - chunkSize = strategySize(chunk); - } catch (chunkSizeE) { - ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE); - throw chunkSizeE; - } - } - - try { - EnqueueValueWithSize(controller, chunk, chunkSize); - } catch (enqueueE) { - ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE); - throw enqueueE; - } - } - - ReadableStreamDefaultControllerCallPullIfNeeded(controller); - return undefined; - } - - function ReadableStreamDefaultControllerError(controller, e) { - var stream = controller._controlledReadableStream; - assert(stream._state === 'readable'); - ResetQueue(controller); - ReadableStreamError(stream, e); - } - - function ReadableStreamDefaultControllerErrorIfNeeded(controller, e) { - if (controller._controlledReadableStream._state === 'readable') { - ReadableStreamDefaultControllerError(controller, e); - } - } - - function ReadableStreamDefaultControllerGetDesiredSize(controller) { - var stream = controller._controlledReadableStream; - var state = stream._state; - - if (state === 'errored') { - return null; - } - - if (state === 'closed') { - return 0; - } - - return controller._strategyHWM - controller._queueTotalSize; - } - - var ReadableStreamBYOBRequest = function () { - function ReadableStreamBYOBRequest(controller, view) { - _classCallCheck(this, ReadableStreamBYOBRequest); - - this._associatedReadableByteStreamController = controller; - this._view = view; - } - - _createClass(ReadableStreamBYOBRequest, [{ - key: 'respond', - value: function respond(bytesWritten) { - if (IsReadableStreamBYOBRequest(this) === false) { - throw byobRequestBrandCheckException('respond'); - } - - if (this._associatedReadableByteStreamController === undefined) { - throw new TypeError('This BYOB request has been invalidated'); - } - - ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten); - } - }, { - key: 'respondWithNewView', - value: function respondWithNewView(view) { - if (IsReadableStreamBYOBRequest(this) === false) { - throw byobRequestBrandCheckException('respond'); - } - - if (this._associatedReadableByteStreamController === undefined) { - throw new TypeError('This BYOB request has been invalidated'); - } - - if (!ArrayBuffer.isView(view)) { - throw new TypeError('You can only respond with array buffer views'); - } - - ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view); - } - }, { - key: 'view', - get: function get() { - return this._view; - } - }]); - - return ReadableStreamBYOBRequest; - }(); - - var ReadableByteStreamController = function () { - function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) { - _classCallCheck(this, ReadableByteStreamController); - - if (IsReadableStream(stream) === false) { - throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source'); - } - - if (stream._readableStreamController !== undefined) { - throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source'); - } - - this._controlledReadableStream = stream; - this._underlyingByteSource = underlyingByteSource; - this._pullAgain = false; - this._pulling = false; - ReadableByteStreamControllerClearPendingPullIntos(this); - this._queue = this._queueTotalSize = undefined; - ResetQueue(this); - this._closeRequested = false; - this._started = false; - this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark); - var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize; - - if (autoAllocateChunkSize !== undefined) { - if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) { - throw new RangeError('autoAllocateChunkSize must be a positive integer'); - } - } - - this._autoAllocateChunkSize = autoAllocateChunkSize; - this._pendingPullIntos = []; - var controller = this; - var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]); - Promise.resolve(startResult).then(function () { - controller._started = true; - assert(controller._pulling === false); - assert(controller._pullAgain === false); - ReadableByteStreamControllerCallPullIfNeeded(controller); - }, function (r) { - if (stream._state === 'readable') { - ReadableByteStreamControllerError(controller, r); - } - })["catch"](rethrowAssertionErrorRejection); - } - - _createClass(ReadableByteStreamController, [{ - key: 'close', - value: function close() { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('close'); - } - - if (this._closeRequested === true) { - throw new TypeError('The stream has already been closed; do not close it again!'); - } - - var state = this._controlledReadableStream._state; - - if (state !== 'readable') { - throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed'); - } - - ReadableByteStreamControllerClose(this); - } - }, { - key: 'enqueue', - value: function enqueue(chunk) { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('enqueue'); - } - - if (this._closeRequested === true) { - throw new TypeError('stream is closed or draining'); - } - - var state = this._controlledReadableStream._state; - - if (state !== 'readable') { - throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to'); - } - - if (!ArrayBuffer.isView(chunk)) { - throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController'); - } - - ReadableByteStreamControllerEnqueue(this, chunk); - } - }, { - key: 'error', - value: function error(e) { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('error'); - } - - var stream = this._controlledReadableStream; - - if (stream._state !== 'readable') { - throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored'); - } - - ReadableByteStreamControllerError(this, e); - } - }, { - key: '__cancelSteps', - value: function __cancelSteps(reason) { - if (this._pendingPullIntos.length > 0) { - var firstDescriptor = this._pendingPullIntos[0]; - firstDescriptor.bytesFilled = 0; - } - - ResetQueue(this); - return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]); - } - }, { - key: '__pullSteps', - value: function __pullSteps() { - var stream = this._controlledReadableStream; - assert(ReadableStreamHasDefaultReader(stream) === true); - - if (this._queueTotalSize > 0) { - assert(ReadableStreamGetNumReadRequests(stream) === 0); - - var entry = this._queue.shift(); - - this._queueTotalSize -= entry.byteLength; - ReadableByteStreamControllerHandleQueueDrain(this); - var view = void 0; - - try { - view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength); - } catch (viewE) { - return Promise.reject(viewE); - } - - return Promise.resolve(CreateIterResultObject(view, false)); - } - - var autoAllocateChunkSize = this._autoAllocateChunkSize; - - if (autoAllocateChunkSize !== undefined) { - var buffer = void 0; - - try { - buffer = new ArrayBuffer(autoAllocateChunkSize); - } catch (bufferE) { - return Promise.reject(bufferE); - } - - var pullIntoDescriptor = { - buffer: buffer, - byteOffset: 0, - byteLength: autoAllocateChunkSize, - bytesFilled: 0, - elementSize: 1, - ctor: Uint8Array, - readerType: 'default' - }; - - this._pendingPullIntos.push(pullIntoDescriptor); - } - - var promise = ReadableStreamAddReadRequest(stream); - ReadableByteStreamControllerCallPullIfNeeded(this); - return promise; - } - }, { - key: 'byobRequest', - get: function get() { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('byobRequest'); - } - - if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) { - var firstDescriptor = this._pendingPullIntos[0]; - var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled); - this._byobRequest = new ReadableStreamBYOBRequest(this, view); - } - - return this._byobRequest; - } - }, { - key: 'desiredSize', - get: function get() { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('desiredSize'); - } - - return ReadableByteStreamControllerGetDesiredSize(this); - } - }]); - - return ReadableByteStreamController; - }(); - - function IsReadableByteStreamController(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) { - return false; - } - - return true; - } - - function IsReadableStreamBYOBRequest(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) { - return false; - } - - return true; - } - - function ReadableByteStreamControllerCallPullIfNeeded(controller) { - var shouldPull = ReadableByteStreamControllerShouldCallPull(controller); - - if (shouldPull === false) { - return undefined; - } - - if (controller._pulling === true) { - controller._pullAgain = true; - return undefined; - } - - assert(controller._pullAgain === false); - controller._pulling = true; - var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]); - pullPromise.then(function () { - controller._pulling = false; - - if (controller._pullAgain === true) { - controller._pullAgain = false; - ReadableByteStreamControllerCallPullIfNeeded(controller); - } - }, function (e) { - if (controller._controlledReadableStream._state === 'readable') { - ReadableByteStreamControllerError(controller, e); - } - })["catch"](rethrowAssertionErrorRejection); - return undefined; - } - - function ReadableByteStreamControllerClearPendingPullIntos(controller) { - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - controller._pendingPullIntos = []; - } - - function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) { - assert(stream._state !== 'errored', 'state must not be errored'); - var done = false; - - if (stream._state === 'closed') { - assert(pullIntoDescriptor.bytesFilled === 0); - done = true; - } - - var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); - - if (pullIntoDescriptor.readerType === 'default') { - ReadableStreamFulfillReadRequest(stream, filledView, done); - } else { - assert(pullIntoDescriptor.readerType === 'byob'); - ReadableStreamFulfillReadIntoRequest(stream, filledView, done); - } - } - - function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) { - var bytesFilled = pullIntoDescriptor.bytesFilled; - var elementSize = pullIntoDescriptor.elementSize; - assert(bytesFilled <= pullIntoDescriptor.byteLength); - assert(bytesFilled % elementSize === 0); - return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize); - } - - function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) { - controller._queue.push({ - buffer: buffer, - byteOffset: byteOffset, - byteLength: byteLength - }); - - controller._queueTotalSize += byteLength; - } - - function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) { - var elementSize = pullIntoDescriptor.elementSize; - var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize; - var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled); - var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy; - var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize; - var totalBytesToCopyRemaining = maxBytesToCopy; - var ready = false; - - if (maxAlignedBytes > currentAlignedBytes) { - totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled; - ready = true; - } - - var queue = controller._queue; - - while (totalBytesToCopyRemaining > 0) { - var headOfQueue = queue[0]; - var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength); - var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; - ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy); - - if (headOfQueue.byteLength === bytesToCopy) { - queue.shift(); - } else { - headOfQueue.byteOffset += bytesToCopy; - headOfQueue.byteLength -= bytesToCopy; - } - - controller._queueTotalSize -= bytesToCopy; - ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor); - totalBytesToCopyRemaining -= bytesToCopy; - } - - if (ready === false) { - assert(controller._queueTotalSize === 0, 'queue must be empty'); - assert(pullIntoDescriptor.bytesFilled > 0); - assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize); - } - - return ready; - } - - function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) { - assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor); - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - pullIntoDescriptor.bytesFilled += size; - } - - function ReadableByteStreamControllerHandleQueueDrain(controller) { - assert(controller._controlledReadableStream._state === 'readable'); - - if (controller._queueTotalSize === 0 && controller._closeRequested === true) { - ReadableStreamClose(controller._controlledReadableStream); - } else { - ReadableByteStreamControllerCallPullIfNeeded(controller); - } - } - - function ReadableByteStreamControllerInvalidateBYOBRequest(controller) { - if (controller._byobRequest === undefined) { - return; - } - - controller._byobRequest._associatedReadableByteStreamController = undefined; - controller._byobRequest._view = undefined; - controller._byobRequest = undefined; - } - - function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) { - assert(controller._closeRequested === false); - - while (controller._pendingPullIntos.length > 0) { - if (controller._queueTotalSize === 0) { - return; - } - - var pullIntoDescriptor = controller._pendingPullIntos[0]; - - if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) { - ReadableByteStreamControllerShiftPendingPullInto(controller); - ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor); - } - } - } - - function ReadableByteStreamControllerPullInto(controller, view) { - var stream = controller._controlledReadableStream; - var elementSize = 1; - - if (view.constructor !== DataView) { - elementSize = view.constructor.BYTES_PER_ELEMENT; - } - - var ctor = view.constructor; - var pullIntoDescriptor = { - buffer: view.buffer, - byteOffset: view.byteOffset, - byteLength: view.byteLength, - bytesFilled: 0, - elementSize: elementSize, - ctor: ctor, - readerType: 'byob' - }; - - if (controller._pendingPullIntos.length > 0) { - pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); - - controller._pendingPullIntos.push(pullIntoDescriptor); - - return ReadableStreamAddReadIntoRequest(stream); - } - - if (stream._state === 'closed') { - var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0); - return Promise.resolve(CreateIterResultObject(emptyView, true)); - } - - if (controller._queueTotalSize > 0) { - if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) { - var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); - ReadableByteStreamControllerHandleQueueDrain(controller); - return Promise.resolve(CreateIterResultObject(filledView, false)); - } - - if (controller._closeRequested === true) { - var e = new TypeError('Insufficient bytes to fill elements in the given buffer'); - ReadableByteStreamControllerError(controller, e); - return Promise.reject(e); - } - } - - pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); - - controller._pendingPullIntos.push(pullIntoDescriptor); - - var promise = ReadableStreamAddReadIntoRequest(stream); - ReadableByteStreamControllerCallPullIfNeeded(controller); - return promise; - } - - function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) { - firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer); - assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0'); - var stream = controller._controlledReadableStream; - - if (ReadableStreamHasBYOBReader(stream) === true) { - while (ReadableStreamGetNumReadIntoRequests(stream) > 0) { - var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller); - ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor); - } - } - } - - function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) { - if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) { - throw new RangeError('bytesWritten out of range'); - } - - ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor); - - if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) { - return; - } - - ReadableByteStreamControllerShiftPendingPullInto(controller); - var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize; - - if (remainderSize > 0) { - var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; - var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end); - ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength); - } - - pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); - pullIntoDescriptor.bytesFilled -= remainderSize; - ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor); - ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); - } - - function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) { - var firstDescriptor = controller._pendingPullIntos[0]; - var stream = controller._controlledReadableStream; - - if (stream._state === 'closed') { - if (bytesWritten !== 0) { - throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream'); - } - - ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor); - } else { - assert(stream._state === 'readable'); - ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor); - } - } - - function ReadableByteStreamControllerShiftPendingPullInto(controller) { - var descriptor = controller._pendingPullIntos.shift(); - - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - return descriptor; - } - - function ReadableByteStreamControllerShouldCallPull(controller) { - var stream = controller._controlledReadableStream; - - if (stream._state !== 'readable') { - return false; - } - - if (controller._closeRequested === true) { - return false; - } - - if (controller._started === false) { - return false; - } - - if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { - return true; - } - - if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) { - return true; - } - - if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) { - return true; - } - - return false; - } - - function ReadableByteStreamControllerClose(controller) { - var stream = controller._controlledReadableStream; - assert(controller._closeRequested === false); - assert(stream._state === 'readable'); - - if (controller._queueTotalSize > 0) { - controller._closeRequested = true; - return; - } - - if (controller._pendingPullIntos.length > 0) { - var firstPendingPullInto = controller._pendingPullIntos[0]; - - if (firstPendingPullInto.bytesFilled > 0) { - var e = new TypeError('Insufficient bytes to fill elements in the given buffer'); - ReadableByteStreamControllerError(controller, e); - throw e; - } - } - - ReadableStreamClose(stream); - } - - function ReadableByteStreamControllerEnqueue(controller, chunk) { - var stream = controller._controlledReadableStream; - assert(controller._closeRequested === false); - assert(stream._state === 'readable'); - var buffer = chunk.buffer; - var byteOffset = chunk.byteOffset; - var byteLength = chunk.byteLength; - var transferredBuffer = TransferArrayBuffer(buffer); - - if (ReadableStreamHasDefaultReader(stream) === true) { - if (ReadableStreamGetNumReadRequests(stream) === 0) { - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - } else { - assert(controller._queue.length === 0); - var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength); - ReadableStreamFulfillReadRequest(stream, transferredView, false); - } - } else if (ReadableStreamHasBYOBReader(stream) === true) { - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); - } else { - assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked'); - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - } - } - - function ReadableByteStreamControllerError(controller, e) { - var stream = controller._controlledReadableStream; - assert(stream._state === 'readable'); - ReadableByteStreamControllerClearPendingPullIntos(controller); - ResetQueue(controller); - ReadableStreamError(stream, e); - } - - function ReadableByteStreamControllerGetDesiredSize(controller) { - var stream = controller._controlledReadableStream; - var state = stream._state; - - if (state === 'errored') { - return null; - } - - if (state === 'closed') { - return 0; - } - - return controller._strategyHWM - controller._queueTotalSize; - } - - function ReadableByteStreamControllerRespond(controller, bytesWritten) { - bytesWritten = Number(bytesWritten); - - if (IsFiniteNonNegativeNumber(bytesWritten) === false) { - throw new RangeError('bytesWritten must be a finite'); - } - - assert(controller._pendingPullIntos.length > 0); - ReadableByteStreamControllerRespondInternal(controller, bytesWritten); - } - - function ReadableByteStreamControllerRespondWithNewView(controller, view) { - assert(controller._pendingPullIntos.length > 0); - var firstDescriptor = controller._pendingPullIntos[0]; - - if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) { - throw new RangeError('The region specified by view does not match byobRequest'); - } - - if (firstDescriptor.byteLength !== view.byteLength) { - throw new RangeError('The buffer of view has different capacity than byobRequest'); - } - - firstDescriptor.buffer = view.buffer; - ReadableByteStreamControllerRespondInternal(controller, view.byteLength); - } - - function streamBrandCheckException(name) { - return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream'); - } - - function readerLockException(name) { - return new TypeError('Cannot ' + name + ' a stream using a released reader'); - } - - function defaultReaderBrandCheckException(name) { - return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader'); - } - - function defaultReaderClosedPromiseInitialize(reader) { - reader._closedPromise = new Promise(function (resolve, reject) { - reader._closedPromise_resolve = resolve; - reader._closedPromise_reject = reject; - }); - } - - function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) { - reader._closedPromise = Promise.reject(reason); - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - - function defaultReaderClosedPromiseInitializeAsResolved(reader) { - reader._closedPromise = Promise.resolve(undefined); - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - - function defaultReaderClosedPromiseReject(reader, reason) { - assert(reader._closedPromise_resolve !== undefined); - assert(reader._closedPromise_reject !== undefined); - - reader._closedPromise_reject(reason); - - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - - function defaultReaderClosedPromiseResetToRejected(reader, reason) { - assert(reader._closedPromise_resolve === undefined); - assert(reader._closedPromise_reject === undefined); - reader._closedPromise = Promise.reject(reason); - } - - function defaultReaderClosedPromiseResolve(reader) { - assert(reader._closedPromise_resolve !== undefined); - assert(reader._closedPromise_reject !== undefined); - - reader._closedPromise_resolve(undefined); - - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - - function byobReaderBrandCheckException(name) { - return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader'); - } - - function defaultControllerBrandCheckException(name) { - return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController'); - } - - function byobRequestBrandCheckException(name) { - return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest'); - } - - function byteStreamControllerBrandCheckException(name) { - return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController'); - } - - function ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) { - try { - Promise.prototype.then.call(promise, undefined, function () {}); - } catch (e) {} - } -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var transformStream = __w_pdfjs_require__(6); - - var readableStream = __w_pdfjs_require__(4); - - var writableStream = __w_pdfjs_require__(2); - - exports.TransformStream = transformStream.TransformStream; - exports.ReadableStream = readableStream.ReadableStream; - exports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed; - exports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose; - exports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue; - exports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError; - exports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize; - exports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter; - exports.IsWritableStream = writableStream.IsWritableStream; - exports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked; - exports.WritableStream = writableStream.WritableStream; - exports.WritableStreamAbort = writableStream.WritableStreamAbort; - exports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError; - exports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation; - exports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease; - exports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite; -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - var _require = __w_pdfjs_require__(1), - assert = _require.assert; - - var _require2 = __w_pdfjs_require__(0), - InvokeOrNoop = _require2.InvokeOrNoop, - PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback, - PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop, - typeIsObject = _require2.typeIsObject; - - var _require3 = __w_pdfjs_require__(4), - ReadableStream = _require3.ReadableStream, - ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose, - ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue, - ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError, - ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize; - - var _require4 = __w_pdfjs_require__(2), - WritableStream = _require4.WritableStream, - WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError; - - function TransformStreamCloseReadable(transformStream) { - if (transformStream._errored === true) { - throw new TypeError('TransformStream is already errored'); - } - - if (transformStream._readableClosed === true) { - throw new TypeError('Readable side is already closed'); - } - - TransformStreamCloseReadableInternal(transformStream); - } - - function TransformStreamEnqueueToReadable(transformStream, chunk) { - if (transformStream._errored === true) { - throw new TypeError('TransformStream is already errored'); - } - - if (transformStream._readableClosed === true) { - throw new TypeError('Readable side is already closed'); - } - - var controller = transformStream._readableController; - - try { - ReadableStreamDefaultControllerEnqueue(controller, chunk); - } catch (e) { - transformStream._readableClosed = true; - TransformStreamErrorIfNeeded(transformStream, e); - throw transformStream._storedError; - } - - var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller); - var maybeBackpressure = desiredSize <= 0; - - if (maybeBackpressure === true && transformStream._backpressure === false) { - TransformStreamSetBackpressure(transformStream, true); - } - } - - function TransformStreamError(transformStream, e) { - if (transformStream._errored === true) { - throw new TypeError('TransformStream is already errored'); - } - - TransformStreamErrorInternal(transformStream, e); - } - - function TransformStreamCloseReadableInternal(transformStream) { - assert(transformStream._errored === false); - assert(transformStream._readableClosed === false); - - try { - ReadableStreamDefaultControllerClose(transformStream._readableController); - } catch (e) { - assert(false); - } - - transformStream._readableClosed = true; - } - - function TransformStreamErrorIfNeeded(transformStream, e) { - if (transformStream._errored === false) { - TransformStreamErrorInternal(transformStream, e); - } - } - - function TransformStreamErrorInternal(transformStream, e) { - assert(transformStream._errored === false); - transformStream._errored = true; - transformStream._storedError = e; - - if (transformStream._writableDone === false) { - WritableStreamDefaultControllerError(transformStream._writableController, e); - } - - if (transformStream._readableClosed === false) { - ReadableStreamDefaultControllerError(transformStream._readableController, e); - } - } - - function TransformStreamReadableReadyPromise(transformStream) { - assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); - - if (transformStream._backpressure === false) { - return Promise.resolve(); - } - - assert(transformStream._backpressure === true, '_backpressure should have been initialized'); - return transformStream._backpressureChangePromise; - } - - function TransformStreamSetBackpressure(transformStream, backpressure) { - assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed'); - - if (transformStream._backpressureChangePromise !== undefined) { - transformStream._backpressureChangePromise_resolve(backpressure); - } - - transformStream._backpressureChangePromise = new Promise(function (resolve) { - transformStream._backpressureChangePromise_resolve = resolve; - }); - - transformStream._backpressureChangePromise.then(function (resolution) { - assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed'); - }); - - transformStream._backpressure = backpressure; - } - - function TransformStreamDefaultTransform(chunk, transformStreamController) { - var transformStream = transformStreamController._controlledTransformStream; - TransformStreamEnqueueToReadable(transformStream, chunk); - return Promise.resolve(); - } - - function TransformStreamTransform(transformStream, chunk) { - assert(transformStream._errored === false); - assert(transformStream._transforming === false); - assert(transformStream._backpressure === false); - transformStream._transforming = true; - var transformer = transformStream._transformer; - var controller = transformStream._transformStreamController; - var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]); - return transformPromise.then(function () { - transformStream._transforming = false; - return TransformStreamReadableReadyPromise(transformStream); - }, function (e) { - TransformStreamErrorIfNeeded(transformStream, e); - return Promise.reject(e); - }); - } - - function IsTransformStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) { - return false; - } - - return true; - } - - function IsTransformStream(x) { - if (!typeIsObject(x)) { - return false; - } - - if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) { - return false; - } - - return true; - } - - var TransformStreamSink = function () { - function TransformStreamSink(transformStream, startPromise) { - _classCallCheck(this, TransformStreamSink); - - this._transformStream = transformStream; - this._startPromise = startPromise; - } - - _createClass(TransformStreamSink, [{ - key: 'start', - value: function start(c) { - var transformStream = this._transformStream; - transformStream._writableController = c; - return this._startPromise.then(function () { - return TransformStreamReadableReadyPromise(transformStream); - }); - } - }, { - key: 'write', - value: function write(chunk) { - var transformStream = this._transformStream; - return TransformStreamTransform(transformStream, chunk); - } - }, { - key: 'abort', - value: function abort() { - var transformStream = this._transformStream; - transformStream._writableDone = true; - TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted')); - } - }, { - key: 'close', - value: function close() { - var transformStream = this._transformStream; - assert(transformStream._transforming === false); - transformStream._writableDone = true; - var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]); - return flushPromise.then(function () { - if (transformStream._errored === true) { - return Promise.reject(transformStream._storedError); - } - - if (transformStream._readableClosed === false) { - TransformStreamCloseReadableInternal(transformStream); - } - - return Promise.resolve(); - })["catch"](function (r) { - TransformStreamErrorIfNeeded(transformStream, r); - return Promise.reject(transformStream._storedError); - }); - } - }]); - - return TransformStreamSink; - }(); - - var TransformStreamSource = function () { - function TransformStreamSource(transformStream, startPromise) { - _classCallCheck(this, TransformStreamSource); - - this._transformStream = transformStream; - this._startPromise = startPromise; - } - - _createClass(TransformStreamSource, [{ - key: 'start', - value: function start(c) { - var transformStream = this._transformStream; - transformStream._readableController = c; - return this._startPromise.then(function () { - assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); - - if (transformStream._backpressure === true) { - return Promise.resolve(); - } - - assert(transformStream._backpressure === false, '_backpressure should have been initialized'); - return transformStream._backpressureChangePromise; - }); - } - }, { - key: 'pull', - value: function pull() { - var transformStream = this._transformStream; - assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false'); - assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); - TransformStreamSetBackpressure(transformStream, false); - return transformStream._backpressureChangePromise; - } - }, { - key: 'cancel', - value: function cancel() { - var transformStream = this._transformStream; - transformStream._readableClosed = true; - TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled')); - } - }]); - - return TransformStreamSource; - }(); - - var TransformStreamDefaultController = function () { - function TransformStreamDefaultController(transformStream) { - _classCallCheck(this, TransformStreamDefaultController); - - if (IsTransformStream(transformStream) === false) { - throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance'); - } - - if (transformStream._transformStreamController !== undefined) { - throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor'); - } - - this._controlledTransformStream = transformStream; - } - - _createClass(TransformStreamDefaultController, [{ - key: 'enqueue', - value: function enqueue(chunk) { - if (IsTransformStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('enqueue'); - } - - TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk); - } - }, { - key: 'close', - value: function close() { - if (IsTransformStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('close'); - } - - TransformStreamCloseReadable(this._controlledTransformStream); - } - }, { - key: 'error', - value: function error(reason) { - if (IsTransformStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('error'); - } - - TransformStreamError(this._controlledTransformStream, reason); - } - }, { - key: 'desiredSize', - get: function get() { - if (IsTransformStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('desiredSize'); - } - - var transformStream = this._controlledTransformStream; - var readableController = transformStream._readableController; - return ReadableStreamDefaultControllerGetDesiredSize(readableController); - } - }]); - - return TransformStreamDefaultController; - }(); - - var TransformStream = function () { - function TransformStream() { - var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - _classCallCheck(this, TransformStream); - - this._transformer = transformer; - var readableStrategy = transformer.readableStrategy, - writableStrategy = transformer.writableStrategy; - this._transforming = false; - this._errored = false; - this._storedError = undefined; - this._writableController = undefined; - this._readableController = undefined; - this._transformStreamController = undefined; - this._writableDone = false; - this._readableClosed = false; - this._backpressure = undefined; - this._backpressureChangePromise = undefined; - this._backpressureChangePromise_resolve = undefined; - this._transformStreamController = new TransformStreamDefaultController(this); - var startPromise_resolve = void 0; - var startPromise = new Promise(function (resolve) { - startPromise_resolve = resolve; - }); - var source = new TransformStreamSource(this, startPromise); - this._readable = new ReadableStream(source, readableStrategy); - var sink = new TransformStreamSink(this, startPromise); - this._writable = new WritableStream(sink, writableStrategy); - assert(this._writableController !== undefined); - assert(this._readableController !== undefined); - var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController); - TransformStreamSetBackpressure(this, desiredSize <= 0); - var transformStream = this; - var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]); - startPromise_resolve(startResult); - startPromise["catch"](function (e) { - if (transformStream._errored === false) { - transformStream._errored = true; - transformStream._storedError = e; - } - }); - } - - _createClass(TransformStream, [{ - key: 'readable', - get: function get() { - if (IsTransformStream(this) === false) { - throw streamBrandCheckException('readable'); - } - - return this._readable; - } - }, { - key: 'writable', - get: function get() { - if (IsTransformStream(this) === false) { - throw streamBrandCheckException('writable'); - } - - return this._writable; - } - }]); - - return TransformStream; - }(); - - module.exports = { - TransformStream: TransformStream - }; - - function defaultControllerBrandCheckException(name) { - return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController'); - } - - function streamBrandCheckException(name) { - return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream'); - } -}, function (module, exports, __w_pdfjs_require__) { - module.exports = __w_pdfjs_require__(5); -}])); - -/***/ }), -/* 149 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -{ - var isURLSupported = false; - - try { - if (typeof URL === 'function' && _typeof(URL.prototype) === 'object' && 'origin' in URL.prototype) { - var u = new URL('b', 'http://a'); - u.pathname = 'c%20d'; - isURLSupported = u.href === 'http://a/c%20d'; - } - } catch (ex) {} - - if (isURLSupported) { - exports.URL = URL; - } else { - var PolyfillURL = __w_pdfjs_require__(150).URL; - - var OriginalURL = __w_pdfjs_require__(7).URL; - - if (OriginalURL) { - PolyfillURL.createObjectURL = function (blob) { - return OriginalURL.createObjectURL.apply(OriginalURL, arguments); - }; - - PolyfillURL.revokeObjectURL = function (url) { - OriginalURL.revokeObjectURL(url); - }; - } - - exports.URL = PolyfillURL; - } -} - -/***/ }), -/* 150 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -(function URLConstructorClosure() { - 'use strict'; - - var relative = Object.create(null); - relative['ftp'] = 21; - relative['file'] = 0; - relative['gopher'] = 70; - relative['http'] = 80; - relative['https'] = 443; - relative['ws'] = 80; - relative['wss'] = 443; - var relativePathDotMapping = Object.create(null); - relativePathDotMapping['%2e'] = '.'; - relativePathDotMapping['.%2e'] = '..'; - relativePathDotMapping['%2e.'] = '..'; - relativePathDotMapping['%2e%2e'] = '..'; - - function isRelativeScheme(scheme) { - return relative[scheme] !== undefined; - } - - function invalid() { - clear.call(this); - this._isInvalid = true; - } - - function IDNAToASCII(h) { - if (h === '') { - invalid.call(this); - } - - return h.toLowerCase(); - } - - function percentEscape(c) { - var unicode = c.charCodeAt(0); - - if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1) { - return c; - } - - return encodeURIComponent(c); - } - - function percentEscapeQuery(c) { - var unicode = c.charCodeAt(0); - - if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1) { - return c; - } - - return encodeURIComponent(c); - } - - var EOF, - ALPHA = /[a-zA-Z]/, - ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/; - - function parse(input, stateOverride, base) { - function err(message) { - errors.push(message); - } - - var state = stateOverride || 'scheme start', - cursor = 0, - buffer = '', - seenAt = false, - seenBracket = false, - errors = []; - - loop: while ((input[cursor - 1] !== EOF || cursor === 0) && !this._isInvalid) { - var c = input[cursor]; - - switch (state) { - case 'scheme start': - if (c && ALPHA.test(c)) { - buffer += c.toLowerCase(); - state = 'scheme'; - } else if (!stateOverride) { - buffer = ''; - state = 'no scheme'; - continue; - } else { - err('Invalid scheme.'); - break loop; - } - - break; - - case 'scheme': - if (c && ALPHANUMERIC.test(c)) { - buffer += c.toLowerCase(); - } else if (c === ':') { - this._scheme = buffer; - buffer = ''; - - if (stateOverride) { - break loop; - } - - if (isRelativeScheme(this._scheme)) { - this._isRelative = true; - } - - if (this._scheme === 'file') { - state = 'relative'; - } else if (this._isRelative && base && base._scheme === this._scheme) { - state = 'relative or authority'; - } else if (this._isRelative) { - state = 'authority first slash'; - } else { - state = 'scheme data'; - } - } else if (!stateOverride) { - buffer = ''; - cursor = 0; - state = 'no scheme'; - continue; - } else if (c === EOF) { - break loop; - } else { - err('Code point not allowed in scheme: ' + c); - break loop; - } - - break; - - case 'scheme data': - if (c === '?') { - this._query = '?'; - state = 'query'; - } else if (c === '#') { - this._fragment = '#'; - state = 'fragment'; - } else { - if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { - this._schemeData += percentEscape(c); - } - } - - break; - - case 'no scheme': - if (!base || !isRelativeScheme(base._scheme)) { - err('Missing scheme.'); - invalid.call(this); - } else { - state = 'relative'; - continue; - } - - break; - - case 'relative or authority': - if (c === '/' && input[cursor + 1] === '/') { - state = 'authority ignore slashes'; - } else { - err('Expected /, got: ' + c); - state = 'relative'; - continue; - } - - break; - - case 'relative': - this._isRelative = true; - - if (this._scheme !== 'file') { - this._scheme = base._scheme; - } - - if (c === EOF) { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = base._query; - this._username = base._username; - this._password = base._password; - break loop; - } else if (c === '/' || c === '\\') { - if (c === '\\') { - err('\\ is an invalid code point.'); - } - - state = 'relative slash'; - } else if (c === '?') { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = '?'; - this._username = base._username; - this._password = base._password; - state = 'query'; - } else if (c === '#') { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = base._query; - this._fragment = '#'; - this._username = base._username; - this._password = base._password; - state = 'fragment'; - } else { - var nextC = input[cursor + 1]; - var nextNextC = input[cursor + 2]; - - if (this._scheme !== 'file' || !ALPHA.test(c) || nextC !== ':' && nextC !== '|' || nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\' && nextNextC !== '?' && nextNextC !== '#') { - this._host = base._host; - this._port = base._port; - this._username = base._username; - this._password = base._password; - this._path = base._path.slice(); - - this._path.pop(); - } - - state = 'relative path'; - continue; - } - - break; - - case 'relative slash': - if (c === '/' || c === '\\') { - if (c === '\\') { - err('\\ is an invalid code point.'); - } - - if (this._scheme === 'file') { - state = 'file host'; - } else { - state = 'authority ignore slashes'; - } - } else { - if (this._scheme !== 'file') { - this._host = base._host; - this._port = base._port; - this._username = base._username; - this._password = base._password; - } - - state = 'relative path'; - continue; - } - - break; - - case 'authority first slash': - if (c === '/') { - state = 'authority second slash'; - } else { - err('Expected \'/\', got: ' + c); - state = 'authority ignore slashes'; - continue; - } - - break; - - case 'authority second slash': - state = 'authority ignore slashes'; - - if (c !== '/') { - err('Expected \'/\', got: ' + c); - continue; - } - - break; - - case 'authority ignore slashes': - if (c !== '/' && c !== '\\') { - state = 'authority'; - continue; - } else { - err('Expected authority, got: ' + c); - } - - break; - - case 'authority': - if (c === '@') { - if (seenAt) { - err('@ already seen.'); - buffer += '%40'; - } - - seenAt = true; - - for (var i = 0; i < buffer.length; i++) { - var cp = buffer[i]; - - if (cp === '\t' || cp === '\n' || cp === '\r') { - err('Invalid whitespace in authority.'); - continue; - } - - if (cp === ':' && this._password === null) { - this._password = ''; - continue; - } - - var tempC = percentEscape(cp); - - if (this._password !== null) { - this._password += tempC; - } else { - this._username += tempC; - } - } - - buffer = ''; - } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { - cursor -= buffer.length; - buffer = ''; - state = 'host'; - continue; - } else { - buffer += c; - } - - break; - - case 'file host': - if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { - if (buffer.length === 2 && ALPHA.test(buffer[0]) && (buffer[1] === ':' || buffer[1] === '|')) { - state = 'relative path'; - } else if (buffer.length === 0) { - state = 'relative path start'; - } else { - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'relative path start'; - } - - continue; - } else if (c === '\t' || c === '\n' || c === '\r') { - err('Invalid whitespace in file host.'); - } else { - buffer += c; - } - - break; - - case 'host': - case 'hostname': - if (c === ':' && !seenBracket) { - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'port'; - - if (stateOverride === 'hostname') { - break loop; - } - } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'relative path start'; - - if (stateOverride) { - break loop; - } - - continue; - } else if (c !== '\t' && c !== '\n' && c !== '\r') { - if (c === '[') { - seenBracket = true; - } else if (c === ']') { - seenBracket = false; - } - - buffer += c; - } else { - err('Invalid code point in host/hostname: ' + c); - } - - break; - - case 'port': - if (/[0-9]/.test(c)) { - buffer += c; - } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#' || stateOverride) { - if (buffer !== '') { - var temp = parseInt(buffer, 10); - - if (temp !== relative[this._scheme]) { - this._port = temp + ''; - } - - buffer = ''; - } - - if (stateOverride) { - break loop; - } - - state = 'relative path start'; - continue; - } else if (c === '\t' || c === '\n' || c === '\r') { - err('Invalid code point in port: ' + c); - } else { - invalid.call(this); - } - - break; - - case 'relative path start': - if (c === '\\') { - err('\'\\\' not allowed in path.'); - } - - state = 'relative path'; - - if (c !== '/' && c !== '\\') { - continue; - } - - break; - - case 'relative path': - if (c === EOF || c === '/' || c === '\\' || !stateOverride && (c === '?' || c === '#')) { - if (c === '\\') { - err('\\ not allowed in relative path.'); - } - - var tmp; - - if (tmp = relativePathDotMapping[buffer.toLowerCase()]) { - buffer = tmp; - } - - if (buffer === '..') { - this._path.pop(); - - if (c !== '/' && c !== '\\') { - this._path.push(''); - } - } else if (buffer === '.' && c !== '/' && c !== '\\') { - this._path.push(''); - } else if (buffer !== '.') { - if (this._scheme === 'file' && this._path.length === 0 && buffer.length === 2 && ALPHA.test(buffer[0]) && buffer[1] === '|') { - buffer = buffer[0] + ':'; - } - - this._path.push(buffer); - } - - buffer = ''; - - if (c === '?') { - this._query = '?'; - state = 'query'; - } else if (c === '#') { - this._fragment = '#'; - state = 'fragment'; - } - } else if (c !== '\t' && c !== '\n' && c !== '\r') { - buffer += percentEscape(c); - } - - break; - - case 'query': - if (!stateOverride && c === '#') { - this._fragment = '#'; - state = 'fragment'; - } else if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { - this._query += percentEscapeQuery(c); - } - - break; - - case 'fragment': - if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { - this._fragment += c; - } - - break; - } - - cursor++; - } - } - - function clear() { - this._scheme = ''; - this._schemeData = ''; - this._username = ''; - this._password = null; - this._host = ''; - this._port = ''; - this._path = []; - this._query = ''; - this._fragment = ''; - this._isInvalid = false; - this._isRelative = false; - } - - function JURL(url, base) { - if (base !== undefined && !(base instanceof JURL)) { - base = new JURL(String(base)); - } - - this._url = url; - clear.call(this); - var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, ''); - parse.call(this, input, null, base); - } - - JURL.prototype = { - toString: function toString() { - return this.href; - }, - - get href() { - if (this._isInvalid) { - return this._url; - } - - var authority = ''; - - if (this._username !== '' || this._password !== null) { - authority = this._username + (this._password !== null ? ':' + this._password : '') + '@'; - } - - return this.protocol + (this._isRelative ? '//' + authority + this.host : '') + this.pathname + this._query + this._fragment; - }, - - set href(value) { - clear.call(this); - parse.call(this, value); - }, - - get protocol() { - return this._scheme + ':'; - }, - - set protocol(value) { - if (this._isInvalid) { - return; - } - - parse.call(this, value + ':', 'scheme start'); - }, - - get host() { - return this._isInvalid ? '' : this._port ? this._host + ':' + this._port : this._host; - }, - - set host(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - - parse.call(this, value, 'host'); - }, - - get hostname() { - return this._host; - }, - - set hostname(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - - parse.call(this, value, 'hostname'); - }, - - get port() { - return this._port; - }, - - set port(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - - parse.call(this, value, 'port'); - }, - - get pathname() { - return this._isInvalid ? '' : this._isRelative ? '/' + this._path.join('/') : this._schemeData; - }, - - set pathname(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - - this._path = []; - parse.call(this, value, 'relative path start'); - }, - - get search() { - return this._isInvalid || !this._query || this._query === '?' ? '' : this._query; - }, - - set search(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - - this._query = '?'; - - if (value[0] === '?') { - value = value.slice(1); - } - - parse.call(this, value, 'query'); - }, - - get hash() { - return this._isInvalid || !this._fragment || this._fragment === '#' ? '' : this._fragment; - }, - - set hash(value) { - if (this._isInvalid) { - return; - } - - this._fragment = '#'; - - if (value[0] === '#') { - value = value.slice(1); - } - - parse.call(this, value, 'fragment'); - }, - - get origin() { - var host; - - if (this._isInvalid || !this._scheme) { - return ''; - } - - switch (this._scheme) { - case 'data': - case 'file': - case 'javascript': - case 'mailto': - return 'null'; - - case 'blob': - try { - return new JURL(this._schemeData).origin || 'null'; - } catch (_) {} - - return 'null'; - } - - host = this.host; - - if (!host) { - return ''; - } - - return this._scheme + '://' + host; - } - - }; - exports.URL = JURL; -})(); - -/***/ }), -/* 151 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); +exports.RefSetCache = exports.RefSet = exports.Ref = exports.Name = exports.EOF = exports.Dict = exports.Cmd = exports.CIRCULAR_REF = void 0; exports.clearPrimitiveCaches = clearPrimitiveCaches; -exports.isEOF = isEOF; exports.isCmd = isCmd; exports.isDict = isDict; exports.isName = isName; -exports.isRef = isRef; exports.isRefsEqual = isRefsEqual; -exports.isStream = isStream; -exports.RefSetCache = exports.RefSet = exports.Ref = exports.Name = exports.Dict = exports.Cmd = exports.EOF = void 0; -var _util = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(2); -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -var EOF = {}; +const CIRCULAR_REF = Symbol("CIRCULAR_REF"); +exports.CIRCULAR_REF = CIRCULAR_REF; +const EOF = Symbol("EOF"); exports.EOF = EOF; -var Name = function NameClosure() { - var nameCache = Object.create(null); +const Name = function NameClosure() { + let nameCache = Object.create(null); + + class Name { + constructor(name) { + this.name = name; + } + + static get(name) { + return nameCache[name] || (nameCache[name] = new Name(name)); + } + + static _clearCache() { + nameCache = Object.create(null); + } - function Name(name) { - this.name = name; } - Name.prototype = {}; - - Name.get = function Name_get(name) { - var nameValue = nameCache[name]; - return nameValue ? nameValue : nameCache[name] = new Name(name); - }; - - Name._clearCache = function () { - nameCache = Object.create(null); - }; - return Name; }(); exports.Name = Name; -var Cmd = function CmdClosure() { - var cmdCache = Object.create(null); +const Cmd = function CmdClosure() { + let cmdCache = Object.create(null); + + class Cmd { + constructor(cmd) { + this.cmd = cmd; + } + + static get(cmd) { + return cmdCache[cmd] || (cmdCache[cmd] = new Cmd(cmd)); + } + + static _clearCache() { + cmdCache = Object.create(null); + } - function Cmd(cmd) { - this.cmd = cmd; } - Cmd.prototype = {}; - - Cmd.get = function Cmd_get(cmd) { - var cmdValue = cmdCache[cmd]; - return cmdValue ? cmdValue : cmdCache[cmd] = new Cmd(cmd); - }; - - Cmd._clearCache = function () { - cmdCache = Object.create(null); - }; - return Cmd; }(); exports.Cmd = Cmd; -var Dict = function DictClosure() { - var nonSerializable = function nonSerializableClosure() { - return nonSerializable; - }; +const nonSerializable = function nonSerializableClosure() { + return nonSerializable; +}; - function Dict(xref) { +class Dict { + constructor() { + let xref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; this._map = Object.create(null); this.xref = xref; this.objId = null; @@ -11016,213 +5213,271 @@ var Dict = function DictClosure() { this.__nonSerializable__ = nonSerializable; } - Dict.prototype = { - assignXref: function Dict_assignXref(newXref) { - this.xref = newXref; - }, - get: function Dict_get(key1, key2, key3) { - var value; - var xref = this.xref, - suppressEncryption = this.suppressEncryption; + assignXref(newXref) { + this.xref = newXref; + } - if (typeof (value = this._map[key1]) !== 'undefined' || key1 in this._map || typeof key2 === 'undefined') { - return xref ? xref.fetchIfRef(value, suppressEncryption) : value; - } + get size() { + return Object.keys(this._map).length; + } - if (typeof (value = this._map[key2]) !== 'undefined' || key2 in this._map || typeof key3 === 'undefined') { - return xref ? xref.fetchIfRef(value, suppressEncryption) : value; - } + get(key1, key2, key3) { + let value = this._map[key1]; - value = this._map[key3] || null; - return xref ? xref.fetchIfRef(value, suppressEncryption) : value; - }, - getAsync: function Dict_getAsync(key1, key2, key3) { - var value; - var xref = this.xref, - suppressEncryption = this.suppressEncryption; + if (value === undefined && key2 !== undefined) { + value = this._map[key2]; - if (typeof (value = this._map[key1]) !== 'undefined' || key1 in this._map || typeof key2 === 'undefined') { - if (xref) { - return xref.fetchIfRefAsync(value, suppressEncryption); - } - - return Promise.resolve(value); - } - - if (typeof (value = this._map[key2]) !== 'undefined' || key2 in this._map || typeof key3 === 'undefined') { - if (xref) { - return xref.fetchIfRefAsync(value, suppressEncryption); - } - - return Promise.resolve(value); - } - - value = this._map[key3] || null; - - if (xref) { - return xref.fetchIfRefAsync(value, suppressEncryption); - } - - return Promise.resolve(value); - }, - getArray: function Dict_getArray(key1, key2, key3) { - var value = this.get(key1, key2, key3); - var xref = this.xref, - suppressEncryption = this.suppressEncryption; - - if (!Array.isArray(value) || !xref) { - return value; - } - - value = value.slice(); - - for (var i = 0, ii = value.length; i < ii; i++) { - if (!isRef(value[i])) { - continue; - } - - value[i] = xref.fetch(value[i], suppressEncryption); - } - - return value; - }, - getRaw: function Dict_getRaw(key) { - return this._map[key]; - }, - getKeys: function Dict_getKeys() { - return Object.keys(this._map); - }, - set: function Dict_set(key, value) { - this._map[key] = value; - }, - has: function Dict_has(key) { - return key in this._map; - }, - forEach: function Dict_forEach(callback) { - for (var key in this._map) { - callback(key, this.get(key)); + if (value === undefined && key3 !== undefined) { + value = this._map[key3]; } } - }; - Dict.empty = new Dict(null); - Dict.merge = function (xref, dictArray) { - var mergedDict = new Dict(xref); + if (value instanceof Ref && this.xref) { + return this.xref.fetch(value, this.suppressEncryption); + } - for (var i = 0, ii = dictArray.length; i < ii; i++) { - var dict = dictArray[i]; + return value; + } - if (!isDict(dict)) { + async getAsync(key1, key2, key3) { + let value = this._map[key1]; + + if (value === undefined && key2 !== undefined) { + value = this._map[key2]; + + if (value === undefined && key3 !== undefined) { + value = this._map[key3]; + } + } + + if (value instanceof Ref && this.xref) { + return this.xref.fetchAsync(value, this.suppressEncryption); + } + + return value; + } + + getArray(key1, key2, key3) { + let value = this._map[key1]; + + if (value === undefined && key2 !== undefined) { + value = this._map[key2]; + + if (value === undefined && key3 !== undefined) { + value = this._map[key3]; + } + } + + if (value instanceof Ref && this.xref) { + value = this.xref.fetch(value, this.suppressEncryption); + } + + if (Array.isArray(value)) { + value = value.slice(); + + for (let i = 0, ii = value.length; i < ii; i++) { + if (value[i] instanceof Ref && this.xref) { + value[i] = this.xref.fetch(value[i], this.suppressEncryption); + } + } + } + + return value; + } + + getRaw(key) { + return this._map[key]; + } + + getKeys() { + return Object.keys(this._map); + } + + getRawValues() { + return Object.values(this._map); + } + + set(key, value) { + this._map[key] = value; + } + + has(key) { + return this._map[key] !== undefined; + } + + forEach(callback) { + for (const key in this._map) { + callback(key, this.get(key)); + } + } + + static get empty() { + const emptyDict = new Dict(null); + + emptyDict.set = (key, value) => { + (0, _util.unreachable)("Should not call `set` on the empty dictionary."); + }; + + return (0, _util.shadow)(this, "empty", emptyDict); + } + + static merge(_ref) { + let { + xref, + dictArray, + mergeSubDicts = false + } = _ref; + const mergedDict = new Dict(xref), + properties = new Map(); + + for (const dict of dictArray) { + if (!(dict instanceof Dict)) { continue; } - for (var keyName in dict._map) { - if (mergedDict._map[keyName] !== undefined) { + for (const [key, value] of Object.entries(dict._map)) { + let property = properties.get(key); + + if (property === undefined) { + property = []; + properties.set(key, property); + } else if (!mergeSubDicts || !(value instanceof Dict)) { continue; } - mergedDict._map[keyName] = dict._map[keyName]; + property.push(value); } } - return mergedDict; - }; + for (const [name, values] of properties) { + if (values.length === 1 || !(values[0] instanceof Dict)) { + mergedDict._map[name] = values[0]; + continue; + } - return Dict; -}(); + const subDict = new Dict(xref); + + for (const dict of values) { + for (const [key, value] of Object.entries(dict._map)) { + if (subDict._map[key] === undefined) { + subDict._map[key] = value; + } + } + } + + if (subDict.size > 0) { + mergedDict._map[name] = subDict; + } + } + + properties.clear(); + return mergedDict.size > 0 ? mergedDict : Dict.empty; + } + +} exports.Dict = Dict; -var Ref = function RefClosure() { - var refCache = Object.create(null); +const Ref = function RefClosure() { + let refCache = Object.create(null); - function Ref(num, gen) { - this.num = num; - this.gen = gen; - } + class Ref { + constructor(num, gen) { + this.num = num; + this.gen = gen; + } - Ref.prototype = { - toString: function Ref_toString() { + toString() { if (this.gen === 0) { - return "".concat(this.num, "R"); + return `${this.num}R`; } - return "".concat(this.num, "R").concat(this.gen); + return `${this.num}R${this.gen}`; } - }; - Ref.get = function (num, gen) { - var key = gen === 0 ? "".concat(num, "R") : "".concat(num, "R").concat(gen); - var refValue = refCache[key]; - return refValue ? refValue : refCache[key] = new Ref(num, gen); - }; + static get(num, gen) { + const key = gen === 0 ? `${num}R` : `${num}R${gen}`; + return refCache[key] || (refCache[key] = new Ref(num, gen)); + } - Ref._clearCache = function () { - refCache = Object.create(null); - }; + static _clearCache() { + refCache = Object.create(null); + } + + } return Ref; }(); exports.Ref = Ref; -var RefSet = function RefSetClosure() { - function RefSet() { - this.dict = Object.create(null); +class RefSet { + constructor() { + let parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + this._set = new Set(parent && parent._set); } - RefSet.prototype = { - has: function RefSet_has(ref) { - return ref.toString() in this.dict; - }, - put: function RefSet_put(ref) { - this.dict[ref.toString()] = true; - }, - remove: function RefSet_remove(ref) { - delete this.dict[ref.toString()]; - } - }; - return RefSet; -}(); + has(ref) { + return this._set.has(ref.toString()); + } + + put(ref) { + this._set.add(ref.toString()); + } + + remove(ref) { + this._set.delete(ref.toString()); + } + + [Symbol.iterator]() { + return this._set.values(); + } + + clear() { + this._set.clear(); + } + +} exports.RefSet = RefSet; -var RefSetCache = function RefSetCacheClosure() { - function RefSetCache() { - this.dict = Object.create(null); +class RefSetCache { + constructor() { + this._map = new Map(); } - RefSetCache.prototype = { - get: function RefSetCache_get(ref) { - return this.dict[ref.toString()]; - }, - has: function RefSetCache_has(ref) { - return ref.toString() in this.dict; - }, - put: function RefSetCache_put(ref, obj) { - this.dict[ref.toString()] = obj; - }, - putAlias: function RefSetCache_putAlias(ref, aliasRef) { - this.dict[ref.toString()] = this.get(aliasRef); - }, - forEach: function RefSetCache_forEach(fn, thisArg) { - for (var i in this.dict) { - fn.call(thisArg, this.dict[i]); - } - }, - clear: function RefSetCache_clear() { - this.dict = Object.create(null); - } - }; - return RefSetCache; -}(); + get size() { + return this._map.size; + } + + get(ref) { + return this._map.get(ref.toString()); + } + + has(ref) { + return this._map.has(ref.toString()); + } + + put(ref, obj) { + this._map.set(ref.toString(), obj); + } + + putAlias(ref, aliasRef) { + this._map.set(ref.toString(), this.get(aliasRef)); + } + + [Symbol.iterator]() { + return this._map.values(); + } + + clear() { + this._map.clear(); + } + +} exports.RefSetCache = RefSetCache; -function isEOF(v) { - return v === EOF; -} - function isName(v, name) { return v instanceof Name && (name === undefined || v.name === name); } @@ -11232,21 +5487,13 @@ function isCmd(v, cmd) { } function isDict(v, type) { - return v instanceof Dict && (type === undefined || isName(v.get('Type'), type)); -} - -function isRef(v) { - return v instanceof Ref; + return v instanceof Dict && (type === undefined || isName(v.get("Type"), type)); } function isRefsEqual(v1, v2) { return v1.num === v2.num && v1.gen === v2.gen; } -function isStream(v) { - return _typeof(v) === 'object' && v !== null && v.getBytes !== undefined; -} - function clearPrimitiveCaches() { Cmd._clearCache(); @@ -11256,1116 +5503,42 @@ function clearPrimitiveCaches() { } /***/ }), -/* 152 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 131 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.NetworkPdfManager = exports.LocalPdfManager = void 0; - -var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2)); - -var _util = __w_pdfjs_require__(5); - -var _chunked_stream = __w_pdfjs_require__(153); - -var _core_utils = __w_pdfjs_require__(154); - -var _document = __w_pdfjs_require__(155); - -var _stream = __w_pdfjs_require__(158); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var BasePdfManager = -/*#__PURE__*/ -function () { - function BasePdfManager() { - _classCallCheck(this, BasePdfManager); - - if (this.constructor === BasePdfManager) { - (0, _util.unreachable)('Cannot initialize BasePdfManager.'); - } - } - - _createClass(BasePdfManager, [{ - key: "onLoadedStream", - value: function onLoadedStream() { - (0, _util.unreachable)('Abstract method `onLoadedStream` called'); - } - }, { - key: "ensureDoc", - value: function ensureDoc(prop, args) { - return this.ensure(this.pdfDocument, prop, args); - } - }, { - key: "ensureXRef", - value: function ensureXRef(prop, args) { - return this.ensure(this.pdfDocument.xref, prop, args); - } - }, { - key: "ensureCatalog", - value: function ensureCatalog(prop, args) { - return this.ensure(this.pdfDocument.catalog, prop, args); - } - }, { - key: "getPage", - value: function getPage(pageIndex) { - return this.pdfDocument.getPage(pageIndex); - } - }, { - key: "fontFallback", - value: function fontFallback(id, handler) { - return this.pdfDocument.fontFallback(id, handler); - } - }, { - key: "cleanup", - value: function cleanup() { - return this.pdfDocument.cleanup(); - } - }, { - key: "ensure", - value: function () { - var _ensure = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee(obj, prop, args) { - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - (0, _util.unreachable)('Abstract method `ensure` called'); - - case 1: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - - function ensure(_x, _x2, _x3) { - return _ensure.apply(this, arguments); - } - - return ensure; - }() - }, { - key: "requestRange", - value: function requestRange(begin, end) { - (0, _util.unreachable)('Abstract method `requestRange` called'); - } - }, { - key: "requestLoadedStream", - value: function requestLoadedStream() { - (0, _util.unreachable)('Abstract method `requestLoadedStream` called'); - } - }, { - key: "sendProgressiveData", - value: function sendProgressiveData(chunk) { - (0, _util.unreachable)('Abstract method `sendProgressiveData` called'); - } - }, { - key: "updatePassword", - value: function updatePassword(password) { - this._password = password; - } - }, { - key: "terminate", - value: function terminate() { - (0, _util.unreachable)('Abstract method `terminate` called'); - } - }, { - key: "docId", - get: function get() { - return this._docId; - } - }, { - key: "password", - get: function get() { - return this._password; - } - }, { - key: "docBaseUrl", - get: function get() { - var docBaseUrl = null; - - if (this._docBaseUrl) { - var absoluteUrl = (0, _util.createValidAbsoluteUrl)(this._docBaseUrl); - - if (absoluteUrl) { - docBaseUrl = absoluteUrl.href; - } else { - (0, _util.warn)("Invalid absolute docBaseUrl: \"".concat(this._docBaseUrl, "\".")); - } - } - - return (0, _util.shadow)(this, 'docBaseUrl', docBaseUrl); - } - }]); - - return BasePdfManager; -}(); - -var LocalPdfManager = -/*#__PURE__*/ -function (_BasePdfManager) { - _inherits(LocalPdfManager, _BasePdfManager); - - function LocalPdfManager(docId, data, password, evaluatorOptions, docBaseUrl) { - var _this; - - _classCallCheck(this, LocalPdfManager); - - _this = _possibleConstructorReturn(this, _getPrototypeOf(LocalPdfManager).call(this)); - _this._docId = docId; - _this._password = password; - _this._docBaseUrl = docBaseUrl; - _this.evaluatorOptions = evaluatorOptions; - var stream = new _stream.Stream(data); - _this.pdfDocument = new _document.PDFDocument(_assertThisInitialized(_this), stream); - _this._loadedStreamPromise = Promise.resolve(stream); - return _this; - } - - _createClass(LocalPdfManager, [{ - key: "ensure", - value: function () { - var _ensure2 = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee2(obj, prop, args) { - var value; - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - value = obj[prop]; - - if (!(typeof value === 'function')) { - _context2.next = 3; - break; - } - - return _context2.abrupt("return", value.apply(obj, args)); - - case 3: - return _context2.abrupt("return", value); - - case 4: - case "end": - return _context2.stop(); - } - } - }, _callee2); - })); - - function ensure(_x4, _x5, _x6) { - return _ensure2.apply(this, arguments); - } - - return ensure; - }() - }, { - key: "requestRange", - value: function requestRange(begin, end) { - return Promise.resolve(); - } - }, { - key: "requestLoadedStream", - value: function requestLoadedStream() {} - }, { - key: "onLoadedStream", - value: function onLoadedStream() { - return this._loadedStreamPromise; - } - }, { - key: "terminate", - value: function terminate() {} - }]); - - return LocalPdfManager; -}(BasePdfManager); - -exports.LocalPdfManager = LocalPdfManager; - -var NetworkPdfManager = -/*#__PURE__*/ -function (_BasePdfManager2) { - _inherits(NetworkPdfManager, _BasePdfManager2); - - function NetworkPdfManager(docId, pdfNetworkStream, args, evaluatorOptions, docBaseUrl) { - var _this2; - - _classCallCheck(this, NetworkPdfManager); - - _this2 = _possibleConstructorReturn(this, _getPrototypeOf(NetworkPdfManager).call(this)); - _this2._docId = docId; - _this2._password = args.password; - _this2._docBaseUrl = docBaseUrl; - _this2.msgHandler = args.msgHandler; - _this2.evaluatorOptions = evaluatorOptions; - _this2.streamManager = new _chunked_stream.ChunkedStreamManager(pdfNetworkStream, { - msgHandler: args.msgHandler, - length: args.length, - disableAutoFetch: args.disableAutoFetch, - rangeChunkSize: args.rangeChunkSize - }); - _this2.pdfDocument = new _document.PDFDocument(_assertThisInitialized(_this2), _this2.streamManager.getStream()); - return _this2; - } - - _createClass(NetworkPdfManager, [{ - key: "ensure", - value: function () { - var _ensure3 = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee3(obj, prop, args) { - var value; - return _regenerator["default"].wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - _context3.prev = 0; - value = obj[prop]; - - if (!(typeof value === 'function')) { - _context3.next = 4; - break; - } - - return _context3.abrupt("return", value.apply(obj, args)); - - case 4: - return _context3.abrupt("return", value); - - case 7: - _context3.prev = 7; - _context3.t0 = _context3["catch"](0); - - if (_context3.t0 instanceof _core_utils.MissingDataException) { - _context3.next = 11; - break; - } - - throw _context3.t0; - - case 11: - _context3.next = 13; - return this.requestRange(_context3.t0.begin, _context3.t0.end); - - case 13: - return _context3.abrupt("return", this.ensure(obj, prop, args)); - - case 14: - case "end": - return _context3.stop(); - } - } - }, _callee3, this, [[0, 7]]); - })); - - function ensure(_x7, _x8, _x9) { - return _ensure3.apply(this, arguments); - } - - return ensure; - }() - }, { - key: "requestRange", - value: function requestRange(begin, end) { - return this.streamManager.requestRange(begin, end); - } - }, { - key: "requestLoadedStream", - value: function requestLoadedStream() { - this.streamManager.requestAllChunks(); - } - }, { - key: "sendProgressiveData", - value: function sendProgressiveData(chunk) { - this.streamManager.onReceiveData({ - chunk: chunk - }); - } - }, { - key: "onLoadedStream", - value: function onLoadedStream() { - return this.streamManager.onLoadedStream(); - } - }, { - key: "terminate", - value: function terminate() { - this.streamManager.abort(); - } - }]); - - return NetworkPdfManager; -}(BasePdfManager); - -exports.NetworkPdfManager = NetworkPdfManager; - -/***/ }), -/* 153 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.ChunkedStreamManager = exports.ChunkedStream = void 0; - -var _util = __w_pdfjs_require__(5); - -var _core_utils = __w_pdfjs_require__(154); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var ChunkedStream = -/*#__PURE__*/ -function () { - function ChunkedStream(length, chunkSize, manager) { - _classCallCheck(this, ChunkedStream); - - this.bytes = new Uint8Array(length); - this.start = 0; - this.pos = 0; - this.end = length; - this.chunkSize = chunkSize; - this.loadedChunks = []; - this.numChunksLoaded = 0; - this.numChunks = Math.ceil(length / chunkSize); - this.manager = manager; - this.progressiveDataLength = 0; - this.lastSuccessfulEnsureByteChunk = -1; - } - - _createClass(ChunkedStream, [{ - key: "getMissingChunks", - value: function getMissingChunks() { - var chunks = []; - - for (var chunk = 0, n = this.numChunks; chunk < n; ++chunk) { - if (!this.loadedChunks[chunk]) { - chunks.push(chunk); - } - } - - return chunks; - } - }, { - key: "getBaseStreams", - value: function getBaseStreams() { - return [this]; - } - }, { - key: "allChunksLoaded", - value: function allChunksLoaded() { - return this.numChunksLoaded === this.numChunks; - } - }, { - key: "onReceiveData", - value: function onReceiveData(begin, chunk) { - var chunkSize = this.chunkSize; - - if (begin % chunkSize !== 0) { - throw new Error("Bad begin offset: ".concat(begin)); - } - - var end = begin + chunk.byteLength; - - if (end % chunkSize !== 0 && end !== this.bytes.length) { - throw new Error("Bad end offset: ".concat(end)); - } - - this.bytes.set(new Uint8Array(chunk), begin); - var beginChunk = Math.floor(begin / chunkSize); - var endChunk = Math.floor((end - 1) / chunkSize) + 1; - - for (var curChunk = beginChunk; curChunk < endChunk; ++curChunk) { - if (!this.loadedChunks[curChunk]) { - this.loadedChunks[curChunk] = true; - ++this.numChunksLoaded; - } - } - } - }, { - key: "onReceiveProgressiveData", - value: function onReceiveProgressiveData(data) { - var position = this.progressiveDataLength; - var beginChunk = Math.floor(position / this.chunkSize); - this.bytes.set(new Uint8Array(data), position); - position += data.byteLength; - this.progressiveDataLength = position; - var endChunk = position >= this.end ? this.numChunks : Math.floor(position / this.chunkSize); - - for (var curChunk = beginChunk; curChunk < endChunk; ++curChunk) { - if (!this.loadedChunks[curChunk]) { - this.loadedChunks[curChunk] = true; - ++this.numChunksLoaded; - } - } - } - }, { - key: "ensureByte", - value: function ensureByte(pos) { - if (pos < this.progressiveDataLength) { - return; - } - - var chunk = Math.floor(pos / this.chunkSize); - - if (chunk === this.lastSuccessfulEnsureByteChunk) { - return; - } - - if (!this.loadedChunks[chunk]) { - throw new _core_utils.MissingDataException(pos, pos + 1); - } - - this.lastSuccessfulEnsureByteChunk = chunk; - } - }, { - key: "ensureRange", - value: function ensureRange(begin, end) { - if (begin >= end) { - return; - } - - if (end <= this.progressiveDataLength) { - return; - } - - var chunkSize = this.chunkSize; - var beginChunk = Math.floor(begin / chunkSize); - var endChunk = Math.floor((end - 1) / chunkSize) + 1; - - for (var chunk = beginChunk; chunk < endChunk; ++chunk) { - if (!this.loadedChunks[chunk]) { - throw new _core_utils.MissingDataException(begin, end); - } - } - } - }, { - key: "nextEmptyChunk", - value: function nextEmptyChunk(beginChunk) { - var numChunks = this.numChunks; - - for (var i = 0; i < numChunks; ++i) { - var chunk = (beginChunk + i) % numChunks; - - if (!this.loadedChunks[chunk]) { - return chunk; - } - } - - return null; - } - }, { - key: "hasChunk", - value: function hasChunk(chunk) { - return !!this.loadedChunks[chunk]; - } - }, { - key: "getByte", - value: function getByte() { - var pos = this.pos; - - if (pos >= this.end) { - return -1; - } - - this.ensureByte(pos); - return this.bytes[this.pos++]; - } - }, { - key: "getUint16", - value: function getUint16() { - var b0 = this.getByte(); - var b1 = this.getByte(); - - if (b0 === -1 || b1 === -1) { - return -1; - } - - return (b0 << 8) + b1; - } - }, { - key: "getInt32", - value: function getInt32() { - var b0 = this.getByte(); - var b1 = this.getByte(); - var b2 = this.getByte(); - var b3 = this.getByte(); - return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; - } - }, { - key: "getBytes", - value: function getBytes(length) { - var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var bytes = this.bytes; - var pos = this.pos; - var strEnd = this.end; - - if (!length) { - this.ensureRange(pos, strEnd); - - var _subarray = bytes.subarray(pos, strEnd); - - return forceClamped ? new Uint8ClampedArray(_subarray) : _subarray; - } - - var end = pos + length; - - if (end > strEnd) { - end = strEnd; - } - - this.ensureRange(pos, end); - this.pos = end; - var subarray = bytes.subarray(pos, end); - return forceClamped ? new Uint8ClampedArray(subarray) : subarray; - } - }, { - key: "peekByte", - value: function peekByte() { - var peekedByte = this.getByte(); - this.pos--; - return peekedByte; - } - }, { - key: "peekBytes", - value: function peekBytes(length) { - var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var bytes = this.getBytes(length, forceClamped); - this.pos -= bytes.length; - return bytes; - } - }, { - key: "getByteRange", - value: function getByteRange(begin, end) { - this.ensureRange(begin, end); - return this.bytes.subarray(begin, end); - } - }, { - key: "skip", - value: function skip(n) { - if (!n) { - n = 1; - } - - this.pos += n; - } - }, { - key: "reset", - value: function reset() { - this.pos = this.start; - } - }, { - key: "moveStart", - value: function moveStart() { - this.start = this.pos; - } - }, { - key: "makeSubStream", - value: function makeSubStream(start, length, dict) { - if (length) { - this.ensureRange(start, start + length); - } else { - this.ensureByte(start); - } - - function ChunkedStreamSubstream() {} - - ChunkedStreamSubstream.prototype = Object.create(this); - - ChunkedStreamSubstream.prototype.getMissingChunks = function () { - var chunkSize = this.chunkSize; - var beginChunk = Math.floor(this.start / chunkSize); - var endChunk = Math.floor((this.end - 1) / chunkSize) + 1; - var missingChunks = []; - - for (var chunk = beginChunk; chunk < endChunk; ++chunk) { - if (!this.loadedChunks[chunk]) { - missingChunks.push(chunk); - } - } - - return missingChunks; - }; - - var subStream = new ChunkedStreamSubstream(); - subStream.pos = subStream.start = start; - subStream.end = start + length || this.end; - subStream.dict = dict; - return subStream; - } - }, { - key: "length", - get: function get() { - return this.end - this.start; - } - }, { - key: "isEmpty", - get: function get() { - return this.length === 0; - } - }]); - - return ChunkedStream; -}(); - -exports.ChunkedStream = ChunkedStream; - -var ChunkedStreamManager = -/*#__PURE__*/ -function () { - function ChunkedStreamManager(pdfNetworkStream, args) { - _classCallCheck(this, ChunkedStreamManager); - - this.length = args.length; - this.chunkSize = args.rangeChunkSize; - this.stream = new ChunkedStream(this.length, this.chunkSize, this); - this.pdfNetworkStream = pdfNetworkStream; - this.disableAutoFetch = args.disableAutoFetch; - this.msgHandler = args.msgHandler; - this.currRequestId = 0; - this.chunksNeededByRequest = Object.create(null); - this.requestsByChunk = Object.create(null); - this.promisesByRequest = Object.create(null); - this.progressiveDataLength = 0; - this.aborted = false; - this._loadedStreamCapability = (0, _util.createPromiseCapability)(); - } - - _createClass(ChunkedStreamManager, [{ - key: "onLoadedStream", - value: function onLoadedStream() { - return this._loadedStreamCapability.promise; - } - }, { - key: "sendRequest", - value: function sendRequest(begin, end) { - var _this = this; - - var rangeReader = this.pdfNetworkStream.getRangeReader(begin, end); - - if (!rangeReader.isStreamingSupported) { - rangeReader.onProgress = this.onProgress.bind(this); - } - - var chunks = [], - loaded = 0; - var promise = new Promise(function (resolve, reject) { - var readChunk = function readChunk(chunk) { - try { - if (!chunk.done) { - var data = chunk.value; - chunks.push(data); - loaded += (0, _util.arrayByteLength)(data); - - if (rangeReader.isStreamingSupported) { - _this.onProgress({ - loaded: loaded - }); - } - - rangeReader.read().then(readChunk, reject); - return; - } - - var chunkData = (0, _util.arraysToBytes)(chunks); - chunks = null; - resolve(chunkData); - } catch (e) { - reject(e); - } - }; - - rangeReader.read().then(readChunk, reject); - }); - promise.then(function (data) { - if (_this.aborted) { - return; - } - - _this.onReceiveData({ - chunk: data, - begin: begin - }); - }); - } - }, { - key: "requestAllChunks", - value: function requestAllChunks() { - var missingChunks = this.stream.getMissingChunks(); - - this._requestChunks(missingChunks); - - return this._loadedStreamCapability.promise; - } - }, { - key: "_requestChunks", - value: function _requestChunks(chunks) { - var requestId = this.currRequestId++; - var chunksNeeded = Object.create(null); - this.chunksNeededByRequest[requestId] = chunksNeeded; - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = chunks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var _chunk = _step.value; - - if (!this.stream.hasChunk(_chunk)) { - chunksNeeded[_chunk] = true; - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator["return"] != null) { - _iterator["return"](); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - if ((0, _util.isEmptyObj)(chunksNeeded)) { - return Promise.resolve(); - } - - var capability = (0, _util.createPromiseCapability)(); - this.promisesByRequest[requestId] = capability; - var chunksToRequest = []; - - for (var chunk in chunksNeeded) { - chunk = chunk | 0; - - if (!(chunk in this.requestsByChunk)) { - this.requestsByChunk[chunk] = []; - chunksToRequest.push(chunk); - } - - this.requestsByChunk[chunk].push(requestId); - } - - if (!chunksToRequest.length) { - return capability.promise; - } - - var groupedChunksToRequest = this.groupChunks(chunksToRequest); - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = groupedChunksToRequest[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var groupedChunk = _step2.value; - var begin = groupedChunk.beginChunk * this.chunkSize; - var end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length); - this.sendRequest(begin, end); - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { - _iterator2["return"](); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - return capability.promise; - } - }, { - key: "getStream", - value: function getStream() { - return this.stream; - } - }, { - key: "requestRange", - value: function requestRange(begin, end) { - end = Math.min(end, this.length); - var beginChunk = this.getBeginChunk(begin); - var endChunk = this.getEndChunk(end); - var chunks = []; - - for (var chunk = beginChunk; chunk < endChunk; ++chunk) { - chunks.push(chunk); - } - - return this._requestChunks(chunks); - } - }, { - key: "requestRanges", - value: function requestRanges() { - var ranges = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - var chunksToRequest = []; - var _iteratorNormalCompletion3 = true; - var _didIteratorError3 = false; - var _iteratorError3 = undefined; - - try { - for (var _iterator3 = ranges[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var range = _step3.value; - var beginChunk = this.getBeginChunk(range.begin); - var endChunk = this.getEndChunk(range.end); - - for (var chunk = beginChunk; chunk < endChunk; ++chunk) { - if (!chunksToRequest.includes(chunk)) { - chunksToRequest.push(chunk); - } - } - } - } catch (err) { - _didIteratorError3 = true; - _iteratorError3 = err; - } finally { - try { - if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) { - _iterator3["return"](); - } - } finally { - if (_didIteratorError3) { - throw _iteratorError3; - } - } - } - - chunksToRequest.sort(function (a, b) { - return a - b; - }); - return this._requestChunks(chunksToRequest); - } - }, { - key: "groupChunks", - value: function groupChunks(chunks) { - var groupedChunks = []; - var beginChunk = -1; - var prevChunk = -1; - - for (var i = 0, ii = chunks.length; i < ii; ++i) { - var chunk = chunks[i]; - - if (beginChunk < 0) { - beginChunk = chunk; - } - - if (prevChunk >= 0 && prevChunk + 1 !== chunk) { - groupedChunks.push({ - beginChunk: beginChunk, - endChunk: prevChunk + 1 - }); - beginChunk = chunk; - } - - if (i + 1 === chunks.length) { - groupedChunks.push({ - beginChunk: beginChunk, - endChunk: chunk + 1 - }); - } - - prevChunk = chunk; - } - - return groupedChunks; - } - }, { - key: "onProgress", - value: function onProgress(args) { - this.msgHandler.send('DocProgress', { - loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded, - total: this.length - }); - } - }, { - key: "onReceiveData", - value: function onReceiveData(args) { - var chunk = args.chunk; - var isProgressive = args.begin === undefined; - var begin = isProgressive ? this.progressiveDataLength : args.begin; - var end = begin + chunk.byteLength; - var beginChunk = Math.floor(begin / this.chunkSize); - var endChunk = end < this.length ? Math.floor(end / this.chunkSize) : Math.ceil(end / this.chunkSize); - - if (isProgressive) { - this.stream.onReceiveProgressiveData(chunk); - this.progressiveDataLength = end; - } else { - this.stream.onReceiveData(begin, chunk); - } - - if (this.stream.allChunksLoaded()) { - this._loadedStreamCapability.resolve(this.stream); - } - - var loadedRequests = []; - - for (var _chunk2 = beginChunk; _chunk2 < endChunk; ++_chunk2) { - var requestIds = this.requestsByChunk[_chunk2] || []; - delete this.requestsByChunk[_chunk2]; - var _iteratorNormalCompletion4 = true; - var _didIteratorError4 = false; - var _iteratorError4 = undefined; - - try { - for (var _iterator4 = requestIds[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { - var requestId = _step4.value; - var chunksNeeded = this.chunksNeededByRequest[requestId]; - - if (_chunk2 in chunksNeeded) { - delete chunksNeeded[_chunk2]; - } - - if (!(0, _util.isEmptyObj)(chunksNeeded)) { - continue; - } - - loadedRequests.push(requestId); - } - } catch (err) { - _didIteratorError4 = true; - _iteratorError4 = err; - } finally { - try { - if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) { - _iterator4["return"](); - } - } finally { - if (_didIteratorError4) { - throw _iteratorError4; - } - } - } - } - - if (!this.disableAutoFetch && (0, _util.isEmptyObj)(this.requestsByChunk)) { - var nextEmptyChunk; - - if (this.stream.numChunksLoaded === 1) { - var lastChunk = this.stream.numChunks - 1; - - if (!this.stream.hasChunk(lastChunk)) { - nextEmptyChunk = lastChunk; - } - } else { - nextEmptyChunk = this.stream.nextEmptyChunk(endChunk); - } - - if (Number.isInteger(nextEmptyChunk)) { - this._requestChunks([nextEmptyChunk]); - } - } - - for (var _i = 0, _loadedRequests = loadedRequests; _i < _loadedRequests.length; _i++) { - var _requestId = _loadedRequests[_i]; - var capability = this.promisesByRequest[_requestId]; - delete this.promisesByRequest[_requestId]; - capability.resolve(); - } - - this.msgHandler.send('DocProgress', { - loaded: this.stream.numChunksLoaded * this.chunkSize, - total: this.length - }); - } - }, { - key: "onError", - value: function onError(err) { - this._loadedStreamCapability.reject(err); - } - }, { - key: "getBeginChunk", - value: function getBeginChunk(begin) { - return Math.floor(begin / this.chunkSize); - } - }, { - key: "getEndChunk", - value: function getEndChunk(end) { - return Math.floor((end - 1) / this.chunkSize) + 1; - } - }, { - key: "abort", - value: function abort() { - this.aborted = true; - - if (this.pdfNetworkStream) { - this.pdfNetworkStream.cancelAllRequests('abort'); - } - - for (var requestId in this.promisesByRequest) { - this.promisesByRequest[requestId].reject(new Error('Request was aborted')); - } - } - }]); - - return ChunkedStreamManager; -}(); - -exports.ChunkedStreamManager = ChunkedStreamManager; - -/***/ }), -/* 154 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getLookupTableFactory = getLookupTableFactory; +})); +exports.XRefParseException = exports.XRefEntryException = exports.ParserEOFException = exports.MissingDataException = exports.DocStats = void 0; +exports.collectActions = collectActions; +exports.encodeToXmlString = encodeToXmlString; +exports.escapePDFName = escapePDFName; +exports.getArrayLookupTableFactory = getArrayLookupTableFactory; exports.getInheritableProperty = getInheritableProperty; +exports.getLookupTableFactory = getLookupTableFactory; +exports.getNewAnnotationsMap = getNewAnnotationsMap; +exports.isWhiteSpace = isWhiteSpace; +exports.log2 = log2; +exports.numberToString = numberToString; +exports.parseXFAPath = parseXFAPath; +exports.readInt8 = readInt8; +exports.readUint16 = readUint16; +exports.readUint32 = readUint32; +exports.recoverJsURL = recoverJsURL; exports.toRomanNumerals = toRomanNumerals; -exports.XRefParseException = exports.XRefEntryException = exports.MissingDataException = void 0; +exports.validateCSSFont = validateCSSFont; -var _util = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(2); + +var _primitives = __w_pdfjs_require__(130); + +var _base_stream = __w_pdfjs_require__(132); function getLookupTableFactory(initializer) { - var lookup; + let lookup; return function () { if (initializer) { lookup = Object.create(null); @@ -12377,60 +5550,128 @@ function getLookupTableFactory(initializer) { }; } -var MissingDataException = function MissingDataExceptionClosure() { - function MissingDataException(begin, end) { +function getArrayLookupTableFactory(initializer) { + let lookup; + return function () { + if (initializer) { + let arr = initializer(); + initializer = null; + lookup = Object.create(null); + + for (let i = 0, ii = arr.length; i < ii; i += 2) { + lookup[arr[i]] = arr[i + 1]; + } + + arr = null; + } + + return lookup; + }; +} + +class MissingDataException extends _util.BaseException { + constructor(begin, end) { + super(`Missing data [${begin}, ${end})`, "MissingDataException"); this.begin = begin; this.end = end; - this.message = "Missing data [".concat(begin, ", ").concat(end, ")"); } - MissingDataException.prototype = new Error(); - MissingDataException.prototype.name = 'MissingDataException'; - MissingDataException.constructor = MissingDataException; - return MissingDataException; -}(); +} exports.MissingDataException = MissingDataException; -var XRefEntryException = function XRefEntryExceptionClosure() { - function XRefEntryException(msg) { - this.message = msg; +class ParserEOFException extends _util.BaseException { + constructor(msg) { + super(msg, "ParserEOFException"); } - XRefEntryException.prototype = new Error(); - XRefEntryException.prototype.name = 'XRefEntryException'; - XRefEntryException.constructor = XRefEntryException; - return XRefEntryException; -}(); +} + +exports.ParserEOFException = ParserEOFException; + +class XRefEntryException extends _util.BaseException { + constructor(msg) { + super(msg, "XRefEntryException"); + } + +} exports.XRefEntryException = XRefEntryException; -var XRefParseException = function XRefParseExceptionClosure() { - function XRefParseException(msg) { - this.message = msg; +class XRefParseException extends _util.BaseException { + constructor(msg) { + super(msg, "XRefParseException"); } - XRefParseException.prototype = new Error(); - XRefParseException.prototype.name = 'XRefParseException'; - XRefParseException.constructor = XRefParseException; - return XRefParseException; -}(); +} exports.XRefParseException = XRefParseException; -function getInheritableProperty(_ref) { - var dict = _ref.dict, - key = _ref.key, - _ref$getArray = _ref.getArray, - getArray = _ref$getArray === void 0 ? false : _ref$getArray, - _ref$stopWhenFound = _ref.stopWhenFound, - stopWhenFound = _ref$stopWhenFound === void 0 ? true : _ref$stopWhenFound; - var LOOP_LIMIT = 100; - var loopCount = 0; - var values; +class DocStats { + constructor(handler) { + this._handler = handler; + this._streamTypes = new Set(); + this._fontTypes = new Set(); + } - while (dict) { - var value = getArray ? dict.getArray(key) : dict.get(key); + _send() { + const streamTypes = Object.create(null), + fontTypes = Object.create(null); + + for (const type of this._streamTypes) { + streamTypes[type] = true; + } + + for (const type of this._fontTypes) { + fontTypes[type] = true; + } + + this._handler.send("DocStats", { + streamTypes, + fontTypes + }); + } + + addStreamType(type) { + if (this._streamTypes.has(type)) { + return; + } + + this._streamTypes.add(type); + + this._send(); + } + + addFontType(type) { + if (this._fontTypes.has(type)) { + return; + } + + this._fontTypes.add(type); + + this._send(); + } + +} + +exports.DocStats = DocStats; + +function getInheritableProperty(_ref) { + let { + dict, + key, + getArray = false, + stopWhenFound = true + } = _ref; + let values; + const visited = new _primitives.RefSet(); + + while (dict instanceof _primitives.Dict && !(dict.objId && visited.has(dict.objId))) { + if (dict.objId) { + visited.put(dict.objId); + } + + const value = getArray ? dict.getArray(key) : dict.get(key); if (value !== undefined) { if (stopWhenFound) { @@ -12444,28 +5685,23 @@ function getInheritableProperty(_ref) { values.push(value); } - if (++loopCount > LOOP_LIMIT) { - (0, _util.warn)("getInheritableProperty: maximum loop count exceeded for \"".concat(key, "\"")); - break; - } - - dict = dict.get('Parent'); + dict = dict.get("Parent"); } return values; } -var ROMAN_NUMBER_MAP = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX']; +const ROMAN_NUMBER_MAP = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM", "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC", "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"]; function toRomanNumerals(number) { - var lowerCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - (0, _util.assert)(Number.isInteger(number) && number > 0, 'The number should be a positive integer.'); - var pos, - romanBuf = []; + let lowerCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + (0, _util.assert)(Number.isInteger(number) && number > 0, "The number should be a positive integer."); + const romanBuf = []; + let pos; while (number >= 1000) { number -= 1000; - romanBuf.push('M'); + romanBuf.push("M"); } pos = number / 100 | 0; @@ -12475,80 +5711,1424 @@ function toRomanNumerals(number) { number %= 10; romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]); romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); - var romanStr = romanBuf.join(''); + const romanStr = romanBuf.join(""); return lowerCase ? romanStr.toLowerCase() : romanStr; } +function log2(x) { + if (x <= 0) { + return 0; + } + + return Math.ceil(Math.log2(x)); +} + +function readInt8(data, offset) { + return data[offset] << 24 >> 24; +} + +function readUint16(data, offset) { + return data[offset] << 8 | data[offset + 1]; +} + +function readUint32(data, offset) { + return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0; +} + +function isWhiteSpace(ch) { + return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a; +} + +function parseXFAPath(path) { + const positionPattern = /(.+)\[(\d+)\]$/; + return path.split(".").map(component => { + const m = component.match(positionPattern); + + if (m) { + return { + name: m[1], + pos: parseInt(m[2], 10) + }; + } + + return { + name: component, + pos: 0 + }; + }); +} + +function escapePDFName(str) { + const buffer = []; + let start = 0; + + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.charCodeAt(i); + + if (char < 0x21 || char > 0x7e || char === 0x23 || char === 0x28 || char === 0x29 || char === 0x3c || char === 0x3e || char === 0x5b || char === 0x5d || char === 0x7b || char === 0x7d || char === 0x2f || char === 0x25) { + if (start < i) { + buffer.push(str.substring(start, i)); + } + + buffer.push(`#${char.toString(16)}`); + start = i + 1; + } + } + + if (buffer.length === 0) { + return str; + } + + if (start < str.length) { + buffer.push(str.substring(start, str.length)); + } + + return buffer.join(""); +} + +function _collectJS(entry, xref, list, parents) { + if (!entry) { + return; + } + + let parent = null; + + if (entry instanceof _primitives.Ref) { + if (parents.has(entry)) { + return; + } + + parent = entry; + parents.put(parent); + entry = xref.fetch(entry); + } + + if (Array.isArray(entry)) { + for (const element of entry) { + _collectJS(element, xref, list, parents); + } + } else if (entry instanceof _primitives.Dict) { + if ((0, _primitives.isName)(entry.get("S"), "JavaScript")) { + const js = entry.get("JS"); + let code; + + if (js instanceof _base_stream.BaseStream) { + code = js.getString(); + } else if (typeof js === "string") { + code = js; + } + + code = code && (0, _util.stringToPDFString)(code).replace(/\u0000/g, ""); + + if (code) { + list.push(code); + } + } + + _collectJS(entry.getRaw("Next"), xref, list, parents); + } + + if (parent) { + parents.remove(parent); + } +} + +function collectActions(xref, dict, eventType) { + const actions = Object.create(null); + const additionalActionsDicts = getInheritableProperty({ + dict, + key: "AA", + stopWhenFound: false + }); + + if (additionalActionsDicts) { + for (let i = additionalActionsDicts.length - 1; i >= 0; i--) { + const additionalActions = additionalActionsDicts[i]; + + if (!(additionalActions instanceof _primitives.Dict)) { + continue; + } + + for (const key of additionalActions.getKeys()) { + const action = eventType[key]; + + if (!action) { + continue; + } + + const actionDict = additionalActions.getRaw(key); + const parents = new _primitives.RefSet(); + const list = []; + + _collectJS(actionDict, xref, list, parents); + + if (list.length > 0) { + actions[action] = list; + } + } + } + } + + if (dict.has("A")) { + const actionDict = dict.get("A"); + const parents = new _primitives.RefSet(); + const list = []; + + _collectJS(actionDict, xref, list, parents); + + if (list.length > 0) { + actions.Action = list; + } + } + + return (0, _util.objectSize)(actions) > 0 ? actions : null; +} + +const XMLEntities = { + 0x3c: "<", + 0x3e: ">", + 0x26: "&", + 0x22: """, + 0x27: "'" +}; + +function encodeToXmlString(str) { + const buffer = []; + let start = 0; + + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.codePointAt(i); + + if (0x20 <= char && char <= 0x7e) { + const entity = XMLEntities[char]; + + if (entity) { + if (start < i) { + buffer.push(str.substring(start, i)); + } + + buffer.push(entity); + start = i + 1; + } + } else { + if (start < i) { + buffer.push(str.substring(start, i)); + } + + buffer.push(`&#x${char.toString(16).toUpperCase()};`); + + if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) { + i++; + } + + start = i + 1; + } + } + + if (buffer.length === 0) { + return str; + } + + if (start < str.length) { + buffer.push(str.substring(start, str.length)); + } + + return buffer.join(""); +} + +function validateCSSFont(cssFontInfo) { + const DEFAULT_CSS_FONT_OBLIQUE = "14"; + const DEFAULT_CSS_FONT_WEIGHT = "400"; + const CSS_FONT_WEIGHT_VALUES = new Set(["100", "200", "300", "400", "500", "600", "700", "800", "900", "1000", "normal", "bold", "bolder", "lighter"]); + const { + fontFamily, + fontWeight, + italicAngle + } = cssFontInfo; + + if (/^".*"$/.test(fontFamily)) { + if (/[^\\]"/.test(fontFamily.slice(1, fontFamily.length - 1))) { + (0, _util.warn)(`XFA - FontFamily contains some unescaped ": ${fontFamily}.`); + return false; + } + } else if (/^'.*'$/.test(fontFamily)) { + if (/[^\\]'/.test(fontFamily.slice(1, fontFamily.length - 1))) { + (0, _util.warn)(`XFA - FontFamily contains some unescaped ': ${fontFamily}.`); + return false; + } + } else { + for (const ident of fontFamily.split(/[ \t]+/)) { + if (/^(\d|(-(\d|-)))/.test(ident) || !/^[\w-\\]+$/.test(ident)) { + (0, _util.warn)(`XFA - FontFamily contains some invalid : ${fontFamily}.`); + return false; + } + } + } + + const weight = fontWeight ? fontWeight.toString() : ""; + cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight) ? weight : DEFAULT_CSS_FONT_WEIGHT; + const angle = parseFloat(italicAngle); + cssFontInfo.italicAngle = isNaN(angle) || angle < -90 || angle > 90 ? DEFAULT_CSS_FONT_OBLIQUE : italicAngle.toString(); + return true; +} + +function recoverJsURL(str) { + const URL_OPEN_METHODS = ["app.launchURL", "window.open", "xfa.host.gotoURL"]; + const regex = new RegExp("^\\s*(" + URL_OPEN_METHODS.join("|").split(".").join("\\.") + ")\\((?:'|\")([^'\"]*)(?:'|\")(?:,\\s*(\\w+)\\)|\\))", "i"); + const jsUrl = regex.exec(str); + + if (jsUrl && jsUrl[2]) { + const url = jsUrl[2]; + let newWindow = false; + + if (jsUrl[3] === "true" && jsUrl[1] === "app.launchURL") { + newWindow = true; + } + + return { + url, + newWindow + }; + } + + return null; +} + +function numberToString(value) { + if (Number.isInteger(value)) { + return value.toString(); + } + + const roundedValue = Math.round(value * 100); + + if (roundedValue % 100 === 0) { + return (roundedValue / 100).toString(); + } + + if (roundedValue % 10 === 0) { + return value.toFixed(1); + } + + return value.toFixed(2); +} + +function getNewAnnotationsMap(annotationStorage) { + if (!annotationStorage) { + return null; + } + + const newAnnotationsByPage = new Map(); + + for (const [key, value] of annotationStorage) { + if (!key.startsWith(_util.AnnotationEditorPrefix)) { + continue; + } + + let annotations = newAnnotationsByPage.get(value.pageIndex); + + if (!annotations) { + annotations = []; + newAnnotationsByPage.set(value.pageIndex, annotations); + } + + annotations.push(value); + } + + return newAnnotationsByPage.size > 0 ? newAnnotationsByPage : null; +} + /***/ }), -/* 155 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 132 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.PDFDocument = exports.Page = void 0; +})); +exports.BaseStream = void 0; -var _util = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(2); -var _obj = __w_pdfjs_require__(156); +class BaseStream { + constructor() { + if (this.constructor === BaseStream) { + (0, _util.unreachable)("Cannot initialize BaseStream."); + } + } -var _primitives = __w_pdfjs_require__(151); + get length() { + (0, _util.unreachable)("Abstract getter `length` accessed"); + } -var _core_utils = __w_pdfjs_require__(154); + get isEmpty() { + (0, _util.unreachable)("Abstract getter `isEmpty` accessed"); + } -var _stream2 = __w_pdfjs_require__(158); + get isDataLoaded() { + return (0, _util.shadow)(this, "isDataLoaded", true); + } -var _annotation = __w_pdfjs_require__(170); + getByte() { + (0, _util.unreachable)("Abstract method `getByte` called"); + } -var _crypto = __w_pdfjs_require__(168); + getBytes(length) { + (0, _util.unreachable)("Abstract method `getBytes` called"); + } -var _parser = __w_pdfjs_require__(157); + peekByte() { + const peekedByte = this.getByte(); -var _operator_list = __w_pdfjs_require__(171); + if (peekedByte !== -1) { + this.pos--; + } -var _evaluator = __w_pdfjs_require__(172); + return peekedByte; + } -var _function = __w_pdfjs_require__(186); + peekBytes(length) { + const bytes = this.getBytes(length); + this.pos -= bytes.length; + return bytes; + } -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + getUint16() { + const b0 = this.getByte(); + const b1 = this.getByte(); -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + if (b0 === -1 || b1 === -1) { + return -1; + } -function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + return (b0 << 8) + b1; + } -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + getInt32() { + const b0 = this.getByte(); + const b1 = this.getByte(); + const b2 = this.getByte(); + const b3 = this.getByte(); + return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; + } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + getByteRange(begin, end) { + (0, _util.unreachable)("Abstract method `getByteRange` called"); + } -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + getString(length) { + return (0, _util.bytesToString)(this.getBytes(length)); + } -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + skip(n) { + this.pos += n || 1; + } -var DEFAULT_USER_UNIT = 1.0; -var LETTER_SIZE_MEDIABOX = [0, 0, 612, 792]; + reset() { + (0, _util.unreachable)("Abstract method `reset` called"); + } + + moveStart() { + (0, _util.unreachable)("Abstract method `moveStart` called"); + } + + makeSubStream(start, length) { + let dict = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + (0, _util.unreachable)("Abstract method `makeSubStream` called"); + } + + getBaseStreams() { + return null; + } -function isAnnotationRenderable(annotation, intent) { - return intent === 'display' && annotation.viewable || intent === 'print' && annotation.printable; } -var Page = -/*#__PURE__*/ -function () { - function Page(_ref) { - var pdfManager = _ref.pdfManager, - xref = _ref.xref, - pageIndex = _ref.pageIndex, - pageDict = _ref.pageDict, - ref = _ref.ref, - fontCache = _ref.fontCache, - builtInCMapCache = _ref.builtInCMapCache, - pdfFunctionFactory = _ref.pdfFunctionFactory; +exports.BaseStream = BaseStream; - _classCallCheck(this, Page); +/***/ }), +/* 133 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NetworkPdfManager = exports.LocalPdfManager = void 0; + +var _util = __w_pdfjs_require__(2); + +var _chunked_stream = __w_pdfjs_require__(134); + +var _core_utils = __w_pdfjs_require__(131); + +var _document = __w_pdfjs_require__(136); + +var _stream = __w_pdfjs_require__(135); + +function parseDocBaseUrl(url) { + if (url) { + const absoluteUrl = (0, _util.createValidAbsoluteUrl)(url); + + if (absoluteUrl) { + return absoluteUrl.href; + } + + (0, _util.warn)(`Invalid absolute docBaseUrl: "${url}".`); + } + + return null; +} + +class BasePdfManager { + constructor() { + if (this.constructor === BasePdfManager) { + (0, _util.unreachable)("Cannot initialize BasePdfManager."); + } + } + + get docId() { + return this._docId; + } + + get password() { + return this._password; + } + + get docBaseUrl() { + const catalog = this.pdfDocument.catalog; + return (0, _util.shadow)(this, "docBaseUrl", catalog.baseUrl || this._docBaseUrl); + } + + onLoadedStream() { + (0, _util.unreachable)("Abstract method `onLoadedStream` called"); + } + + ensureDoc(prop, args) { + return this.ensure(this.pdfDocument, prop, args); + } + + ensureXRef(prop, args) { + return this.ensure(this.pdfDocument.xref, prop, args); + } + + ensureCatalog(prop, args) { + return this.ensure(this.pdfDocument.catalog, prop, args); + } + + getPage(pageIndex) { + return this.pdfDocument.getPage(pageIndex); + } + + fontFallback(id, handler) { + return this.pdfDocument.fontFallback(id, handler); + } + + loadXfaFonts(handler, task) { + return this.pdfDocument.loadXfaFonts(handler, task); + } + + loadXfaImages() { + return this.pdfDocument.loadXfaImages(); + } + + serializeXfaData(annotationStorage) { + return this.pdfDocument.serializeXfaData(annotationStorage); + } + + cleanup() { + let manuallyTriggered = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + return this.pdfDocument.cleanup(manuallyTriggered); + } + + async ensure(obj, prop, args) { + (0, _util.unreachable)("Abstract method `ensure` called"); + } + + requestRange(begin, end) { + (0, _util.unreachable)("Abstract method `requestRange` called"); + } + + requestLoadedStream() { + (0, _util.unreachable)("Abstract method `requestLoadedStream` called"); + } + + sendProgressiveData(chunk) { + (0, _util.unreachable)("Abstract method `sendProgressiveData` called"); + } + + updatePassword(password) { + this._password = password; + } + + terminate(reason) { + (0, _util.unreachable)("Abstract method `terminate` called"); + } + +} + +class LocalPdfManager extends BasePdfManager { + constructor(docId, data, password, msgHandler, evaluatorOptions, enableXfa, docBaseUrl) { + super(); + this._docId = docId; + this._password = password; + this._docBaseUrl = parseDocBaseUrl(docBaseUrl); + this.msgHandler = msgHandler; + this.evaluatorOptions = evaluatorOptions; + this.enableXfa = enableXfa; + const stream = new _stream.Stream(data); + this.pdfDocument = new _document.PDFDocument(this, stream); + this._loadedStreamPromise = Promise.resolve(stream); + } + + async ensure(obj, prop, args) { + const value = obj[prop]; + + if (typeof value === "function") { + return value.apply(obj, args); + } + + return value; + } + + requestRange(begin, end) { + return Promise.resolve(); + } + + requestLoadedStream() {} + + onLoadedStream() { + return this._loadedStreamPromise; + } + + terminate(reason) {} + +} + +exports.LocalPdfManager = LocalPdfManager; + +class NetworkPdfManager extends BasePdfManager { + constructor(docId, pdfNetworkStream, args, evaluatorOptions, enableXfa, docBaseUrl) { + super(); + this._docId = docId; + this._password = args.password; + this._docBaseUrl = parseDocBaseUrl(docBaseUrl); + this.msgHandler = args.msgHandler; + this.evaluatorOptions = evaluatorOptions; + this.enableXfa = enableXfa; + this.streamManager = new _chunked_stream.ChunkedStreamManager(pdfNetworkStream, { + msgHandler: args.msgHandler, + length: args.length, + disableAutoFetch: args.disableAutoFetch, + rangeChunkSize: args.rangeChunkSize + }); + this.pdfDocument = new _document.PDFDocument(this, this.streamManager.getStream()); + } + + async ensure(obj, prop, args) { + try { + const value = obj[prop]; + + if (typeof value === "function") { + return value.apply(obj, args); + } + + return value; + } catch (ex) { + if (!(ex instanceof _core_utils.MissingDataException)) { + throw ex; + } + + await this.requestRange(ex.begin, ex.end); + return this.ensure(obj, prop, args); + } + } + + requestRange(begin, end) { + return this.streamManager.requestRange(begin, end); + } + + requestLoadedStream() { + this.streamManager.requestAllChunks(); + } + + sendProgressiveData(chunk) { + this.streamManager.onReceiveData({ + chunk + }); + } + + onLoadedStream() { + return this.streamManager.onLoadedStream(); + } + + terminate(reason) { + this.streamManager.abort(reason); + } + +} + +exports.NetworkPdfManager = NetworkPdfManager; + +/***/ }), +/* 134 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ChunkedStreamManager = exports.ChunkedStream = void 0; + +var _util = __w_pdfjs_require__(2); + +var _core_utils = __w_pdfjs_require__(131); + +var _stream = __w_pdfjs_require__(135); + +class ChunkedStream extends _stream.Stream { + constructor(length, chunkSize, manager) { + super(new Uint8Array(length), 0, length, null); + this.chunkSize = chunkSize; + this._loadedChunks = new Set(); + this.numChunks = Math.ceil(length / chunkSize); + this.manager = manager; + this.progressiveDataLength = 0; + this.lastSuccessfulEnsureByteChunk = -1; + } + + getMissingChunks() { + const chunks = []; + + for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) { + if (!this._loadedChunks.has(chunk)) { + chunks.push(chunk); + } + } + + return chunks; + } + + get numChunksLoaded() { + return this._loadedChunks.size; + } + + get isDataLoaded() { + return this.numChunksLoaded === this.numChunks; + } + + onReceiveData(begin, chunk) { + const chunkSize = this.chunkSize; + + if (begin % chunkSize !== 0) { + throw new Error(`Bad begin offset: ${begin}`); + } + + const end = begin + chunk.byteLength; + + if (end % chunkSize !== 0 && end !== this.bytes.length) { + throw new Error(`Bad end offset: ${end}`); + } + + this.bytes.set(new Uint8Array(chunk), begin); + const beginChunk = Math.floor(begin / chunkSize); + const endChunk = Math.floor((end - 1) / chunkSize) + 1; + + for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) { + this._loadedChunks.add(curChunk); + } + } + + onReceiveProgressiveData(data) { + let position = this.progressiveDataLength; + const beginChunk = Math.floor(position / this.chunkSize); + this.bytes.set(new Uint8Array(data), position); + position += data.byteLength; + this.progressiveDataLength = position; + const endChunk = position >= this.end ? this.numChunks : Math.floor(position / this.chunkSize); + + for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) { + this._loadedChunks.add(curChunk); + } + } + + ensureByte(pos) { + if (pos < this.progressiveDataLength) { + return; + } + + const chunk = Math.floor(pos / this.chunkSize); + + if (chunk > this.numChunks) { + return; + } + + if (chunk === this.lastSuccessfulEnsureByteChunk) { + return; + } + + if (!this._loadedChunks.has(chunk)) { + throw new _core_utils.MissingDataException(pos, pos + 1); + } + + this.lastSuccessfulEnsureByteChunk = chunk; + } + + ensureRange(begin, end) { + if (begin >= end) { + return; + } + + if (end <= this.progressiveDataLength) { + return; + } + + const beginChunk = Math.floor(begin / this.chunkSize); + + if (beginChunk > this.numChunks) { + return; + } + + const endChunk = Math.min(Math.floor((end - 1) / this.chunkSize) + 1, this.numChunks); + + for (let chunk = beginChunk; chunk < endChunk; ++chunk) { + if (!this._loadedChunks.has(chunk)) { + throw new _core_utils.MissingDataException(begin, end); + } + } + } + + nextEmptyChunk(beginChunk) { + const numChunks = this.numChunks; + + for (let i = 0; i < numChunks; ++i) { + const chunk = (beginChunk + i) % numChunks; + + if (!this._loadedChunks.has(chunk)) { + return chunk; + } + } + + return null; + } + + hasChunk(chunk) { + return this._loadedChunks.has(chunk); + } + + getByte() { + const pos = this.pos; + + if (pos >= this.end) { + return -1; + } + + if (pos >= this.progressiveDataLength) { + this.ensureByte(pos); + } + + return this.bytes[this.pos++]; + } + + getBytes(length) { + const bytes = this.bytes; + const pos = this.pos; + const strEnd = this.end; + + if (!length) { + if (strEnd > this.progressiveDataLength) { + this.ensureRange(pos, strEnd); + } + + return bytes.subarray(pos, strEnd); + } + + let end = pos + length; + + if (end > strEnd) { + end = strEnd; + } + + if (end > this.progressiveDataLength) { + this.ensureRange(pos, end); + } + + this.pos = end; + return bytes.subarray(pos, end); + } + + getByteRange(begin, end) { + if (begin < 0) { + begin = 0; + } + + if (end > this.end) { + end = this.end; + } + + if (end > this.progressiveDataLength) { + this.ensureRange(begin, end); + } + + return this.bytes.subarray(begin, end); + } + + makeSubStream(start, length) { + let dict = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + + if (length) { + if (start + length > this.progressiveDataLength) { + this.ensureRange(start, start + length); + } + } else { + if (start >= this.progressiveDataLength) { + this.ensureByte(start); + } + } + + function ChunkedStreamSubstream() {} + + ChunkedStreamSubstream.prototype = Object.create(this); + + ChunkedStreamSubstream.prototype.getMissingChunks = function () { + const chunkSize = this.chunkSize; + const beginChunk = Math.floor(this.start / chunkSize); + const endChunk = Math.floor((this.end - 1) / chunkSize) + 1; + const missingChunks = []; + + for (let chunk = beginChunk; chunk < endChunk; ++chunk) { + if (!this._loadedChunks.has(chunk)) { + missingChunks.push(chunk); + } + } + + return missingChunks; + }; + + Object.defineProperty(ChunkedStreamSubstream.prototype, "isDataLoaded", { + get() { + if (this.numChunksLoaded === this.numChunks) { + return true; + } + + return this.getMissingChunks().length === 0; + }, + + configurable: true + }); + const subStream = new ChunkedStreamSubstream(); + subStream.pos = subStream.start = start; + subStream.end = start + length || this.end; + subStream.dict = dict; + return subStream; + } + + getBaseStreams() { + return [this]; + } + +} + +exports.ChunkedStream = ChunkedStream; + +class ChunkedStreamManager { + constructor(pdfNetworkStream, args) { + this.length = args.length; + this.chunkSize = args.rangeChunkSize; + this.stream = new ChunkedStream(this.length, this.chunkSize, this); + this.pdfNetworkStream = pdfNetworkStream; + this.disableAutoFetch = args.disableAutoFetch; + this.msgHandler = args.msgHandler; + this.currRequestId = 0; + this._chunksNeededByRequest = new Map(); + this._requestsByChunk = new Map(); + this._promisesByRequest = new Map(); + this.progressiveDataLength = 0; + this.aborted = false; + this._loadedStreamCapability = (0, _util.createPromiseCapability)(); + } + + onLoadedStream() { + return this._loadedStreamCapability.promise; + } + + sendRequest(begin, end) { + const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end); + + if (!rangeReader.isStreamingSupported) { + rangeReader.onProgress = this.onProgress.bind(this); + } + + let chunks = [], + loaded = 0; + return new Promise((resolve, reject) => { + const readChunk = chunk => { + try { + if (!chunk.done) { + const data = chunk.value; + chunks.push(data); + loaded += (0, _util.arrayByteLength)(data); + + if (rangeReader.isStreamingSupported) { + this.onProgress({ + loaded + }); + } + + rangeReader.read().then(readChunk, reject); + return; + } + + const chunkData = (0, _util.arraysToBytes)(chunks); + chunks = null; + resolve(chunkData); + } catch (e) { + reject(e); + } + }; + + rangeReader.read().then(readChunk, reject); + }).then(data => { + if (this.aborted) { + return; + } + + this.onReceiveData({ + chunk: data, + begin + }); + }); + } + + requestAllChunks() { + const missingChunks = this.stream.getMissingChunks(); + + this._requestChunks(missingChunks); + + return this._loadedStreamCapability.promise; + } + + _requestChunks(chunks) { + const requestId = this.currRequestId++; + const chunksNeeded = new Set(); + + this._chunksNeededByRequest.set(requestId, chunksNeeded); + + for (const chunk of chunks) { + if (!this.stream.hasChunk(chunk)) { + chunksNeeded.add(chunk); + } + } + + if (chunksNeeded.size === 0) { + return Promise.resolve(); + } + + const capability = (0, _util.createPromiseCapability)(); + + this._promisesByRequest.set(requestId, capability); + + const chunksToRequest = []; + + for (const chunk of chunksNeeded) { + let requestIds = this._requestsByChunk.get(chunk); + + if (!requestIds) { + requestIds = []; + + this._requestsByChunk.set(chunk, requestIds); + + chunksToRequest.push(chunk); + } + + requestIds.push(requestId); + } + + if (chunksToRequest.length > 0) { + const groupedChunksToRequest = this.groupChunks(chunksToRequest); + + for (const groupedChunk of groupedChunksToRequest) { + const begin = groupedChunk.beginChunk * this.chunkSize; + const end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length); + this.sendRequest(begin, end).catch(capability.reject); + } + } + + return capability.promise.catch(reason => { + if (this.aborted) { + return; + } + + throw reason; + }); + } + + getStream() { + return this.stream; + } + + requestRange(begin, end) { + end = Math.min(end, this.length); + const beginChunk = this.getBeginChunk(begin); + const endChunk = this.getEndChunk(end); + const chunks = []; + + for (let chunk = beginChunk; chunk < endChunk; ++chunk) { + chunks.push(chunk); + } + + return this._requestChunks(chunks); + } + + requestRanges() { + let ranges = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + const chunksToRequest = []; + + for (const range of ranges) { + const beginChunk = this.getBeginChunk(range.begin); + const endChunk = this.getEndChunk(range.end); + + for (let chunk = beginChunk; chunk < endChunk; ++chunk) { + if (!chunksToRequest.includes(chunk)) { + chunksToRequest.push(chunk); + } + } + } + + chunksToRequest.sort(function (a, b) { + return a - b; + }); + return this._requestChunks(chunksToRequest); + } + + groupChunks(chunks) { + const groupedChunks = []; + let beginChunk = -1; + let prevChunk = -1; + + for (let i = 0, ii = chunks.length; i < ii; ++i) { + const chunk = chunks[i]; + + if (beginChunk < 0) { + beginChunk = chunk; + } + + if (prevChunk >= 0 && prevChunk + 1 !== chunk) { + groupedChunks.push({ + beginChunk, + endChunk: prevChunk + 1 + }); + beginChunk = chunk; + } + + if (i + 1 === chunks.length) { + groupedChunks.push({ + beginChunk, + endChunk: chunk + 1 + }); + } + + prevChunk = chunk; + } + + return groupedChunks; + } + + onProgress(args) { + this.msgHandler.send("DocProgress", { + loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded, + total: this.length + }); + } + + onReceiveData(args) { + const chunk = args.chunk; + const isProgressive = args.begin === undefined; + const begin = isProgressive ? this.progressiveDataLength : args.begin; + const end = begin + chunk.byteLength; + const beginChunk = Math.floor(begin / this.chunkSize); + const endChunk = end < this.length ? Math.floor(end / this.chunkSize) : Math.ceil(end / this.chunkSize); + + if (isProgressive) { + this.stream.onReceiveProgressiveData(chunk); + this.progressiveDataLength = end; + } else { + this.stream.onReceiveData(begin, chunk); + } + + if (this.stream.isDataLoaded) { + this._loadedStreamCapability.resolve(this.stream); + } + + const loadedRequests = []; + + for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) { + const requestIds = this._requestsByChunk.get(curChunk); + + if (!requestIds) { + continue; + } + + this._requestsByChunk.delete(curChunk); + + for (const requestId of requestIds) { + const chunksNeeded = this._chunksNeededByRequest.get(requestId); + + if (chunksNeeded.has(curChunk)) { + chunksNeeded.delete(curChunk); + } + + if (chunksNeeded.size > 0) { + continue; + } + + loadedRequests.push(requestId); + } + } + + if (!this.disableAutoFetch && this._requestsByChunk.size === 0) { + let nextEmptyChunk; + + if (this.stream.numChunksLoaded === 1) { + const lastChunk = this.stream.numChunks - 1; + + if (!this.stream.hasChunk(lastChunk)) { + nextEmptyChunk = lastChunk; + } + } else { + nextEmptyChunk = this.stream.nextEmptyChunk(endChunk); + } + + if (Number.isInteger(nextEmptyChunk)) { + this._requestChunks([nextEmptyChunk]); + } + } + + for (const requestId of loadedRequests) { + const capability = this._promisesByRequest.get(requestId); + + this._promisesByRequest.delete(requestId); + + capability.resolve(); + } + + this.msgHandler.send("DocProgress", { + loaded: this.stream.numChunksLoaded * this.chunkSize, + total: this.length + }); + } + + onError(err) { + this._loadedStreamCapability.reject(err); + } + + getBeginChunk(begin) { + return Math.floor(begin / this.chunkSize); + } + + getEndChunk(end) { + return Math.floor((end - 1) / this.chunkSize) + 1; + } + + abort(reason) { + this.aborted = true; + + if (this.pdfNetworkStream) { + this.pdfNetworkStream.cancelAllRequests(reason); + } + + for (const capability of this._promisesByRequest.values()) { + capability.reject(reason); + } + } + +} + +exports.ChunkedStreamManager = ChunkedStreamManager; + +/***/ }), +/* 135 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StringStream = exports.Stream = exports.NullStream = void 0; + +var _base_stream = __w_pdfjs_require__(132); + +var _util = __w_pdfjs_require__(2); + +class Stream extends _base_stream.BaseStream { + constructor(arrayBuffer, start, length, dict) { + super(); + this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : new Uint8Array(arrayBuffer); + this.start = start || 0; + this.pos = this.start; + this.end = start + length || this.bytes.length; + this.dict = dict; + } + + get length() { + return this.end - this.start; + } + + get isEmpty() { + return this.length === 0; + } + + getByte() { + if (this.pos >= this.end) { + return -1; + } + + return this.bytes[this.pos++]; + } + + getBytes(length) { + const bytes = this.bytes; + const pos = this.pos; + const strEnd = this.end; + + if (!length) { + return bytes.subarray(pos, strEnd); + } + + let end = pos + length; + + if (end > strEnd) { + end = strEnd; + } + + this.pos = end; + return bytes.subarray(pos, end); + } + + getByteRange(begin, end) { + if (begin < 0) { + begin = 0; + } + + if (end > this.end) { + end = this.end; + } + + return this.bytes.subarray(begin, end); + } + + reset() { + this.pos = this.start; + } + + moveStart() { + this.start = this.pos; + } + + makeSubStream(start, length) { + let dict = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + return new Stream(this.bytes.buffer, start, length, dict); + } + +} + +exports.Stream = Stream; + +class StringStream extends Stream { + constructor(str) { + super((0, _util.stringToBytes)(str)); + } + +} + +exports.StringStream = StringStream; + +class NullStream extends Stream { + constructor() { + super(new Uint8Array(0)); + } + +} + +exports.NullStream = NullStream; + +/***/ }), +/* 136 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Page = exports.PDFDocument = void 0; + +var _annotation = __w_pdfjs_require__(137); + +var _util = __w_pdfjs_require__(2); + +var _core_utils = __w_pdfjs_require__(131); + +var _primitives = __w_pdfjs_require__(130); + +var _xfa_fonts = __w_pdfjs_require__(176); + +var _base_stream = __w_pdfjs_require__(132); + +var _crypto = __w_pdfjs_require__(192); + +var _catalog = __w_pdfjs_require__(194); + +var _cleanup_helper = __w_pdfjs_require__(196); + +var _dataset_reader = __w_pdfjs_require__(225); + +var _parser = __w_pdfjs_require__(142); + +var _stream = __w_pdfjs_require__(135); + +var _object_loader = __w_pdfjs_require__(200); + +var _operator_list = __w_pdfjs_require__(187); + +var _evaluator = __w_pdfjs_require__(140); + +var _decode_stream = __w_pdfjs_require__(144); + +var _struct_tree = __w_pdfjs_require__(199); + +var _writer = __w_pdfjs_require__(190); + +var _factory = __w_pdfjs_require__(201); + +var _xref = __w_pdfjs_require__(226); + +const DEFAULT_USER_UNIT = 1.0; +const LETTER_SIZE_MEDIABOX = [0, 0, 612, 792]; + +class Page { + constructor(_ref) { + let { + pdfManager, + xref, + pageIndex, + pageDict, + ref, + globalIdFactory, + fontCache, + builtInCMapCache, + standardFontDataCache, + globalImageCache, + nonBlendModesSet, + xfaFactory + } = _ref; this.pdfManager = pdfManager; this.pageIndex = pageIndex; this.pageDict = pageDict; @@ -12556,3271 +7136,11719 @@ function () { this.ref = ref; this.fontCache = fontCache; this.builtInCMapCache = builtInCMapCache; - this.pdfFunctionFactory = pdfFunctionFactory; + this.standardFontDataCache = standardFontDataCache; + this.globalImageCache = globalImageCache; + this.nonBlendModesSet = nonBlendModesSet; this.evaluatorOptions = pdfManager.evaluatorOptions; this.resourcesPromise = null; - var idCounters = { + this.xfaFactory = xfaFactory; + const idCounters = { obj: 0 }; - this.idFactory = { - createObjId: function createObjId() { - return "p".concat(pageIndex, "_").concat(++idCounters.obj); - }, - getDocId: function getDocId() { - return "g_".concat(pdfManager.docId); + this._localIdFactory = class extends globalIdFactory { + static createObjId() { + return `p${pageIndex}_${++idCounters.obj}`; } + + static getPageObjId() { + return `page${ref.toString()}`; + } + }; } - _createClass(Page, [{ - key: "_getInheritableProperty", - value: function _getInheritableProperty(key) { - var getArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var value = (0, _core_utils.getInheritableProperty)({ - dict: this.pageDict, - key: key, - getArray: getArray, - stopWhenFound: false - }); - - if (!Array.isArray(value)) { - return value; - } - - if (value.length === 1 || !(0, _primitives.isDict)(value[0])) { - return value[0]; - } - - return _primitives.Dict.merge(this.xref, value); - } - }, { - key: "getContentStream", - value: function getContentStream() { - var content = this.content; - var stream; - - if (Array.isArray(content)) { - var xref = this.xref; - var streams = []; - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = content[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var _stream = _step.value; - streams.push(xref.fetchIfRef(_stream)); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator["return"] != null) { - _iterator["return"](); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - stream = new _stream2.StreamsSequenceStream(streams); - } else if ((0, _primitives.isStream)(content)) { - stream = content; - } else { - stream = new _stream2.NullStream(); - } - - return stream; - } - }, { - key: "loadResources", - value: function loadResources(keys) { - var _this = this; - - if (!this.resourcesPromise) { - this.resourcesPromise = this.pdfManager.ensure(this, 'resources'); - } - - return this.resourcesPromise.then(function () { - var objectLoader = new _obj.ObjectLoader(_this.resources, keys, _this.xref); - return objectLoader.load(); - }); - } - }, { - key: "getOperatorList", - value: function getOperatorList(_ref2) { - var _this2 = this; - - var handler = _ref2.handler, - task = _ref2.task, - intent = _ref2.intent, - renderInteractiveForms = _ref2.renderInteractiveForms; - var contentStreamPromise = this.pdfManager.ensure(this, 'getContentStream'); - var resourcesPromise = this.loadResources(['ExtGState', 'ColorSpace', 'Pattern', 'Shading', 'XObject', 'Font']); - var partialEvaluator = new _evaluator.PartialEvaluator({ - xref: this.xref, - handler: handler, - pageIndex: this.pageIndex, - idFactory: this.idFactory, - fontCache: this.fontCache, - builtInCMapCache: this.builtInCMapCache, - options: this.evaluatorOptions, - pdfFunctionFactory: this.pdfFunctionFactory - }); - var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]); - var pageListPromise = dataPromises.then(function (_ref3) { - var _ref4 = _slicedToArray(_ref3, 1), - contentStream = _ref4[0]; - - var opList = new _operator_list.OperatorList(intent, handler, _this2.pageIndex); - handler.send('StartRenderPage', { - transparency: partialEvaluator.hasBlendModes(_this2.resources), - pageIndex: _this2.pageIndex, - intent: intent - }); - return partialEvaluator.getOperatorList({ - stream: contentStream, - task: task, - resources: _this2.resources, - operatorList: opList - }).then(function () { - return opList; - }); - }); - return Promise.all([pageListPromise, this._parsedAnnotations]).then(function (_ref5) { - var _ref6 = _slicedToArray(_ref5, 2), - pageOpList = _ref6[0], - annotations = _ref6[1]; - - if (annotations.length === 0) { - pageOpList.flush(true); - return pageOpList; - } - - var opListPromises = []; - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = annotations[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var annotation = _step2.value; - - if (isAnnotationRenderable(annotation, intent)) { - opListPromises.push(annotation.getOperatorList(partialEvaluator, task, renderInteractiveForms)); - } - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { - _iterator2["return"](); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - return Promise.all(opListPromises).then(function (opLists) { - pageOpList.addOp(_util.OPS.beginAnnotations, []); - var _iteratorNormalCompletion3 = true; - var _didIteratorError3 = false; - var _iteratorError3 = undefined; - - try { - for (var _iterator3 = opLists[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var opList = _step3.value; - pageOpList.addOpList(opList); - } - } catch (err) { - _didIteratorError3 = true; - _iteratorError3 = err; - } finally { - try { - if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) { - _iterator3["return"](); - } - } finally { - if (_didIteratorError3) { - throw _iteratorError3; - } - } - } - - pageOpList.addOp(_util.OPS.endAnnotations, []); - pageOpList.flush(true); - return pageOpList; - }); - }); - } - }, { - key: "extractTextContent", - value: function extractTextContent(_ref7) { - var _this3 = this; - - var handler = _ref7.handler, - task = _ref7.task, - normalizeWhitespace = _ref7.normalizeWhitespace, - sink = _ref7.sink, - combineTextItems = _ref7.combineTextItems; - var contentStreamPromise = this.pdfManager.ensure(this, 'getContentStream'); - var resourcesPromise = this.loadResources(['ExtGState', 'XObject', 'Font']); - var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]); - return dataPromises.then(function (_ref8) { - var _ref9 = _slicedToArray(_ref8, 1), - contentStream = _ref9[0]; - - var partialEvaluator = new _evaluator.PartialEvaluator({ - xref: _this3.xref, - handler: handler, - pageIndex: _this3.pageIndex, - idFactory: _this3.idFactory, - fontCache: _this3.fontCache, - builtInCMapCache: _this3.builtInCMapCache, - options: _this3.evaluatorOptions, - pdfFunctionFactory: _this3.pdfFunctionFactory - }); - return partialEvaluator.getTextContent({ - stream: contentStream, - task: task, - resources: _this3.resources, - normalizeWhitespace: normalizeWhitespace, - combineTextItems: combineTextItems, - sink: sink - }); - }); - } - }, { - key: "getAnnotationsData", - value: function getAnnotationsData(intent) { - return this._parsedAnnotations.then(function (annotations) { - var annotationsData = []; - - for (var i = 0, ii = annotations.length; i < ii; i++) { - if (!intent || isAnnotationRenderable(annotations[i], intent)) { - annotationsData.push(annotations[i].data); - } - } - - return annotationsData; - }); - } - }, { - key: "content", - get: function get() { - return this.pageDict.get('Contents'); - } - }, { - key: "resources", - get: function get() { - return (0, _util.shadow)(this, 'resources', this._getInheritableProperty('Resources') || _primitives.Dict.empty); - } - }, { - key: "mediaBox", - get: function get() { - var mediaBox = this._getInheritableProperty('MediaBox', true); - - if (!Array.isArray(mediaBox) || mediaBox.length !== 4) { - return (0, _util.shadow)(this, 'mediaBox', LETTER_SIZE_MEDIABOX); - } - - return (0, _util.shadow)(this, 'mediaBox', mediaBox); - } - }, { - key: "cropBox", - get: function get() { - var cropBox = this._getInheritableProperty('CropBox', true); - - if (!Array.isArray(cropBox) || cropBox.length !== 4) { - return (0, _util.shadow)(this, 'cropBox', this.mediaBox); - } - - return (0, _util.shadow)(this, 'cropBox', cropBox); - } - }, { - key: "userUnit", - get: function get() { - var obj = this.pageDict.get('UserUnit'); - - if (!(0, _util.isNum)(obj) || obj <= 0) { - obj = DEFAULT_USER_UNIT; - } - - return (0, _util.shadow)(this, 'userUnit', obj); - } - }, { - key: "view", - get: function get() { - var mediaBox = this.mediaBox, - cropBox = this.cropBox; - - if (mediaBox === cropBox) { - return (0, _util.shadow)(this, 'view', mediaBox); - } - - var intersection = _util.Util.intersect(cropBox, mediaBox); - - return (0, _util.shadow)(this, 'view', intersection || mediaBox); - } - }, { - key: "rotate", - get: function get() { - var rotate = this._getInheritableProperty('Rotate') || 0; - - if (rotate % 90 !== 0) { - rotate = 0; - } else if (rotate >= 360) { - rotate = rotate % 360; - } else if (rotate < 0) { - rotate = (rotate % 360 + 360) % 360; - } - - return (0, _util.shadow)(this, 'rotate', rotate); - } - }, { - key: "annotations", - get: function get() { - return (0, _util.shadow)(this, 'annotations', this._getInheritableProperty('Annots') || []); - } - }, { - key: "_parsedAnnotations", - get: function get() { - var _this4 = this; - - var parsedAnnotations = this.pdfManager.ensure(this, 'annotations').then(function () { - var annotationRefs = _this4.annotations; - var annotationPromises = []; - - for (var i = 0, ii = annotationRefs.length; i < ii; i++) { - annotationPromises.push(_annotation.AnnotationFactory.create(_this4.xref, annotationRefs[i], _this4.pdfManager, _this4.idFactory)); - } - - return Promise.all(annotationPromises).then(function (annotations) { - return annotations.filter(function isDefined(annotation) { - return !!annotation; - }); - }, function (reason) { - (0, _util.warn)("_parsedAnnotations: \"".concat(reason, "\".")); - return []; - }); - }); - return (0, _util.shadow)(this, '_parsedAnnotations', parsedAnnotations); - } - }]); - - return Page; -}(); - -exports.Page = Page; -var FINGERPRINT_FIRST_BYTES = 1024; -var EMPTY_FINGERPRINT = '\x00\x00\x00\x00\x00\x00\x00' + '\x00\x00\x00\x00\x00\x00\x00\x00\x00'; - -function find(stream, needle, limit) { - var backwards = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - (0, _util.assert)(limit > 0, 'The "limit" must be a positive integer.'); - var str = (0, _util.bytesToString)(stream.peekBytes(limit)); - var index = backwards ? str.lastIndexOf(needle) : str.indexOf(needle); - - if (index === -1) { - return false; - } - - stream.pos += index; - return true; -} - -var PDFDocument = -/*#__PURE__*/ -function () { - function PDFDocument(pdfManager, arg) { - _classCallCheck(this, PDFDocument); - - var stream; - - if ((0, _primitives.isStream)(arg)) { - stream = arg; - } else if ((0, _util.isArrayBuffer)(arg)) { - stream = new _stream2.Stream(arg); - } else { - throw new Error('PDFDocument: Unknown argument type'); - } - - if (stream.length <= 0) { - throw new Error('PDFDocument: Stream must have data'); - } - - this.pdfManager = pdfManager; - this.stream = stream; - this.xref = new _obj.XRef(stream, pdfManager); - this.pdfFunctionFactory = new _function.PDFFunctionFactory({ - xref: this.xref, - isEvalSupported: pdfManager.evaluatorOptions.isEvalSupported + _getInheritableProperty(key) { + let getArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + const value = (0, _core_utils.getInheritableProperty)({ + dict: this.pageDict, + key, + getArray, + stopWhenFound: false + }); + + if (!Array.isArray(value)) { + return value; + } + + if (value.length === 1 || !(value[0] instanceof _primitives.Dict)) { + return value[0]; + } + + return _primitives.Dict.merge({ + xref: this.xref, + dictArray: value }); - this._pagePromises = []; } - _createClass(PDFDocument, [{ - key: "parse", - value: function parse(recoveryMode) { - this.setup(recoveryMode); - var version = this.catalog.catDict.get('Version'); - - if ((0, _primitives.isName)(version)) { - this.pdfFormatVersion = version.name; - } - - try { - this.acroForm = this.catalog.catDict.get('AcroForm'); - - if (this.acroForm) { - this.xfa = this.acroForm.get('XFA'); - var fields = this.acroForm.get('Fields'); - - if ((!Array.isArray(fields) || fields.length === 0) && !this.xfa) { - this.acroForm = null; - } - } - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.info)('Cannot fetch AcroForm entry; assuming no AcroForms are present'); - this.acroForm = null; - } - - try { - var collection = this.catalog.catDict.get('Collection'); - - if ((0, _primitives.isDict)(collection) && collection.getKeys().length > 0) { - this.collection = collection; - } - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.info)('Cannot fetch Collection dictionary.'); - } - } - }, { - key: "checkHeader", - value: function checkHeader() { - var stream = this.stream; - stream.reset(); - - if (!find(stream, '%PDF-', 1024)) { - return; - } - - stream.moveStart(); - var MAX_PDF_VERSION_LENGTH = 12; - var version = '', - ch; - - while ((ch = stream.getByte()) > 0x20) { - if (version.length >= MAX_PDF_VERSION_LENGTH) { - break; - } - - version += String.fromCharCode(ch); - } - - if (!this.pdfFormatVersion) { - this.pdfFormatVersion = version.substring(5); - } - } - }, { - key: "parseStartXRef", - value: function parseStartXRef() { - this.xref.setStartXRef(this.startXRef); - } - }, { - key: "setup", - value: function setup(recoveryMode) { - this.xref.parse(recoveryMode); - this.catalog = new _obj.Catalog(this.pdfManager, this.xref); - } - }, { - key: "_getLinearizationPage", - value: function _getLinearizationPage(pageIndex) { - var catalog = this.catalog, - linearization = this.linearization; - (0, _util.assert)(linearization && linearization.pageFirst === pageIndex); - - var ref = _primitives.Ref.get(linearization.objectNumberFirst, 0); - - return this.xref.fetchAsync(ref).then(function (obj) { - if ((0, _primitives.isDict)(obj, 'Page') || (0, _primitives.isDict)(obj) && !obj.has('Type') && obj.has('Contents')) { - if (ref && !catalog.pageKidsCountCache.has(ref)) { - catalog.pageKidsCountCache.put(ref, 1); - } - - return [obj, ref]; - } - - throw new _util.FormatError('The Linearization dictionary doesn\'t point ' + 'to a valid Page dictionary.'); - })["catch"](function (reason) { - (0, _util.info)(reason); - return catalog.getPageDict(pageIndex); - }); - } - }, { - key: "getPage", - value: function getPage(pageIndex) { - var _this5 = this; - - if (this._pagePromises[pageIndex] !== undefined) { - return this._pagePromises[pageIndex]; - } - - var catalog = this.catalog, - linearization = this.linearization; - var promise = linearization && linearization.pageFirst === pageIndex ? this._getLinearizationPage(pageIndex) : catalog.getPageDict(pageIndex); - return this._pagePromises[pageIndex] = promise.then(function (_ref10) { - var _ref11 = _slicedToArray(_ref10, 2), - pageDict = _ref11[0], - ref = _ref11[1]; - - return new Page({ - pdfManager: _this5.pdfManager, - xref: _this5.xref, - pageIndex: pageIndex, - pageDict: pageDict, - ref: ref, - fontCache: catalog.fontCache, - builtInCMapCache: catalog.builtInCMapCache, - pdfFunctionFactory: _this5.pdfFunctionFactory - }); - }); - } - }, { - key: "checkFirstPage", - value: function checkFirstPage() { - var _this6 = this; - - return this.getPage(0)["catch"](function (reason) { - if (reason instanceof _core_utils.XRefEntryException) { - _this6._pagePromises.length = 0; - - _this6.cleanup(); - - throw new _core_utils.XRefParseException(); - } - }); - } - }, { - key: "fontFallback", - value: function fontFallback(id, handler) { - return this.catalog.fontFallback(id, handler); - } - }, { - key: "cleanup", - value: function cleanup() { - return this.catalog.cleanup(); - } - }, { - key: "linearization", - get: function get() { - var linearization = null; - - try { - linearization = _parser.Linearization.create(this.stream); - } catch (err) { - if (err instanceof _core_utils.MissingDataException) { - throw err; - } - - (0, _util.info)(err); - } - - return (0, _util.shadow)(this, 'linearization', linearization); - } - }, { - key: "startXRef", - get: function get() { - var stream = this.stream; - var startXRef = 0; - - if (this.linearization) { - stream.reset(); - - if (find(stream, 'endobj', 1024)) { - startXRef = stream.pos + 6; - } - } else { - var step = 1024; - var startXRefLength = 'startxref'.length; - var found = false, - pos = stream.end; - - while (!found && pos > 0) { - pos -= step - startXRefLength; - - if (pos < 0) { - pos = 0; - } - - stream.pos = pos; - found = find(stream, 'startxref', step, true); - } - - if (found) { - stream.skip(9); - var ch; - - do { - ch = stream.getByte(); - } while ((0, _util.isSpace)(ch)); - - var str = ''; - - while (ch >= 0x20 && ch <= 0x39) { - str += String.fromCharCode(ch); - ch = stream.getByte(); - } - - startXRef = parseInt(str, 10); - - if (isNaN(startXRef)) { - startXRef = 0; - } - } - } - - return (0, _util.shadow)(this, 'startXRef', startXRef); - } - }, { - key: "numPages", - get: function get() { - var linearization = this.linearization; - var num = linearization ? linearization.numPages : this.catalog.numPages; - return (0, _util.shadow)(this, 'numPages', num); - } - }, { - key: "documentInfo", - get: function get() { - var DocumentInfoValidators = { - Title: _util.isString, - Author: _util.isString, - Subject: _util.isString, - Keywords: _util.isString, - Creator: _util.isString, - Producer: _util.isString, - CreationDate: _util.isString, - ModDate: _util.isString, - Trapped: _primitives.isName - }; - var docInfo = { - PDFFormatVersion: this.pdfFormatVersion, - IsLinearized: !!this.linearization, - IsAcroFormPresent: !!this.acroForm, - IsXFAPresent: !!this.xfa, - IsCollectionPresent: !!this.collection - }; - var infoDict; - - try { - infoDict = this.xref.trailer.get('Info'); - } catch (err) { - if (err instanceof _core_utils.MissingDataException) { - throw err; - } - - (0, _util.info)('The document information dictionary is invalid.'); - } - - if ((0, _primitives.isDict)(infoDict)) { - var _iteratorNormalCompletion4 = true; - var _didIteratorError4 = false; - var _iteratorError4 = undefined; - - try { - for (var _iterator4 = infoDict.getKeys()[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { - var key = _step4.value; - var value = infoDict.get(key); - - if (DocumentInfoValidators[key]) { - if (DocumentInfoValidators[key](value)) { - docInfo[key] = typeof value !== 'string' ? value : (0, _util.stringToPDFString)(value); - } else { - (0, _util.info)("Bad value in document info for \"".concat(key, "\".")); - } - } else if (typeof key === 'string') { - var customValue = void 0; - - if ((0, _util.isString)(value)) { - customValue = (0, _util.stringToPDFString)(value); - } else if ((0, _primitives.isName)(value) || (0, _util.isNum)(value) || (0, _util.isBool)(value)) { - customValue = value; - } else { - (0, _util.info)("Unsupported value in document info for (custom) \"".concat(key, "\".")); - continue; - } - - if (!docInfo['Custom']) { - docInfo['Custom'] = Object.create(null); - } - - docInfo['Custom'][key] = customValue; - } - } - } catch (err) { - _didIteratorError4 = true; - _iteratorError4 = err; - } finally { - try { - if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) { - _iterator4["return"](); - } - } finally { - if (_didIteratorError4) { - throw _iteratorError4; - } - } - } - } - - return (0, _util.shadow)(this, 'documentInfo', docInfo); - } - }, { - key: "fingerprint", - get: function get() { - var hash; - var idArray = this.xref.trailer.get('ID'); - - if (Array.isArray(idArray) && idArray[0] && (0, _util.isString)(idArray[0]) && idArray[0] !== EMPTY_FINGERPRINT) { - hash = (0, _util.stringToBytes)(idArray[0]); - } else { - if (this.stream.ensureRange) { - this.stream.ensureRange(0, Math.min(FINGERPRINT_FIRST_BYTES, this.stream.end)); - } - - hash = (0, _crypto.calculateMD5)(this.stream.bytes.subarray(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES); - } - - var fingerprint = ''; - - for (var i = 0, ii = hash.length; i < ii; i++) { - var hex = hash[i].toString(16); - fingerprint += hex.length === 1 ? '0' + hex : hex; - } - - return (0, _util.shadow)(this, 'fingerprint', fingerprint); - } - }]); - - return PDFDocument; -}(); - -exports.PDFDocument = PDFDocument; - -/***/ }), -/* 156 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.FileSpec = exports.XRef = exports.ObjectLoader = exports.Catalog = void 0; - -var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2)); - -var _util = __w_pdfjs_require__(5); - -var _primitives = __w_pdfjs_require__(151); - -var _parser = __w_pdfjs_require__(157); - -var _core_utils = __w_pdfjs_require__(154); - -var _chunked_stream = __w_pdfjs_require__(153); - -var _crypto = __w_pdfjs_require__(168); - -var _colorspace = __w_pdfjs_require__(169); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } - -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -function fetchDestination(dest) { - return (0, _primitives.isDict)(dest) ? dest.get('D') : dest; -} - -var Catalog = -/*#__PURE__*/ -function () { - function Catalog(pdfManager, xref) { - _classCallCheck(this, Catalog); - - this.pdfManager = pdfManager; - this.xref = xref; - this.catDict = xref.getCatalogObj(); - - if (!(0, _primitives.isDict)(this.catDict)) { - throw new _util.FormatError('Catalog object is not a dictionary.'); - } - - this.fontCache = new _primitives.RefSetCache(); - this.builtInCMapCache = new Map(); - this.pageKidsCountCache = new _primitives.RefSetCache(); + get content() { + return this.pageDict.getArray("Contents"); } - _createClass(Catalog, [{ - key: "_readDocumentOutline", - value: function _readDocumentOutline() { - var obj = this.catDict.get('Outlines'); + get resources() { + const resources = this._getInheritableProperty("Resources"); - if (!(0, _primitives.isDict)(obj)) { - return null; - } - - obj = obj.getRaw('First'); - - if (!(0, _primitives.isRef)(obj)) { - return null; - } - - var root = { - items: [] - }; - var queue = [{ - obj: obj, - parent: root - }]; - var processed = new _primitives.RefSet(); - processed.put(obj); - var xref = this.xref, - blackColor = new Uint8ClampedArray(3); - - while (queue.length > 0) { - var i = queue.shift(); - var outlineDict = xref.fetchIfRef(i.obj); - - if (outlineDict === null) { - continue; - } - - if (!outlineDict.has('Title')) { - throw new _util.FormatError('Invalid outline item encountered.'); - } - - var data = { - url: null, - dest: null - }; - Catalog.parseDestDictionary({ - destDict: outlineDict, - resultObj: data, - docBaseUrl: this.pdfManager.docBaseUrl - }); - var title = outlineDict.get('Title'); - var flags = outlineDict.get('F') || 0; - var color = outlineDict.getArray('C'); - var count = outlineDict.get('Count'); - var rgbColor = blackColor; - - if (Array.isArray(color) && color.length === 3 && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) { - rgbColor = _colorspace.ColorSpace.singletons.rgb.getRgb(color, 0); - } - - var outlineItem = { - dest: data.dest, - url: data.url, - unsafeUrl: data.unsafeUrl, - newWindow: data.newWindow, - title: (0, _util.stringToPDFString)(title), - color: rgbColor, - count: Number.isInteger(count) ? count : undefined, - bold: !!(flags & 2), - italic: !!(flags & 1), - items: [] - }; - i.parent.items.push(outlineItem); - obj = outlineDict.getRaw('First'); - - if ((0, _primitives.isRef)(obj) && !processed.has(obj)) { - queue.push({ - obj: obj, - parent: outlineItem - }); - processed.put(obj); - } - - obj = outlineDict.getRaw('Next'); - - if ((0, _primitives.isRef)(obj) && !processed.has(obj)) { - queue.push({ - obj: obj, - parent: i.parent - }); - processed.put(obj); - } - } - - return root.items.length > 0 ? root.items : null; - } - }, { - key: "_readPermissions", - value: function _readPermissions() { - var encrypt = this.xref.trailer.get('Encrypt'); - - if (!(0, _primitives.isDict)(encrypt)) { - return null; - } - - var flags = encrypt.get('P'); - - if (!(0, _util.isNum)(flags)) { - return null; - } - - flags += Math.pow(2, 32); - var permissions = []; - - for (var key in _util.PermissionFlag) { - var value = _util.PermissionFlag[key]; - - if (flags & value) { - permissions.push(value); - } - } - - return permissions; - } - }, { - key: "getDestination", - value: function getDestination(destinationId) { - var obj = this._readDests(); - - if (obj instanceof NameTree || obj instanceof _primitives.Dict) { - return fetchDestination(obj.get(destinationId) || null); - } - - return null; - } - }, { - key: "_readDests", - value: function _readDests() { - var obj = this.catDict.get('Names'); - - if (obj && obj.has('Dests')) { - return new NameTree(obj.getRaw('Dests'), this.xref); - } else if (this.catDict.has('Dests')) { - return this.catDict.get('Dests'); - } - - return undefined; - } - }, { - key: "_readPageLabels", - value: function _readPageLabels() { - var obj = this.catDict.getRaw('PageLabels'); - - if (!obj) { - return null; - } - - var pageLabels = new Array(this.numPages); - var style = null, - prefix = ''; - var numberTree = new NumberTree(obj, this.xref); - var nums = numberTree.getAll(); - var currentLabel = '', - currentIndex = 1; - - for (var i = 0, ii = this.numPages; i < ii; i++) { - if (i in nums) { - var labelDict = nums[i]; - - if (!(0, _primitives.isDict)(labelDict)) { - throw new _util.FormatError('PageLabel is not a dictionary.'); - } - - if (labelDict.has('Type') && !(0, _primitives.isName)(labelDict.get('Type'), 'PageLabel')) { - throw new _util.FormatError('Invalid type in PageLabel dictionary.'); - } - - if (labelDict.has('S')) { - var s = labelDict.get('S'); - - if (!(0, _primitives.isName)(s)) { - throw new _util.FormatError('Invalid style in PageLabel dictionary.'); - } - - style = s.name; - } else { - style = null; - } - - if (labelDict.has('P')) { - var p = labelDict.get('P'); - - if (!(0, _util.isString)(p)) { - throw new _util.FormatError('Invalid prefix in PageLabel dictionary.'); - } - - prefix = (0, _util.stringToPDFString)(p); - } else { - prefix = ''; - } - - if (labelDict.has('St')) { - var st = labelDict.get('St'); - - if (!(Number.isInteger(st) && st >= 1)) { - throw new _util.FormatError('Invalid start in PageLabel dictionary.'); - } - - currentIndex = st; - } else { - currentIndex = 1; - } - } - - switch (style) { - case 'D': - currentLabel = currentIndex; - break; - - case 'R': - case 'r': - currentLabel = (0, _core_utils.toRomanNumerals)(currentIndex, style === 'r'); - break; - - case 'A': - case 'a': - var LIMIT = 26; - var A_UPPER_CASE = 0x41, - A_LOWER_CASE = 0x61; - var baseCharCode = style === 'a' ? A_LOWER_CASE : A_UPPER_CASE; - var letterIndex = currentIndex - 1; - var character = String.fromCharCode(baseCharCode + letterIndex % LIMIT); - var charBuf = []; - - for (var j = 0, jj = letterIndex / LIMIT | 0; j <= jj; j++) { - charBuf.push(character); - } - - currentLabel = charBuf.join(''); - break; - - default: - if (style) { - throw new _util.FormatError("Invalid style \"".concat(style, "\" in PageLabel dictionary.")); - } - - currentLabel = ''; - } - - pageLabels[i] = prefix + currentLabel; - currentIndex++; - } - - return pageLabels; - } - }, { - key: "fontFallback", - value: function fontFallback(id, handler) { - var promises = []; - this.fontCache.forEach(function (promise) { - promises.push(promise); - }); - return Promise.all(promises).then(function (translatedFonts) { - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = translatedFonts[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var translatedFont = _step.value; - - if (translatedFont.loadedName === id) { - translatedFont.fallback(handler); - return; - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator["return"] != null) { - _iterator["return"](); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - }); - } - }, { - key: "cleanup", - value: function cleanup() { - var _this = this; - - (0, _primitives.clearPrimitiveCaches)(); - this.pageKidsCountCache.clear(); - var promises = []; - this.fontCache.forEach(function (promise) { - promises.push(promise); - }); - return Promise.all(promises).then(function (translatedFonts) { - for (var i = 0, ii = translatedFonts.length; i < ii; i++) { - var font = translatedFonts[i].dict; - delete font.translated; - } - - _this.fontCache.clear(); - - _this.builtInCMapCache.clear(); - }); - } - }, { - key: "getPageDict", - value: function getPageDict(pageIndex) { - var capability = (0, _util.createPromiseCapability)(); - var nodesToVisit = [this.catDict.getRaw('Pages')]; - var xref = this.xref, - pageKidsCountCache = this.pageKidsCountCache; - var count, - currentPageIndex = 0; - - function next() { - var _loop = function _loop() { - var currentNode = nodesToVisit.pop(); - - if ((0, _primitives.isRef)(currentNode)) { - count = pageKidsCountCache.get(currentNode); - - if (count > 0 && currentPageIndex + count < pageIndex) { - currentPageIndex += count; - return "continue"; - } - - xref.fetchAsync(currentNode).then(function (obj) { - if ((0, _primitives.isDict)(obj, 'Page') || (0, _primitives.isDict)(obj) && !obj.has('Kids')) { - if (pageIndex === currentPageIndex) { - if (currentNode && !pageKidsCountCache.has(currentNode)) { - pageKidsCountCache.put(currentNode, 1); - } - - capability.resolve([obj, currentNode]); - } else { - currentPageIndex++; - next(); - } - - return; - } - - nodesToVisit.push(obj); - next(); - }, capability.reject); - return { - v: void 0 - }; - } - - if (!(0, _primitives.isDict)(currentNode)) { - capability.reject(new _util.FormatError('Page dictionary kid reference points to wrong type of object.')); - return { - v: void 0 - }; - } - - count = currentNode.get('Count'); - - if (Number.isInteger(count) && count >= 0) { - var objId = currentNode.objId; - - if (objId && !pageKidsCountCache.has(objId)) { - pageKidsCountCache.put(objId, count); - } - - if (currentPageIndex + count <= pageIndex) { - currentPageIndex += count; - return "continue"; - } - } - - var kids = currentNode.get('Kids'); - - if (!Array.isArray(kids)) { - if ((0, _primitives.isName)(currentNode.get('Type'), 'Page') || !currentNode.has('Type') && currentNode.has('Contents')) { - if (currentPageIndex === pageIndex) { - capability.resolve([currentNode, null]); - return { - v: void 0 - }; - } - - currentPageIndex++; - return "continue"; - } - - capability.reject(new _util.FormatError('Page dictionary kids object is not an array.')); - return { - v: void 0 - }; - } - - for (var last = kids.length - 1; last >= 0; last--) { - nodesToVisit.push(kids[last]); - } - }; - - while (nodesToVisit.length) { - var _ret = _loop(); - - switch (_ret) { - case "continue": - continue; - - default: - if (_typeof(_ret) === "object") return _ret.v; - } - } - - capability.reject(new Error("Page index ".concat(pageIndex, " not found."))); - } - - next(); - return capability.promise; - } - }, { - key: "getPageIndex", - value: function getPageIndex(pageRef) { - var xref = this.xref; - - function pagesBeforeRef(kidRef) { - var total = 0, - parentRef; - return xref.fetchAsync(kidRef).then(function (node) { - if ((0, _primitives.isRefsEqual)(kidRef, pageRef) && !(0, _primitives.isDict)(node, 'Page') && !((0, _primitives.isDict)(node) && !node.has('Type') && node.has('Contents'))) { - throw new _util.FormatError('The reference does not point to a /Page dictionary.'); - } - - if (!node) { - return null; - } - - if (!(0, _primitives.isDict)(node)) { - throw new _util.FormatError('Node must be a dictionary.'); - } - - parentRef = node.getRaw('Parent'); - return node.getAsync('Parent'); - }).then(function (parent) { - if (!parent) { - return null; - } - - if (!(0, _primitives.isDict)(parent)) { - throw new _util.FormatError('Parent must be a dictionary.'); - } - - return parent.getAsync('Kids'); - }).then(function (kids) { - if (!kids) { - return null; - } - - var kidPromises = []; - var found = false; - - for (var i = 0, ii = kids.length; i < ii; i++) { - var kid = kids[i]; - - if (!(0, _primitives.isRef)(kid)) { - throw new _util.FormatError('Kid must be a reference.'); - } - - if ((0, _primitives.isRefsEqual)(kid, kidRef)) { - found = true; - break; - } - - kidPromises.push(xref.fetchAsync(kid).then(function (kid) { - if (!(0, _primitives.isDict)(kid)) { - throw new _util.FormatError('Kid node must be a dictionary.'); - } - - if (kid.has('Count')) { - total += kid.get('Count'); - } else { - total++; - } - })); - } - - if (!found) { - throw new _util.FormatError('Kid reference not found in parent\'s kids.'); - } - - return Promise.all(kidPromises).then(function () { - return [total, parentRef]; - }); - }); - } - - var total = 0; - - function next(ref) { - return pagesBeforeRef(ref).then(function (args) { - if (!args) { - return total; - } - - var _args = _slicedToArray(args, 2), - count = _args[0], - parentRef = _args[1]; - - total += count; - return next(parentRef); - }); - } - - return next(pageRef); - } - }, { - key: "metadata", - get: function get() { - var streamRef = this.catDict.getRaw('Metadata'); - - if (!(0, _primitives.isRef)(streamRef)) { - return (0, _util.shadow)(this, 'metadata', null); - } - - var suppressEncryption = !(this.xref.encrypt && this.xref.encrypt.encryptMetadata); - var stream = this.xref.fetch(streamRef, suppressEncryption); - var metadata; - - if (stream && (0, _primitives.isDict)(stream.dict)) { - var type = stream.dict.get('Type'); - var subtype = stream.dict.get('Subtype'); - - if ((0, _primitives.isName)(type, 'Metadata') && (0, _primitives.isName)(subtype, 'XML')) { - try { - metadata = (0, _util.stringToUTF8String)((0, _util.bytesToString)(stream.getBytes())); - } catch (e) { - if (e instanceof _core_utils.MissingDataException) { - throw e; - } - - (0, _util.info)('Skipping invalid metadata.'); - } - } - } - - return (0, _util.shadow)(this, 'metadata', metadata); - } - }, { - key: "toplevelPagesDict", - get: function get() { - var pagesObj = this.catDict.get('Pages'); - - if (!(0, _primitives.isDict)(pagesObj)) { - throw new _util.FormatError('Invalid top-level pages dictionary.'); - } - - return (0, _util.shadow)(this, 'toplevelPagesDict', pagesObj); - } - }, { - key: "documentOutline", - get: function get() { - var obj = null; - - try { - obj = this._readDocumentOutline(); - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)('Unable to read document outline.'); - } - - return (0, _util.shadow)(this, 'documentOutline', obj); - } - }, { - key: "permissions", - get: function get() { - var permissions = null; - - try { - permissions = this._readPermissions(); - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)('Unable to read permissions.'); - } - - return (0, _util.shadow)(this, 'permissions', permissions); - } - }, { - key: "numPages", - get: function get() { - var obj = this.toplevelPagesDict.get('Count'); - - if (!Number.isInteger(obj)) { - throw new _util.FormatError('Page count in top-level pages dictionary is not an integer.'); - } - - return (0, _util.shadow)(this, 'numPages', obj); - } - }, { - key: "destinations", - get: function get() { - var obj = this._readDests(), - dests = Object.create(null); - - if (obj instanceof NameTree) { - var names = obj.getAll(); - - for (var name in names) { - dests[name] = fetchDestination(names[name]); - } - } else if (obj instanceof _primitives.Dict) { - obj.forEach(function (key, value) { - if (value) { - dests[key] = fetchDestination(value); - } - }); - } - - return (0, _util.shadow)(this, 'destinations', dests); - } - }, { - key: "pageLabels", - get: function get() { - var obj = null; - - try { - obj = this._readPageLabels(); - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)('Unable to read page labels.'); - } - - return (0, _util.shadow)(this, 'pageLabels', obj); - } - }, { - key: "pageLayout", - get: function get() { - var obj = this.catDict.get('PageLayout'); - var pageLayout = ''; - - if ((0, _primitives.isName)(obj)) { - switch (obj.name) { - case 'SinglePage': - case 'OneColumn': - case 'TwoColumnLeft': - case 'TwoColumnRight': - case 'TwoPageLeft': - case 'TwoPageRight': - pageLayout = obj.name; - } - } - - return (0, _util.shadow)(this, 'pageLayout', pageLayout); - } - }, { - key: "pageMode", - get: function get() { - var obj = this.catDict.get('PageMode'); - var pageMode = 'UseNone'; - - if ((0, _primitives.isName)(obj)) { - switch (obj.name) { - case 'UseNone': - case 'UseOutlines': - case 'UseThumbs': - case 'FullScreen': - case 'UseOC': - case 'UseAttachments': - pageMode = obj.name; - } - } - - return (0, _util.shadow)(this, 'pageMode', pageMode); - } - }, { - key: "viewerPreferences", - get: function get() { - var _this2 = this; - - var ViewerPreferencesValidators = { - HideToolbar: _util.isBool, - HideMenubar: _util.isBool, - HideWindowUI: _util.isBool, - FitWindow: _util.isBool, - CenterWindow: _util.isBool, - DisplayDocTitle: _util.isBool, - NonFullScreenPageMode: _primitives.isName, - Direction: _primitives.isName, - ViewArea: _primitives.isName, - ViewClip: _primitives.isName, - PrintArea: _primitives.isName, - PrintClip: _primitives.isName, - PrintScaling: _primitives.isName, - Duplex: _primitives.isName, - PickTrayByPDFSize: _util.isBool, - PrintPageRange: Array.isArray, - NumCopies: Number.isInteger - }; - var obj = this.catDict.get('ViewerPreferences'); - var prefs = Object.create(null); - - if ((0, _primitives.isDict)(obj)) { - for (var key in ViewerPreferencesValidators) { - if (!obj.has(key)) { - continue; - } - - var value = obj.get(key); - - if (!ViewerPreferencesValidators[key](value)) { - (0, _util.info)("Bad value in ViewerPreferences for \"".concat(key, "\".")); - continue; - } - - var prefValue = void 0; - - switch (key) { - case 'NonFullScreenPageMode': - switch (value.name) { - case 'UseNone': - case 'UseOutlines': - case 'UseThumbs': - case 'UseOC': - prefValue = value.name; - break; - - default: - prefValue = 'UseNone'; - } - - break; - - case 'Direction': - switch (value.name) { - case 'L2R': - case 'R2L': - prefValue = value.name; - break; - - default: - prefValue = 'L2R'; - } - - break; - - case 'ViewArea': - case 'ViewClip': - case 'PrintArea': - case 'PrintClip': - switch (value.name) { - case 'MediaBox': - case 'CropBox': - case 'BleedBox': - case 'TrimBox': - case 'ArtBox': - prefValue = value.name; - break; - - default: - prefValue = 'CropBox'; - } - - break; - - case 'PrintScaling': - switch (value.name) { - case 'None': - case 'AppDefault': - prefValue = value.name; - break; - - default: - prefValue = 'AppDefault'; - } - - break; - - case 'Duplex': - switch (value.name) { - case 'Simplex': - case 'DuplexFlipShortEdge': - case 'DuplexFlipLongEdge': - prefValue = value.name; - break; - - default: - prefValue = 'None'; - } - - break; - - case 'PrintPageRange': - var length = value.length; - - if (length % 2 !== 0) { - break; - } - - var isValid = value.every(function (page, i, arr) { - return Number.isInteger(page) && page > 0 && (i === 0 || page >= arr[i - 1]) && page <= _this2.numPages; - }); - - if (isValid) { - prefValue = value; - } - - break; - - case 'NumCopies': - if (value > 0) { - prefValue = value; - } - - break; - - default: - (0, _util.assert)(typeof value === 'boolean'); - prefValue = value; - } - - if (prefValue !== undefined) { - prefs[key] = prefValue; - } else { - (0, _util.info)("Bad value in ViewerPreferences for \"".concat(key, "\".")); - } - } - } - - return (0, _util.shadow)(this, 'viewerPreferences', prefs); - } - }, { - key: "openActionDestination", - get: function get() { - var obj = this.catDict.get('OpenAction'); - var openActionDest = null; - - if ((0, _primitives.isDict)(obj)) { - var destDict = new _primitives.Dict(this.xref); - destDict.set('A', obj); - var resultObj = { - url: null, - dest: null - }; - Catalog.parseDestDictionary({ - destDict: destDict, - resultObj: resultObj - }); - - if (Array.isArray(resultObj.dest)) { - openActionDest = resultObj.dest; - } - } else if (Array.isArray(obj)) { - openActionDest = obj; - } - - return (0, _util.shadow)(this, 'openActionDestination', openActionDest); - } - }, { - key: "attachments", - get: function get() { - var obj = this.catDict.get('Names'); - var attachments = null; - - if (obj && obj.has('EmbeddedFiles')) { - var nameTree = new NameTree(obj.getRaw('EmbeddedFiles'), this.xref); - var names = nameTree.getAll(); - - for (var name in names) { - var fs = new FileSpec(names[name], this.xref); - - if (!attachments) { - attachments = Object.create(null); - } - - attachments[(0, _util.stringToPDFString)(name)] = fs.serializable; - } - } - - return (0, _util.shadow)(this, 'attachments', attachments); - } - }, { - key: "javaScript", - get: function get() { - var obj = this.catDict.get('Names'); - var javaScript = null; - - function appendIfJavaScriptDict(jsDict) { - var type = jsDict.get('S'); - - if (!(0, _primitives.isName)(type, 'JavaScript')) { - return; - } - - var js = jsDict.get('JS'); - - if ((0, _primitives.isStream)(js)) { - js = (0, _util.bytesToString)(js.getBytes()); - } else if (!(0, _util.isString)(js)) { - return; - } - - if (!javaScript) { - javaScript = []; - } - - javaScript.push((0, _util.stringToPDFString)(js)); - } - - if (obj && obj.has('JavaScript')) { - var nameTree = new NameTree(obj.getRaw('JavaScript'), this.xref); - var names = nameTree.getAll(); - - for (var name in names) { - var jsDict = names[name]; - - if ((0, _primitives.isDict)(jsDict)) { - appendIfJavaScriptDict(jsDict); - } - } - } - - var openActionDict = this.catDict.get('OpenAction'); - - if ((0, _primitives.isDict)(openActionDict, 'Action')) { - var actionType = openActionDict.get('S'); - - if ((0, _primitives.isName)(actionType, 'Named')) { - var action = openActionDict.get('N'); - - if ((0, _primitives.isName)(action, 'Print')) { - if (!javaScript) { - javaScript = []; - } - - javaScript.push('print({});'); - } - } else { - appendIfJavaScriptDict(openActionDict); - } - } - - return (0, _util.shadow)(this, 'javaScript', javaScript); - } - }], [{ - key: "parseDestDictionary", - value: function parseDestDictionary(params) { - function addDefaultProtocolToUrl(url) { - return url.startsWith('www.') ? "http://".concat(url) : url; - } - - function tryConvertUrlEncoding(url) { - try { - return (0, _util.stringToUTF8String)(url); - } catch (e) { - return url; - } - } - - var destDict = params.destDict; - - if (!(0, _primitives.isDict)(destDict)) { - (0, _util.warn)('parseDestDictionary: `destDict` must be a dictionary.'); - return; - } - - var resultObj = params.resultObj; - - if (_typeof(resultObj) !== 'object') { - (0, _util.warn)('parseDestDictionary: `resultObj` must be an object.'); - return; - } - - var docBaseUrl = params.docBaseUrl || null; - var action = destDict.get('A'), - url, - dest; - - if (!(0, _primitives.isDict)(action) && destDict.has('Dest')) { - action = destDict.get('Dest'); - } - - if ((0, _primitives.isDict)(action)) { - var actionType = action.get('S'); - - if (!(0, _primitives.isName)(actionType)) { - (0, _util.warn)('parseDestDictionary: Invalid type in Action dictionary.'); - return; - } - - var actionName = actionType.name; - - switch (actionName) { - case 'URI': - url = action.get('URI'); - - if ((0, _primitives.isName)(url)) { - url = '/' + url.name; - } else if ((0, _util.isString)(url)) { - url = addDefaultProtocolToUrl(url); - } - - break; - - case 'GoTo': - dest = action.get('D'); - break; - - case 'Launch': - case 'GoToR': - var urlDict = action.get('F'); - - if ((0, _primitives.isDict)(urlDict)) { - url = urlDict.get('F') || null; - } else if ((0, _util.isString)(urlDict)) { - url = urlDict; - } - - var remoteDest = action.get('D'); - - if (remoteDest) { - if ((0, _primitives.isName)(remoteDest)) { - remoteDest = remoteDest.name; - } - - if ((0, _util.isString)(url)) { - var baseUrl = url.split('#')[0]; - - if ((0, _util.isString)(remoteDest)) { - url = baseUrl + '#' + remoteDest; - } else if (Array.isArray(remoteDest)) { - url = baseUrl + '#' + JSON.stringify(remoteDest); - } - } - } - - var newWindow = action.get('NewWindow'); - - if ((0, _util.isBool)(newWindow)) { - resultObj.newWindow = newWindow; - } - - break; - - case 'Named': - var namedAction = action.get('N'); - - if ((0, _primitives.isName)(namedAction)) { - resultObj.action = namedAction.name; - } - - break; - - case 'JavaScript': - var jsAction = action.get('JS'); - var js; - - if ((0, _primitives.isStream)(jsAction)) { - js = (0, _util.bytesToString)(jsAction.getBytes()); - } else if ((0, _util.isString)(jsAction)) { - js = jsAction; - } - - if (js) { - var URL_OPEN_METHODS = ['app.launchURL', 'window.open']; - var regex = new RegExp('^\\s*(' + URL_OPEN_METHODS.join('|').split('.').join('\\.') + ')\\((?:\'|\")([^\'\"]*)(?:\'|\")(?:,\\s*(\\w+)\\)|\\))', 'i'); - var jsUrl = regex.exec((0, _util.stringToPDFString)(js)); - - if (jsUrl && jsUrl[2]) { - url = jsUrl[2]; - - if (jsUrl[3] === 'true' && jsUrl[1] === 'app.launchURL') { - resultObj.newWindow = true; - } - - break; - } - } - - default: - (0, _util.warn)("parseDestDictionary: unsupported action type \"".concat(actionName, "\".")); - break; - } - } else if (destDict.has('Dest')) { - dest = destDict.get('Dest'); - } - - if ((0, _util.isString)(url)) { - url = tryConvertUrlEncoding(url); - var absoluteUrl = (0, _util.createValidAbsoluteUrl)(url, docBaseUrl); - - if (absoluteUrl) { - resultObj.url = absoluteUrl.href; - } - - resultObj.unsafeUrl = url; - } - - if (dest) { - if ((0, _primitives.isName)(dest)) { - dest = dest.name; - } - - if ((0, _util.isString)(dest) || Array.isArray(dest)) { - resultObj.dest = dest; - } - } - } - }]); - - return Catalog; -}(); - -exports.Catalog = Catalog; - -var XRef = function XRefClosure() { - function XRef(stream, pdfManager) { - this.stream = stream; - this.pdfManager = pdfManager; - this.entries = []; - this.xrefstms = Object.create(null); - this.cache = []; - this.stats = { - streamTypes: [], - fontTypes: [] - }; + return (0, _util.shadow)(this, "resources", resources instanceof _primitives.Dict ? resources : _primitives.Dict.empty); } - XRef.prototype = { - setStartXRef: function XRef_setStartXRef(startXRef) { - this.startXRefQueue = [startXRef]; - }, - parse: function XRef_parse(recoveryMode) { - var trailerDict; - - if (!recoveryMode) { - trailerDict = this.readXRef(); - } else { - (0, _util.warn)('Indexing all PDF objects'); - trailerDict = this.indexObjects(); - } - - trailerDict.assignXref(this); - this.trailer = trailerDict; - var encrypt; - - try { - encrypt = trailerDict.get('Encrypt'); - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)("XRef.parse - Invalid \"Encrypt\" reference: \"".concat(ex, "\".")); - } - - if ((0, _primitives.isDict)(encrypt)) { - var ids = trailerDict.get('ID'); - var fileId = ids && ids.length ? ids[0] : ''; - encrypt.suppressEncryption = true; - this.encrypt = new _crypto.CipherTransformFactory(encrypt, fileId, this.pdfManager.password); - } - - var root; - - try { - root = trailerDict.get('Root'); - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)("XRef.parse - Invalid \"Root\" reference: \"".concat(ex, "\".")); - } - - if ((0, _primitives.isDict)(root) && root.has('Pages')) { - this.root = root; - } else { - if (!recoveryMode) { - throw new _core_utils.XRefParseException(); - } - - throw new _util.FormatError('Invalid root reference'); - } - }, - processXRefTable: function XRef_processXRefTable(parser) { - if (!('tableState' in this)) { - this.tableState = { - entryNum: 0, - streamPos: parser.lexer.stream.pos, - parserBuf1: parser.buf1, - parserBuf2: parser.buf2 - }; - } - - var obj = this.readXRefTable(parser); - - if (!(0, _primitives.isCmd)(obj, 'trailer')) { - throw new _util.FormatError('Invalid XRef table: could not find trailer dictionary'); - } - - var dict = parser.getObj(); - - if (!(0, _primitives.isDict)(dict) && dict.dict) { - dict = dict.dict; - } - - if (!(0, _primitives.isDict)(dict)) { - throw new _util.FormatError('Invalid XRef table: could not parse trailer dictionary'); - } - - delete this.tableState; - return dict; - }, - readXRefTable: function XRef_readXRefTable(parser) { - var stream = parser.lexer.stream; - var tableState = this.tableState; - stream.pos = tableState.streamPos; - parser.buf1 = tableState.parserBuf1; - parser.buf2 = tableState.parserBuf2; - var obj; - - while (true) { - if (!('firstEntryNum' in tableState) || !('entryCount' in tableState)) { - if ((0, _primitives.isCmd)(obj = parser.getObj(), 'trailer')) { - break; - } - - tableState.firstEntryNum = obj; - tableState.entryCount = parser.getObj(); - } - - var first = tableState.firstEntryNum; - var count = tableState.entryCount; - - if (!Number.isInteger(first) || !Number.isInteger(count)) { - throw new _util.FormatError('Invalid XRef table: wrong types in subsection header'); - } - - for (var i = tableState.entryNum; i < count; i++) { - tableState.streamPos = stream.pos; - tableState.entryNum = i; - tableState.parserBuf1 = parser.buf1; - tableState.parserBuf2 = parser.buf2; - var entry = {}; - entry.offset = parser.getObj(); - entry.gen = parser.getObj(); - var type = parser.getObj(); - - if (type instanceof _primitives.Cmd) { - switch (type.cmd) { - case 'f': - entry.free = true; - break; - - case 'n': - entry.uncompressed = true; - break; - } - } - - if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) || !(entry.free || entry.uncompressed)) { - throw new _util.FormatError("Invalid entry in XRef subsection: ".concat(first, ", ").concat(count)); - } - - if (i === 0 && entry.free && first === 1) { - first = 0; - } - - if (!this.entries[i + first]) { - this.entries[i + first] = entry; - } - } - - tableState.entryNum = 0; - tableState.streamPos = stream.pos; - tableState.parserBuf1 = parser.buf1; - tableState.parserBuf2 = parser.buf2; - delete tableState.firstEntryNum; - delete tableState.entryCount; - } - - if (this.entries[0] && !this.entries[0].free) { - throw new _util.FormatError('Invalid XRef table: unexpected first object'); - } - - return obj; - }, - processXRefStream: function XRef_processXRefStream(stream) { - if (!('streamState' in this)) { - var streamParameters = stream.dict; - var byteWidths = streamParameters.get('W'); - var range = streamParameters.get('Index'); - - if (!range) { - range = [0, streamParameters.get('Size')]; - } - - this.streamState = { - entryRanges: range, - byteWidths: byteWidths, - entryNum: 0, - streamPos: stream.pos - }; - } - - this.readXRefStream(stream); - delete this.streamState; - return stream.dict; - }, - readXRefStream: function XRef_readXRefStream(stream) { - var i, j; - var streamState = this.streamState; - stream.pos = streamState.streamPos; - var byteWidths = streamState.byteWidths; - var typeFieldWidth = byteWidths[0]; - var offsetFieldWidth = byteWidths[1]; - var generationFieldWidth = byteWidths[2]; - var entryRanges = streamState.entryRanges; - - while (entryRanges.length > 0) { - var first = entryRanges[0]; - var n = entryRanges[1]; - - if (!Number.isInteger(first) || !Number.isInteger(n)) { - throw new _util.FormatError("Invalid XRef range fields: ".concat(first, ", ").concat(n)); - } - - if (!Number.isInteger(typeFieldWidth) || !Number.isInteger(offsetFieldWidth) || !Number.isInteger(generationFieldWidth)) { - throw new _util.FormatError("Invalid XRef entry fields length: ".concat(first, ", ").concat(n)); - } - - for (i = streamState.entryNum; i < n; ++i) { - streamState.entryNum = i; - streamState.streamPos = stream.pos; - var type = 0, - offset = 0, - generation = 0; - - for (j = 0; j < typeFieldWidth; ++j) { - type = type << 8 | stream.getByte(); - } - - if (typeFieldWidth === 0) { - type = 1; - } - - for (j = 0; j < offsetFieldWidth; ++j) { - offset = offset << 8 | stream.getByte(); - } - - for (j = 0; j < generationFieldWidth; ++j) { - generation = generation << 8 | stream.getByte(); - } - - var entry = {}; - entry.offset = offset; - entry.gen = generation; - - switch (type) { - case 0: - entry.free = true; - break; - - case 1: - entry.uncompressed = true; - break; - - case 2: - break; - - default: - throw new _util.FormatError("Invalid XRef entry type: ".concat(type)); - } - - if (!this.entries[first + i]) { - this.entries[first + i] = entry; - } - } - - streamState.entryNum = 0; - streamState.streamPos = stream.pos; - entryRanges.splice(0, 2); - } - }, - indexObjects: function XRef_indexObjects() { - var TAB = 0x9, - LF = 0xA, - CR = 0xD, - SPACE = 0x20; - var PERCENT = 0x25, - LT = 0x3C; - - function readToken(data, offset) { - var token = '', - ch = data[offset]; - - while (ch !== LF && ch !== CR && ch !== LT) { - if (++offset >= data.length) { - break; - } - - token += String.fromCharCode(ch); - ch = data[offset]; - } - - return token; - } - - function skipUntil(data, offset, what) { - var length = what.length, - dataLength = data.length; - var skipped = 0; - - while (offset < dataLength) { - var i = 0; - - while (i < length && data[offset + i] === what[i]) { - ++i; - } - - if (i >= length) { - break; - } - - offset++; - skipped++; - } - - return skipped; - } - - var objRegExp = /^(\d+)\s+(\d+)\s+obj\b/; - var endobjRegExp = /\bendobj[\b\s]$/; - var nestedObjRegExp = /\s+(\d+\s+\d+\s+obj[\b\s<])$/; - var CHECK_CONTENT_LENGTH = 25; - var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]); - var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]); - var objBytes = new Uint8Array([111, 98, 106]); - var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]); - this.entries.length = 0; - var stream = this.stream; - stream.pos = 0; - var buffer = stream.getBytes(); - var position = stream.start, - length = buffer.length; - var trailers = [], - xrefStms = []; - - while (position < length) { - var ch = buffer[position]; - - if (ch === TAB || ch === LF || ch === CR || ch === SPACE) { - ++position; - continue; - } - - if (ch === PERCENT) { - do { - ++position; - - if (position >= length) { - break; - } - - ch = buffer[position]; - } while (ch !== LF && ch !== CR); - - continue; - } - - var token = readToken(buffer, position); - var m; - - if (token.startsWith('xref') && (token.length === 4 || /\s/.test(token[4]))) { - position += skipUntil(buffer, position, trailerBytes); - trailers.push(position); - position += skipUntil(buffer, position, startxrefBytes); - } else if (m = objRegExp.exec(token)) { - var num = m[1] | 0, - gen = m[2] | 0; - - if (typeof this.entries[num] === 'undefined') { - this.entries[num] = { - offset: position - stream.start, - gen: gen, - uncompressed: true - }; - } - - var contentLength = void 0, - startPos = position + token.length; - - while (startPos < buffer.length) { - var endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4; - contentLength = endPos - position; - var checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos); - var tokenStr = (0, _util.bytesToString)(buffer.subarray(checkPos, endPos)); - - if (endobjRegExp.test(tokenStr)) { - break; - } else { - var objToken = nestedObjRegExp.exec(tokenStr); - - if (objToken && objToken[1]) { - (0, _util.warn)('indexObjects: Found new "obj" inside of another "obj", ' + 'caused by missing "endobj" -- trying to recover.'); - contentLength -= objToken[1].length; - break; - } - } - - startPos = endPos; - } - - var content = buffer.subarray(position, position + contentLength); - var xrefTagOffset = skipUntil(content, 0, xrefBytes); - - if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) { - xrefStms.push(position - stream.start); - this.xrefstms[position - stream.start] = 1; - } - - position += contentLength; - } else if (token.startsWith('trailer') && (token.length === 7 || /\s/.test(token[7]))) { - trailers.push(position); - position += skipUntil(buffer, position, startxrefBytes); - } else { - position += token.length + 1; - } - } - - var i, ii; - - for (i = 0, ii = xrefStms.length; i < ii; ++i) { - this.startXRefQueue.push(xrefStms[i]); - this.readXRef(true); - } - - var trailerDict; - - for (i = 0, ii = trailers.length; i < ii; ++i) { - stream.pos = trailers[i]; - var parser = new _parser.Parser({ - lexer: new _parser.Lexer(stream), - xref: this, - allowStreams: true, - recoveryMode: true - }); - var obj = parser.getObj(); - - if (!(0, _primitives.isCmd)(obj, 'trailer')) { - continue; - } - - var dict = parser.getObj(); - - if (!(0, _primitives.isDict)(dict)) { - continue; - } - - var rootDict = void 0; - - try { - rootDict = dict.get('Root'); - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - continue; - } - - if (!(0, _primitives.isDict)(rootDict) || !rootDict.has('Pages')) { - continue; - } - - if (dict.has('ID')) { - return dict; - } - - trailerDict = dict; - } - - if (trailerDict) { - return trailerDict; - } - - throw new _util.InvalidPDFException('Invalid PDF structure'); - }, - readXRef: function XRef_readXRef(recoveryMode) { - var stream = this.stream; - var startXRefParsedCache = Object.create(null); - - try { - while (this.startXRefQueue.length) { - var startXRef = this.startXRefQueue[0]; - - if (startXRefParsedCache[startXRef]) { - (0, _util.warn)('readXRef - skipping XRef table since it was already parsed.'); - this.startXRefQueue.shift(); - continue; - } - - startXRefParsedCache[startXRef] = true; - stream.pos = startXRef + stream.start; - var parser = new _parser.Parser({ - lexer: new _parser.Lexer(stream), - xref: this, - allowStreams: true - }); - var obj = parser.getObj(); - var dict; - - if ((0, _primitives.isCmd)(obj, 'xref')) { - dict = this.processXRefTable(parser); - - if (!this.topDict) { - this.topDict = dict; - } - - obj = dict.get('XRefStm'); - - if (Number.isInteger(obj)) { - var pos = obj; - - if (!(pos in this.xrefstms)) { - this.xrefstms[pos] = 1; - this.startXRefQueue.push(pos); - } - } - } else if (Number.isInteger(obj)) { - if (!Number.isInteger(parser.getObj()) || !(0, _primitives.isCmd)(parser.getObj(), 'obj') || !(0, _primitives.isStream)(obj = parser.getObj())) { - throw new _util.FormatError('Invalid XRef stream'); - } - - dict = this.processXRefStream(obj); - - if (!this.topDict) { - this.topDict = dict; - } - - if (!dict) { - throw new _util.FormatError('Failed to read XRef stream'); - } - } else { - throw new _util.FormatError('Invalid XRef stream header'); - } - - obj = dict.get('Prev'); - - if (Number.isInteger(obj)) { - this.startXRefQueue.push(obj); - } else if ((0, _primitives.isRef)(obj)) { - this.startXRefQueue.push(obj.num); - } - - this.startXRefQueue.shift(); - } - - return this.topDict; - } catch (e) { - if (e instanceof _core_utils.MissingDataException) { - throw e; - } - - (0, _util.info)('(while reading XRef): ' + e); - } - - if (recoveryMode) { - return undefined; - } - - throw new _core_utils.XRefParseException(); - }, - getEntry: function XRef_getEntry(i) { - var xrefEntry = this.entries[i]; - - if (xrefEntry && !xrefEntry.free && xrefEntry.offset) { - return xrefEntry; - } - - return null; - }, - fetchIfRef: function XRef_fetchIfRef(obj, suppressEncryption) { - if (!(0, _primitives.isRef)(obj)) { - return obj; - } - - return this.fetch(obj, suppressEncryption); - }, - fetch: function XRef_fetch(ref, suppressEncryption) { - if (!(0, _primitives.isRef)(ref)) { - throw new Error('ref object is not a reference'); - } - - var num = ref.num; - - if (num in this.cache) { - var cacheEntry = this.cache[num]; - - if (cacheEntry instanceof _primitives.Dict && !cacheEntry.objId) { - cacheEntry.objId = ref.toString(); - } - - return cacheEntry; - } - - var xrefEntry = this.getEntry(num); - - if (xrefEntry === null) { - return this.cache[num] = null; - } - - if (xrefEntry.uncompressed) { - xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption); - } else { - xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption); - } - - if ((0, _primitives.isDict)(xrefEntry)) { - xrefEntry.objId = ref.toString(); - } else if ((0, _primitives.isStream)(xrefEntry)) { - xrefEntry.dict.objId = ref.toString(); - } - - return xrefEntry; - }, - fetchUncompressed: function fetchUncompressed(ref, xrefEntry) { - var suppressEncryption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var gen = ref.gen; - var num = ref.num; - - if (xrefEntry.gen !== gen) { - throw new _core_utils.XRefEntryException("Inconsistent generation in XRef: ".concat(ref)); - } - - var stream = this.stream.makeSubStream(xrefEntry.offset + this.stream.start); - var parser = new _parser.Parser({ - lexer: new _parser.Lexer(stream), - xref: this, - allowStreams: true - }); - var obj1 = parser.getObj(); - var obj2 = parser.getObj(); - var obj3 = parser.getObj(); - - if (!Number.isInteger(obj1)) { - obj1 = parseInt(obj1, 10); - } - - if (!Number.isInteger(obj2)) { - obj2 = parseInt(obj2, 10); - } - - if (obj1 !== num || obj2 !== gen || !(obj3 instanceof _primitives.Cmd)) { - throw new _core_utils.XRefEntryException("Bad (uncompressed) XRef entry: ".concat(ref)); - } - - if (obj3.cmd !== 'obj') { - if (obj3.cmd.startsWith('obj')) { - num = parseInt(obj3.cmd.substring(3), 10); - - if (!Number.isNaN(num)) { - return num; - } - } - - throw new _core_utils.XRefEntryException("Bad (uncompressed) XRef entry: ".concat(ref)); - } - - if (this.encrypt && !suppressEncryption) { - xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen)); - } else { - xrefEntry = parser.getObj(); - } - - if (!(0, _primitives.isStream)(xrefEntry)) { - this.cache[num] = xrefEntry; - } - - return xrefEntry; - }, - fetchCompressed: function fetchCompressed(ref, xrefEntry) { - var suppressEncryption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var tableOffset = xrefEntry.offset; - var stream = this.fetch(_primitives.Ref.get(tableOffset, 0)); - - if (!(0, _primitives.isStream)(stream)) { - throw new _util.FormatError('bad ObjStm stream'); - } - - var first = stream.dict.get('First'); - var n = stream.dict.get('N'); - - if (!Number.isInteger(first) || !Number.isInteger(n)) { - throw new _util.FormatError('invalid first and n parameters for ObjStm stream'); - } - - var parser = new _parser.Parser({ - lexer: new _parser.Lexer(stream), - xref: this, - allowStreams: true - }); - var i, - entries = [], - num, - nums = []; - - for (i = 0; i < n; ++i) { - num = parser.getObj(); - - if (!Number.isInteger(num)) { - throw new _util.FormatError("invalid object number in the ObjStm stream: ".concat(num)); - } - - nums.push(num); - var offset = parser.getObj(); - - if (!Number.isInteger(offset)) { - throw new _util.FormatError("invalid object offset in the ObjStm stream: ".concat(offset)); - } - } - - for (i = 0; i < n; ++i) { - entries.push(parser.getObj()); - - if ((0, _primitives.isCmd)(parser.buf1, 'endobj')) { - parser.shift(); - } - - num = nums[i]; - var entry = this.entries[num]; - - if (entry && entry.offset === tableOffset && entry.gen === i) { - this.cache[num] = entries[i]; - } - } - - xrefEntry = entries[xrefEntry.gen]; - - if (xrefEntry === undefined) { - throw new _core_utils.XRefEntryException("Bad (compressed) XRef entry: ".concat(ref)); - } - - return xrefEntry; - }, - fetchIfRefAsync: function () { - var _fetchIfRefAsync = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee(obj, suppressEncryption) { - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if ((0, _primitives.isRef)(obj)) { - _context.next = 2; - break; - } - - return _context.abrupt("return", obj); - - case 2: - return _context.abrupt("return", this.fetchAsync(obj, suppressEncryption)); - - case 3: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function fetchIfRefAsync(_x, _x2) { - return _fetchIfRefAsync.apply(this, arguments); - } - - return fetchIfRefAsync; - }(), - fetchAsync: function () { - var _fetchAsync = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee2(ref, suppressEncryption) { - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _context2.prev = 0; - return _context2.abrupt("return", this.fetch(ref, suppressEncryption)); - - case 4: - _context2.prev = 4; - _context2.t0 = _context2["catch"](0); - - if (_context2.t0 instanceof _core_utils.MissingDataException) { - _context2.next = 8; - break; - } - - throw _context2.t0; - - case 8: - _context2.next = 10; - return this.pdfManager.requestRange(_context2.t0.begin, _context2.t0.end); - - case 10: - return _context2.abrupt("return", this.fetchAsync(ref, suppressEncryption)); - - case 11: - case "end": - return _context2.stop(); - } - } - }, _callee2, this, [[0, 4]]); - })); - - function fetchAsync(_x3, _x4) { - return _fetchAsync.apply(this, arguments); - } - - return fetchAsync; - }(), - getCatalogObj: function XRef_getCatalogObj() { - return this.root; - } - }; - return XRef; -}(); - -exports.XRef = XRef; - -var NameOrNumberTree = -/*#__PURE__*/ -function () { - function NameOrNumberTree(root, xref, type) { - _classCallCheck(this, NameOrNumberTree); - - if (this.constructor === NameOrNumberTree) { - (0, _util.unreachable)('Cannot initialize NameOrNumberTree.'); + _getBoundingBox(name) { + if (this.xfaData) { + return this.xfaData.bbox; } - this.root = root; - this.xref = xref; - this._type = type; - } + const box = this._getInheritableProperty(name, true); - _createClass(NameOrNumberTree, [{ - key: "getAll", - value: function getAll() { - var dict = Object.create(null); - - if (!this.root) { - return dict; + if (Array.isArray(box) && box.length === 4) { + if (box[2] - box[0] !== 0 && box[3] - box[1] !== 0) { + return box; } - var xref = this.xref; - var processed = new _primitives.RefSet(); - processed.put(this.root); - var queue = [this.root]; - - while (queue.length > 0) { - var obj = xref.fetchIfRef(queue.shift()); - - if (!(0, _primitives.isDict)(obj)) { - continue; - } - - if (obj.has('Kids')) { - var kids = obj.get('Kids'); - - for (var i = 0, ii = kids.length; i < ii; i++) { - var kid = kids[i]; - - if (processed.has(kid)) { - throw new _util.FormatError("Duplicate entry in \"".concat(this._type, "\" tree.")); - } - - queue.push(kid); - processed.put(kid); - } - - continue; - } - - var entries = obj.get(this._type); - - if (Array.isArray(entries)) { - for (var _i2 = 0, _ii = entries.length; _i2 < _ii; _i2 += 2) { - dict[xref.fetchIfRef(entries[_i2])] = xref.fetchIfRef(entries[_i2 + 1]); - } - } - } - - return dict; - } - }, { - key: "get", - value: function get(key) { - if (!this.root) { - return null; - } - - var xref = this.xref; - var kidsOrEntries = xref.fetchIfRef(this.root); - var loopCount = 0; - var MAX_LEVELS = 10; - - while (kidsOrEntries.has('Kids')) { - if (++loopCount > MAX_LEVELS) { - (0, _util.warn)("Search depth limit reached for \"".concat(this._type, "\" tree.")); - return null; - } - - var kids = kidsOrEntries.get('Kids'); - - if (!Array.isArray(kids)) { - return null; - } - - var l = 0, - r = kids.length - 1; - - while (l <= r) { - var m = l + r >> 1; - var kid = xref.fetchIfRef(kids[m]); - var limits = kid.get('Limits'); - - if (key < xref.fetchIfRef(limits[0])) { - r = m - 1; - } else if (key > xref.fetchIfRef(limits[1])) { - l = m + 1; - } else { - kidsOrEntries = xref.fetchIfRef(kids[m]); - break; - } - } - - if (l > r) { - return null; - } - } - - var entries = kidsOrEntries.get(this._type); - - if (Array.isArray(entries)) { - var _l = 0, - _r = entries.length - 2; - - while (_l <= _r) { - var tmp = _l + _r >> 1, - _m = tmp + (tmp & 1); - - var currentKey = xref.fetchIfRef(entries[_m]); - - if (key < currentKey) { - _r = _m - 2; - } else if (key > currentKey) { - _l = _m + 2; - } else { - return xref.fetchIfRef(entries[_m + 1]); - } - } - - (0, _util.info)("Falling back to an exhaustive search, for key \"".concat(key, "\", ") + "in \"".concat(this._type, "\" tree.")); - - for (var _m2 = 0, mm = entries.length; _m2 < mm; _m2 += 2) { - var _currentKey = xref.fetchIfRef(entries[_m2]); - - if (_currentKey === key) { - (0, _util.warn)("The \"".concat(key, "\" key was found at an incorrect, ") + "i.e. out-of-order, position in \"".concat(this._type, "\" tree.")); - return xref.fetchIfRef(entries[_m2 + 1]); - } - } - } - - return null; - } - }]); - - return NameOrNumberTree; -}(); - -var NameTree = -/*#__PURE__*/ -function (_NameOrNumberTree) { - _inherits(NameTree, _NameOrNumberTree); - - function NameTree(root, xref) { - _classCallCheck(this, NameTree); - - return _possibleConstructorReturn(this, _getPrototypeOf(NameTree).call(this, root, xref, 'Names')); - } - - return NameTree; -}(NameOrNumberTree); - -var NumberTree = -/*#__PURE__*/ -function (_NameOrNumberTree2) { - _inherits(NumberTree, _NameOrNumberTree2); - - function NumberTree(root, xref) { - _classCallCheck(this, NumberTree); - - return _possibleConstructorReturn(this, _getPrototypeOf(NumberTree).call(this, root, xref, 'Nums')); - } - - return NumberTree; -}(NameOrNumberTree); - -var FileSpec = function FileSpecClosure() { - function FileSpec(root, xref) { - if (!root || !(0, _primitives.isDict)(root)) { - return; - } - - this.xref = xref; - this.root = root; - - if (root.has('FS')) { - this.fs = root.get('FS'); - } - - this.description = root.has('Desc') ? (0, _util.stringToPDFString)(root.get('Desc')) : ''; - - if (root.has('RF')) { - (0, _util.warn)('Related file specifications are not supported'); - } - - this.contentAvailable = true; - - if (!root.has('EF')) { - this.contentAvailable = false; - (0, _util.warn)('Non-embedded file specifications are not supported'); - } - } - - function pickPlatformItem(dict) { - if (dict.has('UF')) { - return dict.get('UF'); - } else if (dict.has('F')) { - return dict.get('F'); - } else if (dict.has('Unix')) { - return dict.get('Unix'); - } else if (dict.has('Mac')) { - return dict.get('Mac'); - } else if (dict.has('DOS')) { - return dict.get('DOS'); + (0, _util.warn)(`Empty /${name} entry.`); } return null; } - FileSpec.prototype = { - get filename() { - if (!this._filename && this.root) { - var filename = pickPlatformItem(this.root) || 'unnamed'; - this._filename = (0, _util.stringToPDFString)(filename).replace(/\\\\/g, '\\').replace(/\\\//g, '/').replace(/\\/g, '/'); - } + get mediaBox() { + return (0, _util.shadow)(this, "mediaBox", this._getBoundingBox("MediaBox") || LETTER_SIZE_MEDIABOX); + } - return this._filename; - }, + get cropBox() { + return (0, _util.shadow)(this, "cropBox", this._getBoundingBox("CropBox") || this.mediaBox); + } - get content() { - if (!this.contentAvailable) { - return null; - } + get userUnit() { + let obj = this.pageDict.get("UserUnit"); - if (!this.contentRef && this.root) { - this.contentRef = pickPlatformItem(this.root.get('EF')); - } + if (typeof obj !== "number" || obj <= 0) { + obj = DEFAULT_USER_UNIT; + } - var content = null; + return (0, _util.shadow)(this, "userUnit", obj); + } - if (this.contentRef) { - var xref = this.xref; - var fileObj = xref.fetchIfRef(this.contentRef); + get view() { + const { + cropBox, + mediaBox + } = this; + let view; - if (fileObj && (0, _primitives.isStream)(fileObj)) { - content = fileObj.getBytes(); - } else { - (0, _util.warn)('Embedded file specification points to non-existing/invalid ' + 'content'); - } + if (cropBox === mediaBox || (0, _util.isArrayEqual)(cropBox, mediaBox)) { + view = mediaBox; + } else { + const box = _util.Util.intersect(cropBox, mediaBox); + + if (box && box[2] - box[0] !== 0 && box[3] - box[1] !== 0) { + view = box; } else { - (0, _util.warn)('Embedded file specification does not have a content'); - } - - return content; - }, - - get serializable() { - return { - filename: this.filename, - content: this.content - }; - } - - }; - return FileSpec; -}(); - -exports.FileSpec = FileSpec; - -var ObjectLoader = function () { - function mayHaveChildren(value) { - return (0, _primitives.isRef)(value) || (0, _primitives.isDict)(value) || Array.isArray(value) || (0, _primitives.isStream)(value); - } - - function addChildren(node, nodesToVisit) { - if ((0, _primitives.isDict)(node) || (0, _primitives.isStream)(node)) { - var dict = (0, _primitives.isDict)(node) ? node : node.dict; - var dictKeys = dict.getKeys(); - - for (var i = 0, ii = dictKeys.length; i < ii; i++) { - var rawValue = dict.getRaw(dictKeys[i]); - - if (mayHaveChildren(rawValue)) { - nodesToVisit.push(rawValue); - } - } - } else if (Array.isArray(node)) { - for (var _i3 = 0, _ii2 = node.length; _i3 < _ii2; _i3++) { - var value = node[_i3]; - - if (mayHaveChildren(value)) { - nodesToVisit.push(value); - } + (0, _util.warn)("Empty /CropBox and /MediaBox intersection."); } } + + return (0, _util.shadow)(this, "view", view || mediaBox); } - function ObjectLoader(dict, keys, xref) { - this.dict = dict; - this.keys = keys; - this.xref = xref; - this.refSet = null; - this.capability = null; + get rotate() { + let rotate = this._getInheritableProperty("Rotate") || 0; + + if (rotate % 90 !== 0) { + rotate = 0; + } else if (rotate >= 360) { + rotate %= 360; + } else if (rotate < 0) { + rotate = (rotate % 360 + 360) % 360; + } + + return (0, _util.shadow)(this, "rotate", rotate); } - ObjectLoader.prototype = { - load: function load() { - this.capability = (0, _util.createPromiseCapability)(); + _onSubStreamError(handler, reason, objId) { + if (this.evaluatorOptions.ignoreErrors) { + handler.send("UnsupportedFeature", { + featureId: _util.UNSUPPORTED_FEATURES.errorContentSubStream + }); + (0, _util.warn)(`getContentStream - ignoring sub-stream (${objId}): "${reason}".`); + return; + } - if (!(this.xref.stream instanceof _chunked_stream.ChunkedStream) || this.xref.stream.getMissingChunks().length === 0) { - this.capability.resolve(); - return this.capability.promise; + throw reason; + } + + getContentStream(handler) { + return this.pdfManager.ensure(this, "content").then(content => { + if (content instanceof _base_stream.BaseStream) { + return content; } - var keys = this.keys, - dict = this.dict; - this.refSet = new _primitives.RefSet(); - var nodesToVisit = []; + if (Array.isArray(content)) { + return new _decode_stream.StreamsSequenceStream(content, this._onSubStreamError.bind(this, handler)); + } - for (var i = 0, ii = keys.length; i < ii; i++) { - var rawValue = dict.getRaw(keys[i]); + return new _stream.NullStream(); + }); + } - if (rawValue !== undefined) { - nodesToVisit.push(rawValue); + get xfaData() { + return (0, _util.shadow)(this, "xfaData", this.xfaFactory ? { + bbox: this.xfaFactory.getBoundingBox(this.pageIndex) + } : null); + } + + async saveNewAnnotations(handler, task, annotations) { + if (this.xfaFactory) { + throw new Error("XFA: Cannot save new annotations."); + } + + const partialEvaluator = new _evaluator.PartialEvaluator({ + xref: this.xref, + handler, + pageIndex: this.pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalImageCache: this.globalImageCache, + options: this.evaluatorOptions + }); + const pageDict = this.pageDict; + const annotationsArray = this.annotations.slice(); + const newData = await _annotation.AnnotationFactory.saveNewAnnotations(partialEvaluator, task, annotations); + + for (const { + ref + } of newData.annotations) { + annotationsArray.push(ref); + } + + const savedDict = pageDict.get("Annots"); + pageDict.set("Annots", annotationsArray); + const buffer = []; + let transform = null; + + if (this.xref.encrypt) { + transform = this.xref.encrypt.createCipherTransform(this.ref.num, this.ref.gen); + } + + (0, _writer.writeObject)(this.ref, pageDict, buffer, transform); + + if (savedDict) { + pageDict.set("Annots", savedDict); + } + + const objects = newData.dependencies; + objects.push({ + ref: this.ref, + data: buffer.join("") + }, ...newData.annotations); + return objects; + } + + save(handler, task, annotationStorage) { + const partialEvaluator = new _evaluator.PartialEvaluator({ + xref: this.xref, + handler, + pageIndex: this.pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalImageCache: this.globalImageCache, + options: this.evaluatorOptions + }); + return this._parsedAnnotations.then(function (annotations) { + const newRefsPromises = []; + + for (const annotation of annotations) { + if (!annotation.mustBePrinted(annotationStorage)) { + continue; + } + + newRefsPromises.push(annotation.save(partialEvaluator, task, annotationStorage).catch(function (reason) { + (0, _util.warn)("save - ignoring annotation data during " + `"${task.name}" task: "${reason}".`); + return null; + })); + } + + return Promise.all(newRefsPromises).then(function (newRefs) { + return newRefs.filter(newRef => !!newRef); + }); + }); + } + + loadResources(keys) { + if (!this.resourcesPromise) { + this.resourcesPromise = this.pdfManager.ensure(this, "resources"); + } + + return this.resourcesPromise.then(() => { + const objectLoader = new _object_loader.ObjectLoader(this.resources, keys, this.xref); + return objectLoader.load(); + }); + } + + getOperatorList(_ref2) { + let { + handler, + sink, + task, + intent, + cacheKey, + annotationStorage = null + } = _ref2; + const contentStreamPromise = this.getContentStream(handler); + const resourcesPromise = this.loadResources(["ColorSpace", "ExtGState", "Font", "Pattern", "Properties", "Shading", "XObject"]); + const partialEvaluator = new _evaluator.PartialEvaluator({ + xref: this.xref, + handler, + pageIndex: this.pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalImageCache: this.globalImageCache, + options: this.evaluatorOptions + }); + const newAnnotationsByPage = !this.xfaFactory ? (0, _core_utils.getNewAnnotationsMap)(annotationStorage) : null; + let newAnnotationsPromise = Promise.resolve(null); + + if (newAnnotationsByPage) { + const newAnnotations = newAnnotationsByPage.get(this.pageIndex); + + if (newAnnotations) { + newAnnotationsPromise = _annotation.AnnotationFactory.printNewAnnotations(partialEvaluator, task, newAnnotations); + } + } + + const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]); + const pageListPromise = dataPromises.then(_ref3 => { + let [contentStream] = _ref3; + const opList = new _operator_list.OperatorList(intent, sink); + handler.send("StartRenderPage", { + transparency: partialEvaluator.hasBlendModes(this.resources, this.nonBlendModesSet), + pageIndex: this.pageIndex, + cacheKey + }); + return partialEvaluator.getOperatorList({ + stream: contentStream, + task, + resources: this.resources, + operatorList: opList + }).then(function () { + return opList; + }); + }); + return Promise.all([pageListPromise, this._parsedAnnotations, newAnnotationsPromise]).then(function (_ref4) { + let [pageOpList, annotations, newAnnotations] = _ref4; + + if (newAnnotations) { + annotations = annotations.concat(newAnnotations); + } + + if (annotations.length === 0 || intent & _util.RenderingIntentFlag.ANNOTATIONS_DISABLE) { + pageOpList.flush(true); + return { + length: pageOpList.totalLength + }; + } + + const renderForms = !!(intent & _util.RenderingIntentFlag.ANNOTATIONS_FORMS), + intentAny = !!(intent & _util.RenderingIntentFlag.ANY), + intentDisplay = !!(intent & _util.RenderingIntentFlag.DISPLAY), + intentPrint = !!(intent & _util.RenderingIntentFlag.PRINT); + const opListPromises = []; + + for (const annotation of annotations) { + if (intentAny || intentDisplay && annotation.mustBeViewed(annotationStorage) || intentPrint && annotation.mustBePrinted(annotationStorage)) { + opListPromises.push(annotation.getOperatorList(partialEvaluator, task, intent, renderForms, annotationStorage).catch(function (reason) { + (0, _util.warn)("getOperatorList - ignoring annotation data during " + `"${task.name}" task: "${reason}".`); + return null; + })); } } - this._walk(nodesToVisit); + return Promise.all(opListPromises).then(function (opLists) { + let form = false, + canvas = false; - return this.capability.promise; - }, - _walk: function _walk(nodesToVisit) { - var _this3 = this; + for (const { + opList, + separateForm, + separateCanvas + } of opLists) { + pageOpList.addOpList(opList); - var nodesToRevisit = []; - var pendingRequests = []; + if (separateForm) { + form = separateForm; + } - while (nodesToVisit.length) { - var currentNode = nodesToVisit.pop(); + if (separateCanvas) { + canvas = separateCanvas; + } + } - if ((0, _primitives.isRef)(currentNode)) { - if (this.refSet.has(currentNode)) { + pageOpList.flush(true, { + form, + canvas + }); + return { + length: pageOpList.totalLength + }; + }); + }); + } + + extractTextContent(_ref5) { + let { + handler, + task, + includeMarkedContent, + sink, + combineTextItems + } = _ref5; + const contentStreamPromise = this.getContentStream(handler); + const resourcesPromise = this.loadResources(["ExtGState", "Font", "Properties", "XObject"]); + const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]); + return dataPromises.then(_ref6 => { + let [contentStream] = _ref6; + const partialEvaluator = new _evaluator.PartialEvaluator({ + xref: this.xref, + handler, + pageIndex: this.pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalImageCache: this.globalImageCache, + options: this.evaluatorOptions + }); + return partialEvaluator.getTextContent({ + stream: contentStream, + task, + resources: this.resources, + includeMarkedContent, + combineTextItems, + sink, + viewBox: this.view + }); + }); + } + + async getStructTree() { + const structTreeRoot = await this.pdfManager.ensureCatalog("structTreeRoot"); + + if (!structTreeRoot) { + return null; + } + + const structTree = await this.pdfManager.ensure(this, "_parseStructTree", [structTreeRoot]); + return structTree.serializable; + } + + _parseStructTree(structTreeRoot) { + const tree = new _struct_tree.StructTreePage(structTreeRoot, this.pageDict); + tree.parse(); + return tree; + } + + async getAnnotationsData(handler, task, intent) { + const annotations = await this._parsedAnnotations; + + if (annotations.length === 0) { + return []; + } + + const textContentPromises = []; + const annotationsData = []; + let partialEvaluator; + const intentAny = !!(intent & _util.RenderingIntentFlag.ANY), + intentDisplay = !!(intent & _util.RenderingIntentFlag.DISPLAY), + intentPrint = !!(intent & _util.RenderingIntentFlag.PRINT); + + for (const annotation of annotations) { + const isVisible = intentAny || intentDisplay && annotation.viewable; + + if (isVisible || intentPrint && annotation.printable) { + annotationsData.push(annotation.data); + } + + if (annotation.hasTextContent && isVisible) { + if (!partialEvaluator) { + partialEvaluator = new _evaluator.PartialEvaluator({ + xref: this.xref, + handler, + pageIndex: this.pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalImageCache: this.globalImageCache, + options: this.evaluatorOptions + }); + } + + textContentPromises.push(annotation.extractTextContent(partialEvaluator, task, this.view).catch(function (reason) { + (0, _util.warn)(`getAnnotationsData - ignoring textContent during "${task.name}" task: "${reason}".`); + })); + } + } + + await Promise.all(textContentPromises); + return annotationsData; + } + + get annotations() { + const annots = this._getInheritableProperty("Annots"); + + return (0, _util.shadow)(this, "annotations", Array.isArray(annots) ? annots : []); + } + + get _parsedAnnotations() { + const parsedAnnotations = this.pdfManager.ensure(this, "annotations").then(() => { + const annotationPromises = []; + + for (const annotationRef of this.annotations) { + annotationPromises.push(_annotation.AnnotationFactory.create(this.xref, annotationRef, this.pdfManager, this._localIdFactory, false).catch(function (reason) { + (0, _util.warn)(`_parsedAnnotations: "${reason}".`); + return null; + })); + } + + return Promise.all(annotationPromises).then(function (annotations) { + if (annotations.length === 0) { + return annotations; + } + + const sortedAnnotations = []; + let popupAnnotations; + + for (const annotation of annotations) { + if (!annotation) { continue; } - try { - this.refSet.put(currentNode); - currentNode = this.xref.fetch(currentNode); - } catch (ex) { - if (!(ex instanceof _core_utils.MissingDataException)) { - throw ex; + if (annotation instanceof _annotation.PopupAnnotation) { + if (!popupAnnotations) { + popupAnnotations = []; } - nodesToRevisit.push(currentNode); - pendingRequests.push({ - begin: ex.begin, - end: ex.end - }); + popupAnnotations.push(annotation); + continue; } + + sortedAnnotations.push(annotation); } - if (currentNode && currentNode.getBaseStreams) { - var baseStreams = currentNode.getBaseStreams(); - var foundMissingData = false; - - for (var i = 0, ii = baseStreams.length; i < ii; i++) { - var stream = baseStreams[i]; - - if (stream.getMissingChunks && stream.getMissingChunks().length) { - foundMissingData = true; - pendingRequests.push({ - begin: stream.start, - end: stream.end - }); - } - } - - if (foundMissingData) { - nodesToRevisit.push(currentNode); - } + if (popupAnnotations) { + sortedAnnotations.push(...popupAnnotations); } - addChildren(currentNode, nodesToVisit); + return sortedAnnotations; + }); + }); + return (0, _util.shadow)(this, "_parsedAnnotations", parsedAnnotations); + } + + get jsActions() { + const actions = (0, _core_utils.collectActions)(this.xref, this.pageDict, _util.PageActionEventType); + return (0, _util.shadow)(this, "jsActions", actions); + } + +} + +exports.Page = Page; +const PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]); +const STARTXREF_SIGNATURE = new Uint8Array([0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]); +const ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]); +const FINGERPRINT_FIRST_BYTES = 1024; +const EMPTY_FINGERPRINT = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; +const PDF_HEADER_VERSION_REGEXP = /^[1-9]\.\d$/; + +function find(stream, signature) { + let limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1024; + let backwards = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + const signatureLength = signature.length; + const scanBytes = stream.peekBytes(limit); + const scanLength = scanBytes.length - signatureLength; + + if (scanLength <= 0) { + return false; + } + + if (backwards) { + const signatureEnd = signatureLength - 1; + let pos = scanBytes.length - 1; + + while (pos >= signatureEnd) { + let j = 0; + + while (j < signatureLength && scanBytes[pos - j] === signature[signatureEnd - j]) { + j++; } - if (pendingRequests.length) { - this.xref.stream.manager.requestRanges(pendingRequests).then(function () { - for (var _i4 = 0, _ii3 = nodesToRevisit.length; _i4 < _ii3; _i4++) { - var node = nodesToRevisit[_i4]; + if (j >= signatureLength) { + stream.pos += pos - signatureEnd; + return true; + } - if ((0, _primitives.isRef)(node)) { - _this3.refSet.remove(node); - } + pos--; + } + } else { + let pos = 0; + + while (pos <= scanLength) { + let j = 0; + + while (j < signatureLength && scanBytes[pos + j] === signature[j]) { + j++; + } + + if (j >= signatureLength) { + stream.pos += pos; + return true; + } + + pos++; + } + } + + return false; +} + +class PDFDocument { + constructor(pdfManager, stream) { + if (stream.length <= 0) { + throw new _util.InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes."); + } + + this.pdfManager = pdfManager; + this.stream = stream; + this.xref = new _xref.XRef(stream, pdfManager); + this._pagePromises = new Map(); + this._version = null; + const idCounters = { + font: 0 + }; + this._globalIdFactory = class { + static getDocId() { + return `g_${pdfManager.docId}`; + } + + static createFontId() { + return `f${++idCounters.font}`; + } + + static createObjId() { + (0, _util.unreachable)("Abstract method `createObjId` called."); + } + + static getPageObjId() { + (0, _util.unreachable)("Abstract method `getPageObjId` called."); + } + + }; + } + + parse(recoveryMode) { + this.xref.parse(recoveryMode); + this.catalog = new _catalog.Catalog(this.pdfManager, this.xref); + + if (this.catalog.version) { + this._version = this.catalog.version; + } + } + + get linearization() { + let linearization = null; + + try { + linearization = _parser.Linearization.create(this.stream); + } catch (err) { + if (err instanceof _core_utils.MissingDataException) { + throw err; + } + + (0, _util.info)(err); + } + + return (0, _util.shadow)(this, "linearization", linearization); + } + + get startXRef() { + const stream = this.stream; + let startXRef = 0; + + if (this.linearization) { + stream.reset(); + + if (find(stream, ENDOBJ_SIGNATURE)) { + startXRef = stream.pos + 6 - stream.start; + } + } else { + const step = 1024; + const startXRefLength = STARTXREF_SIGNATURE.length; + let found = false, + pos = stream.end; + + while (!found && pos > 0) { + pos -= step - startXRefLength; + + if (pos < 0) { + pos = 0; + } + + stream.pos = pos; + found = find(stream, STARTXREF_SIGNATURE, step, true); + } + + if (found) { + stream.skip(9); + let ch; + + do { + ch = stream.getByte(); + } while ((0, _core_utils.isWhiteSpace)(ch)); + + let str = ""; + + while (ch >= 0x20 && ch <= 0x39) { + str += String.fromCharCode(ch); + ch = stream.getByte(); + } + + startXRef = parseInt(str, 10); + + if (isNaN(startXRef)) { + startXRef = 0; + } + } + } + + return (0, _util.shadow)(this, "startXRef", startXRef); + } + + checkHeader() { + const stream = this.stream; + stream.reset(); + + if (!find(stream, PDF_HEADER_SIGNATURE)) { + return; + } + + stream.moveStart(); + const MAX_PDF_VERSION_LENGTH = 12; + let version = "", + ch; + + while ((ch = stream.getByte()) > 0x20) { + if (version.length >= MAX_PDF_VERSION_LENGTH) { + break; + } + + version += String.fromCharCode(ch); + } + + if (!this._version) { + this._version = version.substring(5); + } + } + + parseStartXRef() { + this.xref.setStartXRef(this.startXRef); + } + + get numPages() { + let num = 0; + + if (this.catalog.hasActualNumPages) { + num = this.catalog.numPages; + } else if (this.xfaFactory) { + num = this.xfaFactory.getNumPages(); + } else if (this.linearization) { + num = this.linearization.numPages; + } else { + num = this.catalog.numPages; + } + + return (0, _util.shadow)(this, "numPages", num); + } + + _hasOnlyDocumentSignatures(fields) { + let recursionDepth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + const RECURSION_LIMIT = 10; + + if (!Array.isArray(fields)) { + return false; + } + + return fields.every(field => { + field = this.xref.fetchIfRef(field); + + if (!(field instanceof _primitives.Dict)) { + return false; + } + + if (field.has("Kids")) { + if (++recursionDepth > RECURSION_LIMIT) { + (0, _util.warn)("_hasOnlyDocumentSignatures: maximum recursion depth reached"); + return false; + } + + return this._hasOnlyDocumentSignatures(field.get("Kids"), recursionDepth); + } + + const isSignature = (0, _primitives.isName)(field.get("FT"), "Sig"); + const rectangle = field.get("Rect"); + const isInvisible = Array.isArray(rectangle) && rectangle.every(value => value === 0); + return isSignature && isInvisible; + }); + } + + get _xfaStreams() { + const acroForm = this.catalog.acroForm; + + if (!acroForm) { + return null; + } + + const xfa = acroForm.get("XFA"); + const entries = { + "xdp:xdp": "", + template: "", + datasets: "", + config: "", + connectionSet: "", + localeSet: "", + stylesheet: "", + "/xdp:xdp": "" + }; + + if (xfa instanceof _base_stream.BaseStream && !xfa.isEmpty) { + entries["xdp:xdp"] = xfa; + return entries; + } + + if (!Array.isArray(xfa) || xfa.length === 0) { + return null; + } + + for (let i = 0, ii = xfa.length; i < ii; i += 2) { + let name; + + if (i === 0) { + name = "xdp:xdp"; + } else if (i === ii - 2) { + name = "/xdp:xdp"; + } else { + name = xfa[i]; + } + + if (!entries.hasOwnProperty(name)) { + continue; + } + + const data = this.xref.fetchIfRef(xfa[i + 1]); + + if (!(data instanceof _base_stream.BaseStream) || data.isEmpty) { + continue; + } + + entries[name] = data; + } + + return entries; + } + + get xfaDatasets() { + const streams = this._xfaStreams; + + if (!streams) { + return (0, _util.shadow)(this, "xfaDatasets", null); + } + + for (const key of ["datasets", "xdp:xdp"]) { + const stream = streams[key]; + + if (!stream) { + continue; + } + + try { + const str = (0, _util.stringToUTF8String)(stream.getString()); + const data = { + [key]: str + }; + return (0, _util.shadow)(this, "xfaDatasets", new _dataset_reader.DatasetReader(data)); + } catch (_) { + (0, _util.warn)("XFA - Invalid utf-8 string."); + break; + } + } + + return (0, _util.shadow)(this, "xfaDatasets", null); + } + + get xfaData() { + const streams = this._xfaStreams; + + if (!streams) { + return null; + } + + const data = Object.create(null); + + for (const [key, stream] of Object.entries(streams)) { + if (!stream) { + continue; + } + + try { + data[key] = (0, _util.stringToUTF8String)(stream.getString()); + } catch (_) { + (0, _util.warn)("XFA - Invalid utf-8 string."); + return null; + } + } + + return data; + } + + get xfaFactory() { + let data; + + if (this.pdfManager.enableXfa && this.catalog.needsRendering && this.formInfo.hasXfa && !this.formInfo.hasAcroForm) { + data = this.xfaData; + } + + return (0, _util.shadow)(this, "xfaFactory", data ? new _factory.XFAFactory(data) : null); + } + + get isPureXfa() { + return this.xfaFactory ? this.xfaFactory.isValid() : false; + } + + get htmlForXfa() { + return this.xfaFactory ? this.xfaFactory.getPages() : null; + } + + async loadXfaImages() { + const xfaImagesDict = await this.pdfManager.ensureCatalog("xfaImages"); + + if (!xfaImagesDict) { + return; + } + + const keys = xfaImagesDict.getKeys(); + const objectLoader = new _object_loader.ObjectLoader(xfaImagesDict, keys, this.xref); + await objectLoader.load(); + const xfaImages = new Map(); + + for (const key of keys) { + const stream = xfaImagesDict.get(key); + + if (stream instanceof _base_stream.BaseStream) { + xfaImages.set(key, stream.getBytes()); + } + } + + this.xfaFactory.setImages(xfaImages); + } + + async loadXfaFonts(handler, task) { + const acroForm = await this.pdfManager.ensureCatalog("acroForm"); + + if (!acroForm) { + return; + } + + const resources = await acroForm.getAsync("DR"); + + if (!(resources instanceof _primitives.Dict)) { + return; + } + + const objectLoader = new _object_loader.ObjectLoader(resources, ["Font"], this.xref); + await objectLoader.load(); + const fontRes = resources.get("Font"); + + if (!(fontRes instanceof _primitives.Dict)) { + return; + } + + const options = Object.assign(Object.create(null), this.pdfManager.evaluatorOptions); + options.useSystemFonts = false; + const partialEvaluator = new _evaluator.PartialEvaluator({ + xref: this.xref, + handler, + pageIndex: -1, + idFactory: this._globalIdFactory, + fontCache: this.catalog.fontCache, + builtInCMapCache: this.catalog.builtInCMapCache, + standardFontDataCache: this.catalog.standardFontDataCache, + options + }); + const operatorList = new _operator_list.OperatorList(); + const pdfFonts = []; + const initialState = { + get font() { + return pdfFonts.at(-1); + }, + + set font(font) { + pdfFonts.push(font); + }, + + clone() { + return this; + } + + }; + const fonts = new Map(); + fontRes.forEach((fontName, font) => { + fonts.set(fontName, font); + }); + const promises = []; + + for (const [fontName, font] of fonts) { + const descriptor = font.get("FontDescriptor"); + + if (!(descriptor instanceof _primitives.Dict)) { + continue; + } + + let fontFamily = descriptor.get("FontFamily"); + fontFamily = fontFamily.replace(/[ ]+(\d)/g, "$1"); + const fontWeight = descriptor.get("FontWeight"); + const italicAngle = -descriptor.get("ItalicAngle"); + const cssFontInfo = { + fontFamily, + fontWeight, + italicAngle + }; + + if (!(0, _core_utils.validateCSSFont)(cssFontInfo)) { + continue; + } + + promises.push(partialEvaluator.handleSetFont(resources, [_primitives.Name.get(fontName), 1], null, operatorList, task, initialState, null, cssFontInfo).catch(function (reason) { + (0, _util.warn)(`loadXfaFonts: "${reason}".`); + return null; + })); + } + + await Promise.all(promises); + const missingFonts = this.xfaFactory.setFonts(pdfFonts); + + if (!missingFonts) { + return; + } + + options.ignoreErrors = true; + promises.length = 0; + pdfFonts.length = 0; + const reallyMissingFonts = new Set(); + + for (const missing of missingFonts) { + if (!(0, _xfa_fonts.getXfaFontName)(`${missing}-Regular`)) { + reallyMissingFonts.add(missing); + } + } + + if (reallyMissingFonts.size) { + missingFonts.push("PdfJS-Fallback"); + } + + for (const missing of missingFonts) { + if (reallyMissingFonts.has(missing)) { + continue; + } + + for (const fontInfo of [{ + name: "Regular", + fontWeight: 400, + italicAngle: 0 + }, { + name: "Bold", + fontWeight: 700, + italicAngle: 0 + }, { + name: "Italic", + fontWeight: 400, + italicAngle: 12 + }, { + name: "BoldItalic", + fontWeight: 700, + italicAngle: 12 + }]) { + const name = `${missing}-${fontInfo.name}`; + const dict = (0, _xfa_fonts.getXfaFontDict)(name); + promises.push(partialEvaluator.handleSetFont(resources, [_primitives.Name.get(name), 1], null, operatorList, task, initialState, dict, { + fontFamily: missing, + fontWeight: fontInfo.fontWeight, + italicAngle: fontInfo.italicAngle + }).catch(function (reason) { + (0, _util.warn)(`loadXfaFonts: "${reason}".`); + return null; + })); + } + } + + await Promise.all(promises); + this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts); + } + + async serializeXfaData(annotationStorage) { + return this.xfaFactory ? this.xfaFactory.serializeData(annotationStorage) : null; + } + + get formInfo() { + const formInfo = { + hasFields: false, + hasAcroForm: false, + hasXfa: false, + hasSignatures: false + }; + const acroForm = this.catalog.acroForm; + + if (!acroForm) { + return (0, _util.shadow)(this, "formInfo", formInfo); + } + + try { + const fields = acroForm.get("Fields"); + const hasFields = Array.isArray(fields) && fields.length > 0; + formInfo.hasFields = hasFields; + const xfa = acroForm.get("XFA"); + formInfo.hasXfa = Array.isArray(xfa) && xfa.length > 0 || xfa instanceof _base_stream.BaseStream && !xfa.isEmpty; + const sigFlags = acroForm.get("SigFlags"); + const hasSignatures = !!(sigFlags & 0x1); + + const hasOnlyDocumentSignatures = hasSignatures && this._hasOnlyDocumentSignatures(fields); + + formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures; + formInfo.hasSignatures = hasSignatures; + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.warn)(`Cannot fetch form information: "${ex}".`); + } + + return (0, _util.shadow)(this, "formInfo", formInfo); + } + + get documentInfo() { + let version = this._version; + + if (typeof version !== "string" || !PDF_HEADER_VERSION_REGEXP.test(version)) { + (0, _util.warn)(`Invalid PDF header version number: ${version}`); + version = null; + } + + const docInfo = { + PDFFormatVersion: version, + Language: this.catalog.lang, + EncryptFilterName: this.xref.encrypt ? this.xref.encrypt.filterName : null, + IsLinearized: !!this.linearization, + IsAcroFormPresent: this.formInfo.hasAcroForm, + IsXFAPresent: this.formInfo.hasXfa, + IsCollectionPresent: !!this.catalog.collection, + IsSignaturesPresent: this.formInfo.hasSignatures + }; + let infoDict; + + try { + infoDict = this.xref.trailer.get("Info"); + } catch (err) { + if (err instanceof _core_utils.MissingDataException) { + throw err; + } + + (0, _util.info)("The document information dictionary is invalid."); + } + + if (!(infoDict instanceof _primitives.Dict)) { + return (0, _util.shadow)(this, "documentInfo", docInfo); + } + + for (const key of infoDict.getKeys()) { + const value = infoDict.get(key); + + switch (key) { + case "Title": + case "Author": + case "Subject": + case "Keywords": + case "Creator": + case "Producer": + case "CreationDate": + case "ModDate": + if (typeof value === "string") { + docInfo[key] = (0, _util.stringToPDFString)(value); + continue; } - _this3._walk(nodesToRevisit); - }, this.capability.reject); + break; + + case "Trapped": + if (value instanceof _primitives.Name) { + docInfo[key] = value; + continue; + } + + break; + + default: + let customValue; + + switch (typeof value) { + case "string": + customValue = (0, _util.stringToPDFString)(value); + break; + + case "number": + case "boolean": + customValue = value; + break; + + default: + if (value instanceof _primitives.Name) { + customValue = value; + } + + break; + } + + if (customValue === undefined) { + (0, _util.warn)(`Bad value, for custom key "${key}", in Info: ${value}.`); + continue; + } + + if (!docInfo.Custom) { + docInfo.Custom = Object.create(null); + } + + docInfo.Custom[key] = customValue; + continue; + } + + (0, _util.warn)(`Bad value, for key "${key}", in Info: ${value}.`); + } + + return (0, _util.shadow)(this, "documentInfo", docInfo); + } + + get fingerprints() { + function validate(data) { + return typeof data === "string" && data.length > 0 && data !== EMPTY_FINGERPRINT; + } + + function hexString(hash) { + const buf = []; + + for (let i = 0, ii = hash.length; i < ii; i++) { + const hex = hash[i].toString(16); + buf.push(hex.padStart(2, "0")); + } + + return buf.join(""); + } + + const idArray = this.xref.trailer.get("ID"); + let hashOriginal, hashModified; + + if (Array.isArray(idArray) && validate(idArray[0])) { + hashOriginal = (0, _util.stringToBytes)(idArray[0]); + + if (idArray[1] !== idArray[0] && validate(idArray[1])) { + hashModified = (0, _util.stringToBytes)(idArray[1]); + } + } else { + hashOriginal = (0, _crypto.calculateMD5)(this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES); + } + + return (0, _util.shadow)(this, "fingerprints", [hexString(hashOriginal), hashModified ? hexString(hashModified) : null]); + } + + async _getLinearizationPage(pageIndex) { + const { + catalog, + linearization, + xref + } = this; + + const ref = _primitives.Ref.get(linearization.objectNumberFirst, 0); + + try { + const obj = await xref.fetchAsync(ref); + + if (obj instanceof _primitives.Dict) { + let type = obj.getRaw("Type"); + + if (type instanceof _primitives.Ref) { + type = await xref.fetchAsync(type); + } + + if ((0, _primitives.isName)(type, "Page") || !obj.has("Type") && !obj.has("Kids")) { + if (!catalog.pageKidsCountCache.has(ref)) { + catalog.pageKidsCountCache.put(ref, 1); + } + + if (!catalog.pageIndexCache.has(ref)) { + catalog.pageIndexCache.put(ref, 0); + } + + return [obj, ref]; + } + } + + throw new _util.FormatError("The Linearization dictionary doesn't point to a valid Page dictionary."); + } catch (reason) { + (0, _util.warn)(`_getLinearizationPage: "${reason.message}".`); + return catalog.getPageDict(pageIndex); + } + } + + getPage(pageIndex) { + const cachedPromise = this._pagePromises.get(pageIndex); + + if (cachedPromise) { + return cachedPromise; + } + + const { + catalog, + linearization, + xfaFactory + } = this; + let promise; + + if (xfaFactory) { + promise = Promise.resolve([_primitives.Dict.empty, null]); + } else if (linearization && linearization.pageFirst === pageIndex) { + promise = this._getLinearizationPage(pageIndex); + } else { + promise = catalog.getPageDict(pageIndex); + } + + promise = promise.then(_ref7 => { + let [pageDict, ref] = _ref7; + return new Page({ + pdfManager: this.pdfManager, + xref: this.xref, + pageIndex, + pageDict, + ref, + globalIdFactory: this._globalIdFactory, + fontCache: catalog.fontCache, + builtInCMapCache: catalog.builtInCMapCache, + standardFontDataCache: catalog.standardFontDataCache, + globalImageCache: catalog.globalImageCache, + nonBlendModesSet: catalog.nonBlendModesSet, + xfaFactory + }); + }); + + this._pagePromises.set(pageIndex, promise); + + return promise; + } + + async checkFirstPage() { + let recoveryMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + if (recoveryMode) { + return; + } + + try { + await this.getPage(0); + } catch (reason) { + if (reason instanceof _core_utils.XRefEntryException) { + this._pagePromises.delete(0); + + await this.cleanup(); + throw new _core_utils.XRefParseException(); + } + } + } + + async checkLastPage() { + let recoveryMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + const { + catalog, + pdfManager + } = this; + catalog.setActualNumPages(); + let numPages; + + try { + await Promise.all([pdfManager.ensureDoc("xfaFactory"), pdfManager.ensureDoc("linearization"), pdfManager.ensureCatalog("numPages")]); + + if (this.xfaFactory) { + return; + } else if (this.linearization) { + numPages = this.linearization.numPages; + } else { + numPages = catalog.numPages; + } + + if (!Number.isInteger(numPages)) { + throw new _util.FormatError("Page count is not an integer."); + } else if (numPages <= 1) { return; } - this.refSet = null; - this.capability.resolve(); - } - }; - return ObjectLoader; -}(); + await this.getPage(numPages - 1); + } catch (reason) { + this._pagePromises.delete(numPages - 1); -exports.ObjectLoader = ObjectLoader; + await this.cleanup(); + + if (reason instanceof _core_utils.XRefEntryException && !recoveryMode) { + throw new _core_utils.XRefParseException(); + } + + (0, _util.warn)(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`); + let pagesTree; + + try { + pagesTree = await catalog.getAllPageDicts(recoveryMode); + } catch (reasonAll) { + if (reasonAll instanceof _core_utils.XRefEntryException && !recoveryMode) { + throw new _core_utils.XRefParseException(); + } + + catalog.setActualNumPages(1); + return; + } + + for (const [pageIndex, [pageDict, ref]] of pagesTree) { + let promise; + + if (pageDict instanceof Error) { + promise = Promise.reject(pageDict); + promise.catch(() => {}); + } else { + promise = Promise.resolve(new Page({ + pdfManager, + xref: this.xref, + pageIndex, + pageDict, + ref, + globalIdFactory: this._globalIdFactory, + fontCache: catalog.fontCache, + builtInCMapCache: catalog.builtInCMapCache, + standardFontDataCache: catalog.standardFontDataCache, + globalImageCache: catalog.globalImageCache, + nonBlendModesSet: catalog.nonBlendModesSet, + xfaFactory: null + })); + } + + this._pagePromises.set(pageIndex, promise); + } + + catalog.setActualNumPages(pagesTree.size); + } + } + + fontFallback(id, handler) { + return this.catalog.fontFallback(id, handler); + } + + async cleanup() { + let manuallyTriggered = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + return this.catalog ? this.catalog.cleanup(manuallyTriggered) : (0, _cleanup_helper.clearGlobalCaches)(); + } + + _collectFieldObjects(name, fieldRef, promises) { + const field = this.xref.fetchIfRef(fieldRef); + + if (field.has("T")) { + const partName = (0, _util.stringToPDFString)(field.get("T")); + + if (name === "") { + name = partName; + } else { + name = `${name}.${partName}`; + } + } + + if (!promises.has(name)) { + promises.set(name, []); + } + + promises.get(name).push(_annotation.AnnotationFactory.create(this.xref, fieldRef, this.pdfManager, this._localIdFactory, true).then(annotation => annotation && annotation.getFieldObject()).catch(function (reason) { + (0, _util.warn)(`_collectFieldObjects: "${reason}".`); + return null; + })); + + if (field.has("Kids")) { + const kids = field.get("Kids"); + + for (const kid of kids) { + this._collectFieldObjects(name, kid, promises); + } + } + } + + get fieldObjects() { + if (!this.formInfo.hasFields) { + return (0, _util.shadow)(this, "fieldObjects", Promise.resolve(null)); + } + + const allFields = Object.create(null); + const fieldPromises = new Map(); + + for (const fieldRef of this.catalog.acroForm.get("Fields")) { + this._collectFieldObjects("", fieldRef, fieldPromises); + } + + const allPromises = []; + + for (const [name, promises] of fieldPromises) { + allPromises.push(Promise.all(promises).then(fields => { + fields = fields.filter(field => !!field); + + if (fields.length > 0) { + allFields[name] = fields; + } + })); + } + + return (0, _util.shadow)(this, "fieldObjects", Promise.all(allPromises).then(() => allFields)); + } + + get hasJSActions() { + const promise = this.pdfManager.ensureDoc("_parseHasJSActions"); + return (0, _util.shadow)(this, "hasJSActions", promise); + } + + async _parseHasJSActions() { + const [catalogJsActions, fieldObjects] = await Promise.all([this.pdfManager.ensureCatalog("jsActions"), this.pdfManager.ensureDoc("fieldObjects")]); + + if (catalogJsActions) { + return true; + } + + if (fieldObjects) { + return Object.values(fieldObjects).some(fieldObject => fieldObject.some(object => object.actions !== null)); + } + + return false; + } + + get calculationOrderIds() { + const acroForm = this.catalog.acroForm; + + if (!acroForm || !acroForm.has("CO")) { + return (0, _util.shadow)(this, "calculationOrderIds", null); + } + + const calculationOrder = acroForm.get("CO"); + + if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) { + return (0, _util.shadow)(this, "calculationOrderIds", null); + } + + const ids = []; + + for (const id of calculationOrder) { + if (id instanceof _primitives.Ref) { + ids.push(id.toString()); + } + } + + if (ids.length === 0) { + return (0, _util.shadow)(this, "calculationOrderIds", null); + } + + return (0, _util.shadow)(this, "calculationOrderIds", ids); + } + +} + +exports.PDFDocument = PDFDocument; /***/ }), -/* 157 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 137 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true +})); +exports.PopupAnnotation = exports.MarkupAnnotation = exports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = void 0; +exports.getQuadPoints = getQuadPoints; + +var _util = __w_pdfjs_require__(2); + +var _core_utils = __w_pdfjs_require__(131); + +var _default_appearance = __w_pdfjs_require__(138); + +var _primitives = __w_pdfjs_require__(130); + +var _writer = __w_pdfjs_require__(190); + +var _base_stream = __w_pdfjs_require__(132); + +var _bidi = __w_pdfjs_require__(185); + +var _catalog = __w_pdfjs_require__(194); + +var _colorspace = __w_pdfjs_require__(139); + +var _file_spec = __w_pdfjs_require__(197); + +var _object_loader = __w_pdfjs_require__(200); + +var _operator_list = __w_pdfjs_require__(187); + +var _stream = __w_pdfjs_require__(135); + +var _factory = __w_pdfjs_require__(201); + +class AnnotationFactory { + static create(xref, ref, pdfManager, idFactory, collectFields) { + return Promise.all([pdfManager.ensureCatalog("acroForm"), pdfManager.ensureCatalog("baseUrl"), pdfManager.ensureDoc("xfaDatasets"), collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1]).then(_ref => { + let [acroForm, baseUrl, xfaDatasets, pageIndex] = _ref; + return pdfManager.ensure(this, "_create", [xref, ref, pdfManager, idFactory, acroForm, xfaDatasets, collectFields, pageIndex]); + }); + } + + static _create(xref, ref, pdfManager, idFactory, acroForm, xfaDatasets, collectFields) { + let pageIndex = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : -1; + const dict = xref.fetchIfRef(ref); + + if (!(dict instanceof _primitives.Dict)) { + return undefined; + } + + const id = ref instanceof _primitives.Ref ? ref.toString() : `annot_${idFactory.createObjId()}`; + let subtype = dict.get("Subtype"); + subtype = subtype instanceof _primitives.Name ? subtype.name : null; + const parameters = { + xref, + ref, + dict, + subtype, + id, + pdfManager, + acroForm: acroForm instanceof _primitives.Dict ? acroForm : _primitives.Dict.empty, + xfaDatasets, + collectFields, + pageIndex + }; + + switch (subtype) { + case "Link": + return new LinkAnnotation(parameters); + + case "Text": + return new TextAnnotation(parameters); + + case "Widget": + let fieldType = (0, _core_utils.getInheritableProperty)({ + dict, + key: "FT" + }); + fieldType = fieldType instanceof _primitives.Name ? fieldType.name : null; + + switch (fieldType) { + case "Tx": + return new TextWidgetAnnotation(parameters); + + case "Btn": + return new ButtonWidgetAnnotation(parameters); + + case "Ch": + return new ChoiceWidgetAnnotation(parameters); + + case "Sig": + return new SignatureWidgetAnnotation(parameters); + } + + (0, _util.warn)(`Unimplemented widget field type "${fieldType}", ` + "falling back to base field type."); + return new WidgetAnnotation(parameters); + + case "Popup": + return new PopupAnnotation(parameters); + + case "FreeText": + return new FreeTextAnnotation(parameters); + + case "Line": + return new LineAnnotation(parameters); + + case "Square": + return new SquareAnnotation(parameters); + + case "Circle": + return new CircleAnnotation(parameters); + + case "PolyLine": + return new PolylineAnnotation(parameters); + + case "Polygon": + return new PolygonAnnotation(parameters); + + case "Caret": + return new CaretAnnotation(parameters); + + case "Ink": + return new InkAnnotation(parameters); + + case "Highlight": + return new HighlightAnnotation(parameters); + + case "Underline": + return new UnderlineAnnotation(parameters); + + case "Squiggly": + return new SquigglyAnnotation(parameters); + + case "StrikeOut": + return new StrikeOutAnnotation(parameters); + + case "Stamp": + return new StampAnnotation(parameters); + + case "FileAttachment": + return new FileAttachmentAnnotation(parameters); + + default: + if (!collectFields) { + if (!subtype) { + (0, _util.warn)("Annotation is missing the required /Subtype."); + } else { + (0, _util.warn)(`Unimplemented annotation type "${subtype}", ` + "falling back to base annotation."); + } + } + + return new Annotation(parameters); + } + } + + static async _getPageIndex(xref, ref, pdfManager) { + try { + const annotDict = await xref.fetchIfRefAsync(ref); + + if (!(annotDict instanceof _primitives.Dict)) { + return -1; + } + + const pageRef = annotDict.getRaw("P"); + + if (!(pageRef instanceof _primitives.Ref)) { + return -1; + } + + const pageIndex = await pdfManager.ensureCatalog("getPageIndex", [pageRef]); + return pageIndex; + } catch (ex) { + (0, _util.warn)(`_getPageIndex: "${ex}".`); + return -1; + } + } + + static async saveNewAnnotations(evaluator, task, annotations) { + const xref = evaluator.xref; + let baseFontRef; + const dependencies = []; + const promises = []; + + for (const annotation of annotations) { + switch (annotation.annotationType) { + case _util.AnnotationEditorType.FREETEXT: + if (!baseFontRef) { + const baseFont = new _primitives.Dict(xref); + baseFont.set("BaseFont", _primitives.Name.get("Helvetica")); + baseFont.set("Type", _primitives.Name.get("Font")); + baseFont.set("Subtype", _primitives.Name.get("Type1")); + baseFont.set("Encoding", _primitives.Name.get("WinAnsiEncoding")); + const buffer = []; + baseFontRef = xref.getNewRef(); + (0, _writer.writeObject)(baseFontRef, baseFont, buffer, null); + dependencies.push({ + ref: baseFontRef, + data: buffer.join("") + }); + } + + promises.push(FreeTextAnnotation.createNewAnnotation(xref, annotation, dependencies, { + evaluator, + task, + baseFontRef + })); + break; + + case _util.AnnotationEditorType.INK: + promises.push(InkAnnotation.createNewAnnotation(xref, annotation, dependencies)); + } + } + + return { + annotations: await Promise.all(promises), + dependencies + }; + } + + static async printNewAnnotations(evaluator, task, annotations) { + if (!annotations) { + return null; + } + + const xref = evaluator.xref; + const promises = []; + + for (const annotation of annotations) { + switch (annotation.annotationType) { + case _util.AnnotationEditorType.FREETEXT: + promises.push(FreeTextAnnotation.createNewPrintAnnotation(xref, annotation, { + evaluator, + task + })); + break; + + case _util.AnnotationEditorType.INK: + promises.push(InkAnnotation.createNewPrintAnnotation(xref, annotation)); + break; + } + } + + return Promise.all(promises); + } + +} + +exports.AnnotationFactory = AnnotationFactory; + +function getRgbColor(color) { + let defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Uint8ClampedArray(3); + + if (!Array.isArray(color)) { + return defaultColor; + } + + const rgbColor = defaultColor || new Uint8ClampedArray(3); + + switch (color.length) { + case 0: + return null; + + case 1: + _colorspace.ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0); + + return rgbColor; + + case 3: + _colorspace.ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0); + + return rgbColor; + + case 4: + _colorspace.ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0); + + return rgbColor; + + default: + return defaultColor; + } +} + +function getQuadPoints(dict, rect) { + if (!dict.has("QuadPoints")) { + return null; + } + + const quadPoints = dict.getArray("QuadPoints"); + + if (!Array.isArray(quadPoints) || quadPoints.length === 0 || quadPoints.length % 8 > 0) { + return null; + } + + const quadPointsLists = []; + + for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) { + quadPointsLists.push([]); + + for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) { + const x = quadPoints[j]; + const y = quadPoints[j + 1]; + + if (rect !== null && (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])) { + return null; + } + + quadPointsLists[i].push({ + x, + y + }); + } + } + + return quadPointsLists.map(quadPointsList => { + const [minX, maxX, minY, maxY] = quadPointsList.reduce((_ref2, quadPoint) => { + let [mX, MX, mY, MY] = _ref2; + return [Math.min(mX, quadPoint.x), Math.max(MX, quadPoint.x), Math.min(mY, quadPoint.y), Math.max(MY, quadPoint.y)]; + }, [Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_VALUE, Number.MIN_VALUE]); + return [{ + x: minX, + y: maxY + }, { + x: maxX, + y: maxY + }, { + x: minX, + y: minY + }, { + x: maxX, + y: minY + }]; + }); +} + +function getTransformMatrix(rect, bbox, matrix) { + const [minX, minY, maxX, maxY] = _util.Util.getAxialAlignedBoundingBox(bbox, matrix); + + if (minX === maxX || minY === maxY) { + return [1, 0, 0, 1, rect[0], rect[1]]; + } + + const xRatio = (rect[2] - rect[0]) / (maxX - minX); + const yRatio = (rect[3] - rect[1]) / (maxY - minY); + return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio]; +} + +class Annotation { + constructor(params) { + const dict = params.dict; + this.setTitle(dict.get("T")); + this.setContents(dict.get("Contents")); + this.setModificationDate(dict.get("M")); + this.setFlags(dict.get("F")); + this.setRectangle(dict.getArray("Rect")); + this.setColor(dict.getArray("C")); + this.setBorderStyle(dict); + this.setAppearance(dict); + this.setOptionalContent(dict); + const MK = dict.get("MK"); + this.setBorderAndBackgroundColors(MK); + this.setRotation(MK); + this._streams = []; + + if (this.appearance) { + this._streams.push(this.appearance); + } + + this.data = { + annotationFlags: this.flags, + borderStyle: this.borderStyle, + color: this.color, + backgroundColor: this.backgroundColor, + borderColor: this.borderColor, + rotation: this.rotation, + contentsObj: this._contents, + hasAppearance: !!this.appearance, + id: params.id, + modificationDate: this.modificationDate, + rect: this.rectangle, + subtype: params.subtype, + hasOwnCanvas: false + }; + + if (params.collectFields) { + const kids = dict.get("Kids"); + + if (Array.isArray(kids)) { + const kidIds = []; + + for (const kid of kids) { + if (kid instanceof _primitives.Ref) { + kidIds.push(kid.toString()); + } + } + + if (kidIds.length !== 0) { + this.data.kidIds = kidIds; + } + } + + this.data.actions = (0, _core_utils.collectActions)(params.xref, dict, _util.AnnotationActionEventType); + this.data.fieldName = this._constructFieldName(dict); + this.data.pageIndex = params.pageIndex; + } + + this._fallbackFontDict = null; + } + + _hasFlag(flags, flag) { + return !!(flags & flag); + } + + _isViewable(flags) { + return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.NOVIEW); + } + + _isPrintable(flags) { + return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE); + } + + mustBeViewed(annotationStorage) { + const storageEntry = annotationStorage && annotationStorage.get(this.data.id); + + if (storageEntry && storageEntry.hidden !== undefined) { + return !storageEntry.hidden; + } + + return this.viewable && !this._hasFlag(this.flags, _util.AnnotationFlag.HIDDEN); + } + + mustBePrinted(annotationStorage) { + const storageEntry = annotationStorage && annotationStorage.get(this.data.id); + + if (storageEntry && storageEntry.print !== undefined) { + return storageEntry.print; + } + + return this.printable; + } + + get viewable() { + if (this.data.quadPoints === null) { + return false; + } + + if (this.flags === 0) { + return true; + } + + return this._isViewable(this.flags); + } + + get printable() { + if (this.data.quadPoints === null) { + return false; + } + + if (this.flags === 0) { + return false; + } + + return this._isPrintable(this.flags); + } + + _parseStringHelper(data) { + const str = typeof data === "string" ? (0, _util.stringToPDFString)(data) : ""; + const dir = str && (0, _bidi.bidi)(str).dir === "rtl" ? "rtl" : "ltr"; + return { + str, + dir + }; + } + + setTitle(title) { + this._title = this._parseStringHelper(title); + } + + setContents(contents) { + this._contents = this._parseStringHelper(contents); + } + + setModificationDate(modificationDate) { + this.modificationDate = typeof modificationDate === "string" ? modificationDate : null; + } + + setFlags(flags) { + this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0; + } + + hasFlag(flag) { + return this._hasFlag(this.flags, flag); + } + + setRectangle(rectangle) { + if (Array.isArray(rectangle) && rectangle.length === 4) { + this.rectangle = _util.Util.normalizeRect(rectangle); + } else { + this.rectangle = [0, 0, 0, 0]; + } + } + + setColor(color) { + this.color = getRgbColor(color); + } + + setLineEndings(lineEndings) { + this.lineEndings = ["None", "None"]; + + if (Array.isArray(lineEndings) && lineEndings.length === 2) { + for (let i = 0; i < 2; i++) { + const obj = lineEndings[i]; + + if (obj instanceof _primitives.Name) { + switch (obj.name) { + case "None": + continue; + + case "Square": + case "Circle": + case "Diamond": + case "OpenArrow": + case "ClosedArrow": + case "Butt": + case "ROpenArrow": + case "RClosedArrow": + case "Slash": + this.lineEndings[i] = obj.name; + continue; + } + } + + (0, _util.warn)(`Ignoring invalid lineEnding: ${obj}`); + } + } + } + + setRotation(mk) { + this.rotation = 0; + + if (mk instanceof _primitives.Dict) { + let angle = mk.get("R") || 0; + + if (Number.isInteger(angle) && angle !== 0) { + angle %= 360; + + if (angle < 0) { + angle += 360; + } + + if (angle % 90 === 0) { + this.rotation = angle; + } + } + } + } + + setBorderAndBackgroundColors(mk) { + if (mk instanceof _primitives.Dict) { + this.borderColor = getRgbColor(mk.getArray("BC"), null); + this.backgroundColor = getRgbColor(mk.getArray("BG"), null); + } else { + this.borderColor = this.backgroundColor = null; + } + } + + setBorderStyle(borderStyle) { + this.borderStyle = new AnnotationBorderStyle(); + + if (!(borderStyle instanceof _primitives.Dict)) { + return; + } + + if (borderStyle.has("BS")) { + const dict = borderStyle.get("BS"); + const dictType = dict.get("Type"); + + if (!dictType || (0, _primitives.isName)(dictType, "Border")) { + this.borderStyle.setWidth(dict.get("W"), this.rectangle); + this.borderStyle.setStyle(dict.get("S")); + this.borderStyle.setDashArray(dict.getArray("D")); + } + } else if (borderStyle.has("Border")) { + const array = borderStyle.getArray("Border"); + + if (Array.isArray(array) && array.length >= 3) { + this.borderStyle.setHorizontalCornerRadius(array[0]); + this.borderStyle.setVerticalCornerRadius(array[1]); + this.borderStyle.setWidth(array[2], this.rectangle); + + if (array.length === 4) { + this.borderStyle.setDashArray(array[3], true); + } + } + } else { + this.borderStyle.setWidth(0); + } + } + + setAppearance(dict) { + this.appearance = null; + const appearanceStates = dict.get("AP"); + + if (!(appearanceStates instanceof _primitives.Dict)) { + return; + } + + const normalAppearanceState = appearanceStates.get("N"); + + if (normalAppearanceState instanceof _base_stream.BaseStream) { + this.appearance = normalAppearanceState; + return; + } + + if (!(normalAppearanceState instanceof _primitives.Dict)) { + return; + } + + const as = dict.get("AS"); + + if (!(as instanceof _primitives.Name) || !normalAppearanceState.has(as.name)) { + return; + } + + this.appearance = normalAppearanceState.get(as.name); + } + + setOptionalContent(dict) { + this.oc = null; + const oc = dict.get("OC"); + + if (oc instanceof _primitives.Name) { + (0, _util.warn)("setOptionalContent: Support for /Name-entry is not implemented."); + } else if (oc instanceof _primitives.Dict) { + this.oc = oc; + } + } + + loadResources(keys, appearance) { + return appearance.dict.getAsync("Resources").then(resources => { + if (!resources) { + return undefined; + } + + const objectLoader = new _object_loader.ObjectLoader(resources, keys, resources.xref); + return objectLoader.load().then(function () { + return resources; + }); + }); + } + + async getOperatorList(evaluator, task, intent, renderForms, annotationStorage) { + const data = this.data; + let appearance = this.appearance; + const isUsingOwnCanvas = !!(this.data.hasOwnCanvas && intent & _util.RenderingIntentFlag.DISPLAY); + + if (!appearance) { + if (!isUsingOwnCanvas) { + return { + opList: new _operator_list.OperatorList(), + separateForm: false, + separateCanvas: false + }; + } + + appearance = new _stream.StringStream(""); + appearance.dict = new _primitives.Dict(); + } + + const appearanceDict = appearance.dict; + const resources = await this.loadResources(["ExtGState", "ColorSpace", "Pattern", "Shading", "XObject", "Font"], appearance); + const bbox = appearanceDict.getArray("BBox") || [0, 0, 1, 1]; + const matrix = appearanceDict.getArray("Matrix") || [1, 0, 0, 1, 0, 0]; + const transform = getTransformMatrix(data.rect, bbox, matrix); + const opList = new _operator_list.OperatorList(); + let optionalContent; + + if (this.oc) { + optionalContent = await evaluator.parseMarkedContentProps(this.oc, null); + } + + if (optionalContent !== undefined) { + opList.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]); + } + + opList.addOp(_util.OPS.beginAnnotation, [data.id, data.rect, transform, matrix, isUsingOwnCanvas]); + await evaluator.getOperatorList({ + stream: appearance, + task, + resources, + operatorList: opList, + fallbackFontDict: this._fallbackFontDict + }); + opList.addOp(_util.OPS.endAnnotation, []); + + if (optionalContent !== undefined) { + opList.addOp(_util.OPS.endMarkedContent, []); + } + + this.reset(); + return { + opList, + separateForm: false, + separateCanvas: isUsingOwnCanvas + }; + } + + async save(evaluator, task, annotationStorage) { + return null; + } + + get hasTextContent() { + return false; + } + + async extractTextContent(evaluator, task, viewBox) { + if (!this.appearance) { + return; + } + + const resources = await this.loadResources(["ExtGState", "Font", "Properties", "XObject"], this.appearance); + const text = []; + const buffer = []; + const sink = { + desiredSize: Math.Infinity, + ready: true, + + enqueue(chunk, size) { + for (const item of chunk.items) { + buffer.push(item.str); + + if (item.hasEOL) { + text.push(buffer.join("")); + buffer.length = 0; + } + } + } + + }; + await evaluator.getTextContent({ + stream: this.appearance, + task, + resources, + includeMarkedContent: true, + combineTextItems: true, + sink, + viewBox + }); + this.reset(); + + if (buffer.length) { + text.push(buffer.join("")); + } + + if (text.length > 0) { + this.data.textContent = text; + } + } + + getFieldObject() { + if (this.data.kidIds) { + return { + id: this.data.id, + actions: this.data.actions, + name: this.data.fieldName, + strokeColor: this.data.borderColor, + fillColor: this.data.backgroundColor, + type: "", + kidIds: this.data.kidIds, + page: this.data.pageIndex, + rotation: this.rotation + }; + } + + return null; + } + + reset() { + for (const stream of this._streams) { + stream.reset(); + } + } + + _constructFieldName(dict) { + if (!dict.has("T") && !dict.has("Parent")) { + (0, _util.warn)("Unknown field name, falling back to empty field name."); + return ""; + } + + if (!dict.has("Parent")) { + return (0, _util.stringToPDFString)(dict.get("T")); + } + + const fieldName = []; + + if (dict.has("T")) { + fieldName.unshift((0, _util.stringToPDFString)(dict.get("T"))); + } + + let loopDict = dict; + const visited = new _primitives.RefSet(); + + if (dict.objId) { + visited.put(dict.objId); + } + + while (loopDict.has("Parent")) { + loopDict = loopDict.get("Parent"); + + if (!(loopDict instanceof _primitives.Dict) || loopDict.objId && visited.has(loopDict.objId)) { + break; + } + + if (loopDict.objId) { + visited.put(loopDict.objId); + } + + if (loopDict.has("T")) { + fieldName.unshift((0, _util.stringToPDFString)(loopDict.get("T"))); + } + } + + return fieldName.join("."); + } + +} + +exports.Annotation = Annotation; + +class AnnotationBorderStyle { + constructor() { + this.width = 1; + this.style = _util.AnnotationBorderStyleType.SOLID; + this.dashArray = [3]; + this.horizontalCornerRadius = 0; + this.verticalCornerRadius = 0; + } + + setWidth(width) { + let rect = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0, 0, 0, 0]; + + if (width instanceof _primitives.Name) { + this.width = 0; + return; + } + + if (typeof width === "number") { + if (width > 0) { + const maxWidth = (rect[2] - rect[0]) / 2; + const maxHeight = (rect[3] - rect[1]) / 2; + + if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) { + (0, _util.warn)(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`); + width = 1; + } + } + + this.width = width; + } + } + + setStyle(style) { + if (!(style instanceof _primitives.Name)) { + return; + } + + switch (style.name) { + case "S": + this.style = _util.AnnotationBorderStyleType.SOLID; + break; + + case "D": + this.style = _util.AnnotationBorderStyleType.DASHED; + break; + + case "B": + this.style = _util.AnnotationBorderStyleType.BEVELED; + break; + + case "I": + this.style = _util.AnnotationBorderStyleType.INSET; + break; + + case "U": + this.style = _util.AnnotationBorderStyleType.UNDERLINE; + break; + + default: + break; + } + } + + setDashArray(dashArray) { + let forceStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (Array.isArray(dashArray) && dashArray.length > 0) { + let isValid = true; + let allZeros = true; + + for (const element of dashArray) { + const validNumber = +element >= 0; + + if (!validNumber) { + isValid = false; + break; + } else if (element > 0) { + allZeros = false; + } + } + + if (isValid && !allZeros) { + this.dashArray = dashArray; + + if (forceStyle) { + this.setStyle(_primitives.Name.get("D")); + } + } else { + this.width = 0; + } + } else if (dashArray) { + this.width = 0; + } + } + + setHorizontalCornerRadius(radius) { + if (Number.isInteger(radius)) { + this.horizontalCornerRadius = radius; + } + } + + setVerticalCornerRadius(radius) { + if (Number.isInteger(radius)) { + this.verticalCornerRadius = radius; + } + } + +} + +exports.AnnotationBorderStyle = AnnotationBorderStyle; + +class MarkupAnnotation extends Annotation { + constructor(parameters) { + super(parameters); + const dict = parameters.dict; + + if (dict.has("IRT")) { + const rawIRT = dict.getRaw("IRT"); + this.data.inReplyTo = rawIRT instanceof _primitives.Ref ? rawIRT.toString() : null; + const rt = dict.get("RT"); + this.data.replyType = rt instanceof _primitives.Name ? rt.name : _util.AnnotationReplyType.REPLY; + } + + if (this.data.replyType === _util.AnnotationReplyType.GROUP) { + const parent = dict.get("IRT"); + this.setTitle(parent.get("T")); + this.data.titleObj = this._title; + this.setContents(parent.get("Contents")); + this.data.contentsObj = this._contents; + + if (!parent.has("CreationDate")) { + this.data.creationDate = null; + } else { + this.setCreationDate(parent.get("CreationDate")); + this.data.creationDate = this.creationDate; + } + + if (!parent.has("M")) { + this.data.modificationDate = null; + } else { + this.setModificationDate(parent.get("M")); + this.data.modificationDate = this.modificationDate; + } + + this.data.hasPopup = parent.has("Popup"); + + if (!parent.has("C")) { + this.data.color = null; + } else { + this.setColor(parent.getArray("C")); + this.data.color = this.color; + } + } else { + this.data.titleObj = this._title; + this.setCreationDate(dict.get("CreationDate")); + this.data.creationDate = this.creationDate; + this.data.hasPopup = dict.has("Popup"); + + if (!dict.has("C")) { + this.data.color = null; + } + } + + if (dict.has("RC")) { + this.data.richText = _factory.XFAFactory.getRichTextAsHtml(dict.get("RC")); + } + } + + setCreationDate(creationDate) { + this.creationDate = typeof creationDate === "string" ? creationDate : null; + } + + _setDefaultAppearance(_ref3) { + let { + xref, + extra, + strokeColor, + fillColor, + blendMode, + strokeAlpha, + fillAlpha, + pointsCallback + } = _ref3; + let minX = Number.MAX_VALUE; + let minY = Number.MAX_VALUE; + let maxX = Number.MIN_VALUE; + let maxY = Number.MIN_VALUE; + const buffer = ["q"]; + + if (extra) { + buffer.push(extra); + } + + if (strokeColor) { + buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`); + } + + if (fillColor) { + buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`); + } + + let pointsArray = this.data.quadPoints; + + if (!pointsArray) { + pointsArray = [[{ + x: this.rectangle[0], + y: this.rectangle[3] + }, { + x: this.rectangle[2], + y: this.rectangle[3] + }, { + x: this.rectangle[0], + y: this.rectangle[1] + }, { + x: this.rectangle[2], + y: this.rectangle[1] + }]]; + } + + for (const points of pointsArray) { + const [mX, MX, mY, MY] = pointsCallback(buffer, points); + minX = Math.min(minX, mX); + maxX = Math.max(maxX, MX); + minY = Math.min(minY, mY); + maxY = Math.max(maxY, MY); + } + + buffer.push("Q"); + const formDict = new _primitives.Dict(xref); + const appearanceStreamDict = new _primitives.Dict(xref); + appearanceStreamDict.set("Subtype", _primitives.Name.get("Form")); + const appearanceStream = new _stream.StringStream(buffer.join(" ")); + appearanceStream.dict = appearanceStreamDict; + formDict.set("Fm0", appearanceStream); + const gsDict = new _primitives.Dict(xref); + + if (blendMode) { + gsDict.set("BM", _primitives.Name.get(blendMode)); + } + + if (typeof strokeAlpha === "number") { + gsDict.set("CA", strokeAlpha); + } + + if (typeof fillAlpha === "number") { + gsDict.set("ca", fillAlpha); + } + + const stateDict = new _primitives.Dict(xref); + stateDict.set("GS0", gsDict); + const resources = new _primitives.Dict(xref); + resources.set("ExtGState", stateDict); + resources.set("XObject", formDict); + const appearanceDict = new _primitives.Dict(xref); + appearanceDict.set("Resources", resources); + const bbox = this.data.rect = [minX, minY, maxX, maxY]; + appearanceDict.set("BBox", bbox); + this.appearance = new _stream.StringStream("/GS0 gs /Fm0 Do"); + this.appearance.dict = appearanceDict; + + this._streams.push(this.appearance, appearanceStream); + } + + static async createNewAnnotation(xref, annotation, dependencies, params) { + const annotationRef = xref.getNewRef(); + const apRef = xref.getNewRef(); + const annotationDict = this.createNewDict(annotation, xref, { + apRef + }); + const ap = await this.createNewAppearanceStream(annotation, xref, params); + const buffer = []; + let transform = xref.encrypt ? xref.encrypt.createCipherTransform(apRef.num, apRef.gen) : null; + (0, _writer.writeObject)(apRef, ap, buffer, transform); + dependencies.push({ + ref: apRef, + data: buffer.join("") + }); + buffer.length = 0; + transform = xref.encrypt ? xref.encrypt.createCipherTransform(annotationRef.num, annotationRef.gen) : null; + (0, _writer.writeObject)(annotationRef, annotationDict, buffer, transform); + return { + ref: annotationRef, + data: buffer.join("") + }; + } + + static async createNewPrintAnnotation(xref, annotation, params) { + const ap = await this.createNewAppearanceStream(annotation, xref, params); + const annotationDict = this.createNewDict(annotation, xref, { + ap + }); + return new this.prototype.constructor({ + dict: annotationDict, + xref + }); + } + +} + +exports.MarkupAnnotation = MarkupAnnotation; + +class WidgetAnnotation extends Annotation { + constructor(params) { + super(params); + const dict = params.dict; + const data = this.data; + this.ref = params.ref; + data.annotationType = _util.AnnotationType.WIDGET; + + if (data.fieldName === undefined) { + data.fieldName = this._constructFieldName(dict); + } + + if (data.actions === undefined) { + data.actions = (0, _core_utils.collectActions)(params.xref, dict, _util.AnnotationActionEventType); + } + + let fieldValue = (0, _core_utils.getInheritableProperty)({ + dict, + key: "V", + getArray: true + }); + data.fieldValue = this._decodeFormValue(fieldValue); + const defaultFieldValue = (0, _core_utils.getInheritableProperty)({ + dict, + key: "DV", + getArray: true + }); + data.defaultFieldValue = this._decodeFormValue(defaultFieldValue); + + if (fieldValue === undefined && params.xfaDatasets) { + const path = this._title.str; + + if (path) { + this._hasValueFromXFA = true; + data.fieldValue = fieldValue = params.xfaDatasets.getValue(path); + } + } + + if (fieldValue === undefined && data.defaultFieldValue !== null) { + data.fieldValue = data.defaultFieldValue; + } + + data.alternativeText = (0, _util.stringToPDFString)(dict.get("TU") || ""); + const defaultAppearance = (0, _core_utils.getInheritableProperty)({ + dict, + key: "DA" + }) || params.acroForm.get("DA"); + this._defaultAppearance = typeof defaultAppearance === "string" ? defaultAppearance : ""; + data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance); + const fieldType = (0, _core_utils.getInheritableProperty)({ + dict, + key: "FT" + }); + data.fieldType = fieldType instanceof _primitives.Name ? fieldType.name : null; + const localResources = (0, _core_utils.getInheritableProperty)({ + dict, + key: "DR" + }); + const acroFormResources = params.acroForm.get("DR"); + const appearanceResources = this.appearance && this.appearance.dict.get("Resources"); + this._fieldResources = { + localResources, + acroFormResources, + appearanceResources, + mergedResources: _primitives.Dict.merge({ + xref: params.xref, + dictArray: [localResources, appearanceResources, acroFormResources], + mergeSubDicts: true + }) + }; + data.fieldFlags = (0, _core_utils.getInheritableProperty)({ + dict, + key: "Ff" + }); + + if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) { + data.fieldFlags = 0; + } + + data.readOnly = this.hasFieldFlag(_util.AnnotationFieldFlag.READONLY); + data.required = this.hasFieldFlag(_util.AnnotationFieldFlag.REQUIRED); + data.hidden = this._hasFlag(data.annotationFlags, _util.AnnotationFlag.HIDDEN); + } + + _decodeFormValue(formValue) { + if (Array.isArray(formValue)) { + return formValue.filter(item => typeof item === "string").map(item => (0, _util.stringToPDFString)(item)); + } else if (formValue instanceof _primitives.Name) { + return (0, _util.stringToPDFString)(formValue.name); + } else if (typeof formValue === "string") { + return (0, _util.stringToPDFString)(formValue); + } + + return null; + } + + hasFieldFlag(flag) { + return !!(this.data.fieldFlags & flag); + } + + static _getRotationMatrix(rotation, width, height) { + switch (rotation) { + case 90: + return [0, 1, -1, 0, width, 0]; + + case 180: + return [-1, 0, 0, -1, width, height]; + + case 270: + return [0, -1, 1, 0, 0, height]; + + default: + throw new Error("Invalid rotation"); + } + } + + getRotationMatrix(annotationStorage) { + const storageEntry = annotationStorage ? annotationStorage.get(this.data.id) : undefined; + let rotation = storageEntry && storageEntry.rotation; + + if (rotation === undefined) { + rotation = this.rotation; + } + + if (rotation === 0) { + return _util.IDENTITY_MATRIX; + } + + const width = this.data.rect[2] - this.data.rect[0]; + const height = this.data.rect[3] - this.data.rect[1]; + return WidgetAnnotation._getRotationMatrix(rotation, width, height); + } + + getBorderAndBackgroundAppearances(annotationStorage) { + const storageEntry = annotationStorage ? annotationStorage.get(this.data.id) : undefined; + let rotation = storageEntry && storageEntry.rotation; + + if (rotation === undefined) { + rotation = this.rotation; + } + + if (!this.backgroundColor && !this.borderColor) { + return ""; + } + + const width = this.data.rect[2] - this.data.rect[0]; + const height = this.data.rect[3] - this.data.rect[1]; + const rect = rotation === 0 || rotation === 180 ? `0 0 ${width} ${height} re` : `0 0 ${height} ${width} re`; + let str = ""; + + if (this.backgroundColor) { + str = `${(0, _default_appearance.getPdfColor)(this.backgroundColor, true)} ${rect} f `; + } + + if (this.borderColor) { + const borderWidth = this.borderStyle.width || 1; + str += `${borderWidth} w ${(0, _default_appearance.getPdfColor)(this.borderColor, false)} ${rect} S `; + } + + return str; + } + + async getOperatorList(evaluator, task, intent, renderForms, annotationStorage) { + if (renderForms && !(this instanceof SignatureWidgetAnnotation)) { + return { + opList: new _operator_list.OperatorList(), + separateForm: true, + separateCanvas: false + }; + } + + if (!this._hasText) { + return super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage); + } + + const content = await this._getAppearance(evaluator, task, annotationStorage); + + if (this.appearance && content === null) { + return super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage); + } + + const opList = new _operator_list.OperatorList(); + + if (!this._defaultAppearance || content === null) { + return { + opList, + separateForm: false, + separateCanvas: false + }; + } + + const matrix = [1, 0, 0, 1, 0, 0]; + const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]]; + const transform = getTransformMatrix(this.data.rect, bbox, matrix); + let optionalContent; + + if (this.oc) { + optionalContent = await evaluator.parseMarkedContentProps(this.oc, null); + } + + if (optionalContent !== undefined) { + opList.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]); + } + + opList.addOp(_util.OPS.beginAnnotation, [this.data.id, this.data.rect, transform, this.getRotationMatrix(annotationStorage), false]); + const stream = new _stream.StringStream(content); + await evaluator.getOperatorList({ + stream, + task, + resources: this._fieldResources.mergedResources, + operatorList: opList + }); + opList.addOp(_util.OPS.endAnnotation, []); + + if (optionalContent !== undefined) { + opList.addOp(_util.OPS.endMarkedContent, []); + } + + return { + opList, + separateForm: false, + separateCanvas: false + }; + } + + _getMKDict(rotation) { + const mk = new _primitives.Dict(null); + + if (rotation) { + mk.set("R", rotation); + } + + if (this.borderColor) { + mk.set("BC", Array.from(this.borderColor).map(c => c / 255)); + } + + if (this.backgroundColor) { + mk.set("BG", Array.from(this.backgroundColor).map(c => c / 255)); + } + + return mk.size > 0 ? mk : null; + } + + async save(evaluator, task, annotationStorage) { + const storageEntry = annotationStorage ? annotationStorage.get(this.data.id) : undefined; + let value = storageEntry && storageEntry.value; + let rotation = storageEntry && storageEntry.rotation; + + if (value === this.data.fieldValue || value === undefined) { + if (!this._hasValueFromXFA && rotation === undefined) { + return null; + } + + value = value || this.data.fieldValue; + } + + if (rotation === undefined && !this._hasValueFromXFA && Array.isArray(value) && Array.isArray(this.data.fieldValue) && value.length === this.data.fieldValue.length && value.every((x, i) => x === this.data.fieldValue[i])) { + return null; + } + + if (rotation === undefined) { + rotation = this.rotation; + } + + let appearance = await this._getAppearance(evaluator, task, annotationStorage); + + if (appearance === null) { + return null; + } + + const { + xref + } = evaluator; + const dict = xref.fetchIfRef(this.ref); + + if (!(dict instanceof _primitives.Dict)) { + return null; + } + + const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]]; + const xfa = { + path: (0, _util.stringToPDFString)(dict.get("T") || ""), + value + }; + const newRef = xref.getNewRef(); + const AP = new _primitives.Dict(xref); + AP.set("N", newRef); + const encrypt = xref.encrypt; + let originalTransform = null; + let newTransform = null; + + if (encrypt) { + originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen); + newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen); + appearance = newTransform.encryptString(appearance); + } + + const encoder = val => (0, _util.isAscii)(val) ? val : (0, _util.stringToUTF16BEString)(val); + + dict.set("V", Array.isArray(value) ? value.map(encoder) : encoder(value)); + dict.set("AP", AP); + dict.set("M", `D:${(0, _util.getModificationDate)()}`); + + const maybeMK = this._getMKDict(rotation); + + if (maybeMK) { + dict.set("MK", maybeMK); + } + + const appearanceDict = new _primitives.Dict(xref); + appearanceDict.set("Length", appearance.length); + appearanceDict.set("Subtype", _primitives.Name.get("Form")); + appearanceDict.set("Resources", this._getSaveFieldResources(xref)); + appearanceDict.set("BBox", bbox); + const rotationMatrix = this.getRotationMatrix(annotationStorage); + + if (rotationMatrix !== _util.IDENTITY_MATRIX) { + appearanceDict.set("Matrix", rotationMatrix); + } + + const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\n`]; + (0, _writer.writeDict)(dict, bufferOriginal, originalTransform); + bufferOriginal.push("\nendobj\n"); + const bufferNew = [`${newRef.num} ${newRef.gen} obj\n`]; + (0, _writer.writeDict)(appearanceDict, bufferNew, newTransform); + bufferNew.push(" stream\n", appearance, "\nendstream\nendobj\n"); + return [{ + ref: this.ref, + data: bufferOriginal.join(""), + xfa + }, { + ref: newRef, + data: bufferNew.join(""), + xfa: null + }]; + } + + async _getAppearance(evaluator, task, annotationStorage) { + const isPassword = this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD); + + if (isPassword) { + return null; + } + + const storageEntry = annotationStorage ? annotationStorage.get(this.data.id) : undefined; + let value, rotation; + + if (storageEntry) { + value = storageEntry.formattedValue || storageEntry.value; + rotation = storageEntry.rotation; + } + + if (rotation === undefined && value === undefined) { + if (!this._hasValueFromXFA || this.appearance) { + return null; + } + } + + if (value === undefined) { + value = this.data.fieldValue; + + if (!value) { + return ""; + } + } + + if (Array.isArray(value) && value.length === 1) { + value = value[0]; + } + + (0, _util.assert)(typeof value === "string", "Expected `value` to be a string."); + value = value.trim(); + + if (value === "") { + return ""; + } + + if (rotation === undefined) { + rotation = this.rotation; + } + + let lineCount = -1; + + if (this.data.multiLine) { + lineCount = value.split(/\r\n|\r|\n/).length; + } + + const defaultPadding = 2; + const hPadding = defaultPadding; + let totalHeight = this.data.rect[3] - this.data.rect[1]; + let totalWidth = this.data.rect[2] - this.data.rect[0]; + + if (rotation === 90 || rotation === 270) { + [totalWidth, totalHeight] = [totalHeight, totalWidth]; + } + + if (!this._defaultAppearance) { + this.data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance = "/Helvetica 0 Tf 0 g"); + } + + const font = await WidgetAnnotation._getFontData(evaluator, task, this.data.defaultAppearanceData, this._fieldResources.mergedResources); + + const [defaultAppearance, fontSize] = this._computeFontSize(totalHeight - defaultPadding, totalWidth - 2 * hPadding, value, font, lineCount); + + let descent = font.descent; + + if (isNaN(descent)) { + descent = 0; + } + + const defaultVPadding = Math.min(Math.floor((totalHeight - fontSize) / 2), defaultPadding); + const vPadding = defaultVPadding + Math.abs(descent) * fontSize; + const alignment = this.data.textAlignment; + + if (this.data.multiLine) { + return this._getMultilineAppearance(defaultAppearance, value, font, fontSize, totalWidth, totalHeight, alignment, hPadding, vPadding, annotationStorage); + } + + const encodedString = font.encodeString(value).join(""); + + if (this.data.comb) { + return this._getCombAppearance(defaultAppearance, font, encodedString, totalWidth, hPadding, vPadding, annotationStorage); + } + + const colors = this.getBorderAndBackgroundAppearances(annotationStorage); + + if (alignment === 0 || alignment > 2) { + return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${(0, _util.escapeString)(encodedString)}) Tj` + " ET Q EMC"; + } + + const renderedText = this._renderText(encodedString, font, fontSize, totalWidth, alignment, hPadding, vPadding); + + return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 0 0 Tm ${renderedText}` + " ET Q EMC"; + } + + static async _getFontData(evaluator, task, appearanceData, resources) { + const operatorList = new _operator_list.OperatorList(); + const initialState = { + font: null, + + clone() { + return this; + } + + }; + const { + fontName, + fontSize + } = appearanceData; + await evaluator.handleSetFont(resources, [fontName && _primitives.Name.get(fontName), fontSize], null, operatorList, task, initialState, null); + return initialState.font; + } + + _getTextWidth(text, font) { + return font.charsToGlyphs(text).reduce((width, glyph) => width + glyph.width, 0) / 1000; + } + + _computeFontSize(height, width, text, font, lineCount) { + let { + fontSize + } = this.data.defaultAppearanceData; + + if (!fontSize) { + const roundWithTwoDigits = x => Math.floor(x * 100) / 100; + + if (lineCount === -1) { + const textWidth = this._getTextWidth(text, font); + + fontSize = roundWithTwoDigits(Math.min(height / _util.LINE_FACTOR, width / textWidth)); + } else { + const lines = text.split(/\r\n?|\n/); + const cachedLines = []; + + for (const line of lines) { + const encoded = font.encodeString(line).join(""); + const glyphs = font.charsToGlyphs(encoded); + const positions = font.getCharPositions(encoded); + cachedLines.push({ + line: encoded, + glyphs, + positions + }); + } + + const isTooBig = fsize => { + let totalHeight = 0; + + for (const cache of cachedLines) { + const chunks = this._splitLine(null, font, fsize, width, cache); + + totalHeight += chunks.length * fsize; + + if (totalHeight > height) { + return true; + } + } + + return false; + }; + + fontSize = 12; + let lineHeight = fontSize * _util.LINE_FACTOR; + let numberOfLines = Math.round(height / lineHeight); + numberOfLines = Math.max(numberOfLines, lineCount); + + while (true) { + lineHeight = height / numberOfLines; + fontSize = roundWithTwoDigits(lineHeight / _util.LINE_FACTOR); + + if (isTooBig(fontSize)) { + numberOfLines++; + continue; + } + + break; + } + } + + const { + fontName, + fontColor + } = this.data.defaultAppearanceData; + this._defaultAppearance = (0, _default_appearance.createDefaultAppearance)({ + fontSize, + fontName, + fontColor + }); + } + + return [this._defaultAppearance, fontSize]; + } + + _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) { + let shift; + + if (alignment === 1) { + const width = this._getTextWidth(text, font) * fontSize; + shift = (totalWidth - width) / 2; + } else if (alignment === 2) { + const width = this._getTextWidth(text, font) * fontSize; + shift = totalWidth - width - hPadding; + } else { + shift = hPadding; + } + + shift = (0, _core_utils.numberToString)(shift); + vPadding = (0, _core_utils.numberToString)(vPadding); + return `${shift} ${vPadding} Td (${(0, _util.escapeString)(text)}) Tj`; + } + + _getSaveFieldResources(xref) { + const { + localResources, + appearanceResources, + acroFormResources + } = this._fieldResources; + const fontName = this.data.defaultAppearanceData && this.data.defaultAppearanceData.fontName; + + if (!fontName) { + return localResources || _primitives.Dict.empty; + } + + for (const resources of [localResources, appearanceResources]) { + if (resources instanceof _primitives.Dict) { + const localFont = resources.get("Font"); + + if (localFont instanceof _primitives.Dict && localFont.has(fontName)) { + return resources; + } + } + } + + if (acroFormResources instanceof _primitives.Dict) { + const acroFormFont = acroFormResources.get("Font"); + + if (acroFormFont instanceof _primitives.Dict && acroFormFont.has(fontName)) { + const subFontDict = new _primitives.Dict(xref); + subFontDict.set(fontName, acroFormFont.getRaw(fontName)); + const subResourcesDict = new _primitives.Dict(xref); + subResourcesDict.set("Font", subFontDict); + return _primitives.Dict.merge({ + xref, + dictArray: [subResourcesDict, localResources], + mergeSubDicts: true + }); + } + } + + return localResources || _primitives.Dict.empty; + } + + getFieldObject() { + return null; + } + +} + +class TextWidgetAnnotation extends WidgetAnnotation { + constructor(params) { + super(params); + this._hasText = true; + const dict = params.dict; + + if (typeof this.data.fieldValue !== "string") { + this.data.fieldValue = ""; + } + + let alignment = (0, _core_utils.getInheritableProperty)({ + dict, + key: "Q" + }); + + if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) { + alignment = null; + } + + this.data.textAlignment = alignment; + let maximumLength = (0, _core_utils.getInheritableProperty)({ + dict, + key: "MaxLen" + }); + + if (!Number.isInteger(maximumLength) || maximumLength < 0) { + maximumLength = 0; + } + + this.data.maxLen = maximumLength; + this.data.multiLine = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE); + this.data.comb = this.hasFieldFlag(_util.AnnotationFieldFlag.COMB) && !this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD) && !this.hasFieldFlag(_util.AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== 0; + this.data.doNotScroll = this.hasFieldFlag(_util.AnnotationFieldFlag.DONOTSCROLL); + } + + _getCombAppearance(defaultAppearance, font, text, width, hPadding, vPadding, annotationStorage) { + const combWidth = (0, _core_utils.numberToString)(width / this.data.maxLen); + const buf = []; + const positions = font.getCharPositions(text); + + for (const [start, end] of positions) { + buf.push(`(${(0, _util.escapeString)(text.substring(start, end))}) Tj`); + } + + const colors = this.getBorderAndBackgroundAppearances(annotationStorage); + const renderedComb = buf.join(` ${combWidth} 0 Td `); + return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` + " ET Q EMC"; + } + + _getMultilineAppearance(defaultAppearance, text, font, fontSize, width, height, alignment, hPadding, vPadding, annotationStorage) { + const lines = text.split(/\r\n?|\n/); + const buf = []; + const totalWidth = width - 2 * hPadding; + + for (const line of lines) { + const chunks = this._splitLine(line, font, fontSize, totalWidth); + + for (const chunk of chunks) { + const padding = buf.length === 0 ? hPadding : 0; + buf.push(this._renderText(chunk, font, fontSize, width, alignment, padding, -fontSize)); + } + } + + const renderedText = buf.join("\n"); + const colors = this.getBorderAndBackgroundAppearances(annotationStorage); + return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 0 ${height} Tm ${renderedText}` + " ET Q EMC"; + } + + _splitLine(line, font, fontSize, width) { + let cache = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; + line = cache.line || font.encodeString(line).join(""); + const glyphs = cache.glyphs || font.charsToGlyphs(line); + + if (glyphs.length <= 1) { + return [line]; + } + + const positions = cache.positions || font.getCharPositions(line); + const scale = fontSize / 1000; + const chunks = []; + let lastSpacePosInStringStart = -1, + lastSpacePosInStringEnd = -1, + lastSpacePos = -1, + startChunk = 0, + currentWidth = 0; + + for (let i = 0, ii = glyphs.length; i < ii; i++) { + const [start, end] = positions[i]; + const glyph = glyphs[i]; + const glyphWidth = glyph.width * scale; + + if (glyph.unicode === " ") { + if (currentWidth + glyphWidth > width) { + chunks.push(line.substring(startChunk, start)); + startChunk = start; + currentWidth = glyphWidth; + lastSpacePosInStringStart = -1; + lastSpacePos = -1; + } else { + currentWidth += glyphWidth; + lastSpacePosInStringStart = start; + lastSpacePosInStringEnd = end; + lastSpacePos = i; + } + } else { + if (currentWidth + glyphWidth > width) { + if (lastSpacePosInStringStart !== -1) { + chunks.push(line.substring(startChunk, lastSpacePosInStringEnd)); + startChunk = lastSpacePosInStringEnd; + i = lastSpacePos + 1; + lastSpacePosInStringStart = -1; + currentWidth = 0; + } else { + chunks.push(line.substring(startChunk, start)); + startChunk = start; + currentWidth = glyphWidth; + } + } else { + currentWidth += glyphWidth; + } + } + } + + if (startChunk < line.length) { + chunks.push(line.substring(startChunk, line.length)); + } + + return chunks; + } + + getFieldObject() { + return { + id: this.data.id, + value: this.data.fieldValue, + defaultValue: this.data.defaultFieldValue || "", + multiline: this.data.multiLine, + password: this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD), + charLimit: this.data.maxLen, + comb: this.data.comb, + editable: !this.data.readOnly, + hidden: this.data.hidden, + name: this.data.fieldName, + rect: this.data.rect, + actions: this.data.actions, + page: this.data.pageIndex, + strokeColor: this.data.borderColor, + fillColor: this.data.backgroundColor, + rotation: this.rotation, + type: "text" + }; + } + +} + +class ButtonWidgetAnnotation extends WidgetAnnotation { + constructor(params) { + super(params); + this.checkedAppearance = null; + this.uncheckedAppearance = null; + this.data.checkBox = !this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON); + this.data.radioButton = this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON); + this.data.pushButton = this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON); + this.data.isTooltipOnly = false; + + if (this.data.checkBox) { + this._processCheckBox(params); + } else if (this.data.radioButton) { + this._processRadioButton(params); + } else if (this.data.pushButton) { + this.data.hasOwnCanvas = true; + + this._processPushButton(params); + } else { + (0, _util.warn)("Invalid field flags for button widget annotation"); + } + } + + async getOperatorList(evaluator, task, intent, renderForms, annotationStorage) { + if (this.data.pushButton) { + return super.getOperatorList(evaluator, task, intent, false, annotationStorage); + } + + let value = null; + let rotation = null; + + if (annotationStorage) { + const storageEntry = annotationStorage.get(this.data.id); + value = storageEntry ? storageEntry.value : null; + rotation = storageEntry ? storageEntry.rotation : null; + } + + if (value === null && this.appearance) { + return super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage); + } + + if (value === null || value === undefined) { + if (this.data.checkBox) { + value = this.data.fieldValue === this.data.exportValue; + } else { + value = this.data.fieldValue === this.data.buttonValue; + } + } + + const appearance = value ? this.checkedAppearance : this.uncheckedAppearance; + + if (appearance) { + const savedAppearance = this.appearance; + + const savedMatrix = appearance.dict.getArray("Matrix") || _util.IDENTITY_MATRIX; + + if (rotation) { + appearance.dict.set("Matrix", this.getRotationMatrix(annotationStorage)); + } + + this.appearance = appearance; + const operatorList = super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage); + this.appearance = savedAppearance; + appearance.dict.set("Matrix", savedMatrix); + return operatorList; + } + + return { + opList: new _operator_list.OperatorList(), + separateForm: false, + separateCanvas: false + }; + } + + async save(evaluator, task, annotationStorage) { + if (this.data.checkBox) { + return this._saveCheckbox(evaluator, task, annotationStorage); + } + + if (this.data.radioButton) { + return this._saveRadioButton(evaluator, task, annotationStorage); + } + + return null; + } + + async _saveCheckbox(evaluator, task, annotationStorage) { + if (!annotationStorage) { + return null; + } + + const storageEntry = annotationStorage.get(this.data.id); + let rotation = storageEntry && storageEntry.rotation; + let value = storageEntry && storageEntry.value; + + if (rotation === undefined) { + if (value === undefined) { + return null; + } + + const defaultValue = this.data.fieldValue === this.data.exportValue; + + if (defaultValue === value) { + return null; + } + } + + const dict = evaluator.xref.fetchIfRef(this.ref); + + if (!(dict instanceof _primitives.Dict)) { + return null; + } + + if (rotation === undefined) { + rotation = this.rotation; + } + + if (value === undefined) { + value = this.data.fieldValue === this.data.exportValue; + } + + const xfa = { + path: (0, _util.stringToPDFString)(dict.get("T") || ""), + value: value ? this.data.exportValue : "" + }; + + const name = _primitives.Name.get(value ? this.data.exportValue : "Off"); + + dict.set("V", name); + dict.set("AS", name); + dict.set("M", `D:${(0, _util.getModificationDate)()}`); + + const maybeMK = this._getMKDict(rotation); + + if (maybeMK) { + dict.set("MK", maybeMK); + } + + const encrypt = evaluator.xref.encrypt; + let originalTransform = null; + + if (encrypt) { + originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen); + } + + const buffer = [`${this.ref.num} ${this.ref.gen} obj\n`]; + (0, _writer.writeDict)(dict, buffer, originalTransform); + buffer.push("\nendobj\n"); + return [{ + ref: this.ref, + data: buffer.join(""), + xfa + }]; + } + + async _saveRadioButton(evaluator, task, annotationStorage) { + if (!annotationStorage) { + return null; + } + + const storageEntry = annotationStorage.get(this.data.id); + let rotation = storageEntry && storageEntry.rotation; + let value = storageEntry && storageEntry.value; + + if (rotation === undefined) { + if (value === undefined) { + return null; + } + + const defaultValue = this.data.fieldValue === this.data.buttonValue; + + if (defaultValue === value) { + return null; + } + } + + const dict = evaluator.xref.fetchIfRef(this.ref); + + if (!(dict instanceof _primitives.Dict)) { + return null; + } + + if (value === undefined) { + value = this.data.fieldValue === this.data.buttonValue; + } + + if (rotation === undefined) { + rotation = this.rotation; + } + + const xfa = { + path: (0, _util.stringToPDFString)(dict.get("T") || ""), + value: value ? this.data.buttonValue : "" + }; + + const name = _primitives.Name.get(value ? this.data.buttonValue : "Off"); + + let parentBuffer = null; + const encrypt = evaluator.xref.encrypt; + + if (value) { + if (this.parent instanceof _primitives.Ref) { + const parent = evaluator.xref.fetch(this.parent); + let parentTransform = null; + + if (encrypt) { + parentTransform = encrypt.createCipherTransform(this.parent.num, this.parent.gen); + } + + parent.set("V", name); + parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\n`]; + (0, _writer.writeDict)(parent, parentBuffer, parentTransform); + parentBuffer.push("\nendobj\n"); + } else if (this.parent instanceof _primitives.Dict) { + this.parent.set("V", name); + } + } + + dict.set("AS", name); + dict.set("M", `D:${(0, _util.getModificationDate)()}`); + + const maybeMK = this._getMKDict(rotation); + + if (maybeMK) { + dict.set("MK", maybeMK); + } + + let originalTransform = null; + + if (encrypt) { + originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen); + } + + const buffer = [`${this.ref.num} ${this.ref.gen} obj\n`]; + (0, _writer.writeDict)(dict, buffer, originalTransform); + buffer.push("\nendobj\n"); + const newRefs = [{ + ref: this.ref, + data: buffer.join(""), + xfa + }]; + + if (parentBuffer !== null) { + newRefs.push({ + ref: this.parent, + data: parentBuffer.join(""), + xfa: null + }); + } + + return newRefs; + } + + _getDefaultCheckedAppearance(params, type) { + const width = this.data.rect[2] - this.data.rect[0]; + const height = this.data.rect[3] - this.data.rect[1]; + const bbox = [0, 0, width, height]; + const FONT_RATIO = 0.8; + const fontSize = Math.min(width, height) * FONT_RATIO; + let metrics, char; + + if (type === "check") { + metrics = { + width: 0.755 * fontSize, + height: 0.705 * fontSize + }; + char = "\x33"; + } else if (type === "disc") { + metrics = { + width: 0.791 * fontSize, + height: 0.705 * fontSize + }; + char = "\x6C"; + } else { + (0, _util.unreachable)(`_getDefaultCheckedAppearance - unsupported type: ${type}`); + } + + const xShift = (0, _core_utils.numberToString)((width - metrics.width) / 2); + const yShift = (0, _core_utils.numberToString)((height - metrics.height) / 2); + const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`; + const appearanceStreamDict = new _primitives.Dict(params.xref); + appearanceStreamDict.set("FormType", 1); + appearanceStreamDict.set("Subtype", _primitives.Name.get("Form")); + appearanceStreamDict.set("Type", _primitives.Name.get("XObject")); + appearanceStreamDict.set("BBox", bbox); + appearanceStreamDict.set("Matrix", [1, 0, 0, 1, 0, 0]); + appearanceStreamDict.set("Length", appearance.length); + const resources = new _primitives.Dict(params.xref); + const font = new _primitives.Dict(params.xref); + font.set("PdfJsZaDb", this.fallbackFontDict); + resources.set("Font", font); + appearanceStreamDict.set("Resources", resources); + this.checkedAppearance = new _stream.StringStream(appearance); + this.checkedAppearance.dict = appearanceStreamDict; + + this._streams.push(this.checkedAppearance); + } + + _processCheckBox(params) { + const customAppearance = params.dict.get("AP"); + + if (!(customAppearance instanceof _primitives.Dict)) { + return; + } + + const normalAppearance = customAppearance.get("N"); + + if (!(normalAppearance instanceof _primitives.Dict)) { + return; + } + + const asValue = this._decodeFormValue(params.dict.get("AS")); + + if (typeof asValue === "string") { + this.data.fieldValue = asValue; + } + + const yes = this.data.fieldValue !== null && this.data.fieldValue !== "Off" ? this.data.fieldValue : "Yes"; + const exportValues = normalAppearance.getKeys(); + + if (exportValues.length === 0) { + exportValues.push("Off", yes); + } else if (exportValues.length === 1) { + if (exportValues[0] === "Off") { + exportValues.push(yes); + } else { + exportValues.unshift("Off"); + } + } else if (exportValues.includes(yes)) { + exportValues.length = 0; + exportValues.push("Off", yes); + } else { + const otherYes = exportValues.find(v => v !== "Off"); + exportValues.length = 0; + exportValues.push("Off", otherYes); + } + + if (!exportValues.includes(this.data.fieldValue)) { + this.data.fieldValue = "Off"; + } + + this.data.exportValue = exportValues[1]; + this.checkedAppearance = normalAppearance.get(this.data.exportValue) || null; + this.uncheckedAppearance = normalAppearance.get("Off") || null; + + if (this.checkedAppearance) { + this._streams.push(this.checkedAppearance); + } else { + this._getDefaultCheckedAppearance(params, "check"); + } + + if (this.uncheckedAppearance) { + this._streams.push(this.uncheckedAppearance); + } + + this._fallbackFontDict = this.fallbackFontDict; + } + + _processRadioButton(params) { + this.data.fieldValue = this.data.buttonValue = null; + const fieldParent = params.dict.get("Parent"); + + if (fieldParent instanceof _primitives.Dict) { + this.parent = params.dict.getRaw("Parent"); + const fieldParentValue = fieldParent.get("V"); + + if (fieldParentValue instanceof _primitives.Name) { + this.data.fieldValue = this._decodeFormValue(fieldParentValue); + } + } + + const appearanceStates = params.dict.get("AP"); + + if (!(appearanceStates instanceof _primitives.Dict)) { + return; + } + + const normalAppearance = appearanceStates.get("N"); + + if (!(normalAppearance instanceof _primitives.Dict)) { + return; + } + + for (const key of normalAppearance.getKeys()) { + if (key !== "Off") { + this.data.buttonValue = this._decodeFormValue(key); + break; + } + } + + this.checkedAppearance = normalAppearance.get(this.data.buttonValue) || null; + this.uncheckedAppearance = normalAppearance.get("Off") || null; + + if (this.checkedAppearance) { + this._streams.push(this.checkedAppearance); + } else { + this._getDefaultCheckedAppearance(params, "disc"); + } + + if (this.uncheckedAppearance) { + this._streams.push(this.uncheckedAppearance); + } + + this._fallbackFontDict = this.fallbackFontDict; + } + + _processPushButton(params) { + if (!params.dict.has("A") && !params.dict.has("AA") && !this.data.alternativeText) { + (0, _util.warn)("Push buttons without action dictionaries are not supported"); + return; + } + + this.data.isTooltipOnly = !params.dict.has("A") && !params.dict.has("AA"); + + _catalog.Catalog.parseDestDictionary({ + destDict: params.dict, + resultObj: this.data, + docBaseUrl: params.pdfManager.docBaseUrl + }); + } + + getFieldObject() { + let type = "button"; + let exportValues; + + if (this.data.checkBox) { + type = "checkbox"; + exportValues = this.data.exportValue; + } else if (this.data.radioButton) { + type = "radiobutton"; + exportValues = this.data.buttonValue; + } + + return { + id: this.data.id, + value: this.data.fieldValue || "Off", + defaultValue: this.data.defaultFieldValue, + exportValues, + editable: !this.data.readOnly, + name: this.data.fieldName, + rect: this.data.rect, + hidden: this.data.hidden, + actions: this.data.actions, + page: this.data.pageIndex, + strokeColor: this.data.borderColor, + fillColor: this.data.backgroundColor, + rotation: this.rotation, + type + }; + } + + get fallbackFontDict() { + const dict = new _primitives.Dict(); + dict.set("BaseFont", _primitives.Name.get("ZapfDingbats")); + dict.set("Type", _primitives.Name.get("FallbackType")); + dict.set("Subtype", _primitives.Name.get("FallbackType")); + dict.set("Encoding", _primitives.Name.get("ZapfDingbatsEncoding")); + return (0, _util.shadow)(this, "fallbackFontDict", dict); + } + +} + +class ChoiceWidgetAnnotation extends WidgetAnnotation { + constructor(params) { + super(params); + this.data.options = []; + const options = (0, _core_utils.getInheritableProperty)({ + dict: params.dict, + key: "Opt" + }); + + if (Array.isArray(options)) { + const xref = params.xref; + + for (let i = 0, ii = options.length; i < ii; i++) { + const option = xref.fetchIfRef(options[i]); + const isOptionArray = Array.isArray(option); + this.data.options[i] = { + exportValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[0]) : option), + displayValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[1]) : option) + }; + } + } + + if (typeof this.data.fieldValue === "string") { + this.data.fieldValue = [this.data.fieldValue]; + } else if (!this.data.fieldValue) { + this.data.fieldValue = []; + } + + this.data.combo = this.hasFieldFlag(_util.AnnotationFieldFlag.COMBO); + this.data.multiSelect = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTISELECT); + this._hasText = true; + } + + getFieldObject() { + const type = this.data.combo ? "combobox" : "listbox"; + const value = this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null; + return { + id: this.data.id, + value, + defaultValue: this.data.defaultFieldValue, + editable: !this.data.readOnly, + name: this.data.fieldName, + rect: this.data.rect, + numItems: this.data.fieldValue.length, + multipleSelection: this.data.multiSelect, + hidden: this.data.hidden, + actions: this.data.actions, + items: this.data.options, + page: this.data.pageIndex, + strokeColor: this.data.borderColor, + fillColor: this.data.backgroundColor, + rotation: this.rotation, + type + }; + } + + async _getAppearance(evaluator, task, annotationStorage) { + if (this.data.combo) { + return super._getAppearance(evaluator, task, annotationStorage); + } + + if (!annotationStorage) { + return null; + } + + const storageEntry = annotationStorage.get(this.data.id); + + if (!storageEntry) { + return null; + } + + const rotation = storageEntry.rotation; + let exportedValue = storageEntry.value; + + if (rotation === undefined && exportedValue === undefined) { + return null; + } + + if (exportedValue === undefined) { + exportedValue = this.data.fieldValue; + } else if (!Array.isArray(exportedValue)) { + exportedValue = [exportedValue]; + } + + const defaultPadding = 2; + const hPadding = defaultPadding; + let totalHeight = this.data.rect[3] - this.data.rect[1]; + let totalWidth = this.data.rect[2] - this.data.rect[0]; + + if (rotation === 90 || rotation === 270) { + [totalWidth, totalHeight] = [totalHeight, totalWidth]; + } + + const lineCount = this.data.options.length; + const valueIndices = []; + + for (let i = 0; i < lineCount; i++) { + const { + exportValue + } = this.data.options[i]; + + if (exportedValue.includes(exportValue)) { + valueIndices.push(i); + } + } + + if (!this._defaultAppearance) { + this.data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance = "/Helvetica 0 Tf 0 g"); + } + + const font = await WidgetAnnotation._getFontData(evaluator, task, this.data.defaultAppearanceData, this._fieldResources.mergedResources); + let defaultAppearance; + let { + fontSize + } = this.data.defaultAppearanceData; + + if (!fontSize) { + const lineHeight = (totalHeight - defaultPadding) / lineCount; + let lineWidth = -1; + let value; + + for (const { + displayValue + } of this.data.options) { + const width = this._getTextWidth(displayValue, font); + + if (width > lineWidth) { + lineWidth = width; + value = displayValue; + } + } + + [defaultAppearance, fontSize] = this._computeFontSize(lineHeight, totalWidth - 2 * hPadding, value, font, -1); + } else { + defaultAppearance = this._defaultAppearance; + } + + const lineHeight = fontSize * _util.LINE_FACTOR; + const vPadding = (lineHeight - fontSize) / 2; + const numberOfVisibleLines = Math.floor(totalHeight / lineHeight); + let firstIndex; + + if (valueIndices.length === 1) { + const valuePosition = valueIndices[0]; + const indexInPage = valuePosition % numberOfVisibleLines; + firstIndex = valuePosition - indexInPage; + } else { + firstIndex = valueIndices.length ? valueIndices[0] : 0; + } + + const end = Math.min(firstIndex + numberOfVisibleLines + 1, lineCount); + const buf = ["/Tx BMC q", `1 1 ${totalWidth} ${totalHeight} re W n`]; + + if (valueIndices.length) { + buf.push("0.600006 0.756866 0.854904 rg"); + + for (const index of valueIndices) { + if (firstIndex <= index && index < end) { + buf.push(`1 ${totalHeight - (index - firstIndex + 1) * lineHeight} ${totalWidth} ${lineHeight} re f`); + } + } + } + + buf.push("BT", defaultAppearance, `1 0 0 1 0 ${totalHeight} Tm`); + + for (let i = firstIndex; i < end; i++) { + const { + displayValue + } = this.data.options[i]; + const hpadding = i === firstIndex ? hPadding : 0; + const vpadding = i === firstIndex ? vPadding : 0; + buf.push(this._renderText(displayValue, font, fontSize, totalWidth, 0, hpadding, -lineHeight + vpadding)); + } + + buf.push("ET Q EMC"); + return buf.join("\n"); + } + +} + +class SignatureWidgetAnnotation extends WidgetAnnotation { + constructor(params) { + super(params); + this.data.fieldValue = null; + } + + getFieldObject() { + return { + id: this.data.id, + value: null, + page: this.data.pageIndex, + type: "signature" + }; + } + +} + +class TextAnnotation extends MarkupAnnotation { + constructor(parameters) { + const DEFAULT_ICON_SIZE = 22; + super(parameters); + const dict = parameters.dict; + this.data.annotationType = _util.AnnotationType.TEXT; + + if (this.data.hasAppearance) { + this.data.name = "NoIcon"; + } else { + this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE; + this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE; + this.data.name = dict.has("Name") ? dict.get("Name").name : "Note"; + } + + if (dict.has("State")) { + this.data.state = dict.get("State") || null; + this.data.stateModel = dict.get("StateModel") || null; + } else { + this.data.state = null; + this.data.stateModel = null; + } + } + +} + +class LinkAnnotation extends Annotation { + constructor(params) { + super(params); + this.data.annotationType = _util.AnnotationType.LINK; + const quadPoints = getQuadPoints(params.dict, this.rectangle); + + if (quadPoints) { + this.data.quadPoints = quadPoints; + } + + this.data.borderColor = this.data.borderColor || this.data.color; + + _catalog.Catalog.parseDestDictionary({ + destDict: params.dict, + resultObj: this.data, + docBaseUrl: params.pdfManager.docBaseUrl + }); + } + +} + +class PopupAnnotation extends Annotation { + constructor(parameters) { + super(parameters); + this.data.annotationType = _util.AnnotationType.POPUP; + let parentItem = parameters.dict.get("Parent"); + + if (!parentItem) { + (0, _util.warn)("Popup annotation has a missing or invalid parent annotation."); + return; + } + + const parentSubtype = parentItem.get("Subtype"); + this.data.parentType = parentSubtype instanceof _primitives.Name ? parentSubtype.name : null; + const rawParent = parameters.dict.getRaw("Parent"); + this.data.parentId = rawParent instanceof _primitives.Ref ? rawParent.toString() : null; + const parentRect = parentItem.getArray("Rect"); + + if (Array.isArray(parentRect) && parentRect.length === 4) { + this.data.parentRect = _util.Util.normalizeRect(parentRect); + } else { + this.data.parentRect = [0, 0, 0, 0]; + } + + const rt = parentItem.get("RT"); + + if ((0, _primitives.isName)(rt, _util.AnnotationReplyType.GROUP)) { + parentItem = parentItem.get("IRT"); + } + + if (!parentItem.has("M")) { + this.data.modificationDate = null; + } else { + this.setModificationDate(parentItem.get("M")); + this.data.modificationDate = this.modificationDate; + } + + if (!parentItem.has("C")) { + this.data.color = null; + } else { + this.setColor(parentItem.getArray("C")); + this.data.color = this.color; + } + + if (!this.viewable) { + const parentFlags = parentItem.get("F"); + + if (this._isViewable(parentFlags)) { + this.setFlags(parentFlags); + } + } + + this.setTitle(parentItem.get("T")); + this.data.titleObj = this._title; + this.setContents(parentItem.get("Contents")); + this.data.contentsObj = this._contents; + + if (parentItem.has("RC")) { + this.data.richText = _factory.XFAFactory.getRichTextAsHtml(parentItem.get("RC")); + } + } + +} + +exports.PopupAnnotation = PopupAnnotation; + +class FreeTextAnnotation extends MarkupAnnotation { + constructor(parameters) { + super(parameters); + this.data.annotationType = _util.AnnotationType.FREETEXT; + } + + get hasTextContent() { + return !!this.appearance; + } + + static createNewDict(annotation, xref, _ref4) { + let { + apRef, + ap + } = _ref4; + const { + color, + fontSize, + rect, + rotation, + user, + value + } = annotation; + const freetext = new _primitives.Dict(xref); + freetext.set("Type", _primitives.Name.get("Annot")); + freetext.set("Subtype", _primitives.Name.get("FreeText")); + freetext.set("CreationDate", `D:${(0, _util.getModificationDate)()}`); + freetext.set("Rect", rect); + const da = `/Helv ${fontSize} Tf ${(0, _default_appearance.getPdfColor)(color, true)}`; + freetext.set("DA", da); + freetext.set("Contents", value); + freetext.set("F", 4); + freetext.set("Border", [0, 0, 0]); + freetext.set("Rotate", rotation); + + if (user) { + freetext.set("T", (0, _util.stringToUTF8String)(user)); + } + + const n = new _primitives.Dict(xref); + freetext.set("AP", n); + + if (apRef) { + n.set("N", apRef); + } else { + n.set("N", ap); + } + + return freetext; + } + + static async createNewAppearanceStream(annotation, xref, params) { + const { + baseFontRef, + evaluator, + task + } = params; + const { + color, + fontSize, + rect, + rotation, + value + } = annotation; + const resources = new _primitives.Dict(xref); + const font = new _primitives.Dict(xref); + + if (baseFontRef) { + font.set("Helv", baseFontRef); + } else { + const baseFont = new _primitives.Dict(xref); + baseFont.set("BaseFont", _primitives.Name.get("Helvetica")); + baseFont.set("Type", _primitives.Name.get("Font")); + baseFont.set("Subtype", _primitives.Name.get("Type1")); + baseFont.set("Encoding", _primitives.Name.get("WinAnsiEncoding")); + font.set("Helv", baseFont); + } + + resources.set("Font", font); + const helv = await WidgetAnnotation._getFontData(evaluator, task, { + fontName: "Helvetica", + fontSize + }, resources); + const [x1, y1, x2, y2] = rect; + let w = x2 - x1; + let h = y2 - y1; + + if (rotation % 180 !== 0) { + [w, h] = [h, w]; + } + + const lines = value.split("\n"); + const scale = fontSize / 1000; + let totalWidth = -Infinity; + const encodedLines = []; + + for (let line of lines) { + line = helv.encodeString(line).join(""); + encodedLines.push(line); + let lineWidth = 0; + const glyphs = helv.charsToGlyphs(line); + + for (const glyph of glyphs) { + lineWidth += glyph.width * scale; + } + + totalWidth = Math.max(totalWidth, lineWidth); + } + + let hscale = 1; + + if (totalWidth > w) { + hscale = w / totalWidth; + } + + let vscale = 1; + const lineHeight = _util.LINE_FACTOR * fontSize; + const lineDescent = _util.LINE_DESCENT_FACTOR * fontSize; + const totalHeight = lineHeight * lines.length; + + if (totalHeight > h) { + vscale = h / totalHeight; + } + + const fscale = Math.min(hscale, vscale); + const newFontSize = fontSize * fscale; + const buffer = ["q", `0 0 ${(0, _core_utils.numberToString)(w)} ${(0, _core_utils.numberToString)(h)} re W n`, `BT`, `1 0 0 1 0 ${(0, _core_utils.numberToString)(h + lineDescent)} Tm 0 Tc ${(0, _default_appearance.getPdfColor)(color, true)}`, `/Helv ${(0, _core_utils.numberToString)(newFontSize)} Tf`]; + const vShift = (0, _core_utils.numberToString)(lineHeight); + + for (const line of encodedLines) { + buffer.push(`0 -${vShift} Td (${(0, _util.escapeString)(line)}) Tj`); + } + + buffer.push("ET", "Q"); + const appearance = buffer.join("\n"); + const appearanceStreamDict = new _primitives.Dict(xref); + appearanceStreamDict.set("FormType", 1); + appearanceStreamDict.set("Subtype", _primitives.Name.get("Form")); + appearanceStreamDict.set("Type", _primitives.Name.get("XObject")); + appearanceStreamDict.set("BBox", [0, 0, w, h]); + appearanceStreamDict.set("Length", appearance.length); + appearanceStreamDict.set("Resources", resources); + + if (rotation) { + const matrix = WidgetAnnotation._getRotationMatrix(rotation, w, h); + + appearanceStreamDict.set("Matrix", matrix); + } + + const ap = new _stream.StringStream(appearance); + ap.dict = appearanceStreamDict; + return ap; + } + +} + +class LineAnnotation extends MarkupAnnotation { + constructor(parameters) { + super(parameters); + const { + dict + } = parameters; + this.data.annotationType = _util.AnnotationType.LINE; + const lineCoordinates = dict.getArray("L"); + this.data.lineCoordinates = _util.Util.normalizeRect(lineCoordinates); + this.setLineEndings(dict.getArray("LE")); + this.data.lineEndings = this.lineEndings; + + if (!this.appearance) { + const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; + const strokeAlpha = dict.get("CA"); + let fillColor = null, + interiorColor = dict.getArray("IC"); + + if (interiorColor) { + interiorColor = getRgbColor(interiorColor, null); + fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null; + } + + const fillAlpha = fillColor ? strokeAlpha : null; + const borderWidth = this.borderStyle.width || 1, + borderAdjust = 2 * borderWidth; + const bbox = [this.data.lineCoordinates[0] - borderAdjust, this.data.lineCoordinates[1] - borderAdjust, this.data.lineCoordinates[2] + borderAdjust, this.data.lineCoordinates[3] + borderAdjust]; + + if (!_util.Util.intersect(this.rectangle, bbox)) { + this.rectangle = bbox; + } + + this._setDefaultAppearance({ + xref: parameters.xref, + extra: `${borderWidth} w`, + strokeColor, + fillColor, + strokeAlpha, + fillAlpha, + pointsCallback: (buffer, points) => { + buffer.push(`${lineCoordinates[0]} ${lineCoordinates[1]} m`, `${lineCoordinates[2]} ${lineCoordinates[3]} l`, "S"); + return [points[0].x - borderWidth, points[1].x + borderWidth, points[3].y - borderWidth, points[1].y + borderWidth]; + } + }); + } + } + +} + +class SquareAnnotation extends MarkupAnnotation { + constructor(parameters) { + super(parameters); + this.data.annotationType = _util.AnnotationType.SQUARE; + + if (!this.appearance) { + const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; + const strokeAlpha = parameters.dict.get("CA"); + let fillColor = null, + interiorColor = parameters.dict.getArray("IC"); + + if (interiorColor) { + interiorColor = getRgbColor(interiorColor, null); + fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null; + } + + const fillAlpha = fillColor ? strokeAlpha : null; + + if (this.borderStyle.width === 0 && !fillColor) { + return; + } + + this._setDefaultAppearance({ + xref: parameters.xref, + extra: `${this.borderStyle.width} w`, + strokeColor, + fillColor, + strokeAlpha, + fillAlpha, + pointsCallback: (buffer, points) => { + const x = points[2].x + this.borderStyle.width / 2; + const y = points[2].y + this.borderStyle.width / 2; + const width = points[3].x - points[2].x - this.borderStyle.width; + const height = points[1].y - points[3].y - this.borderStyle.width; + buffer.push(`${x} ${y} ${width} ${height} re`); + + if (fillColor) { + buffer.push("B"); + } else { + buffer.push("S"); + } + + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } + +} + +class CircleAnnotation extends MarkupAnnotation { + constructor(parameters) { + super(parameters); + this.data.annotationType = _util.AnnotationType.CIRCLE; + + if (!this.appearance) { + const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; + const strokeAlpha = parameters.dict.get("CA"); + let fillColor = null; + let interiorColor = parameters.dict.getArray("IC"); + + if (interiorColor) { + interiorColor = getRgbColor(interiorColor, null); + fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null; + } + + const fillAlpha = fillColor ? strokeAlpha : null; + + if (this.borderStyle.width === 0 && !fillColor) { + return; + } + + const controlPointsDistance = 4 / 3 * Math.tan(Math.PI / (2 * 4)); + + this._setDefaultAppearance({ + xref: parameters.xref, + extra: `${this.borderStyle.width} w`, + strokeColor, + fillColor, + strokeAlpha, + fillAlpha, + pointsCallback: (buffer, points) => { + const x0 = points[0].x + this.borderStyle.width / 2; + const y0 = points[0].y - this.borderStyle.width / 2; + const x1 = points[3].x - this.borderStyle.width / 2; + const y1 = points[3].y + this.borderStyle.width / 2; + const xMid = x0 + (x1 - x0) / 2; + const yMid = y0 + (y1 - y0) / 2; + const xOffset = (x1 - x0) / 2 * controlPointsDistance; + const yOffset = (y1 - y0) / 2 * controlPointsDistance; + buffer.push(`${xMid} ${y1} m`, `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`, `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`, `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`, `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`, "h"); + + if (fillColor) { + buffer.push("B"); + } else { + buffer.push("S"); + } + + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } + +} + +class PolylineAnnotation extends MarkupAnnotation { + constructor(parameters) { + super(parameters); + const { + dict + } = parameters; + this.data.annotationType = _util.AnnotationType.POLYLINE; + this.data.vertices = []; + + if (!(this instanceof PolygonAnnotation)) { + this.setLineEndings(dict.getArray("LE")); + this.data.lineEndings = this.lineEndings; + } + + const rawVertices = dict.getArray("Vertices"); + + if (!Array.isArray(rawVertices)) { + return; + } + + for (let i = 0, ii = rawVertices.length; i < ii; i += 2) { + this.data.vertices.push({ + x: rawVertices[i], + y: rawVertices[i + 1] + }); + } + + if (!this.appearance) { + const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; + const strokeAlpha = dict.get("CA"); + const borderWidth = this.borderStyle.width || 1, + borderAdjust = 2 * borderWidth; + const bbox = [Infinity, Infinity, -Infinity, -Infinity]; + + for (const vertex of this.data.vertices) { + bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust); + bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust); + bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust); + bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust); + } + + if (!_util.Util.intersect(this.rectangle, bbox)) { + this.rectangle = bbox; + } + + this._setDefaultAppearance({ + xref: parameters.xref, + extra: `${borderWidth} w`, + strokeColor, + strokeAlpha, + pointsCallback: (buffer, points) => { + const vertices = this.data.vertices; + + for (let i = 0, ii = vertices.length; i < ii; i++) { + buffer.push(`${vertices[i].x} ${vertices[i].y} ${i === 0 ? "m" : "l"}`); + } + + buffer.push("S"); + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } + +} + +class PolygonAnnotation extends PolylineAnnotation { + constructor(parameters) { + super(parameters); + this.data.annotationType = _util.AnnotationType.POLYGON; + } + +} + +class CaretAnnotation extends MarkupAnnotation { + constructor(parameters) { + super(parameters); + this.data.annotationType = _util.AnnotationType.CARET; + } + +} + +class InkAnnotation extends MarkupAnnotation { + constructor(parameters) { + super(parameters); + this.data.annotationType = _util.AnnotationType.INK; + this.data.inkLists = []; + const rawInkLists = parameters.dict.getArray("InkList"); + + if (!Array.isArray(rawInkLists)) { + return; + } + + const xref = parameters.xref; + + for (let i = 0, ii = rawInkLists.length; i < ii; ++i) { + this.data.inkLists.push([]); + + for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) { + this.data.inkLists[i].push({ + x: xref.fetchIfRef(rawInkLists[i][j]), + y: xref.fetchIfRef(rawInkLists[i][j + 1]) + }); + } + } + + if (!this.appearance) { + const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; + const strokeAlpha = parameters.dict.get("CA"); + const borderWidth = this.borderStyle.width || 1, + borderAdjust = 2 * borderWidth; + const bbox = [Infinity, Infinity, -Infinity, -Infinity]; + + for (const inkLists of this.data.inkLists) { + for (const vertex of inkLists) { + bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust); + bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust); + bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust); + bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust); + } + } + + if (!_util.Util.intersect(this.rectangle, bbox)) { + this.rectangle = bbox; + } + + this._setDefaultAppearance({ + xref: parameters.xref, + extra: `${borderWidth} w`, + strokeColor, + strokeAlpha, + pointsCallback: (buffer, points) => { + for (const inkList of this.data.inkLists) { + for (let i = 0, ii = inkList.length; i < ii; i++) { + buffer.push(`${inkList[i].x} ${inkList[i].y} ${i === 0 ? "m" : "l"}`); + } + + buffer.push("S"); + } + + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } + + static createNewDict(annotation, xref, _ref5) { + let { + apRef, + ap + } = _ref5; + const { + paths, + rect, + rotation + } = annotation; + const ink = new _primitives.Dict(xref); + ink.set("Type", _primitives.Name.get("Annot")); + ink.set("Subtype", _primitives.Name.get("Ink")); + ink.set("CreationDate", `D:${(0, _util.getModificationDate)()}`); + ink.set("Rect", rect); + ink.set("InkList", paths.map(p => p.points)); + ink.set("F", 4); + ink.set("Border", [0, 0, 0]); + ink.set("Rotate", rotation); + const n = new _primitives.Dict(xref); + ink.set("AP", n); + + if (apRef) { + n.set("N", apRef); + } else { + n.set("N", ap); + } + + return ink; + } + + static async createNewAppearanceStream(annotation, xref, params) { + const { + color, + rect, + rotation, + paths, + thickness, + opacity + } = annotation; + const [x1, y1, x2, y2] = rect; + let w = x2 - x1; + let h = y2 - y1; + + if (rotation % 180 !== 0) { + [w, h] = [h, w]; + } + + const appearanceBuffer = [`${thickness} w 1 J 1 j`, `${(0, _default_appearance.getPdfColor)(color, false)}`]; + + if (opacity !== 1) { + appearanceBuffer.push("/R0 gs"); + } + + const buffer = []; + + for (const { + bezier + } of paths) { + buffer.length = 0; + buffer.push(`${(0, _core_utils.numberToString)(bezier[0])} ${(0, _core_utils.numberToString)(bezier[1])} m`); + + for (let i = 2, ii = bezier.length; i < ii; i += 6) { + const curve = bezier.slice(i, i + 6).map(_core_utils.numberToString).join(" "); + buffer.push(`${curve} c`); + } + + buffer.push("S"); + appearanceBuffer.push(buffer.join("\n")); + } + + const appearance = appearanceBuffer.join("\n"); + const appearanceStreamDict = new _primitives.Dict(xref); + appearanceStreamDict.set("FormType", 1); + appearanceStreamDict.set("Subtype", _primitives.Name.get("Form")); + appearanceStreamDict.set("Type", _primitives.Name.get("XObject")); + appearanceStreamDict.set("BBox", [0, 0, w, h]); + appearanceStreamDict.set("Length", appearance.length); + + if (rotation) { + const matrix = WidgetAnnotation._getRotationMatrix(rotation, w, h); + + appearanceStreamDict.set("Matrix", matrix); + } + + if (opacity !== 1) { + const resources = new _primitives.Dict(xref); + const extGState = new _primitives.Dict(xref); + const r0 = new _primitives.Dict(xref); + r0.set("CA", opacity); + r0.set("Type", _primitives.Name.get("ExtGState")); + extGState.set("R0", r0); + resources.set("ExtGState", extGState); + appearanceStreamDict.set("Resources", resources); + } + + const ap = new _stream.StringStream(appearance); + ap.dict = appearanceStreamDict; + return ap; + } + +} + +class HighlightAnnotation extends MarkupAnnotation { + constructor(parameters) { + super(parameters); + this.data.annotationType = _util.AnnotationType.HIGHLIGHT; + const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null); + + if (quadPoints) { + const resources = this.appearance && this.appearance.dict.get("Resources"); + + if (!this.appearance || !(resources && resources.has("ExtGState"))) { + if (this.appearance) { + (0, _util.warn)("HighlightAnnotation - ignoring built-in appearance stream."); + } + + const fillColor = this.color ? Array.from(this.color).map(c => c / 255) : [1, 1, 0]; + const fillAlpha = parameters.dict.get("CA"); + + this._setDefaultAppearance({ + xref: parameters.xref, + fillColor, + blendMode: "Multiply", + fillAlpha, + pointsCallback: (buffer, points) => { + buffer.push(`${points[0].x} ${points[0].y} m`, `${points[1].x} ${points[1].y} l`, `${points[3].x} ${points[3].y} l`, `${points[2].x} ${points[2].y} l`, "f"); + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } else { + this.data.hasPopup = false; + } + } + +} + +class UnderlineAnnotation extends MarkupAnnotation { + constructor(parameters) { + super(parameters); + this.data.annotationType = _util.AnnotationType.UNDERLINE; + const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null); + + if (quadPoints) { + if (!this.appearance) { + const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; + const strokeAlpha = parameters.dict.get("CA"); + + this._setDefaultAppearance({ + xref: parameters.xref, + extra: "[] 0 d 1 w", + strokeColor, + strokeAlpha, + pointsCallback: (buffer, points) => { + buffer.push(`${points[2].x} ${points[2].y} m`, `${points[3].x} ${points[3].y} l`, "S"); + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } else { + this.data.hasPopup = false; + } + } + +} + +class SquigglyAnnotation extends MarkupAnnotation { + constructor(parameters) { + super(parameters); + this.data.annotationType = _util.AnnotationType.SQUIGGLY; + const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null); + + if (quadPoints) { + if (!this.appearance) { + const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; + const strokeAlpha = parameters.dict.get("CA"); + + this._setDefaultAppearance({ + xref: parameters.xref, + extra: "[] 0 d 1 w", + strokeColor, + strokeAlpha, + pointsCallback: (buffer, points) => { + const dy = (points[0].y - points[2].y) / 6; + let shift = dy; + let x = points[2].x; + const y = points[2].y; + const xEnd = points[3].x; + buffer.push(`${x} ${y + shift} m`); + + do { + x += 2; + shift = shift === 0 ? dy : 0; + buffer.push(`${x} ${y + shift} l`); + } while (x < xEnd); + + buffer.push("S"); + return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy]; + } + }); + } + } else { + this.data.hasPopup = false; + } + } + +} + +class StrikeOutAnnotation extends MarkupAnnotation { + constructor(parameters) { + super(parameters); + this.data.annotationType = _util.AnnotationType.STRIKEOUT; + const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null); + + if (quadPoints) { + if (!this.appearance) { + const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; + const strokeAlpha = parameters.dict.get("CA"); + + this._setDefaultAppearance({ + xref: parameters.xref, + extra: "[] 0 d 1 w", + strokeColor, + strokeAlpha, + pointsCallback: (buffer, points) => { + buffer.push(`${(points[0].x + points[2].x) / 2} ` + `${(points[0].y + points[2].y) / 2} m`, `${(points[1].x + points[3].x) / 2} ` + `${(points[1].y + points[3].y) / 2} l`, "S"); + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } else { + this.data.hasPopup = false; + } + } + +} + +class StampAnnotation extends MarkupAnnotation { + constructor(parameters) { + super(parameters); + this.data.annotationType = _util.AnnotationType.STAMP; + } + +} + +class FileAttachmentAnnotation extends MarkupAnnotation { + constructor(parameters) { + super(parameters); + const file = new _file_spec.FileSpec(parameters.dict.get("FS"), parameters.xref); + this.data.annotationType = _util.AnnotationType.FILEATTACHMENT; + this.data.file = file.serializable; + } + +} + +/***/ }), +/* 138 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createDefaultAppearance = createDefaultAppearance; +exports.getPdfColor = getPdfColor; +exports.parseDefaultAppearance = parseDefaultAppearance; + +var _core_utils = __w_pdfjs_require__(131); + +var _util = __w_pdfjs_require__(2); + +var _colorspace = __w_pdfjs_require__(139); + +var _evaluator = __w_pdfjs_require__(140); + +var _primitives = __w_pdfjs_require__(130); + +var _stream = __w_pdfjs_require__(135); + +class DefaultAppearanceEvaluator extends _evaluator.EvaluatorPreprocessor { + constructor(str) { + super(new _stream.StringStream(str)); + } + + parse() { + const operation = { + fn: 0, + args: [] + }; + const result = { + fontSize: 0, + fontName: "", + fontColor: new Uint8ClampedArray(3) + }; + + try { + while (true) { + operation.args.length = 0; + + if (!this.read(operation)) { + break; + } + + if (this.savedStatesDepth !== 0) { + continue; + } + + const { + fn, + args + } = operation; + + switch (fn | 0) { + case _util.OPS.setFont: + const [fontName, fontSize] = args; + + if (fontName instanceof _primitives.Name) { + result.fontName = fontName.name; + } + + if (typeof fontSize === "number" && fontSize > 0) { + result.fontSize = fontSize; + } + + break; + + case _util.OPS.setFillRGBColor: + _colorspace.ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0); + + break; + + case _util.OPS.setFillGray: + _colorspace.ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0); + + break; + + case _util.OPS.setFillColorSpace: + _colorspace.ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0); + + break; + } + } + } catch (reason) { + (0, _util.warn)(`parseDefaultAppearance - ignoring errors: "${reason}".`); + } + + return result; + } + +} + +function parseDefaultAppearance(str) { + return new DefaultAppearanceEvaluator(str).parse(); +} + +function getPdfColor(color, isFill) { + if (color[0] === color[1] && color[1] === color[2]) { + const gray = color[0] / 255; + return `${(0, _core_utils.numberToString)(gray)} ${isFill ? "g" : "G"}`; + } + + return Array.from(color).map(c => (0, _core_utils.numberToString)(c / 255)).join(" ") + ` ${isFill ? "rg" : "RG"}`; +} + +function createDefaultAppearance(_ref) { + let { + fontSize, + fontName, + fontColor + } = _ref; + return `/${(0, _core_utils.escapePDFName)(fontName)} ${fontSize} Tf ${getPdfColor(fontColor, true)}`; +} + +/***/ }), +/* 139 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ColorSpace = void 0; + +var _util = __w_pdfjs_require__(2); + +var _primitives = __w_pdfjs_require__(130); + +var _base_stream = __w_pdfjs_require__(132); + +var _core_utils = __w_pdfjs_require__(131); + +function resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) { + const COMPONENTS = 3; + alpha01 = alpha01 !== 1 ? 0 : alpha01; + const xRatio = w1 / w2; + const yRatio = h1 / h2; + let newIndex = 0, + oldIndex; + const xScaled = new Uint16Array(w2); + const w1Scanline = w1 * COMPONENTS; + + for (let i = 0; i < w2; i++) { + xScaled[i] = Math.floor(i * xRatio) * COMPONENTS; + } + + for (let i = 0; i < h2; i++) { + const py = Math.floor(i * yRatio) * w1Scanline; + + for (let j = 0; j < w2; j++) { + oldIndex = py + xScaled[j]; + dest[newIndex++] = src[oldIndex++]; + dest[newIndex++] = src[oldIndex++]; + dest[newIndex++] = src[oldIndex++]; + newIndex += alpha01; + } + } +} + +class ColorSpace { + constructor(name, numComps) { + if (this.constructor === ColorSpace) { + (0, _util.unreachable)("Cannot initialize ColorSpace."); + } + + this.name = name; + this.numComps = numComps; + } + + getRgb(src, srcOffset) { + const rgb = new Uint8ClampedArray(3); + this.getRgbItem(src, srcOffset, rgb, 0); + return rgb; + } + + getRgbItem(src, srcOffset, dest, destOffset) { + (0, _util.unreachable)("Should not call ColorSpace.getRgbItem"); + } + + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + (0, _util.unreachable)("Should not call ColorSpace.getRgbBuffer"); + } + + getOutputLength(inputLength, alpha01) { + (0, _util.unreachable)("Should not call ColorSpace.getOutputLength"); + } + + isPassthrough(bits) { + return false; + } + + isDefaultDecode(decodeMap, bpc) { + return ColorSpace.isDefaultDecode(decodeMap, this.numComps); + } + + fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) { + const count = originalWidth * originalHeight; + let rgbBuf = null; + const numComponentColors = 1 << bpc; + const needsResizing = originalHeight !== height || originalWidth !== width; + + if (this.isPassthrough(bpc)) { + rgbBuf = comps; + } else if (this.numComps === 1 && count > numComponentColors && this.name !== "DeviceGray" && this.name !== "DeviceRGB") { + const allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors); + + for (let i = 0; i < numComponentColors; i++) { + allColors[i] = i; + } + + const colorMap = new Uint8ClampedArray(numComponentColors * 3); + this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0); + + if (!needsResizing) { + let destPos = 0; + + for (let i = 0; i < count; ++i) { + const key = comps[i] * 3; + dest[destPos++] = colorMap[key]; + dest[destPos++] = colorMap[key + 1]; + dest[destPos++] = colorMap[key + 2]; + destPos += alpha01; + } + } else { + rgbBuf = new Uint8Array(count * 3); + let rgbPos = 0; + + for (let i = 0; i < count; ++i) { + const key = comps[i] * 3; + rgbBuf[rgbPos++] = colorMap[key]; + rgbBuf[rgbPos++] = colorMap[key + 1]; + rgbBuf[rgbPos++] = colorMap[key + 2]; + } + } + } else { + if (!needsResizing) { + this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01); + } else { + rgbBuf = new Uint8ClampedArray(count * 3); + this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0); + } + } + + if (rgbBuf) { + if (needsResizing) { + resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01); + } else { + let destPos = 0, + rgbPos = 0; + + for (let i = 0, ii = width * actualHeight; i < ii; i++) { + dest[destPos++] = rgbBuf[rgbPos++]; + dest[destPos++] = rgbBuf[rgbPos++]; + dest[destPos++] = rgbBuf[rgbPos++]; + destPos += alpha01; + } + } + } + } + + get usesZeroToOneRange() { + return (0, _util.shadow)(this, "usesZeroToOneRange", true); + } + + static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) { + if (!localColorSpaceCache) { + throw new Error('ColorSpace._cache - expected "localColorSpaceCache" argument.'); + } + + if (!parsedColorSpace) { + throw new Error('ColorSpace._cache - expected "parsedColorSpace" argument.'); + } + + let csName, csRef; + + if (cacheKey instanceof _primitives.Ref) { + csRef = cacheKey; + cacheKey = xref.fetch(cacheKey); + } + + if (cacheKey instanceof _primitives.Name) { + csName = cacheKey.name; + } + + if (csName || csRef) { + localColorSpaceCache.set(csName, csRef, parsedColorSpace); + } + } + + static getCached(cacheKey, xref, localColorSpaceCache) { + if (!localColorSpaceCache) { + throw new Error('ColorSpace.getCached - expected "localColorSpaceCache" argument.'); + } + + if (cacheKey instanceof _primitives.Ref) { + const localColorSpace = localColorSpaceCache.getByRef(cacheKey); + + if (localColorSpace) { + return localColorSpace; + } + + try { + cacheKey = xref.fetch(cacheKey); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + } + } + + if (cacheKey instanceof _primitives.Name) { + const localColorSpace = localColorSpaceCache.getByName(cacheKey.name); + + if (localColorSpace) { + return localColorSpace; + } + } + + return null; + } + + static async parseAsync(_ref) { + let { + cs, + xref, + resources = null, + pdfFunctionFactory, + localColorSpaceCache + } = _ref; + + const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory); + + this._cache(cs, xref, localColorSpaceCache, parsedColorSpace); + + return parsedColorSpace; + } + + static parse(_ref2) { + let { + cs, + xref, + resources = null, + pdfFunctionFactory, + localColorSpaceCache + } = _ref2; + const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache); + + if (cachedColorSpace) { + return cachedColorSpace; + } + + const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory); + + this._cache(cs, xref, localColorSpaceCache, parsedColorSpace); + + return parsedColorSpace; + } + + static _parse(cs, xref) { + let resources = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + let pdfFunctionFactory = arguments.length > 3 ? arguments[3] : undefined; + cs = xref.fetchIfRef(cs); + + if (cs instanceof _primitives.Name) { + switch (cs.name) { + case "G": + case "DeviceGray": + return this.singletons.gray; + + case "RGB": + case "DeviceRGB": + return this.singletons.rgb; + + case "CMYK": + case "DeviceCMYK": + return this.singletons.cmyk; + + case "Pattern": + return new PatternCS(null); + + default: + if (resources instanceof _primitives.Dict) { + const colorSpaces = resources.get("ColorSpace"); + + if (colorSpaces instanceof _primitives.Dict) { + const resourcesCS = colorSpaces.get(cs.name); + + if (resourcesCS) { + if (resourcesCS instanceof _primitives.Name) { + return this._parse(resourcesCS, xref, resources, pdfFunctionFactory); + } + + cs = resourcesCS; + break; + } + } + } + + throw new _util.FormatError(`Unrecognized ColorSpace: ${cs.name}`); + } + } + + if (Array.isArray(cs)) { + const mode = xref.fetchIfRef(cs[0]).name; + let params, numComps, baseCS, whitePoint, blackPoint, gamma; + + switch (mode) { + case "G": + case "DeviceGray": + return this.singletons.gray; + + case "RGB": + case "DeviceRGB": + return this.singletons.rgb; + + case "CMYK": + case "DeviceCMYK": + return this.singletons.cmyk; + + case "CalGray": + params = xref.fetchIfRef(cs[1]); + whitePoint = params.getArray("WhitePoint"); + blackPoint = params.getArray("BlackPoint"); + gamma = params.get("Gamma"); + return new CalGrayCS(whitePoint, blackPoint, gamma); + + case "CalRGB": + params = xref.fetchIfRef(cs[1]); + whitePoint = params.getArray("WhitePoint"); + blackPoint = params.getArray("BlackPoint"); + gamma = params.getArray("Gamma"); + const matrix = params.getArray("Matrix"); + return new CalRGBCS(whitePoint, blackPoint, gamma, matrix); + + case "ICCBased": + const stream = xref.fetchIfRef(cs[1]); + const dict = stream.dict; + numComps = dict.get("N"); + const alt = dict.get("Alternate"); + + if (alt) { + const altCS = this._parse(alt, xref, resources, pdfFunctionFactory); + + if (altCS.numComps === numComps) { + return altCS; + } + + (0, _util.warn)("ICCBased color space: Ignoring incorrect /Alternate entry."); + } + + if (numComps === 1) { + return this.singletons.gray; + } else if (numComps === 3) { + return this.singletons.rgb; + } else if (numComps === 4) { + return this.singletons.cmyk; + } + + break; + + case "Pattern": + baseCS = cs[1] || null; + + if (baseCS) { + baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory); + } + + return new PatternCS(baseCS); + + case "I": + case "Indexed": + baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory); + const hiVal = xref.fetchIfRef(cs[2]) + 1; + const lookup = xref.fetchIfRef(cs[3]); + return new IndexedCS(baseCS, hiVal, lookup); + + case "Separation": + case "DeviceN": + const name = xref.fetchIfRef(cs[1]); + numComps = Array.isArray(name) ? name.length : 1; + baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory); + const tintFn = pdfFunctionFactory.create(cs[3]); + return new AlternateCS(numComps, baseCS, tintFn); + + case "Lab": + params = xref.fetchIfRef(cs[1]); + whitePoint = params.getArray("WhitePoint"); + blackPoint = params.getArray("BlackPoint"); + const range = params.getArray("Range"); + return new LabCS(whitePoint, blackPoint, range); + + default: + throw new _util.FormatError(`Unimplemented ColorSpace object: ${mode}`); + } + } + + throw new _util.FormatError(`Unrecognized ColorSpace object: ${cs}`); + } + + static isDefaultDecode(decode, numComps) { + if (!Array.isArray(decode)) { + return true; + } + + if (numComps * 2 !== decode.length) { + (0, _util.warn)("The decode map is not the correct length"); + return true; + } + + for (let i = 0, ii = decode.length; i < ii; i += 2) { + if (decode[i] !== 0 || decode[i + 1] !== 1) { + return false; + } + } + + return true; + } + + static get singletons() { + return (0, _util.shadow)(this, "singletons", { + get gray() { + return (0, _util.shadow)(this, "gray", new DeviceGrayCS()); + }, + + get rgb() { + return (0, _util.shadow)(this, "rgb", new DeviceRgbCS()); + }, + + get cmyk() { + return (0, _util.shadow)(this, "cmyk", new DeviceCmykCS()); + } + + }); + } + +} + +exports.ColorSpace = ColorSpace; + +class AlternateCS extends ColorSpace { + constructor(numComps, base, tintFn) { + super("Alternate", numComps); + this.base = base; + this.tintFn = tintFn; + this.tmpBuf = new Float32Array(base.numComps); + } + + getRgbItem(src, srcOffset, dest, destOffset) { + const tmpBuf = this.tmpBuf; + this.tintFn(src, srcOffset, tmpBuf, 0); + this.base.getRgbItem(tmpBuf, 0, dest, destOffset); + } + + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const tintFn = this.tintFn; + const base = this.base; + const scale = 1 / ((1 << bits) - 1); + const baseNumComps = base.numComps; + const usesZeroToOneRange = base.usesZeroToOneRange; + const isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0; + let pos = isPassthrough ? destOffset : 0; + const baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count); + const numComps = this.numComps; + const scaled = new Float32Array(numComps); + const tinted = new Float32Array(baseNumComps); + let i, j; + + for (i = 0; i < count; i++) { + for (j = 0; j < numComps; j++) { + scaled[j] = src[srcOffset++] * scale; + } + + tintFn(scaled, 0, tinted, 0); + + if (usesZeroToOneRange) { + for (j = 0; j < baseNumComps; j++) { + baseBuf[pos++] = tinted[j] * 255; + } + } else { + base.getRgbItem(tinted, 0, baseBuf, pos); + pos += baseNumComps; + } + } + + if (!isPassthrough) { + base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01); + } + } + + getOutputLength(inputLength, alpha01) { + return this.base.getOutputLength(inputLength * this.base.numComps / this.numComps, alpha01); + } + +} + +class PatternCS extends ColorSpace { + constructor(baseCS) { + super("Pattern", null); + this.base = baseCS; + } + + isDefaultDecode(decodeMap, bpc) { + (0, _util.unreachable)("Should not call PatternCS.isDefaultDecode"); + } + +} + +class IndexedCS extends ColorSpace { + constructor(base, highVal, lookup) { + super("Indexed", 1); + this.base = base; + this.highVal = highVal; + const length = base.numComps * highVal; + this.lookup = new Uint8Array(length); + + if (lookup instanceof _base_stream.BaseStream) { + const bytes = lookup.getBytes(length); + this.lookup.set(bytes); + } else if (typeof lookup === "string") { + for (let i = 0; i < length; ++i) { + this.lookup[i] = lookup.charCodeAt(i) & 0xff; + } + } else { + throw new _util.FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`); + } + } + + getRgbItem(src, srcOffset, dest, destOffset) { + const numComps = this.base.numComps; + const start = src[srcOffset] * numComps; + this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0); + } + + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const base = this.base; + const numComps = base.numComps; + const outputDelta = base.getOutputLength(numComps, alpha01); + const lookup = this.lookup; + + for (let i = 0; i < count; ++i) { + const lookupPos = src[srcOffset++] * numComps; + base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01); + destOffset += outputDelta; + } + } + + getOutputLength(inputLength, alpha01) { + return this.base.getOutputLength(inputLength * this.base.numComps, alpha01); + } + + isDefaultDecode(decodeMap, bpc) { + if (!Array.isArray(decodeMap)) { + return true; + } + + if (decodeMap.length !== 2) { + (0, _util.warn)("Decode map length is not correct"); + return true; + } + + if (!Number.isInteger(bpc) || bpc < 1) { + (0, _util.warn)("Bits per component is not correct"); + return true; + } + + return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1; + } + +} + +class DeviceGrayCS extends ColorSpace { + constructor() { + super("DeviceGray", 1); + } + + getRgbItem(src, srcOffset, dest, destOffset) { + const c = src[srcOffset] * 255; + dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c; + } + + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const scale = 255 / ((1 << bits) - 1); + let j = srcOffset, + q = destOffset; + + for (let i = 0; i < count; ++i) { + const c = scale * src[j++]; + dest[q++] = c; + dest[q++] = c; + dest[q++] = c; + q += alpha01; + } + } + + getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01); + } + +} + +class DeviceRgbCS extends ColorSpace { + constructor() { + super("DeviceRGB", 3); + } + + getRgbItem(src, srcOffset, dest, destOffset) { + dest[destOffset] = src[srcOffset] * 255; + dest[destOffset + 1] = src[srcOffset + 1] * 255; + dest[destOffset + 2] = src[srcOffset + 2] * 255; + } + + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + if (bits === 8 && alpha01 === 0) { + dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset); + return; + } + + const scale = 255 / ((1 << bits) - 1); + let j = srcOffset, + q = destOffset; + + for (let i = 0; i < count; ++i) { + dest[q++] = scale * src[j++]; + dest[q++] = scale * src[j++]; + dest[q++] = scale * src[j++]; + q += alpha01; + } + } + + getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01) / 3 | 0; + } + + isPassthrough(bits) { + return bits === 8; + } + +} + +const DeviceCmykCS = function DeviceCmykCSClosure() { + function convertToRgb(src, srcOffset, srcScale, dest, destOffset) { + const c = src[srcOffset] * srcScale; + const m = src[srcOffset + 1] * srcScale; + const y = src[srcOffset + 2] * srcScale; + const k = src[srcOffset + 3] * srcScale; + dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747); + dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578); + dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367); + } + + class DeviceCmykCS extends ColorSpace { + constructor() { + super("DeviceCMYK", 4); + } + + getRgbItem(src, srcOffset, dest, destOffset) { + convertToRgb(src, srcOffset, 1, dest, destOffset); + } + + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const scale = 1 / ((1 << bits) - 1); + + for (let i = 0; i < count; i++) { + convertToRgb(src, srcOffset, scale, dest, destOffset); + srcOffset += 4; + destOffset += 3 + alpha01; + } + } + + getOutputLength(inputLength, alpha01) { + return inputLength / 4 * (3 + alpha01) | 0; + } + + } + + return DeviceCmykCS; +}(); + +const CalGrayCS = function CalGrayCSClosure() { + function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) { + const A = src[srcOffset] * scale; + const AG = A ** cs.G; + const L = cs.YW * AG; + const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0); + dest[destOffset] = val; + dest[destOffset + 1] = val; + dest[destOffset + 2] = val; + } + + class CalGrayCS extends ColorSpace { + constructor(whitePoint, blackPoint, gamma) { + super("CalGray", 1); + + if (!whitePoint) { + throw new _util.FormatError("WhitePoint missing - required for color space CalGray"); + } + + blackPoint = blackPoint || [0, 0, 0]; + gamma = gamma || 1; + this.XW = whitePoint[0]; + this.YW = whitePoint[1]; + this.ZW = whitePoint[2]; + this.XB = blackPoint[0]; + this.YB = blackPoint[1]; + this.ZB = blackPoint[2]; + this.G = gamma; + + if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) { + throw new _util.FormatError(`Invalid WhitePoint components for ${this.name}` + ", no fallback available"); + } + + if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { + (0, _util.info)(`Invalid BlackPoint for ${this.name}, falling back to default.`); + this.XB = this.YB = this.ZB = 0; + } + + if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) { + (0, _util.warn)(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` + `ZB: ${this.ZB}, only default values are supported.`); + } + + if (this.G < 1) { + (0, _util.info)(`Invalid Gamma: ${this.G} for ${this.name}, ` + "falling back to default."); + this.G = 1; + } + } + + getRgbItem(src, srcOffset, dest, destOffset) { + convertToRgb(this, src, srcOffset, dest, destOffset, 1); + } + + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const scale = 1 / ((1 << bits) - 1); + + for (let i = 0; i < count; ++i) { + convertToRgb(this, src, srcOffset, dest, destOffset, scale); + srcOffset += 1; + destOffset += 3 + alpha01; + } + } + + getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01); + } + + } + + return CalGrayCS; +}(); + +const CalRGBCS = function CalRGBCSClosure() { + const BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]); + const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]); + const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]); + const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]); + const tempNormalizeMatrix = new Float32Array(3); + const tempConvertMatrix1 = new Float32Array(3); + const tempConvertMatrix2 = new Float32Array(3); + const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0; + + function matrixProduct(a, b, result) { + result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; + result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2]; + result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2]; + } + + function convertToFlat(sourceWhitePoint, LMS, result) { + result[0] = LMS[0] * 1 / sourceWhitePoint[0]; + result[1] = LMS[1] * 1 / sourceWhitePoint[1]; + result[2] = LMS[2] * 1 / sourceWhitePoint[2]; + } + + function convertToD65(sourceWhitePoint, LMS, result) { + const D65X = 0.95047; + const D65Y = 1; + const D65Z = 1.08883; + result[0] = LMS[0] * D65X / sourceWhitePoint[0]; + result[1] = LMS[1] * D65Y / sourceWhitePoint[1]; + result[2] = LMS[2] * D65Z / sourceWhitePoint[2]; + } + + function sRGBTransferFunction(color) { + if (color <= 0.0031308) { + return adjustToRange(0, 1, 12.92 * color); + } + + if (color >= 0.99554525) { + return 1; + } + + return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055); + } + + function adjustToRange(min, max, value) { + return Math.max(min, Math.min(max, value)); + } + + function decodeL(L) { + if (L < 0) { + return -decodeL(-L); + } + + if (L > 8.0) { + return ((L + 16) / 116) ** 3; + } + + return L * DECODE_L_CONSTANT; + } + + function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) { + if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) { + result[0] = XYZ_Flat[0]; + result[1] = XYZ_Flat[1]; + result[2] = XYZ_Flat[2]; + return; + } + + const zeroDecodeL = decodeL(0); + const X_DST = zeroDecodeL; + const X_SRC = decodeL(sourceBlackPoint[0]); + const Y_DST = zeroDecodeL; + const Y_SRC = decodeL(sourceBlackPoint[1]); + const Z_DST = zeroDecodeL; + const Z_SRC = decodeL(sourceBlackPoint[2]); + const X_Scale = (1 - X_DST) / (1 - X_SRC); + const X_Offset = 1 - X_Scale; + const Y_Scale = (1 - Y_DST) / (1 - Y_SRC); + const Y_Offset = 1 - Y_Scale; + const Z_Scale = (1 - Z_DST) / (1 - Z_SRC); + const Z_Offset = 1 - Z_Scale; + result[0] = XYZ_Flat[0] * X_Scale + X_Offset; + result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset; + result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset; + } + + function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) { + if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) { + result[0] = XYZ_In[0]; + result[1] = XYZ_In[1]; + result[2] = XYZ_In[2]; + return; + } + + const LMS = result; + matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS); + const LMS_Flat = tempNormalizeMatrix; + convertToFlat(sourceWhitePoint, LMS, LMS_Flat); + matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result); + } + + function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) { + const LMS = result; + matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS); + const LMS_D65 = tempNormalizeMatrix; + convertToD65(sourceWhitePoint, LMS, LMS_D65); + matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result); + } + + function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) { + const A = adjustToRange(0, 1, src[srcOffset] * scale); + const B = adjustToRange(0, 1, src[srcOffset + 1] * scale); + const C = adjustToRange(0, 1, src[srcOffset + 2] * scale); + const AGR = A === 1 ? 1 : A ** cs.GR; + const BGG = B === 1 ? 1 : B ** cs.GG; + const CGB = C === 1 ? 1 : C ** cs.GB; + const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB; + const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB; + const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB; + const XYZ = tempConvertMatrix1; + XYZ[0] = X; + XYZ[1] = Y; + XYZ[2] = Z; + const XYZ_Flat = tempConvertMatrix2; + normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat); + const XYZ_Black = tempConvertMatrix1; + compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black); + const XYZ_D65 = tempConvertMatrix2; + normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65); + const SRGB = tempConvertMatrix1; + matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB); + dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255; + dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255; + dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255; + } + + class CalRGBCS extends ColorSpace { + constructor(whitePoint, blackPoint, gamma, matrix) { + super("CalRGB", 3); + + if (!whitePoint) { + throw new _util.FormatError("WhitePoint missing - required for color space CalRGB"); + } + + blackPoint = blackPoint || new Float32Array(3); + gamma = gamma || new Float32Array([1, 1, 1]); + matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); + const XW = whitePoint[0]; + const YW = whitePoint[1]; + const ZW = whitePoint[2]; + this.whitePoint = whitePoint; + const XB = blackPoint[0]; + const YB = blackPoint[1]; + const ZB = blackPoint[2]; + this.blackPoint = blackPoint; + this.GR = gamma[0]; + this.GG = gamma[1]; + this.GB = gamma[2]; + this.MXA = matrix[0]; + this.MYA = matrix[1]; + this.MZA = matrix[2]; + this.MXB = matrix[3]; + this.MYB = matrix[4]; + this.MZB = matrix[5]; + this.MXC = matrix[6]; + this.MYC = matrix[7]; + this.MZC = matrix[8]; + + if (XW < 0 || ZW < 0 || YW !== 1) { + throw new _util.FormatError(`Invalid WhitePoint components for ${this.name}` + ", no fallback available"); + } + + if (XB < 0 || YB < 0 || ZB < 0) { + (0, _util.info)(`Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` + "falling back to default."); + this.blackPoint = new Float32Array(3); + } + + if (this.GR < 0 || this.GG < 0 || this.GB < 0) { + (0, _util.info)(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` + `${this.name}, falling back to default.`); + this.GR = this.GG = this.GB = 1; + } + } + + getRgbItem(src, srcOffset, dest, destOffset) { + convertToRgb(this, src, srcOffset, dest, destOffset, 1); + } + + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const scale = 1 / ((1 << bits) - 1); + + for (let i = 0; i < count; ++i) { + convertToRgb(this, src, srcOffset, dest, destOffset, scale); + srcOffset += 3; + destOffset += 3 + alpha01; + } + } + + getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01) / 3 | 0; + } + + } + + return CalRGBCS; +}(); + +const LabCS = function LabCSClosure() { + function fn_g(x) { + let result; + + if (x >= 6 / 29) { + result = x ** 3; + } else { + result = 108 / 841 * (x - 4 / 29); + } + + return result; + } + + function decode(value, high1, low2, high2) { + return low2 + value * (high2 - low2) / high1; + } + + function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) { + let Ls = src[srcOffset]; + let as = src[srcOffset + 1]; + let bs = src[srcOffset + 2]; + + if (maxVal !== false) { + Ls = decode(Ls, maxVal, 0, 100); + as = decode(as, maxVal, cs.amin, cs.amax); + bs = decode(bs, maxVal, cs.bmin, cs.bmax); + } + + if (as > cs.amax) { + as = cs.amax; + } else if (as < cs.amin) { + as = cs.amin; + } + + if (bs > cs.bmax) { + bs = cs.bmax; + } else if (bs < cs.bmin) { + bs = cs.bmin; + } + + const M = (Ls + 16) / 116; + const L = M + as / 500; + const N = M - bs / 200; + const X = cs.XW * fn_g(L); + const Y = cs.YW * fn_g(M); + const Z = cs.ZW * fn_g(N); + let r, g, b; + + if (cs.ZW < 1) { + r = X * 3.1339 + Y * -1.617 + Z * -0.4906; + g = X * -0.9785 + Y * 1.916 + Z * 0.0333; + b = X * 0.072 + Y * -0.229 + Z * 1.4057; + } else { + r = X * 3.2406 + Y * -1.5372 + Z * -0.4986; + g = X * -0.9689 + Y * 1.8758 + Z * 0.0415; + b = X * 0.0557 + Y * -0.204 + Z * 1.057; + } + + dest[destOffset] = Math.sqrt(r) * 255; + dest[destOffset + 1] = Math.sqrt(g) * 255; + dest[destOffset + 2] = Math.sqrt(b) * 255; + } + + class LabCS extends ColorSpace { + constructor(whitePoint, blackPoint, range) { + super("Lab", 3); + + if (!whitePoint) { + throw new _util.FormatError("WhitePoint missing - required for color space Lab"); + } + + blackPoint = blackPoint || [0, 0, 0]; + range = range || [-100, 100, -100, 100]; + this.XW = whitePoint[0]; + this.YW = whitePoint[1]; + this.ZW = whitePoint[2]; + this.amin = range[0]; + this.amax = range[1]; + this.bmin = range[2]; + this.bmax = range[3]; + this.XB = blackPoint[0]; + this.YB = blackPoint[1]; + this.ZB = blackPoint[2]; + + if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) { + throw new _util.FormatError("Invalid WhitePoint components, no fallback available"); + } + + if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { + (0, _util.info)("Invalid BlackPoint, falling back to default"); + this.XB = this.YB = this.ZB = 0; + } + + if (this.amin > this.amax || this.bmin > this.bmax) { + (0, _util.info)("Invalid Range, falling back to defaults"); + this.amin = -100; + this.amax = 100; + this.bmin = -100; + this.bmax = 100; + } + } + + getRgbItem(src, srcOffset, dest, destOffset) { + convertToRgb(this, src, srcOffset, false, dest, destOffset); + } + + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const maxVal = (1 << bits) - 1; + + for (let i = 0; i < count; i++) { + convertToRgb(this, src, srcOffset, maxVal, dest, destOffset); + srcOffset += 3; + destOffset += 3 + alpha01; + } + } + + getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01) / 3 | 0; + } + + isDefaultDecode(decodeMap, bpc) { + return true; + } + + get usesZeroToOneRange() { + return (0, _util.shadow)(this, "usesZeroToOneRange", false); + } + + } + + return LabCS; +}(); + +/***/ }), +/* 140 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PartialEvaluator = exports.EvaluatorPreprocessor = void 0; + +var _util = __w_pdfjs_require__(2); + +var _cmap = __w_pdfjs_require__(141); + +var _primitives = __w_pdfjs_require__(130); + +var _fonts = __w_pdfjs_require__(159); + +var _fonts_utils = __w_pdfjs_require__(163); + +var _encodings = __w_pdfjs_require__(162); + +var _standard_fonts = __w_pdfjs_require__(166); + +var _unicode = __w_pdfjs_require__(165); + +var _pattern = __w_pdfjs_require__(175); + +var _xfa_fonts = __w_pdfjs_require__(176); + +var _to_unicode_map = __w_pdfjs_require__(167); + +var _function = __w_pdfjs_require__(182); + +var _parser = __w_pdfjs_require__(142); + +var _image_utils = __w_pdfjs_require__(184); + +var _stream = __w_pdfjs_require__(135); + +var _base_stream = __w_pdfjs_require__(132); + +var _bidi = __w_pdfjs_require__(185); + +var _colorspace = __w_pdfjs_require__(139); + +var _decode_stream = __w_pdfjs_require__(144); + +var _glyphlist = __w_pdfjs_require__(164); + +var _core_utils = __w_pdfjs_require__(131); + +var _metrics = __w_pdfjs_require__(170); + +var _murmurhash = __w_pdfjs_require__(186); + +var _operator_list = __w_pdfjs_require__(187); + +var _image = __w_pdfjs_require__(188); + +const DefaultPartialEvaluatorOptions = Object.freeze({ + maxImageSize: -1, + disableFontFace: false, + ignoreErrors: false, + isEvalSupported: true, + fontExtraProperties: false, + useSystemFonts: true, + cMapUrl: null, + standardFontDataUrl: null }); +const PatternType = { + TILING: 1, + SHADING: 2 +}; +const TEXT_CHUNK_BATCH_SIZE = 10; +const deferred = Promise.resolve(); + +function normalizeBlendMode(value) { + let parsingArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (Array.isArray(value)) { + for (let i = 0, ii = value.length; i < ii; i++) { + const maybeBM = normalizeBlendMode(value[i], true); + + if (maybeBM) { + return maybeBM; + } + } + + (0, _util.warn)(`Unsupported blend mode Array: ${value}`); + return "source-over"; + } + + if (!(value instanceof _primitives.Name)) { + if (parsingArray) { + return null; + } + + return "source-over"; + } + + switch (value.name) { + case "Normal": + case "Compatible": + return "source-over"; + + case "Multiply": + return "multiply"; + + case "Screen": + return "screen"; + + case "Overlay": + return "overlay"; + + case "Darken": + return "darken"; + + case "Lighten": + return "lighten"; + + case "ColorDodge": + return "color-dodge"; + + case "ColorBurn": + return "color-burn"; + + case "HardLight": + return "hard-light"; + + case "SoftLight": + return "soft-light"; + + case "Difference": + return "difference"; + + case "Exclusion": + return "exclusion"; + + case "Hue": + return "hue"; + + case "Saturation": + return "saturation"; + + case "Color": + return "color"; + + case "Luminosity": + return "luminosity"; + } + + if (parsingArray) { + return null; + } + + (0, _util.warn)(`Unsupported blend mode: ${value.name}`); + return "source-over"; +} + +function incrementCachedImageMaskCount(data) { + if (data.fn === _util.OPS.paintImageMaskXObject && data.args[0] && data.args[0].count > 0) { + data.args[0].count++; + } +} + +class TimeSlotManager { + static get TIME_SLOT_DURATION_MS() { + return (0, _util.shadow)(this, "TIME_SLOT_DURATION_MS", 20); + } + + static get CHECK_TIME_EVERY() { + return (0, _util.shadow)(this, "CHECK_TIME_EVERY", 100); + } + + constructor() { + this.reset(); + } + + check() { + if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) { + return false; + } + + this.checked = 0; + return this.endTime <= Date.now(); + } + + reset() { + this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS; + this.checked = 0; + } + +} + +class PartialEvaluator { + constructor(_ref) { + let { + xref, + handler, + pageIndex, + idFactory, + fontCache, + builtInCMapCache, + standardFontDataCache, + globalImageCache, + options = null + } = _ref; + this.xref = xref; + this.handler = handler; + this.pageIndex = pageIndex; + this.idFactory = idFactory; + this.fontCache = fontCache; + this.builtInCMapCache = builtInCMapCache; + this.standardFontDataCache = standardFontDataCache; + this.globalImageCache = globalImageCache; + this.options = options || DefaultPartialEvaluatorOptions; + this.parsingType3Font = false; + this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this); + } + + get _pdfFunctionFactory() { + const pdfFunctionFactory = new _function.PDFFunctionFactory({ + xref: this.xref, + isEvalSupported: this.options.isEvalSupported + }); + return (0, _util.shadow)(this, "_pdfFunctionFactory", pdfFunctionFactory); + } + + clone() { + let newOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + const newEvaluator = Object.create(this); + newEvaluator.options = Object.assign(Object.create(null), this.options, newOptions); + return newEvaluator; + } + + hasBlendModes(resources, nonBlendModesSet) { + if (!(resources instanceof _primitives.Dict)) { + return false; + } + + if (resources.objId && nonBlendModesSet.has(resources.objId)) { + return false; + } + + const processed = new _primitives.RefSet(nonBlendModesSet); + + if (resources.objId) { + processed.put(resources.objId); + } + + const nodes = [resources], + xref = this.xref; + + while (nodes.length) { + const node = nodes.shift(); + const graphicStates = node.get("ExtGState"); + + if (graphicStates instanceof _primitives.Dict) { + for (let graphicState of graphicStates.getRawValues()) { + if (graphicState instanceof _primitives.Ref) { + if (processed.has(graphicState)) { + continue; + } + + try { + graphicState = xref.fetch(graphicState); + } catch (ex) { + processed.put(graphicState); + (0, _util.info)(`hasBlendModes - ignoring ExtGState: "${ex}".`); + continue; + } + } + + if (!(graphicState instanceof _primitives.Dict)) { + continue; + } + + if (graphicState.objId) { + processed.put(graphicState.objId); + } + + const bm = graphicState.get("BM"); + + if (bm instanceof _primitives.Name) { + if (bm.name !== "Normal") { + return true; + } + + continue; + } + + if (bm !== undefined && Array.isArray(bm)) { + for (const element of bm) { + if (element instanceof _primitives.Name && element.name !== "Normal") { + return true; + } + } + } + } + } + + const xObjects = node.get("XObject"); + + if (!(xObjects instanceof _primitives.Dict)) { + continue; + } + + for (let xObject of xObjects.getRawValues()) { + if (xObject instanceof _primitives.Ref) { + if (processed.has(xObject)) { + continue; + } + + try { + xObject = xref.fetch(xObject); + } catch (ex) { + processed.put(xObject); + (0, _util.info)(`hasBlendModes - ignoring XObject: "${ex}".`); + continue; + } + } + + if (!(xObject instanceof _base_stream.BaseStream)) { + continue; + } + + if (xObject.dict.objId) { + processed.put(xObject.dict.objId); + } + + const xResources = xObject.dict.get("Resources"); + + if (!(xResources instanceof _primitives.Dict)) { + continue; + } + + if (xResources.objId && processed.has(xResources.objId)) { + continue; + } + + nodes.push(xResources); + + if (xResources.objId) { + processed.put(xResources.objId); + } + } + } + + for (const ref of processed) { + nonBlendModesSet.put(ref); + } + + return false; + } + + async fetchBuiltInCMap(name) { + const cachedData = this.builtInCMapCache.get(name); + + if (cachedData) { + return cachedData; + } + + let data; + + if (this.options.cMapUrl !== null) { + const url = `${this.options.cMapUrl}${name}.bcmap`; + const response = await fetch(url); + + if (!response.ok) { + throw new Error(`fetchBuiltInCMap: failed to fetch file "${url}" with "${response.statusText}".`); + } + + data = { + cMapData: new Uint8Array(await response.arrayBuffer()), + compressionType: _util.CMapCompressionType.BINARY + }; + } else { + data = await this.handler.sendWithPromise("FetchBuiltInCMap", { + name + }); + } + + if (data.compressionType !== _util.CMapCompressionType.NONE) { + this.builtInCMapCache.set(name, data); + } + + return data; + } + + async fetchStandardFontData(name) { + const cachedData = this.standardFontDataCache.get(name); + + if (cachedData) { + return new _stream.Stream(cachedData); + } + + if (this.options.useSystemFonts && name !== "Symbol" && name !== "ZapfDingbats") { + return null; + } + + const standardFontNameToFileName = (0, _standard_fonts.getFontNameToFileMap)(), + filename = standardFontNameToFileName[name]; + let data; + + if (this.options.standardFontDataUrl !== null) { + const url = `${this.options.standardFontDataUrl}${filename}`; + const response = await fetch(url); + + if (!response.ok) { + (0, _util.warn)(`fetchStandardFontData: failed to fetch file "${url}" with "${response.statusText}".`); + } else { + data = await response.arrayBuffer(); + } + } else { + try { + data = await this.handler.sendWithPromise("FetchStandardFontData", { + filename + }); + } catch (e) { + (0, _util.warn)(`fetchStandardFontData: failed to fetch file "${filename}" with "${e}".`); + } + } + + if (!data) { + return null; + } + + this.standardFontDataCache.set(name, data); + return new _stream.Stream(data); + } + + async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache) { + const dict = xobj.dict; + const matrix = dict.getArray("Matrix"); + let bbox = dict.getArray("BBox"); + + if (Array.isArray(bbox) && bbox.length === 4) { + bbox = _util.Util.normalizeRect(bbox); + } else { + bbox = null; + } + + let optionalContent, groupOptions; + + if (dict.has("OC")) { + optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources); + } + + if (optionalContent !== undefined) { + operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]); + } + + const group = dict.get("Group"); + + if (group) { + groupOptions = { + matrix, + bbox, + smask, + isolated: false, + knockout: false + }; + const groupSubtype = group.get("S"); + let colorSpace = null; + + if ((0, _primitives.isName)(groupSubtype, "Transparency")) { + groupOptions.isolated = group.get("I") || false; + groupOptions.knockout = group.get("K") || false; + + if (group.has("CS")) { + const cs = group.getRaw("CS"); + + const cachedColorSpace = _colorspace.ColorSpace.getCached(cs, this.xref, localColorSpaceCache); + + if (cachedColorSpace) { + colorSpace = cachedColorSpace; + } else { + colorSpace = await this.parseColorSpace({ + cs, + resources, + localColorSpaceCache + }); + } + } + } + + if (smask && smask.backdrop) { + colorSpace = colorSpace || _colorspace.ColorSpace.singletons.rgb; + smask.backdrop = colorSpace.getRgb(smask.backdrop, 0); + } + + operatorList.addOp(_util.OPS.beginGroup, [groupOptions]); + } + + const args = group ? [matrix, null] : [matrix, bbox]; + operatorList.addOp(_util.OPS.paintFormXObjectBegin, args); + return this.getOperatorList({ + stream: xobj, + task, + resources: dict.get("Resources") || resources, + operatorList, + initialState + }).then(function () { + operatorList.addOp(_util.OPS.paintFormXObjectEnd, []); + + if (group) { + operatorList.addOp(_util.OPS.endGroup, [groupOptions]); + } + + if (optionalContent !== undefined) { + operatorList.addOp(_util.OPS.endMarkedContent, []); + } + }); + } + + _sendImgData(objId, imgData) { + let cacheGlobally = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + const transfers = imgData ? [imgData.bitmap || imgData.data.buffer] : null; + + if (this.parsingType3Font || cacheGlobally) { + return this.handler.send("commonobj", [objId, "Image", imgData], transfers); + } + + return this.handler.send("obj", [objId, this.pageIndex, "Image", imgData], transfers); + } + + async buildPaintImageXObject(_ref2) { + let { + resources, + image, + isInline = false, + operatorList, + cacheKey, + localImageCache, + localColorSpaceCache + } = _ref2; + const dict = image.dict; + const imageRef = dict.objId; + const w = dict.get("W", "Width"); + const h = dict.get("H", "Height"); + + if (!(w && typeof w === "number") || !(h && typeof h === "number")) { + (0, _util.warn)("Image dimensions are missing, or not numbers."); + return; + } + + const maxImageSize = this.options.maxImageSize; + + if (maxImageSize !== -1 && w * h > maxImageSize) { + const msg = "Image exceeded maximum allowed size and was removed."; + + if (this.options.ignoreErrors) { + (0, _util.warn)(msg); + return; + } + + throw new Error(msg); + } + + let optionalContent; + + if (dict.has("OC")) { + optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources); + } + + const imageMask = dict.get("IM", "ImageMask") || false; + let imgData, args; + + if (imageMask) { + const interpolate = dict.get("I", "Interpolate"); + const bitStrideLength = w + 7 >> 3; + const imgArray = image.getBytes(bitStrideLength * h); + const decode = dict.getArray("D", "Decode"); + + if (this.parsingType3Font) { + imgData = _image.PDFImage.createRawMask({ + imgArray, + width: w, + height: h, + imageIsFromDecodeStream: image instanceof _decode_stream.DecodeStream, + inverseDecode: !!decode && decode[0] > 0, + interpolate + }); + imgData.cached = !!cacheKey; + args = [imgData]; + operatorList.addImageOps(_util.OPS.paintImageMaskXObject, args, optionalContent); + + if (cacheKey) { + localImageCache.set(cacheKey, imageRef, { + fn: _util.OPS.paintImageMaskXObject, + args, + optionalContent + }); + } + + return; + } + + imgData = _image.PDFImage.createMask({ + imgArray, + width: w, + height: h, + imageIsFromDecodeStream: image instanceof _decode_stream.DecodeStream, + inverseDecode: !!decode && decode[0] > 0, + interpolate + }); + + if (imgData.isSingleOpaquePixel) { + operatorList.addImageOps(_util.OPS.paintSolidColorImageMask, [], optionalContent); + + if (cacheKey) { + localImageCache.set(cacheKey, imageRef, { + fn: _util.OPS.paintSolidColorImageMask, + args: [], + optionalContent + }); + } + + return; + } + + const objId = `mask_${this.idFactory.createObjId()}`; + operatorList.addDependency(objId); + + this._sendImgData(objId, imgData); + + args = [{ + data: objId, + width: imgData.width, + height: imgData.height, + interpolate: imgData.interpolate, + count: 1 + }]; + operatorList.addImageOps(_util.OPS.paintImageMaskXObject, args, optionalContent); + + if (cacheKey) { + localImageCache.set(cacheKey, imageRef, { + fn: _util.OPS.paintImageMaskXObject, + args, + optionalContent + }); + } + + return; + } + + const softMask = dict.get("SM", "SMask") || false; + const mask = dict.get("Mask") || false; + const SMALL_IMAGE_DIMENSIONS = 200; + + if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) { + const imageObj = new _image.PDFImage({ + xref: this.xref, + res: resources, + image, + isInline, + pdfFunctionFactory: this._pdfFunctionFactory, + localColorSpaceCache + }); + imgData = imageObj.createImageData(true); + operatorList.addImageOps(_util.OPS.paintInlineImageXObject, [imgData], optionalContent); + return; + } + + let objId = `img_${this.idFactory.createObjId()}`, + cacheGlobally = false; + + if (this.parsingType3Font) { + objId = `${this.idFactory.getDocId()}_type3_${objId}`; + } else if (imageRef) { + cacheGlobally = this.globalImageCache.shouldCache(imageRef, this.pageIndex); + + if (cacheGlobally) { + objId = `${this.idFactory.getDocId()}_${objId}`; + } + } + + operatorList.addDependency(objId); + args = [objId, w, h]; + + _image.PDFImage.buildImage({ + xref: this.xref, + res: resources, + image, + isInline, + pdfFunctionFactory: this._pdfFunctionFactory, + localColorSpaceCache + }).then(imageObj => { + imgData = imageObj.createImageData(false); + + if (cacheKey && imageRef && cacheGlobally) { + this.globalImageCache.addByteSize(imageRef, imgData.data.length); + } + + return this._sendImgData(objId, imgData, cacheGlobally); + }).catch(reason => { + (0, _util.warn)(`Unable to decode image "${objId}": "${reason}".`); + return this._sendImgData(objId, null, cacheGlobally); + }); + + operatorList.addImageOps(_util.OPS.paintImageXObject, args, optionalContent); + + if (cacheKey) { + localImageCache.set(cacheKey, imageRef, { + fn: _util.OPS.paintImageXObject, + args, + optionalContent + }); + + if (imageRef) { + (0, _util.assert)(!isInline, "Cannot cache an inline image globally."); + this.globalImageCache.addPageIndex(imageRef, this.pageIndex); + + if (cacheGlobally) { + this.globalImageCache.setData(imageRef, { + objId, + fn: _util.OPS.paintImageXObject, + args, + optionalContent, + byteSize: 0 + }); + } + } + } + } + + handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache) { + const smaskContent = smask.get("G"); + const smaskOptions = { + subtype: smask.get("S").name, + backdrop: smask.get("BC") + }; + const transferObj = smask.get("TR"); + + if ((0, _function.isPDFFunction)(transferObj)) { + const transferFn = this._pdfFunctionFactory.create(transferObj); + + const transferMap = new Uint8Array(256); + const tmp = new Float32Array(1); + + for (let i = 0; i < 256; i++) { + tmp[0] = i / 255; + transferFn(tmp, 0, tmp, 0); + transferMap[i] = tmp[0] * 255 | 0; + } + + smaskOptions.transferMap = transferMap; + } + + return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone(), localColorSpaceCache); + } + + handleTransferFunction(tr) { + let transferArray; + + if (Array.isArray(tr)) { + transferArray = tr; + } else if ((0, _function.isPDFFunction)(tr)) { + transferArray = [tr]; + } else { + return null; + } + + const transferMaps = []; + let numFns = 0, + numEffectfulFns = 0; + + for (const entry of transferArray) { + const transferObj = this.xref.fetchIfRef(entry); + numFns++; + + if ((0, _primitives.isName)(transferObj, "Identity")) { + transferMaps.push(null); + continue; + } else if (!(0, _function.isPDFFunction)(transferObj)) { + return null; + } + + const transferFn = this._pdfFunctionFactory.create(transferObj); + + const transferMap = new Uint8Array(256), + tmp = new Float32Array(1); + + for (let j = 0; j < 256; j++) { + tmp[0] = j / 255; + transferFn(tmp, 0, tmp, 0); + transferMap[j] = tmp[0] * 255 | 0; + } + + transferMaps.push(transferMap); + numEffectfulFns++; + } + + if (!(numFns === 1 || numFns === 4)) { + return null; + } + + if (numEffectfulFns === 0) { + return null; + } + + return transferMaps; + } + + handleTilingType(fn, color, resources, pattern, patternDict, operatorList, task, localTilingPatternCache) { + const tilingOpList = new _operator_list.OperatorList(); + + const patternResources = _primitives.Dict.merge({ + xref: this.xref, + dictArray: [patternDict.get("Resources"), resources] + }); + + return this.getOperatorList({ + stream: pattern, + task, + resources: patternResources, + operatorList: tilingOpList + }).then(function () { + const operatorListIR = tilingOpList.getIR(); + const tilingPatternIR = (0, _pattern.getTilingPatternIR)(operatorListIR, patternDict, color); + operatorList.addDependencies(tilingOpList.dependencies); + operatorList.addOp(fn, tilingPatternIR); + + if (patternDict.objId) { + localTilingPatternCache.set(null, patternDict.objId, { + operatorListIR, + dict: patternDict + }); + } + }).catch(reason => { + if (reason instanceof _util.AbortException) { + return; + } + + if (this.options.ignoreErrors) { + this.handler.send("UnsupportedFeature", { + featureId: _util.UNSUPPORTED_FEATURES.errorTilingPattern + }); + (0, _util.warn)(`handleTilingType - ignoring pattern: "${reason}".`); + return; + } + + throw reason; + }); + } + + handleSetFont(resources, fontArgs, fontRef, operatorList, task, state) { + let fallbackFontDict = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null; + let cssFontInfo = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null; + const fontName = fontArgs && fontArgs[0] instanceof _primitives.Name ? fontArgs[0].name : null; + return this.loadFont(fontName, fontRef, resources, fallbackFontDict, cssFontInfo).then(translated => { + if (!translated.font.isType3Font) { + return translated; + } + + return translated.loadType3Data(this, resources, task).then(function () { + operatorList.addDependencies(translated.type3Dependencies); + return translated; + }).catch(reason => { + this.handler.send("UnsupportedFeature", { + featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadType3 + }); + return new TranslatedFont({ + loadedName: "g_font_error", + font: new _fonts.ErrorFont(`Type3 font load error: ${reason}`), + dict: translated.font, + evaluatorOptions: this.options + }); + }); + }).then(translated => { + state.font = translated.font; + translated.send(this.handler); + return translated.loadedName; + }); + } + + handleText(chars, state) { + const font = state.font; + const glyphs = font.charsToGlyphs(chars); + + if (font.data) { + const isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); + + if (isAddToPathSet || state.fillColorSpace.name === "Pattern" || font.disableFontFace || this.options.disableFontFace) { + PartialEvaluator.buildFontPaths(font, glyphs, this.handler, this.options); + } + } + + return glyphs; + } + + ensureStateFont(state) { + if (state.font) { + return; + } + + const reason = new _util.FormatError("Missing setFont (Tf) operator before text rendering operator."); + + if (this.options.ignoreErrors) { + this.handler.send("UnsupportedFeature", { + featureId: _util.UNSUPPORTED_FEATURES.errorFontState + }); + (0, _util.warn)(`ensureStateFont: "${reason}".`); + return; + } + + throw reason; + } + + async setGState(_ref3) { + let { + resources, + gState, + operatorList, + cacheKey, + task, + stateManager, + localGStateCache, + localColorSpaceCache + } = _ref3; + const gStateRef = gState.objId; + let isSimpleGState = true; + const gStateObj = []; + const gStateKeys = gState.getKeys(); + let promise = Promise.resolve(); + + for (let i = 0, ii = gStateKeys.length; i < ii; i++) { + const key = gStateKeys[i]; + const value = gState.get(key); + + switch (key) { + case "Type": + break; + + case "LW": + case "LC": + case "LJ": + case "ML": + case "D": + case "RI": + case "FL": + case "CA": + case "ca": + gStateObj.push([key, value]); + break; + + case "Font": + isSimpleGState = false; + promise = promise.then(() => { + return this.handleSetFont(resources, null, value[0], operatorList, task, stateManager.state).then(function (loadedName) { + operatorList.addDependency(loadedName); + gStateObj.push([key, [loadedName, value[1]]]); + }); + }); + break; + + case "BM": + gStateObj.push([key, normalizeBlendMode(value)]); + break; + + case "SMask": + if ((0, _primitives.isName)(value, "None")) { + gStateObj.push([key, false]); + break; + } + + if (value instanceof _primitives.Dict) { + isSimpleGState = false; + promise = promise.then(() => { + return this.handleSMask(value, resources, operatorList, task, stateManager, localColorSpaceCache); + }); + gStateObj.push([key, true]); + } else { + (0, _util.warn)("Unsupported SMask type"); + } + + break; + + case "TR": + const transferMaps = this.handleTransferFunction(value); + gStateObj.push([key, transferMaps]); + break; + + case "OP": + case "op": + case "OPM": + case "BG": + case "BG2": + case "UCR": + case "UCR2": + case "TR2": + case "HT": + case "SM": + case "SA": + case "AIS": + case "TK": + (0, _util.info)("graphic state operator " + key); + break; + + default: + (0, _util.info)("Unknown graphic state operator " + key); + break; + } + } + + return promise.then(function () { + if (gStateObj.length > 0) { + operatorList.addOp(_util.OPS.setGState, [gStateObj]); + } + + if (isSimpleGState) { + localGStateCache.set(cacheKey, gStateRef, gStateObj); + } + }); + } + + loadFont(fontName, font, resources) { + let fallbackFontDict = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + let cssFontInfo = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null; + + const errorFont = async () => { + return new TranslatedFont({ + loadedName: "g_font_error", + font: new _fonts.ErrorFont(`Font "${fontName}" is not available.`), + dict: font, + evaluatorOptions: this.options + }); + }; + + const xref = this.xref; + let fontRef; + + if (font) { + if (font instanceof _primitives.Ref) { + fontRef = font; + } + } else { + const fontRes = resources.get("Font"); + + if (fontRes) { + fontRef = fontRes.getRaw(fontName); + } + } + + if (!fontRef) { + const partialMsg = `Font "${fontName || font && font.toString()}" is not available`; + + if (!this.options.ignoreErrors && !this.parsingType3Font) { + (0, _util.warn)(`${partialMsg}.`); + return errorFont(); + } + + this.handler.send("UnsupportedFeature", { + featureId: _util.UNSUPPORTED_FEATURES.errorFontMissing + }); + (0, _util.warn)(`${partialMsg} -- attempting to fallback to a default font.`); + + if (fallbackFontDict) { + fontRef = fallbackFontDict; + } else { + fontRef = PartialEvaluator.fallbackFontDict; + } + } + + if (this.parsingType3Font && this.type3FontRefs.has(fontRef)) { + return errorFont(); + } + + if (this.fontCache.has(fontRef)) { + return this.fontCache.get(fontRef); + } + + font = xref.fetchIfRef(fontRef); + + if (!(font instanceof _primitives.Dict)) { + return errorFont(); + } + + if (font.cacheKey && this.fontCache.has(font.cacheKey)) { + return this.fontCache.get(font.cacheKey); + } + + const fontCapability = (0, _util.createPromiseCapability)(); + let preEvaluatedFont; + + try { + preEvaluatedFont = this.preEvaluateFont(font); + preEvaluatedFont.cssFontInfo = cssFontInfo; + } catch (reason) { + (0, _util.warn)(`loadFont - preEvaluateFont failed: "${reason}".`); + return errorFont(); + } + + const { + descriptor, + hash + } = preEvaluatedFont; + const fontRefIsRef = fontRef instanceof _primitives.Ref; + let fontID; + + if (fontRefIsRef) { + fontID = `f${fontRef.toString()}`; + } + + if (hash && descriptor instanceof _primitives.Dict) { + if (!descriptor.fontAliases) { + descriptor.fontAliases = Object.create(null); + } + + const fontAliases = descriptor.fontAliases; + + if (fontAliases[hash]) { + const aliasFontRef = fontAliases[hash].aliasRef; + + if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) { + this.fontCache.putAlias(fontRef, aliasFontRef); + return this.fontCache.get(fontRef); + } + } else { + fontAliases[hash] = { + fontID: this.idFactory.createFontId() + }; + } + + if (fontRefIsRef) { + fontAliases[hash].aliasRef = fontRef; + } + + fontID = fontAliases[hash].fontID; + } + + if (fontRefIsRef) { + this.fontCache.put(fontRef, fontCapability.promise); + } else { + if (!fontID) { + fontID = this.idFactory.createFontId(); + } + + font.cacheKey = `cacheKey_${fontID}`; + this.fontCache.put(font.cacheKey, fontCapability.promise); + } + + (0, _util.assert)(fontID && fontID.startsWith("f"), 'The "fontID" must be (correctly) defined.'); + font.loadedName = `${this.idFactory.getDocId()}_${fontID}`; + this.translateFont(preEvaluatedFont).then(translatedFont => { + if (translatedFont.fontType !== undefined) { + xref.stats.addFontType(translatedFont.fontType); + } + + fontCapability.resolve(new TranslatedFont({ + loadedName: font.loadedName, + font: translatedFont, + dict: font, + evaluatorOptions: this.options + })); + }).catch(reason => { + this.handler.send("UnsupportedFeature", { + featureId: _util.UNSUPPORTED_FEATURES.errorFontTranslate + }); + (0, _util.warn)(`loadFont - translateFont failed: "${reason}".`); + + try { + const fontFile3 = descriptor && descriptor.get("FontFile3"); + const subtype = fontFile3 && fontFile3.get("Subtype"); + const fontType = (0, _fonts_utils.getFontType)(preEvaluatedFont.type, subtype && subtype.name); + + if (fontType !== undefined) { + xref.stats.addFontType(fontType); + } + } catch (ex) {} + + fontCapability.resolve(new TranslatedFont({ + loadedName: font.loadedName, + font: new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason), + dict: font, + evaluatorOptions: this.options + })); + }); + return fontCapability.promise; + } + + buildPath(operatorList, fn, args) { + let parsingText = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + const lastIndex = operatorList.length - 1; + + if (!args) { + args = []; + } + + let minMax; + + if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) { + if (parsingText) { + (0, _util.warn)(`Encountered path operator "${fn}" inside of a text object.`); + operatorList.addOp(_util.OPS.save, null); + } + + minMax = [Infinity, -Infinity, Infinity, -Infinity]; + operatorList.addOp(_util.OPS.constructPath, [[fn], args, minMax]); + + if (parsingText) { + operatorList.addOp(_util.OPS.restore, null); + } + } else { + const opArgs = operatorList.argsArray[lastIndex]; + opArgs[0].push(fn); + Array.prototype.push.apply(opArgs[1], args); + minMax = opArgs[2]; + } + + switch (fn) { + case _util.OPS.rectangle: + minMax[0] = Math.min(minMax[0], args[0], args[0] + args[2]); + minMax[1] = Math.max(minMax[1], args[0], args[0] + args[2]); + minMax[2] = Math.min(minMax[2], args[1], args[1] + args[3]); + minMax[3] = Math.max(minMax[3], args[1], args[1] + args[3]); + break; + + case _util.OPS.moveTo: + case _util.OPS.lineTo: + minMax[0] = Math.min(minMax[0], args[0]); + minMax[1] = Math.max(minMax[1], args[0]); + minMax[2] = Math.min(minMax[2], args[1]); + minMax[3] = Math.max(minMax[3], args[1]); + break; + } + } + + parseColorSpace(_ref4) { + let { + cs, + resources, + localColorSpaceCache + } = _ref4; + return _colorspace.ColorSpace.parseAsync({ + cs, + xref: this.xref, + resources, + pdfFunctionFactory: this._pdfFunctionFactory, + localColorSpaceCache + }).catch(reason => { + if (reason instanceof _util.AbortException) { + return null; + } + + if (this.options.ignoreErrors) { + this.handler.send("UnsupportedFeature", { + featureId: _util.UNSUPPORTED_FEATURES.errorColorSpace + }); + (0, _util.warn)(`parseColorSpace - ignoring ColorSpace: "${reason}".`); + return null; + } + + throw reason; + }); + } + + parseShading(_ref5) { + let { + shading, + resources, + localColorSpaceCache, + localShadingPatternCache + } = _ref5; + let id = localShadingPatternCache.get(shading); + + if (!id) { + var shadingFill = _pattern.Pattern.parseShading(shading, this.xref, resources, this.handler, this._pdfFunctionFactory, localColorSpaceCache); + + const patternIR = shadingFill.getIR(); + id = `pattern_${this.idFactory.createObjId()}`; + localShadingPatternCache.set(shading, id); + this.handler.send("obj", [id, this.pageIndex, "Pattern", patternIR]); + } + + return id; + } + + handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache) { + const patternName = args.pop(); + + if (patternName instanceof _primitives.Name) { + const rawPattern = patterns.getRaw(patternName.name); + const localTilingPattern = rawPattern instanceof _primitives.Ref && localTilingPatternCache.getByRef(rawPattern); + + if (localTilingPattern) { + try { + const color = cs.base ? cs.base.getRgb(args, 0) : null; + const tilingPatternIR = (0, _pattern.getTilingPatternIR)(localTilingPattern.operatorListIR, localTilingPattern.dict, color); + operatorList.addOp(fn, tilingPatternIR); + return undefined; + } catch (ex) {} + } + + const pattern = this.xref.fetchIfRef(rawPattern); + + if (pattern) { + const dict = pattern instanceof _base_stream.BaseStream ? pattern.dict : pattern; + const typeNum = dict.get("PatternType"); + + if (typeNum === PatternType.TILING) { + const color = cs.base ? cs.base.getRgb(args, 0) : null; + return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task, localTilingPatternCache); + } else if (typeNum === PatternType.SHADING) { + const shading = dict.get("Shading"); + const matrix = dict.getArray("Matrix"); + const objId = this.parseShading({ + shading, + resources, + localColorSpaceCache, + localShadingPatternCache + }); + operatorList.addOp(fn, ["Shading", objId, matrix]); + return undefined; + } + + throw new _util.FormatError(`Unknown PatternType: ${typeNum}`); + } + } + + throw new _util.FormatError(`Unknown PatternName: ${patternName}`); + } + + _parseVisibilityExpression(array, nestingCounter, currentResult) { + const MAX_NESTING = 10; + + if (++nestingCounter > MAX_NESTING) { + (0, _util.warn)("Visibility expression is too deeply nested"); + return; + } + + const length = array.length; + const operator = this.xref.fetchIfRef(array[0]); + + if (length < 2 || !(operator instanceof _primitives.Name)) { + (0, _util.warn)("Invalid visibility expression"); + return; + } + + switch (operator.name) { + case "And": + case "Or": + case "Not": + currentResult.push(operator.name); + break; + + default: + (0, _util.warn)(`Invalid operator ${operator.name} in visibility expression`); + return; + } + + for (let i = 1; i < length; i++) { + const raw = array[i]; + const object = this.xref.fetchIfRef(raw); + + if (Array.isArray(object)) { + const nestedResult = []; + currentResult.push(nestedResult); + + this._parseVisibilityExpression(object, nestingCounter, nestedResult); + } else if (raw instanceof _primitives.Ref) { + currentResult.push(raw.toString()); + } + } + } + + async parseMarkedContentProps(contentProperties, resources) { + let optionalContent; + + if (contentProperties instanceof _primitives.Name) { + const properties = resources.get("Properties"); + optionalContent = properties.get(contentProperties.name); + } else if (contentProperties instanceof _primitives.Dict) { + optionalContent = contentProperties; + } else { + throw new _util.FormatError("Optional content properties malformed."); + } + + const optionalContentType = optionalContent.get("Type").name; + + if (optionalContentType === "OCG") { + return { + type: optionalContentType, + id: optionalContent.objId + }; + } else if (optionalContentType === "OCMD") { + const expression = optionalContent.get("VE"); + + if (Array.isArray(expression)) { + const result = []; + + this._parseVisibilityExpression(expression, 0, result); + + if (result.length > 0) { + return { + type: "OCMD", + expression: result + }; + } + } + + const optionalContentGroups = optionalContent.get("OCGs"); + + if (Array.isArray(optionalContentGroups) || optionalContentGroups instanceof _primitives.Dict) { + const groupIds = []; + + if (Array.isArray(optionalContentGroups)) { + for (const ocg of optionalContentGroups) { + groupIds.push(ocg.toString()); + } + } else { + groupIds.push(optionalContentGroups.objId); + } + + return { + type: optionalContentType, + ids: groupIds, + policy: optionalContent.get("P") instanceof _primitives.Name ? optionalContent.get("P").name : null, + expression: null + }; + } else if (optionalContentGroups instanceof _primitives.Ref) { + return { + type: optionalContentType, + id: optionalContentGroups.toString() + }; + } + } + + return null; + } + + getOperatorList(_ref6) { + let { + stream, + task, + resources, + operatorList, + initialState = null, + fallbackFontDict = null + } = _ref6; + resources = resources || _primitives.Dict.empty; + initialState = initialState || new EvalState(); + + if (!operatorList) { + throw new Error('getOperatorList: missing "operatorList" parameter'); + } + + const self = this; + const xref = this.xref; + let parsingText = false; + const localImageCache = new _image_utils.LocalImageCache(); + const localColorSpaceCache = new _image_utils.LocalColorSpaceCache(); + const localGStateCache = new _image_utils.LocalGStateCache(); + const localTilingPatternCache = new _image_utils.LocalTilingPatternCache(); + const localShadingPatternCache = new Map(); + + const xobjs = resources.get("XObject") || _primitives.Dict.empty; + + const patterns = resources.get("Pattern") || _primitives.Dict.empty; + + const stateManager = new StateManager(initialState); + const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); + const timeSlotManager = new TimeSlotManager(); + + function closePendingRestoreOPS(argument) { + for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) { + operatorList.addOp(_util.OPS.restore, []); + } + } + + return new Promise(function promiseBody(resolve, reject) { + const next = function (promise) { + Promise.all([promise, operatorList.ready]).then(function () { + try { + promiseBody(resolve, reject); + } catch (ex) { + reject(ex); + } + }, reject); + }; + + task.ensureNotTerminated(); + timeSlotManager.reset(); + const operation = {}; + let stop, i, ii, cs, name, isValidName; + + while (!(stop = timeSlotManager.check())) { + operation.args = null; + + if (!preprocessor.read(operation)) { + break; + } + + let args = operation.args; + let fn = operation.fn; + + switch (fn | 0) { + case _util.OPS.paintXObject: + isValidName = args[0] instanceof _primitives.Name; + name = args[0].name; + + if (isValidName) { + const localImage = localImageCache.getByName(name); + + if (localImage) { + operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent); + incrementCachedImageMaskCount(localImage); + args = null; + continue; + } + } + + next(new Promise(function (resolveXObject, rejectXObject) { + if (!isValidName) { + throw new _util.FormatError("XObject must be referred to by name."); + } + + let xobj = xobjs.getRaw(name); + + if (xobj instanceof _primitives.Ref) { + const localImage = localImageCache.getByRef(xobj); + + if (localImage) { + operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent); + incrementCachedImageMaskCount(localImage); + resolveXObject(); + return; + } + + const globalImage = self.globalImageCache.getData(xobj, self.pageIndex); + + if (globalImage) { + operatorList.addDependency(globalImage.objId); + operatorList.addImageOps(globalImage.fn, globalImage.args, globalImage.optionalContent); + resolveXObject(); + return; + } + + xobj = xref.fetch(xobj); + } + + if (!(xobj instanceof _base_stream.BaseStream)) { + throw new _util.FormatError("XObject should be a stream"); + } + + const type = xobj.dict.get("Subtype"); + + if (!(type instanceof _primitives.Name)) { + throw new _util.FormatError("XObject should have a Name subtype"); + } + + if (type.name === "Form") { + stateManager.save(); + self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone(), localColorSpaceCache).then(function () { + stateManager.restore(); + resolveXObject(); + }, rejectXObject); + return; + } else if (type.name === "Image") { + self.buildPaintImageXObject({ + resources, + image: xobj, + operatorList, + cacheKey: name, + localImageCache, + localColorSpaceCache + }).then(resolveXObject, rejectXObject); + return; + } else if (type.name === "PS") { + (0, _util.info)("Ignored XObject subtype PS"); + } else { + throw new _util.FormatError(`Unhandled XObject subtype ${type.name}`); + } + + resolveXObject(); + }).catch(function (reason) { + if (reason instanceof _util.AbortException) { + return; + } + + if (self.options.ignoreErrors) { + self.handler.send("UnsupportedFeature", { + featureId: _util.UNSUPPORTED_FEATURES.errorXObject + }); + (0, _util.warn)(`getOperatorList - ignoring XObject: "${reason}".`); + return; + } + + throw reason; + })); + return; + + case _util.OPS.setFont: + var fontSize = args[1]; + next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, fallbackFontDict).then(function (loadedName) { + operatorList.addDependency(loadedName); + operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]); + })); + return; + + case _util.OPS.beginText: + parsingText = true; + break; + + case _util.OPS.endText: + parsingText = false; + break; + + case _util.OPS.endInlineImage: + var cacheKey = args[0].cacheKey; + + if (cacheKey) { + const localImage = localImageCache.getByName(cacheKey); + + if (localImage) { + operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent); + incrementCachedImageMaskCount(localImage); + args = null; + continue; + } + } + + next(self.buildPaintImageXObject({ + resources, + image: args[0], + isInline: true, + operatorList, + cacheKey, + localImageCache, + localColorSpaceCache + })); + return; + + case _util.OPS.showText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + + args[0] = self.handleText(args[0], stateManager.state); + break; + + case _util.OPS.showSpacedText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + + var arr = args[0]; + var combinedGlyphs = []; + var arrLength = arr.length; + var state = stateManager.state; + + for (i = 0; i < arrLength; ++i) { + const arrItem = arr[i]; + + if (typeof arrItem === "string") { + Array.prototype.push.apply(combinedGlyphs, self.handleText(arrItem, state)); + } else if (typeof arrItem === "number") { + combinedGlyphs.push(arrItem); + } + } + + args[0] = combinedGlyphs; + fn = _util.OPS.showText; + break; + + case _util.OPS.nextLineShowText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + + operatorList.addOp(_util.OPS.nextLine); + args[0] = self.handleText(args[0], stateManager.state); + fn = _util.OPS.showText; + break; + + case _util.OPS.nextLineSetSpacingShowText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + + operatorList.addOp(_util.OPS.nextLine); + operatorList.addOp(_util.OPS.setWordSpacing, [args.shift()]); + operatorList.addOp(_util.OPS.setCharSpacing, [args.shift()]); + args[0] = self.handleText(args[0], stateManager.state); + fn = _util.OPS.showText; + break; + + case _util.OPS.setTextRenderingMode: + stateManager.state.textRenderingMode = args[0]; + break; + + case _util.OPS.setFillColorSpace: + { + const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache); + + if (cachedColorSpace) { + stateManager.state.fillColorSpace = cachedColorSpace; + continue; + } + + next(self.parseColorSpace({ + cs: args[0], + resources, + localColorSpaceCache + }).then(function (colorSpace) { + if (colorSpace) { + stateManager.state.fillColorSpace = colorSpace; + } + })); + return; + } + + case _util.OPS.setStrokeColorSpace: + { + const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache); + + if (cachedColorSpace) { + stateManager.state.strokeColorSpace = cachedColorSpace; + continue; + } + + next(self.parseColorSpace({ + cs: args[0], + resources, + localColorSpaceCache + }).then(function (colorSpace) { + if (colorSpace) { + stateManager.state.strokeColorSpace = colorSpace; + } + })); + return; + } + + case _util.OPS.setFillColor: + cs = stateManager.state.fillColorSpace; + args = cs.getRgb(args, 0); + fn = _util.OPS.setFillRGBColor; + break; + + case _util.OPS.setStrokeColor: + cs = stateManager.state.strokeColorSpace; + args = cs.getRgb(args, 0); + fn = _util.OPS.setStrokeRGBColor; + break; + + case _util.OPS.setFillGray: + stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.gray; + args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0); + fn = _util.OPS.setFillRGBColor; + break; + + case _util.OPS.setStrokeGray: + stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray; + args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0); + fn = _util.OPS.setStrokeRGBColor; + break; + + case _util.OPS.setFillCMYKColor: + stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk; + args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0); + fn = _util.OPS.setFillRGBColor; + break; + + case _util.OPS.setStrokeCMYKColor: + stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk; + args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0); + fn = _util.OPS.setStrokeRGBColor; + break; + + case _util.OPS.setFillRGBColor: + stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb; + args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0); + break; + + case _util.OPS.setStrokeRGBColor: + stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb; + args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0); + break; + + case _util.OPS.setFillColorN: + cs = stateManager.state.fillColorSpace; + + if (cs.name === "Pattern") { + next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache)); + return; + } + + args = cs.getRgb(args, 0); + fn = _util.OPS.setFillRGBColor; + break; + + case _util.OPS.setStrokeColorN: + cs = stateManager.state.strokeColorSpace; + + if (cs.name === "Pattern") { + next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache)); + return; + } + + args = cs.getRgb(args, 0); + fn = _util.OPS.setStrokeRGBColor; + break; + + case _util.OPS.shadingFill: + var shadingRes = resources.get("Shading"); + + if (!shadingRes) { + throw new _util.FormatError("No shading resource found"); + } + + var shading = shadingRes.get(args[0].name); + + if (!shading) { + throw new _util.FormatError("No shading object found"); + } + + const patternId = self.parseShading({ + shading, + resources, + localColorSpaceCache, + localShadingPatternCache + }); + args = [patternId]; + fn = _util.OPS.shadingFill; + break; + + case _util.OPS.setGState: + isValidName = args[0] instanceof _primitives.Name; + name = args[0].name; + + if (isValidName) { + const localGStateObj = localGStateCache.getByName(name); + + if (localGStateObj) { + if (localGStateObj.length > 0) { + operatorList.addOp(_util.OPS.setGState, [localGStateObj]); + } + + args = null; + continue; + } + } + + next(new Promise(function (resolveGState, rejectGState) { + if (!isValidName) { + throw new _util.FormatError("GState must be referred to by name."); + } + + const extGState = resources.get("ExtGState"); + + if (!(extGState instanceof _primitives.Dict)) { + throw new _util.FormatError("ExtGState should be a dictionary."); + } + + const gState = extGState.get(name); + + if (!(gState instanceof _primitives.Dict)) { + throw new _util.FormatError("GState should be a dictionary."); + } + + self.setGState({ + resources, + gState, + operatorList, + cacheKey: name, + task, + stateManager, + localGStateCache, + localColorSpaceCache + }).then(resolveGState, rejectGState); + }).catch(function (reason) { + if (reason instanceof _util.AbortException) { + return; + } + + if (self.options.ignoreErrors) { + self.handler.send("UnsupportedFeature", { + featureId: _util.UNSUPPORTED_FEATURES.errorExtGState + }); + (0, _util.warn)(`getOperatorList - ignoring ExtGState: "${reason}".`); + return; + } + + throw reason; + })); + return; + + case _util.OPS.moveTo: + case _util.OPS.lineTo: + case _util.OPS.curveTo: + case _util.OPS.curveTo2: + case _util.OPS.curveTo3: + case _util.OPS.closePath: + case _util.OPS.rectangle: + self.buildPath(operatorList, fn, args, parsingText); + continue; + + case _util.OPS.markPoint: + case _util.OPS.markPointProps: + case _util.OPS.beginCompat: + case _util.OPS.endCompat: + continue; + + case _util.OPS.beginMarkedContentProps: + if (!(args[0] instanceof _primitives.Name)) { + (0, _util.warn)(`Expected name for beginMarkedContentProps arg0=${args[0]}`); + continue; + } + + if (args[0].name === "OC") { + next(self.parseMarkedContentProps(args[1], resources).then(data => { + operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", data]); + }).catch(reason => { + if (reason instanceof _util.AbortException) { + return; + } + + if (self.options.ignoreErrors) { + self.handler.send("UnsupportedFeature", { + featureId: _util.UNSUPPORTED_FEATURES.errorMarkedContent + }); + (0, _util.warn)(`getOperatorList - ignoring beginMarkedContentProps: "${reason}".`); + return; + } + + throw reason; + })); + return; + } + + args = [args[0].name, args[1] instanceof _primitives.Dict ? args[1].get("MCID") : null]; + break; + + case _util.OPS.beginMarkedContent: + case _util.OPS.endMarkedContent: + default: + if (args !== null) { + for (i = 0, ii = args.length; i < ii; i++) { + if (args[i] instanceof _primitives.Dict) { + break; + } + } + + if (i < ii) { + (0, _util.warn)("getOperatorList - ignoring operator: " + fn); + continue; + } + } + + } + + operatorList.addOp(fn, args); + } + + if (stop) { + next(deferred); + return; + } + + closePendingRestoreOPS(); + resolve(); + }).catch(reason => { + if (reason instanceof _util.AbortException) { + return; + } + + if (this.options.ignoreErrors) { + this.handler.send("UnsupportedFeature", { + featureId: _util.UNSUPPORTED_FEATURES.errorOperatorList + }); + (0, _util.warn)(`getOperatorList - ignoring errors during "${task.name}" ` + `task: "${reason}".`); + closePendingRestoreOPS(); + return; + } + + throw reason; + }); + } + + getTextContent(_ref7) { + let { + stream, + task, + resources, + stateManager = null, + combineTextItems = false, + includeMarkedContent = false, + sink, + seenStyles = new Set(), + viewBox + } = _ref7; + resources = resources || _primitives.Dict.empty; + stateManager = stateManager || new StateManager(new TextState()); + const NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)(); + const textContent = { + items: [], + styles: Object.create(null) + }; + const textContentItem = { + initialized: false, + str: [], + totalWidth: 0, + totalHeight: 0, + width: 0, + height: 0, + vertical: false, + prevTransform: null, + textAdvanceScale: 0, + spaceInFlowMin: 0, + spaceInFlowMax: 0, + trackingSpaceMin: Infinity, + negativeSpaceMax: -Infinity, + notASpace: -Infinity, + transform: null, + fontName: null, + hasEOL: false + }; + const twoLastChars = [" ", " "]; + let twoLastCharsPos = 0; + + function saveLastChar(char) { + const nextPos = (twoLastCharsPos + 1) % 2; + const ret = twoLastChars[twoLastCharsPos] !== " " && twoLastChars[nextPos] === " "; + twoLastChars[twoLastCharsPos] = char; + twoLastCharsPos = nextPos; + return ret; + } + + function resetLastChars() { + twoLastChars[0] = twoLastChars[1] = " "; + twoLastCharsPos = 0; + } + + const TRACKING_SPACE_FACTOR = 0.1; + const NOT_A_SPACE_FACTOR = 0.03; + const NEGATIVE_SPACE_FACTOR = -0.2; + const SPACE_IN_FLOW_MIN_FACTOR = 0.1; + const SPACE_IN_FLOW_MAX_FACTOR = 0.6; + const self = this; + const xref = this.xref; + const showSpacedTextBuffer = []; + let xobjs = null; + const emptyXObjectCache = new _image_utils.LocalImageCache(); + const emptyGStateCache = new _image_utils.LocalGStateCache(); + const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); + let textState; + + function getCurrentTextTransform() { + const font = textState.font; + const tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise]; + + if (font.isType3Font && (textState.fontSize <= 1 || font.isCharBBox) && !(0, _util.isArrayEqual)(textState.fontMatrix, _util.FONT_IDENTITY_MATRIX)) { + const glyphHeight = font.bbox[3] - font.bbox[1]; + + if (glyphHeight > 0) { + tsm[3] *= glyphHeight * textState.fontMatrix[3]; + } + } + + return _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm)); + } + + function ensureTextContentItem() { + if (textContentItem.initialized) { + return textContentItem; + } + + const font = textState.font, + loadedName = font.loadedName; + + if (!seenStyles.has(loadedName)) { + seenStyles.add(loadedName); + textContent.styles[loadedName] = { + fontFamily: font.fallbackName, + ascent: font.ascent, + descent: font.descent, + vertical: font.vertical + }; + } + + textContentItem.fontName = loadedName; + const trm = textContentItem.transform = getCurrentTextTransform(); + + if (!font.vertical) { + textContentItem.width = textContentItem.totalWidth = 0; + textContentItem.height = textContentItem.totalHeight = Math.hypot(trm[2], trm[3]); + textContentItem.vertical = false; + } else { + textContentItem.width = textContentItem.totalWidth = Math.hypot(trm[0], trm[1]); + textContentItem.height = textContentItem.totalHeight = 0; + textContentItem.vertical = true; + } + + const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]); + const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]); + textContentItem.textAdvanceScale = scaleCtmX * scaleLineX; + textContentItem.trackingSpaceMin = textState.fontSize * TRACKING_SPACE_FACTOR; + textContentItem.notASpace = textState.fontSize * NOT_A_SPACE_FACTOR; + textContentItem.negativeSpaceMax = textState.fontSize * NEGATIVE_SPACE_FACTOR; + textContentItem.spaceInFlowMin = textState.fontSize * SPACE_IN_FLOW_MIN_FACTOR; + textContentItem.spaceInFlowMax = textState.fontSize * SPACE_IN_FLOW_MAX_FACTOR; + textContentItem.hasEOL = false; + textContentItem.initialized = true; + return textContentItem; + } + + function updateAdvanceScale() { + if (!textContentItem.initialized) { + return; + } + + const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]); + const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]); + const scaleFactor = scaleCtmX * scaleLineX; + + if (scaleFactor === textContentItem.textAdvanceScale) { + return; + } + + if (!textContentItem.vertical) { + textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale; + textContentItem.width = 0; + } else { + textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale; + textContentItem.height = 0; + } + + textContentItem.textAdvanceScale = scaleFactor; + } + + function runBidiTransform(textChunk) { + const text = textChunk.str.join(""); + const bidiResult = (0, _bidi.bidi)(text, -1, textChunk.vertical); + return { + str: bidiResult.str, + dir: bidiResult.dir, + width: Math.abs(textChunk.totalWidth), + height: Math.abs(textChunk.totalHeight), + transform: textChunk.transform, + fontName: textChunk.fontName, + hasEOL: textChunk.hasEOL + }; + } + + function handleSetFont(fontName, fontRef) { + return self.loadFont(fontName, fontRef, resources).then(function (translated) { + if (!translated.font.isType3Font) { + return translated; + } + + return translated.loadType3Data(self, resources, task).catch(function () {}).then(function () { + return translated; + }); + }).then(function (translated) { + textState.font = translated.font; + textState.fontMatrix = translated.font.fontMatrix || _util.FONT_IDENTITY_MATRIX; + }); + } + + function applyInverseRotation(x, y, matrix) { + const scale = Math.hypot(matrix[0], matrix[1]); + return [(matrix[0] * x + matrix[1] * y) / scale, (matrix[2] * x + matrix[3] * y) / scale]; + } + + function compareWithLastPosition() { + const currentTransform = getCurrentTextTransform(); + let posX = currentTransform[4]; + let posY = currentTransform[5]; + const shiftedX = posX - viewBox[0]; + const shiftedY = posY - viewBox[1]; + + if (shiftedX < 0 || shiftedX > viewBox[2] || shiftedY < 0 || shiftedY > viewBox[3]) { + return false; + } + + if (!combineTextItems || !textState.font || !textContentItem.prevTransform) { + return true; + } + + let lastPosX = textContentItem.prevTransform[4]; + let lastPosY = textContentItem.prevTransform[5]; + + if (lastPosX === posX && lastPosY === posY) { + return true; + } + + let rotate = -1; + + if (currentTransform[0] && currentTransform[1] === 0 && currentTransform[2] === 0) { + rotate = currentTransform[0] > 0 ? 0 : 180; + } else if (currentTransform[1] && currentTransform[0] === 0 && currentTransform[3] === 0) { + rotate = currentTransform[1] > 0 ? 90 : 270; + } + + switch (rotate) { + case 0: + break; + + case 90: + [posX, posY] = [posY, posX]; + [lastPosX, lastPosY] = [lastPosY, lastPosX]; + break; + + case 180: + [posX, posY, lastPosX, lastPosY] = [-posX, -posY, -lastPosX, -lastPosY]; + break; + + case 270: + [posX, posY] = [-posY, -posX]; + [lastPosX, lastPosY] = [-lastPosY, -lastPosX]; + break; + + default: + [posX, posY] = applyInverseRotation(posX, posY, currentTransform); + [lastPosX, lastPosY] = applyInverseRotation(lastPosX, lastPosY, textContentItem.prevTransform); + } + + if (textState.font.vertical) { + const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale; + const advanceX = posX - lastPosX; + const textOrientation = Math.sign(textContentItem.height); + + if (advanceY < textOrientation * textContentItem.negativeSpaceMax) { + if (Math.abs(advanceX) > 0.5 * textContentItem.width) { + appendEOL(); + return true; + } + + resetLastChars(); + flushTextContentItem(); + return true; + } + + if (Math.abs(advanceX) > textContentItem.width) { + appendEOL(); + return true; + } + + if (advanceY <= textOrientation * textContentItem.notASpace) { + resetLastChars(); + } + + if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) { + textContentItem.height += advanceY; + } else if (!addFakeSpaces(advanceY, textContentItem.prevTransform, textOrientation)) { + if (textContentItem.str.length === 0) { + resetLastChars(); + textContent.items.push({ + str: " ", + dir: "ltr", + width: 0, + height: Math.abs(advanceY), + transform: textContentItem.prevTransform, + fontName: textContentItem.fontName, + hasEOL: false + }); + } else { + textContentItem.height += advanceY; + } + } + + return true; + } + + const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale; + const advanceY = posY - lastPosY; + const textOrientation = Math.sign(textContentItem.width); + + if (advanceX < textOrientation * textContentItem.negativeSpaceMax) { + if (Math.abs(advanceY) > 0.5 * textContentItem.height) { + appendEOL(); + return true; + } + + resetLastChars(); + flushTextContentItem(); + return true; + } + + if (Math.abs(advanceY) > textContentItem.height) { + appendEOL(); + return true; + } + + if (advanceX <= textOrientation * textContentItem.notASpace) { + resetLastChars(); + } + + if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) { + textContentItem.width += advanceX; + } else if (!addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)) { + if (textContentItem.str.length === 0) { + resetLastChars(); + textContent.items.push({ + str: " ", + dir: "ltr", + width: Math.abs(advanceX), + height: 0, + transform: textContentItem.prevTransform, + fontName: textContentItem.fontName, + hasEOL: false + }); + } else { + textContentItem.width += advanceX; + } + } + + return true; + } + + function buildTextContentItem(_ref8) { + let { + chars, + extraSpacing + } = _ref8; + const font = textState.font; + + if (!chars) { + const charSpacing = textState.charSpacing + extraSpacing; + + if (charSpacing) { + if (!font.vertical) { + textState.translateTextMatrix(charSpacing * textState.textHScale, 0); + } else { + textState.translateTextMatrix(0, -charSpacing); + } + } + + return; + } + + const glyphs = font.charsToGlyphs(chars); + const scale = textState.fontMatrix[0] * textState.fontSize; + + for (let i = 0, ii = glyphs.length; i < ii; i++) { + const glyph = glyphs[i]; + + if (glyph.isInvisibleFormatMark) { + continue; + } + + let charSpacing = textState.charSpacing + (i + 1 === ii ? extraSpacing : 0); + let glyphWidth = glyph.width; + + if (font.vertical) { + glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth; + } + + let scaledDim = glyphWidth * scale; + + if (glyph.isWhitespace) { + if (!font.vertical) { + charSpacing += scaledDim + textState.wordSpacing; + textState.translateTextMatrix(charSpacing * textState.textHScale, 0); + } else { + charSpacing += -scaledDim + textState.wordSpacing; + textState.translateTextMatrix(0, -charSpacing); + } + + saveLastChar(" "); + continue; + } + + if (!compareWithLastPosition()) { + continue; + } + + const textChunk = ensureTextContentItem(); + + if (glyph.isZeroWidthDiacritic) { + scaledDim = 0; + } + + if (!font.vertical) { + scaledDim *= textState.textHScale; + textState.translateTextMatrix(scaledDim, 0); + textChunk.width += scaledDim; + } else { + textState.translateTextMatrix(0, scaledDim); + scaledDim = Math.abs(scaledDim); + textChunk.height += scaledDim; + } + + if (scaledDim) { + textChunk.prevTransform = getCurrentTextTransform(); + } + + let glyphUnicode = glyph.unicode; + glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode; + glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode); + + if (saveLastChar(glyphUnicode)) { + textChunk.str.push(" "); + } + + textChunk.str.push(glyphUnicode); + + if (charSpacing) { + if (!font.vertical) { + textState.translateTextMatrix(charSpacing * textState.textHScale, 0); + } else { + textState.translateTextMatrix(0, -charSpacing); + } + } + } + } + + function appendEOL() { + resetLastChars(); + + if (textContentItem.initialized) { + textContentItem.hasEOL = true; + flushTextContentItem(); + } else { + textContent.items.push({ + str: "", + dir: "ltr", + width: 0, + height: 0, + transform: getCurrentTextTransform(), + fontName: textState.font.loadedName, + hasEOL: true + }); + } + } + + function addFakeSpaces(width, transf, textOrientation) { + if (textOrientation * textContentItem.spaceInFlowMin <= width && width <= textOrientation * textContentItem.spaceInFlowMax) { + if (textContentItem.initialized) { + resetLastChars(); + textContentItem.str.push(" "); + } + + return false; + } + + const fontName = textContentItem.fontName; + let height = 0; + + if (textContentItem.vertical) { + height = width; + width = 0; + } + + flushTextContentItem(); + resetLastChars(); + textContent.items.push({ + str: " ", + dir: "ltr", + width: Math.abs(width), + height: Math.abs(height), + transform: transf || getCurrentTextTransform(), + fontName, + hasEOL: false + }); + return true; + } + + function flushTextContentItem() { + if (!textContentItem.initialized || !textContentItem.str) { + return; + } + + if (!textContentItem.vertical) { + textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale; + } else { + textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale; + } + + textContent.items.push(runBidiTransform(textContentItem)); + textContentItem.initialized = false; + textContentItem.str.length = 0; + } + + function enqueueChunk() { + let batch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + const length = textContent.items.length; + + if (length === 0) { + return; + } + + if (batch && length < TEXT_CHUNK_BATCH_SIZE) { + return; + } + + sink.enqueue(textContent, length); + textContent.items = []; + textContent.styles = Object.create(null); + } + + const timeSlotManager = new TimeSlotManager(); + return new Promise(function promiseBody(resolve, reject) { + const next = function (promise) { + enqueueChunk(true); + Promise.all([promise, sink.ready]).then(function () { + try { + promiseBody(resolve, reject); + } catch (ex) { + reject(ex); + } + }, reject); + }; + + task.ensureNotTerminated(); + timeSlotManager.reset(); + const operation = {}; + let stop, + args = []; + + while (!(stop = timeSlotManager.check())) { + args.length = 0; + operation.args = args; + + if (!preprocessor.read(operation)) { + break; + } + + textState = stateManager.state; + const fn = operation.fn; + args = operation.args; + + switch (fn | 0) { + case _util.OPS.setFont: + var fontNameArg = args[0].name, + fontSizeArg = args[1]; + + if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) { + break; + } + + flushTextContentItem(); + textState.fontName = fontNameArg; + textState.fontSize = fontSizeArg; + next(handleSetFont(fontNameArg, null)); + return; + + case _util.OPS.setTextRise: + textState.textRise = args[0]; + break; + + case _util.OPS.setHScale: + textState.textHScale = args[0] / 100; + break; + + case _util.OPS.setLeading: + textState.leading = args[0]; + break; + + case _util.OPS.moveText: + textState.translateTextLineMatrix(args[0], args[1]); + textState.textMatrix = textState.textLineMatrix.slice(); + break; + + case _util.OPS.setLeadingMoveText: + textState.leading = -args[1]; + textState.translateTextLineMatrix(args[0], args[1]); + textState.textMatrix = textState.textLineMatrix.slice(); + break; + + case _util.OPS.nextLine: + textState.carriageReturn(); + break; + + case _util.OPS.setTextMatrix: + textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + updateAdvanceScale(); + break; + + case _util.OPS.setCharSpacing: + textState.charSpacing = args[0]; + break; + + case _util.OPS.setWordSpacing: + textState.wordSpacing = args[0]; + break; + + case _util.OPS.beginText: + textState.textMatrix = _util.IDENTITY_MATRIX.slice(); + textState.textLineMatrix = _util.IDENTITY_MATRIX.slice(); + break; + + case _util.OPS.showSpacedText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + + const spaceFactor = (textState.font.vertical ? 1 : -1) * textState.fontSize / 1000; + const elements = args[0]; + + for (let i = 0, ii = elements.length; i < ii - 1; i++) { + const item = elements[i]; + + if (typeof item === "string") { + showSpacedTextBuffer.push(item); + } else if (typeof item === "number" && item !== 0) { + const str = showSpacedTextBuffer.join(""); + showSpacedTextBuffer.length = 0; + buildTextContentItem({ + chars: str, + extraSpacing: item * spaceFactor + }); + } + } + + const item = elements.at(-1); + + if (typeof item === "string") { + showSpacedTextBuffer.push(item); + } + + if (showSpacedTextBuffer.length > 0) { + const str = showSpacedTextBuffer.join(""); + showSpacedTextBuffer.length = 0; + buildTextContentItem({ + chars: str, + extraSpacing: 0 + }); + } + + break; + + case _util.OPS.showText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + + buildTextContentItem({ + chars: args[0], + extraSpacing: 0 + }); + break; + + case _util.OPS.nextLineShowText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + + textState.carriageReturn(); + buildTextContentItem({ + chars: args[0], + extraSpacing: 0 + }); + break; + + case _util.OPS.nextLineSetSpacingShowText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + + textState.wordSpacing = args[0]; + textState.charSpacing = args[1]; + textState.carriageReturn(); + buildTextContentItem({ + chars: args[2], + extraSpacing: 0 + }); + break; + + case _util.OPS.paintXObject: + flushTextContentItem(); + + if (!xobjs) { + xobjs = resources.get("XObject") || _primitives.Dict.empty; + } + + var isValidName = args[0] instanceof _primitives.Name; + var name = args[0].name; + + if (isValidName && emptyXObjectCache.getByName(name)) { + break; + } + + next(new Promise(function (resolveXObject, rejectXObject) { + if (!isValidName) { + throw new _util.FormatError("XObject must be referred to by name."); + } + + let xobj = xobjs.getRaw(name); + + if (xobj instanceof _primitives.Ref) { + if (emptyXObjectCache.getByRef(xobj)) { + resolveXObject(); + return; + } + + const globalImage = self.globalImageCache.getData(xobj, self.pageIndex); + + if (globalImage) { + resolveXObject(); + return; + } + + xobj = xref.fetch(xobj); + } + + if (!(xobj instanceof _base_stream.BaseStream)) { + throw new _util.FormatError("XObject should be a stream"); + } + + const type = xobj.dict.get("Subtype"); + + if (!(type instanceof _primitives.Name)) { + throw new _util.FormatError("XObject should have a Name subtype"); + } + + if (type.name !== "Form") { + emptyXObjectCache.set(name, xobj.dict.objId, true); + resolveXObject(); + return; + } + + const currentState = stateManager.state.clone(); + const xObjStateManager = new StateManager(currentState); + const matrix = xobj.dict.getArray("Matrix"); + + if (Array.isArray(matrix) && matrix.length === 6) { + xObjStateManager.transform(matrix); + } + + enqueueChunk(); + const sinkWrapper = { + enqueueInvoked: false, + + enqueue(chunk, size) { + this.enqueueInvoked = true; + sink.enqueue(chunk, size); + }, + + get desiredSize() { + return sink.desiredSize; + }, + + get ready() { + return sink.ready; + } + + }; + self.getTextContent({ + stream: xobj, + task, + resources: xobj.dict.get("Resources") || resources, + stateManager: xObjStateManager, + combineTextItems, + includeMarkedContent, + sink: sinkWrapper, + seenStyles, + viewBox + }).then(function () { + if (!sinkWrapper.enqueueInvoked) { + emptyXObjectCache.set(name, xobj.dict.objId, true); + } + + resolveXObject(); + }, rejectXObject); + }).catch(function (reason) { + if (reason instanceof _util.AbortException) { + return; + } + + if (self.options.ignoreErrors) { + (0, _util.warn)(`getTextContent - ignoring XObject: "${reason}".`); + return; + } + + throw reason; + })); + return; + + case _util.OPS.setGState: + isValidName = args[0] instanceof _primitives.Name; + name = args[0].name; + + if (isValidName && emptyGStateCache.getByName(name)) { + break; + } + + next(new Promise(function (resolveGState, rejectGState) { + if (!isValidName) { + throw new _util.FormatError("GState must be referred to by name."); + } + + const extGState = resources.get("ExtGState"); + + if (!(extGState instanceof _primitives.Dict)) { + throw new _util.FormatError("ExtGState should be a dictionary."); + } + + const gState = extGState.get(name); + + if (!(gState instanceof _primitives.Dict)) { + throw new _util.FormatError("GState should be a dictionary."); + } + + const gStateFont = gState.get("Font"); + + if (!gStateFont) { + emptyGStateCache.set(name, gState.objId, true); + resolveGState(); + return; + } + + flushTextContentItem(); + textState.fontName = null; + textState.fontSize = gStateFont[1]; + handleSetFont(null, gStateFont[0]).then(resolveGState, rejectGState); + }).catch(function (reason) { + if (reason instanceof _util.AbortException) { + return; + } + + if (self.options.ignoreErrors) { + (0, _util.warn)(`getTextContent - ignoring ExtGState: "${reason}".`); + return; + } + + throw reason; + })); + return; + + case _util.OPS.beginMarkedContent: + flushTextContentItem(); + + if (includeMarkedContent) { + textContent.items.push({ + type: "beginMarkedContent", + tag: args[0] instanceof _primitives.Name ? args[0].name : null + }); + } + + break; + + case _util.OPS.beginMarkedContentProps: + flushTextContentItem(); + + if (includeMarkedContent) { + let mcid = null; + + if (args[1] instanceof _primitives.Dict) { + mcid = args[1].get("MCID"); + } + + textContent.items.push({ + type: "beginMarkedContentProps", + id: Number.isInteger(mcid) ? `${self.idFactory.getPageObjId()}_mcid${mcid}` : null, + tag: args[0] instanceof _primitives.Name ? args[0].name : null + }); + } + + break; + + case _util.OPS.endMarkedContent: + flushTextContentItem(); + + if (includeMarkedContent) { + textContent.items.push({ + type: "endMarkedContent" + }); + } + + break; + } + + if (textContent.items.length >= sink.desiredSize) { + stop = true; + break; + } + } + + if (stop) { + next(deferred); + return; + } + + flushTextContentItem(); + enqueueChunk(); + resolve(); + }).catch(reason => { + if (reason instanceof _util.AbortException) { + return; + } + + if (this.options.ignoreErrors) { + (0, _util.warn)(`getTextContent - ignoring errors during "${task.name}" ` + `task: "${reason}".`); + flushTextContentItem(); + enqueueChunk(); + return; + } + + throw reason; + }); + } + + extractDataStructures(dict, baseDict, properties) { + const xref = this.xref; + let cidToGidBytes; + const toUnicodePromise = this.readToUnicode(properties.toUnicode || dict.get("ToUnicode") || baseDict.get("ToUnicode")); + + if (properties.composite) { + const cidSystemInfo = dict.get("CIDSystemInfo"); + + if (cidSystemInfo instanceof _primitives.Dict) { + properties.cidSystemInfo = { + registry: (0, _util.stringToPDFString)(cidSystemInfo.get("Registry")), + ordering: (0, _util.stringToPDFString)(cidSystemInfo.get("Ordering")), + supplement: cidSystemInfo.get("Supplement") + }; + } + + try { + const cidToGidMap = dict.get("CIDToGIDMap"); + + if (cidToGidMap instanceof _base_stream.BaseStream) { + cidToGidBytes = cidToGidMap.getBytes(); + } + } catch (ex) { + if (!this.options.ignoreErrors) { + throw ex; + } + + (0, _util.warn)(`extractDataStructures - ignoring CIDToGIDMap data: "${ex}".`); + } + } + + const differences = []; + let baseEncodingName = null; + let encoding; + + if (dict.has("Encoding")) { + encoding = dict.get("Encoding"); + + if (encoding instanceof _primitives.Dict) { + baseEncodingName = encoding.get("BaseEncoding"); + baseEncodingName = baseEncodingName instanceof _primitives.Name ? baseEncodingName.name : null; + + if (encoding.has("Differences")) { + const diffEncoding = encoding.get("Differences"); + let index = 0; + + for (let j = 0, jj = diffEncoding.length; j < jj; j++) { + const data = xref.fetchIfRef(diffEncoding[j]); + + if (typeof data === "number") { + index = data; + } else if (data instanceof _primitives.Name) { + differences[index++] = data.name; + } else { + throw new _util.FormatError(`Invalid entry in 'Differences' array: ${data}`); + } + } + } + } else if (encoding instanceof _primitives.Name) { + baseEncodingName = encoding.name; + } else { + const msg = "Encoding is not a Name nor a Dict"; + + if (!this.options.ignoreErrors) { + throw new _util.FormatError(msg); + } + + (0, _util.warn)(msg); + } + + if (baseEncodingName !== "MacRomanEncoding" && baseEncodingName !== "MacExpertEncoding" && baseEncodingName !== "WinAnsiEncoding") { + baseEncodingName = null; + } + } + + if (baseEncodingName) { + properties.defaultEncoding = (0, _encodings.getEncoding)(baseEncodingName); + } else { + const isSymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Symbolic); + const isNonsymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Nonsymbolic); + encoding = _encodings.StandardEncoding; + + if (properties.type === "TrueType" && !isNonsymbolicFont) { + encoding = _encodings.WinAnsiEncoding; + } + + if (isSymbolicFont) { + encoding = _encodings.MacRomanEncoding; + + if (!properties.file || properties.isInternalFont) { + if (/Symbol/i.test(properties.name)) { + encoding = _encodings.SymbolSetEncoding; + } else if (/Dingbats|Wingdings/i.test(properties.name)) { + encoding = _encodings.ZapfDingbatsEncoding; + } + } + } + + properties.defaultEncoding = encoding; + } + + properties.differences = differences; + properties.baseEncodingName = baseEncodingName; + properties.hasEncoding = !!baseEncodingName || differences.length > 0; + properties.dict = dict; + return toUnicodePromise.then(readToUnicode => { + properties.toUnicode = readToUnicode; + return this.buildToUnicode(properties); + }).then(builtToUnicode => { + properties.toUnicode = builtToUnicode; + + if (cidToGidBytes) { + properties.cidToGidMap = this.readCidToGidMap(cidToGidBytes, builtToUnicode); + } + + return properties; + }); + } + + _simpleFontToUnicode(properties) { + let forceGlyphs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + (0, _util.assert)(!properties.composite, "Must be a simple font."); + const toUnicode = []; + const encoding = properties.defaultEncoding.slice(); + const baseEncodingName = properties.baseEncodingName; + const differences = properties.differences; + + for (const charcode in differences) { + const glyphName = differences[charcode]; + + if (glyphName === ".notdef") { + continue; + } + + encoding[charcode] = glyphName; + } + + const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + + for (const charcode in encoding) { + let glyphName = encoding[charcode]; + + if (glyphName === "") { + continue; + } else if (glyphsUnicodeMap[glyphName] === undefined) { + let code = 0; + + switch (glyphName[0]) { + case "G": + if (glyphName.length === 3) { + code = parseInt(glyphName.substring(1), 16); + } + + break; + + case "g": + if (glyphName.length === 5) { + code = parseInt(glyphName.substring(1), 16); + } + + break; + + case "C": + case "c": + if (glyphName.length >= 3 && glyphName.length <= 4) { + const codeStr = glyphName.substring(1); + + if (forceGlyphs) { + code = parseInt(codeStr, 16); + break; + } + + code = +codeStr; + + if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) { + return this._simpleFontToUnicode(properties, true); + } + } + + break; + + default: + const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap); + + if (unicode !== -1) { + code = unicode; + } + + } + + if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) { + if (baseEncodingName && code === +charcode) { + const baseEncoding = (0, _encodings.getEncoding)(baseEncodingName); + + if (baseEncoding && (glyphName = baseEncoding[charcode])) { + toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]); + continue; + } + } + + toUnicode[charcode] = String.fromCodePoint(code); + } + + continue; + } + + toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]); + } + + return toUnicode; + } + + async buildToUnicode(properties) { + properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0; + + if (properties.hasIncludedToUnicodeMap) { + if (!properties.composite && properties.hasEncoding) { + properties.fallbackToUnicode = this._simpleFontToUnicode(properties); + } + + return properties.toUnicode; + } + + if (!properties.composite) { + return new _to_unicode_map.ToUnicodeMap(this._simpleFontToUnicode(properties)); + } + + if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof _cmap.IdentityCMap) || properties.cidSystemInfo.registry === "Adobe" && (properties.cidSystemInfo.ordering === "GB1" || properties.cidSystemInfo.ordering === "CNS1" || properties.cidSystemInfo.ordering === "Japan1" || properties.cidSystemInfo.ordering === "Korea1"))) { + const { + registry, + ordering + } = properties.cidSystemInfo; + + const ucs2CMapName = _primitives.Name.get(`${registry}-${ordering}-UCS2`); + + const ucs2CMap = await _cmap.CMapFactory.create({ + encoding: ucs2CMapName, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null + }); + const toUnicode = []; + properties.cMap.forEach(function (charcode, cid) { + if (cid > 0xffff) { + throw new _util.FormatError("Max size of CID is 65,535"); + } + + const ucs2 = ucs2CMap.lookup(cid); + + if (ucs2) { + toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)); + } + }); + return new _to_unicode_map.ToUnicodeMap(toUnicode); + } + + return new _to_unicode_map.IdentityToUnicodeMap(properties.firstChar, properties.lastChar); + } + + readToUnicode(cmapObj) { + if (!cmapObj) { + return Promise.resolve(null); + } + + if (cmapObj instanceof _primitives.Name) { + return _cmap.CMapFactory.create({ + encoding: cmapObj, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null + }).then(function (cmap) { + if (cmap instanceof _cmap.IdentityCMap) { + return new _to_unicode_map.IdentityToUnicodeMap(0, 0xffff); + } + + return new _to_unicode_map.ToUnicodeMap(cmap.getMap()); + }); + } else if (cmapObj instanceof _base_stream.BaseStream) { + return _cmap.CMapFactory.create({ + encoding: cmapObj, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null + }).then(function (cmap) { + if (cmap instanceof _cmap.IdentityCMap) { + return new _to_unicode_map.IdentityToUnicodeMap(0, 0xffff); + } + + const map = new Array(cmap.length); + cmap.forEach(function (charCode, token) { + if (typeof token === "number") { + map[charCode] = String.fromCodePoint(token); + return; + } + + const str = []; + + for (let k = 0; k < token.length; k += 2) { + const w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1); + + if ((w1 & 0xf800) !== 0xd800) { + str.push(w1); + continue; + } + + k += 2; + const w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1); + str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000); + } + + map[charCode] = String.fromCodePoint(...str); + }); + return new _to_unicode_map.ToUnicodeMap(map); + }, reason => { + if (reason instanceof _util.AbortException) { + return null; + } + + if (this.options.ignoreErrors) { + this.handler.send("UnsupportedFeature", { + featureId: _util.UNSUPPORTED_FEATURES.errorFontToUnicode + }); + (0, _util.warn)(`readToUnicode - ignoring ToUnicode data: "${reason}".`); + return null; + } + + throw reason; + }); + } + + return Promise.resolve(null); + } + + readCidToGidMap(glyphsData, toUnicode) { + const result = []; + + for (let j = 0, jj = glyphsData.length; j < jj; j++) { + const glyphID = glyphsData[j++] << 8 | glyphsData[j]; + const code = j >> 1; + + if (glyphID === 0 && !toUnicode.has(code)) { + continue; + } + + result[code] = glyphID; + } + + return result; + } + + extractWidths(dict, descriptor, properties) { + const xref = this.xref; + let glyphsWidths = []; + let defaultWidth = 0; + const glyphsVMetrics = []; + let defaultVMetrics; + let i, ii, j, jj, start, code, widths; + + if (properties.composite) { + defaultWidth = dict.has("DW") ? dict.get("DW") : 1000; + widths = dict.get("W"); + + if (widths) { + for (i = 0, ii = widths.length; i < ii; i++) { + start = xref.fetchIfRef(widths[i++]); + code = xref.fetchIfRef(widths[i]); + + if (Array.isArray(code)) { + for (j = 0, jj = code.length; j < jj; j++) { + glyphsWidths[start++] = xref.fetchIfRef(code[j]); + } + } else { + const width = xref.fetchIfRef(widths[++i]); + + for (j = start; j <= code; j++) { + glyphsWidths[j] = width; + } + } + } + } + + if (properties.vertical) { + let vmetrics = dict.getArray("DW2") || [880, -1000]; + defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]]; + vmetrics = dict.get("W2"); + + if (vmetrics) { + for (i = 0, ii = vmetrics.length; i < ii; i++) { + start = xref.fetchIfRef(vmetrics[i++]); + code = xref.fetchIfRef(vmetrics[i]); + + if (Array.isArray(code)) { + for (j = 0, jj = code.length; j < jj; j++) { + glyphsVMetrics[start++] = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j])]; + } + } else { + const vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i])]; + + for (j = start; j <= code; j++) { + glyphsVMetrics[j] = vmetric; + } + } + } + } + } + } else { + const firstChar = properties.firstChar; + widths = dict.get("Widths"); + + if (widths) { + j = firstChar; + + for (i = 0, ii = widths.length; i < ii; i++) { + glyphsWidths[j++] = xref.fetchIfRef(widths[i]); + } + + defaultWidth = parseFloat(descriptor.get("MissingWidth")) || 0; + } else { + const baseFontName = dict.get("BaseFont"); + + if (baseFontName instanceof _primitives.Name) { + const metrics = this.getBaseFontMetrics(baseFontName.name); + glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties); + defaultWidth = metrics.defaultWidth; + } + } + } + + let isMonospace = true; + let firstWidth = defaultWidth; + + for (const glyph in glyphsWidths) { + const glyphWidth = glyphsWidths[glyph]; + + if (!glyphWidth) { + continue; + } + + if (!firstWidth) { + firstWidth = glyphWidth; + continue; + } + + if (firstWidth !== glyphWidth) { + isMonospace = false; + break; + } + } + + if (isMonospace) { + properties.flags |= _fonts_utils.FontFlags.FixedPitch; + } + + properties.defaultWidth = defaultWidth; + properties.widths = glyphsWidths; + properties.defaultVMetrics = defaultVMetrics; + properties.vmetrics = glyphsVMetrics; + } + + isSerifFont(baseFontName) { + const fontNameWoStyle = baseFontName.split("-")[0]; + return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || fontNameWoStyle.search(/serif/gi) !== -1; + } + + getBaseFontMetrics(name) { + let defaultWidth = 0; + let widths = Object.create(null); + let monospace = false; + const stdFontMap = (0, _standard_fonts.getStdFontMap)(); + let lookupName = stdFontMap[name] || name; + const Metrics = (0, _metrics.getMetrics)(); + + if (!(lookupName in Metrics)) { + if (this.isSerifFont(name)) { + lookupName = "Times-Roman"; + } else { + lookupName = "Helvetica"; + } + } + + const glyphWidths = Metrics[lookupName]; + + if (typeof glyphWidths === "number") { + defaultWidth = glyphWidths; + monospace = true; + } else { + widths = glyphWidths(); + } + + return { + defaultWidth, + monospace, + widths + }; + } + + buildCharCodeToWidth(widthsByGlyphName, properties) { + const widths = Object.create(null); + const differences = properties.differences; + const encoding = properties.defaultEncoding; + + for (let charCode = 0; charCode < 256; charCode++) { + if (charCode in differences && widthsByGlyphName[differences[charCode]]) { + widths[charCode] = widthsByGlyphName[differences[charCode]]; + continue; + } + + if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) { + widths[charCode] = widthsByGlyphName[encoding[charCode]]; + continue; + } + } + + return widths; + } + + preEvaluateFont(dict) { + const baseDict = dict; + let type = dict.get("Subtype"); + + if (!(type instanceof _primitives.Name)) { + throw new _util.FormatError("invalid font Subtype"); + } + + let composite = false; + let hash, toUnicode; + + if (type.name === "Type0") { + const df = dict.get("DescendantFonts"); + + if (!df) { + throw new _util.FormatError("Descendant fonts are not specified"); + } + + dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df; + + if (!(dict instanceof _primitives.Dict)) { + throw new _util.FormatError("Descendant font is not a dictionary."); + } + + type = dict.get("Subtype"); + + if (!(type instanceof _primitives.Name)) { + throw new _util.FormatError("invalid font Subtype"); + } + + composite = true; + } + + const firstChar = dict.get("FirstChar") || 0, + lastChar = dict.get("LastChar") || (composite ? 0xffff : 0xff); + const descriptor = dict.get("FontDescriptor"); + + if (descriptor) { + hash = new _murmurhash.MurmurHash3_64(); + const encoding = baseDict.getRaw("Encoding"); + + if (encoding instanceof _primitives.Name) { + hash.update(encoding.name); + } else if (encoding instanceof _primitives.Ref) { + hash.update(encoding.toString()); + } else if (encoding instanceof _primitives.Dict) { + for (const entry of encoding.getRawValues()) { + if (entry instanceof _primitives.Name) { + hash.update(entry.name); + } else if (entry instanceof _primitives.Ref) { + hash.update(entry.toString()); + } else if (Array.isArray(entry)) { + const diffLength = entry.length, + diffBuf = new Array(diffLength); + + for (let j = 0; j < diffLength; j++) { + const diffEntry = entry[j]; + + if (diffEntry instanceof _primitives.Name) { + diffBuf[j] = diffEntry.name; + } else if (typeof diffEntry === "number" || diffEntry instanceof _primitives.Ref) { + diffBuf[j] = diffEntry.toString(); + } + } + + hash.update(diffBuf.join()); + } + } + } + + hash.update(`${firstChar}-${lastChar}`); + toUnicode = dict.get("ToUnicode") || baseDict.get("ToUnicode"); + + if (toUnicode instanceof _base_stream.BaseStream) { + const stream = toUnicode.str || toUnicode; + const uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start); + hash.update(uint8array); + } else if (toUnicode instanceof _primitives.Name) { + hash.update(toUnicode.name); + } + + const widths = dict.get("Widths") || baseDict.get("Widths"); + + if (Array.isArray(widths)) { + const widthsBuf = []; + + for (const entry of widths) { + if (typeof entry === "number" || entry instanceof _primitives.Ref) { + widthsBuf.push(entry.toString()); + } + } + + hash.update(widthsBuf.join()); + } + + if (composite) { + hash.update("compositeFont"); + const compositeWidths = dict.get("W") || baseDict.get("W"); + + if (Array.isArray(compositeWidths)) { + const widthsBuf = []; + + for (const entry of compositeWidths) { + if (typeof entry === "number" || entry instanceof _primitives.Ref) { + widthsBuf.push(entry.toString()); + } else if (Array.isArray(entry)) { + const subWidthsBuf = []; + + for (const element of entry) { + if (typeof element === "number" || element instanceof _primitives.Ref) { + subWidthsBuf.push(element.toString()); + } + } + + widthsBuf.push(`[${subWidthsBuf.join()}]`); + } + } + + hash.update(widthsBuf.join()); + } + + const cidToGidMap = dict.getRaw("CIDToGIDMap") || baseDict.getRaw("CIDToGIDMap"); + + if (cidToGidMap instanceof _primitives.Name) { + hash.update(cidToGidMap.name); + } else if (cidToGidMap instanceof _primitives.Ref) { + hash.update(cidToGidMap.toString()); + } else if (cidToGidMap instanceof _base_stream.BaseStream) { + hash.update(cidToGidMap.peekBytes()); + } + } + } + + return { + descriptor, + dict, + baseDict, + composite, + type: type.name, + firstChar, + lastChar, + toUnicode, + hash: hash ? hash.hexdigest() : "" + }; + } + + async translateFont(_ref9) { + let { + descriptor, + dict, + baseDict, + composite, + type, + firstChar, + lastChar, + toUnicode, + cssFontInfo + } = _ref9; + const isType3Font = type === "Type3"; + let properties; + + if (!descriptor) { + if (isType3Font) { + descriptor = new _primitives.Dict(null); + descriptor.set("FontName", _primitives.Name.get(type)); + descriptor.set("FontBBox", dict.getArray("FontBBox") || [0, 0, 0, 0]); + } else { + let baseFontName = dict.get("BaseFont"); + + if (!(baseFontName instanceof _primitives.Name)) { + throw new _util.FormatError("Base font is not specified"); + } + + baseFontName = baseFontName.name.replace(/[,_]/g, "-"); + const metrics = this.getBaseFontMetrics(baseFontName); + const fontNameWoStyle = baseFontName.split("-")[0]; + const flags = (this.isSerifFont(fontNameWoStyle) ? _fonts_utils.FontFlags.Serif : 0) | (metrics.monospace ? _fonts_utils.FontFlags.FixedPitch : 0) | ((0, _standard_fonts.getSymbolsFonts)()[fontNameWoStyle] ? _fonts_utils.FontFlags.Symbolic : _fonts_utils.FontFlags.Nonsymbolic); + properties = { + type, + name: baseFontName, + loadedName: baseDict.loadedName, + widths: metrics.widths, + defaultWidth: metrics.defaultWidth, + isSimulatedFlags: true, + flags, + firstChar, + lastChar, + toUnicode, + xHeight: 0, + capHeight: 0, + italicAngle: 0, + isType3Font + }; + const widths = dict.get("Widths"); + const standardFontName = (0, _standard_fonts.getStandardFontName)(baseFontName); + let file = null; + + if (standardFontName) { + properties.isStandardFont = true; + file = await this.fetchStandardFontData(standardFontName); + properties.isInternalFont = !!file; + } + + return this.extractDataStructures(dict, dict, properties).then(newProperties => { + if (widths) { + const glyphWidths = []; + let j = firstChar; + + for (let i = 0, ii = widths.length; i < ii; i++) { + glyphWidths[j++] = this.xref.fetchIfRef(widths[i]); + } + + newProperties.widths = glyphWidths; + } else { + newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties); + } + + return new _fonts.Font(baseFontName, file, newProperties); + }); + } + } + + let fontName = descriptor.get("FontName"); + let baseFont = dict.get("BaseFont"); + + if (typeof fontName === "string") { + fontName = _primitives.Name.get(fontName); + } + + if (typeof baseFont === "string") { + baseFont = _primitives.Name.get(baseFont); + } + + if (!isType3Font) { + const fontNameStr = fontName && fontName.name; + const baseFontStr = baseFont && baseFont.name; + + if (fontNameStr !== baseFontStr) { + (0, _util.info)(`The FontDescriptor's FontName is "${fontNameStr}" but ` + `should be the same as the Font's BaseFont "${baseFontStr}".`); + + if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) { + fontName = baseFont; + } + } + } + + fontName = fontName || baseFont; + + if (!(fontName instanceof _primitives.Name)) { + throw new _util.FormatError("invalid font name"); + } + + let fontFile, subtype, length1, length2, length3; + + try { + fontFile = descriptor.get("FontFile", "FontFile2", "FontFile3"); + } catch (ex) { + if (!this.options.ignoreErrors) { + throw ex; + } + + (0, _util.warn)(`translateFont - fetching "${fontName.name}" font file: "${ex}".`); + fontFile = new _stream.NullStream(); + } + + let isStandardFont = false; + let isInternalFont = false; + let glyphScaleFactors = null; + + if (fontFile) { + if (fontFile.dict) { + const subtypeEntry = fontFile.dict.get("Subtype"); + + if (subtypeEntry instanceof _primitives.Name) { + subtype = subtypeEntry.name; + } + + length1 = fontFile.dict.get("Length1"); + length2 = fontFile.dict.get("Length2"); + length3 = fontFile.dict.get("Length3"); + } + } else if (cssFontInfo) { + const standardFontName = (0, _xfa_fonts.getXfaFontName)(fontName.name); + + if (standardFontName) { + cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`; + cssFontInfo.metrics = standardFontName.metrics || null; + glyphScaleFactors = standardFontName.factors || null; + fontFile = await this.fetchStandardFontData(standardFontName.name); + isInternalFont = !!fontFile; + baseDict = dict = (0, _xfa_fonts.getXfaFontDict)(fontName.name); + composite = true; + } + } else if (!isType3Font) { + const standardFontName = (0, _standard_fonts.getStandardFontName)(fontName.name); + + if (standardFontName) { + isStandardFont = true; + fontFile = await this.fetchStandardFontData(standardFontName); + isInternalFont = !!fontFile; + } + } + + properties = { + type, + name: fontName.name, + subtype, + file: fontFile, + length1, + length2, + length3, + isStandardFont, + isInternalFont, + loadedName: baseDict.loadedName, + composite, + fixedPitch: false, + fontMatrix: dict.getArray("FontMatrix") || _util.FONT_IDENTITY_MATRIX, + firstChar, + lastChar, + toUnicode, + bbox: descriptor.getArray("FontBBox") || dict.getArray("FontBBox"), + ascent: descriptor.get("Ascent"), + descent: descriptor.get("Descent"), + xHeight: descriptor.get("XHeight") || 0, + capHeight: descriptor.get("CapHeight") || 0, + flags: descriptor.get("Flags"), + italicAngle: descriptor.get("ItalicAngle") || 0, + isType3Font, + cssFontInfo, + scaleFactors: glyphScaleFactors + }; + + if (composite) { + const cidEncoding = baseDict.get("Encoding"); + + if (cidEncoding instanceof _primitives.Name) { + properties.cidEncoding = cidEncoding.name; + } + + const cMap = await _cmap.CMapFactory.create({ + encoding: cidEncoding, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null + }); + properties.cMap = cMap; + properties.vertical = properties.cMap.vertical; + } + + return this.extractDataStructures(dict, baseDict, properties).then(newProperties => { + this.extractWidths(dict, descriptor, newProperties); + return new _fonts.Font(fontName.name, fontFile, newProperties); + }); + } + + static buildFontPaths(font, glyphs, handler, evaluatorOptions) { + function buildPath(fontChar) { + const glyphName = `${font.loadedName}_path_${fontChar}`; + + try { + if (font.renderer.hasBuiltPath(fontChar)) { + return; + } + + handler.send("commonobj", [glyphName, "FontPath", font.renderer.getPathJs(fontChar)]); + } catch (reason) { + if (evaluatorOptions.ignoreErrors) { + handler.send("UnsupportedFeature", { + featureId: _util.UNSUPPORTED_FEATURES.errorFontBuildPath + }); + (0, _util.warn)(`buildFontPaths - ignoring ${glyphName} glyph: "${reason}".`); + return; + } + + throw reason; + } + } + + for (const glyph of glyphs) { + buildPath(glyph.fontChar); + const accent = glyph.accent; + + if (accent && accent.fontChar) { + buildPath(accent.fontChar); + } + } + } + + static get fallbackFontDict() { + const dict = new _primitives.Dict(); + dict.set("BaseFont", _primitives.Name.get("PDFJS-FallbackFont")); + dict.set("Type", _primitives.Name.get("FallbackType")); + dict.set("Subtype", _primitives.Name.get("FallbackType")); + dict.set("Encoding", _primitives.Name.get("WinAnsiEncoding")); + return (0, _util.shadow)(this, "fallbackFontDict", dict); + } + +} + +exports.PartialEvaluator = PartialEvaluator; + +class TranslatedFont { + constructor(_ref10) { + let { + loadedName, + font, + dict, + evaluatorOptions + } = _ref10; + this.loadedName = loadedName; + this.font = font; + this.dict = dict; + this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions; + this.type3Loaded = null; + this.type3Dependencies = font.isType3Font ? new Set() : null; + this.sent = false; + } + + send(handler) { + if (this.sent) { + return; + } + + this.sent = true; + handler.send("commonobj", [this.loadedName, "Font", this.font.exportData(this._evaluatorOptions.fontExtraProperties)]); + } + + fallback(handler) { + if (!this.font.data) { + return; + } + + this.font.disableFontFace = true; + PartialEvaluator.buildFontPaths(this.font, this.font.glyphCacheValues, handler, this._evaluatorOptions); + } + + loadType3Data(evaluator, resources, task) { + if (this.type3Loaded) { + return this.type3Loaded; + } + + if (!this.font.isType3Font) { + throw new Error("Must be a Type3 font."); + } + + const type3Evaluator = evaluator.clone({ + ignoreErrors: false + }); + type3Evaluator.parsingType3Font = true; + const type3FontRefs = new _primitives.RefSet(evaluator.type3FontRefs); + + if (this.dict.objId && !type3FontRefs.has(this.dict.objId)) { + type3FontRefs.put(this.dict.objId); + } + + type3Evaluator.type3FontRefs = type3FontRefs; + const translatedFont = this.font, + type3Dependencies = this.type3Dependencies; + let loadCharProcsPromise = Promise.resolve(); + const charProcs = this.dict.get("CharProcs"); + const fontResources = this.dict.get("Resources") || resources; + const charProcOperatorList = Object.create(null); + + const fontBBox = _util.Util.normalizeRect(translatedFont.bbox || [0, 0, 0, 0]), + width = fontBBox[2] - fontBBox[0], + height = fontBBox[3] - fontBBox[1]; + + const fontBBoxSize = Math.hypot(width, height); + + for (const key of charProcs.getKeys()) { + loadCharProcsPromise = loadCharProcsPromise.then(() => { + const glyphStream = charProcs.get(key); + const operatorList = new _operator_list.OperatorList(); + return type3Evaluator.getOperatorList({ + stream: glyphStream, + task, + resources: fontResources, + operatorList + }).then(() => { + if (operatorList.fnArray[0] === _util.OPS.setCharWidthAndBounds) { + this._removeType3ColorOperators(operatorList, fontBBoxSize); + } + + charProcOperatorList[key] = operatorList.getIR(); + + for (const dependency of operatorList.dependencies) { + type3Dependencies.add(dependency); + } + }).catch(function (reason) { + (0, _util.warn)(`Type3 font resource "${key}" is not available.`); + const dummyOperatorList = new _operator_list.OperatorList(); + charProcOperatorList[key] = dummyOperatorList.getIR(); + }); + }); + } + + this.type3Loaded = loadCharProcsPromise.then(() => { + translatedFont.charProcOperatorList = charProcOperatorList; + + if (this._bbox) { + translatedFont.isCharBBox = true; + translatedFont.bbox = this._bbox; + } + }); + return this.type3Loaded; + } + + _removeType3ColorOperators(operatorList) { + let fontBBoxSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN; + + const charBBox = _util.Util.normalizeRect(operatorList.argsArray[0].slice(2)), + width = charBBox[2] - charBBox[0], + height = charBBox[3] - charBBox[1]; + + const charBBoxSize = Math.hypot(width, height); + + if (width === 0 || height === 0) { + operatorList.fnArray.splice(0, 1); + operatorList.argsArray.splice(0, 1); + } else if (fontBBoxSize === 0 || Math.round(charBBoxSize / fontBBoxSize) >= 10) { + if (!this._bbox) { + this._bbox = [Infinity, Infinity, -Infinity, -Infinity]; + } + + this._bbox[0] = Math.min(this._bbox[0], charBBox[0]); + this._bbox[1] = Math.min(this._bbox[1], charBBox[1]); + this._bbox[2] = Math.max(this._bbox[2], charBBox[2]); + this._bbox[3] = Math.max(this._bbox[3], charBBox[3]); + } + + let i = 0, + ii = operatorList.length; + + while (i < ii) { + switch (operatorList.fnArray[i]) { + case _util.OPS.setCharWidthAndBounds: + break; + + case _util.OPS.setStrokeColorSpace: + case _util.OPS.setFillColorSpace: + case _util.OPS.setStrokeColor: + case _util.OPS.setStrokeColorN: + case _util.OPS.setFillColor: + case _util.OPS.setFillColorN: + case _util.OPS.setStrokeGray: + case _util.OPS.setFillGray: + case _util.OPS.setStrokeRGBColor: + case _util.OPS.setFillRGBColor: + case _util.OPS.setStrokeCMYKColor: + case _util.OPS.setFillCMYKColor: + case _util.OPS.shadingFill: + case _util.OPS.setRenderingIntent: + operatorList.fnArray.splice(i, 1); + operatorList.argsArray.splice(i, 1); + ii--; + continue; + + case _util.OPS.setGState: + const [gStateObj] = operatorList.argsArray[i]; + let j = 0, + jj = gStateObj.length; + + while (j < jj) { + const [gStateKey] = gStateObj[j]; + + switch (gStateKey) { + case "TR": + case "TR2": + case "HT": + case "BG": + case "BG2": + case "UCR": + case "UCR2": + gStateObj.splice(j, 1); + jj--; + continue; + } + + j++; + } + + break; + } + + i++; + } + } + +} + +class StateManager { + constructor() { + let initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new EvalState(); + this.state = initialState; + this.stateStack = []; + } + + save() { + const old = this.state; + this.stateStack.push(this.state); + this.state = old.clone(); + } + + restore() { + const prev = this.stateStack.pop(); + + if (prev) { + this.state = prev; + } + } + + transform(args) { + this.state.ctm = _util.Util.transform(this.state.ctm, args); + } + +} + +class TextState { + constructor() { + this.ctm = new Float32Array(_util.IDENTITY_MATRIX); + this.fontName = null; + this.fontSize = 0; + this.font = null; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; + this.textMatrix = _util.IDENTITY_MATRIX.slice(); + this.textLineMatrix = _util.IDENTITY_MATRIX.slice(); + this.charSpacing = 0; + this.wordSpacing = 0; + this.leading = 0; + this.textHScale = 1; + this.textRise = 0; + } + + setTextMatrix(a, b, c, d, e, f) { + const m = this.textMatrix; + m[0] = a; + m[1] = b; + m[2] = c; + m[3] = d; + m[4] = e; + m[5] = f; + } + + setTextLineMatrix(a, b, c, d, e, f) { + const m = this.textLineMatrix; + m[0] = a; + m[1] = b; + m[2] = c; + m[3] = d; + m[4] = e; + m[5] = f; + } + + translateTextMatrix(x, y) { + const m = this.textMatrix; + m[4] = m[0] * x + m[2] * y + m[4]; + m[5] = m[1] * x + m[3] * y + m[5]; + } + + translateTextLineMatrix(x, y) { + const m = this.textLineMatrix; + m[4] = m[0] * x + m[2] * y + m[4]; + m[5] = m[1] * x + m[3] * y + m[5]; + } + + carriageReturn() { + this.translateTextLineMatrix(0, -this.leading); + this.textMatrix = this.textLineMatrix.slice(); + } + + clone() { + const clone = Object.create(this); + clone.textMatrix = this.textMatrix.slice(); + clone.textLineMatrix = this.textLineMatrix.slice(); + clone.fontMatrix = this.fontMatrix.slice(); + return clone; + } + +} + +class EvalState { + constructor() { + this.ctm = new Float32Array(_util.IDENTITY_MATRIX); + this.font = null; + this.textRenderingMode = _util.TextRenderingMode.FILL; + this.fillColorSpace = _colorspace.ColorSpace.singletons.gray; + this.strokeColorSpace = _colorspace.ColorSpace.singletons.gray; + } + + clone() { + return Object.create(this); + } + +} + +class EvaluatorPreprocessor { + static get opMap() { + const getOPMap = (0, _core_utils.getLookupTableFactory)(function (t) { + t.w = { + id: _util.OPS.setLineWidth, + numArgs: 1, + variableArgs: false + }; + t.J = { + id: _util.OPS.setLineCap, + numArgs: 1, + variableArgs: false + }; + t.j = { + id: _util.OPS.setLineJoin, + numArgs: 1, + variableArgs: false + }; + t.M = { + id: _util.OPS.setMiterLimit, + numArgs: 1, + variableArgs: false + }; + t.d = { + id: _util.OPS.setDash, + numArgs: 2, + variableArgs: false + }; + t.ri = { + id: _util.OPS.setRenderingIntent, + numArgs: 1, + variableArgs: false + }; + t.i = { + id: _util.OPS.setFlatness, + numArgs: 1, + variableArgs: false + }; + t.gs = { + id: _util.OPS.setGState, + numArgs: 1, + variableArgs: false + }; + t.q = { + id: _util.OPS.save, + numArgs: 0, + variableArgs: false + }; + t.Q = { + id: _util.OPS.restore, + numArgs: 0, + variableArgs: false + }; + t.cm = { + id: _util.OPS.transform, + numArgs: 6, + variableArgs: false + }; + t.m = { + id: _util.OPS.moveTo, + numArgs: 2, + variableArgs: false + }; + t.l = { + id: _util.OPS.lineTo, + numArgs: 2, + variableArgs: false + }; + t.c = { + id: _util.OPS.curveTo, + numArgs: 6, + variableArgs: false + }; + t.v = { + id: _util.OPS.curveTo2, + numArgs: 4, + variableArgs: false + }; + t.y = { + id: _util.OPS.curveTo3, + numArgs: 4, + variableArgs: false + }; + t.h = { + id: _util.OPS.closePath, + numArgs: 0, + variableArgs: false + }; + t.re = { + id: _util.OPS.rectangle, + numArgs: 4, + variableArgs: false + }; + t.S = { + id: _util.OPS.stroke, + numArgs: 0, + variableArgs: false + }; + t.s = { + id: _util.OPS.closeStroke, + numArgs: 0, + variableArgs: false + }; + t.f = { + id: _util.OPS.fill, + numArgs: 0, + variableArgs: false + }; + t.F = { + id: _util.OPS.fill, + numArgs: 0, + variableArgs: false + }; + t["f*"] = { + id: _util.OPS.eoFill, + numArgs: 0, + variableArgs: false + }; + t.B = { + id: _util.OPS.fillStroke, + numArgs: 0, + variableArgs: false + }; + t["B*"] = { + id: _util.OPS.eoFillStroke, + numArgs: 0, + variableArgs: false + }; + t.b = { + id: _util.OPS.closeFillStroke, + numArgs: 0, + variableArgs: false + }; + t["b*"] = { + id: _util.OPS.closeEOFillStroke, + numArgs: 0, + variableArgs: false + }; + t.n = { + id: _util.OPS.endPath, + numArgs: 0, + variableArgs: false + }; + t.W = { + id: _util.OPS.clip, + numArgs: 0, + variableArgs: false + }; + t["W*"] = { + id: _util.OPS.eoClip, + numArgs: 0, + variableArgs: false + }; + t.BT = { + id: _util.OPS.beginText, + numArgs: 0, + variableArgs: false + }; + t.ET = { + id: _util.OPS.endText, + numArgs: 0, + variableArgs: false + }; + t.Tc = { + id: _util.OPS.setCharSpacing, + numArgs: 1, + variableArgs: false + }; + t.Tw = { + id: _util.OPS.setWordSpacing, + numArgs: 1, + variableArgs: false + }; + t.Tz = { + id: _util.OPS.setHScale, + numArgs: 1, + variableArgs: false + }; + t.TL = { + id: _util.OPS.setLeading, + numArgs: 1, + variableArgs: false + }; + t.Tf = { + id: _util.OPS.setFont, + numArgs: 2, + variableArgs: false + }; + t.Tr = { + id: _util.OPS.setTextRenderingMode, + numArgs: 1, + variableArgs: false + }; + t.Ts = { + id: _util.OPS.setTextRise, + numArgs: 1, + variableArgs: false + }; + t.Td = { + id: _util.OPS.moveText, + numArgs: 2, + variableArgs: false + }; + t.TD = { + id: _util.OPS.setLeadingMoveText, + numArgs: 2, + variableArgs: false + }; + t.Tm = { + id: _util.OPS.setTextMatrix, + numArgs: 6, + variableArgs: false + }; + t["T*"] = { + id: _util.OPS.nextLine, + numArgs: 0, + variableArgs: false + }; + t.Tj = { + id: _util.OPS.showText, + numArgs: 1, + variableArgs: false + }; + t.TJ = { + id: _util.OPS.showSpacedText, + numArgs: 1, + variableArgs: false + }; + t["'"] = { + id: _util.OPS.nextLineShowText, + numArgs: 1, + variableArgs: false + }; + t['"'] = { + id: _util.OPS.nextLineSetSpacingShowText, + numArgs: 3, + variableArgs: false + }; + t.d0 = { + id: _util.OPS.setCharWidth, + numArgs: 2, + variableArgs: false + }; + t.d1 = { + id: _util.OPS.setCharWidthAndBounds, + numArgs: 6, + variableArgs: false + }; + t.CS = { + id: _util.OPS.setStrokeColorSpace, + numArgs: 1, + variableArgs: false + }; + t.cs = { + id: _util.OPS.setFillColorSpace, + numArgs: 1, + variableArgs: false + }; + t.SC = { + id: _util.OPS.setStrokeColor, + numArgs: 4, + variableArgs: true + }; + t.SCN = { + id: _util.OPS.setStrokeColorN, + numArgs: 33, + variableArgs: true + }; + t.sc = { + id: _util.OPS.setFillColor, + numArgs: 4, + variableArgs: true + }; + t.scn = { + id: _util.OPS.setFillColorN, + numArgs: 33, + variableArgs: true + }; + t.G = { + id: _util.OPS.setStrokeGray, + numArgs: 1, + variableArgs: false + }; + t.g = { + id: _util.OPS.setFillGray, + numArgs: 1, + variableArgs: false + }; + t.RG = { + id: _util.OPS.setStrokeRGBColor, + numArgs: 3, + variableArgs: false + }; + t.rg = { + id: _util.OPS.setFillRGBColor, + numArgs: 3, + variableArgs: false + }; + t.K = { + id: _util.OPS.setStrokeCMYKColor, + numArgs: 4, + variableArgs: false + }; + t.k = { + id: _util.OPS.setFillCMYKColor, + numArgs: 4, + variableArgs: false + }; + t.sh = { + id: _util.OPS.shadingFill, + numArgs: 1, + variableArgs: false + }; + t.BI = { + id: _util.OPS.beginInlineImage, + numArgs: 0, + variableArgs: false + }; + t.ID = { + id: _util.OPS.beginImageData, + numArgs: 0, + variableArgs: false + }; + t.EI = { + id: _util.OPS.endInlineImage, + numArgs: 1, + variableArgs: false + }; + t.Do = { + id: _util.OPS.paintXObject, + numArgs: 1, + variableArgs: false + }; + t.MP = { + id: _util.OPS.markPoint, + numArgs: 1, + variableArgs: false + }; + t.DP = { + id: _util.OPS.markPointProps, + numArgs: 2, + variableArgs: false + }; + t.BMC = { + id: _util.OPS.beginMarkedContent, + numArgs: 1, + variableArgs: false + }; + t.BDC = { + id: _util.OPS.beginMarkedContentProps, + numArgs: 2, + variableArgs: false + }; + t.EMC = { + id: _util.OPS.endMarkedContent, + numArgs: 0, + variableArgs: false + }; + t.BX = { + id: _util.OPS.beginCompat, + numArgs: 0, + variableArgs: false + }; + t.EX = { + id: _util.OPS.endCompat, + numArgs: 0, + variableArgs: false + }; + t.BM = null; + t.BD = null; + t.true = null; + t.fa = null; + t.fal = null; + t.fals = null; + t.false = null; + t.nu = null; + t.nul = null; + t.null = null; + }); + return (0, _util.shadow)(this, "opMap", getOPMap()); + } + + static get MAX_INVALID_PATH_OPS() { + return (0, _util.shadow)(this, "MAX_INVALID_PATH_OPS", 10); + } + + constructor(stream, xref) { + let stateManager = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new StateManager(); + this.parser = new _parser.Parser({ + lexer: new _parser.Lexer(stream, EvaluatorPreprocessor.opMap), + xref + }); + this.stateManager = stateManager; + this.nonProcessedArgs = []; + this._isPathOp = false; + this._numInvalidPathOPS = 0; + } + + get savedStatesDepth() { + return this.stateManager.stateStack.length; + } + + read(operation) { + let args = operation.args; + + while (true) { + const obj = this.parser.getObj(); + + if (obj instanceof _primitives.Cmd) { + const cmd = obj.cmd; + const opSpec = EvaluatorPreprocessor.opMap[cmd]; + + if (!opSpec) { + (0, _util.warn)(`Unknown command "${cmd}".`); + continue; + } + + const fn = opSpec.id; + const numArgs = opSpec.numArgs; + let argsLength = args !== null ? args.length : 0; + + if (!this._isPathOp) { + this._numInvalidPathOPS = 0; + } + + this._isPathOp = fn >= _util.OPS.moveTo && fn <= _util.OPS.endPath; + + if (!opSpec.variableArgs) { + if (argsLength !== numArgs) { + const nonProcessedArgs = this.nonProcessedArgs; + + while (argsLength > numArgs) { + nonProcessedArgs.push(args.shift()); + argsLength--; + } + + while (argsLength < numArgs && nonProcessedArgs.length !== 0) { + if (args === null) { + args = []; + } + + args.unshift(nonProcessedArgs.pop()); + argsLength++; + } + } + + if (argsLength < numArgs) { + const partialMsg = `command ${cmd}: expected ${numArgs} args, ` + `but received ${argsLength} args.`; + + if (this._isPathOp && ++this._numInvalidPathOPS > EvaluatorPreprocessor.MAX_INVALID_PATH_OPS) { + throw new _util.FormatError(`Invalid ${partialMsg}`); + } + + (0, _util.warn)(`Skipping ${partialMsg}`); + + if (args !== null) { + args.length = 0; + } + + continue; + } + } else if (argsLength > numArgs) { + (0, _util.info)(`Command ${cmd}: expected [0, ${numArgs}] args, ` + `but received ${argsLength} args.`); + } + + this.preprocessCommand(fn, args); + operation.fn = fn; + operation.args = args; + return true; + } + + if (obj === _primitives.EOF) { + return false; + } + + if (obj !== null) { + if (args === null) { + args = []; + } + + args.push(obj); + + if (args.length > 33) { + throw new _util.FormatError("Too many arguments"); + } + } + } + } + + preprocessCommand(fn, args) { + switch (fn | 0) { + case _util.OPS.save: + this.stateManager.save(); + break; + + case _util.OPS.restore: + this.stateManager.restore(); + break; + + case _util.OPS.transform: + this.stateManager.transform(args); + break; + } + } + +} + +exports.EvaluatorPreprocessor = EvaluatorPreprocessor; + +/***/ }), +/* 141 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.IdentityCMap = exports.CMapFactory = exports.CMap = void 0; + +var _util = __w_pdfjs_require__(2); + +var _primitives = __w_pdfjs_require__(130); + +var _base_stream = __w_pdfjs_require__(132); + +var _parser = __w_pdfjs_require__(142); + +var _core_utils = __w_pdfjs_require__(131); + +var _stream = __w_pdfjs_require__(135); + +const BUILT_IN_CMAPS = ["Adobe-GB1-UCS2", "Adobe-CNS1-UCS2", "Adobe-Japan1-UCS2", "Adobe-Korea1-UCS2", "78-EUC-H", "78-EUC-V", "78-H", "78-RKSJ-H", "78-RKSJ-V", "78-V", "78ms-RKSJ-H", "78ms-RKSJ-V", "83pv-RKSJ-H", "90ms-RKSJ-H", "90ms-RKSJ-V", "90msp-RKSJ-H", "90msp-RKSJ-V", "90pv-RKSJ-H", "90pv-RKSJ-V", "Add-H", "Add-RKSJ-H", "Add-RKSJ-V", "Add-V", "Adobe-CNS1-0", "Adobe-CNS1-1", "Adobe-CNS1-2", "Adobe-CNS1-3", "Adobe-CNS1-4", "Adobe-CNS1-5", "Adobe-CNS1-6", "Adobe-GB1-0", "Adobe-GB1-1", "Adobe-GB1-2", "Adobe-GB1-3", "Adobe-GB1-4", "Adobe-GB1-5", "Adobe-Japan1-0", "Adobe-Japan1-1", "Adobe-Japan1-2", "Adobe-Japan1-3", "Adobe-Japan1-4", "Adobe-Japan1-5", "Adobe-Japan1-6", "Adobe-Korea1-0", "Adobe-Korea1-1", "Adobe-Korea1-2", "B5-H", "B5-V", "B5pc-H", "B5pc-V", "CNS-EUC-H", "CNS-EUC-V", "CNS1-H", "CNS1-V", "CNS2-H", "CNS2-V", "ETHK-B5-H", "ETHK-B5-V", "ETen-B5-H", "ETen-B5-V", "ETenms-B5-H", "ETenms-B5-V", "EUC-H", "EUC-V", "Ext-H", "Ext-RKSJ-H", "Ext-RKSJ-V", "Ext-V", "GB-EUC-H", "GB-EUC-V", "GB-H", "GB-V", "GBK-EUC-H", "GBK-EUC-V", "GBK2K-H", "GBK2K-V", "GBKp-EUC-H", "GBKp-EUC-V", "GBT-EUC-H", "GBT-EUC-V", "GBT-H", "GBT-V", "GBTpc-EUC-H", "GBTpc-EUC-V", "GBpc-EUC-H", "GBpc-EUC-V", "H", "HKdla-B5-H", "HKdla-B5-V", "HKdlb-B5-H", "HKdlb-B5-V", "HKgccs-B5-H", "HKgccs-B5-V", "HKm314-B5-H", "HKm314-B5-V", "HKm471-B5-H", "HKm471-B5-V", "HKscs-B5-H", "HKscs-B5-V", "Hankaku", "Hiragana", "KSC-EUC-H", "KSC-EUC-V", "KSC-H", "KSC-Johab-H", "KSC-Johab-V", "KSC-V", "KSCms-UHC-H", "KSCms-UHC-HW-H", "KSCms-UHC-HW-V", "KSCms-UHC-V", "KSCpc-EUC-H", "KSCpc-EUC-V", "Katakana", "NWP-H", "NWP-V", "RKSJ-H", "RKSJ-V", "Roman", "UniCNS-UCS2-H", "UniCNS-UCS2-V", "UniCNS-UTF16-H", "UniCNS-UTF16-V", "UniCNS-UTF32-H", "UniCNS-UTF32-V", "UniCNS-UTF8-H", "UniCNS-UTF8-V", "UniGB-UCS2-H", "UniGB-UCS2-V", "UniGB-UTF16-H", "UniGB-UTF16-V", "UniGB-UTF32-H", "UniGB-UTF32-V", "UniGB-UTF8-H", "UniGB-UTF8-V", "UniJIS-UCS2-H", "UniJIS-UCS2-HW-H", "UniJIS-UCS2-HW-V", "UniJIS-UCS2-V", "UniJIS-UTF16-H", "UniJIS-UTF16-V", "UniJIS-UTF32-H", "UniJIS-UTF32-V", "UniJIS-UTF8-H", "UniJIS-UTF8-V", "UniJIS2004-UTF16-H", "UniJIS2004-UTF16-V", "UniJIS2004-UTF32-H", "UniJIS2004-UTF32-V", "UniJIS2004-UTF8-H", "UniJIS2004-UTF8-V", "UniJISPro-UCS2-HW-V", "UniJISPro-UCS2-V", "UniJISPro-UTF8-V", "UniJISX0213-UTF32-H", "UniJISX0213-UTF32-V", "UniJISX02132004-UTF32-H", "UniJISX02132004-UTF32-V", "UniKS-UCS2-H", "UniKS-UCS2-V", "UniKS-UTF16-H", "UniKS-UTF16-V", "UniKS-UTF32-H", "UniKS-UTF32-V", "UniKS-UTF8-H", "UniKS-UTF8-V", "V", "WP-Symbol"]; +const MAX_MAP_RANGE = 2 ** 24 - 1; + +class CMap { + constructor() { + let builtInCMap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + this.codespaceRanges = [[], [], [], []]; + this.numCodespaceRanges = 0; + this._map = []; + this.name = ""; + this.vertical = false; + this.useCMap = null; + this.builtInCMap = builtInCMap; + } + + addCodespaceRange(n, low, high) { + this.codespaceRanges[n - 1].push(low, high); + this.numCodespaceRanges++; + } + + mapCidRange(low, high, dstLow) { + if (high - low > MAX_MAP_RANGE) { + throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE."); + } + + while (low <= high) { + this._map[low++] = dstLow++; + } + } + + mapBfRange(low, high, dstLow) { + if (high - low > MAX_MAP_RANGE) { + throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE."); + } + + const lastByte = dstLow.length - 1; + + while (low <= high) { + this._map[low++] = dstLow; + const nextCharCode = dstLow.charCodeAt(lastByte) + 1; + + if (nextCharCode > 0xff) { + dstLow = dstLow.substring(0, lastByte - 1) + String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) + "\x00"; + continue; + } + + dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode); + } + } + + mapBfRangeToArray(low, high, array) { + if (high - low > MAX_MAP_RANGE) { + throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE."); + } + + const ii = array.length; + let i = 0; + + while (low <= high && i < ii) { + this._map[low] = array[i++]; + ++low; + } + } + + mapOne(src, dst) { + this._map[src] = dst; + } + + lookup(code) { + return this._map[code]; + } + + contains(code) { + return this._map[code] !== undefined; + } + + forEach(callback) { + const map = this._map; + const length = map.length; + + if (length <= 0x10000) { + for (let i = 0; i < length; i++) { + if (map[i] !== undefined) { + callback(i, map[i]); + } + } + } else { + for (const i in map) { + callback(i, map[i]); + } + } + } + + charCodeOf(value) { + const map = this._map; + + if (map.length <= 0x10000) { + return map.indexOf(value); + } + + for (const charCode in map) { + if (map[charCode] === value) { + return charCode | 0; + } + } + + return -1; + } + + getMap() { + return this._map; + } + + readCharCode(str, offset, out) { + let c = 0; + const codespaceRanges = this.codespaceRanges; + + for (let n = 0, nn = codespaceRanges.length; n < nn; n++) { + c = (c << 8 | str.charCodeAt(offset + n)) >>> 0; + const codespaceRange = codespaceRanges[n]; + + for (let k = 0, kk = codespaceRange.length; k < kk;) { + const low = codespaceRange[k++]; + const high = codespaceRange[k++]; + + if (c >= low && c <= high) { + out.charcode = c; + out.length = n + 1; + return; + } + } + } + + out.charcode = 0; + out.length = 1; + } + + getCharCodeLength(charCode) { + const codespaceRanges = this.codespaceRanges; + + for (let n = 0, nn = codespaceRanges.length; n < nn; n++) { + const codespaceRange = codespaceRanges[n]; + + for (let k = 0, kk = codespaceRange.length; k < kk;) { + const low = codespaceRange[k++]; + const high = codespaceRange[k++]; + + if (charCode >= low && charCode <= high) { + return n + 1; + } + } + } + + return 1; + } + + get length() { + return this._map.length; + } + + get isIdentityCMap() { + if (!(this.name === "Identity-H" || this.name === "Identity-V")) { + return false; + } + + if (this._map.length !== 0x10000) { + return false; + } + + for (let i = 0; i < 0x10000; i++) { + if (this._map[i] !== i) { + return false; + } + } + + return true; + } + +} + +exports.CMap = CMap; + +class IdentityCMap extends CMap { + constructor(vertical, n) { + super(); + this.vertical = vertical; + this.addCodespaceRange(n, 0, 0xffff); + } + + mapCidRange(low, high, dstLow) { + (0, _util.unreachable)("should not call mapCidRange"); + } + + mapBfRange(low, high, dstLow) { + (0, _util.unreachable)("should not call mapBfRange"); + } + + mapBfRangeToArray(low, high, array) { + (0, _util.unreachable)("should not call mapBfRangeToArray"); + } + + mapOne(src, dst) { + (0, _util.unreachable)("should not call mapCidOne"); + } + + lookup(code) { + return Number.isInteger(code) && code <= 0xffff ? code : undefined; + } + + contains(code) { + return Number.isInteger(code) && code <= 0xffff; + } + + forEach(callback) { + for (let i = 0; i <= 0xffff; i++) { + callback(i, i); + } + } + + charCodeOf(value) { + return Number.isInteger(value) && value <= 0xffff ? value : -1; + } + + getMap() { + const map = new Array(0x10000); + + for (let i = 0; i <= 0xffff; i++) { + map[i] = i; + } + + return map; + } + + get length() { + return 0x10000; + } + + get isIdentityCMap() { + (0, _util.unreachable)("should not access .isIdentityCMap"); + } + +} + +exports.IdentityCMap = IdentityCMap; + +const BinaryCMapReader = function BinaryCMapReaderClosure() { + function hexToInt(a, size) { + let n = 0; + + for (let i = 0; i <= size; i++) { + n = n << 8 | a[i]; + } + + return n >>> 0; + } + + function hexToStr(a, size) { + if (size === 1) { + return String.fromCharCode(a[0], a[1]); + } + + if (size === 3) { + return String.fromCharCode(a[0], a[1], a[2], a[3]); + } + + return String.fromCharCode.apply(null, a.subarray(0, size + 1)); + } + + function addHex(a, b, size) { + let c = 0; + + for (let i = size; i >= 0; i--) { + c += a[i] + b[i]; + a[i] = c & 255; + c >>= 8; + } + } + + function incHex(a, size) { + let c = 1; + + for (let i = size; i >= 0 && c > 0; i--) { + c += a[i]; + a[i] = c & 255; + c >>= 8; + } + } + + const MAX_NUM_SIZE = 16; + const MAX_ENCODED_NUM_SIZE = 19; + + class BinaryCMapStream { + constructor(data) { + this.buffer = data; + this.pos = 0; + this.end = data.length; + this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE); + } + + readByte() { + if (this.pos >= this.end) { + return -1; + } + + return this.buffer[this.pos++]; + } + + readNumber() { + let n = 0; + let last; + + do { + const b = this.readByte(); + + if (b < 0) { + throw new _util.FormatError("unexpected EOF in bcmap"); + } + + last = !(b & 0x80); + n = n << 7 | b & 0x7f; + } while (!last); + + return n; + } + + readSigned() { + const n = this.readNumber(); + return n & 1 ? ~(n >>> 1) : n >>> 1; + } + + readHex(num, size) { + num.set(this.buffer.subarray(this.pos, this.pos + size + 1)); + this.pos += size + 1; + } + + readHexNumber(num, size) { + let last; + const stack = this.tmpBuf; + let sp = 0; + + do { + const b = this.readByte(); + + if (b < 0) { + throw new _util.FormatError("unexpected EOF in bcmap"); + } + + last = !(b & 0x80); + stack[sp++] = b & 0x7f; + } while (!last); + + let i = size, + buffer = 0, + bufferSize = 0; + + while (i >= 0) { + while (bufferSize < 8 && stack.length > 0) { + buffer |= stack[--sp] << bufferSize; + bufferSize += 7; + } + + num[i] = buffer & 255; + i--; + buffer >>= 8; + bufferSize -= 8; + } + } + + readHexSigned(num, size) { + this.readHexNumber(num, size); + const sign = num[size] & 1 ? 255 : 0; + let c = 0; + + for (let i = 0; i <= size; i++) { + c = (c & 1) << 8 | num[i]; + num[i] = c >> 1 ^ sign; + } + } + + readString() { + const len = this.readNumber(); + let s = ""; + + for (let i = 0; i < len; i++) { + s += String.fromCharCode(this.readNumber()); + } + + return s; + } + + } + + class BinaryCMapReader { + async process(data, cMap, extend) { + const stream = new BinaryCMapStream(data); + const header = stream.readByte(); + cMap.vertical = !!(header & 1); + let useCMap = null; + const start = new Uint8Array(MAX_NUM_SIZE); + const end = new Uint8Array(MAX_NUM_SIZE); + const char = new Uint8Array(MAX_NUM_SIZE); + const charCode = new Uint8Array(MAX_NUM_SIZE); + const tmp = new Uint8Array(MAX_NUM_SIZE); + let code; + let b; + + while ((b = stream.readByte()) >= 0) { + const type = b >> 5; + + if (type === 7) { + switch (b & 0x1f) { + case 0: + stream.readString(); + break; + + case 1: + useCMap = stream.readString(); + break; + } + + continue; + } + + const sequence = !!(b & 0x10); + const dataSize = b & 15; + + if (dataSize + 1 > MAX_NUM_SIZE) { + throw new Error("BinaryCMapReader.process: Invalid dataSize."); + } + + const ucs2DataSize = 1; + const subitemsCount = stream.readNumber(); + + switch (type) { + case 0: + stream.readHex(start, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize)); + + for (let i = 1; i < subitemsCount; i++) { + incHex(end, dataSize); + stream.readHexNumber(start, dataSize); + addHex(start, end, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize)); + } + + break; + + case 1: + stream.readHex(start, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + stream.readNumber(); + + for (let i = 1; i < subitemsCount; i++) { + incHex(end, dataSize); + stream.readHexNumber(start, dataSize); + addHex(start, end, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + stream.readNumber(); + } + + break; + + case 2: + stream.readHex(char, dataSize); + code = stream.readNumber(); + cMap.mapOne(hexToInt(char, dataSize), code); + + for (let i = 1; i < subitemsCount; i++) { + incHex(char, dataSize); + + if (!sequence) { + stream.readHexNumber(tmp, dataSize); + addHex(char, tmp, dataSize); + } + + code = stream.readSigned() + (code + 1); + cMap.mapOne(hexToInt(char, dataSize), code); + } + + break; + + case 3: + stream.readHex(start, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + code = stream.readNumber(); + cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code); + + for (let i = 1; i < subitemsCount; i++) { + incHex(end, dataSize); + + if (!sequence) { + stream.readHexNumber(start, dataSize); + addHex(start, end, dataSize); + } else { + start.set(end); + } + + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + code = stream.readNumber(); + cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code); + } + + break; + + case 4: + stream.readHex(char, ucs2DataSize); + stream.readHex(charCode, dataSize); + cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize)); + + for (let i = 1; i < subitemsCount; i++) { + incHex(char, ucs2DataSize); + + if (!sequence) { + stream.readHexNumber(tmp, ucs2DataSize); + addHex(char, tmp, ucs2DataSize); + } + + incHex(charCode, dataSize); + stream.readHexSigned(tmp, dataSize); + addHex(charCode, tmp, dataSize); + cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize)); + } + + break; + + case 5: + stream.readHex(start, ucs2DataSize); + stream.readHexNumber(end, ucs2DataSize); + addHex(end, start, ucs2DataSize); + stream.readHex(charCode, dataSize); + cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize)); + + for (let i = 1; i < subitemsCount; i++) { + incHex(end, ucs2DataSize); + + if (!sequence) { + stream.readHexNumber(start, ucs2DataSize); + addHex(start, end, ucs2DataSize); + } else { + start.set(end); + } + + stream.readHexNumber(end, ucs2DataSize); + addHex(end, start, ucs2DataSize); + stream.readHex(charCode, dataSize); + cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize)); + } + + break; + + default: + throw new Error(`BinaryCMapReader.process - unknown type: ${type}`); + } + } + + if (useCMap) { + return extend(useCMap); + } + + return cMap; + } + + } + + return BinaryCMapReader; +}(); + +const CMapFactory = function CMapFactoryClosure() { + function strToInt(str) { + let a = 0; + + for (let i = 0; i < str.length; i++) { + a = a << 8 | str.charCodeAt(i); + } + + return a >>> 0; + } + + function expectString(obj) { + if (typeof obj !== "string") { + throw new _util.FormatError("Malformed CMap: expected string."); + } + } + + function expectInt(obj) { + if (!Number.isInteger(obj)) { + throw new _util.FormatError("Malformed CMap: expected int."); + } + } + + function parseBfChar(cMap, lexer) { + while (true) { + let obj = lexer.getObj(); + + if (obj === _primitives.EOF) { + break; + } + + if ((0, _primitives.isCmd)(obj, "endbfchar")) { + return; + } + + expectString(obj); + const src = strToInt(obj); + obj = lexer.getObj(); + expectString(obj); + const dst = obj; + cMap.mapOne(src, dst); + } + } + + function parseBfRange(cMap, lexer) { + while (true) { + let obj = lexer.getObj(); + + if (obj === _primitives.EOF) { + break; + } + + if ((0, _primitives.isCmd)(obj, "endbfrange")) { + return; + } + + expectString(obj); + const low = strToInt(obj); + obj = lexer.getObj(); + expectString(obj); + const high = strToInt(obj); + obj = lexer.getObj(); + + if (Number.isInteger(obj) || typeof obj === "string") { + const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj; + cMap.mapBfRange(low, high, dstLow); + } else if ((0, _primitives.isCmd)(obj, "[")) { + obj = lexer.getObj(); + const array = []; + + while (!(0, _primitives.isCmd)(obj, "]") && obj !== _primitives.EOF) { + array.push(obj); + obj = lexer.getObj(); + } + + cMap.mapBfRangeToArray(low, high, array); + } else { + break; + } + } + + throw new _util.FormatError("Invalid bf range."); + } + + function parseCidChar(cMap, lexer) { + while (true) { + let obj = lexer.getObj(); + + if (obj === _primitives.EOF) { + break; + } + + if ((0, _primitives.isCmd)(obj, "endcidchar")) { + return; + } + + expectString(obj); + const src = strToInt(obj); + obj = lexer.getObj(); + expectInt(obj); + const dst = obj; + cMap.mapOne(src, dst); + } + } + + function parseCidRange(cMap, lexer) { + while (true) { + let obj = lexer.getObj(); + + if (obj === _primitives.EOF) { + break; + } + + if ((0, _primitives.isCmd)(obj, "endcidrange")) { + return; + } + + expectString(obj); + const low = strToInt(obj); + obj = lexer.getObj(); + expectString(obj); + const high = strToInt(obj); + obj = lexer.getObj(); + expectInt(obj); + const dstLow = obj; + cMap.mapCidRange(low, high, dstLow); + } + } + + function parseCodespaceRange(cMap, lexer) { + while (true) { + let obj = lexer.getObj(); + + if (obj === _primitives.EOF) { + break; + } + + if ((0, _primitives.isCmd)(obj, "endcodespacerange")) { + return; + } + + if (typeof obj !== "string") { + break; + } + + const low = strToInt(obj); + obj = lexer.getObj(); + + if (typeof obj !== "string") { + break; + } + + const high = strToInt(obj); + cMap.addCodespaceRange(obj.length, low, high); + } + + throw new _util.FormatError("Invalid codespace range."); + } + + function parseWMode(cMap, lexer) { + const obj = lexer.getObj(); + + if (Number.isInteger(obj)) { + cMap.vertical = !!obj; + } + } + + function parseCMapName(cMap, lexer) { + const obj = lexer.getObj(); + + if (obj instanceof _primitives.Name) { + cMap.name = obj.name; + } + } + + async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) { + let previous, embeddedUseCMap; + + objLoop: while (true) { + try { + const obj = lexer.getObj(); + + if (obj === _primitives.EOF) { + break; + } else if (obj instanceof _primitives.Name) { + if (obj.name === "WMode") { + parseWMode(cMap, lexer); + } else if (obj.name === "CMapName") { + parseCMapName(cMap, lexer); + } + + previous = obj; + } else if (obj instanceof _primitives.Cmd) { + switch (obj.cmd) { + case "endcmap": + break objLoop; + + case "usecmap": + if (previous instanceof _primitives.Name) { + embeddedUseCMap = previous.name; + } + + break; + + case "begincodespacerange": + parseCodespaceRange(cMap, lexer); + break; + + case "beginbfchar": + parseBfChar(cMap, lexer); + break; + + case "begincidchar": + parseCidChar(cMap, lexer); + break; + + case "beginbfrange": + parseBfRange(cMap, lexer); + break; + + case "begincidrange": + parseCidRange(cMap, lexer); + break; + } + } + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.warn)("Invalid cMap data: " + ex); + continue; + } + } + + if (!useCMap && embeddedUseCMap) { + useCMap = embeddedUseCMap; + } + + if (useCMap) { + return extendCMap(cMap, fetchBuiltInCMap, useCMap); + } + + return cMap; + } + + async function extendCMap(cMap, fetchBuiltInCMap, useCMap) { + cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap); + + if (cMap.numCodespaceRanges === 0) { + const useCodespaceRanges = cMap.useCMap.codespaceRanges; + + for (let i = 0; i < useCodespaceRanges.length; i++) { + cMap.codespaceRanges[i] = useCodespaceRanges[i].slice(); + } + + cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges; + } + + cMap.useCMap.forEach(function (key, value) { + if (!cMap.contains(key)) { + cMap.mapOne(key, cMap.useCMap.lookup(key)); + } + }); + return cMap; + } + + async function createBuiltInCMap(name, fetchBuiltInCMap) { + if (name === "Identity-H") { + return new IdentityCMap(false, 2); + } else if (name === "Identity-V") { + return new IdentityCMap(true, 2); + } + + if (!BUILT_IN_CMAPS.includes(name)) { + throw new Error("Unknown CMap name: " + name); + } + + if (!fetchBuiltInCMap) { + throw new Error("Built-in CMap parameters are not provided."); + } + + const { + cMapData, + compressionType + } = await fetchBuiltInCMap(name); + const cMap = new CMap(true); + + if (compressionType === _util.CMapCompressionType.BINARY) { + return new BinaryCMapReader().process(cMapData, cMap, useCMap => { + return extendCMap(cMap, fetchBuiltInCMap, useCMap); + }); + } + + if (compressionType === _util.CMapCompressionType.NONE) { + const lexer = new _parser.Lexer(new _stream.Stream(cMapData)); + return parseCMap(cMap, lexer, fetchBuiltInCMap, null); + } + + throw new Error("TODO: Only BINARY/NONE CMap compression is currently supported."); + } + + return { + async create(params) { + const encoding = params.encoding; + const fetchBuiltInCMap = params.fetchBuiltInCMap; + const useCMap = params.useCMap; + + if (encoding instanceof _primitives.Name) { + return createBuiltInCMap(encoding.name, fetchBuiltInCMap); + } else if (encoding instanceof _base_stream.BaseStream) { + const parsedCMap = await parseCMap(new CMap(), new _parser.Lexer(encoding), fetchBuiltInCMap, useCMap); + + if (parsedCMap.isIdentityCMap) { + return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap); + } + + return parsedCMap; + } + + throw new Error("Encoding required."); + } + + }; +}(); + +exports.CMapFactory = CMapFactory; + +/***/ }), +/* 142 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); exports.Parser = exports.Linearization = exports.Lexer = void 0; -var _stream = __w_pdfjs_require__(158); +var _util = __w_pdfjs_require__(2); -var _util = __w_pdfjs_require__(5); +var _primitives = __w_pdfjs_require__(130); -var _primitives = __w_pdfjs_require__(151); +var _core_utils = __w_pdfjs_require__(131); -var _ccitt_stream = __w_pdfjs_require__(159); +var _ascii_85_stream = __w_pdfjs_require__(143); -var _jbig2_stream = __w_pdfjs_require__(161); +var _ascii_hex_stream = __w_pdfjs_require__(145); -var _jpeg_stream = __w_pdfjs_require__(164); +var _ccitt_stream = __w_pdfjs_require__(146); -var _jpx_stream = __w_pdfjs_require__(166); +var _flate_stream = __w_pdfjs_require__(148); -var _core_utils = __w_pdfjs_require__(154); +var _jbig2_stream = __w_pdfjs_require__(149); -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +var _jpeg_stream = __w_pdfjs_require__(152); -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } +var _jpx_stream = __w_pdfjs_require__(154); -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +var _lzw_stream = __w_pdfjs_require__(156); -var MAX_LENGTH_TO_CACHE = 1000; -var MAX_ADLER32_LENGTH = 5552; +var _stream = __w_pdfjs_require__(135); + +var _predictor_stream = __w_pdfjs_require__(157); + +var _run_length_stream = __w_pdfjs_require__(158); + +const MAX_LENGTH_TO_CACHE = 1000; +const MAX_ADLER32_LENGTH = 5552; function computeAdler32(bytes) { - var bytesLength = bytes.length; - var a = 1, + const bytesLength = bytes.length; + let a = 1, b = 0; - for (var i = 0; i < bytesLength; ++i) { - a += bytes[i] & 0xFF; + for (let i = 0; i < bytesLength; ++i) { + a += bytes[i] & 0xff; b += a; } return b % 65521 << 16 | a % 65521; } -var Parser = -/*#__PURE__*/ -function () { - function Parser(_ref) { - var lexer = _ref.lexer, - xref = _ref.xref, - _ref$allowStreams = _ref.allowStreams, - allowStreams = _ref$allowStreams === void 0 ? false : _ref$allowStreams, - _ref$recoveryMode = _ref.recoveryMode, - recoveryMode = _ref$recoveryMode === void 0 ? false : _ref$recoveryMode; - - _classCallCheck(this, Parser); - +class Parser { + constructor(_ref) { + let { + lexer, + xref, + allowStreams = false, + recoveryMode = false + } = _ref; this.lexer = lexer; this.xref = xref; this.allowStreams = allowStreams; @@ -15829,2226 +18857,1358 @@ function () { this.refill(); } - _createClass(Parser, [{ - key: "refill", - value: function refill() { - this.buf1 = this.lexer.getObj(); + refill() { + this.buf1 = this.lexer.getObj(); + this.buf2 = this.lexer.getObj(); + } + + shift() { + if (this.buf2 instanceof _primitives.Cmd && this.buf2.cmd === "ID") { + this.buf1 = this.buf2; + this.buf2 = null; + } else { + this.buf1 = this.buf2; this.buf2 = this.lexer.getObj(); } - }, { - key: "shift", - value: function shift() { - if ((0, _primitives.isCmd)(this.buf2, 'ID')) { - this.buf1 = this.buf2; - this.buf2 = null; - } else { - this.buf1 = this.buf2; - this.buf2 = this.lexer.getObj(); - } - } - }, { - key: "tryShift", - value: function tryShift() { - try { - this.shift(); - return true; - } catch (e) { - if (e instanceof _core_utils.MissingDataException) { - throw e; - } + } - return false; - } - } - }, { - key: "getObj", - value: function getObj(cipherTransform) { - var buf1 = this.buf1; + tryShift() { + try { this.shift(); + return true; + } catch (e) { + if (e instanceof _core_utils.MissingDataException) { + throw e; + } - if (buf1 instanceof _primitives.Cmd) { - switch (buf1.cmd) { - case 'BI': - return this.makeInlineImage(cipherTransform); + return false; + } + } - case '[': - var array = []; + getObj() { + let cipherTransform = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + const buf1 = this.buf1; + this.shift(); - while (!(0, _primitives.isCmd)(this.buf1, ']') && !(0, _primitives.isEOF)(this.buf1)) { - array.push(this.getObj(cipherTransform)); - } + if (buf1 instanceof _primitives.Cmd) { + switch (buf1.cmd) { + case "BI": + return this.makeInlineImage(cipherTransform); - if ((0, _primitives.isEOF)(this.buf1)) { - if (!this.recoveryMode) { - throw new _util.FormatError('End of file inside array'); - } + case "[": + const array = []; + while (!(0, _primitives.isCmd)(this.buf1, "]") && this.buf1 !== _primitives.EOF) { + array.push(this.getObj(cipherTransform)); + } + + if (this.buf1 === _primitives.EOF) { + if (this.recoveryMode) { return array; } - this.shift(); - return array; + throw new _core_utils.ParserEOFException("End of file inside array."); + } - case '<<': - var dict = new _primitives.Dict(this.xref); + this.shift(); + return array; - while (!(0, _primitives.isCmd)(this.buf1, '>>') && !(0, _primitives.isEOF)(this.buf1)) { - if (!(0, _primitives.isName)(this.buf1)) { - (0, _util.info)('Malformed dictionary: key must be a name object'); - this.shift(); - continue; - } + case "<<": + const dict = new _primitives.Dict(this.xref); - var key = this.buf1.name; + while (!(0, _primitives.isCmd)(this.buf1, ">>") && this.buf1 !== _primitives.EOF) { + if (!(this.buf1 instanceof _primitives.Name)) { + (0, _util.info)("Malformed dictionary: key must be a name object"); this.shift(); - - if ((0, _primitives.isEOF)(this.buf1)) { - break; - } - - dict.set(key, this.getObj(cipherTransform)); + continue; } - if ((0, _primitives.isEOF)(this.buf1)) { - if (!this.recoveryMode) { - throw new _util.FormatError('End of file inside dictionary'); - } + const key = this.buf1.name; + this.shift(); + if (this.buf1 === _primitives.EOF) { + break; + } + + dict.set(key, this.getObj(cipherTransform)); + } + + if (this.buf1 === _primitives.EOF) { + if (this.recoveryMode) { return dict; } - if ((0, _primitives.isCmd)(this.buf2, 'stream')) { - return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict; - } + throw new _core_utils.ParserEOFException("End of file inside dictionary."); + } - this.shift(); - return dict; - - default: - return buf1; - } - } - - if (Number.isInteger(buf1)) { - var num = buf1; - - if (Number.isInteger(this.buf1) && (0, _primitives.isCmd)(this.buf2, 'R')) { - var ref = _primitives.Ref.get(num, this.buf1); + if ((0, _primitives.isCmd)(this.buf2, "stream")) { + return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict; + } this.shift(); - this.shift(); - return ref; - } + return dict; - return num; + default: + return buf1; } + } - if ((0, _util.isString)(buf1)) { - var str = buf1; + if (Number.isInteger(buf1)) { + if (Number.isInteger(this.buf1) && (0, _primitives.isCmd)(this.buf2, "R")) { + const ref = _primitives.Ref.get(buf1, this.buf1); - if (cipherTransform) { - str = cipherTransform.decryptString(str); - } - - return str; + this.shift(); + this.shift(); + return ref; } return buf1; } - }, { - key: "findDefaultInlineStreamEnd", - value: function findDefaultInlineStreamEnd(stream) { - var E = 0x45, + + if (typeof buf1 === "string") { + if (cipherTransform) { + return cipherTransform.decryptString(buf1); + } + + return buf1; + } + + return buf1; + } + + findDefaultInlineStreamEnd(stream) { + const E = 0x45, I = 0x49, SPACE = 0x20, - LF = 0xA, - CR = 0xD; - var n = 10, + LF = 0xa, + CR = 0xd, NUL = 0x0; - var startPos = stream.pos, - state = 0, - ch, - maybeEIPos; + const lexer = this.lexer, + startPos = stream.pos, + n = 10; + let state = 0, + ch, + maybeEIPos; - while ((ch = stream.getByte()) !== -1) { - if (state === 0) { - state = ch === E ? 1 : 0; - } else if (state === 1) { - state = ch === I ? 2 : 0; - } else { - (0, _util.assert)(state === 2); + while ((ch = stream.getByte()) !== -1) { + if (state === 0) { + state = ch === E ? 1 : 0; + } else if (state === 1) { + state = ch === I ? 2 : 0; + } else { + (0, _util.assert)(state === 2, "findDefaultInlineStreamEnd - invalid state."); - if (ch === SPACE || ch === LF || ch === CR) { - maybeEIPos = stream.pos; - var followingBytes = stream.peekBytes(n); + if (ch === SPACE || ch === LF || ch === CR) { + maybeEIPos = stream.pos; + const followingBytes = stream.peekBytes(n); - for (var i = 0, ii = followingBytes.length; i < ii; i++) { - ch = followingBytes[i]; + for (let i = 0, ii = followingBytes.length; i < ii; i++) { + ch = followingBytes[i]; - if (ch === NUL && followingBytes[i + 1] !== NUL) { - continue; - } - - if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7F)) { - state = 0; - break; - } + if (ch === NUL && followingBytes[i + 1] !== NUL) { + continue; } - if (state === 2) { + if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) { + state = 0; break; } + } + + if (state !== 2) { + continue; + } + + if (lexer.knownCommands) { + const nextObj = lexer.peekObj(); + + if (nextObj instanceof _primitives.Cmd && !lexer.knownCommands[nextObj.cmd]) { + state = 0; + } } else { - state = 0; + (0, _util.warn)("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined."); } + + if (state === 2) { + break; + } + } else { + state = 0; } } - - if (ch === -1) { - (0, _util.warn)('findDefaultInlineStreamEnd: ' + 'Reached the end of the stream without finding a valid EI marker'); - - if (maybeEIPos) { - (0, _util.warn)('... trying to recover by using the last "EI" occurrence.'); - stream.skip(-(stream.pos - maybeEIPos)); - } - } - - var endOffset = 4; - stream.skip(-endOffset); - ch = stream.peekByte(); - stream.skip(endOffset); - - if (!(0, _util.isSpace)(ch)) { - endOffset--; - } - - return stream.pos - endOffset - startPos; } - }, { - key: "findDCTDecodeInlineStreamEnd", - value: function findDCTDecodeInlineStreamEnd(stream) { - var startPos = stream.pos, - foundEOI = false, - b, - markerLength, - length; - while ((b = stream.getByte()) !== -1) { - if (b !== 0xFF) { - continue; - } + if (ch === -1) { + (0, _util.warn)("findDefaultInlineStreamEnd: " + "Reached the end of the stream without finding a valid EI marker"); - switch (stream.getByte()) { - case 0x00: - break; + if (maybeEIPos) { + (0, _util.warn)('... trying to recover by using the last "EI" occurrence.'); + stream.skip(-(stream.pos - maybeEIPos)); + } + } - case 0xFF: - stream.skip(-1); - break; + let endOffset = 4; + stream.skip(-endOffset); + ch = stream.peekByte(); + stream.skip(endOffset); - case 0xD9: - foundEOI = true; - break; + if (!(0, _core_utils.isWhiteSpace)(ch)) { + endOffset--; + } - case 0xC0: - case 0xC1: - case 0xC2: - case 0xC3: - case 0xC5: - case 0xC6: - case 0xC7: - case 0xC9: - case 0xCA: - case 0xCB: - case 0xCD: - case 0xCE: - case 0xCF: - case 0xC4: - case 0xCC: - case 0xDA: - case 0xDB: - case 0xDC: - case 0xDD: - case 0xDE: - case 0xDF: - case 0xE0: - case 0xE1: - case 0xE2: - case 0xE3: - case 0xE4: - case 0xE5: - case 0xE6: - case 0xE7: - case 0xE8: - case 0xE9: - case 0xEA: - case 0xEB: - case 0xEC: - case 0xED: - case 0xEE: - case 0xEF: - case 0xFE: - markerLength = stream.getUint16(); + return stream.pos - endOffset - startPos; + } - if (markerLength > 2) { - stream.skip(markerLength - 2); - } else { - stream.skip(-2); - } + findDCTDecodeInlineStreamEnd(stream) { + const startPos = stream.pos; + let foundEOI = false, + b, + markerLength; - break; - } + while ((b = stream.getByte()) !== -1) { + if (b !== 0xff) { + continue; + } + + switch (stream.getByte()) { + case 0x00: + break; + + case 0xff: + stream.skip(-1); + break; + + case 0xd9: + foundEOI = true; + break; + + case 0xc0: + case 0xc1: + case 0xc2: + case 0xc3: + case 0xc5: + case 0xc6: + case 0xc7: + case 0xc9: + case 0xca: + case 0xcb: + case 0xcd: + case 0xce: + case 0xcf: + case 0xc4: + case 0xcc: + case 0xda: + case 0xdb: + case 0xdc: + case 0xdd: + case 0xde: + case 0xdf: + case 0xe0: + case 0xe1: + case 0xe2: + case 0xe3: + case 0xe4: + case 0xe5: + case 0xe6: + case 0xe7: + case 0xe8: + case 0xe9: + case 0xea: + case 0xeb: + case 0xec: + case 0xed: + case 0xee: + case 0xef: + case 0xfe: + markerLength = stream.getUint16(); + + if (markerLength > 2) { + stream.skip(markerLength - 2); + } else { + stream.skip(-2); + } - if (foundEOI) { break; - } } - length = stream.pos - startPos; - - if (b === -1) { - (0, _util.warn)('Inline DCTDecode image stream: ' + 'EOI marker not found, searching for /EI/ instead.'); - stream.skip(-length); - return this.findDefaultInlineStreamEnd(stream); + if (foundEOI) { + break; } - - this.inlineStreamSkipEI(stream); - return length; } - }, { - key: "findASCII85DecodeInlineStreamEnd", - value: function findASCII85DecodeInlineStreamEnd(stream) { - var TILDE = 0x7E, - GT = 0x3E; - var startPos = stream.pos, - ch, - length; - while ((ch = stream.getByte()) !== -1) { - if (ch === TILDE) { + const length = stream.pos - startPos; + + if (b === -1) { + (0, _util.warn)("Inline DCTDecode image stream: " + "EOI marker not found, searching for /EI/ instead."); + stream.skip(-length); + return this.findDefaultInlineStreamEnd(stream); + } + + this.inlineStreamSkipEI(stream); + return length; + } + + findASCII85DecodeInlineStreamEnd(stream) { + const TILDE = 0x7e, + GT = 0x3e; + const startPos = stream.pos; + let ch; + + while ((ch = stream.getByte()) !== -1) { + if (ch === TILDE) { + const tildePos = stream.pos; + ch = stream.peekByte(); + + while ((0, _core_utils.isWhiteSpace)(ch)) { + stream.skip(); ch = stream.peekByte(); + } - while ((0, _util.isSpace)(ch)) { - stream.skip(); - ch = stream.peekByte(); - } + if (ch === GT) { + stream.skip(); + break; + } - if (ch === GT) { - stream.skip(); + if (stream.pos > tildePos) { + const maybeEI = stream.peekBytes(2); + + if (maybeEI[0] === 0x45 && maybeEI[1] === 0x49) { break; } } } - - length = stream.pos - startPos; - - if (ch === -1) { - (0, _util.warn)('Inline ASCII85Decode image stream: ' + 'EOD marker not found, searching for /EI/ instead.'); - stream.skip(-length); - return this.findDefaultInlineStreamEnd(stream); - } - - this.inlineStreamSkipEI(stream); - return length; } - }, { - key: "findASCIIHexDecodeInlineStreamEnd", - value: function findASCIIHexDecodeInlineStreamEnd(stream) { - var GT = 0x3E; - var startPos = stream.pos, - ch, - length; - while ((ch = stream.getByte()) !== -1) { - if (ch === GT) { - break; - } - } + const length = stream.pos - startPos; - length = stream.pos - startPos; - - if (ch === -1) { - (0, _util.warn)('Inline ASCIIHexDecode image stream: ' + 'EOD marker not found, searching for /EI/ instead.'); - stream.skip(-length); - return this.findDefaultInlineStreamEnd(stream); - } - - this.inlineStreamSkipEI(stream); - return length; + if (ch === -1) { + (0, _util.warn)("Inline ASCII85Decode image stream: " + "EOD marker not found, searching for /EI/ instead."); + stream.skip(-length); + return this.findDefaultInlineStreamEnd(stream); } - }, { - key: "inlineStreamSkipEI", - value: function inlineStreamSkipEI(stream) { - var E = 0x45, + + this.inlineStreamSkipEI(stream); + return length; + } + + findASCIIHexDecodeInlineStreamEnd(stream) { + const GT = 0x3e; + const startPos = stream.pos; + let ch; + + while ((ch = stream.getByte()) !== -1) { + if (ch === GT) { + break; + } + } + + const length = stream.pos - startPos; + + if (ch === -1) { + (0, _util.warn)("Inline ASCIIHexDecode image stream: " + "EOD marker not found, searching for /EI/ instead."); + stream.skip(-length); + return this.findDefaultInlineStreamEnd(stream); + } + + this.inlineStreamSkipEI(stream); + return length; + } + + inlineStreamSkipEI(stream) { + const E = 0x45, I = 0x49; - var state = 0, - ch; + let state = 0, + ch; - while ((ch = stream.getByte()) !== -1) { - if (state === 0) { - state = ch === E ? 1 : 0; - } else if (state === 1) { - state = ch === I ? 2 : 0; - } else if (state === 2) { - break; - } + while ((ch = stream.getByte()) !== -1) { + if (state === 0) { + state = ch === E ? 1 : 0; + } else if (state === 1) { + state = ch === I ? 2 : 0; + } else if (state === 2) { + break; } } - }, { - key: "makeInlineImage", - value: function makeInlineImage(cipherTransform) { - var lexer = this.lexer; - var stream = lexer.stream; - var dict = new _primitives.Dict(this.xref); - var dictLength; + } - while (!(0, _primitives.isCmd)(this.buf1, 'ID') && !(0, _primitives.isEOF)(this.buf1)) { - if (!(0, _primitives.isName)(this.buf1)) { - throw new _util.FormatError('Dictionary key must be a name object'); - } + makeInlineImage(cipherTransform) { + const lexer = this.lexer; + const stream = lexer.stream; + const dict = new _primitives.Dict(this.xref); + let dictLength; - var key = this.buf1.name; - this.shift(); - - if ((0, _primitives.isEOF)(this.buf1)) { - break; - } - - dict.set(key, this.getObj(cipherTransform)); + while (!(0, _primitives.isCmd)(this.buf1, "ID") && this.buf1 !== _primitives.EOF) { + if (!(this.buf1 instanceof _primitives.Name)) { + throw new _util.FormatError("Dictionary key must be a name object"); } - if (lexer.beginInlineImagePos !== -1) { - dictLength = stream.pos - lexer.beginInlineImagePos; - } - - var filter = dict.get('Filter', 'F'); - var filterName; - - if ((0, _primitives.isName)(filter)) { - filterName = filter.name; - } else if (Array.isArray(filter)) { - var filterZero = this.xref.fetchIfRef(filter[0]); - - if ((0, _primitives.isName)(filterZero)) { - filterName = filterZero.name; - } - } - - var startPos = stream.pos; - var length; - - if (filterName === 'DCTDecode' || filterName === 'DCT') { - length = this.findDCTDecodeInlineStreamEnd(stream); - } else if (filterName === 'ASCII85Decode' || filterName === 'A85') { - length = this.findASCII85DecodeInlineStreamEnd(stream); - } else if (filterName === 'ASCIIHexDecode' || filterName === 'AHx') { - length = this.findASCIIHexDecodeInlineStreamEnd(stream); - } else { - length = this.findDefaultInlineStreamEnd(stream); - } - - var imageStream = stream.makeSubStream(startPos, length, dict); - var cacheKey; - - if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) { - var imageBytes = imageStream.getBytes(); - imageStream.reset(); - var initialStreamPos = stream.pos; - stream.pos = lexer.beginInlineImagePos; - var dictBytes = stream.getBytes(dictLength); - stream.pos = initialStreamPos; - cacheKey = computeAdler32(imageBytes) + '_' + computeAdler32(dictBytes); - var cacheEntry = this.imageCache[cacheKey]; - - if (cacheEntry !== undefined) { - this.buf2 = _primitives.Cmd.get('EI'); - this.shift(); - cacheEntry.reset(); - return cacheEntry; - } - } - - if (cipherTransform) { - imageStream = cipherTransform.createStream(imageStream, length); - } - - imageStream = this.filter(imageStream, dict, length); - imageStream.dict = dict; - - if (cacheKey !== undefined) { - imageStream.cacheKey = "inline_".concat(length, "_").concat(cacheKey); - this.imageCache[cacheKey] = imageStream; - } - - this.buf2 = _primitives.Cmd.get('EI'); + const key = this.buf1.name; this.shift(); - return imageStream; - } - }, { - key: "_findStreamLength", - value: function _findStreamLength(startPos, signature) { - var stream = this.lexer.stream; - stream.pos = startPos; - var SCAN_BLOCK_LENGTH = 2048; - var signatureLength = signature.length; - while (stream.pos < stream.end) { - var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH); - var scanLength = scanBytes.length - signatureLength; - - if (scanLength <= 0) { - break; - } - - var pos = 0; - - while (pos < scanLength) { - var j = 0; - - while (j < signatureLength && scanBytes[pos + j] === signature[j]) { - j++; - } - - if (j >= signatureLength) { - stream.pos += pos; - return stream.pos - startPos; - } - - pos++; - } - - stream.pos += scanLength; + if (this.buf1 === _primitives.EOF) { + break; } - return -1; + dict.set(key, this.getObj(cipherTransform)); } - }, { - key: "makeStream", - value: function makeStream(dict, cipherTransform) { - var lexer = this.lexer; - var stream = lexer.stream; - lexer.skipToNextLine(); - var startPos = stream.pos - 1; - var length = dict.get('Length'); - if (!Number.isInteger(length)) { - (0, _util.info)("Bad length \"".concat(length, "\" in stream")); - length = 0; + if (lexer.beginInlineImagePos !== -1) { + dictLength = stream.pos - lexer.beginInlineImagePos; + } + + const filter = dict.get("F", "Filter"); + let filterName; + + if (filter instanceof _primitives.Name) { + filterName = filter.name; + } else if (Array.isArray(filter)) { + const filterZero = this.xref.fetchIfRef(filter[0]); + + if (filterZero instanceof _primitives.Name) { + filterName = filterZero.name; } + } - stream.pos = startPos + length; - lexer.nextChar(); + const startPos = stream.pos; + let length; - if (this.tryShift() && (0, _primitives.isCmd)(this.buf2, 'endstream')) { + switch (filterName) { + case "DCT": + case "DCTDecode": + length = this.findDCTDecodeInlineStreamEnd(stream); + break; + + case "A85": + case "ASCII85Decode": + length = this.findASCII85DecodeInlineStreamEnd(stream); + break; + + case "AHx": + case "ASCIIHexDecode": + length = this.findASCIIHexDecodeInlineStreamEnd(stream); + break; + + default: + length = this.findDefaultInlineStreamEnd(stream); + } + + let imageStream = stream.makeSubStream(startPos, length, dict); + let cacheKey; + + if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) { + const imageBytes = imageStream.getBytes(); + imageStream.reset(); + const initialStreamPos = stream.pos; + stream.pos = lexer.beginInlineImagePos; + const dictBytes = stream.getBytes(dictLength); + stream.pos = initialStreamPos; + cacheKey = computeAdler32(imageBytes) + "_" + computeAdler32(dictBytes); + const cacheEntry = this.imageCache[cacheKey]; + + if (cacheEntry !== undefined) { + this.buf2 = _primitives.Cmd.get("EI"); this.shift(); - } else { - var ENDSTREAM_SIGNATURE = new Uint8Array([0x65, 0x6E, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D]); + cacheEntry.reset(); + return cacheEntry; + } + } - var actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE); + if (cipherTransform) { + imageStream = cipherTransform.createStream(imageStream, length); + } - if (actualLength < 0) { - var MAX_TRUNCATION = 1; + imageStream = this.filter(imageStream, dict, length); + imageStream.dict = dict; - for (var i = 1; i <= MAX_TRUNCATION; i++) { - var end = ENDSTREAM_SIGNATURE.length - i; - var TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end); + if (cacheKey !== undefined) { + imageStream.cacheKey = `inline_${length}_${cacheKey}`; + this.imageCache[cacheKey] = imageStream; + } - var maybeLength = this._findStreamLength(startPos, TRUNCATED_SIGNATURE); + this.buf2 = _primitives.Cmd.get("EI"); + this.shift(); + return imageStream; + } - if (maybeLength >= 0) { - var lastByte = stream.peekBytes(end + 1)[end]; + _findStreamLength(startPos, signature) { + const { + stream + } = this.lexer; + stream.pos = startPos; + const SCAN_BLOCK_LENGTH = 2048; + const signatureLength = signature.length; - if (!(0, _util.isSpace)(lastByte)) { - break; - } + while (stream.pos < stream.end) { + const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH); + const scanLength = scanBytes.length - signatureLength; - (0, _util.info)("Found \"".concat((0, _util.bytesToString)(TRUNCATED_SIGNATURE), "\" when ") + 'searching for endstream command.'); - actualLength = maybeLength; + if (scanLength <= 0) { + break; + } + + let pos = 0; + + while (pos < scanLength) { + let j = 0; + + while (j < signatureLength && scanBytes[pos + j] === signature[j]) { + j++; + } + + if (j >= signatureLength) { + stream.pos += pos; + return stream.pos - startPos; + } + + pos++; + } + + stream.pos += scanLength; + } + + return -1; + } + + makeStream(dict, cipherTransform) { + const lexer = this.lexer; + let stream = lexer.stream; + lexer.skipToNextLine(); + const startPos = stream.pos - 1; + let length = dict.get("Length"); + + if (!Number.isInteger(length)) { + (0, _util.info)(`Bad length "${length && length.toString()}" in stream.`); + length = 0; + } + + stream.pos = startPos + length; + lexer.nextChar(); + + if (this.tryShift() && (0, _primitives.isCmd)(this.buf2, "endstream")) { + this.shift(); + } else { + const ENDSTREAM_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d]); + + let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE); + + if (actualLength < 0) { + const MAX_TRUNCATION = 1; + + for (let i = 1; i <= MAX_TRUNCATION; i++) { + const end = ENDSTREAM_SIGNATURE.length - i; + const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end); + + const maybeLength = this._findStreamLength(startPos, TRUNCATED_SIGNATURE); + + if (maybeLength >= 0) { + const lastByte = stream.peekBytes(end + 1)[end]; + + if (!(0, _core_utils.isWhiteSpace)(lastByte)) { break; } - } - if (actualLength < 0) { - throw new _util.FormatError('Missing endstream command.'); + (0, _util.info)(`Found "${(0, _util.bytesToString)(TRUNCATED_SIGNATURE)}" when ` + "searching for endstream command."); + actualLength = maybeLength; + break; } } - length = actualLength; - lexer.nextChar(); - this.shift(); - this.shift(); + if (actualLength < 0) { + throw new _util.FormatError("Missing endstream command."); + } } + length = actualLength; + lexer.nextChar(); this.shift(); - stream = stream.makeSubStream(startPos, length, dict); + this.shift(); + } - if (cipherTransform) { - stream = cipherTransform.createStream(stream, length); + this.shift(); + stream = stream.makeSubStream(startPos, length, dict); + + if (cipherTransform) { + stream = cipherTransform.createStream(stream, length); + } + + stream = this.filter(stream, dict, length); + stream.dict = dict; + return stream; + } + + filter(stream, dict, length) { + let filter = dict.get("F", "Filter"); + let params = dict.get("DP", "DecodeParms"); + + if (filter instanceof _primitives.Name) { + if (Array.isArray(params)) { + (0, _util.warn)("/DecodeParms should not be an Array, when /Filter is a Name."); } - stream = this.filter(stream, dict, length); - stream.dict = dict; - return stream; + return this.makeFilter(stream, filter.name, length, params); } - }, { - key: "filter", - value: function filter(stream, dict, length) { - var filter = dict.get('Filter', 'F'); - var params = dict.get('DecodeParms', 'DP'); - if ((0, _primitives.isName)(filter)) { - if (Array.isArray(params)) { - (0, _util.warn)('/DecodeParms should not contain an Array, ' + 'when /Filter contains a Name.'); + let maybeLength = length; + + if (Array.isArray(filter)) { + const filterArray = filter; + const paramsArray = params; + + for (let i = 0, ii = filterArray.length; i < ii; ++i) { + filter = this.xref.fetchIfRef(filterArray[i]); + + if (!(filter instanceof _primitives.Name)) { + throw new _util.FormatError(`Bad filter name "${filter}"`); } - return this.makeFilter(stream, filter.name, length, params); - } + params = null; - var maybeLength = length; - - if (Array.isArray(filter)) { - var filterArray = filter; - var paramsArray = params; - - for (var i = 0, ii = filterArray.length; i < ii; ++i) { - filter = this.xref.fetchIfRef(filterArray[i]); - - if (!(0, _primitives.isName)(filter)) { - throw new _util.FormatError("Bad filter name \"".concat(filter, "\"")); - } - - params = null; - - if (Array.isArray(paramsArray) && i in paramsArray) { - params = this.xref.fetchIfRef(paramsArray[i]); - } - - stream = this.makeFilter(stream, filter.name, maybeLength, params); - maybeLength = null; + if (Array.isArray(paramsArray) && i in paramsArray) { + params = this.xref.fetchIfRef(paramsArray[i]); } - } - return stream; + stream = this.makeFilter(stream, filter.name, maybeLength, params); + maybeLength = null; + } } - }, { - key: "makeFilter", - value: function makeFilter(stream, name, maybeLength, params) { - if (maybeLength === 0) { - (0, _util.warn)("Empty \"".concat(name, "\" stream.")); - return new _stream.NullStream(); - } - try { - var xrefStreamStats = this.xref.stats.streamTypes; + return stream; + } - if (name === 'FlateDecode' || name === 'Fl') { - xrefStreamStats[_util.StreamType.FLATE] = true; + makeFilter(stream, name, maybeLength, params) { + if (maybeLength === 0) { + (0, _util.warn)(`Empty "${name}" stream.`); + return new _stream.NullStream(); + } + + const xrefStats = this.xref.stats; + + try { + switch (name) { + case "Fl": + case "FlateDecode": + xrefStats.addStreamType(_util.StreamType.FLATE); if (params) { - return new _stream.PredictorStream(new _stream.FlateStream(stream, maybeLength), maybeLength, params); + return new _predictor_stream.PredictorStream(new _flate_stream.FlateStream(stream, maybeLength), maybeLength, params); } - return new _stream.FlateStream(stream, maybeLength); - } + return new _flate_stream.FlateStream(stream, maybeLength); - if (name === 'LZWDecode' || name === 'LZW') { - xrefStreamStats[_util.StreamType.LZW] = true; - var earlyChange = 1; + case "LZW": + case "LZWDecode": + xrefStats.addStreamType(_util.StreamType.LZW); + let earlyChange = 1; if (params) { - if (params.has('EarlyChange')) { - earlyChange = params.get('EarlyChange'); + if (params.has("EarlyChange")) { + earlyChange = params.get("EarlyChange"); } - return new _stream.PredictorStream(new _stream.LZWStream(stream, maybeLength, earlyChange), maybeLength, params); + return new _predictor_stream.PredictorStream(new _lzw_stream.LZWStream(stream, maybeLength, earlyChange), maybeLength, params); } - return new _stream.LZWStream(stream, maybeLength, earlyChange); - } + return new _lzw_stream.LZWStream(stream, maybeLength, earlyChange); - if (name === 'DCTDecode' || name === 'DCT') { - xrefStreamStats[_util.StreamType.DCT] = true; - return new _jpeg_stream.JpegStream(stream, maybeLength, stream.dict, params); - } + case "DCT": + case "DCTDecode": + xrefStats.addStreamType(_util.StreamType.DCT); + return new _jpeg_stream.JpegStream(stream, maybeLength, params); - if (name === 'JPXDecode' || name === 'JPX') { - xrefStreamStats[_util.StreamType.JPX] = true; - return new _jpx_stream.JpxStream(stream, maybeLength, stream.dict, params); - } + case "JPX": + case "JPXDecode": + xrefStats.addStreamType(_util.StreamType.JPX); + return new _jpx_stream.JpxStream(stream, maybeLength, params); - if (name === 'ASCII85Decode' || name === 'A85') { - xrefStreamStats[_util.StreamType.A85] = true; - return new _stream.Ascii85Stream(stream, maybeLength); - } + case "A85": + case "ASCII85Decode": + xrefStats.addStreamType(_util.StreamType.A85); + return new _ascii_85_stream.Ascii85Stream(stream, maybeLength); - if (name === 'ASCIIHexDecode' || name === 'AHx') { - xrefStreamStats[_util.StreamType.AHX] = true; - return new _stream.AsciiHexStream(stream, maybeLength); - } + case "AHx": + case "ASCIIHexDecode": + xrefStats.addStreamType(_util.StreamType.AHX); + return new _ascii_hex_stream.AsciiHexStream(stream, maybeLength); - if (name === 'CCITTFaxDecode' || name === 'CCF') { - xrefStreamStats[_util.StreamType.CCF] = true; + case "CCF": + case "CCITTFaxDecode": + xrefStats.addStreamType(_util.StreamType.CCF); return new _ccitt_stream.CCITTFaxStream(stream, maybeLength, params); - } - if (name === 'RunLengthDecode' || name === 'RL') { - xrefStreamStats[_util.StreamType.RL] = true; - return new _stream.RunLengthStream(stream, maybeLength); - } + case "RL": + case "RunLengthDecode": + xrefStats.addStreamType(_util.StreamType.RLX); + return new _run_length_stream.RunLengthStream(stream, maybeLength); - if (name === 'JBIG2Decode') { - xrefStreamStats[_util.StreamType.JBIG] = true; - return new _jbig2_stream.Jbig2Stream(stream, maybeLength, stream.dict, params); - } - - (0, _util.warn)("Filter \"".concat(name, "\" is not supported.")); - return stream; - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)("Invalid stream: \"".concat(ex, "\"")); - return new _stream.NullStream(); + case "JBIG2Decode": + xrefStats.addStreamType(_util.StreamType.JBIG); + return new _jbig2_stream.Jbig2Stream(stream, maybeLength, params); } - } - }]); - return Parser; -}(); + (0, _util.warn)(`Filter "${name}" is not supported.`); + return stream; + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.warn)(`Invalid stream: "${ex}"`); + return new _stream.NullStream(); + } + } + +} exports.Parser = Parser; -var specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; +const specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; function toHexDigit(ch) { if (ch >= 0x30 && ch <= 0x39) { - return ch & 0x0F; + return ch & 0x0f; } if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) { - return (ch & 0x0F) + 9; + return (ch & 0x0f) + 9; } return -1; } -var Lexer = -/*#__PURE__*/ -function () { - function Lexer(stream) { - var knownCommands = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - _classCallCheck(this, Lexer); - +class Lexer { + constructor(stream) { + let knownCommands = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; this.stream = stream; this.nextChar(); this.strBuf = []; this.knownCommands = knownCommands; + this._hexStringNumWarn = 0; this.beginInlineImagePos = -1; } - _createClass(Lexer, [{ - key: "nextChar", - value: function nextChar() { - return this.currentChar = this.stream.getByte(); + nextChar() { + return this.currentChar = this.stream.getByte(); + } + + peekChar() { + return this.stream.peekByte(); + } + + getNumber() { + let ch = this.currentChar; + let eNotation = false; + let divideBy = 0; + let sign = 0; + + if (ch === 0x2d) { + sign = -1; + ch = this.nextChar(); + + if (ch === 0x2d) { + ch = this.nextChar(); + } + } else if (ch === 0x2b) { + sign = 1; + ch = this.nextChar(); } - }, { - key: "peekChar", - value: function peekChar() { - return this.stream.peekByte(); + + if (ch === 0x0a || ch === 0x0d) { + do { + ch = this.nextChar(); + } while (ch === 0x0a || ch === 0x0d); } - }, { - key: "getNumber", - value: function getNumber() { - var ch = this.currentChar; - var eNotation = false; - var divideBy = 0; - var sign = 0; - if (ch === 0x2D) { - sign = -1; - ch = this.nextChar(); + if (ch === 0x2e) { + divideBy = 10; + ch = this.nextChar(); + } - if (ch === 0x2D) { - ch = this.nextChar(); - } - } else if (ch === 0x2B) { - sign = 1; - ch = this.nextChar(); - } - - if (ch === 0x0A || ch === 0x0D) { - do { - ch = this.nextChar(); - } while (ch === 0x0A || ch === 0x0D); - } - - if (ch === 0x2E) { - divideBy = 10; - ch = this.nextChar(); - } - - if (ch < 0x30 || ch > 0x39) { - if (divideBy === 10 && sign === 0 && ((0, _util.isSpace)(ch) || ch === -1)) { - (0, _util.warn)('Lexer.getNumber - treating a single decimal point as zero.'); + if (ch < 0x30 || ch > 0x39) { + if ((0, _core_utils.isWhiteSpace)(ch) || ch === -1) { + if (divideBy === 10 && sign === 0) { + (0, _util.warn)("Lexer.getNumber - treating a single decimal point as zero."); return 0; } - throw new _util.FormatError("Invalid number: ".concat(String.fromCharCode(ch), " (charCode ").concat(ch, ")")); + if (divideBy === 0 && sign === -1) { + (0, _util.warn)("Lexer.getNumber - treating a single minus sign as zero."); + return 0; + } } - sign = sign || 1; - var baseValue = ch - 0x30; - var powerValue = 0; - var powerValueSign = 1; + throw new _util.FormatError(`Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`); + } - while ((ch = this.nextChar()) >= 0) { - if (0x30 <= ch && ch <= 0x39) { - var currentDigit = ch - 0x30; + sign = sign || 1; + let baseValue = ch - 0x30; + let powerValue = 0; + let powerValueSign = 1; - if (eNotation) { - powerValue = powerValue * 10 + currentDigit; - } else { - if (divideBy !== 0) { - divideBy *= 10; - } + while ((ch = this.nextChar()) >= 0) { + if (ch >= 0x30 && ch <= 0x39) { + const currentDigit = ch - 0x30; - baseValue = baseValue * 10 + currentDigit; - } - } else if (ch === 0x2E) { - if (divideBy === 0) { - divideBy = 1; - } else { - break; - } - } else if (ch === 0x2D) { - (0, _util.warn)('Badly formatted number: minus sign in the middle'); - } else if (ch === 0x45 || ch === 0x65) { - ch = this.peekChar(); - - if (ch === 0x2B || ch === 0x2D) { - powerValueSign = ch === 0x2D ? -1 : 1; - this.nextChar(); - } else if (ch < 0x30 || ch > 0x39) { - break; + if (eNotation) { + powerValue = powerValue * 10 + currentDigit; + } else { + if (divideBy !== 0) { + divideBy *= 10; } - eNotation = true; + baseValue = baseValue * 10 + currentDigit; + } + } else if (ch === 0x2e) { + if (divideBy === 0) { + divideBy = 1; } else { break; } - } + } else if (ch === 0x2d) { + (0, _util.warn)("Badly formatted number: minus sign in the middle"); + } else if (ch === 0x45 || ch === 0x65) { + ch = this.peekChar(); - if (divideBy !== 0) { - baseValue /= divideBy; - } - - if (eNotation) { - baseValue *= Math.pow(10, powerValueSign * powerValue); - } - - return sign * baseValue; - } - }, { - key: "getString", - value: function getString() { - var numParen = 1; - var done = false; - var strBuf = this.strBuf; - strBuf.length = 0; - var ch = this.nextChar(); - - while (true) { - var charBuffered = false; - - switch (ch | 0) { - case -1: - (0, _util.warn)('Unterminated string'); - done = true; - break; - - case 0x28: - ++numParen; - strBuf.push('('); - break; - - case 0x29: - if (--numParen === 0) { - this.nextChar(); - done = true; - } else { - strBuf.push(')'); - } - - break; - - case 0x5C: - ch = this.nextChar(); - - switch (ch) { - case -1: - (0, _util.warn)('Unterminated string'); - done = true; - break; - - case 0x6E: - strBuf.push('\n'); - break; - - case 0x72: - strBuf.push('\r'); - break; - - case 0x74: - strBuf.push('\t'); - break; - - case 0x62: - strBuf.push('\b'); - break; - - case 0x66: - strBuf.push('\f'); - break; - - case 0x5C: - case 0x28: - case 0x29: - strBuf.push(String.fromCharCode(ch)); - break; - - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - var x = ch & 0x0F; - ch = this.nextChar(); - charBuffered = true; - - if (ch >= 0x30 && ch <= 0x37) { - x = (x << 3) + (ch & 0x0F); - ch = this.nextChar(); - - if (ch >= 0x30 && ch <= 0x37) { - charBuffered = false; - x = (x << 3) + (ch & 0x0F); - } - } - - strBuf.push(String.fromCharCode(x)); - break; - - case 0x0D: - if (this.peekChar() === 0x0A) { - this.nextChar(); - } - - break; - - case 0x0A: - break; - - default: - strBuf.push(String.fromCharCode(ch)); - break; - } - - break; - - default: - strBuf.push(String.fromCharCode(ch)); - break; - } - - if (done) { - break; - } - - if (!charBuffered) { - ch = this.nextChar(); - } - } - - return strBuf.join(''); - } - }, { - key: "getName", - value: function getName() { - var ch, previousCh; - var strBuf = this.strBuf; - strBuf.length = 0; - - while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) { - if (ch === 0x23) { - ch = this.nextChar(); - - if (specialChars[ch]) { - (0, _util.warn)('Lexer_getName: ' + 'NUMBER SIGN (#) should be followed by a hexadecimal number.'); - strBuf.push('#'); - break; - } - - var x = toHexDigit(ch); - - if (x !== -1) { - previousCh = ch; - ch = this.nextChar(); - var x2 = toHexDigit(ch); - - if (x2 === -1) { - (0, _util.warn)("Lexer_getName: Illegal digit (".concat(String.fromCharCode(ch), ") ") + 'in hexadecimal number.'); - strBuf.push('#', String.fromCharCode(previousCh)); - - if (specialChars[ch]) { - break; - } - - strBuf.push(String.fromCharCode(ch)); - continue; - } - - strBuf.push(String.fromCharCode(x << 4 | x2)); - } else { - strBuf.push('#', String.fromCharCode(ch)); - } - } else { - strBuf.push(String.fromCharCode(ch)); - } - } - - if (strBuf.length > 127) { - (0, _util.warn)("Name token is longer than allowed by the spec: ".concat(strBuf.length)); - } - - return _primitives.Name.get(strBuf.join('')); - } - }, { - key: "getHexString", - value: function getHexString() { - var strBuf = this.strBuf; - strBuf.length = 0; - var ch = this.currentChar; - var isFirstHex = true; - var firstDigit, secondDigit; - - while (true) { - if (ch < 0) { - (0, _util.warn)('Unterminated hex string'); - break; - } else if (ch === 0x3E) { + if (ch === 0x2b || ch === 0x2d) { + powerValueSign = ch === 0x2d ? -1 : 1; this.nextChar(); + } else if (ch < 0x30 || ch > 0x39) { break; - } else if (specialChars[ch] === 1) { - ch = this.nextChar(); - continue; - } else { - if (isFirstHex) { - firstDigit = toHexDigit(ch); - - if (firstDigit === -1) { - (0, _util.warn)("Ignoring invalid character \"".concat(ch, "\" in hex string")); - ch = this.nextChar(); - continue; - } - } else { - secondDigit = toHexDigit(ch); - - if (secondDigit === -1) { - (0, _util.warn)("Ignoring invalid character \"".concat(ch, "\" in hex string")); - ch = this.nextChar(); - continue; - } - - strBuf.push(String.fromCharCode(firstDigit << 4 | secondDigit)); - } - - isFirstHex = !isFirstHex; - ch = this.nextChar(); } - } - return strBuf.join(''); + eNotation = true; + } else { + break; + } } - }, { - key: "getObj", - value: function getObj() { - var comment = false; - var ch = this.currentChar; - while (true) { - if (ch < 0) { - return _primitives.EOF; - } + if (divideBy !== 0) { + baseValue /= divideBy; + } - if (comment) { - if (ch === 0x0A || ch === 0x0D) { - comment = false; - } - } else if (ch === 0x25) { - comment = true; - } else if (specialChars[ch] !== 1) { - break; - } + if (eNotation) { + baseValue *= 10 ** (powerValueSign * powerValue); + } - ch = this.nextChar(); - } + return sign * baseValue; + } + + getString() { + let numParen = 1; + let done = false; + const strBuf = this.strBuf; + strBuf.length = 0; + let ch = this.nextChar(); + + while (true) { + let charBuffered = false; switch (ch | 0) { - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x2B: - case 0x2D: - case 0x2E: - return this.getNumber(); + case -1: + (0, _util.warn)("Unterminated string"); + done = true; + break; case 0x28: - return this.getString(); - - case 0x2F: - return this.getName(); - - case 0x5B: - this.nextChar(); - return _primitives.Cmd.get('['); - - case 0x5D: - this.nextChar(); - return _primitives.Cmd.get(']'); - - case 0x3C: - ch = this.nextChar(); - - if (ch === 0x3C) { - this.nextChar(); - return _primitives.Cmd.get('<<'); - } - - return this.getHexString(); - - case 0x3E: - ch = this.nextChar(); - - if (ch === 0x3E) { - this.nextChar(); - return _primitives.Cmd.get('>>'); - } - - return _primitives.Cmd.get('>'); - - case 0x7B: - this.nextChar(); - return _primitives.Cmd.get('{'); - - case 0x7D: - this.nextChar(); - return _primitives.Cmd.get('}'); + ++numParen; + strBuf.push("("); + break; case 0x29: - this.nextChar(); - throw new _util.FormatError("Illegal character: ".concat(ch)); - } - - var str = String.fromCharCode(ch); - var knownCommands = this.knownCommands; - var knownCommandFound = knownCommands && knownCommands[str] !== undefined; - - while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) { - var possibleCommand = str + String.fromCharCode(ch); - - if (knownCommandFound && knownCommands[possibleCommand] === undefined) { - break; - } - - if (str.length === 128) { - throw new _util.FormatError("Command token too long: ".concat(str.length)); - } - - str = possibleCommand; - knownCommandFound = knownCommands && knownCommands[str] !== undefined; - } - - if (str === 'true') { - return true; - } - - if (str === 'false') { - return false; - } - - if (str === 'null') { - return null; - } - - if (str === 'BI') { - this.beginInlineImagePos = this.stream.pos; - } - - return _primitives.Cmd.get(str); - } - }, { - key: "skipToNextLine", - value: function skipToNextLine() { - var ch = this.currentChar; - - while (ch >= 0) { - if (ch === 0x0D) { - ch = this.nextChar(); - - if (ch === 0x0A) { + if (--numParen === 0) { this.nextChar(); + done = true; + } else { + strBuf.push(")"); } break; - } else if (ch === 0x0A) { - this.nextChar(); - break; - } + case 0x5c: + ch = this.nextChar(); + + switch (ch) { + case -1: + (0, _util.warn)("Unterminated string"); + done = true; + break; + + case 0x6e: + strBuf.push("\n"); + break; + + case 0x72: + strBuf.push("\r"); + break; + + case 0x74: + strBuf.push("\t"); + break; + + case 0x62: + strBuf.push("\b"); + break; + + case 0x66: + strBuf.push("\f"); + break; + + case 0x5c: + case 0x28: + case 0x29: + strBuf.push(String.fromCharCode(ch)); + break; + + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + let x = ch & 0x0f; + ch = this.nextChar(); + charBuffered = true; + + if (ch >= 0x30 && ch <= 0x37) { + x = (x << 3) + (ch & 0x0f); + ch = this.nextChar(); + + if (ch >= 0x30 && ch <= 0x37) { + charBuffered = false; + x = (x << 3) + (ch & 0x0f); + } + } + + strBuf.push(String.fromCharCode(x)); + break; + + case 0x0d: + if (this.peekChar() === 0x0a) { + this.nextChar(); + } + + break; + + case 0x0a: + break; + + default: + strBuf.push(String.fromCharCode(ch)); + break; + } + + break; + + default: + strBuf.push(String.fromCharCode(ch)); + break; + } + + if (done) { + break; + } + + if (!charBuffered) { ch = this.nextChar(); } } - }]); - return Lexer; -}(); + return strBuf.join(""); + } + + getName() { + let ch, previousCh; + const strBuf = this.strBuf; + strBuf.length = 0; + + while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) { + if (ch === 0x23) { + ch = this.nextChar(); + + if (specialChars[ch]) { + (0, _util.warn)("Lexer_getName: " + "NUMBER SIGN (#) should be followed by a hexadecimal number."); + strBuf.push("#"); + break; + } + + const x = toHexDigit(ch); + + if (x !== -1) { + previousCh = ch; + ch = this.nextChar(); + const x2 = toHexDigit(ch); + + if (x2 === -1) { + (0, _util.warn)(`Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` + "in hexadecimal number."); + strBuf.push("#", String.fromCharCode(previousCh)); + + if (specialChars[ch]) { + break; + } + + strBuf.push(String.fromCharCode(ch)); + continue; + } + + strBuf.push(String.fromCharCode(x << 4 | x2)); + } else { + strBuf.push("#", String.fromCharCode(ch)); + } + } else { + strBuf.push(String.fromCharCode(ch)); + } + } + + if (strBuf.length > 127) { + (0, _util.warn)(`Name token is longer than allowed by the spec: ${strBuf.length}`); + } + + return _primitives.Name.get(strBuf.join("")); + } + + _hexStringWarn(ch) { + const MAX_HEX_STRING_NUM_WARN = 5; + + if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) { + (0, _util.warn)("getHexString - ignoring additional invalid characters."); + return; + } + + if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) { + return; + } + + (0, _util.warn)(`getHexString - ignoring invalid character: ${ch}`); + } + + getHexString() { + const strBuf = this.strBuf; + strBuf.length = 0; + let ch = this.currentChar; + let isFirstHex = true; + let firstDigit, secondDigit; + this._hexStringNumWarn = 0; + + while (true) { + if (ch < 0) { + (0, _util.warn)("Unterminated hex string"); + break; + } else if (ch === 0x3e) { + this.nextChar(); + break; + } else if (specialChars[ch] === 1) { + ch = this.nextChar(); + continue; + } else { + if (isFirstHex) { + firstDigit = toHexDigit(ch); + + if (firstDigit === -1) { + this._hexStringWarn(ch); + + ch = this.nextChar(); + continue; + } + } else { + secondDigit = toHexDigit(ch); + + if (secondDigit === -1) { + this._hexStringWarn(ch); + + ch = this.nextChar(); + continue; + } + + strBuf.push(String.fromCharCode(firstDigit << 4 | secondDigit)); + } + + isFirstHex = !isFirstHex; + ch = this.nextChar(); + } + } + + return strBuf.join(""); + } + + getObj() { + let comment = false; + let ch = this.currentChar; + + while (true) { + if (ch < 0) { + return _primitives.EOF; + } + + if (comment) { + if (ch === 0x0a || ch === 0x0d) { + comment = false; + } + } else if (ch === 0x25) { + comment = true; + } else if (specialChars[ch] !== 1) { + break; + } + + ch = this.nextChar(); + } + + switch (ch | 0) { + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x2b: + case 0x2d: + case 0x2e: + return this.getNumber(); + + case 0x28: + return this.getString(); + + case 0x2f: + return this.getName(); + + case 0x5b: + this.nextChar(); + return _primitives.Cmd.get("["); + + case 0x5d: + this.nextChar(); + return _primitives.Cmd.get("]"); + + case 0x3c: + ch = this.nextChar(); + + if (ch === 0x3c) { + this.nextChar(); + return _primitives.Cmd.get("<<"); + } + + return this.getHexString(); + + case 0x3e: + ch = this.nextChar(); + + if (ch === 0x3e) { + this.nextChar(); + return _primitives.Cmd.get(">>"); + } + + return _primitives.Cmd.get(">"); + + case 0x7b: + this.nextChar(); + return _primitives.Cmd.get("{"); + + case 0x7d: + this.nextChar(); + return _primitives.Cmd.get("}"); + + case 0x29: + this.nextChar(); + throw new _util.FormatError(`Illegal character: ${ch}`); + } + + let str = String.fromCharCode(ch); + + if (ch < 0x20 || ch > 0x7f) { + const nextCh = this.peekChar(); + + if (nextCh >= 0x20 && nextCh <= 0x7f) { + this.nextChar(); + return _primitives.Cmd.get(str); + } + } + + const knownCommands = this.knownCommands; + let knownCommandFound = knownCommands && knownCommands[str] !== undefined; + + while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) { + const possibleCommand = str + String.fromCharCode(ch); + + if (knownCommandFound && knownCommands[possibleCommand] === undefined) { + break; + } + + if (str.length === 128) { + throw new _util.FormatError(`Command token too long: ${str.length}`); + } + + str = possibleCommand; + knownCommandFound = knownCommands && knownCommands[str] !== undefined; + } + + if (str === "true") { + return true; + } + + if (str === "false") { + return false; + } + + if (str === "null") { + return null; + } + + if (str === "BI") { + this.beginInlineImagePos = this.stream.pos; + } + + return _primitives.Cmd.get(str); + } + + peekObj() { + const streamPos = this.stream.pos, + currentChar = this.currentChar, + beginInlineImagePos = this.beginInlineImagePos; + let nextObj; + + try { + nextObj = this.getObj(); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.warn)(`peekObj: ${ex}`); + } + + this.stream.pos = streamPos; + this.currentChar = currentChar; + this.beginInlineImagePos = beginInlineImagePos; + return nextObj; + } + + skipToNextLine() { + let ch = this.currentChar; + + while (ch >= 0) { + if (ch === 0x0d) { + ch = this.nextChar(); + + if (ch === 0x0a) { + this.nextChar(); + } + + break; + } else if (ch === 0x0a) { + this.nextChar(); + break; + } + + ch = this.nextChar(); + } + } + +} exports.Lexer = Lexer; -var Linearization = -/*#__PURE__*/ -function () { - function Linearization() { - _classCallCheck(this, Linearization); +class Linearization { + static create(stream) { + function getInt(linDict, name) { + let allowZeroValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + const obj = linDict.get(name); + + if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) { + return obj; + } + + throw new Error(`The "${name}" parameter in the linearization ` + "dictionary is invalid."); + } + + function getHints(linDict) { + const hints = linDict.get("H"); + let hintsLength; + + if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) { + for (let index = 0; index < hintsLength; index++) { + const hint = hints[index]; + + if (!(Number.isInteger(hint) && hint > 0)) { + throw new Error(`Hint (${index}) in the linearization dictionary is invalid.`); + } + } + + return hints; + } + + throw new Error("Hint array in the linearization dictionary is invalid."); + } + + const parser = new Parser({ + lexer: new Lexer(stream), + xref: null + }); + const obj1 = parser.getObj(); + const obj2 = parser.getObj(); + const obj3 = parser.getObj(); + const linDict = parser.getObj(); + let obj, length; + + if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && (0, _primitives.isCmd)(obj3, "obj") && linDict instanceof _primitives.Dict && typeof (obj = linDict.get("Linearized")) === "number" && obj > 0)) { + return null; + } else if ((length = getInt(linDict, "L")) !== stream.length) { + throw new Error('The "L" parameter in the linearization dictionary ' + "does not equal the stream length."); + } + + return { + length, + hints: getHints(linDict), + objectNumberFirst: getInt(linDict, "O"), + endFirst: getInt(linDict, "E"), + numPages: getInt(linDict, "N"), + mainXRefEntriesOffset: getInt(linDict, "T"), + pageFirst: linDict.has("P") ? getInt(linDict, "P", true) : 0 + }; } - _createClass(Linearization, null, [{ - key: "create", - value: function create(stream) { - function getInt(linDict, name) { - var allowZeroValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var obj = linDict.get(name); - - if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) { - return obj; - } - - throw new Error("The \"".concat(name, "\" parameter in the linearization ") + 'dictionary is invalid.'); - } - - function getHints(linDict) { - var hints = linDict.get('H'); - var hintsLength; - - if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) { - for (var index = 0; index < hintsLength; index++) { - var hint = hints[index]; - - if (!(Number.isInteger(hint) && hint > 0)) { - throw new Error("Hint (".concat(index, ") in the linearization dictionary ") + 'is invalid.'); - } - } - - return hints; - } - - throw new Error('Hint array in the linearization dictionary is invalid.'); - } - - var parser = new Parser({ - lexer: new Lexer(stream), - xref: null - }); - var obj1 = parser.getObj(); - var obj2 = parser.getObj(); - var obj3 = parser.getObj(); - var linDict = parser.getObj(); - var obj, length; - - if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && (0, _primitives.isCmd)(obj3, 'obj') && (0, _primitives.isDict)(linDict) && (0, _util.isNum)(obj = linDict.get('Linearized')) && obj > 0)) { - return null; - } else if ((length = getInt(linDict, 'L')) !== stream.length) { - throw new Error('The "L" parameter in the linearization dictionary ' + 'does not equal the stream length.'); - } - - return { - length: length, - hints: getHints(linDict), - objectNumberFirst: getInt(linDict, 'O'), - endFirst: getInt(linDict, 'E'), - numPages: getInt(linDict, 'N'), - mainXRefEntriesOffset: getInt(linDict, 'T'), - pageFirst: linDict.has('P') ? getInt(linDict, 'P', true) : 0 - }; - } - }]); - - return Linearization; -}(); +} exports.Linearization = Linearization; /***/ }), -/* 158 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 143 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.LZWStream = exports.StringStream = exports.StreamsSequenceStream = exports.Stream = exports.RunLengthStream = exports.PredictorStream = exports.NullStream = exports.FlateStream = exports.DecodeStream = exports.DecryptStream = exports.AsciiHexStream = exports.Ascii85Stream = void 0; +})); +exports.Ascii85Stream = void 0; -var _util = __w_pdfjs_require__(5); +var _decode_stream = __w_pdfjs_require__(144); -var _primitives = __w_pdfjs_require__(151); +var _core_utils = __w_pdfjs_require__(131); -function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } - -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } - -function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } - -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } - -var Stream = function StreamClosure() { - function Stream(arrayBuffer, start, length, dict) { - this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : new Uint8Array(arrayBuffer); - this.start = start || 0; - this.pos = this.start; - this.end = start + length || this.bytes.length; - this.dict = dict; - } - - Stream.prototype = { - get length() { - return this.end - this.start; - }, - - get isEmpty() { - return this.length === 0; - }, - - getByte: function Stream_getByte() { - if (this.pos >= this.end) { - return -1; - } - - return this.bytes[this.pos++]; - }, - getUint16: function Stream_getUint16() { - var b0 = this.getByte(); - var b1 = this.getByte(); - - if (b0 === -1 || b1 === -1) { - return -1; - } - - return (b0 << 8) + b1; - }, - getInt32: function Stream_getInt32() { - var b0 = this.getByte(); - var b1 = this.getByte(); - var b2 = this.getByte(); - var b3 = this.getByte(); - return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; - }, - getBytes: function getBytes(length) { - var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var bytes = this.bytes; - var pos = this.pos; - var strEnd = this.end; - - if (!length) { - var _subarray = bytes.subarray(pos, strEnd); - - return forceClamped ? new Uint8ClampedArray(_subarray) : _subarray; - } - - var end = pos + length; - - if (end > strEnd) { - end = strEnd; - } - - this.pos = end; - var subarray = bytes.subarray(pos, end); - return forceClamped ? new Uint8ClampedArray(subarray) : subarray; - }, - peekByte: function Stream_peekByte() { - var peekedByte = this.getByte(); - this.pos--; - return peekedByte; - }, - peekBytes: function peekBytes(length) { - var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var bytes = this.getBytes(length, forceClamped); - this.pos -= bytes.length; - return bytes; - }, - skip: function Stream_skip(n) { - if (!n) { - n = 1; - } - - this.pos += n; - }, - reset: function Stream_reset() { - this.pos = this.start; - }, - moveStart: function Stream_moveStart() { - this.start = this.pos; - }, - makeSubStream: function Stream_makeSubStream(start, length, dict) { - return new Stream(this.bytes.buffer, start, length, dict); - } - }; - return Stream; -}(); - -exports.Stream = Stream; - -var StringStream = function StringStreamClosure() { - function StringStream(str) { - var bytes = (0, _util.stringToBytes)(str); - Stream.call(this, bytes); - } - - StringStream.prototype = Stream.prototype; - return StringStream; -}(); - -exports.StringStream = StringStream; - -var DecodeStream = function DecodeStreamClosure() { - var emptyBuffer = new Uint8Array(0); - - function DecodeStream(maybeMinBufferLength) { - this._rawMinBufferLength = maybeMinBufferLength || 0; - this.pos = 0; - this.bufferLength = 0; - this.eof = false; - this.buffer = emptyBuffer; - this.minBufferLength = 512; - - if (maybeMinBufferLength) { - while (this.minBufferLength < maybeMinBufferLength) { - this.minBufferLength *= 2; - } - } - } - - DecodeStream.prototype = { - get isEmpty() { - while (!this.eof && this.bufferLength === 0) { - this.readBlock(); - } - - return this.bufferLength === 0; - }, - - ensureBuffer: function DecodeStream_ensureBuffer(requested) { - var buffer = this.buffer; - - if (requested <= buffer.byteLength) { - return buffer; - } - - var size = this.minBufferLength; - - while (size < requested) { - size *= 2; - } - - var buffer2 = new Uint8Array(size); - buffer2.set(buffer); - return this.buffer = buffer2; - }, - getByte: function DecodeStream_getByte() { - var pos = this.pos; - - while (this.bufferLength <= pos) { - if (this.eof) { - return -1; - } - - this.readBlock(); - } - - return this.buffer[this.pos++]; - }, - getUint16: function DecodeStream_getUint16() { - var b0 = this.getByte(); - var b1 = this.getByte(); - - if (b0 === -1 || b1 === -1) { - return -1; - } - - return (b0 << 8) + b1; - }, - getInt32: function DecodeStream_getInt32() { - var b0 = this.getByte(); - var b1 = this.getByte(); - var b2 = this.getByte(); - var b3 = this.getByte(); - return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; - }, - getBytes: function getBytes(length) { - var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var end, - pos = this.pos; - - if (length) { - this.ensureBuffer(pos + length); - end = pos + length; - - while (!this.eof && this.bufferLength < end) { - this.readBlock(); - } - - var bufEnd = this.bufferLength; - - if (end > bufEnd) { - end = bufEnd; - } - } else { - while (!this.eof) { - this.readBlock(); - } - - end = this.bufferLength; - } - - this.pos = end; - var subarray = this.buffer.subarray(pos, end); - return forceClamped && !(subarray instanceof Uint8ClampedArray) ? new Uint8ClampedArray(subarray) : subarray; - }, - peekByte: function DecodeStream_peekByte() { - var peekedByte = this.getByte(); - this.pos--; - return peekedByte; - }, - peekBytes: function peekBytes(length) { - var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var bytes = this.getBytes(length, forceClamped); - this.pos -= bytes.length; - return bytes; - }, - makeSubStream: function DecodeStream_makeSubStream(start, length, dict) { - var end = start + length; - - while (this.bufferLength <= end && !this.eof) { - this.readBlock(); - } - - return new Stream(this.buffer, start, length, dict); - }, - skip: function DecodeStream_skip(n) { - if (!n) { - n = 1; - } - - this.pos += n; - }, - reset: function DecodeStream_reset() { - this.pos = 0; - }, - getBaseStreams: function DecodeStream_getBaseStreams() { - if (this.str && this.str.getBaseStreams) { - return this.str.getBaseStreams(); - } - - return []; - } - }; - return DecodeStream; -}(); - -exports.DecodeStream = DecodeStream; - -var StreamsSequenceStream = function StreamsSequenceStreamClosure() { - function StreamsSequenceStream(streams) { - this.streams = streams; - var maybeLength = 0; - - for (var i = 0, ii = streams.length; i < ii; i++) { - var stream = streams[i]; - - if (stream instanceof DecodeStream) { - maybeLength += stream._rawMinBufferLength; - } else { - maybeLength += stream.length; - } +class Ascii85Stream extends _decode_stream.DecodeStream { + constructor(str, maybeLength) { + if (maybeLength) { + maybeLength *= 0.8; } - DecodeStream.call(this, maybeLength); - } - - StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype); - - StreamsSequenceStream.prototype.readBlock = function streamSequenceStreamReadBlock() { - var streams = this.streams; - - if (streams.length === 0) { - this.eof = true; - return; - } - - var stream = streams.shift(); - var chunk = stream.getBytes(); - var bufferLength = this.bufferLength; - var newLength = bufferLength + chunk.length; - var buffer = this.ensureBuffer(newLength); - buffer.set(chunk, bufferLength); - this.bufferLength = newLength; - }; - - StreamsSequenceStream.prototype.getBaseStreams = function StreamsSequenceStream_getBaseStreams() { - var baseStreams = []; - - for (var i = 0, ii = this.streams.length; i < ii; i++) { - var stream = this.streams[i]; - - if (stream.getBaseStreams) { - baseStreams.push.apply(baseStreams, _toConsumableArray(stream.getBaseStreams())); - } - } - - return baseStreams; - }; - - return StreamsSequenceStream; -}(); - -exports.StreamsSequenceStream = StreamsSequenceStream; - -var FlateStream = function FlateStreamClosure() { - var codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); - var lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]); - var distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]); - var fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff]), 9]; - var fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000]), 5]; - - function FlateStream(str, maybeLength) { - this.str = str; - this.dict = str.dict; - var cmf = str.getByte(); - var flg = str.getByte(); - - if (cmf === -1 || flg === -1) { - throw new _util.FormatError("Invalid header in flate stream: ".concat(cmf, ", ").concat(flg)); - } - - if ((cmf & 0x0f) !== 0x08) { - throw new _util.FormatError("Unknown compression method in flate stream: ".concat(cmf, ", ").concat(flg)); - } - - if (((cmf << 8) + flg) % 31 !== 0) { - throw new _util.FormatError("Bad FCHECK in flate stream: ".concat(cmf, ", ").concat(flg)); - } - - if (flg & 0x20) { - throw new _util.FormatError("FDICT bit set in flate stream: ".concat(cmf, ", ").concat(flg)); - } - - this.codeSize = 0; - this.codeBuf = 0; - DecodeStream.call(this, maybeLength); - } - - FlateStream.prototype = Object.create(DecodeStream.prototype); - - FlateStream.prototype.getBits = function FlateStream_getBits(bits) { - var str = this.str; - var codeSize = this.codeSize; - var codeBuf = this.codeBuf; - var b; - - while (codeSize < bits) { - if ((b = str.getByte()) === -1) { - throw new _util.FormatError('Bad encoding in flate stream'); - } - - codeBuf |= b << codeSize; - codeSize += 8; - } - - b = codeBuf & (1 << bits) - 1; - this.codeBuf = codeBuf >> bits; - this.codeSize = codeSize -= bits; - return b; - }; - - FlateStream.prototype.getCode = function FlateStream_getCode(table) { - var str = this.str; - var codes = table[0]; - var maxLen = table[1]; - var codeSize = this.codeSize; - var codeBuf = this.codeBuf; - var b; - - while (codeSize < maxLen) { - if ((b = str.getByte()) === -1) { - break; - } - - codeBuf |= b << codeSize; - codeSize += 8; - } - - var code = codes[codeBuf & (1 << maxLen) - 1]; - var codeLen = code >> 16; - var codeVal = code & 0xffff; - - if (codeLen < 1 || codeSize < codeLen) { - throw new _util.FormatError('Bad encoding in flate stream'); - } - - this.codeBuf = codeBuf >> codeLen; - this.codeSize = codeSize - codeLen; - return codeVal; - }; - - FlateStream.prototype.generateHuffmanTable = function flateStreamGenerateHuffmanTable(lengths) { - var n = lengths.length; - var maxLen = 0; - var i; - - for (i = 0; i < n; ++i) { - if (lengths[i] > maxLen) { - maxLen = lengths[i]; - } - } - - var size = 1 << maxLen; - var codes = new Int32Array(size); - - for (var len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) { - for (var val = 0; val < n; ++val) { - if (lengths[val] === len) { - var code2 = 0; - var t = code; - - for (i = 0; i < len; ++i) { - code2 = code2 << 1 | t & 1; - t >>= 1; - } - - for (i = code2; i < size; i += skip) { - codes[i] = len << 16 | val; - } - - ++code; - } - } - } - - return [codes, maxLen]; - }; - - FlateStream.prototype.readBlock = function FlateStream_readBlock() { - var buffer, len; - var str = this.str; - var hdr = this.getBits(3); - - if (hdr & 1) { - this.eof = true; - } - - hdr >>= 1; - - if (hdr === 0) { - var b; - - if ((b = str.getByte()) === -1) { - throw new _util.FormatError('Bad block header in flate stream'); - } - - var blockLen = b; - - if ((b = str.getByte()) === -1) { - throw new _util.FormatError('Bad block header in flate stream'); - } - - blockLen |= b << 8; - - if ((b = str.getByte()) === -1) { - throw new _util.FormatError('Bad block header in flate stream'); - } - - var check = b; - - if ((b = str.getByte()) === -1) { - throw new _util.FormatError('Bad block header in flate stream'); - } - - check |= b << 8; - - if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) { - throw new _util.FormatError('Bad uncompressed block length in flate stream'); - } - - this.codeBuf = 0; - this.codeSize = 0; - var bufferLength = this.bufferLength; - buffer = this.ensureBuffer(bufferLength + blockLen); - var end = bufferLength + blockLen; - this.bufferLength = end; - - if (blockLen === 0) { - if (str.peekByte() === -1) { - this.eof = true; - } - } else { - for (var n = bufferLength; n < end; ++n) { - if ((b = str.getByte()) === -1) { - this.eof = true; - break; - } - - buffer[n] = b; - } - } - - return; - } - - var litCodeTable; - var distCodeTable; - - if (hdr === 1) { - litCodeTable = fixedLitCodeTab; - distCodeTable = fixedDistCodeTab; - } else if (hdr === 2) { - var numLitCodes = this.getBits(5) + 257; - var numDistCodes = this.getBits(5) + 1; - var numCodeLenCodes = this.getBits(4) + 4; - var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length); - var i; - - for (i = 0; i < numCodeLenCodes; ++i) { - codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3); - } - - var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths); - len = 0; - i = 0; - var codes = numLitCodes + numDistCodes; - var codeLengths = new Uint8Array(codes); - var bitsLength, bitsOffset, what; - - while (i < codes) { - var code = this.getCode(codeLenCodeTab); - - if (code === 16) { - bitsLength = 2; - bitsOffset = 3; - what = len; - } else if (code === 17) { - bitsLength = 3; - bitsOffset = 3; - what = len = 0; - } else if (code === 18) { - bitsLength = 7; - bitsOffset = 11; - what = len = 0; - } else { - codeLengths[i++] = len = code; - continue; - } - - var repeatLength = this.getBits(bitsLength) + bitsOffset; - - while (repeatLength-- > 0) { - codeLengths[i++] = what; - } - } - - litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes)); - distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes)); - } else { - throw new _util.FormatError('Unknown block type in flate stream'); - } - - buffer = this.buffer; - var limit = buffer ? buffer.length : 0; - var pos = this.bufferLength; - - while (true) { - var code1 = this.getCode(litCodeTable); - - if (code1 < 256) { - if (pos + 1 >= limit) { - buffer = this.ensureBuffer(pos + 1); - limit = buffer.length; - } - - buffer[pos++] = code1; - continue; - } - - if (code1 === 256) { - this.bufferLength = pos; - return; - } - - code1 -= 257; - code1 = lengthDecode[code1]; - var code2 = code1 >> 16; - - if (code2 > 0) { - code2 = this.getBits(code2); - } - - len = (code1 & 0xffff) + code2; - code1 = this.getCode(distCodeTable); - code1 = distDecode[code1]; - code2 = code1 >> 16; - - if (code2 > 0) { - code2 = this.getBits(code2); - } - - var dist = (code1 & 0xffff) + code2; - - if (pos + len >= limit) { - buffer = this.ensureBuffer(pos + len); - limit = buffer.length; - } - - for (var k = 0; k < len; ++k, ++pos) { - buffer[pos] = buffer[pos - dist]; - } - } - }; - - return FlateStream; -}(); - -exports.FlateStream = FlateStream; - -var PredictorStream = function PredictorStreamClosure() { - function PredictorStream(str, maybeLength, params) { - if (!(0, _primitives.isDict)(params)) { - return str; - } - - var predictor = this.predictor = params.get('Predictor') || 1; - - if (predictor <= 1) { - return str; - } - - if (predictor !== 2 && (predictor < 10 || predictor > 15)) { - throw new _util.FormatError("Unsupported predictor: ".concat(predictor)); - } - - if (predictor === 2) { - this.readBlock = this.readBlockTiff; - } else { - this.readBlock = this.readBlockPng; - } - - this.str = str; - this.dict = str.dict; - var colors = this.colors = params.get('Colors') || 1; - var bits = this.bits = params.get('BitsPerComponent') || 8; - var columns = this.columns = params.get('Columns') || 1; - this.pixBytes = colors * bits + 7 >> 3; - this.rowBytes = columns * colors * bits + 7 >> 3; - DecodeStream.call(this, maybeLength); - return this; - } - - PredictorStream.prototype = Object.create(DecodeStream.prototype); - - PredictorStream.prototype.readBlockTiff = function predictorStreamReadBlockTiff() { - var rowBytes = this.rowBytes; - var bufferLength = this.bufferLength; - var buffer = this.ensureBuffer(bufferLength + rowBytes); - var bits = this.bits; - var colors = this.colors; - var rawBytes = this.str.getBytes(rowBytes); - this.eof = !rawBytes.length; - - if (this.eof) { - return; - } - - var inbuf = 0, - outbuf = 0; - var inbits = 0, - outbits = 0; - var pos = bufferLength; - var i; - - if (bits === 1 && colors === 1) { - for (i = 0; i < rowBytes; ++i) { - var c = rawBytes[i] ^ inbuf; - c ^= c >> 1; - c ^= c >> 2; - c ^= c >> 4; - inbuf = (c & 1) << 7; - buffer[pos++] = c; - } - } else if (bits === 8) { - for (i = 0; i < colors; ++i) { - buffer[pos++] = rawBytes[i]; - } - - for (; i < rowBytes; ++i) { - buffer[pos] = buffer[pos - colors] + rawBytes[i]; - pos++; - } - } else if (bits === 16) { - var bytesPerPixel = colors * 2; - - for (i = 0; i < bytesPerPixel; ++i) { - buffer[pos++] = rawBytes[i]; - } - - for (; i < rowBytes; i += 2) { - var sum = ((rawBytes[i] & 0xFF) << 8) + (rawBytes[i + 1] & 0xFF) + ((buffer[pos - bytesPerPixel] & 0xFF) << 8) + (buffer[pos - bytesPerPixel + 1] & 0xFF); - buffer[pos++] = sum >> 8 & 0xFF; - buffer[pos++] = sum & 0xFF; - } - } else { - var compArray = new Uint8Array(colors + 1); - var bitMask = (1 << bits) - 1; - var j = 0, - k = bufferLength; - var columns = this.columns; - - for (i = 0; i < columns; ++i) { - for (var kk = 0; kk < colors; ++kk) { - if (inbits < bits) { - inbuf = inbuf << 8 | rawBytes[j++] & 0xFF; - inbits += 8; - } - - compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask; - inbits -= bits; - outbuf = outbuf << bits | compArray[kk]; - outbits += bits; - - if (outbits >= 8) { - buffer[k++] = outbuf >> outbits - 8 & 0xFF; - outbits -= 8; - } - } - } - - if (outbits > 0) { - buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1); - } - } - - this.bufferLength += rowBytes; - }; - - PredictorStream.prototype.readBlockPng = function predictorStreamReadBlockPng() { - var rowBytes = this.rowBytes; - var pixBytes = this.pixBytes; - var predictor = this.str.getByte(); - var rawBytes = this.str.getBytes(rowBytes); - this.eof = !rawBytes.length; - - if (this.eof) { - return; - } - - var bufferLength = this.bufferLength; - var buffer = this.ensureBuffer(bufferLength + rowBytes); - var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength); - - if (prevRow.length === 0) { - prevRow = new Uint8Array(rowBytes); - } - - var i, - j = bufferLength, - up, - c; - - switch (predictor) { - case 0: - for (i = 0; i < rowBytes; ++i) { - buffer[j++] = rawBytes[i]; - } - - break; - - case 1: - for (i = 0; i < pixBytes; ++i) { - buffer[j++] = rawBytes[i]; - } - - for (; i < rowBytes; ++i) { - buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xFF; - j++; - } - - break; - - case 2: - for (i = 0; i < rowBytes; ++i) { - buffer[j++] = prevRow[i] + rawBytes[i] & 0xFF; - } - - break; - - case 3: - for (i = 0; i < pixBytes; ++i) { - buffer[j++] = (prevRow[i] >> 1) + rawBytes[i]; - } - - for (; i < rowBytes; ++i) { - buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xFF; - j++; - } - - break; - - case 4: - for (i = 0; i < pixBytes; ++i) { - up = prevRow[i]; - c = rawBytes[i]; - buffer[j++] = up + c; - } - - for (; i < rowBytes; ++i) { - up = prevRow[i]; - var upLeft = prevRow[i - pixBytes]; - var left = buffer[j - pixBytes]; - var p = left + up - upLeft; - var pa = p - left; - - if (pa < 0) { - pa = -pa; - } - - var pb = p - up; - - if (pb < 0) { - pb = -pb; - } - - var pc = p - upLeft; - - if (pc < 0) { - pc = -pc; - } - - c = rawBytes[i]; - - if (pa <= pb && pa <= pc) { - buffer[j++] = left + c; - } else if (pb <= pc) { - buffer[j++] = up + c; - } else { - buffer[j++] = upLeft + c; - } - } - - break; - - default: - throw new _util.FormatError("Unsupported predictor: ".concat(predictor)); - } - - this.bufferLength += rowBytes; - }; - - return PredictorStream; -}(); - -exports.PredictorStream = PredictorStream; - -var DecryptStream = function DecryptStreamClosure() { - function DecryptStream(str, maybeLength, decrypt) { - this.str = str; - this.dict = str.dict; - this.decrypt = decrypt; - this.nextChunk = null; - this.initialized = false; - DecodeStream.call(this, maybeLength); - } - - var chunkSize = 512; - DecryptStream.prototype = Object.create(DecodeStream.prototype); - - DecryptStream.prototype.readBlock = function DecryptStream_readBlock() { - var chunk; - - if (this.initialized) { - chunk = this.nextChunk; - } else { - chunk = this.str.getBytes(chunkSize); - this.initialized = true; - } - - if (!chunk || chunk.length === 0) { - this.eof = true; - return; - } - - this.nextChunk = this.str.getBytes(chunkSize); - var hasMoreData = this.nextChunk && this.nextChunk.length > 0; - var decrypt = this.decrypt; - chunk = decrypt(chunk, !hasMoreData); - var bufferLength = this.bufferLength; - var i, - n = chunk.length; - var buffer = this.ensureBuffer(bufferLength + n); - - for (i = 0; i < n; i++) { - buffer[bufferLength++] = chunk[i]; - } - - this.bufferLength = bufferLength; - }; - - return DecryptStream; -}(); - -exports.DecryptStream = DecryptStream; - -var Ascii85Stream = function Ascii85StreamClosure() { - function Ascii85Stream(str, maybeLength) { + super(maybeLength); this.str = str; this.dict = str.dict; this.input = new Uint8Array(5); - - if (maybeLength) { - maybeLength = 0.8 * maybeLength; - } - - DecodeStream.call(this, maybeLength); } - Ascii85Stream.prototype = Object.create(DecodeStream.prototype); + readBlock() { + const TILDA_CHAR = 0x7e; + const Z_LOWER_CHAR = 0x7a; + const EOF = -1; + const str = this.str; + let c = str.getByte(); - Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() { - var TILDA_CHAR = 0x7E; - var Z_LOWER_CHAR = 0x7A; - var EOF = -1; - var str = this.str; - var c = str.getByte(); - - while ((0, _util.isSpace)(c)) { + while ((0, _core_utils.isWhiteSpace)(c)) { c = str.getByte(); } @@ -18057,9 +20217,8 @@ var Ascii85Stream = function Ascii85StreamClosure() { return; } - var bufferLength = this.bufferLength, - buffer; - var i; + const bufferLength = this.bufferLength; + let buffer, i; if (c === Z_LOWER_CHAR) { buffer = this.ensureBuffer(bufferLength + 4); @@ -18070,13 +20229,13 @@ var Ascii85Stream = function Ascii85StreamClosure() { this.bufferLength += 4; } else { - var input = this.input; + const input = this.input; input[0] = c; for (i = 1; i < 5; ++i) { c = str.getByte(); - while ((0, _util.isSpace)(c)) { + while ((0, _core_utils.isWhiteSpace)(c)) { c = str.getByte(); } @@ -18098,62 +20257,267 @@ var Ascii85Stream = function Ascii85StreamClosure() { this.eof = true; } - var t = 0; + let t = 0; for (i = 0; i < 5; ++i) { t = t * 85 + (input[i] - 0x21); } for (i = 3; i >= 0; --i) { - buffer[bufferLength + i] = t & 0xFF; + buffer[bufferLength + i] = t & 0xff; t >>= 8; } } - }; + } - return Ascii85Stream; -}(); +} exports.Ascii85Stream = Ascii85Stream; -var AsciiHexStream = function AsciiHexStreamClosure() { - function AsciiHexStream(str, maybeLength) { +/***/ }), +/* 144 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StreamsSequenceStream = exports.DecodeStream = void 0; + +var _base_stream = __w_pdfjs_require__(132); + +var _stream = __w_pdfjs_require__(135); + +const emptyBuffer = new Uint8Array(0); + +class DecodeStream extends _base_stream.BaseStream { + constructor(maybeMinBufferLength) { + super(); + this._rawMinBufferLength = maybeMinBufferLength || 0; + this.pos = 0; + this.bufferLength = 0; + this.eof = false; + this.buffer = emptyBuffer; + this.minBufferLength = 512; + + if (maybeMinBufferLength) { + while (this.minBufferLength < maybeMinBufferLength) { + this.minBufferLength *= 2; + } + } + } + + get isEmpty() { + while (!this.eof && this.bufferLength === 0) { + this.readBlock(); + } + + return this.bufferLength === 0; + } + + ensureBuffer(requested) { + const buffer = this.buffer; + + if (requested <= buffer.byteLength) { + return buffer; + } + + let size = this.minBufferLength; + + while (size < requested) { + size *= 2; + } + + const buffer2 = new Uint8Array(size); + buffer2.set(buffer); + return this.buffer = buffer2; + } + + getByte() { + const pos = this.pos; + + while (this.bufferLength <= pos) { + if (this.eof) { + return -1; + } + + this.readBlock(); + } + + return this.buffer[this.pos++]; + } + + getBytes(length) { + const pos = this.pos; + let end; + + if (length) { + this.ensureBuffer(pos + length); + end = pos + length; + + while (!this.eof && this.bufferLength < end) { + this.readBlock(); + } + + const bufEnd = this.bufferLength; + + if (end > bufEnd) { + end = bufEnd; + } + } else { + while (!this.eof) { + this.readBlock(); + } + + end = this.bufferLength; + } + + this.pos = end; + return this.buffer.subarray(pos, end); + } + + reset() { + this.pos = 0; + } + + makeSubStream(start, length) { + let dict = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + + if (length === undefined) { + while (!this.eof) { + this.readBlock(); + } + } else { + const end = start + length; + + while (this.bufferLength <= end && !this.eof) { + this.readBlock(); + } + } + + return new _stream.Stream(this.buffer, start, length, dict); + } + + getBaseStreams() { + return this.str ? this.str.getBaseStreams() : null; + } + +} + +exports.DecodeStream = DecodeStream; + +class StreamsSequenceStream extends DecodeStream { + constructor(streams) { + let onError = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + let maybeLength = 0; + + for (const stream of streams) { + maybeLength += stream instanceof DecodeStream ? stream._rawMinBufferLength : stream.length; + } + + super(maybeLength); + this.streams = streams; + this._onError = onError; + } + + readBlock() { + const streams = this.streams; + + if (streams.length === 0) { + this.eof = true; + return; + } + + const stream = streams.shift(); + let chunk; + + try { + chunk = stream.getBytes(); + } catch (reason) { + if (this._onError) { + this._onError(reason, stream.dict && stream.dict.objId); + + return; + } + + throw reason; + } + + const bufferLength = this.bufferLength; + const newLength = bufferLength + chunk.length; + const buffer = this.ensureBuffer(newLength); + buffer.set(chunk, bufferLength); + this.bufferLength = newLength; + } + + getBaseStreams() { + const baseStreamsBuf = []; + + for (const stream of this.streams) { + const baseStreams = stream.getBaseStreams(); + + if (baseStreams) { + baseStreamsBuf.push(...baseStreams); + } + } + + return baseStreamsBuf.length > 0 ? baseStreamsBuf : null; + } + +} + +exports.StreamsSequenceStream = StreamsSequenceStream; + +/***/ }), +/* 145 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AsciiHexStream = void 0; + +var _decode_stream = __w_pdfjs_require__(144); + +class AsciiHexStream extends _decode_stream.DecodeStream { + constructor(str, maybeLength) { + if (maybeLength) { + maybeLength *= 0.5; + } + + super(maybeLength); this.str = str; this.dict = str.dict; this.firstDigit = -1; - - if (maybeLength) { - maybeLength = 0.5 * maybeLength; - } - - DecodeStream.call(this, maybeLength); } - AsciiHexStream.prototype = Object.create(DecodeStream.prototype); - - AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() { - var UPSTREAM_BLOCK_SIZE = 8000; - var bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE); + readBlock() { + const UPSTREAM_BLOCK_SIZE = 8000; + const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE); if (!bytes.length) { this.eof = true; return; } - var maxDecodeLength = bytes.length + 1 >> 1; - var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength); - var bufferLength = this.bufferLength; - var firstDigit = this.firstDigit; + const maxDecodeLength = bytes.length + 1 >> 1; + const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength); + let bufferLength = this.bufferLength; + let firstDigit = this.firstDigit; - for (var i = 0, ii = bytes.length; i < ii; i++) { - var ch = bytes[i], - digit; + for (const ch of bytes) { + let digit; if (ch >= 0x30 && ch <= 0x39) { - digit = ch & 0x0F; + digit = ch & 0x0f; } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) { - digit = (ch & 0x0F) + 9; - } else if (ch === 0x3E) { + digit = (ch & 0x0f) + 9; + } else if (ch === 0x3e) { this.eof = true; break; } else { @@ -18175,262 +20539,60 @@ var AsciiHexStream = function AsciiHexStreamClosure() { this.firstDigit = firstDigit; this.bufferLength = bufferLength; - }; + } - return AsciiHexStream; -}(); +} exports.AsciiHexStream = AsciiHexStream; -var RunLengthStream = function RunLengthStreamClosure() { - function RunLengthStream(str, maybeLength) { - this.str = str; - this.dict = str.dict; - DecodeStream.call(this, maybeLength); - } - - RunLengthStream.prototype = Object.create(DecodeStream.prototype); - - RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() { - var repeatHeader = this.str.getBytes(2); - - if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) { - this.eof = true; - return; - } - - var buffer; - var bufferLength = this.bufferLength; - var n = repeatHeader[0]; - - if (n < 128) { - buffer = this.ensureBuffer(bufferLength + n + 1); - buffer[bufferLength++] = repeatHeader[1]; - - if (n > 0) { - var source = this.str.getBytes(n); - buffer.set(source, bufferLength); - bufferLength += n; - } - } else { - n = 257 - n; - var b = repeatHeader[1]; - buffer = this.ensureBuffer(bufferLength + n + 1); - - for (var i = 0; i < n; i++) { - buffer[bufferLength++] = b; - } - } - - this.bufferLength = bufferLength; - }; - - return RunLengthStream; -}(); - -exports.RunLengthStream = RunLengthStream; - -var LZWStream = function LZWStreamClosure() { - function LZWStream(str, maybeLength, earlyChange) { - this.str = str; - this.dict = str.dict; - this.cachedData = 0; - this.bitsCached = 0; - var maxLzwDictionarySize = 4096; - var lzwState = { - earlyChange: earlyChange, - codeLength: 9, - nextCode: 258, - dictionaryValues: new Uint8Array(maxLzwDictionarySize), - dictionaryLengths: new Uint16Array(maxLzwDictionarySize), - dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize), - currentSequence: new Uint8Array(maxLzwDictionarySize), - currentSequenceLength: 0 - }; - - for (var i = 0; i < 256; ++i) { - lzwState.dictionaryValues[i] = i; - lzwState.dictionaryLengths[i] = 1; - } - - this.lzwState = lzwState; - DecodeStream.call(this, maybeLength); - } - - LZWStream.prototype = Object.create(DecodeStream.prototype); - - LZWStream.prototype.readBits = function LZWStream_readBits(n) { - var bitsCached = this.bitsCached; - var cachedData = this.cachedData; - - while (bitsCached < n) { - var c = this.str.getByte(); - - if (c === -1) { - this.eof = true; - return null; - } - - cachedData = cachedData << 8 | c; - bitsCached += 8; - } - - this.bitsCached = bitsCached -= n; - this.cachedData = cachedData; - this.lastCode = null; - return cachedData >>> bitsCached & (1 << n) - 1; - }; - - LZWStream.prototype.readBlock = function LZWStream_readBlock() { - var blockSize = 512; - var estimatedDecodedSize = blockSize * 2, - decodedSizeDelta = blockSize; - var i, j, q; - var lzwState = this.lzwState; - - if (!lzwState) { - return; - } - - var earlyChange = lzwState.earlyChange; - var nextCode = lzwState.nextCode; - var dictionaryValues = lzwState.dictionaryValues; - var dictionaryLengths = lzwState.dictionaryLengths; - var dictionaryPrevCodes = lzwState.dictionaryPrevCodes; - var codeLength = lzwState.codeLength; - var prevCode = lzwState.prevCode; - var currentSequence = lzwState.currentSequence; - var currentSequenceLength = lzwState.currentSequenceLength; - var decodedLength = 0; - var currentBufferLength = this.bufferLength; - var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize); - - for (i = 0; i < blockSize; i++) { - var code = this.readBits(codeLength); - var hasPrev = currentSequenceLength > 0; - - if (code < 256) { - currentSequence[0] = code; - currentSequenceLength = 1; - } else if (code >= 258) { - if (code < nextCode) { - currentSequenceLength = dictionaryLengths[code]; - - for (j = currentSequenceLength - 1, q = code; j >= 0; j--) { - currentSequence[j] = dictionaryValues[q]; - q = dictionaryPrevCodes[q]; - } - } else { - currentSequence[currentSequenceLength++] = currentSequence[0]; - } - } else if (code === 256) { - codeLength = 9; - nextCode = 258; - currentSequenceLength = 0; - continue; - } else { - this.eof = true; - delete this.lzwState; - break; - } - - if (hasPrev) { - dictionaryPrevCodes[nextCode] = prevCode; - dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1; - dictionaryValues[nextCode] = currentSequence[0]; - nextCode++; - codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0; - } - - prevCode = code; - decodedLength += currentSequenceLength; - - if (estimatedDecodedSize < decodedLength) { - do { - estimatedDecodedSize += decodedSizeDelta; - } while (estimatedDecodedSize < decodedLength); - - buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize); - } - - for (j = 0; j < currentSequenceLength; j++) { - buffer[currentBufferLength++] = currentSequence[j]; - } - } - - lzwState.nextCode = nextCode; - lzwState.codeLength = codeLength; - lzwState.prevCode = prevCode; - lzwState.currentSequenceLength = currentSequenceLength; - this.bufferLength = currentBufferLength; - }; - - return LZWStream; -}(); - -exports.LZWStream = LZWStream; - -var NullStream = function NullStreamClosure() { - function NullStream() { - Stream.call(this, new Uint8Array(0)); - } - - NullStream.prototype = Stream.prototype; - return NullStream; -}(); - -exports.NullStream = NullStream; - /***/ }), -/* 159 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 146 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.CCITTFaxStream = void 0; -var _primitives = __w_pdfjs_require__(151); +var _ccitt = __w_pdfjs_require__(147); -var _ccitt = __w_pdfjs_require__(160); +var _decode_stream = __w_pdfjs_require__(144); -var _stream = __w_pdfjs_require__(158); +var _primitives = __w_pdfjs_require__(130); -var CCITTFaxStream = function CCITTFaxStreamClosure() { - function CCITTFaxStream(str, maybeLength, params) { +class CCITTFaxStream extends _decode_stream.DecodeStream { + constructor(str, maybeLength, params) { + super(maybeLength); this.str = str; this.dict = str.dict; - if (!(0, _primitives.isDict)(params)) { + if (!(params instanceof _primitives.Dict)) { params = _primitives.Dict.empty; } - var source = { - next: function next() { + const source = { + next() { return str.getByte(); } + }; this.ccittFaxDecoder = new _ccitt.CCITTFaxDecoder(source, { - K: params.get('K'), - EndOfLine: params.get('EndOfLine'), - EncodedByteAlign: params.get('EncodedByteAlign'), - Columns: params.get('Columns'), - Rows: params.get('Rows'), - EndOfBlock: params.get('EndOfBlock'), - BlackIs1: params.get('BlackIs1') + K: params.get("K"), + EndOfLine: params.get("EndOfLine"), + EncodedByteAlign: params.get("EncodedByteAlign"), + Columns: params.get("Columns"), + Rows: params.get("Rows"), + EndOfBlock: params.get("EndOfBlock"), + BlackIs1: params.get("BlackIs1") }); - - _stream.DecodeStream.call(this, maybeLength); } - CCITTFaxStream.prototype = Object.create(_stream.DecodeStream.prototype); - - CCITTFaxStream.prototype.readBlock = function () { + readBlock() { while (!this.eof) { - var c = this.ccittFaxDecoder.readNextChar(); + const c = this.ccittFaxDecoder.readNextChar(); if (c === -1) { this.eof = true; @@ -18440,68 +20602,67 @@ var CCITTFaxStream = function CCITTFaxStreamClosure() { this.ensureBuffer(this.bufferLength + 1); this.buffer[this.bufferLength++] = c; } - }; + } - return CCITTFaxStream; -}(); +} exports.CCITTFaxStream = CCITTFaxStream; /***/ }), -/* 160 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 147 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.CCITTFaxDecoder = void 0; -var _util = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(2); -var CCITTFaxDecoder = function CCITTFaxDecoder() { - var ccittEOL = -2; - var ccittEOF = -1; - var twoDimPass = 0; - var twoDimHoriz = 1; - var twoDimVert0 = 2; - var twoDimVertR1 = 3; - var twoDimVertL1 = 4; - var twoDimVertR2 = 5; - var twoDimVertL2 = 6; - var twoDimVertR3 = 7; - var twoDimVertL3 = 8; - var twoDimTable = [[-1, -1], [-1, -1], [7, twoDimVertL3], [7, twoDimVertR3], [6, twoDimVertL2], [6, twoDimVertL2], [6, twoDimVertR2], [6, twoDimVertR2], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0]]; - var whiteTable1 = [[-1, -1], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [12, 1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]]; - var whiteTable2 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], [8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], [8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], [7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], [8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], [8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], [7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], [8, 0], [8, 0], [8, 320], [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 896], [9, 960], [9, 1024], [9, 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]]; - var blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], [12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], [11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], [12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], [13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], [12, 59], [12, 60], [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], [11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]]; - var blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], [12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], [12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]]; - var blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]]; +const ccittEOL = -2; +const ccittEOF = -1; +const twoDimPass = 0; +const twoDimHoriz = 1; +const twoDimVert0 = 2; +const twoDimVertR1 = 3; +const twoDimVertL1 = 4; +const twoDimVertR2 = 5; +const twoDimVertL2 = 6; +const twoDimVertR3 = 7; +const twoDimVertL3 = 8; +const twoDimTable = [[-1, -1], [-1, -1], [7, twoDimVertL3], [7, twoDimVertR3], [6, twoDimVertL2], [6, twoDimVertL2], [6, twoDimVertR2], [6, twoDimVertR2], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0]]; +const whiteTable1 = [[-1, -1], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [12, 1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]]; +const whiteTable2 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], [8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], [8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], [7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], [8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], [8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], [7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], [8, 0], [8, 0], [8, 320], [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 896], [9, 960], [9, 1024], [9, 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]]; +const blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], [12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], [11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], [12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], [13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], [12, 59], [12, 60], [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], [11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]]; +const blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], [12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], [12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]]; +const blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]]; - function CCITTFaxDecoder(source) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; +class CCITTFaxDecoder { + constructor(source) { + let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - if (!source || typeof source.next !== 'function') { + if (!source || typeof source.next !== "function") { throw new Error('CCITTFaxDecoder - invalid "source" parameter.'); } this.source = source; this.eof = false; - this.encoding = options['K'] || 0; - this.eoline = options['EndOfLine'] || false; - this.byteAlign = options['EncodedByteAlign'] || false; - this.columns = options['Columns'] || 1728; - this.rows = options['Rows'] || 0; - var eoblock = options['EndOfBlock']; + this.encoding = options.K || 0; + this.eoline = options.EndOfLine || false; + this.byteAlign = options.EncodedByteAlign || false; + this.columns = options.Columns || 1728; + this.rows = options.Rows || 0; + let eoblock = options.EndOfBlock; if (eoblock === null || eoblock === undefined) { eoblock = true; } this.eoblock = eoblock; - this.black = options['BlackIs1'] || false; + this.black = options.BlackIs1 || false; this.codingLine = new Uint32Array(this.columns + 1); this.refLine = new Uint32Array(this.columns + 2); this.codingLine[0] = this.columns; @@ -18512,7 +20673,7 @@ var CCITTFaxDecoder = function CCITTFaxDecoder() { this.inputBuf = 0; this.outputBits = 0; this.rowsDone = false; - var code1; + let code1; while ((code1 = this._lookBits(12)) === 0) { this._eatBits(1); @@ -18529,675 +20690,998 @@ var CCITTFaxDecoder = function CCITTFaxDecoder() { } } - CCITTFaxDecoder.prototype = { - readNextChar: function readNextChar() { + readNextChar() { + if (this.eof) { + return -1; + } + + const refLine = this.refLine; + const codingLine = this.codingLine; + const columns = this.columns; + let refPos, blackPixels, bits, i; + + if (this.outputBits === 0) { + if (this.rowsDone) { + this.eof = true; + } + if (this.eof) { return -1; } - var refLine = this.refLine; - var codingLine = this.codingLine; - var columns = this.columns; - var refPos, blackPixels, bits, i; + this.err = false; + let code1, code2, code3; - if (this.outputBits === 0) { - if (this.rowsDone) { - this.eof = true; + if (this.nextLine2D) { + for (i = 0; codingLine[i] < columns; ++i) { + refLine[i] = codingLine[i]; } - if (this.eof) { - return -1; - } + refLine[i++] = columns; + refLine[i] = columns; + codingLine[0] = 0; + this.codingPos = 0; + refPos = 0; + blackPixels = 0; - this.err = false; - var code1, code2, code3; + while (codingLine[this.codingPos] < columns) { + code1 = this._getTwoDimCode(); - if (this.nextLine2D) { - for (i = 0; codingLine[i] < columns; ++i) { - refLine[i] = codingLine[i]; - } + switch (code1) { + case twoDimPass: + this._addPixels(refLine[refPos + 1], blackPixels); - refLine[i++] = columns; - refLine[i] = columns; - codingLine[0] = 0; - this.codingPos = 0; - refPos = 0; - blackPixels = 0; + if (refLine[refPos + 1] < columns) { + refPos += 2; + } - while (codingLine[this.codingPos] < columns) { - code1 = this._getTwoDimCode(); + break; - switch (code1) { - case twoDimPass: - this._addPixels(refLine[refPos + 1], blackPixels); + case twoDimHoriz: + code1 = code2 = 0; - if (refLine[refPos + 1] < columns) { + if (blackPixels) { + do { + code1 += code3 = this._getBlackCode(); + } while (code3 >= 64); + + do { + code2 += code3 = this._getWhiteCode(); + } while (code3 >= 64); + } else { + do { + code1 += code3 = this._getWhiteCode(); + } while (code3 >= 64); + + do { + code2 += code3 = this._getBlackCode(); + } while (code3 >= 64); + } + + this._addPixels(codingLine[this.codingPos] + code1, blackPixels); + + if (codingLine[this.codingPos] < columns) { + this._addPixels(codingLine[this.codingPos] + code2, blackPixels ^ 1); + } + + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + + break; + + case twoDimVertR3: + this._addPixels(refLine[refPos] + 3, blackPixels); + + blackPixels ^= 1; + + if (codingLine[this.codingPos] < columns) { + ++refPos; + + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { refPos += 2; } + } - break; + break; - case twoDimHoriz: - code1 = code2 = 0; + case twoDimVertR2: + this._addPixels(refLine[refPos] + 2, blackPixels); - if (blackPixels) { - do { - code1 += code3 = this._getBlackCode(); - } while (code3 >= 64); + blackPixels ^= 1; - do { - code2 += code3 = this._getWhiteCode(); - } while (code3 >= 64); - } else { - do { - code1 += code3 = this._getWhiteCode(); - } while (code3 >= 64); + if (codingLine[this.codingPos] < columns) { + ++refPos; - do { - code2 += code3 = this._getBlackCode(); - } while (code3 >= 64); + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; } + } - this._addPixels(codingLine[this.codingPos] + code1, blackPixels); + break; - if (codingLine[this.codingPos] < columns) { - this._addPixels(codingLine[this.codingPos] + code2, blackPixels ^ 1); + case twoDimVertR1: + this._addPixels(refLine[refPos] + 1, blackPixels); + + blackPixels ^= 1; + + if (codingLine[this.codingPos] < columns) { + ++refPos; + + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + + break; + + case twoDimVert0: + this._addPixels(refLine[refPos], blackPixels); + + blackPixels ^= 1; + + if (codingLine[this.codingPos] < columns) { + ++refPos; + + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + + break; + + case twoDimVertL3: + this._addPixelsNeg(refLine[refPos] - 3, blackPixels); + + blackPixels ^= 1; + + if (codingLine[this.codingPos] < columns) { + if (refPos > 0) { + --refPos; + } else { + ++refPos; } while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { refPos += 2; } + } - break; + break; - case twoDimVertR3: - this._addPixels(refLine[refPos] + 3, blackPixels); + case twoDimVertL2: + this._addPixelsNeg(refLine[refPos] - 2, blackPixels); - blackPixels ^= 1; + blackPixels ^= 1; - if (codingLine[this.codingPos] < columns) { + if (codingLine[this.codingPos] < columns) { + if (refPos > 0) { + --refPos; + } else { ++refPos; - - while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { - refPos += 2; - } } - break; + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } - case twoDimVertR2: - this._addPixels(refLine[refPos] + 2, blackPixels); + break; - blackPixels ^= 1; + case twoDimVertL1: + this._addPixelsNeg(refLine[refPos] - 1, blackPixels); - if (codingLine[this.codingPos] < columns) { + blackPixels ^= 1; + + if (codingLine[this.codingPos] < columns) { + if (refPos > 0) { + --refPos; + } else { ++refPos; - - while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { - refPos += 2; - } } - break; - - case twoDimVertR1: - this._addPixels(refLine[refPos] + 1, blackPixels); - - blackPixels ^= 1; - - if (codingLine[this.codingPos] < columns) { - ++refPos; - - while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { - refPos += 2; - } + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; } + } - break; + break; - case twoDimVert0: - this._addPixels(refLine[refPos], blackPixels); + case ccittEOF: + this._addPixels(columns, 0); - blackPixels ^= 1; + this.eof = true; + break; - if (codingLine[this.codingPos] < columns) { - ++refPos; + default: + (0, _util.info)("bad 2d code"); - while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { - refPos += 2; - } - } + this._addPixels(columns, 0); - break; - - case twoDimVertL3: - this._addPixelsNeg(refLine[refPos] - 3, blackPixels); - - blackPixels ^= 1; - - if (codingLine[this.codingPos] < columns) { - if (refPos > 0) { - --refPos; - } else { - ++refPos; - } - - while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { - refPos += 2; - } - } - - break; - - case twoDimVertL2: - this._addPixelsNeg(refLine[refPos] - 2, blackPixels); - - blackPixels ^= 1; - - if (codingLine[this.codingPos] < columns) { - if (refPos > 0) { - --refPos; - } else { - ++refPos; - } - - while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { - refPos += 2; - } - } - - break; - - case twoDimVertL1: - this._addPixelsNeg(refLine[refPos] - 1, blackPixels); - - blackPixels ^= 1; - - if (codingLine[this.codingPos] < columns) { - if (refPos > 0) { - --refPos; - } else { - ++refPos; - } - - while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { - refPos += 2; - } - } - - break; - - case ccittEOF: - this._addPixels(columns, 0); - - this.eof = true; - break; - - default: - (0, _util.info)('bad 2d code'); - - this._addPixels(columns, 0); - - this.err = true; - } - } - } else { - codingLine[0] = 0; - this.codingPos = 0; - blackPixels = 0; - - while (codingLine[this.codingPos] < columns) { - code1 = 0; - - if (blackPixels) { - do { - code1 += code3 = this._getBlackCode(); - } while (code3 >= 64); - } else { - do { - code1 += code3 = this._getWhiteCode(); - } while (code3 >= 64); - } - - this._addPixels(codingLine[this.codingPos] + code1, blackPixels); - - blackPixels ^= 1; + this.err = true; } } + } else { + codingLine[0] = 0; + this.codingPos = 0; + blackPixels = 0; - var gotEOL = false; + while (codingLine[this.codingPos] < columns) { + code1 = 0; - if (this.byteAlign) { - this.inputBits &= ~7; - } - - if (!this.eoblock && this.row === this.rows - 1) { - this.rowsDone = true; - } else { - code1 = this._lookBits(12); - - if (this.eoline) { - while (code1 !== ccittEOF && code1 !== 1) { - this._eatBits(1); - - code1 = this._lookBits(12); - } + if (blackPixels) { + do { + code1 += code3 = this._getBlackCode(); + } while (code3 >= 64); } else { - while (code1 === 0) { - this._eatBits(1); - - code1 = this._lookBits(12); - } + do { + code1 += code3 = this._getWhiteCode(); + } while (code3 >= 64); } - if (code1 === 1) { - this._eatBits(12); + this._addPixels(codingLine[this.codingPos] + code1, blackPixels); - gotEOL = true; - } else if (code1 === ccittEOF) { - this.eof = true; + blackPixels ^= 1; + } + } + + let gotEOL = false; + + if (this.byteAlign) { + this.inputBits &= ~7; + } + + if (!this.eoblock && this.row === this.rows - 1) { + this.rowsDone = true; + } else { + code1 = this._lookBits(12); + + if (this.eoline) { + while (code1 !== ccittEOF && code1 !== 1) { + this._eatBits(1); + + code1 = this._lookBits(12); + } + } else { + while (code1 === 0) { + this._eatBits(1); + + code1 = this._lookBits(12); } } - if (!this.eof && this.encoding > 0 && !this.rowsDone) { - this.nextLine2D = !this._lookBits(1); + if (code1 === 1) { + this._eatBits(12); + + gotEOL = true; + } else if (code1 === ccittEOF) { + this.eof = true; + } + } + + if (!this.eof && this.encoding > 0 && !this.rowsDone) { + this.nextLine2D = !this._lookBits(1); + + this._eatBits(1); + } + + if (this.eoblock && gotEOL && this.byteAlign) { + code1 = this._lookBits(12); + + if (code1 === 1) { + this._eatBits(12); + + if (this.encoding > 0) { + this._lookBits(1); + + this._eatBits(1); + } + + if (this.encoding >= 0) { + for (i = 0; i < 4; ++i) { + code1 = this._lookBits(12); + + if (code1 !== 1) { + (0, _util.info)("bad rtc code: " + code1); + } + + this._eatBits(12); + + if (this.encoding > 0) { + this._lookBits(1); + + this._eatBits(1); + } + } + } + + this.eof = true; + } + } else if (this.err && this.eoline) { + while (true) { + code1 = this._lookBits(13); + + if (code1 === ccittEOF) { + this.eof = true; + return -1; + } + + if (code1 >> 1 === 1) { + break; + } this._eatBits(1); } - if (this.eoblock && gotEOL && this.byteAlign) { - code1 = this._lookBits(12); + this._eatBits(12); - if (code1 === 1) { - this._eatBits(12); + if (this.encoding > 0) { + this._eatBits(1); - if (this.encoding > 0) { - this._lookBits(1); - - this._eatBits(1); - } - - if (this.encoding >= 0) { - for (i = 0; i < 4; ++i) { - code1 = this._lookBits(12); - - if (code1 !== 1) { - (0, _util.info)('bad rtc code: ' + code1); - } - - this._eatBits(12); - - if (this.encoding > 0) { - this._lookBits(1); - - this._eatBits(1); - } - } - } - - this.eof = true; - } - } else if (this.err && this.eoline) { - while (true) { - code1 = this._lookBits(13); - - if (code1 === ccittEOF) { - this.eof = true; - return -1; - } - - if (code1 >> 1 === 1) { - break; - } - - this._eatBits(1); - } - - this._eatBits(12); - - if (this.encoding > 0) { - this._eatBits(1); - - this.nextLine2D = !(code1 & 1); - } + this.nextLine2D = !(code1 & 1); } - - if (codingLine[0] > 0) { - this.outputBits = codingLine[this.codingPos = 0]; - } else { - this.outputBits = codingLine[this.codingPos = 1]; - } - - this.row++; } - var c; - - if (this.outputBits >= 8) { - c = this.codingPos & 1 ? 0 : 0xFF; - this.outputBits -= 8; - - if (this.outputBits === 0 && codingLine[this.codingPos] < columns) { - this.codingPos++; - this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1]; - } + if (codingLine[0] > 0) { + this.outputBits = codingLine[this.codingPos = 0]; } else { - bits = 8; - c = 0; + this.outputBits = codingLine[this.codingPos = 1]; + } - do { - if (this.outputBits > bits) { + this.row++; + } + + let c; + + if (this.outputBits >= 8) { + c = this.codingPos & 1 ? 0 : 0xff; + this.outputBits -= 8; + + if (this.outputBits === 0 && codingLine[this.codingPos] < columns) { + this.codingPos++; + this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1]; + } + } else { + bits = 8; + c = 0; + + do { + if (typeof this.outputBits !== "number") { + throw new _util.FormatError('Invalid /CCITTFaxDecode data, "outputBits" must be a number.'); + } + + if (this.outputBits > bits) { + c <<= bits; + + if (!(this.codingPos & 1)) { + c |= 0xff >> 8 - bits; + } + + this.outputBits -= bits; + bits = 0; + } else { + c <<= this.outputBits; + + if (!(this.codingPos & 1)) { + c |= 0xff >> 8 - this.outputBits; + } + + bits -= this.outputBits; + this.outputBits = 0; + + if (codingLine[this.codingPos] < columns) { + this.codingPos++; + this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1]; + } else if (bits > 0) { c <<= bits; - - if (!(this.codingPos & 1)) { - c |= 0xFF >> 8 - bits; - } - - this.outputBits -= bits; bits = 0; - } else { - c <<= this.outputBits; - - if (!(this.codingPos & 1)) { - c |= 0xFF >> 8 - this.outputBits; - } - - bits -= this.outputBits; - this.outputBits = 0; - - if (codingLine[this.codingPos] < columns) { - this.codingPos++; - this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1]; - } else if (bits > 0) { - c <<= bits; - bits = 0; - } - } - } while (bits); - } - - if (this.black) { - c ^= 0xFF; - } - - return c; - }, - _addPixels: function _addPixels(a1, blackPixels) { - var codingLine = this.codingLine; - var codingPos = this.codingPos; - - if (a1 > codingLine[codingPos]) { - if (a1 > this.columns) { - (0, _util.info)('row is wrong length'); - this.err = true; - a1 = this.columns; - } - - if (codingPos & 1 ^ blackPixels) { - ++codingPos; - } - - codingLine[codingPos] = a1; - } - - this.codingPos = codingPos; - }, - _addPixelsNeg: function _addPixelsNeg(a1, blackPixels) { - var codingLine = this.codingLine; - var codingPos = this.codingPos; - - if (a1 > codingLine[codingPos]) { - if (a1 > this.columns) { - (0, _util.info)('row is wrong length'); - this.err = true; - a1 = this.columns; - } - - if (codingPos & 1 ^ blackPixels) { - ++codingPos; - } - - codingLine[codingPos] = a1; - } else if (a1 < codingLine[codingPos]) { - if (a1 < 0) { - (0, _util.info)('invalid code'); - this.err = true; - a1 = 0; - } - - while (codingPos > 0 && a1 < codingLine[codingPos - 1]) { - --codingPos; - } - - codingLine[codingPos] = a1; - } - - this.codingPos = codingPos; - }, - _findTableCode: function _findTableCode(start, end, table, limit) { - var limitValue = limit || 0; - - for (var i = start; i <= end; ++i) { - var code = this._lookBits(i); - - if (code === ccittEOF) { - return [true, 1, false]; - } - - if (i < end) { - code <<= end - i; - } - - if (!limitValue || code >= limitValue) { - var p = table[code - limitValue]; - - if (p[0] === i) { - this._eatBits(i); - - return [true, p[1], true]; } } + } while (bits); + } + + if (this.black) { + c ^= 0xff; + } + + return c; + } + + _addPixels(a1, blackPixels) { + const codingLine = this.codingLine; + let codingPos = this.codingPos; + + if (a1 > codingLine[codingPos]) { + if (a1 > this.columns) { + (0, _util.info)("row is wrong length"); + this.err = true; + a1 = this.columns; } - return [false, 0, false]; - }, - _getTwoDimCode: function _getTwoDimCode() { - var code = 0; - var p; - - if (this.eoblock) { - code = this._lookBits(7); - p = twoDimTable[code]; - - if (p && p[0] > 0) { - this._eatBits(p[0]); - - return p[1]; - } - } else { - var result = this._findTableCode(1, 7, twoDimTable); - - if (result[0] && result[2]) { - return result[1]; - } + if (codingPos & 1 ^ blackPixels) { + ++codingPos; } - (0, _util.info)('Bad two dim code'); - return ccittEOF; - }, - _getWhiteCode: function _getWhiteCode() { - var code = 0; - var p; + codingLine[codingPos] = a1; + } - if (this.eoblock) { - code = this._lookBits(12); + this.codingPos = codingPos; + } - if (code === ccittEOF) { - return 1; - } + _addPixelsNeg(a1, blackPixels) { + const codingLine = this.codingLine; + let codingPos = this.codingPos; - if (code >> 5 === 0) { - p = whiteTable1[code]; - } else { - p = whiteTable2[code >> 3]; - } - - if (p[0] > 0) { - this._eatBits(p[0]); - - return p[1]; - } - } else { - var result = this._findTableCode(1, 9, whiteTable2); - - if (result[0]) { - return result[1]; - } - - result = this._findTableCode(11, 12, whiteTable1); - - if (result[0]) { - return result[1]; - } + if (a1 > codingLine[codingPos]) { + if (a1 > this.columns) { + (0, _util.info)("row is wrong length"); + this.err = true; + a1 = this.columns; } - (0, _util.info)('bad white code'); - - this._eatBits(1); - - return 1; - }, - _getBlackCode: function _getBlackCode() { - var code, p; - - if (this.eoblock) { - code = this._lookBits(13); - - if (code === ccittEOF) { - return 1; - } - - if (code >> 7 === 0) { - p = blackTable1[code]; - } else if (code >> 9 === 0 && code >> 7 !== 0) { - p = blackTable2[(code >> 1) - 64]; - } else { - p = blackTable3[code >> 7]; - } - - if (p[0] > 0) { - this._eatBits(p[0]); - - return p[1]; - } - } else { - var result = this._findTableCode(2, 6, blackTable3); - - if (result[0]) { - return result[1]; - } - - result = this._findTableCode(7, 12, blackTable2, 64); - - if (result[0]) { - return result[1]; - } - - result = this._findTableCode(10, 13, blackTable1); - - if (result[0]) { - return result[1]; - } + if (codingPos & 1 ^ blackPixels) { + ++codingPos; } - (0, _util.info)('bad black code'); - - this._eatBits(1); - - return 1; - }, - _lookBits: function _lookBits(n) { - var c; - - while (this.inputBits < n) { - if ((c = this.source.next()) === -1) { - if (this.inputBits === 0) { - return ccittEOF; - } - - return this.inputBuf << n - this.inputBits & 0xFFFF >> 16 - n; - } - - this.inputBuf = this.inputBuf << 8 | c; - this.inputBits += 8; + codingLine[codingPos] = a1; + } else if (a1 < codingLine[codingPos]) { + if (a1 < 0) { + (0, _util.info)("invalid code"); + this.err = true; + a1 = 0; } - return this.inputBuf >> this.inputBits - n & 0xFFFF >> 16 - n; - }, - _eatBits: function _eatBits(n) { - if ((this.inputBits -= n) < 0) { - this.inputBits = 0; + while (codingPos > 0 && a1 < codingLine[codingPos - 1]) { + --codingPos; + } + + codingLine[codingPos] = a1; + } + + this.codingPos = codingPos; + } + + _findTableCode(start, end, table, limit) { + const limitValue = limit || 0; + + for (let i = start; i <= end; ++i) { + let code = this._lookBits(i); + + if (code === ccittEOF) { + return [true, 1, false]; + } + + if (i < end) { + code <<= end - i; + } + + if (!limitValue || code >= limitValue) { + const p = table[code - limitValue]; + + if (p[0] === i) { + this._eatBits(i); + + return [true, p[1], true]; + } } } - }; - return CCITTFaxDecoder; -}(); + + return [false, 0, false]; + } + + _getTwoDimCode() { + let code = 0; + let p; + + if (this.eoblock) { + code = this._lookBits(7); + p = twoDimTable[code]; + + if (p && p[0] > 0) { + this._eatBits(p[0]); + + return p[1]; + } + } else { + const result = this._findTableCode(1, 7, twoDimTable); + + if (result[0] && result[2]) { + return result[1]; + } + } + + (0, _util.info)("Bad two dim code"); + return ccittEOF; + } + + _getWhiteCode() { + let code = 0; + let p; + + if (this.eoblock) { + code = this._lookBits(12); + + if (code === ccittEOF) { + return 1; + } + + if (code >> 5 === 0) { + p = whiteTable1[code]; + } else { + p = whiteTable2[code >> 3]; + } + + if (p[0] > 0) { + this._eatBits(p[0]); + + return p[1]; + } + } else { + let result = this._findTableCode(1, 9, whiteTable2); + + if (result[0]) { + return result[1]; + } + + result = this._findTableCode(11, 12, whiteTable1); + + if (result[0]) { + return result[1]; + } + } + + (0, _util.info)("bad white code"); + + this._eatBits(1); + + return 1; + } + + _getBlackCode() { + let code, p; + + if (this.eoblock) { + code = this._lookBits(13); + + if (code === ccittEOF) { + return 1; + } + + if (code >> 7 === 0) { + p = blackTable1[code]; + } else if (code >> 9 === 0 && code >> 7 !== 0) { + p = blackTable2[(code >> 1) - 64]; + } else { + p = blackTable3[code >> 7]; + } + + if (p[0] > 0) { + this._eatBits(p[0]); + + return p[1]; + } + } else { + let result = this._findTableCode(2, 6, blackTable3); + + if (result[0]) { + return result[1]; + } + + result = this._findTableCode(7, 12, blackTable2, 64); + + if (result[0]) { + return result[1]; + } + + result = this._findTableCode(10, 13, blackTable1); + + if (result[0]) { + return result[1]; + } + } + + (0, _util.info)("bad black code"); + + this._eatBits(1); + + return 1; + } + + _lookBits(n) { + let c; + + while (this.inputBits < n) { + if ((c = this.source.next()) === -1) { + if (this.inputBits === 0) { + return ccittEOF; + } + + return this.inputBuf << n - this.inputBits & 0xffff >> 16 - n; + } + + this.inputBuf = this.inputBuf << 8 | c; + this.inputBits += 8; + } + + return this.inputBuf >> this.inputBits - n & 0xffff >> 16 - n; + } + + _eatBits(n) { + if ((this.inputBits -= n) < 0) { + this.inputBits = 0; + } + } + +} exports.CCITTFaxDecoder = CCITTFaxDecoder; /***/ }), -/* 161 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 148 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.Jbig2Stream = void 0; +})); +exports.FlateStream = void 0; -var _primitives = __w_pdfjs_require__(151); +var _decode_stream = __w_pdfjs_require__(144); -var _stream = __w_pdfjs_require__(158); +var _util = __w_pdfjs_require__(2); -var _jbig = __w_pdfjs_require__(162); +const codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); +const lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]); +const distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]); +const fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff]), 9]; +const fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000]), 5]; -var _util = __w_pdfjs_require__(5); +class FlateStream extends _decode_stream.DecodeStream { + constructor(str, maybeLength) { + super(maybeLength); + this.str = str; + this.dict = str.dict; + const cmf = str.getByte(); + const flg = str.getByte(); -var Jbig2Stream = function Jbig2StreamClosure() { - function Jbig2Stream(stream, maybeLength, dict, params) { - this.stream = stream; - this.maybeLength = maybeLength; - this.dict = dict; - this.params = params; + if (cmf === -1 || flg === -1) { + throw new _util.FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`); + } - _stream.DecodeStream.call(this, maybeLength); + if ((cmf & 0x0f) !== 0x08) { + throw new _util.FormatError(`Unknown compression method in flate stream: ${cmf}, ${flg}`); + } + + if (((cmf << 8) + flg) % 31 !== 0) { + throw new _util.FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`); + } + + if (flg & 0x20) { + throw new _util.FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`); + } + + this.codeSize = 0; + this.codeBuf = 0; } - Jbig2Stream.prototype = Object.create(_stream.DecodeStream.prototype); - Object.defineProperty(Jbig2Stream.prototype, 'bytes', { - get: function get() { - return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength)); - }, - configurable: true - }); + getBits(bits) { + const str = this.str; + let codeSize = this.codeSize; + let codeBuf = this.codeBuf; + let b; - Jbig2Stream.prototype.ensureBuffer = function (requested) {}; + while (codeSize < bits) { + if ((b = str.getByte()) === -1) { + throw new _util.FormatError("Bad encoding in flate stream"); + } - Jbig2Stream.prototype.readBlock = function () { + codeBuf |= b << codeSize; + codeSize += 8; + } + + b = codeBuf & (1 << bits) - 1; + this.codeBuf = codeBuf >> bits; + this.codeSize = codeSize -= bits; + return b; + } + + getCode(table) { + const str = this.str; + const codes = table[0]; + const maxLen = table[1]; + let codeSize = this.codeSize; + let codeBuf = this.codeBuf; + let b; + + while (codeSize < maxLen) { + if ((b = str.getByte()) === -1) { + break; + } + + codeBuf |= b << codeSize; + codeSize += 8; + } + + const code = codes[codeBuf & (1 << maxLen) - 1]; + const codeLen = code >> 16; + const codeVal = code & 0xffff; + + if (codeLen < 1 || codeSize < codeLen) { + throw new _util.FormatError("Bad encoding in flate stream"); + } + + this.codeBuf = codeBuf >> codeLen; + this.codeSize = codeSize - codeLen; + return codeVal; + } + + generateHuffmanTable(lengths) { + const n = lengths.length; + let maxLen = 0; + let i; + + for (i = 0; i < n; ++i) { + if (lengths[i] > maxLen) { + maxLen = lengths[i]; + } + } + + const size = 1 << maxLen; + const codes = new Int32Array(size); + + for (let len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) { + for (let val = 0; val < n; ++val) { + if (lengths[val] === len) { + let code2 = 0; + let t = code; + + for (i = 0; i < len; ++i) { + code2 = code2 << 1 | t & 1; + t >>= 1; + } + + for (i = code2; i < size; i += skip) { + codes[i] = len << 16 | val; + } + + ++code; + } + } + } + + return [codes, maxLen]; + } + + readBlock() { + let buffer, len; + const str = this.str; + let hdr = this.getBits(3); + + if (hdr & 1) { + this.eof = true; + } + + hdr >>= 1; + + if (hdr === 0) { + let b; + + if ((b = str.getByte()) === -1) { + throw new _util.FormatError("Bad block header in flate stream"); + } + + let blockLen = b; + + if ((b = str.getByte()) === -1) { + throw new _util.FormatError("Bad block header in flate stream"); + } + + blockLen |= b << 8; + + if ((b = str.getByte()) === -1) { + throw new _util.FormatError("Bad block header in flate stream"); + } + + let check = b; + + if ((b = str.getByte()) === -1) { + throw new _util.FormatError("Bad block header in flate stream"); + } + + check |= b << 8; + + if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) { + throw new _util.FormatError("Bad uncompressed block length in flate stream"); + } + + this.codeBuf = 0; + this.codeSize = 0; + const bufferLength = this.bufferLength, + end = bufferLength + blockLen; + buffer = this.ensureBuffer(end); + this.bufferLength = end; + + if (blockLen === 0) { + if (str.peekByte() === -1) { + this.eof = true; + } + } else { + const block = str.getBytes(blockLen); + buffer.set(block, bufferLength); + + if (block.length < blockLen) { + this.eof = true; + } + } + + return; + } + + let litCodeTable; + let distCodeTable; + + if (hdr === 1) { + litCodeTable = fixedLitCodeTab; + distCodeTable = fixedDistCodeTab; + } else if (hdr === 2) { + const numLitCodes = this.getBits(5) + 257; + const numDistCodes = this.getBits(5) + 1; + const numCodeLenCodes = this.getBits(4) + 4; + const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length); + let i; + + for (i = 0; i < numCodeLenCodes; ++i) { + codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3); + } + + const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths); + len = 0; + i = 0; + const codes = numLitCodes + numDistCodes; + const codeLengths = new Uint8Array(codes); + let bitsLength, bitsOffset, what; + + while (i < codes) { + const code = this.getCode(codeLenCodeTab); + + if (code === 16) { + bitsLength = 2; + bitsOffset = 3; + what = len; + } else if (code === 17) { + bitsLength = 3; + bitsOffset = 3; + what = len = 0; + } else if (code === 18) { + bitsLength = 7; + bitsOffset = 11; + what = len = 0; + } else { + codeLengths[i++] = len = code; + continue; + } + + let repeatLength = this.getBits(bitsLength) + bitsOffset; + + while (repeatLength-- > 0) { + codeLengths[i++] = what; + } + } + + litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes)); + distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes)); + } else { + throw new _util.FormatError("Unknown block type in flate stream"); + } + + buffer = this.buffer; + let limit = buffer ? buffer.length : 0; + let pos = this.bufferLength; + + while (true) { + let code1 = this.getCode(litCodeTable); + + if (code1 < 256) { + if (pos + 1 >= limit) { + buffer = this.ensureBuffer(pos + 1); + limit = buffer.length; + } + + buffer[pos++] = code1; + continue; + } + + if (code1 === 256) { + this.bufferLength = pos; + return; + } + + code1 -= 257; + code1 = lengthDecode[code1]; + let code2 = code1 >> 16; + + if (code2 > 0) { + code2 = this.getBits(code2); + } + + len = (code1 & 0xffff) + code2; + code1 = this.getCode(distCodeTable); + code1 = distDecode[code1]; + code2 = code1 >> 16; + + if (code2 > 0) { + code2 = this.getBits(code2); + } + + const dist = (code1 & 0xffff) + code2; + + if (pos + len >= limit) { + buffer = this.ensureBuffer(pos + len); + limit = buffer.length; + } + + for (let k = 0; k < len; ++k, ++pos) { + buffer[pos] = buffer[pos - dist]; + } + } + } + +} + +exports.FlateStream = FlateStream; + +/***/ }), +/* 149 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Jbig2Stream = void 0; + +var _base_stream = __w_pdfjs_require__(132); + +var _decode_stream = __w_pdfjs_require__(144); + +var _primitives = __w_pdfjs_require__(130); + +var _jbig = __w_pdfjs_require__(150); + +var _util = __w_pdfjs_require__(2); + +class Jbig2Stream extends _decode_stream.DecodeStream { + constructor(stream, maybeLength, params) { + super(maybeLength); + this.stream = stream; + this.dict = stream.dict; + this.maybeLength = maybeLength; + this.params = params; + } + + get bytes() { + return (0, _util.shadow)(this, "bytes", this.stream.getBytes(this.maybeLength)); + } + + ensureBuffer(requested) {} + + readBlock() { if (this.eof) { return; } - var jbig2Image = new _jbig.Jbig2Image(); - var chunks = []; + const jbig2Image = new _jbig.Jbig2Image(); + const chunks = []; - if ((0, _primitives.isDict)(this.params)) { - var globalsStream = this.params.get('JBIG2Globals'); + if (this.params instanceof _primitives.Dict) { + const globalsStream = this.params.get("JBIG2Globals"); - if ((0, _primitives.isStream)(globalsStream)) { - var globals = globalsStream.getBytes(); + if (globalsStream instanceof _base_stream.BaseStream) { + const globals = globalsStream.getBytes(); chunks.push({ data: globals, start: 0, @@ -19211,135 +21695,289 @@ var Jbig2Stream = function Jbig2StreamClosure() { start: 0, end: this.bytes.length }); - var data = jbig2Image.parseChunks(chunks); - var dataLength = data.length; + const data = jbig2Image.parseChunks(chunks); + const dataLength = data.length; - for (var i = 0; i < dataLength; i++) { - data[i] ^= 0xFF; + for (let i = 0; i < dataLength; i++) { + data[i] ^= 0xff; } this.buffer = data; this.bufferLength = dataLength; this.eof = true; - }; + } - return Jbig2Stream; -}(); +} exports.Jbig2Stream = Jbig2Stream; /***/ }), -/* 162 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 150 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.Jbig2Image = void 0; -var _util = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(2); -var _arithmetic_decoder = __w_pdfjs_require__(163); +var _core_utils = __w_pdfjs_require__(131); -var _ccitt = __w_pdfjs_require__(160); +var _arithmetic_decoder = __w_pdfjs_require__(151); -var Jbig2Error = function Jbig2ErrorClosure() { - function Jbig2Error(msg) { - this.message = 'JBIG2 error: ' + msg; +var _ccitt = __w_pdfjs_require__(147); + +class Jbig2Error extends _util.BaseException { + constructor(msg) { + super(`JBIG2 error: ${msg}`, "Jbig2Error"); } - Jbig2Error.prototype = new Error(); - Jbig2Error.prototype.name = 'Jbig2Error'; - Jbig2Error.constructor = Jbig2Error; - return Jbig2Error; -}(); +} -var Jbig2Image = function Jbig2ImageClosure() { - function ContextCache() {} - - ContextCache.prototype = { - getContexts: function getContexts(id) { - if (id in this) { - return this[id]; - } - - return this[id] = new Int8Array(1 << 16); +class ContextCache { + getContexts(id) { + if (id in this) { + return this[id]; } - }; - function DecodingContext(data, start, end) { + return this[id] = new Int8Array(1 << 16); + } + +} + +class DecodingContext { + constructor(data, start, end) { this.data = data; this.start = start; this.end = end; } - DecodingContext.prototype = { - get decoder() { - var decoder = new _arithmetic_decoder.ArithmeticDecoder(this.data, this.start, this.end); - return (0, _util.shadow)(this, 'decoder', decoder); - }, - - get contextCache() { - var cache = new ContextCache(); - return (0, _util.shadow)(this, 'contextCache', cache); - } - - }; - - function decodeInteger(contextCache, procedure, decoder) { - var contexts = contextCache.getContexts(procedure); - var prev = 1; - - function readBits(length) { - var v = 0; - - for (var i = 0; i < length; i++) { - var bit = decoder.readBit(contexts, prev); - prev = prev < 256 ? prev << 1 | bit : (prev << 1 | bit) & 511 | 256; - v = v << 1 | bit; - } - - return v >>> 0; - } - - var sign = readBits(1); - var value = readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(32) + 4436 : readBits(12) + 340 : readBits(8) + 84 : readBits(6) + 20 : readBits(4) + 4 : readBits(2); - return sign === 0 ? value : value > 0 ? -value : null; + get decoder() { + const decoder = new _arithmetic_decoder.ArithmeticDecoder(this.data, this.start, this.end); + return (0, _util.shadow)(this, "decoder", decoder); } - function decodeIAID(contextCache, decoder, codeLength) { - var contexts = contextCache.getContexts('IAID'); - var prev = 1; - - for (var i = 0; i < codeLength; i++) { - var bit = decoder.readBit(contexts, prev); - prev = prev << 1 | bit; - } - - if (codeLength < 31) { - return prev & (1 << codeLength) - 1; - } - - return prev & 0x7FFFFFFF; + get contextCache() { + const cache = new ContextCache(); + return (0, _util.shadow)(this, "contextCache", cache); } - var SegmentTypes = ['SymbolDictionary', null, null, null, 'IntermediateTextRegion', null, 'ImmediateTextRegion', 'ImmediateLosslessTextRegion', null, null, null, null, null, null, null, null, 'PatternDictionary', null, null, null, 'IntermediateHalftoneRegion', null, 'ImmediateHalftoneRegion', 'ImmediateLosslessHalftoneRegion', null, null, null, null, null, null, null, null, null, null, null, null, 'IntermediateGenericRegion', null, 'ImmediateGenericRegion', 'ImmediateLosslessGenericRegion', 'IntermediateGenericRefinementRegion', null, 'ImmediateGenericRefinementRegion', 'ImmediateLosslessGenericRefinementRegion', null, null, null, null, 'PageInformation', 'EndOfPage', 'EndOfStripe', 'EndOfFile', 'Profiles', 'Tables', null, null, null, null, null, null, null, null, 'Extension']; - var CodingTemplates = [[{ - x: -1, - y: -2 - }, { +} + +function decodeInteger(contextCache, procedure, decoder) { + const contexts = contextCache.getContexts(procedure); + let prev = 1; + + function readBits(length) { + let v = 0; + + for (let i = 0; i < length; i++) { + const bit = decoder.readBit(contexts, prev); + prev = prev < 256 ? prev << 1 | bit : (prev << 1 | bit) & 511 | 256; + v = v << 1 | bit; + } + + return v >>> 0; + } + + const sign = readBits(1); + const value = readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(32) + 4436 : readBits(12) + 340 : readBits(8) + 84 : readBits(6) + 20 : readBits(4) + 4 : readBits(2); + + if (sign === 0) { + return value; + } else if (value > 0) { + return -value; + } + + return null; +} + +function decodeIAID(contextCache, decoder, codeLength) { + const contexts = contextCache.getContexts("IAID"); + let prev = 1; + + for (let i = 0; i < codeLength; i++) { + const bit = decoder.readBit(contexts, prev); + prev = prev << 1 | bit; + } + + if (codeLength < 31) { + return prev & (1 << codeLength) - 1; + } + + return prev & 0x7fffffff; +} + +const SegmentTypes = ["SymbolDictionary", null, null, null, "IntermediateTextRegion", null, "ImmediateTextRegion", "ImmediateLosslessTextRegion", null, null, null, null, null, null, null, null, "PatternDictionary", null, null, null, "IntermediateHalftoneRegion", null, "ImmediateHalftoneRegion", "ImmediateLosslessHalftoneRegion", null, null, null, null, null, null, null, null, null, null, null, null, "IntermediateGenericRegion", null, "ImmediateGenericRegion", "ImmediateLosslessGenericRegion", "IntermediateGenericRefinementRegion", null, "ImmediateGenericRefinementRegion", "ImmediateLosslessGenericRefinementRegion", null, null, null, null, "PageInformation", "EndOfPage", "EndOfStripe", "EndOfFile", "Profiles", "Tables", null, null, null, null, null, null, null, null, "Extension"]; +const CodingTemplates = [[{ + x: -1, + y: -2 +}, { + x: 0, + y: -2 +}, { + x: 1, + y: -2 +}, { + x: -2, + y: -1 +}, { + x: -1, + y: -1 +}, { + x: 0, + y: -1 +}, { + x: 1, + y: -1 +}, { + x: 2, + y: -1 +}, { + x: -4, + y: 0 +}, { + x: -3, + y: 0 +}, { + x: -2, + y: 0 +}, { + x: -1, + y: 0 +}], [{ + x: -1, + y: -2 +}, { + x: 0, + y: -2 +}, { + x: 1, + y: -2 +}, { + x: 2, + y: -2 +}, { + x: -2, + y: -1 +}, { + x: -1, + y: -1 +}, { + x: 0, + y: -1 +}, { + x: 1, + y: -1 +}, { + x: 2, + y: -1 +}, { + x: -3, + y: 0 +}, { + x: -2, + y: 0 +}, { + x: -1, + y: 0 +}], [{ + x: -1, + y: -2 +}, { + x: 0, + y: -2 +}, { + x: 1, + y: -2 +}, { + x: -2, + y: -1 +}, { + x: -1, + y: -1 +}, { + x: 0, + y: -1 +}, { + x: 1, + y: -1 +}, { + x: -2, + y: 0 +}, { + x: -1, + y: 0 +}], [{ + x: -3, + y: -1 +}, { + x: -2, + y: -1 +}, { + x: -1, + y: -1 +}, { + x: 0, + y: -1 +}, { + x: 1, + y: -1 +}, { + x: -4, + y: 0 +}, { + x: -3, + y: 0 +}, { + x: -2, + y: 0 +}, { + x: -1, + y: 0 +}]]; +const RefinementTemplates = [{ + coding: [{ x: 0, - y: -2 - }, { - x: 1, - y: -2 - }, { - x: -2, y: -1 }, { + x: 1, + y: -1 + }, { + x: -1, + y: 0 + }], + reference: [{ + x: 0, + y: -1 + }, { + x: 1, + y: -1 + }, { + x: -1, + y: 0 + }, { + x: 0, + y: 0 + }, { + x: 1, + y: 0 + }, { + x: -1, + y: 1 + }, { + x: 0, + y: 1 + }, { + x: 1, + y: 1 + }] +}, { + coding: [{ x: -1, y: -1 }, { @@ -19348,1492 +21986,1301 @@ var Jbig2Image = function Jbig2ImageClosure() { }, { x: 1, y: -1 - }, { - x: 2, - y: -1 - }, { - x: -4, - y: 0 - }, { - x: -3, - y: 0 - }, { - x: -2, - y: 0 }, { x: -1, y: 0 - }], [{ - x: -1, - y: -2 - }, { - x: 0, - y: -2 - }, { - x: 1, - y: -2 - }, { - x: 2, - y: -2 - }, { - x: -2, - y: -1 - }, { - x: -1, - y: -1 - }, { + }], + reference: [{ x: 0, y: -1 - }, { - x: 1, - y: -1 - }, { - x: 2, - y: -1 - }, { - x: -3, - y: 0 - }, { - x: -2, - y: 0 }, { x: -1, y: 0 - }], [{ - x: -1, - y: -2 }, { x: 0, - y: -2 + y: 0 }, { x: 1, - y: -2 - }, { - x: -2, - y: -1 - }, { - x: -1, - y: -1 + y: 0 }, { x: 0, - y: -1 + y: 1 }, { x: 1, - y: -1 - }, { - x: -2, - y: 0 - }, { - x: -1, - y: 0 - }], [{ - x: -3, - y: -1 - }, { - x: -2, - y: -1 - }, { - x: -1, - y: -1 - }, { - x: 0, - y: -1 - }, { - x: 1, - y: -1 - }, { - x: -4, - y: 0 - }, { - x: -3, - y: 0 - }, { - x: -2, - y: 0 - }, { - x: -1, - y: 0 - }]]; - var RefinementTemplates = [{ - coding: [{ - x: 0, - y: -1 - }, { - x: 1, - y: -1 - }, { - x: -1, - y: 0 - }], - reference: [{ - x: 0, - y: -1 - }, { - x: 1, - y: -1 - }, { - x: -1, - y: 0 - }, { - x: 0, - y: 0 - }, { - x: 1, - y: 0 - }, { - x: -1, - y: 1 - }, { - x: 0, - y: 1 - }, { - x: 1, - y: 1 - }] - }, { - coding: [{ - x: -1, - y: -1 - }, { - x: 0, - y: -1 - }, { - x: 1, - y: -1 - }, { - x: -1, - y: 0 - }], - reference: [{ - x: 0, - y: -1 - }, { - x: -1, - y: 0 - }, { - x: 0, - y: 0 - }, { - x: 1, - y: 0 - }, { - x: 0, - y: 1 - }, { - x: 1, - y: 1 - }] - }]; - var ReusedContexts = [0x9B25, 0x0795, 0x00E5, 0x0195]; - var RefinementReusedContexts = [0x0020, 0x0008]; + y: 1 + }] +}]; +const ReusedContexts = [0x9b25, 0x0795, 0x00e5, 0x0195]; +const RefinementReusedContexts = [0x0020, 0x0008]; - function decodeBitmapTemplate0(width, height, decodingContext) { - var decoder = decodingContext.decoder; - var contexts = decodingContext.contextCache.getContexts('GB'); - var contextLabel, - i, - j, - pixel, - row, - row1, - row2, - bitmap = []; - var OLD_PIXEL_MASK = 0x7BF7; +function decodeBitmapTemplate0(width, height, decodingContext) { + const decoder = decodingContext.decoder; + const contexts = decodingContext.contextCache.getContexts("GB"); + const bitmap = []; + let contextLabel, i, j, pixel, row, row1, row2; + const OLD_PIXEL_MASK = 0x7bf7; - for (i = 0; i < height; i++) { - row = bitmap[i] = new Uint8Array(width); - row1 = i < 1 ? row : bitmap[i - 1]; - row2 = i < 2 ? row : bitmap[i - 2]; - contextLabel = row2[0] << 13 | row2[1] << 12 | row2[2] << 11 | row1[0] << 7 | row1[1] << 6 | row1[2] << 5 | row1[3] << 4; + for (i = 0; i < height; i++) { + row = bitmap[i] = new Uint8Array(width); + row1 = i < 1 ? row : bitmap[i - 1]; + row2 = i < 2 ? row : bitmap[i - 2]; + contextLabel = row2[0] << 13 | row2[1] << 12 | row2[2] << 11 | row1[0] << 7 | row1[1] << 6 | row1[2] << 5 | row1[3] << 4; - for (j = 0; j < width; j++) { - row[j] = pixel = decoder.readBit(contexts, contextLabel); - contextLabel = (contextLabel & OLD_PIXEL_MASK) << 1 | (j + 3 < width ? row2[j + 3] << 11 : 0) | (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel; - } + for (j = 0; j < width; j++) { + row[j] = pixel = decoder.readBit(contexts, contextLabel); + contextLabel = (contextLabel & OLD_PIXEL_MASK) << 1 | (j + 3 < width ? row2[j + 3] << 11 : 0) | (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel; } - - return bitmap; } - function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, decodingContext) { - if (mmr) { - var input = new Reader(decodingContext.data, decodingContext.start, decodingContext.end); - return decodeMMRBitmap(input, width, height, false); - } + return bitmap; +} - if (templateIndex === 0 && !skip && !prediction && at.length === 4 && at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 && at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) { - return decodeBitmapTemplate0(width, height, decodingContext); - } - - var useskip = !!skip; - var template = CodingTemplates[templateIndex].concat(at); - template.sort(function (a, b) { - return a.y - b.y || a.x - b.x; - }); - var templateLength = template.length; - var templateX = new Int8Array(templateLength); - var templateY = new Int8Array(templateLength); - var changingTemplateEntries = []; - var reuseMask = 0, - minX = 0, - maxX = 0, - minY = 0; - var c, k; - - for (k = 0; k < templateLength; k++) { - templateX[k] = template[k].x; - templateY[k] = template[k].y; - minX = Math.min(minX, template[k].x); - maxX = Math.max(maxX, template[k].x); - minY = Math.min(minY, template[k].y); - - if (k < templateLength - 1 && template[k].y === template[k + 1].y && template[k].x === template[k + 1].x - 1) { - reuseMask |= 1 << templateLength - 1 - k; - } else { - changingTemplateEntries.push(k); - } - } - - var changingEntriesLength = changingTemplateEntries.length; - var changingTemplateX = new Int8Array(changingEntriesLength); - var changingTemplateY = new Int8Array(changingEntriesLength); - var changingTemplateBit = new Uint16Array(changingEntriesLength); - - for (c = 0; c < changingEntriesLength; c++) { - k = changingTemplateEntries[c]; - changingTemplateX[c] = template[k].x; - changingTemplateY[c] = template[k].y; - changingTemplateBit[c] = 1 << templateLength - 1 - k; - } - - var sbb_left = -minX; - var sbb_top = -minY; - var sbb_right = width - maxX; - var pseudoPixelContext = ReusedContexts[templateIndex]; - var row = new Uint8Array(width); - var bitmap = []; - var decoder = decodingContext.decoder; - var contexts = decodingContext.contextCache.getContexts('GB'); - var ltp = 0, - j, - i0, - j0, - contextLabel = 0, - bit, - shift; - - for (var i = 0; i < height; i++) { - if (prediction) { - var sltp = decoder.readBit(contexts, pseudoPixelContext); - ltp ^= sltp; - - if (ltp) { - bitmap.push(row); - continue; - } - } - - row = new Uint8Array(row); - bitmap.push(row); - - for (j = 0; j < width; j++) { - if (useskip && skip[i][j]) { - row[j] = 0; - continue; - } - - if (j >= sbb_left && j < sbb_right && i >= sbb_top) { - contextLabel = contextLabel << 1 & reuseMask; - - for (k = 0; k < changingEntriesLength; k++) { - i0 = i + changingTemplateY[k]; - j0 = j + changingTemplateX[k]; - bit = bitmap[i0][j0]; - - if (bit) { - bit = changingTemplateBit[k]; - contextLabel |= bit; - } - } - } else { - contextLabel = 0; - shift = templateLength - 1; - - for (k = 0; k < templateLength; k++, shift--) { - j0 = j + templateX[k]; - - if (j0 >= 0 && j0 < width) { - i0 = i + templateY[k]; - - if (i0 >= 0) { - bit = bitmap[i0][j0]; - - if (bit) { - contextLabel |= bit << shift; - } - } - } - } - } - - var pixel = decoder.readBit(contexts, contextLabel); - row[j] = pixel; - } - } - - return bitmap; +function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, decodingContext) { + if (mmr) { + const input = new Reader(decodingContext.data, decodingContext.start, decodingContext.end); + return decodeMMRBitmap(input, width, height, false); } - function decodeRefinement(width, height, templateIndex, referenceBitmap, offsetX, offsetY, prediction, at, decodingContext) { - var codingTemplate = RefinementTemplates[templateIndex].coding; - - if (templateIndex === 0) { - codingTemplate = codingTemplate.concat([at[0]]); - } - - var codingTemplateLength = codingTemplate.length; - var codingTemplateX = new Int32Array(codingTemplateLength); - var codingTemplateY = new Int32Array(codingTemplateLength); - var k; - - for (k = 0; k < codingTemplateLength; k++) { - codingTemplateX[k] = codingTemplate[k].x; - codingTemplateY[k] = codingTemplate[k].y; - } - - var referenceTemplate = RefinementTemplates[templateIndex].reference; - - if (templateIndex === 0) { - referenceTemplate = referenceTemplate.concat([at[1]]); - } - - var referenceTemplateLength = referenceTemplate.length; - var referenceTemplateX = new Int32Array(referenceTemplateLength); - var referenceTemplateY = new Int32Array(referenceTemplateLength); - - for (k = 0; k < referenceTemplateLength; k++) { - referenceTemplateX[k] = referenceTemplate[k].x; - referenceTemplateY[k] = referenceTemplate[k].y; - } - - var referenceWidth = referenceBitmap[0].length; - var referenceHeight = referenceBitmap.length; - var pseudoPixelContext = RefinementReusedContexts[templateIndex]; - var bitmap = []; - var decoder = decodingContext.decoder; - var contexts = decodingContext.contextCache.getContexts('GR'); - var ltp = 0; - - for (var i = 0; i < height; i++) { - if (prediction) { - var sltp = decoder.readBit(contexts, pseudoPixelContext); - ltp ^= sltp; - - if (ltp) { - throw new Jbig2Error('prediction is not supported'); - } - } - - var row = new Uint8Array(width); - bitmap.push(row); - - for (var j = 0; j < width; j++) { - var i0, j0; - var contextLabel = 0; - - for (k = 0; k < codingTemplateLength; k++) { - i0 = i + codingTemplateY[k]; - j0 = j + codingTemplateX[k]; - - if (i0 < 0 || j0 < 0 || j0 >= width) { - contextLabel <<= 1; - } else { - contextLabel = contextLabel << 1 | bitmap[i0][j0]; - } - } - - for (k = 0; k < referenceTemplateLength; k++) { - i0 = i + referenceTemplateY[k] - offsetY; - j0 = j + referenceTemplateX[k] - offsetX; - - if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) { - contextLabel <<= 1; - } else { - contextLabel = contextLabel << 1 | referenceBitmap[i0][j0]; - } - } - - var pixel = decoder.readBit(contexts, contextLabel); - row[j] = pixel; - } - } - - return bitmap; + if (templateIndex === 0 && !skip && !prediction && at.length === 4 && at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 && at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) { + return decodeBitmapTemplate0(width, height, decodingContext); } - function decodeSymbolDictionary(huffman, refinement, symbols, numberOfNewSymbols, numberOfExportedSymbols, huffmanTables, templateIndex, at, refinementTemplateIndex, refinementAt, decodingContext, huffmanInput) { - if (huffman && refinement) { - throw new Jbig2Error('symbol refinement with Huffman is not supported'); - } - - var newSymbols = []; - var currentHeight = 0; - var symbolCodeLength = (0, _util.log2)(symbols.length + numberOfNewSymbols); - var decoder = decodingContext.decoder; - var contextCache = decodingContext.contextCache; - var tableB1, symbolWidths; - - if (huffman) { - tableB1 = getStandardTable(1); - symbolWidths = []; - symbolCodeLength = Math.max(symbolCodeLength, 1); - } - - while (newSymbols.length < numberOfNewSymbols) { - var deltaHeight = huffman ? huffmanTables.tableDeltaHeight.decode(huffmanInput) : decodeInteger(contextCache, 'IADH', decoder); - currentHeight += deltaHeight; - var currentWidth = 0, - totalWidth = 0; - var firstSymbol = huffman ? symbolWidths.length : 0; - - while (true) { - var deltaWidth = huffman ? huffmanTables.tableDeltaWidth.decode(huffmanInput) : decodeInteger(contextCache, 'IADW', decoder); - - if (deltaWidth === null) { - break; - } - - currentWidth += deltaWidth; - totalWidth += currentWidth; - var bitmap; - - if (refinement) { - var numberOfInstances = decodeInteger(contextCache, 'IAAI', decoder); - - if (numberOfInstances > 1) { - bitmap = decodeTextRegion(huffman, refinement, currentWidth, currentHeight, 0, numberOfInstances, 1, symbols.concat(newSymbols), symbolCodeLength, 0, 0, 1, 0, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, 0, huffmanInput); - } else { - var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength); - var rdx = decodeInteger(contextCache, 'IARDX', decoder); - var rdy = decodeInteger(contextCache, 'IARDY', decoder); - var symbol = symbolId < symbols.length ? symbols[symbolId] : newSymbols[symbolId - symbols.length]; - bitmap = decodeRefinement(currentWidth, currentHeight, refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, decodingContext); - } - - newSymbols.push(bitmap); - } else if (huffman) { - symbolWidths.push(currentWidth); - } else { - bitmap = decodeBitmap(false, currentWidth, currentHeight, templateIndex, false, null, at, decodingContext); - newSymbols.push(bitmap); - } - } - - if (huffman && !refinement) { - var bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput); - huffmanInput.byteAlign(); - var collectiveBitmap = void 0; - - if (bitmapSize === 0) { - collectiveBitmap = readUncompressedBitmap(huffmanInput, totalWidth, currentHeight); - } else { - var originalEnd = huffmanInput.end; - var bitmapEnd = huffmanInput.position + bitmapSize; - huffmanInput.end = bitmapEnd; - collectiveBitmap = decodeMMRBitmap(huffmanInput, totalWidth, currentHeight, false); - huffmanInput.end = originalEnd; - huffmanInput.position = bitmapEnd; - } - - var numberOfSymbolsDecoded = symbolWidths.length; - - if (firstSymbol === numberOfSymbolsDecoded - 1) { - newSymbols.push(collectiveBitmap); - } else { - var _i = void 0, - y = void 0, - xMin = 0, - xMax = void 0, - bitmapWidth = void 0, - symbolBitmap = void 0; - - for (_i = firstSymbol; _i < numberOfSymbolsDecoded; _i++) { - bitmapWidth = symbolWidths[_i]; - xMax = xMin + bitmapWidth; - symbolBitmap = []; - - for (y = 0; y < currentHeight; y++) { - symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax)); - } - - newSymbols.push(symbolBitmap); - xMin = xMax; - } - } - } - } - - var exportedSymbols = []; - var flags = [], - currentFlag = false; - var totalSymbolsLength = symbols.length + numberOfNewSymbols; - - while (flags.length < totalSymbolsLength) { - var runLength = huffman ? tableB1.decode(huffmanInput) : decodeInteger(contextCache, 'IAEX', decoder); - - while (runLength--) { - flags.push(currentFlag); - } - - currentFlag = !currentFlag; - } - - for (var i = 0, ii = symbols.length; i < ii; i++) { - if (flags[i]) { - exportedSymbols.push(symbols[i]); - } - } - - for (var j = 0; j < numberOfNewSymbols; i++, j++) { - if (flags[i]) { - exportedSymbols.push(newSymbols[j]); - } - } - - return exportedSymbols; - } - - function decodeTextRegion(huffman, refinement, width, height, defaultPixelValue, numberOfSymbolInstances, stripSize, inputSymbols, symbolCodeLength, transposed, dsOffset, referenceCorner, combinationOperator, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, logStripSize, huffmanInput) { - if (huffman && refinement) { - throw new Jbig2Error('refinement with Huffman is not supported'); - } - - var bitmap = []; - var i, row; - - for (i = 0; i < height; i++) { - row = new Uint8Array(width); - - if (defaultPixelValue) { - for (var j = 0; j < width; j++) { - row[j] = defaultPixelValue; - } - } - - bitmap.push(row); - } - - var decoder = decodingContext.decoder; - var contextCache = decodingContext.contextCache; - var stripT = huffman ? -huffmanTables.tableDeltaT.decode(huffmanInput) : -decodeInteger(contextCache, 'IADT', decoder); - var firstS = 0; - i = 0; - - while (i < numberOfSymbolInstances) { - var deltaT = huffman ? huffmanTables.tableDeltaT.decode(huffmanInput) : decodeInteger(contextCache, 'IADT', decoder); - stripT += deltaT; - var deltaFirstS = huffman ? huffmanTables.tableFirstS.decode(huffmanInput) : decodeInteger(contextCache, 'IAFS', decoder); - firstS += deltaFirstS; - var currentS = firstS; - - do { - var currentT = 0; - - if (stripSize > 1) { - currentT = huffman ? huffmanInput.readBits(logStripSize) : decodeInteger(contextCache, 'IAIT', decoder); - } - - var t = stripSize * stripT + currentT; - var symbolId = huffman ? huffmanTables.symbolIDTable.decode(huffmanInput) : decodeIAID(contextCache, decoder, symbolCodeLength); - var applyRefinement = refinement && (huffman ? huffmanInput.readBit() : decodeInteger(contextCache, 'IARI', decoder)); - var symbolBitmap = inputSymbols[symbolId]; - var symbolWidth = symbolBitmap[0].length; - var symbolHeight = symbolBitmap.length; - - if (applyRefinement) { - var rdw = decodeInteger(contextCache, 'IARDW', decoder); - var rdh = decodeInteger(contextCache, 'IARDH', decoder); - var rdx = decodeInteger(contextCache, 'IARDX', decoder); - var rdy = decodeInteger(contextCache, 'IARDY', decoder); - symbolWidth += rdw; - symbolHeight += rdh; - symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx, (rdh >> 1) + rdy, false, refinementAt, decodingContext); - } - - var offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1); - var offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0); - var s2, t2, symbolRow; - - if (transposed) { - for (s2 = 0; s2 < symbolHeight; s2++) { - row = bitmap[offsetS + s2]; - - if (!row) { - continue; - } - - symbolRow = symbolBitmap[s2]; - var maxWidth = Math.min(width - offsetT, symbolWidth); - - switch (combinationOperator) { - case 0: - for (t2 = 0; t2 < maxWidth; t2++) { - row[offsetT + t2] |= symbolRow[t2]; - } - - break; - - case 2: - for (t2 = 0; t2 < maxWidth; t2++) { - row[offsetT + t2] ^= symbolRow[t2]; - } - - break; - - default: - throw new Jbig2Error("operator ".concat(combinationOperator, " is not supported")); - } - } - - currentS += symbolHeight - 1; - } else { - for (t2 = 0; t2 < symbolHeight; t2++) { - row = bitmap[offsetT + t2]; - - if (!row) { - continue; - } - - symbolRow = symbolBitmap[t2]; - - switch (combinationOperator) { - case 0: - for (s2 = 0; s2 < symbolWidth; s2++) { - row[offsetS + s2] |= symbolRow[s2]; - } - - break; - - case 2: - for (s2 = 0; s2 < symbolWidth; s2++) { - row[offsetS + s2] ^= symbolRow[s2]; - } - - break; - - default: - throw new Jbig2Error("operator ".concat(combinationOperator, " is not supported")); - } - } - - currentS += symbolWidth - 1; - } - - i++; - var deltaS = huffman ? huffmanTables.tableDeltaS.decode(huffmanInput) : decodeInteger(contextCache, 'IADS', decoder); - - if (deltaS === null) { - break; - } - - currentS += deltaS + dsOffset; - } while (true); - } - - return bitmap; - } - - function decodePatternDictionary(mmr, patternWidth, patternHeight, maxPatternIndex, template, decodingContext) { - var at = []; - - if (!mmr) { - at.push({ - x: -patternWidth, - y: 0 - }); - - if (template === 0) { - at.push({ - x: -3, - y: -1 - }); - at.push({ - x: 2, - y: -2 - }); - at.push({ - x: -2, - y: -2 - }); - } - } - - var collectiveWidth = (maxPatternIndex + 1) * patternWidth; - var collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight, template, false, null, at, decodingContext); - var patterns = [], - i = 0, - patternBitmap, - xMin, - xMax, - y; - - while (i <= maxPatternIndex) { - patternBitmap = []; - xMin = patternWidth * i; - xMax = xMin + patternWidth; - - for (y = 0; y < patternHeight; y++) { - patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax)); - } - - patterns.push(patternBitmap); - i++; - } - - return patterns; - } - - function decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight, defaultPixelValue, enableSkip, combinationOperator, gridWidth, gridHeight, gridOffsetX, gridOffsetY, gridVectorX, gridVectorY, decodingContext) { - var skip = null; - - if (enableSkip) { - throw new Jbig2Error('skip is not supported'); - } - - if (combinationOperator !== 0) { - throw new Jbig2Error('operator ' + combinationOperator + ' is not supported in halftone region'); - } - - var regionBitmap = []; - var i, j, row; - - for (i = 0; i < regionHeight; i++) { - row = new Uint8Array(regionWidth); - - if (defaultPixelValue) { - for (j = 0; j < regionWidth; j++) { - row[j] = defaultPixelValue; - } - } - - regionBitmap.push(row); - } - - var numberOfPatterns = patterns.length; - var pattern0 = patterns[0]; - var patternWidth = pattern0[0].length, - patternHeight = pattern0.length; - var bitsPerValue = (0, _util.log2)(numberOfPatterns); - var at = []; - - if (!mmr) { - at.push({ - x: template <= 1 ? 3 : 2, - y: -1 - }); - - if (template === 0) { - at.push({ - x: -3, - y: -1 - }); - at.push({ - x: 2, - y: -2 - }); - at.push({ - x: -2, - y: -2 - }); - } - } - - var grayScaleBitPlanes = [], - mmrInput, - bitmap; - - if (mmr) { - mmrInput = new Reader(decodingContext.data, decodingContext.start, decodingContext.end); - } - - for (i = bitsPerValue - 1; i >= 0; i--) { - if (mmr) { - bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true); - } else { - bitmap = decodeBitmap(false, gridWidth, gridHeight, template, false, skip, at, decodingContext); - } - - grayScaleBitPlanes[i] = bitmap; - } - - var mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow; - - for (mg = 0; mg < gridHeight; mg++) { - for (ng = 0; ng < gridWidth; ng++) { - bit = 0; - patternIndex = 0; - - for (j = bitsPerValue - 1; j >= 0; j--) { - bit = grayScaleBitPlanes[j][mg][ng] ^ bit; - patternIndex |= bit << j; - } - - patternBitmap = patterns[patternIndex]; - x = gridOffsetX + mg * gridVectorY + ng * gridVectorX >> 8; - y = gridOffsetY + mg * gridVectorX - ng * gridVectorY >> 8; - - if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 && y + patternHeight <= regionHeight) { - for (i = 0; i < patternHeight; i++) { - regionRow = regionBitmap[y + i]; - patternRow = patternBitmap[i]; - - for (j = 0; j < patternWidth; j++) { - regionRow[x + j] |= patternRow[j]; - } - } - } else { - var regionX = void 0, - regionY = void 0; - - for (i = 0; i < patternHeight; i++) { - regionY = y + i; - - if (regionY < 0 || regionY >= regionHeight) { - continue; - } - - regionRow = regionBitmap[regionY]; - patternRow = patternBitmap[i]; - - for (j = 0; j < patternWidth; j++) { - regionX = x + j; - - if (regionX >= 0 && regionX < regionWidth) { - regionRow[regionX] |= patternRow[j]; - } - } - } - } - } - } - - return regionBitmap; - } - - function readSegmentHeader(data, start) { - var segmentHeader = {}; - segmentHeader.number = (0, _util.readUint32)(data, start); - var flags = data[start + 4]; - var segmentType = flags & 0x3F; - - if (!SegmentTypes[segmentType]) { - throw new Jbig2Error('invalid segment type: ' + segmentType); - } - - segmentHeader.type = segmentType; - segmentHeader.typeName = SegmentTypes[segmentType]; - segmentHeader.deferredNonRetain = !!(flags & 0x80); - var pageAssociationFieldSize = !!(flags & 0x40); - var referredFlags = data[start + 5]; - var referredToCount = referredFlags >> 5 & 7; - var retainBits = [referredFlags & 31]; - var position = start + 6; - - if (referredFlags === 7) { - referredToCount = (0, _util.readUint32)(data, position - 1) & 0x1FFFFFFF; - position += 3; - var bytes = referredToCount + 7 >> 3; - retainBits[0] = data[position++]; - - while (--bytes > 0) { - retainBits.push(data[position++]); - } - } else if (referredFlags === 5 || referredFlags === 6) { - throw new Jbig2Error('invalid referred-to flags'); - } - - segmentHeader.retainBits = retainBits; - var referredToSegmentNumberSize = segmentHeader.number <= 256 ? 1 : segmentHeader.number <= 65536 ? 2 : 4; - var referredTo = []; - var i, ii; - - for (i = 0; i < referredToCount; i++) { - var number = referredToSegmentNumberSize === 1 ? data[position] : referredToSegmentNumberSize === 2 ? (0, _util.readUint16)(data, position) : (0, _util.readUint32)(data, position); - referredTo.push(number); - position += referredToSegmentNumberSize; - } - - segmentHeader.referredTo = referredTo; - - if (!pageAssociationFieldSize) { - segmentHeader.pageAssociation = data[position++]; + const useskip = !!skip; + const template = CodingTemplates[templateIndex].concat(at); + template.sort(function (a, b) { + return a.y - b.y || a.x - b.x; + }); + const templateLength = template.length; + const templateX = new Int8Array(templateLength); + const templateY = new Int8Array(templateLength); + const changingTemplateEntries = []; + let reuseMask = 0, + minX = 0, + maxX = 0, + minY = 0; + let c, k; + + for (k = 0; k < templateLength; k++) { + templateX[k] = template[k].x; + templateY[k] = template[k].y; + minX = Math.min(minX, template[k].x); + maxX = Math.max(maxX, template[k].x); + minY = Math.min(minY, template[k].y); + + if (k < templateLength - 1 && template[k].y === template[k + 1].y && template[k].x === template[k + 1].x - 1) { + reuseMask |= 1 << templateLength - 1 - k; } else { - segmentHeader.pageAssociation = (0, _util.readUint32)(data, position); - position += 4; + changingTemplateEntries.push(k); } + } - segmentHeader.length = (0, _util.readUint32)(data, position); - position += 4; + const changingEntriesLength = changingTemplateEntries.length; + const changingTemplateX = new Int8Array(changingEntriesLength); + const changingTemplateY = new Int8Array(changingEntriesLength); + const changingTemplateBit = new Uint16Array(changingEntriesLength); - if (segmentHeader.length === 0xFFFFFFFF) { - if (segmentType === 38) { - var genericRegionInfo = readRegionSegmentInformation(data, position); - var genericRegionSegmentFlags = data[position + RegionSegmentInformationFieldLength]; - var genericRegionMmr = !!(genericRegionSegmentFlags & 1); - var searchPatternLength = 6; - var searchPattern = new Uint8Array(searchPatternLength); + for (c = 0; c < changingEntriesLength; c++) { + k = changingTemplateEntries[c]; + changingTemplateX[c] = template[k].x; + changingTemplateY[c] = template[k].y; + changingTemplateBit[c] = 1 << templateLength - 1 - k; + } - if (!genericRegionMmr) { - searchPattern[0] = 0xFF; - searchPattern[1] = 0xAC; - } + const sbb_left = -minX; + const sbb_top = -minY; + const sbb_right = width - maxX; + const pseudoPixelContext = ReusedContexts[templateIndex]; + let row = new Uint8Array(width); + const bitmap = []; + const decoder = decodingContext.decoder; + const contexts = decodingContext.contextCache.getContexts("GB"); + let ltp = 0, + j, + i0, + j0, + contextLabel = 0, + bit, + shift; - searchPattern[2] = genericRegionInfo.height >>> 24 & 0xFF; - searchPattern[3] = genericRegionInfo.height >> 16 & 0xFF; - searchPattern[4] = genericRegionInfo.height >> 8 & 0xFF; - searchPattern[5] = genericRegionInfo.height & 0xFF; + for (let i = 0; i < height; i++) { + if (prediction) { + const sltp = decoder.readBit(contexts, pseudoPixelContext); + ltp ^= sltp; - for (i = position, ii = data.length; i < ii; i++) { - var j = 0; - - while (j < searchPatternLength && searchPattern[j] === data[i + j]) { - j++; - } - - if (j === searchPatternLength) { - segmentHeader.length = i + searchPatternLength; - break; - } - } - - if (segmentHeader.length === 0xFFFFFFFF) { - throw new Jbig2Error('segment end was not found'); - } - } else { - throw new Jbig2Error('invalid unknown segment length'); + if (ltp) { + bitmap.push(row); + continue; } } - segmentHeader.headerEnd = position; - return segmentHeader; + row = new Uint8Array(row); + bitmap.push(row); + + for (j = 0; j < width; j++) { + if (useskip && skip[i][j]) { + row[j] = 0; + continue; + } + + if (j >= sbb_left && j < sbb_right && i >= sbb_top) { + contextLabel = contextLabel << 1 & reuseMask; + + for (k = 0; k < changingEntriesLength; k++) { + i0 = i + changingTemplateY[k]; + j0 = j + changingTemplateX[k]; + bit = bitmap[i0][j0]; + + if (bit) { + bit = changingTemplateBit[k]; + contextLabel |= bit; + } + } + } else { + contextLabel = 0; + shift = templateLength - 1; + + for (k = 0; k < templateLength; k++, shift--) { + j0 = j + templateX[k]; + + if (j0 >= 0 && j0 < width) { + i0 = i + templateY[k]; + + if (i0 >= 0) { + bit = bitmap[i0][j0]; + + if (bit) { + contextLabel |= bit << shift; + } + } + } + } + } + + const pixel = decoder.readBit(contexts, contextLabel); + row[j] = pixel; + } } - function readSegments(header, data, start, end) { - var segments = []; - var position = start; + return bitmap; +} - while (position < end) { - var segmentHeader = readSegmentHeader(data, position); - position = segmentHeader.headerEnd; - var segment = { - header: segmentHeader, - data: data +function decodeRefinement(width, height, templateIndex, referenceBitmap, offsetX, offsetY, prediction, at, decodingContext) { + let codingTemplate = RefinementTemplates[templateIndex].coding; + + if (templateIndex === 0) { + codingTemplate = codingTemplate.concat([at[0]]); + } + + const codingTemplateLength = codingTemplate.length; + const codingTemplateX = new Int32Array(codingTemplateLength); + const codingTemplateY = new Int32Array(codingTemplateLength); + let k; + + for (k = 0; k < codingTemplateLength; k++) { + codingTemplateX[k] = codingTemplate[k].x; + codingTemplateY[k] = codingTemplate[k].y; + } + + let referenceTemplate = RefinementTemplates[templateIndex].reference; + + if (templateIndex === 0) { + referenceTemplate = referenceTemplate.concat([at[1]]); + } + + const referenceTemplateLength = referenceTemplate.length; + const referenceTemplateX = new Int32Array(referenceTemplateLength); + const referenceTemplateY = new Int32Array(referenceTemplateLength); + + for (k = 0; k < referenceTemplateLength; k++) { + referenceTemplateX[k] = referenceTemplate[k].x; + referenceTemplateY[k] = referenceTemplate[k].y; + } + + const referenceWidth = referenceBitmap[0].length; + const referenceHeight = referenceBitmap.length; + const pseudoPixelContext = RefinementReusedContexts[templateIndex]; + const bitmap = []; + const decoder = decodingContext.decoder; + const contexts = decodingContext.contextCache.getContexts("GR"); + let ltp = 0; + + for (let i = 0; i < height; i++) { + if (prediction) { + const sltp = decoder.readBit(contexts, pseudoPixelContext); + ltp ^= sltp; + + if (ltp) { + throw new Jbig2Error("prediction is not supported"); + } + } + + const row = new Uint8Array(width); + bitmap.push(row); + + for (let j = 0; j < width; j++) { + let i0, j0; + let contextLabel = 0; + + for (k = 0; k < codingTemplateLength; k++) { + i0 = i + codingTemplateY[k]; + j0 = j + codingTemplateX[k]; + + if (i0 < 0 || j0 < 0 || j0 >= width) { + contextLabel <<= 1; + } else { + contextLabel = contextLabel << 1 | bitmap[i0][j0]; + } + } + + for (k = 0; k < referenceTemplateLength; k++) { + i0 = i + referenceTemplateY[k] - offsetY; + j0 = j + referenceTemplateX[k] - offsetX; + + if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) { + contextLabel <<= 1; + } else { + contextLabel = contextLabel << 1 | referenceBitmap[i0][j0]; + } + } + + const pixel = decoder.readBit(contexts, contextLabel); + row[j] = pixel; + } + } + + return bitmap; +} + +function decodeSymbolDictionary(huffman, refinement, symbols, numberOfNewSymbols, numberOfExportedSymbols, huffmanTables, templateIndex, at, refinementTemplateIndex, refinementAt, decodingContext, huffmanInput) { + if (huffman && refinement) { + throw new Jbig2Error("symbol refinement with Huffman is not supported"); + } + + const newSymbols = []; + let currentHeight = 0; + let symbolCodeLength = (0, _core_utils.log2)(symbols.length + numberOfNewSymbols); + const decoder = decodingContext.decoder; + const contextCache = decodingContext.contextCache; + let tableB1, symbolWidths; + + if (huffman) { + tableB1 = getStandardTable(1); + symbolWidths = []; + symbolCodeLength = Math.max(symbolCodeLength, 1); + } + + while (newSymbols.length < numberOfNewSymbols) { + const deltaHeight = huffman ? huffmanTables.tableDeltaHeight.decode(huffmanInput) : decodeInteger(contextCache, "IADH", decoder); + currentHeight += deltaHeight; + let currentWidth = 0, + totalWidth = 0; + const firstSymbol = huffman ? symbolWidths.length : 0; + + while (true) { + const deltaWidth = huffman ? huffmanTables.tableDeltaWidth.decode(huffmanInput) : decodeInteger(contextCache, "IADW", decoder); + + if (deltaWidth === null) { + break; + } + + currentWidth += deltaWidth; + totalWidth += currentWidth; + let bitmap; + + if (refinement) { + const numberOfInstances = decodeInteger(contextCache, "IAAI", decoder); + + if (numberOfInstances > 1) { + bitmap = decodeTextRegion(huffman, refinement, currentWidth, currentHeight, 0, numberOfInstances, 1, symbols.concat(newSymbols), symbolCodeLength, 0, 0, 1, 0, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, 0, huffmanInput); + } else { + const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength); + const rdx = decodeInteger(contextCache, "IARDX", decoder); + const rdy = decodeInteger(contextCache, "IARDY", decoder); + const symbol = symbolId < symbols.length ? symbols[symbolId] : newSymbols[symbolId - symbols.length]; + bitmap = decodeRefinement(currentWidth, currentHeight, refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, decodingContext); + } + + newSymbols.push(bitmap); + } else if (huffman) { + symbolWidths.push(currentWidth); + } else { + bitmap = decodeBitmap(false, currentWidth, currentHeight, templateIndex, false, null, at, decodingContext); + newSymbols.push(bitmap); + } + } + + if (huffman && !refinement) { + const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput); + huffmanInput.byteAlign(); + let collectiveBitmap; + + if (bitmapSize === 0) { + collectiveBitmap = readUncompressedBitmap(huffmanInput, totalWidth, currentHeight); + } else { + const originalEnd = huffmanInput.end; + const bitmapEnd = huffmanInput.position + bitmapSize; + huffmanInput.end = bitmapEnd; + collectiveBitmap = decodeMMRBitmap(huffmanInput, totalWidth, currentHeight, false); + huffmanInput.end = originalEnd; + huffmanInput.position = bitmapEnd; + } + + const numberOfSymbolsDecoded = symbolWidths.length; + + if (firstSymbol === numberOfSymbolsDecoded - 1) { + newSymbols.push(collectiveBitmap); + } else { + let i, + y, + xMin = 0, + xMax, + bitmapWidth, + symbolBitmap; + + for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) { + bitmapWidth = symbolWidths[i]; + xMax = xMin + bitmapWidth; + symbolBitmap = []; + + for (y = 0; y < currentHeight; y++) { + symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax)); + } + + newSymbols.push(symbolBitmap); + xMin = xMax; + } + } + } + } + + const exportedSymbols = [], + flags = []; + let currentFlag = false, + i, + ii; + const totalSymbolsLength = symbols.length + numberOfNewSymbols; + + while (flags.length < totalSymbolsLength) { + let runLength = huffman ? tableB1.decode(huffmanInput) : decodeInteger(contextCache, "IAEX", decoder); + + while (runLength--) { + flags.push(currentFlag); + } + + currentFlag = !currentFlag; + } + + for (i = 0, ii = symbols.length; i < ii; i++) { + if (flags[i]) { + exportedSymbols.push(symbols[i]); + } + } + + for (let j = 0; j < numberOfNewSymbols; i++, j++) { + if (flags[i]) { + exportedSymbols.push(newSymbols[j]); + } + } + + return exportedSymbols; +} + +function decodeTextRegion(huffman, refinement, width, height, defaultPixelValue, numberOfSymbolInstances, stripSize, inputSymbols, symbolCodeLength, transposed, dsOffset, referenceCorner, combinationOperator, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, logStripSize, huffmanInput) { + if (huffman && refinement) { + throw new Jbig2Error("refinement with Huffman is not supported"); + } + + const bitmap = []; + let i, row; + + for (i = 0; i < height; i++) { + row = new Uint8Array(width); + + if (defaultPixelValue) { + for (let j = 0; j < width; j++) { + row[j] = defaultPixelValue; + } + } + + bitmap.push(row); + } + + const decoder = decodingContext.decoder; + const contextCache = decodingContext.contextCache; + let stripT = huffman ? -huffmanTables.tableDeltaT.decode(huffmanInput) : -decodeInteger(contextCache, "IADT", decoder); + let firstS = 0; + i = 0; + + while (i < numberOfSymbolInstances) { + const deltaT = huffman ? huffmanTables.tableDeltaT.decode(huffmanInput) : decodeInteger(contextCache, "IADT", decoder); + stripT += deltaT; + const deltaFirstS = huffman ? huffmanTables.tableFirstS.decode(huffmanInput) : decodeInteger(contextCache, "IAFS", decoder); + firstS += deltaFirstS; + let currentS = firstS; + + do { + let currentT = 0; + + if (stripSize > 1) { + currentT = huffman ? huffmanInput.readBits(logStripSize) : decodeInteger(contextCache, "IAIT", decoder); + } + + const t = stripSize * stripT + currentT; + const symbolId = huffman ? huffmanTables.symbolIDTable.decode(huffmanInput) : decodeIAID(contextCache, decoder, symbolCodeLength); + const applyRefinement = refinement && (huffman ? huffmanInput.readBit() : decodeInteger(contextCache, "IARI", decoder)); + let symbolBitmap = inputSymbols[symbolId]; + let symbolWidth = symbolBitmap[0].length; + let symbolHeight = symbolBitmap.length; + + if (applyRefinement) { + const rdw = decodeInteger(contextCache, "IARDW", decoder); + const rdh = decodeInteger(contextCache, "IARDH", decoder); + const rdx = decodeInteger(contextCache, "IARDX", decoder); + const rdy = decodeInteger(contextCache, "IARDY", decoder); + symbolWidth += rdw; + symbolHeight += rdh; + symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx, (rdh >> 1) + rdy, false, refinementAt, decodingContext); + } + + const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1); + const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0); + let s2, t2, symbolRow; + + if (transposed) { + for (s2 = 0; s2 < symbolHeight; s2++) { + row = bitmap[offsetS + s2]; + + if (!row) { + continue; + } + + symbolRow = symbolBitmap[s2]; + const maxWidth = Math.min(width - offsetT, symbolWidth); + + switch (combinationOperator) { + case 0: + for (t2 = 0; t2 < maxWidth; t2++) { + row[offsetT + t2] |= symbolRow[t2]; + } + + break; + + case 2: + for (t2 = 0; t2 < maxWidth; t2++) { + row[offsetT + t2] ^= symbolRow[t2]; + } + + break; + + default: + throw new Jbig2Error(`operator ${combinationOperator} is not supported`); + } + } + + currentS += symbolHeight - 1; + } else { + for (t2 = 0; t2 < symbolHeight; t2++) { + row = bitmap[offsetT + t2]; + + if (!row) { + continue; + } + + symbolRow = symbolBitmap[t2]; + + switch (combinationOperator) { + case 0: + for (s2 = 0; s2 < symbolWidth; s2++) { + row[offsetS + s2] |= symbolRow[s2]; + } + + break; + + case 2: + for (s2 = 0; s2 < symbolWidth; s2++) { + row[offsetS + s2] ^= symbolRow[s2]; + } + + break; + + default: + throw new Jbig2Error(`operator ${combinationOperator} is not supported`); + } + } + + currentS += symbolWidth - 1; + } + + i++; + const deltaS = huffman ? huffmanTables.tableDeltaS.decode(huffmanInput) : decodeInteger(contextCache, "IADS", decoder); + + if (deltaS === null) { + break; + } + + currentS += deltaS + dsOffset; + } while (true); + } + + return bitmap; +} + +function decodePatternDictionary(mmr, patternWidth, patternHeight, maxPatternIndex, template, decodingContext) { + const at = []; + + if (!mmr) { + at.push({ + x: -patternWidth, + y: 0 + }); + + if (template === 0) { + at.push({ + x: -3, + y: -1 + }, { + x: 2, + y: -2 + }, { + x: -2, + y: -2 + }); + } + } + + const collectiveWidth = (maxPatternIndex + 1) * patternWidth; + const collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight, template, false, null, at, decodingContext); + const patterns = []; + + for (let i = 0; i <= maxPatternIndex; i++) { + const patternBitmap = []; + const xMin = patternWidth * i; + const xMax = xMin + patternWidth; + + for (let y = 0; y < patternHeight; y++) { + patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax)); + } + + patterns.push(patternBitmap); + } + + return patterns; +} + +function decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight, defaultPixelValue, enableSkip, combinationOperator, gridWidth, gridHeight, gridOffsetX, gridOffsetY, gridVectorX, gridVectorY, decodingContext) { + const skip = null; + + if (enableSkip) { + throw new Jbig2Error("skip is not supported"); + } + + if (combinationOperator !== 0) { + throw new Jbig2Error(`operator "${combinationOperator}" is not supported in halftone region`); + } + + const regionBitmap = []; + let i, j, row; + + for (i = 0; i < regionHeight; i++) { + row = new Uint8Array(regionWidth); + + if (defaultPixelValue) { + for (j = 0; j < regionWidth; j++) { + row[j] = defaultPixelValue; + } + } + + regionBitmap.push(row); + } + + const numberOfPatterns = patterns.length; + const pattern0 = patterns[0]; + const patternWidth = pattern0[0].length, + patternHeight = pattern0.length; + const bitsPerValue = (0, _core_utils.log2)(numberOfPatterns); + const at = []; + + if (!mmr) { + at.push({ + x: template <= 1 ? 3 : 2, + y: -1 + }); + + if (template === 0) { + at.push({ + x: -3, + y: -1 + }, { + x: 2, + y: -2 + }, { + x: -2, + y: -2 + }); + } + } + + const grayScaleBitPlanes = []; + let mmrInput, bitmap; + + if (mmr) { + mmrInput = new Reader(decodingContext.data, decodingContext.start, decodingContext.end); + } + + for (i = bitsPerValue - 1; i >= 0; i--) { + if (mmr) { + bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true); + } else { + bitmap = decodeBitmap(false, gridWidth, gridHeight, template, false, skip, at, decodingContext); + } + + grayScaleBitPlanes[i] = bitmap; + } + + let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow; + + for (mg = 0; mg < gridHeight; mg++) { + for (ng = 0; ng < gridWidth; ng++) { + bit = 0; + patternIndex = 0; + + for (j = bitsPerValue - 1; j >= 0; j--) { + bit ^= grayScaleBitPlanes[j][mg][ng]; + patternIndex |= bit << j; + } + + patternBitmap = patterns[patternIndex]; + x = gridOffsetX + mg * gridVectorY + ng * gridVectorX >> 8; + y = gridOffsetY + mg * gridVectorX - ng * gridVectorY >> 8; + + if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 && y + patternHeight <= regionHeight) { + for (i = 0; i < patternHeight; i++) { + regionRow = regionBitmap[y + i]; + patternRow = patternBitmap[i]; + + for (j = 0; j < patternWidth; j++) { + regionRow[x + j] |= patternRow[j]; + } + } + } else { + let regionX, regionY; + + for (i = 0; i < patternHeight; i++) { + regionY = y + i; + + if (regionY < 0 || regionY >= regionHeight) { + continue; + } + + regionRow = regionBitmap[regionY]; + patternRow = patternBitmap[i]; + + for (j = 0; j < patternWidth; j++) { + regionX = x + j; + + if (regionX >= 0 && regionX < regionWidth) { + regionRow[regionX] |= patternRow[j]; + } + } + } + } + } + } + + return regionBitmap; +} + +function readSegmentHeader(data, start) { + const segmentHeader = {}; + segmentHeader.number = (0, _core_utils.readUint32)(data, start); + const flags = data[start + 4]; + const segmentType = flags & 0x3f; + + if (!SegmentTypes[segmentType]) { + throw new Jbig2Error("invalid segment type: " + segmentType); + } + + segmentHeader.type = segmentType; + segmentHeader.typeName = SegmentTypes[segmentType]; + segmentHeader.deferredNonRetain = !!(flags & 0x80); + const pageAssociationFieldSize = !!(flags & 0x40); + const referredFlags = data[start + 5]; + let referredToCount = referredFlags >> 5 & 7; + const retainBits = [referredFlags & 31]; + let position = start + 6; + + if (referredFlags === 7) { + referredToCount = (0, _core_utils.readUint32)(data, position - 1) & 0x1fffffff; + position += 3; + let bytes = referredToCount + 7 >> 3; + retainBits[0] = data[position++]; + + while (--bytes > 0) { + retainBits.push(data[position++]); + } + } else if (referredFlags === 5 || referredFlags === 6) { + throw new Jbig2Error("invalid referred-to flags"); + } + + segmentHeader.retainBits = retainBits; + let referredToSegmentNumberSize = 4; + + if (segmentHeader.number <= 256) { + referredToSegmentNumberSize = 1; + } else if (segmentHeader.number <= 65536) { + referredToSegmentNumberSize = 2; + } + + const referredTo = []; + let i, ii; + + for (i = 0; i < referredToCount; i++) { + let number; + + if (referredToSegmentNumberSize === 1) { + number = data[position]; + } else if (referredToSegmentNumberSize === 2) { + number = (0, _core_utils.readUint16)(data, position); + } else { + number = (0, _core_utils.readUint32)(data, position); + } + + referredTo.push(number); + position += referredToSegmentNumberSize; + } + + segmentHeader.referredTo = referredTo; + + if (!pageAssociationFieldSize) { + segmentHeader.pageAssociation = data[position++]; + } else { + segmentHeader.pageAssociation = (0, _core_utils.readUint32)(data, position); + position += 4; + } + + segmentHeader.length = (0, _core_utils.readUint32)(data, position); + position += 4; + + if (segmentHeader.length === 0xffffffff) { + if (segmentType === 38) { + const genericRegionInfo = readRegionSegmentInformation(data, position); + const genericRegionSegmentFlags = data[position + RegionSegmentInformationFieldLength]; + const genericRegionMmr = !!(genericRegionSegmentFlags & 1); + const searchPatternLength = 6; + const searchPattern = new Uint8Array(searchPatternLength); + + if (!genericRegionMmr) { + searchPattern[0] = 0xff; + searchPattern[1] = 0xac; + } + + searchPattern[2] = genericRegionInfo.height >>> 24 & 0xff; + searchPattern[3] = genericRegionInfo.height >> 16 & 0xff; + searchPattern[4] = genericRegionInfo.height >> 8 & 0xff; + searchPattern[5] = genericRegionInfo.height & 0xff; + + for (i = position, ii = data.length; i < ii; i++) { + let j = 0; + + while (j < searchPatternLength && searchPattern[j] === data[i + j]) { + j++; + } + + if (j === searchPatternLength) { + segmentHeader.length = i + searchPatternLength; + break; + } + } + + if (segmentHeader.length === 0xffffffff) { + throw new Jbig2Error("segment end was not found"); + } + } else { + throw new Jbig2Error("invalid unknown segment length"); + } + } + + segmentHeader.headerEnd = position; + return segmentHeader; +} + +function readSegments(header, data, start, end) { + const segments = []; + let position = start; + + while (position < end) { + const segmentHeader = readSegmentHeader(data, position); + position = segmentHeader.headerEnd; + const segment = { + header: segmentHeader, + data + }; + + if (!header.randomAccess) { + segment.start = position; + position += segmentHeader.length; + segment.end = position; + } + + segments.push(segment); + + if (segmentHeader.type === 51) { + break; + } + } + + if (header.randomAccess) { + for (let i = 0, ii = segments.length; i < ii; i++) { + segments[i].start = position; + position += segments[i].header.length; + segments[i].end = position; + } + } + + return segments; +} + +function readRegionSegmentInformation(data, start) { + return { + width: (0, _core_utils.readUint32)(data, start), + height: (0, _core_utils.readUint32)(data, start + 4), + x: (0, _core_utils.readUint32)(data, start + 8), + y: (0, _core_utils.readUint32)(data, start + 12), + combinationOperator: data[start + 16] & 7 + }; +} + +const RegionSegmentInformationFieldLength = 17; + +function processSegment(segment, visitor) { + const header = segment.header; + const data = segment.data, + end = segment.end; + let position = segment.start; + let args, at, i, atLength; + + switch (header.type) { + case 0: + const dictionary = {}; + const dictionaryFlags = (0, _core_utils.readUint16)(data, position); + dictionary.huffman = !!(dictionaryFlags & 1); + dictionary.refinement = !!(dictionaryFlags & 2); + dictionary.huffmanDHSelector = dictionaryFlags >> 2 & 3; + dictionary.huffmanDWSelector = dictionaryFlags >> 4 & 3; + dictionary.bitmapSizeSelector = dictionaryFlags >> 6 & 1; + dictionary.aggregationInstancesSelector = dictionaryFlags >> 7 & 1; + dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256); + dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512); + dictionary.template = dictionaryFlags >> 10 & 3; + dictionary.refinementTemplate = dictionaryFlags >> 12 & 1; + position += 2; + + if (!dictionary.huffman) { + atLength = dictionary.template === 0 ? 4 : 1; + at = []; + + for (i = 0; i < atLength; i++) { + at.push({ + x: (0, _core_utils.readInt8)(data, position), + y: (0, _core_utils.readInt8)(data, position + 1) + }); + position += 2; + } + + dictionary.at = at; + } + + if (dictionary.refinement && !dictionary.refinementTemplate) { + at = []; + + for (i = 0; i < 2; i++) { + at.push({ + x: (0, _core_utils.readInt8)(data, position), + y: (0, _core_utils.readInt8)(data, position + 1) + }); + position += 2; + } + + dictionary.refinementAt = at; + } + + dictionary.numberOfExportedSymbols = (0, _core_utils.readUint32)(data, position); + position += 4; + dictionary.numberOfNewSymbols = (0, _core_utils.readUint32)(data, position); + position += 4; + args = [dictionary, header.number, header.referredTo, data, position, end]; + break; + + case 6: + case 7: + const textRegion = {}; + textRegion.info = readRegionSegmentInformation(data, position); + position += RegionSegmentInformationFieldLength; + const textRegionSegmentFlags = (0, _core_utils.readUint16)(data, position); + position += 2; + textRegion.huffman = !!(textRegionSegmentFlags & 1); + textRegion.refinement = !!(textRegionSegmentFlags & 2); + textRegion.logStripSize = textRegionSegmentFlags >> 2 & 3; + textRegion.stripSize = 1 << textRegion.logStripSize; + textRegion.referenceCorner = textRegionSegmentFlags >> 4 & 3; + textRegion.transposed = !!(textRegionSegmentFlags & 64); + textRegion.combinationOperator = textRegionSegmentFlags >> 7 & 3; + textRegion.defaultPixelValue = textRegionSegmentFlags >> 9 & 1; + textRegion.dsOffset = textRegionSegmentFlags << 17 >> 27; + textRegion.refinementTemplate = textRegionSegmentFlags >> 15 & 1; + + if (textRegion.huffman) { + const textRegionHuffmanFlags = (0, _core_utils.readUint16)(data, position); + position += 2; + textRegion.huffmanFS = textRegionHuffmanFlags & 3; + textRegion.huffmanDS = textRegionHuffmanFlags >> 2 & 3; + textRegion.huffmanDT = textRegionHuffmanFlags >> 4 & 3; + textRegion.huffmanRefinementDW = textRegionHuffmanFlags >> 6 & 3; + textRegion.huffmanRefinementDH = textRegionHuffmanFlags >> 8 & 3; + textRegion.huffmanRefinementDX = textRegionHuffmanFlags >> 10 & 3; + textRegion.huffmanRefinementDY = textRegionHuffmanFlags >> 12 & 3; + textRegion.huffmanRefinementSizeSelector = !!(textRegionHuffmanFlags & 0x4000); + } + + if (textRegion.refinement && !textRegion.refinementTemplate) { + at = []; + + for (i = 0; i < 2; i++) { + at.push({ + x: (0, _core_utils.readInt8)(data, position), + y: (0, _core_utils.readInt8)(data, position + 1) + }); + position += 2; + } + + textRegion.refinementAt = at; + } + + textRegion.numberOfSymbolInstances = (0, _core_utils.readUint32)(data, position); + position += 4; + args = [textRegion, header.referredTo, data, position, end]; + break; + + case 16: + const patternDictionary = {}; + const patternDictionaryFlags = data[position++]; + patternDictionary.mmr = !!(patternDictionaryFlags & 1); + patternDictionary.template = patternDictionaryFlags >> 1 & 3; + patternDictionary.patternWidth = data[position++]; + patternDictionary.patternHeight = data[position++]; + patternDictionary.maxPatternIndex = (0, _core_utils.readUint32)(data, position); + position += 4; + args = [patternDictionary, header.number, data, position, end]; + break; + + case 22: + case 23: + const halftoneRegion = {}; + halftoneRegion.info = readRegionSegmentInformation(data, position); + position += RegionSegmentInformationFieldLength; + const halftoneRegionFlags = data[position++]; + halftoneRegion.mmr = !!(halftoneRegionFlags & 1); + halftoneRegion.template = halftoneRegionFlags >> 1 & 3; + halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8); + halftoneRegion.combinationOperator = halftoneRegionFlags >> 4 & 7; + halftoneRegion.defaultPixelValue = halftoneRegionFlags >> 7 & 1; + halftoneRegion.gridWidth = (0, _core_utils.readUint32)(data, position); + position += 4; + halftoneRegion.gridHeight = (0, _core_utils.readUint32)(data, position); + position += 4; + halftoneRegion.gridOffsetX = (0, _core_utils.readUint32)(data, position) & 0xffffffff; + position += 4; + halftoneRegion.gridOffsetY = (0, _core_utils.readUint32)(data, position) & 0xffffffff; + position += 4; + halftoneRegion.gridVectorX = (0, _core_utils.readUint16)(data, position); + position += 2; + halftoneRegion.gridVectorY = (0, _core_utils.readUint16)(data, position); + position += 2; + args = [halftoneRegion, header.referredTo, data, position, end]; + break; + + case 38: + case 39: + const genericRegion = {}; + genericRegion.info = readRegionSegmentInformation(data, position); + position += RegionSegmentInformationFieldLength; + const genericRegionSegmentFlags = data[position++]; + genericRegion.mmr = !!(genericRegionSegmentFlags & 1); + genericRegion.template = genericRegionSegmentFlags >> 1 & 3; + genericRegion.prediction = !!(genericRegionSegmentFlags & 8); + + if (!genericRegion.mmr) { + atLength = genericRegion.template === 0 ? 4 : 1; + at = []; + + for (i = 0; i < atLength; i++) { + at.push({ + x: (0, _core_utils.readInt8)(data, position), + y: (0, _core_utils.readInt8)(data, position + 1) + }); + position += 2; + } + + genericRegion.at = at; + } + + args = [genericRegion, data, position, end]; + break; + + case 48: + const pageInfo = { + width: (0, _core_utils.readUint32)(data, position), + height: (0, _core_utils.readUint32)(data, position + 4), + resolutionX: (0, _core_utils.readUint32)(data, position + 8), + resolutionY: (0, _core_utils.readUint32)(data, position + 12) }; - if (!header.randomAccess) { - segment.start = position; - position += segmentHeader.length; - segment.end = position; + if (pageInfo.height === 0xffffffff) { + delete pageInfo.height; } - segments.push(segment); + const pageSegmentFlags = data[position + 16]; + (0, _core_utils.readUint16)(data, position + 17); + pageInfo.lossless = !!(pageSegmentFlags & 1); + pageInfo.refinement = !!(pageSegmentFlags & 2); + pageInfo.defaultPixelValue = pageSegmentFlags >> 2 & 1; + pageInfo.combinationOperator = pageSegmentFlags >> 3 & 3; + pageInfo.requiresBuffer = !!(pageSegmentFlags & 32); + pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64); + args = [pageInfo]; + break; - if (segmentHeader.type === 51) { - break; - } - } + case 49: + break; - if (header.randomAccess) { - for (var i = 0, ii = segments.length; i < ii; i++) { - segments[i].start = position; - position += segments[i].header.length; - segments[i].end = position; - } - } + case 50: + break; - return segments; + case 51: + break; + + case 53: + args = [header.number, data, position, end]; + break; + + case 62: + break; + + default: + throw new Jbig2Error(`segment type ${header.typeName}(${header.type}) is not implemented`); } - function readRegionSegmentInformation(data, start) { - return { - width: (0, _util.readUint32)(data, start), - height: (0, _util.readUint32)(data, start + 4), - x: (0, _util.readUint32)(data, start + 8), - y: (0, _util.readUint32)(data, start + 12), - combinationOperator: data[start + 16] & 7 - }; + const callbackName = "on" + header.typeName; + + if (callbackName in visitor) { + visitor[callbackName].apply(visitor, args); + } +} + +function processSegments(segments, visitor) { + for (let i = 0, ii = segments.length; i < ii; i++) { + processSegment(segments[i], visitor); + } +} + +function parseJbig2Chunks(chunks) { + const visitor = new SimpleSegmentVisitor(); + + for (let i = 0, ii = chunks.length; i < ii; i++) { + const chunk = chunks[i]; + const segments = readSegments({}, chunk.data, chunk.start, chunk.end); + processSegments(segments, visitor); } - var RegionSegmentInformationFieldLength = 17; + return visitor.buffer; +} - function processSegment(segment, visitor) { - var header = segment.header; - var data = segment.data, - position = segment.start, - end = segment.end; - var args, at, i, atLength; +function parseJbig2(data) { + throw new Error("Not implemented: parseJbig2"); +} - switch (header.type) { +class SimpleSegmentVisitor { + onPageInformation(info) { + this.currentPageInfo = info; + const rowSize = info.width + 7 >> 3; + const buffer = new Uint8ClampedArray(rowSize * info.height); + + if (info.defaultPixelValue) { + buffer.fill(0xff); + } + + this.buffer = buffer; + } + + drawBitmap(regionInfo, bitmap) { + const pageInfo = this.currentPageInfo; + const width = regionInfo.width, + height = regionInfo.height; + const rowSize = pageInfo.width + 7 >> 3; + const combinationOperator = pageInfo.combinationOperatorOverride ? regionInfo.combinationOperator : pageInfo.combinationOperator; + const buffer = this.buffer; + const mask0 = 128 >> (regionInfo.x & 7); + let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3); + let i, j, mask, offset; + + switch (combinationOperator) { case 0: - var dictionary = {}; - var dictionaryFlags = (0, _util.readUint16)(data, position); - dictionary.huffman = !!(dictionaryFlags & 1); - dictionary.refinement = !!(dictionaryFlags & 2); - dictionary.huffmanDHSelector = dictionaryFlags >> 2 & 3; - dictionary.huffmanDWSelector = dictionaryFlags >> 4 & 3; - dictionary.bitmapSizeSelector = dictionaryFlags >> 6 & 1; - dictionary.aggregationInstancesSelector = dictionaryFlags >> 7 & 1; - dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256); - dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512); - dictionary.template = dictionaryFlags >> 10 & 3; - dictionary.refinementTemplate = dictionaryFlags >> 12 & 1; - position += 2; + for (i = 0; i < height; i++) { + mask = mask0; + offset = offset0; - if (!dictionary.huffman) { - atLength = dictionary.template === 0 ? 4 : 1; - at = []; + for (j = 0; j < width; j++) { + if (bitmap[i][j]) { + buffer[offset] |= mask; + } - for (i = 0; i < atLength; i++) { - at.push({ - x: (0, _util.readInt8)(data, position), - y: (0, _util.readInt8)(data, position + 1) - }); - position += 2; + mask >>= 1; + + if (!mask) { + mask = 128; + offset++; + } } - dictionary.at = at; + offset0 += rowSize; } - if (dictionary.refinement && !dictionary.refinementTemplate) { - at = []; + break; - for (i = 0; i < 2; i++) { - at.push({ - x: (0, _util.readInt8)(data, position), - y: (0, _util.readInt8)(data, position + 1) - }); - position += 2; + case 2: + for (i = 0; i < height; i++) { + mask = mask0; + offset = offset0; + + for (j = 0; j < width; j++) { + if (bitmap[i][j]) { + buffer[offset] ^= mask; + } + + mask >>= 1; + + if (!mask) { + mask = 128; + offset++; + } } - dictionary.refinementAt = at; + offset0 += rowSize; } - dictionary.numberOfExportedSymbols = (0, _util.readUint32)(data, position); - position += 4; - dictionary.numberOfNewSymbols = (0, _util.readUint32)(data, position); - position += 4; - args = [dictionary, header.number, header.referredTo, data, position, end]; - break; - - case 6: - case 7: - var textRegion = {}; - textRegion.info = readRegionSegmentInformation(data, position); - position += RegionSegmentInformationFieldLength; - var textRegionSegmentFlags = (0, _util.readUint16)(data, position); - position += 2; - textRegion.huffman = !!(textRegionSegmentFlags & 1); - textRegion.refinement = !!(textRegionSegmentFlags & 2); - textRegion.logStripSize = textRegionSegmentFlags >> 2 & 3; - textRegion.stripSize = 1 << textRegion.logStripSize; - textRegion.referenceCorner = textRegionSegmentFlags >> 4 & 3; - textRegion.transposed = !!(textRegionSegmentFlags & 64); - textRegion.combinationOperator = textRegionSegmentFlags >> 7 & 3; - textRegion.defaultPixelValue = textRegionSegmentFlags >> 9 & 1; - textRegion.dsOffset = textRegionSegmentFlags << 17 >> 27; - textRegion.refinementTemplate = textRegionSegmentFlags >> 15 & 1; - - if (textRegion.huffman) { - var textRegionHuffmanFlags = (0, _util.readUint16)(data, position); - position += 2; - textRegion.huffmanFS = textRegionHuffmanFlags & 3; - textRegion.huffmanDS = textRegionHuffmanFlags >> 2 & 3; - textRegion.huffmanDT = textRegionHuffmanFlags >> 4 & 3; - textRegion.huffmanRefinementDW = textRegionHuffmanFlags >> 6 & 3; - textRegion.huffmanRefinementDH = textRegionHuffmanFlags >> 8 & 3; - textRegion.huffmanRefinementDX = textRegionHuffmanFlags >> 10 & 3; - textRegion.huffmanRefinementDY = textRegionHuffmanFlags >> 12 & 3; - textRegion.huffmanRefinementSizeSelector = !!(textRegionHuffmanFlags & 0x4000); - } - - if (textRegion.refinement && !textRegion.refinementTemplate) { - at = []; - - for (i = 0; i < 2; i++) { - at.push({ - x: (0, _util.readInt8)(data, position), - y: (0, _util.readInt8)(data, position + 1) - }); - position += 2; - } - - textRegion.refinementAt = at; - } - - textRegion.numberOfSymbolInstances = (0, _util.readUint32)(data, position); - position += 4; - args = [textRegion, header.referredTo, data, position, end]; - break; - - case 16: - var patternDictionary = {}; - var patternDictionaryFlags = data[position++]; - patternDictionary.mmr = !!(patternDictionaryFlags & 1); - patternDictionary.template = patternDictionaryFlags >> 1 & 3; - patternDictionary.patternWidth = data[position++]; - patternDictionary.patternHeight = data[position++]; - patternDictionary.maxPatternIndex = (0, _util.readUint32)(data, position); - position += 4; - args = [patternDictionary, header.number, data, position, end]; - break; - - case 22: - case 23: - var halftoneRegion = {}; - halftoneRegion.info = readRegionSegmentInformation(data, position); - position += RegionSegmentInformationFieldLength; - var halftoneRegionFlags = data[position++]; - halftoneRegion.mmr = !!(halftoneRegionFlags & 1); - halftoneRegion.template = halftoneRegionFlags >> 1 & 3; - halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8); - halftoneRegion.combinationOperator = halftoneRegionFlags >> 4 & 7; - halftoneRegion.defaultPixelValue = halftoneRegionFlags >> 7 & 1; - halftoneRegion.gridWidth = (0, _util.readUint32)(data, position); - position += 4; - halftoneRegion.gridHeight = (0, _util.readUint32)(data, position); - position += 4; - halftoneRegion.gridOffsetX = (0, _util.readUint32)(data, position) & 0xFFFFFFFF; - position += 4; - halftoneRegion.gridOffsetY = (0, _util.readUint32)(data, position) & 0xFFFFFFFF; - position += 4; - halftoneRegion.gridVectorX = (0, _util.readUint16)(data, position); - position += 2; - halftoneRegion.gridVectorY = (0, _util.readUint16)(data, position); - position += 2; - args = [halftoneRegion, header.referredTo, data, position, end]; - break; - - case 38: - case 39: - var genericRegion = {}; - genericRegion.info = readRegionSegmentInformation(data, position); - position += RegionSegmentInformationFieldLength; - var genericRegionSegmentFlags = data[position++]; - genericRegion.mmr = !!(genericRegionSegmentFlags & 1); - genericRegion.template = genericRegionSegmentFlags >> 1 & 3; - genericRegion.prediction = !!(genericRegionSegmentFlags & 8); - - if (!genericRegion.mmr) { - atLength = genericRegion.template === 0 ? 4 : 1; - at = []; - - for (i = 0; i < atLength; i++) { - at.push({ - x: (0, _util.readInt8)(data, position), - y: (0, _util.readInt8)(data, position + 1) - }); - position += 2; - } - - genericRegion.at = at; - } - - args = [genericRegion, data, position, end]; - break; - - case 48: - var pageInfo = { - width: (0, _util.readUint32)(data, position), - height: (0, _util.readUint32)(data, position + 4), - resolutionX: (0, _util.readUint32)(data, position + 8), - resolutionY: (0, _util.readUint32)(data, position + 12) - }; - - if (pageInfo.height === 0xFFFFFFFF) { - delete pageInfo.height; - } - - var pageSegmentFlags = data[position + 16]; - (0, _util.readUint16)(data, position + 17); - pageInfo.lossless = !!(pageSegmentFlags & 1); - pageInfo.refinement = !!(pageSegmentFlags & 2); - pageInfo.defaultPixelValue = pageSegmentFlags >> 2 & 1; - pageInfo.combinationOperator = pageSegmentFlags >> 3 & 3; - pageInfo.requiresBuffer = !!(pageSegmentFlags & 32); - pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64); - args = [pageInfo]; - break; - - case 49: - break; - - case 50: - break; - - case 51: - break; - - case 53: - args = [header.number, data, position, end]; - break; - - case 62: break; default: - throw new Jbig2Error("segment type ".concat(header.typeName, "(").concat(header.type, ")") + ' is not implemented'); - } - - var callbackName = 'on' + header.typeName; - - if (callbackName in visitor) { - visitor[callbackName].apply(visitor, args); + throw new Jbig2Error(`operator ${combinationOperator} is not supported`); } } - function processSegments(segments, visitor) { - for (var i = 0, ii = segments.length; i < ii; i++) { - processSegment(segments[i], visitor); - } + onImmediateGenericRegion(region, data, start, end) { + const regionInfo = region.info; + const decodingContext = new DecodingContext(data, start, end); + const bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height, region.template, region.prediction, null, region.at, decodingContext); + this.drawBitmap(regionInfo, bitmap); } - function parseJbig2Chunks(chunks) { - var visitor = new SimpleSegmentVisitor(); - - for (var i = 0, ii = chunks.length; i < ii; i++) { - var chunk = chunks[i]; - var segments = readSegments({}, chunk.data, chunk.start, chunk.end); - processSegments(segments, visitor); - } - - return visitor.buffer; + onImmediateLosslessGenericRegion() { + this.onImmediateGenericRegion(...arguments); } - function parseJbig2(data) { - var position = 0, - end = data.length; + onSymbolDictionary(dictionary, currentSegment, referredSegments, data, start, end) { + let huffmanTables, huffmanInput; - if (data[position] !== 0x97 || data[position + 1] !== 0x4A || data[position + 2] !== 0x42 || data[position + 3] !== 0x32 || data[position + 4] !== 0x0D || data[position + 5] !== 0x0A || data[position + 6] !== 0x1A || data[position + 7] !== 0x0A) { - throw new Jbig2Error('parseJbig2 - invalid header.'); + if (dictionary.huffman) { + huffmanTables = getSymbolDictionaryHuffmanTables(dictionary, referredSegments, this.customTables); + huffmanInput = new Reader(data, start, end); } - var header = Object.create(null); - position += 8; - var flags = data[position++]; - header.randomAccess = !(flags & 1); + let symbols = this.symbols; - if (!(flags & 2)) { - header.numberOfPages = (0, _util.readUint32)(data, position); - position += 4; + if (!symbols) { + this.symbols = symbols = {}; } - var segments = readSegments(header, data, position, end); - var visitor = new SimpleSegmentVisitor(); - processSegments(segments, visitor); - var _visitor$currentPageI = visitor.currentPageInfo, - width = _visitor$currentPageI.width, - height = _visitor$currentPageI.height; - var bitPacked = visitor.buffer; - var imgData = new Uint8ClampedArray(width * height); - var q = 0, - k = 0; + const inputSymbols = []; - for (var i = 0; i < height; i++) { - var mask = 0, - buffer = void 0; + for (const referredSegment of referredSegments) { + const referredSymbols = symbols[referredSegment]; - for (var j = 0; j < width; j++) { - if (!mask) { - mask = 128; - buffer = bitPacked[k++]; - } - - imgData[q++] = buffer & mask ? 0 : 255; - mask >>= 1; + if (referredSymbols) { + inputSymbols.push(...referredSymbols); } } - return { - imgData: imgData, - width: width, - height: height - }; + const decodingContext = new DecodingContext(data, start, end); + symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols, dictionary.numberOfExportedSymbols, huffmanTables, dictionary.template, dictionary.at, dictionary.refinementTemplate, dictionary.refinementAt, decodingContext, huffmanInput); } - function SimpleSegmentVisitor() {} + onImmediateTextRegion(region, referredSegments, data, start, end) { + const regionInfo = region.info; + let huffmanTables, huffmanInput; + const symbols = this.symbols; + const inputSymbols = []; - SimpleSegmentVisitor.prototype = { - onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) { - this.currentPageInfo = info; - var rowSize = info.width + 7 >> 3; - var buffer = new Uint8ClampedArray(rowSize * info.height); + for (const referredSegment of referredSegments) { + const referredSymbols = symbols[referredSegment]; - if (info.defaultPixelValue) { - for (var i = 0, ii = buffer.length; i < ii; i++) { - buffer[i] = 0xFF; - } + if (referredSymbols) { + inputSymbols.push(...referredSymbols); } - - this.buffer = buffer; - }, - drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) { - var pageInfo = this.currentPageInfo; - var width = regionInfo.width, - height = regionInfo.height; - var rowSize = pageInfo.width + 7 >> 3; - var combinationOperator = pageInfo.combinationOperatorOverride ? regionInfo.combinationOperator : pageInfo.combinationOperator; - var buffer = this.buffer; - var mask0 = 128 >> (regionInfo.x & 7); - var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3); - var i, j, mask, offset; - - switch (combinationOperator) { - case 0: - for (i = 0; i < height; i++) { - mask = mask0; - offset = offset0; - - for (j = 0; j < width; j++) { - if (bitmap[i][j]) { - buffer[offset] |= mask; - } - - mask >>= 1; - - if (!mask) { - mask = 128; - offset++; - } - } - - offset0 += rowSize; - } - - break; - - case 2: - for (i = 0; i < height; i++) { - mask = mask0; - offset = offset0; - - for (j = 0; j < width; j++) { - if (bitmap[i][j]) { - buffer[offset] ^= mask; - } - - mask >>= 1; - - if (!mask) { - mask = 128; - offset++; - } - } - - offset0 += rowSize; - } - - break; - - default: - throw new Jbig2Error("operator ".concat(combinationOperator, " is not supported")); - } - }, - onImmediateGenericRegion: function SimpleSegmentVisitor_onImmediateGenericRegion(region, data, start, end) { - var regionInfo = region.info; - var decodingContext = new DecodingContext(data, start, end); - var bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height, region.template, region.prediction, null, region.at, decodingContext); - this.drawBitmap(regionInfo, bitmap); - }, - onImmediateLosslessGenericRegion: function SimpleSegmentVisitor_onImmediateLosslessGenericRegion() { - this.onImmediateGenericRegion.apply(this, arguments); - }, - onSymbolDictionary: function SimpleSegmentVisitor_onSymbolDictionary(dictionary, currentSegment, referredSegments, data, start, end) { - var huffmanTables, huffmanInput; - - if (dictionary.huffman) { - huffmanTables = getSymbolDictionaryHuffmanTables(dictionary, referredSegments, this.customTables); - huffmanInput = new Reader(data, start, end); - } - - var symbols = this.symbols; - - if (!symbols) { - this.symbols = symbols = {}; - } - - var inputSymbols = []; - - for (var i = 0, ii = referredSegments.length; i < ii; i++) { - var referredSymbols = symbols[referredSegments[i]]; - - if (referredSymbols) { - inputSymbols = inputSymbols.concat(referredSymbols); - } - } - - var decodingContext = new DecodingContext(data, start, end); - symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols, dictionary.numberOfExportedSymbols, huffmanTables, dictionary.template, dictionary.at, dictionary.refinementTemplate, dictionary.refinementAt, decodingContext, huffmanInput); - }, - onImmediateTextRegion: function SimpleSegmentVisitor_onImmediateTextRegion(region, referredSegments, data, start, end) { - var regionInfo = region.info; - var huffmanTables, huffmanInput; - var symbols = this.symbols; - var inputSymbols = []; - - for (var i = 0, ii = referredSegments.length; i < ii; i++) { - var referredSymbols = symbols[referredSegments[i]]; - - if (referredSymbols) { - inputSymbols = inputSymbols.concat(referredSymbols); - } - } - - var symbolCodeLength = (0, _util.log2)(inputSymbols.length); - - if (region.huffman) { - huffmanInput = new Reader(data, start, end); - huffmanTables = getTextRegionHuffmanTables(region, referredSegments, this.customTables, inputSymbols.length, huffmanInput); - } - - var decodingContext = new DecodingContext(data, start, end); - var bitmap = decodeTextRegion(region.huffman, region.refinement, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.numberOfSymbolInstances, region.stripSize, inputSymbols, symbolCodeLength, region.transposed, region.dsOffset, region.referenceCorner, region.combinationOperator, huffmanTables, region.refinementTemplate, region.refinementAt, decodingContext, region.logStripSize, huffmanInput); - this.drawBitmap(regionInfo, bitmap); - }, - onImmediateLosslessTextRegion: function SimpleSegmentVisitor_onImmediateLosslessTextRegion() { - this.onImmediateTextRegion.apply(this, arguments); - }, - onPatternDictionary: function onPatternDictionary(dictionary, currentSegment, data, start, end) { - var patterns = this.patterns; - - if (!patterns) { - this.patterns = patterns = {}; - } - - var decodingContext = new DecodingContext(data, start, end); - patterns[currentSegment] = decodePatternDictionary(dictionary.mmr, dictionary.patternWidth, dictionary.patternHeight, dictionary.maxPatternIndex, dictionary.template, decodingContext); - }, - onImmediateHalftoneRegion: function onImmediateHalftoneRegion(region, referredSegments, data, start, end) { - var patterns = this.patterns[referredSegments[0]]; - var regionInfo = region.info; - var decodingContext = new DecodingContext(data, start, end); - var bitmap = decodeHalftoneRegion(region.mmr, patterns, region.template, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.enableSkip, region.combinationOperator, region.gridWidth, region.gridHeight, region.gridOffsetX, region.gridOffsetY, region.gridVectorX, region.gridVectorY, decodingContext); - this.drawBitmap(regionInfo, bitmap); - }, - onImmediateLosslessHalftoneRegion: function onImmediateLosslessHalftoneRegion() { - this.onImmediateHalftoneRegion.apply(this, arguments); - }, - onTables: function onTables(currentSegment, data, start, end) { - var customTables = this.customTables; - - if (!customTables) { - this.customTables = customTables = {}; - } - - customTables[currentSegment] = decodeTablesSegment(data, start, end); } - }; - function HuffmanLine(lineData) { + const symbolCodeLength = (0, _core_utils.log2)(inputSymbols.length); + + if (region.huffman) { + huffmanInput = new Reader(data, start, end); + huffmanTables = getTextRegionHuffmanTables(region, referredSegments, this.customTables, inputSymbols.length, huffmanInput); + } + + const decodingContext = new DecodingContext(data, start, end); + const bitmap = decodeTextRegion(region.huffman, region.refinement, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.numberOfSymbolInstances, region.stripSize, inputSymbols, symbolCodeLength, region.transposed, region.dsOffset, region.referenceCorner, region.combinationOperator, huffmanTables, region.refinementTemplate, region.refinementAt, decodingContext, region.logStripSize, huffmanInput); + this.drawBitmap(regionInfo, bitmap); + } + + onImmediateLosslessTextRegion() { + this.onImmediateTextRegion(...arguments); + } + + onPatternDictionary(dictionary, currentSegment, data, start, end) { + let patterns = this.patterns; + + if (!patterns) { + this.patterns = patterns = {}; + } + + const decodingContext = new DecodingContext(data, start, end); + patterns[currentSegment] = decodePatternDictionary(dictionary.mmr, dictionary.patternWidth, dictionary.patternHeight, dictionary.maxPatternIndex, dictionary.template, decodingContext); + } + + onImmediateHalftoneRegion(region, referredSegments, data, start, end) { + const patterns = this.patterns[referredSegments[0]]; + const regionInfo = region.info; + const decodingContext = new DecodingContext(data, start, end); + const bitmap = decodeHalftoneRegion(region.mmr, patterns, region.template, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.enableSkip, region.combinationOperator, region.gridWidth, region.gridHeight, region.gridOffsetX, region.gridOffsetY, region.gridVectorX, region.gridVectorY, decodingContext); + this.drawBitmap(regionInfo, bitmap); + } + + onImmediateLosslessHalftoneRegion() { + this.onImmediateHalftoneRegion(...arguments); + } + + onTables(currentSegment, data, start, end) { + let customTables = this.customTables; + + if (!customTables) { + this.customTables = customTables = {}; + } + + customTables[currentSegment] = decodeTablesSegment(data, start, end); + } + +} + +class HuffmanLine { + constructor(lineData) { if (lineData.length === 2) { this.isOOB = true; this.rangeLow = 0; @@ -20847,11 +23294,14 @@ var Jbig2Image = function Jbig2ImageClosure() { this.prefixLength = lineData[1]; this.rangeLength = lineData[2]; this.prefixCode = lineData[3]; - this.isLowerRange = lineData[4] === 'lower'; + this.isLowerRange = lineData[4] === "lower"; } } - function HuffmanTreeNode(line) { +} + +class HuffmanTreeNode { + constructor(line) { this.children = []; if (line) { @@ -20865,54 +23315,53 @@ var Jbig2Image = function Jbig2ImageClosure() { } } - HuffmanTreeNode.prototype = { - buildTree: function buildTree(line, shift) { - var bit = line.prefixCode >> shift & 1; + buildTree(line, shift) { + const bit = line.prefixCode >> shift & 1; - if (shift <= 0) { - this.children[bit] = new HuffmanTreeNode(line); - } else { - var node = this.children[bit]; - - if (!node) { - this.children[bit] = node = new HuffmanTreeNode(null); - } - - node.buildTree(line, shift - 1); - } - }, - decodeNode: function decodeNode(reader) { - if (this.isLeaf) { - if (this.isOOB) { - return null; - } - - var htOffset = reader.readBits(this.rangeLength); - return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset); - } - - var node = this.children[reader.readBit()]; + if (shift <= 0) { + this.children[bit] = new HuffmanTreeNode(line); + } else { + let node = this.children[bit]; if (!node) { - throw new Jbig2Error('invalid Huffman data'); + this.children[bit] = node = new HuffmanTreeNode(null); } - return node.decodeNode(reader); + node.buildTree(line, shift - 1); } - }; + } - function HuffmanTable(lines, prefixCodesDone) { + decodeNode(reader) { + if (this.isLeaf) { + if (this.isOOB) { + return null; + } + + const htOffset = reader.readBits(this.rangeLength); + return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset); + } + + const node = this.children[reader.readBit()]; + + if (!node) { + throw new Jbig2Error("invalid Huffman data"); + } + + return node.decodeNode(reader); + } + +} + +class HuffmanTable { + constructor(lines, prefixCodesDone) { if (!prefixCodesDone) { this.assignPrefixCodes(lines); } this.rootNode = new HuffmanTreeNode(null); - var i, - ii = lines.length, - line; - for (i = 0; i < ii; i++) { - line = lines[i]; + for (let i = 0, ii = lines.length; i < ii; i++) { + const line = lines[i]; if (line.prefixLength > 0) { this.rootNode.buildTree(line, line.prefixLength - 1); @@ -20920,174 +23369,172 @@ var Jbig2Image = function Jbig2ImageClosure() { } } - HuffmanTable.prototype = { - decode: function decode(reader) { - return this.rootNode.decodeNode(reader); - }, - assignPrefixCodes: function assignPrefixCodes(lines) { - var linesLength = lines.length, - prefixLengthMax = 0, - i; - - for (i = 0; i < linesLength; i++) { - prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength); - } - - var histogram = new Uint32Array(prefixLengthMax + 1); - - for (i = 0; i < linesLength; i++) { - histogram[lines[i].prefixLength]++; - } - - var currentLength = 1, - firstCode = 0, - currentCode, - currentTemp, - line; - histogram[0] = 0; - - while (currentLength <= prefixLengthMax) { - firstCode = firstCode + histogram[currentLength - 1] << 1; - currentCode = firstCode; - currentTemp = 0; - - while (currentTemp < linesLength) { - line = lines[currentTemp]; - - if (line.prefixLength === currentLength) { - line.prefixCode = currentCode; - currentCode++; - } - - currentTemp++; - } - - currentLength++; - } - } - }; - - function decodeTablesSegment(data, start, end) { - var flags = data[start]; - var lowestValue = (0, _util.readUint32)(data, start + 1) & 0xFFFFFFFF; - var highestValue = (0, _util.readUint32)(data, start + 5) & 0xFFFFFFFF; - var reader = new Reader(data, start + 9, end); - var prefixSizeBits = (flags >> 1 & 7) + 1; - var rangeSizeBits = (flags >> 4 & 7) + 1; - var lines = []; - var prefixLength, - rangeLength, - currentRangeLow = lowestValue; - - do { - prefixLength = reader.readBits(prefixSizeBits); - rangeLength = reader.readBits(rangeSizeBits); - lines.push(new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])); - currentRangeLow += 1 << rangeLength; - } while (currentRangeLow < highestValue); - - prefixLength = reader.readBits(prefixSizeBits); - lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, 'lower'])); - prefixLength = reader.readBits(prefixSizeBits); - lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0])); - - if (flags & 1) { - prefixLength = reader.readBits(prefixSizeBits); - lines.push(new HuffmanLine([prefixLength, 0])); - } - - return new HuffmanTable(lines, false); + decode(reader) { + return this.rootNode.decodeNode(reader); } - var standardTablesCache = {}; + assignPrefixCodes(lines) { + const linesLength = lines.length; + let prefixLengthMax = 0; - function getStandardTable(number) { - var table = standardTablesCache[number]; - - if (table) { - return table; + for (let i = 0; i < linesLength; i++) { + prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength); } - var lines; + const histogram = new Uint32Array(prefixLengthMax + 1); - switch (number) { - case 1: - lines = [[0, 1, 4, 0x0], [16, 2, 8, 0x2], [272, 3, 16, 0x6], [65808, 3, 32, 0x7]]; - break; - - case 2: - lines = [[0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xE], [11, 5, 6, 0x1E], [75, 6, 32, 0x3E], [6, 0x3F]]; - break; - - case 3: - lines = [[-256, 8, 8, 0xFE], [0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xE], [11, 5, 6, 0x1E], [-257, 8, 32, 0xFF, 'lower'], [75, 7, 32, 0x7E], [6, 0x3E]]; - break; - - case 4: - lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xE], [12, 5, 6, 0x1E], [76, 5, 32, 0x1F]]; - break; - - case 5: - lines = [[-255, 7, 8, 0x7E], [1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xE], [12, 5, 6, 0x1E], [-256, 7, 32, 0x7F, 'lower'], [76, 6, 32, 0x3E]]; - break; - - case 6: - lines = [[-2048, 5, 10, 0x1C], [-1024, 4, 9, 0x8], [-512, 4, 8, 0x9], [-256, 4, 7, 0xA], [-128, 5, 6, 0x1D], [-64, 5, 5, 0x1E], [-32, 4, 5, 0xB], [0, 2, 7, 0x0], [128, 3, 7, 0x2], [256, 3, 8, 0x3], [512, 4, 9, 0xC], [1024, 4, 10, 0xD], [-2049, 6, 32, 0x3E, 'lower'], [2048, 6, 32, 0x3F]]; - break; - - case 7: - lines = [[-1024, 4, 9, 0x8], [-512, 3, 8, 0x0], [-256, 4, 7, 0x9], [-128, 5, 6, 0x1A], [-64, 5, 5, 0x1B], [-32, 4, 5, 0xA], [0, 4, 5, 0xB], [32, 5, 5, 0x1C], [64, 5, 6, 0x1D], [128, 4, 7, 0xC], [256, 3, 8, 0x1], [512, 3, 9, 0x2], [1024, 3, 10, 0x3], [-1025, 5, 32, 0x1E, 'lower'], [2048, 5, 32, 0x1F]]; - break; - - case 8: - lines = [[-15, 8, 3, 0xFC], [-7, 9, 1, 0x1FC], [-5, 8, 1, 0xFD], [-3, 9, 0, 0x1FD], [-2, 7, 0, 0x7C], [-1, 4, 0, 0xA], [0, 2, 1, 0x0], [2, 5, 0, 0x1A], [3, 6, 0, 0x3A], [4, 3, 4, 0x4], [20, 6, 1, 0x3B], [22, 4, 4, 0xB], [38, 4, 5, 0xC], [70, 5, 6, 0x1B], [134, 5, 7, 0x1C], [262, 6, 7, 0x3C], [390, 7, 8, 0x7D], [646, 6, 10, 0x3D], [-16, 9, 32, 0x1FE, 'lower'], [1670, 9, 32, 0x1FF], [2, 0x1]]; - break; - - case 9: - lines = [[-31, 8, 4, 0xFC], [-15, 9, 2, 0x1FC], [-11, 8, 2, 0xFD], [-7, 9, 1, 0x1FD], [-5, 7, 1, 0x7C], [-3, 4, 1, 0xA], [-1, 3, 1, 0x2], [1, 3, 1, 0x3], [3, 5, 1, 0x1A], [5, 6, 1, 0x3A], [7, 3, 5, 0x4], [39, 6, 2, 0x3B], [43, 4, 5, 0xB], [75, 4, 6, 0xC], [139, 5, 7, 0x1B], [267, 5, 8, 0x1C], [523, 6, 8, 0x3C], [779, 7, 9, 0x7D], [1291, 6, 11, 0x3D], [-32, 9, 32, 0x1FE, 'lower'], [3339, 9, 32, 0x1FF], [2, 0x0]]; - break; - - case 10: - lines = [[-21, 7, 4, 0x7A], [-5, 8, 0, 0xFC], [-4, 7, 0, 0x7B], [-3, 5, 0, 0x18], [-2, 2, 2, 0x0], [2, 5, 0, 0x19], [3, 6, 0, 0x36], [4, 7, 0, 0x7C], [5, 8, 0, 0xFD], [6, 2, 6, 0x1], [70, 5, 5, 0x1A], [102, 6, 5, 0x37], [134, 6, 6, 0x38], [198, 6, 7, 0x39], [326, 6, 8, 0x3A], [582, 6, 9, 0x3B], [1094, 6, 10, 0x3C], [2118, 7, 11, 0x7D], [-22, 8, 32, 0xFE, 'lower'], [4166, 8, 32, 0xFF], [2, 0x2]]; - break; - - case 11: - lines = [[1, 1, 0, 0x0], [2, 2, 1, 0x2], [4, 4, 0, 0xC], [5, 4, 1, 0xD], [7, 5, 1, 0x1C], [9, 5, 2, 0x1D], [13, 6, 2, 0x3C], [17, 7, 2, 0x7A], [21, 7, 3, 0x7B], [29, 7, 4, 0x7C], [45, 7, 5, 0x7D], [77, 7, 6, 0x7E], [141, 7, 32, 0x7F]]; - break; - - case 12: - lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 1, 0x6], [5, 5, 0, 0x1C], [6, 5, 1, 0x1D], [8, 6, 1, 0x3C], [10, 7, 0, 0x7A], [11, 7, 1, 0x7B], [13, 7, 2, 0x7C], [17, 7, 3, 0x7D], [25, 7, 4, 0x7E], [41, 8, 5, 0xFE], [73, 8, 32, 0xFF]]; - break; - - case 13: - lines = [[1, 1, 0, 0x0], [2, 3, 0, 0x4], [3, 4, 0, 0xC], [4, 5, 0, 0x1C], [5, 4, 1, 0xD], [7, 3, 3, 0x5], [15, 6, 1, 0x3A], [17, 6, 2, 0x3B], [21, 6, 3, 0x3C], [29, 6, 4, 0x3D], [45, 6, 5, 0x3E], [77, 7, 6, 0x7E], [141, 7, 32, 0x7F]]; - break; - - case 14: - lines = [[-2, 3, 0, 0x4], [-1, 3, 0, 0x5], [0, 1, 0, 0x0], [1, 3, 0, 0x6], [2, 3, 0, 0x7]]; - break; - - case 15: - lines = [[-24, 7, 4, 0x7C], [-8, 6, 2, 0x3C], [-4, 5, 1, 0x1C], [-2, 4, 0, 0xC], [-1, 3, 0, 0x4], [0, 1, 0, 0x0], [1, 3, 0, 0x5], [2, 4, 0, 0xD], [3, 5, 1, 0x1D], [5, 6, 2, 0x3D], [9, 7, 4, 0x7D], [-25, 7, 32, 0x7E, 'lower'], [25, 7, 32, 0x7F]]; - break; - - default: - throw new Jbig2Error("standard table B.".concat(number, " does not exist")); + for (let i = 0; i < linesLength; i++) { + histogram[lines[i].prefixLength]++; } - var length = lines.length, - i; + let currentLength = 1, + firstCode = 0, + currentCode, + currentTemp, + line; + histogram[0] = 0; - for (i = 0; i < length; i++) { - lines[i] = new HuffmanLine(lines[i]); + while (currentLength <= prefixLengthMax) { + firstCode = firstCode + histogram[currentLength - 1] << 1; + currentCode = firstCode; + currentTemp = 0; + + while (currentTemp < linesLength) { + line = lines[currentTemp]; + + if (line.prefixLength === currentLength) { + line.prefixCode = currentCode; + currentCode++; + } + + currentTemp++; + } + + currentLength++; } + } - table = new HuffmanTable(lines, true); - standardTablesCache[number] = table; +} + +function decodeTablesSegment(data, start, end) { + const flags = data[start]; + const lowestValue = (0, _core_utils.readUint32)(data, start + 1) & 0xffffffff; + const highestValue = (0, _core_utils.readUint32)(data, start + 5) & 0xffffffff; + const reader = new Reader(data, start + 9, end); + const prefixSizeBits = (flags >> 1 & 7) + 1; + const rangeSizeBits = (flags >> 4 & 7) + 1; + const lines = []; + let prefixLength, + rangeLength, + currentRangeLow = lowestValue; + + do { + prefixLength = reader.readBits(prefixSizeBits); + rangeLength = reader.readBits(rangeSizeBits); + lines.push(new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])); + currentRangeLow += 1 << rangeLength; + } while (currentRangeLow < highestValue); + + prefixLength = reader.readBits(prefixSizeBits); + lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, "lower"])); + prefixLength = reader.readBits(prefixSizeBits); + lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0])); + + if (flags & 1) { + prefixLength = reader.readBits(prefixSizeBits); + lines.push(new HuffmanLine([prefixLength, 0])); + } + + return new HuffmanTable(lines, false); +} + +const standardTablesCache = {}; + +function getStandardTable(number) { + let table = standardTablesCache[number]; + + if (table) { return table; } - function Reader(data, start, end) { + let lines; + + switch (number) { + case 1: + lines = [[0, 1, 4, 0x0], [16, 2, 8, 0x2], [272, 3, 16, 0x6], [65808, 3, 32, 0x7]]; + break; + + case 2: + lines = [[0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [75, 6, 32, 0x3e], [6, 0x3f]]; + break; + + case 3: + lines = [[-256, 8, 8, 0xfe], [0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [-257, 8, 32, 0xff, "lower"], [75, 7, 32, 0x7e], [6, 0x3e]]; + break; + + case 4: + lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [76, 5, 32, 0x1f]]; + break; + + case 5: + lines = [[-255, 7, 8, 0x7e], [1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [-256, 7, 32, 0x7f, "lower"], [76, 6, 32, 0x3e]]; + break; + + case 6: + lines = [[-2048, 5, 10, 0x1c], [-1024, 4, 9, 0x8], [-512, 4, 8, 0x9], [-256, 4, 7, 0xa], [-128, 5, 6, 0x1d], [-64, 5, 5, 0x1e], [-32, 4, 5, 0xb], [0, 2, 7, 0x0], [128, 3, 7, 0x2], [256, 3, 8, 0x3], [512, 4, 9, 0xc], [1024, 4, 10, 0xd], [-2049, 6, 32, 0x3e, "lower"], [2048, 6, 32, 0x3f]]; + break; + + case 7: + lines = [[-1024, 4, 9, 0x8], [-512, 3, 8, 0x0], [-256, 4, 7, 0x9], [-128, 5, 6, 0x1a], [-64, 5, 5, 0x1b], [-32, 4, 5, 0xa], [0, 4, 5, 0xb], [32, 5, 5, 0x1c], [64, 5, 6, 0x1d], [128, 4, 7, 0xc], [256, 3, 8, 0x1], [512, 3, 9, 0x2], [1024, 3, 10, 0x3], [-1025, 5, 32, 0x1e, "lower"], [2048, 5, 32, 0x1f]]; + break; + + case 8: + lines = [[-15, 8, 3, 0xfc], [-7, 9, 1, 0x1fc], [-5, 8, 1, 0xfd], [-3, 9, 0, 0x1fd], [-2, 7, 0, 0x7c], [-1, 4, 0, 0xa], [0, 2, 1, 0x0], [2, 5, 0, 0x1a], [3, 6, 0, 0x3a], [4, 3, 4, 0x4], [20, 6, 1, 0x3b], [22, 4, 4, 0xb], [38, 4, 5, 0xc], [70, 5, 6, 0x1b], [134, 5, 7, 0x1c], [262, 6, 7, 0x3c], [390, 7, 8, 0x7d], [646, 6, 10, 0x3d], [-16, 9, 32, 0x1fe, "lower"], [1670, 9, 32, 0x1ff], [2, 0x1]]; + break; + + case 9: + lines = [[-31, 8, 4, 0xfc], [-15, 9, 2, 0x1fc], [-11, 8, 2, 0xfd], [-7, 9, 1, 0x1fd], [-5, 7, 1, 0x7c], [-3, 4, 1, 0xa], [-1, 3, 1, 0x2], [1, 3, 1, 0x3], [3, 5, 1, 0x1a], [5, 6, 1, 0x3a], [7, 3, 5, 0x4], [39, 6, 2, 0x3b], [43, 4, 5, 0xb], [75, 4, 6, 0xc], [139, 5, 7, 0x1b], [267, 5, 8, 0x1c], [523, 6, 8, 0x3c], [779, 7, 9, 0x7d], [1291, 6, 11, 0x3d], [-32, 9, 32, 0x1fe, "lower"], [3339, 9, 32, 0x1ff], [2, 0x0]]; + break; + + case 10: + lines = [[-21, 7, 4, 0x7a], [-5, 8, 0, 0xfc], [-4, 7, 0, 0x7b], [-3, 5, 0, 0x18], [-2, 2, 2, 0x0], [2, 5, 0, 0x19], [3, 6, 0, 0x36], [4, 7, 0, 0x7c], [5, 8, 0, 0xfd], [6, 2, 6, 0x1], [70, 5, 5, 0x1a], [102, 6, 5, 0x37], [134, 6, 6, 0x38], [198, 6, 7, 0x39], [326, 6, 8, 0x3a], [582, 6, 9, 0x3b], [1094, 6, 10, 0x3c], [2118, 7, 11, 0x7d], [-22, 8, 32, 0xfe, "lower"], [4166, 8, 32, 0xff], [2, 0x2]]; + break; + + case 11: + lines = [[1, 1, 0, 0x0], [2, 2, 1, 0x2], [4, 4, 0, 0xc], [5, 4, 1, 0xd], [7, 5, 1, 0x1c], [9, 5, 2, 0x1d], [13, 6, 2, 0x3c], [17, 7, 2, 0x7a], [21, 7, 3, 0x7b], [29, 7, 4, 0x7c], [45, 7, 5, 0x7d], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]]; + break; + + case 12: + lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 1, 0x6], [5, 5, 0, 0x1c], [6, 5, 1, 0x1d], [8, 6, 1, 0x3c], [10, 7, 0, 0x7a], [11, 7, 1, 0x7b], [13, 7, 2, 0x7c], [17, 7, 3, 0x7d], [25, 7, 4, 0x7e], [41, 8, 5, 0xfe], [73, 8, 32, 0xff]]; + break; + + case 13: + lines = [[1, 1, 0, 0x0], [2, 3, 0, 0x4], [3, 4, 0, 0xc], [4, 5, 0, 0x1c], [5, 4, 1, 0xd], [7, 3, 3, 0x5], [15, 6, 1, 0x3a], [17, 6, 2, 0x3b], [21, 6, 3, 0x3c], [29, 6, 4, 0x3d], [45, 6, 5, 0x3e], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]]; + break; + + case 14: + lines = [[-2, 3, 0, 0x4], [-1, 3, 0, 0x5], [0, 1, 0, 0x0], [1, 3, 0, 0x6], [2, 3, 0, 0x7]]; + break; + + case 15: + lines = [[-24, 7, 4, 0x7c], [-8, 6, 2, 0x3c], [-4, 5, 1, 0x1c], [-2, 4, 0, 0xc], [-1, 3, 0, 0x4], [0, 1, 0, 0x0], [1, 3, 0, 0x5], [2, 4, 0, 0xd], [3, 5, 1, 0x1d], [5, 6, 2, 0x3d], [9, 7, 4, 0x7d], [-25, 7, 32, 0x7e, "lower"], [25, 7, 32, 0x7f]]; + break; + + default: + throw new Jbig2Error(`standard table B.${number} does not exist`); + } + + for (let i = 0, ii = lines.length; i < ii; i++) { + lines[i] = new HuffmanLine(lines[i]); + } + + table = new HuffmanTable(lines, true); + standardTablesCache[number] = table; + return table; +} + +class Reader { + constructor(data, start, end) { this.data = data; this.start = start; this.end = end; @@ -21096,356 +23543,329 @@ var Jbig2Image = function Jbig2ImageClosure() { this.currentByte = 0; } - Reader.prototype = { - readBit: function readBit() { - if (this.shift < 0) { - if (this.position >= this.end) { - throw new Jbig2Error('end of data while reading bit'); - } - - this.currentByte = this.data[this.position++]; - this.shift = 7; - } - - var bit = this.currentByte >> this.shift & 1; - this.shift--; - return bit; - }, - readBits: function readBits(numBits) { - var result = 0, - i; - - for (i = numBits - 1; i >= 0; i--) { - result |= this.readBit() << i; - } - - return result; - }, - byteAlign: function byteAlign() { - this.shift = -1; - }, - next: function next() { + readBit() { + if (this.shift < 0) { if (this.position >= this.end) { - return -1; + throw new Jbig2Error("end of data while reading bit"); } - return this.data[this.position++]; - } - }; - - function getCustomHuffmanTable(index, referredTo, customTables) { - var currentIndex = 0, - i, - ii = referredTo.length, - table; - - for (i = 0; i < ii; i++) { - table = customTables[referredTo[i]]; - - if (table) { - if (index === currentIndex) { - return table; - } - - currentIndex++; - } + this.currentByte = this.data[this.position++]; + this.shift = 7; } - throw new Jbig2Error('can\'t find custom Huffman table'); + const bit = this.currentByte >> this.shift & 1; + this.shift--; + return bit; } - function getTextRegionHuffmanTables(textRegion, referredTo, customTables, numberOfSymbols, reader) { - var codes = [], - i, - codeLength; + readBits(numBits) { + let result = 0, + i; - for (i = 0; i <= 34; i++) { - codeLength = reader.readBits(4); - codes.push(new HuffmanLine([i, codeLength, 0, 0])); + for (i = numBits - 1; i >= 0; i--) { + result |= this.readBit() << i; } - var runCodesTable = new HuffmanTable(codes, false); - codes.length = 0; + return result; + } - for (i = 0; i < numberOfSymbols;) { - codeLength = runCodesTable.decode(reader); + byteAlign() { + this.shift = -1; + } - if (codeLength >= 32) { - var repeatedLength = void 0, - numberOfRepeats = void 0, - j = void 0; + next() { + if (this.position >= this.end) { + return -1; + } - switch (codeLength) { - case 32: - if (i === 0) { - throw new Jbig2Error('no previous value in symbol ID table'); - } + return this.data[this.position++]; + } - numberOfRepeats = reader.readBits(2) + 3; - repeatedLength = codes[i - 1].prefixLength; - break; +} - case 33: - numberOfRepeats = reader.readBits(3) + 3; - repeatedLength = 0; - break; +function getCustomHuffmanTable(index, referredTo, customTables) { + let currentIndex = 0; - case 34: - numberOfRepeats = reader.readBits(7) + 11; - repeatedLength = 0; - break; + for (let i = 0, ii = referredTo.length; i < ii; i++) { + const table = customTables[referredTo[i]]; - default: - throw new Jbig2Error('invalid code length in symbol ID table'); - } + if (table) { + if (index === currentIndex) { + return table; + } - for (j = 0; j < numberOfRepeats; j++) { - codes.push(new HuffmanLine([i, repeatedLength, 0, 0])); - i++; - } - } else { - codes.push(new HuffmanLine([i, codeLength, 0, 0])); + currentIndex++; + } + } + + throw new Jbig2Error("can't find custom Huffman table"); +} + +function getTextRegionHuffmanTables(textRegion, referredTo, customTables, numberOfSymbols, reader) { + const codes = []; + + for (let i = 0; i <= 34; i++) { + const codeLength = reader.readBits(4); + codes.push(new HuffmanLine([i, codeLength, 0, 0])); + } + + const runCodesTable = new HuffmanTable(codes, false); + codes.length = 0; + + for (let i = 0; i < numberOfSymbols;) { + const codeLength = runCodesTable.decode(reader); + + if (codeLength >= 32) { + let repeatedLength, numberOfRepeats, j; + + switch (codeLength) { + case 32: + if (i === 0) { + throw new Jbig2Error("no previous value in symbol ID table"); + } + + numberOfRepeats = reader.readBits(2) + 3; + repeatedLength = codes[i - 1].prefixLength; + break; + + case 33: + numberOfRepeats = reader.readBits(3) + 3; + repeatedLength = 0; + break; + + case 34: + numberOfRepeats = reader.readBits(7) + 11; + repeatedLength = 0; + break; + + default: + throw new Jbig2Error("invalid code length in symbol ID table"); + } + + for (j = 0; j < numberOfRepeats; j++) { + codes.push(new HuffmanLine([i, repeatedLength, 0, 0])); i++; } + } else { + codes.push(new HuffmanLine([i, codeLength, 0, 0])); + i++; + } + } + + reader.byteAlign(); + const symbolIDTable = new HuffmanTable(codes, false); + let customIndex = 0, + tableFirstS, + tableDeltaS, + tableDeltaT; + + switch (textRegion.huffmanFS) { + case 0: + case 1: + tableFirstS = getStandardTable(textRegion.huffmanFS + 6); + break; + + case 3: + tableFirstS = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + break; + + default: + throw new Jbig2Error("invalid Huffman FS selector"); + } + + switch (textRegion.huffmanDS) { + case 0: + case 1: + case 2: + tableDeltaS = getStandardTable(textRegion.huffmanDS + 8); + break; + + case 3: + tableDeltaS = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + break; + + default: + throw new Jbig2Error("invalid Huffman DS selector"); + } + + switch (textRegion.huffmanDT) { + case 0: + case 1: + case 2: + tableDeltaT = getStandardTable(textRegion.huffmanDT + 11); + break; + + case 3: + tableDeltaT = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + break; + + default: + throw new Jbig2Error("invalid Huffman DT selector"); + } + + if (textRegion.refinement) { + throw new Jbig2Error("refinement with Huffman is not supported"); + } + + return { + symbolIDTable, + tableFirstS, + tableDeltaS, + tableDeltaT + }; +} + +function getSymbolDictionaryHuffmanTables(dictionary, referredTo, customTables) { + let customIndex = 0, + tableDeltaHeight, + tableDeltaWidth; + + switch (dictionary.huffmanDHSelector) { + case 0: + case 1: + tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4); + break; + + case 3: + tableDeltaHeight = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + break; + + default: + throw new Jbig2Error("invalid Huffman DH selector"); + } + + switch (dictionary.huffmanDWSelector) { + case 0: + case 1: + tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2); + break; + + case 3: + tableDeltaWidth = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + break; + + default: + throw new Jbig2Error("invalid Huffman DW selector"); + } + + let tableBitmapSize, tableAggregateInstances; + + if (dictionary.bitmapSizeSelector) { + tableBitmapSize = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + } else { + tableBitmapSize = getStandardTable(1); + } + + if (dictionary.aggregationInstancesSelector) { + tableAggregateInstances = getCustomHuffmanTable(customIndex, referredTo, customTables); + } else { + tableAggregateInstances = getStandardTable(1); + } + + return { + tableDeltaHeight, + tableDeltaWidth, + tableBitmapSize, + tableAggregateInstances + }; +} + +function readUncompressedBitmap(reader, width, height) { + const bitmap = []; + + for (let y = 0; y < height; y++) { + const row = new Uint8Array(width); + bitmap.push(row); + + for (let x = 0; x < width; x++) { + row[x] = reader.readBit(); } reader.byteAlign(); - var symbolIDTable = new HuffmanTable(codes, false); - var customIndex = 0, - tableFirstS, - tableDeltaS, - tableDeltaT; - - switch (textRegion.huffmanFS) { - case 0: - case 1: - tableFirstS = getStandardTable(textRegion.huffmanFS + 6); - break; - - case 3: - tableFirstS = getCustomHuffmanTable(customIndex, referredTo, customTables); - customIndex++; - break; - - default: - throw new Jbig2Error('invalid Huffman FS selector'); - } - - switch (textRegion.huffmanDS) { - case 0: - case 1: - case 2: - tableDeltaS = getStandardTable(textRegion.huffmanDS + 8); - break; - - case 3: - tableDeltaS = getCustomHuffmanTable(customIndex, referredTo, customTables); - customIndex++; - break; - - default: - throw new Jbig2Error('invalid Huffman DS selector'); - } - - switch (textRegion.huffmanDT) { - case 0: - case 1: - case 2: - tableDeltaT = getStandardTable(textRegion.huffmanDT + 11); - break; - - case 3: - tableDeltaT = getCustomHuffmanTable(customIndex, referredTo, customTables); - customIndex++; - break; - - default: - throw new Jbig2Error('invalid Huffman DT selector'); - } - - if (textRegion.refinement) { - throw new Jbig2Error('refinement with Huffman is not supported'); - } - - return { - symbolIDTable: symbolIDTable, - tableFirstS: tableFirstS, - tableDeltaS: tableDeltaS, - tableDeltaT: tableDeltaT - }; } - function getSymbolDictionaryHuffmanTables(dictionary, referredTo, customTables) { - var customIndex = 0, - tableDeltaHeight, - tableDeltaWidth; + return bitmap; +} - switch (dictionary.huffmanDHSelector) { - case 0: - case 1: - tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4); - break; - - case 3: - tableDeltaHeight = getCustomHuffmanTable(customIndex, referredTo, customTables); - customIndex++; - break; - - default: - throw new Jbig2Error('invalid Huffman DH selector'); - } - - switch (dictionary.huffmanDWSelector) { - case 0: - case 1: - tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2); - break; - - case 3: - tableDeltaWidth = getCustomHuffmanTable(customIndex, referredTo, customTables); - customIndex++; - break; - - default: - throw new Jbig2Error('invalid Huffman DW selector'); - } - - var tableBitmapSize, tableAggregateInstances; - - if (dictionary.bitmapSizeSelector) { - tableBitmapSize = getCustomHuffmanTable(customIndex, referredTo, customTables); - customIndex++; - } else { - tableBitmapSize = getStandardTable(1); - } - - if (dictionary.aggregationInstancesSelector) { - tableAggregateInstances = getCustomHuffmanTable(customIndex, referredTo, customTables); - } else { - tableAggregateInstances = getStandardTable(1); - } - - return { - tableDeltaHeight: tableDeltaHeight, - tableDeltaWidth: tableDeltaWidth, - tableBitmapSize: tableBitmapSize, - tableAggregateInstances: tableAggregateInstances - }; - } - - function readUncompressedBitmap(reader, width, height) { - var bitmap = [], - x, - y, - row; - - for (y = 0; y < height; y++) { - row = new Uint8Array(width); - bitmap.push(row); - - for (x = 0; x < width; x++) { - row[x] = reader.readBit(); - } - - reader.byteAlign(); - } - - return bitmap; - } - - function decodeMMRBitmap(input, width, height, endOfBlock) { - var params = { - K: -1, - Columns: width, - Rows: height, - BlackIs1: true, - EndOfBlock: endOfBlock - }; - var decoder = new _ccitt.CCITTFaxDecoder(input, params); - var bitmap = [], - x, - y, - row, - currentByte, - shift, - eof = false; - - for (y = 0; y < height; y++) { - row = new Uint8Array(width); - bitmap.push(row); - shift = -1; - - for (x = 0; x < width; x++) { - if (shift < 0) { - currentByte = decoder.readNextChar(); - - if (currentByte === -1) { - currentByte = 0; - eof = true; - } - - shift = 7; - } - - row[x] = currentByte >> shift & 1; - shift--; - } - } - - if (endOfBlock && !eof) { - var lookForEOFLimit = 5; - - for (var i = 0; i < lookForEOFLimit; i++) { - if (decoder.readNextChar() === -1) { - break; - } - } - } - - return bitmap; - } - - function Jbig2Image() {} - - Jbig2Image.prototype = { - parseChunks: function parseChunks(chunks) { - return parseJbig2Chunks(chunks); - }, - parse: function parse(data) { - var _parseJbig = parseJbig2(data), - imgData = _parseJbig.imgData, - width = _parseJbig.width, - height = _parseJbig.height; - - this.width = width; - this.height = height; - return imgData; - } +function decodeMMRBitmap(input, width, height, endOfBlock) { + const params = { + K: -1, + Columns: width, + Rows: height, + BlackIs1: true, + EndOfBlock: endOfBlock }; - return Jbig2Image; -}(); + const decoder = new _ccitt.CCITTFaxDecoder(input, params); + const bitmap = []; + let currentByte, + eof = false; + + for (let y = 0; y < height; y++) { + const row = new Uint8Array(width); + bitmap.push(row); + let shift = -1; + + for (let x = 0; x < width; x++) { + if (shift < 0) { + currentByte = decoder.readNextChar(); + + if (currentByte === -1) { + currentByte = 0; + eof = true; + } + + shift = 7; + } + + row[x] = currentByte >> shift & 1; + shift--; + } + } + + if (endOfBlock && !eof) { + const lookForEOFLimit = 5; + + for (let i = 0; i < lookForEOFLimit; i++) { + if (decoder.readNextChar() === -1) { + break; + } + } + } + + return bitmap; +} + +class Jbig2Image { + parseChunks(chunks) { + return parseJbig2Chunks(chunks); + } + + parse(data) { + throw new Error("Not implemented: Jbig2Image.parse"); + } + +} exports.Jbig2Image = Jbig2Image; /***/ }), -/* 163 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 151 */ +/***/ ((__unused_webpack_module, exports) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.ArithmeticDecoder = void 0; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var QeTable = [{ +const QeTable = [{ qe: 0x5601, nmps: 1, nlps: 1, @@ -21461,7 +23881,7 @@ var QeTable = [{ nlps: 9, switchFlag: 0 }, { - qe: 0x0AC1, + qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 @@ -21506,7 +23926,7 @@ var QeTable = [{ nlps: 18, switchFlag: 0 }, { - qe: 0x1C01, + qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 @@ -21566,7 +23986,7 @@ var QeTable = [{ nlps: 21, switchFlag: 0 }, { - qe: 0x1C01, + qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 @@ -21596,17 +24016,17 @@ var QeTable = [{ nlps: 27, switchFlag: 0 }, { - qe: 0x0AC1, + qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 }, { - qe: 0x09C1, + qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 }, { - qe: 0x08A1, + qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 @@ -21621,7 +24041,7 @@ var QeTable = [{ nlps: 32, switchFlag: 0 }, { - qe: 0x02A1, + qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 @@ -21682,189 +24102,175 @@ var QeTable = [{ switchFlag: 0 }]; -var ArithmeticDecoder = -/*#__PURE__*/ -function () { - function ArithmeticDecoder(data, start, end) { - _classCallCheck(this, ArithmeticDecoder); - +class ArithmeticDecoder { + constructor(data, start, end) { this.data = data; this.bp = start; this.dataEnd = end; this.chigh = data[start]; this.clow = 0; this.byteIn(); - this.chigh = this.chigh << 7 & 0xFFFF | this.clow >> 9 & 0x7F; - this.clow = this.clow << 7 & 0xFFFF; + this.chigh = this.chigh << 7 & 0xffff | this.clow >> 9 & 0x7f; + this.clow = this.clow << 7 & 0xffff; this.ct -= 7; this.a = 0x8000; } - _createClass(ArithmeticDecoder, [{ - key: "byteIn", - value: function byteIn() { - var data = this.data; - var bp = this.bp; + byteIn() { + const data = this.data; + let bp = this.bp; - if (data[bp] === 0xFF) { - if (data[bp + 1] > 0x8F) { - this.clow += 0xFF00; - this.ct = 8; - } else { - bp++; - this.clow += data[bp] << 9; - this.ct = 7; - this.bp = bp; - } + if (data[bp] === 0xff) { + if (data[bp + 1] > 0x8f) { + this.clow += 0xff00; + this.ct = 8; } else { bp++; - this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xFF00; - this.ct = 8; + this.clow += data[bp] << 9; + this.ct = 7; this.bp = bp; } - - if (this.clow > 0xFFFF) { - this.chigh += this.clow >> 16; - this.clow &= 0xFFFF; - } + } else { + bp++; + this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00; + this.ct = 8; + this.bp = bp; } - }, { - key: "readBit", - value: function readBit(contexts, pos) { - var cx_index = contexts[pos] >> 1, - cx_mps = contexts[pos] & 1; - var qeTableIcx = QeTable[cx_index]; - var qeIcx = qeTableIcx.qe; - var d; - var a = this.a - qeIcx; - if (this.chigh < qeIcx) { - if (a < qeIcx) { - a = qeIcx; - d = cx_mps; - cx_index = qeTableIcx.nmps; - } else { - a = qeIcx; - d = 1 ^ cx_mps; + if (this.clow > 0xffff) { + this.chigh += this.clow >> 16; + this.clow &= 0xffff; + } + } - if (qeTableIcx.switchFlag === 1) { - cx_mps = d; - } + readBit(contexts, pos) { + let cx_index = contexts[pos] >> 1, + cx_mps = contexts[pos] & 1; + const qeTableIcx = QeTable[cx_index]; + const qeIcx = qeTableIcx.qe; + let d; + let a = this.a - qeIcx; - cx_index = qeTableIcx.nlps; - } + if (this.chigh < qeIcx) { + if (a < qeIcx) { + a = qeIcx; + d = cx_mps; + cx_index = qeTableIcx.nmps; } else { - this.chigh -= qeIcx; + a = qeIcx; + d = 1 ^ cx_mps; - if ((a & 0x8000) !== 0) { - this.a = a; - return cx_mps; + if (qeTableIcx.switchFlag === 1) { + cx_mps = d; } - if (a < qeIcx) { - d = 1 ^ cx_mps; + cx_index = qeTableIcx.nlps; + } + } else { + this.chigh -= qeIcx; - if (qeTableIcx.switchFlag === 1) { - cx_mps = d; - } - - cx_index = qeTableIcx.nlps; - } else { - d = cx_mps; - cx_index = qeTableIcx.nmps; - } + if ((a & 0x8000) !== 0) { + this.a = a; + return cx_mps; } - do { - if (this.ct === 0) { - this.byteIn(); + if (a < qeIcx) { + d = 1 ^ cx_mps; + + if (qeTableIcx.switchFlag === 1) { + cx_mps = d; } - a <<= 1; - this.chigh = this.chigh << 1 & 0xFFFF | this.clow >> 15 & 1; - this.clow = this.clow << 1 & 0xFFFF; - this.ct--; - } while ((a & 0x8000) === 0); - - this.a = a; - contexts[pos] = cx_index << 1 | cx_mps; - return d; + cx_index = qeTableIcx.nlps; + } else { + d = cx_mps; + cx_index = qeTableIcx.nmps; + } } - }]); - return ArithmeticDecoder; -}(); + do { + if (this.ct === 0) { + this.byteIn(); + } + + a <<= 1; + this.chigh = this.chigh << 1 & 0xffff | this.clow >> 15 & 1; + this.clow = this.clow << 1 & 0xffff; + this.ct--; + } while ((a & 0x8000) === 0); + + this.a = a; + contexts[pos] = cx_index << 1 | cx_mps; + return d; + } + +} exports.ArithmeticDecoder = ArithmeticDecoder; /***/ }), -/* 164 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 152 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.JpegStream = void 0; -var _util = __w_pdfjs_require__(5); +var _decode_stream = __w_pdfjs_require__(144); -var _stream = __w_pdfjs_require__(158); +var _primitives = __w_pdfjs_require__(130); -var _primitives = __w_pdfjs_require__(151); +var _jpg = __w_pdfjs_require__(153); -var _jpg = __w_pdfjs_require__(165); +var _util = __w_pdfjs_require__(2); -var JpegStream = function JpegStreamClosure() { - function JpegStream(stream, maybeLength, dict, params) { - var ch; +class JpegStream extends _decode_stream.DecodeStream { + constructor(stream, maybeLength, params) { + let ch; while ((ch = stream.getByte()) !== -1) { - if (ch === 0xFF) { + if (ch === 0xff) { stream.skip(-1); break; } } + super(maybeLength); this.stream = stream; + this.dict = stream.dict; this.maybeLength = maybeLength; - this.dict = dict; this.params = params; - - _stream.DecodeStream.call(this, maybeLength); } - JpegStream.prototype = Object.create(_stream.DecodeStream.prototype); - Object.defineProperty(JpegStream.prototype, 'bytes', { - get: function JpegStream_bytes() { - return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength)); - }, - configurable: true - }); + get bytes() { + return (0, _util.shadow)(this, "bytes", this.stream.getBytes(this.maybeLength)); + } - JpegStream.prototype.ensureBuffer = function (requested) {}; + ensureBuffer(requested) {} - JpegStream.prototype.readBlock = function () { + readBlock() { if (this.eof) { return; } - var jpegOptions = { + const jpegOptions = { decodeTransform: undefined, colorTransform: undefined }; - var decodeArr = this.dict.getArray('Decode', 'D'); + const decodeArr = this.dict.getArray("D", "Decode"); if (this.forceRGB && Array.isArray(decodeArr)) { - var bitsPerComponent = this.dict.get('BitsPerComponent') || 8; - var decodeArrLength = decodeArr.length; - var transform = new Int32Array(decodeArrLength); - var transformNeeded = false; - var maxValue = (1 << bitsPerComponent) - 1; + const bitsPerComponent = this.dict.get("BPC", "BitsPerComponent") || 8; + const decodeArrLength = decodeArr.length; + const transform = new Int32Array(decodeArrLength); + let transformNeeded = false; + const maxValue = (1 << bitsPerComponent) - 1; - for (var i = 0; i < decodeArrLength; i += 2) { + for (let i = 0; i < decodeArrLength; i += 2) { transform[i] = (decodeArr[i + 1] - decodeArr[i]) * 256 | 0; transform[i + 1] = decodeArr[i] * maxValue | 0; @@ -21878,17 +24284,17 @@ var JpegStream = function JpegStreamClosure() { } } - if ((0, _primitives.isDict)(this.params)) { - var colorTransform = this.params.get('ColorTransform'); + if (this.params instanceof _primitives.Dict) { + const colorTransform = this.params.get("ColorTransform"); if (Number.isInteger(colorTransform)) { jpegOptions.colorTransform = colorTransform; } } - var jpegImage = new _jpg.JpegImage(jpegOptions); + const jpegImage = new _jpg.JpegImage(jpegOptions); jpegImage.parse(this.bytes); - var data = jpegImage.getData({ + const data = jpegImage.getData({ width: this.drawWidth, height: this.drawHeight, forceRGB: this.forceRGB, @@ -21897,133 +24303,90 @@ var JpegStream = function JpegStreamClosure() { this.buffer = data; this.bufferLength = data.length; this.eof = true; - }; + } - JpegStream.prototype.getIR = function () { - var forceDataSchema = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return (0, _util.createObjectURL)(this.bytes, 'image/jpeg', forceDataSchema); - }; - - return JpegStream; -}(); +} exports.JpegStream = JpegStream; /***/ }), -/* 165 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 153 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.JpegImage = void 0; -var _util = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(2); -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } +var _core_utils = __w_pdfjs_require__(131); -var JpegError = function JpegErrorClosure() { - function JpegError(msg) { - this.message = 'JPEG error: ' + msg; +class JpegError extends _util.BaseException { + constructor(msg) { + super(`JPEG error: ${msg}`, "JpegError"); } - JpegError.prototype = new Error(); - JpegError.prototype.name = 'JpegError'; - JpegError.constructor = JpegError; - return JpegError; -}(); +} -var DNLMarkerError = function DNLMarkerErrorClosure() { - function DNLMarkerError(message, scanLines) { - this.message = message; +class DNLMarkerError extends _util.BaseException { + constructor(message, scanLines) { + super(message, "DNLMarkerError"); this.scanLines = scanLines; } - DNLMarkerError.prototype = new Error(); - DNLMarkerError.prototype.name = 'DNLMarkerError'; - DNLMarkerError.constructor = DNLMarkerError; - return DNLMarkerError; -}(); +} -var EOIMarkerError = function EOIMarkerErrorClosure() { - function EOIMarkerError(message) { - this.message = message; +class EOIMarkerError extends _util.BaseException { + constructor(msg) { + super(msg, "EOIMarkerError"); } - EOIMarkerError.prototype = new Error(); - EOIMarkerError.prototype.name = 'EOIMarkerError'; - EOIMarkerError.constructor = EOIMarkerError; - return EOIMarkerError; -}(); +} -var JpegImage = function JpegImageClosure() { - var dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]); - var dctCos1 = 4017; - var dctSin1 = 799; - var dctCos3 = 3406; - var dctSin3 = 2276; - var dctCos6 = 1567; - var dctSin6 = 3784; - var dctSqrt2 = 5793; - var dctSqrt1d2 = 2896; +const dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]); +const dctCos1 = 4017; +const dctSin1 = 799; +const dctCos3 = 3406; +const dctSin3 = 2276; +const dctCos6 = 1567; +const dctSin6 = 3784; +const dctSqrt2 = 5793; +const dctSqrt1d2 = 2896; - function JpegImage() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref$decodeTransform = _ref.decodeTransform, - decodeTransform = _ref$decodeTransform === void 0 ? null : _ref$decodeTransform, - _ref$colorTransform = _ref.colorTransform, - colorTransform = _ref$colorTransform === void 0 ? -1 : _ref$colorTransform; +function buildHuffmanTable(codeLengths, values) { + let k = 0, + i, + j, + length = 16; - this._decodeTransform = decodeTransform; - this._colorTransform = colorTransform; + while (length > 0 && !codeLengths[length - 1]) { + length--; } - function buildHuffmanTable(codeLengths, values) { - var k = 0, - code = [], - i, - j, - length = 16; + const code = [{ + children: [], + index: 0 + }]; + let p = code[0], + q; - while (length > 0 && !codeLengths[length - 1]) { - length--; - } + for (i = 0; i < length; i++) { + for (j = 0; j < codeLengths[i]; j++) { + p = code.pop(); + p.children[p.index] = values[k]; - code.push({ - children: [], - index: 0 - }); - var p = code[0], - q; - - for (i = 0; i < length; i++) { - for (j = 0; j < codeLengths[i]; j++) { + while (p.index > 0) { p = code.pop(); - p.children[p.index] = values[k]; - - while (p.index > 0) { - p = code.pop(); - } - - p.index++; - code.push(p); - - while (code.length <= i) { - code.push(q = { - children: [], - index: 0 - }); - p.children[p.index] = q.children; - p = q; - } - - k++; } - if (i + 1 < length) { + p.index++; + code.push(p); + + while (code.length <= i) { code.push(q = { children: [], index: 0 @@ -22031,293 +24394,319 @@ var JpegImage = function JpegImageClosure() { p.children[p.index] = q.children; p = q; } + + k++; } - return code[0].children; + if (i + 1 < length) { + code.push(q = { + children: [], + index: 0 + }); + p.children[p.index] = q.children; + p = q; + } } - function getBlockBufferOffset(component, row, col) { - return 64 * ((component.blocksPerLine + 1) * row + col); - } + return code[0].children; +} - function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive) { - var parseDNLMarker = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false; - var mcusPerLine = frame.mcusPerLine; - var progressive = frame.progressive; - var startOffset = offset, - bitsData = 0, - bitsCount = 0; +function getBlockBufferOffset(component, row, col) { + return 64 * ((component.blocksPerLine + 1) * row + col); +} - function readBit() { - if (bitsCount > 0) { - bitsCount--; - return bitsData >> bitsCount & 1; - } +function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive) { + let parseDNLMarker = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false; + const mcusPerLine = frame.mcusPerLine; + const progressive = frame.progressive; + const startOffset = offset; + let bitsData = 0, + bitsCount = 0; - bitsData = data[offset++]; + function readBit() { + if (bitsCount > 0) { + bitsCount--; + return bitsData >> bitsCount & 1; + } - if (bitsData === 0xFF) { - var nextByte = data[offset++]; + bitsData = data[offset++]; - if (nextByte) { - if (nextByte === 0xDC && parseDNLMarker) { - offset += 2; - var scanLines = data[offset++] << 8 | data[offset++]; + if (bitsData === 0xff) { + const nextByte = data[offset++]; - if (scanLines > 0 && scanLines !== frame.scanLines) { - throw new DNLMarkerError('Found DNL marker (0xFFDC) while parsing scan data', scanLines); + if (nextByte) { + if (nextByte === 0xdc && parseDNLMarker) { + offset += 2; + const scanLines = (0, _core_utils.readUint16)(data, offset); + offset += 2; + + if (scanLines > 0 && scanLines !== frame.scanLines) { + throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data", scanLines); + } + } else if (nextByte === 0xd9) { + if (parseDNLMarker) { + const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0); + + if (maybeScanLines > 0 && Math.round(frame.scanLines / maybeScanLines) >= 10) { + throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, " + "possibly caused by incorrect `scanLines` parameter", maybeScanLines); } - } else if (nextByte === 0xD9) { - throw new EOIMarkerError('Found EOI marker (0xFFD9) while parsing scan data'); } - throw new JpegError("unexpected marker ".concat((bitsData << 8 | nextByte).toString(16))); + throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data"); } - } - bitsCount = 7; - return bitsData >>> 7; + throw new JpegError(`unexpected marker ${(bitsData << 8 | nextByte).toString(16)}`); + } } - function decodeHuffman(tree) { - var node = tree; + bitsCount = 7; + return bitsData >>> 7; + } - while (true) { - node = node[readBit()]; + function decodeHuffman(tree) { + let node = tree; - if (typeof node === 'number') { + while (true) { + node = node[readBit()]; + + switch (typeof node) { + case "number": return node; - } - if (_typeof(node) !== 'object') { - throw new JpegError('invalid huffman sequence'); - } + case "object": + continue; } + + throw new JpegError("invalid huffman sequence"); + } + } + + function receive(length) { + let n = 0; + + while (length > 0) { + n = n << 1 | readBit(); + length--; } - function receive(length) { - var n = 0; + return n; + } - while (length > 0) { - n = n << 1 | readBit(); - length--; - } + function receiveAndExtend(length) { + if (length === 1) { + return readBit() === 1 ? 1 : -1; + } + const n = receive(length); + + if (n >= 1 << length - 1) { return n; } - function receiveAndExtend(length) { - if (length === 1) { - return readBit() === 1 ? 1 : -1; - } + return n + (-1 << length) + 1; + } - var n = receive(length); + function decodeBaseline(component, blockOffset) { + const t = decodeHuffman(component.huffmanTableDC); + const diff = t === 0 ? 0 : receiveAndExtend(t); + component.blockData[blockOffset] = component.pred += diff; + let k = 1; - if (n >= 1 << length - 1) { - return n; - } - - return n + (-1 << length) + 1; - } - - function decodeBaseline(component, offset) { - var t = decodeHuffman(component.huffmanTableDC); - var diff = t === 0 ? 0 : receiveAndExtend(t); - component.blockData[offset] = component.pred += diff; - var k = 1; - - while (k < 64) { - var rs = decodeHuffman(component.huffmanTableAC); - var s = rs & 15, + while (k < 64) { + const rs = decodeHuffman(component.huffmanTableAC); + const s = rs & 15, r = rs >> 4; - if (s === 0) { - if (r < 15) { - break; + if (s === 0) { + if (r < 15) { + break; + } + + k += 16; + continue; + } + + k += r; + const z = dctZigZag[k]; + component.blockData[blockOffset + z] = receiveAndExtend(s); + k++; + } + } + + function decodeDCFirst(component, blockOffset) { + const t = decodeHuffman(component.huffmanTableDC); + const diff = t === 0 ? 0 : receiveAndExtend(t) << successive; + component.blockData[blockOffset] = component.pred += diff; + } + + function decodeDCSuccessive(component, blockOffset) { + component.blockData[blockOffset] |= readBit() << successive; + } + + let eobrun = 0; + + function decodeACFirst(component, blockOffset) { + if (eobrun > 0) { + eobrun--; + return; + } + + let k = spectralStart; + const e = spectralEnd; + + while (k <= e) { + const rs = decodeHuffman(component.huffmanTableAC); + const s = rs & 15, + r = rs >> 4; + + if (s === 0) { + if (r < 15) { + eobrun = receive(r) + (1 << r) - 1; + break; + } + + k += 16; + continue; + } + + k += r; + const z = dctZigZag[k]; + component.blockData[blockOffset + z] = receiveAndExtend(s) * (1 << successive); + k++; + } + } + + let successiveACState = 0, + successiveACNextValue; + + function decodeACSuccessive(component, blockOffset) { + let k = spectralStart; + const e = spectralEnd; + let r = 0; + let s; + let rs; + + while (k <= e) { + const offsetZ = blockOffset + dctZigZag[k]; + const sign = component.blockData[offsetZ] < 0 ? -1 : 1; + + switch (successiveACState) { + case 0: + rs = decodeHuffman(component.huffmanTableAC); + s = rs & 15; + r = rs >> 4; + + if (s === 0) { + if (r < 15) { + eobrun = receive(r) + (1 << r); + successiveACState = 4; + } else { + r = 16; + successiveACState = 1; + } + } else { + if (s !== 1) { + throw new JpegError("invalid ACn encoding"); + } + + successiveACNextValue = receiveAndExtend(s); + successiveACState = r ? 2 : 3; } - k += 16; continue; - } - k += r; - var z = dctZigZag[k]; - component.blockData[offset + z] = receiveAndExtend(s); - k++; - } - } + case 1: + case 2: + if (component.blockData[offsetZ]) { + component.blockData[offsetZ] += sign * (readBit() << successive); + } else { + r--; - function decodeDCFirst(component, offset) { - var t = decodeHuffman(component.huffmanTableDC); - var diff = t === 0 ? 0 : receiveAndExtend(t) << successive; - component.blockData[offset] = component.pred += diff; - } - - function decodeDCSuccessive(component, offset) { - component.blockData[offset] |= readBit() << successive; - } - - var eobrun = 0; - - function decodeACFirst(component, offset) { - if (eobrun > 0) { - eobrun--; - return; - } - - var k = spectralStart, - e = spectralEnd; - - while (k <= e) { - var rs = decodeHuffman(component.huffmanTableAC); - var s = rs & 15, - r = rs >> 4; - - if (s === 0) { - if (r < 15) { - eobrun = receive(r) + (1 << r) - 1; - break; + if (r === 0) { + successiveACState = successiveACState === 2 ? 3 : 0; + } } - k += 16; - continue; - } + break; - k += r; - var z = dctZigZag[k]; - component.blockData[offset + z] = receiveAndExtend(s) * (1 << successive); - k++; - } - } + case 3: + if (component.blockData[offsetZ]) { + component.blockData[offsetZ] += sign * (readBit() << successive); + } else { + component.blockData[offsetZ] = successiveACNextValue << successive; + successiveACState = 0; + } - var successiveACState = 0, - successiveACNextValue; + break; - function decodeACSuccessive(component, offset) { - var k = spectralStart; - var e = spectralEnd; - var r = 0; - var s; - var rs; + case 4: + if (component.blockData[offsetZ]) { + component.blockData[offsetZ] += sign * (readBit() << successive); + } - while (k <= e) { - var offsetZ = offset + dctZigZag[k]; - var sign = component.blockData[offsetZ] < 0 ? -1 : 1; - - switch (successiveACState) { - case 0: - rs = decodeHuffman(component.huffmanTableAC); - s = rs & 15; - r = rs >> 4; - - if (s === 0) { - if (r < 15) { - eobrun = receive(r) + (1 << r); - successiveACState = 4; - } else { - r = 16; - successiveACState = 1; - } - } else { - if (s !== 1) { - throw new JpegError('invalid ACn encoding'); - } - - successiveACNextValue = receiveAndExtend(s); - successiveACState = r ? 2 : 3; - } - - continue; - - case 1: - case 2: - if (component.blockData[offsetZ]) { - component.blockData[offsetZ] += sign * (readBit() << successive); - } else { - r--; - - if (r === 0) { - successiveACState = successiveACState === 2 ? 3 : 0; - } - } - - break; - - case 3: - if (component.blockData[offsetZ]) { - component.blockData[offsetZ] += sign * (readBit() << successive); - } else { - component.blockData[offsetZ] = successiveACNextValue << successive; - successiveACState = 0; - } - - break; - - case 4: - if (component.blockData[offsetZ]) { - component.blockData[offsetZ] += sign * (readBit() << successive); - } - - break; - } - - k++; + break; } - if (successiveACState === 4) { - eobrun--; + k++; + } - if (eobrun === 0) { - successiveACState = 0; - } + if (successiveACState === 4) { + eobrun--; + + if (eobrun === 0) { + successiveACState = 0; } } + } - function decodeMcu(component, decode, mcu, row, col) { - var mcuRow = mcu / mcusPerLine | 0; - var mcuCol = mcu % mcusPerLine; - var blockRow = mcuRow * component.v + row; - var blockCol = mcuCol * component.h + col; - var offset = getBlockBufferOffset(component, blockRow, blockCol); - decode(component, offset); - } + let blockRow = 0; - function decodeBlock(component, decode, mcu) { - var blockRow = mcu / component.blocksPerLine | 0; - var blockCol = mcu % component.blocksPerLine; - var offset = getBlockBufferOffset(component, blockRow, blockCol); - decode(component, offset); - } + function decodeMcu(component, decode, mcu, row, col) { + const mcuRow = mcu / mcusPerLine | 0; + const mcuCol = mcu % mcusPerLine; + blockRow = mcuRow * component.v + row; + const blockCol = mcuCol * component.h + col; + const blockOffset = getBlockBufferOffset(component, blockRow, blockCol); + decode(component, blockOffset); + } - var componentsLength = components.length; - var component, i, j, k, n; - var decodeFn; + function decodeBlock(component, decode, mcu) { + blockRow = mcu / component.blocksPerLine | 0; + const blockCol = mcu % component.blocksPerLine; + const blockOffset = getBlockBufferOffset(component, blockRow, blockCol); + decode(component, blockOffset); + } - if (progressive) { - if (spectralStart === 0) { - decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive; - } else { - decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive; - } + const componentsLength = components.length; + let component, i, j, k, n; + let decodeFn; + + if (progressive) { + if (spectralStart === 0) { + decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive; } else { - decodeFn = decodeBaseline; + decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive; } + } else { + decodeFn = decodeBaseline; + } - var mcu = 0, - fileMarker; - var mcuExpected; + let mcu = 0, + fileMarker; + let mcuExpected; - if (componentsLength === 1) { - mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn; - } else { - mcuExpected = mcusPerLine * frame.mcusPerColumn; - } + if (componentsLength === 1) { + mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn; + } else { + mcuExpected = mcusPerLine * frame.mcusPerColumn; + } - var h, v; + let h, v; - while (mcu < mcuExpected) { - var mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected; + while (mcu <= mcuExpected) { + const mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected; + if (mcuToRead > 0) { for (i = 0; i < componentsLength; i++) { components[i].pred = 0; } @@ -22348,826 +24737,898 @@ var JpegImage = function JpegImageClosure() { mcu++; } } - - bitsCount = 0; - fileMarker = findNextFileMarker(data, offset); - - if (fileMarker && fileMarker.invalid) { - (0, _util.warn)('decodeScan - unexpected MCU data, current marker is: ' + fileMarker.invalid); - offset = fileMarker.offset; - } - - var marker = fileMarker && fileMarker.marker; - - if (!marker || marker <= 0xFF00) { - throw new JpegError('marker was not found'); - } - - if (marker >= 0xFFD0 && marker <= 0xFFD7) { - offset += 2; - } else { - break; - } } + bitsCount = 0; fileMarker = findNextFileMarker(data, offset); - if (fileMarker && fileMarker.invalid) { - (0, _util.warn)('decodeScan - unexpected Scan data, current marker is: ' + fileMarker.invalid); + if (!fileMarker) { + break; + } + + if (fileMarker.invalid) { + const partialMsg = mcuToRead > 0 ? "unexpected" : "excessive"; + (0, _util.warn)(`decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`); offset = fileMarker.offset; } - return offset - startOffset; + if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) { + offset += 2; + } else { + break; + } } - function quantizeAndInverse(component, blockBufferOffset, p) { - var qt = component.quantizationTable, + return offset - startOffset; +} + +function quantizeAndInverse(component, blockBufferOffset, p) { + const qt = component.quantizationTable, blockData = component.blockData; - var v0, v1, v2, v3, v4, v5, v6, v7; - var p0, p1, p2, p3, p4, p5, p6, p7; - var t; + let v0, v1, v2, v3, v4, v5, v6, v7; + let p0, p1, p2, p3, p4, p5, p6, p7; + let t; - if (!qt) { - throw new JpegError('missing required Quantization Table.'); + if (!qt) { + throw new JpegError("missing required Quantization Table."); + } + + for (let row = 0; row < 64; row += 8) { + p0 = blockData[blockBufferOffset + row]; + p1 = blockData[blockBufferOffset + row + 1]; + p2 = blockData[blockBufferOffset + row + 2]; + p3 = blockData[blockBufferOffset + row + 3]; + p4 = blockData[blockBufferOffset + row + 4]; + p5 = blockData[blockBufferOffset + row + 5]; + p6 = blockData[blockBufferOffset + row + 6]; + p7 = blockData[blockBufferOffset + row + 7]; + p0 *= qt[row]; + + if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) { + t = dctSqrt2 * p0 + 512 >> 10; + p[row] = t; + p[row + 1] = t; + p[row + 2] = t; + p[row + 3] = t; + p[row + 4] = t; + p[row + 5] = t; + p[row + 6] = t; + p[row + 7] = t; + continue; } - for (var row = 0; row < 64; row += 8) { - p0 = blockData[blockBufferOffset + row]; - p1 = blockData[blockBufferOffset + row + 1]; - p2 = blockData[blockBufferOffset + row + 2]; - p3 = blockData[blockBufferOffset + row + 3]; - p4 = blockData[blockBufferOffset + row + 4]; - p5 = blockData[blockBufferOffset + row + 5]; - p6 = blockData[blockBufferOffset + row + 6]; - p7 = blockData[blockBufferOffset + row + 7]; - p0 *= qt[row]; + p1 *= qt[row + 1]; + p2 *= qt[row + 2]; + p3 *= qt[row + 3]; + p4 *= qt[row + 4]; + p5 *= qt[row + 5]; + p6 *= qt[row + 6]; + p7 *= qt[row + 7]; + v0 = dctSqrt2 * p0 + 128 >> 8; + v1 = dctSqrt2 * p4 + 128 >> 8; + v2 = p2; + v3 = p6; + v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8; + v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8; + v5 = p3 << 4; + v6 = p5 << 4; + v0 = v0 + v1 + 1 >> 1; + v1 = v0 - v1; + t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8; + v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8; + v3 = t; + v4 = v4 + v6 + 1 >> 1; + v6 = v4 - v6; + v7 = v7 + v5 + 1 >> 1; + v5 = v7 - v5; + v0 = v0 + v3 + 1 >> 1; + v3 = v0 - v3; + v1 = v1 + v2 + 1 >> 1; + v2 = v1 - v2; + t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12; + v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12; + v7 = t; + t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12; + v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12; + v6 = t; + p[row] = v0 + v7; + p[row + 7] = v0 - v7; + p[row + 1] = v1 + v6; + p[row + 6] = v1 - v6; + p[row + 2] = v2 + v5; + p[row + 5] = v2 - v5; + p[row + 3] = v3 + v4; + p[row + 4] = v3 - v4; + } - if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) { - t = dctSqrt2 * p0 + 512 >> 10; - p[row] = t; - p[row + 1] = t; - p[row + 2] = t; - p[row + 3] = t; - p[row + 4] = t; - p[row + 5] = t; - p[row + 6] = t; - p[row + 7] = t; - continue; + for (let col = 0; col < 8; ++col) { + p0 = p[col]; + p1 = p[col + 8]; + p2 = p[col + 16]; + p3 = p[col + 24]; + p4 = p[col + 32]; + p5 = p[col + 40]; + p6 = p[col + 48]; + p7 = p[col + 56]; + + if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) { + t = dctSqrt2 * p0 + 8192 >> 14; + + if (t < -2040) { + t = 0; + } else if (t >= 2024) { + t = 255; + } else { + t = t + 2056 >> 4; } - p1 *= qt[row + 1]; - p2 *= qt[row + 2]; - p3 *= qt[row + 3]; - p4 *= qt[row + 4]; - p5 *= qt[row + 5]; - p6 *= qt[row + 6]; - p7 *= qt[row + 7]; - v0 = dctSqrt2 * p0 + 128 >> 8; - v1 = dctSqrt2 * p4 + 128 >> 8; - v2 = p2; - v3 = p6; - v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8; - v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8; - v5 = p3 << 4; - v6 = p5 << 4; - v0 = v0 + v1 + 1 >> 1; - v1 = v0 - v1; - t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8; - v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8; - v3 = t; - v4 = v4 + v6 + 1 >> 1; - v6 = v4 - v6; - v7 = v7 + v5 + 1 >> 1; - v5 = v7 - v5; - v0 = v0 + v3 + 1 >> 1; - v3 = v0 - v3; - v1 = v1 + v2 + 1 >> 1; - v2 = v1 - v2; - t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12; - v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12; - v7 = t; - t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12; - v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12; - v6 = t; - p[row] = v0 + v7; - p[row + 7] = v0 - v7; - p[row + 1] = v1 + v6; - p[row + 6] = v1 - v6; - p[row + 2] = v2 + v5; - p[row + 5] = v2 - v5; - p[row + 3] = v3 + v4; - p[row + 4] = v3 - v4; + blockData[blockBufferOffset + col] = t; + blockData[blockBufferOffset + col + 8] = t; + blockData[blockBufferOffset + col + 16] = t; + blockData[blockBufferOffset + col + 24] = t; + blockData[blockBufferOffset + col + 32] = t; + blockData[blockBufferOffset + col + 40] = t; + blockData[blockBufferOffset + col + 48] = t; + blockData[blockBufferOffset + col + 56] = t; + continue; } - for (var col = 0; col < 8; ++col) { - p0 = p[col]; - p1 = p[col + 8]; - p2 = p[col + 16]; - p3 = p[col + 24]; - p4 = p[col + 32]; - p5 = p[col + 40]; - p6 = p[col + 48]; - p7 = p[col + 56]; + v0 = dctSqrt2 * p0 + 2048 >> 12; + v1 = dctSqrt2 * p4 + 2048 >> 12; + v2 = p2; + v3 = p6; + v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12; + v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12; + v5 = p3; + v6 = p5; + v0 = (v0 + v1 + 1 >> 1) + 4112; + v1 = v0 - v1; + t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12; + v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12; + v3 = t; + v4 = v4 + v6 + 1 >> 1; + v6 = v4 - v6; + v7 = v7 + v5 + 1 >> 1; + v5 = v7 - v5; + v0 = v0 + v3 + 1 >> 1; + v3 = v0 - v3; + v1 = v1 + v2 + 1 >> 1; + v2 = v1 - v2; + t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12; + v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12; + v7 = t; + t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12; + v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12; + v6 = t; + p0 = v0 + v7; + p7 = v0 - v7; + p1 = v1 + v6; + p6 = v1 - v6; + p2 = v2 + v5; + p5 = v2 - v5; + p3 = v3 + v4; + p4 = v3 - v4; - if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) { - t = dctSqrt2 * p0 + 8192 >> 14; - t = t < -2040 ? 0 : t >= 2024 ? 255 : t + 2056 >> 4; - blockData[blockBufferOffset + col] = t; - blockData[blockBufferOffset + col + 8] = t; - blockData[blockBufferOffset + col + 16] = t; - blockData[blockBufferOffset + col + 24] = t; - blockData[blockBufferOffset + col + 32] = t; - blockData[blockBufferOffset + col + 40] = t; - blockData[blockBufferOffset + col + 48] = t; - blockData[blockBufferOffset + col + 56] = t; - continue; - } + if (p0 < 16) { + p0 = 0; + } else if (p0 >= 4080) { + p0 = 255; + } else { + p0 >>= 4; + } - v0 = dctSqrt2 * p0 + 2048 >> 12; - v1 = dctSqrt2 * p4 + 2048 >> 12; - v2 = p2; - v3 = p6; - v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12; - v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12; - v5 = p3; - v6 = p5; - v0 = (v0 + v1 + 1 >> 1) + 4112; - v1 = v0 - v1; - t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12; - v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12; - v3 = t; - v4 = v4 + v6 + 1 >> 1; - v6 = v4 - v6; - v7 = v7 + v5 + 1 >> 1; - v5 = v7 - v5; - v0 = v0 + v3 + 1 >> 1; - v3 = v0 - v3; - v1 = v1 + v2 + 1 >> 1; - v2 = v1 - v2; - t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12; - v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12; - v7 = t; - t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12; - v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12; - v6 = t; - p0 = v0 + v7; - p7 = v0 - v7; - p1 = v1 + v6; - p6 = v1 - v6; - p2 = v2 + v5; - p5 = v2 - v5; - p3 = v3 + v4; - p4 = v3 - v4; - p0 = p0 < 16 ? 0 : p0 >= 4080 ? 255 : p0 >> 4; - p1 = p1 < 16 ? 0 : p1 >= 4080 ? 255 : p1 >> 4; - p2 = p2 < 16 ? 0 : p2 >= 4080 ? 255 : p2 >> 4; - p3 = p3 < 16 ? 0 : p3 >= 4080 ? 255 : p3 >> 4; - p4 = p4 < 16 ? 0 : p4 >= 4080 ? 255 : p4 >> 4; - p5 = p5 < 16 ? 0 : p5 >= 4080 ? 255 : p5 >> 4; - p6 = p6 < 16 ? 0 : p6 >= 4080 ? 255 : p6 >> 4; - p7 = p7 < 16 ? 0 : p7 >= 4080 ? 255 : p7 >> 4; - blockData[blockBufferOffset + col] = p0; - blockData[blockBufferOffset + col + 8] = p1; - blockData[blockBufferOffset + col + 16] = p2; - blockData[blockBufferOffset + col + 24] = p3; - blockData[blockBufferOffset + col + 32] = p4; - blockData[blockBufferOffset + col + 40] = p5; - blockData[blockBufferOffset + col + 48] = p6; - blockData[blockBufferOffset + col + 56] = p7; + if (p1 < 16) { + p1 = 0; + } else if (p1 >= 4080) { + p1 = 255; + } else { + p1 >>= 4; + } + + if (p2 < 16) { + p2 = 0; + } else if (p2 >= 4080) { + p2 = 255; + } else { + p2 >>= 4; + } + + if (p3 < 16) { + p3 = 0; + } else if (p3 >= 4080) { + p3 = 255; + } else { + p3 >>= 4; + } + + if (p4 < 16) { + p4 = 0; + } else if (p4 >= 4080) { + p4 = 255; + } else { + p4 >>= 4; + } + + if (p5 < 16) { + p5 = 0; + } else if (p5 >= 4080) { + p5 = 255; + } else { + p5 >>= 4; + } + + if (p6 < 16) { + p6 = 0; + } else if (p6 >= 4080) { + p6 = 255; + } else { + p6 >>= 4; + } + + if (p7 < 16) { + p7 = 0; + } else if (p7 >= 4080) { + p7 = 255; + } else { + p7 >>= 4; + } + + blockData[blockBufferOffset + col] = p0; + blockData[blockBufferOffset + col + 8] = p1; + blockData[blockBufferOffset + col + 16] = p2; + blockData[blockBufferOffset + col + 24] = p3; + blockData[blockBufferOffset + col + 32] = p4; + blockData[blockBufferOffset + col + 40] = p5; + blockData[blockBufferOffset + col + 48] = p6; + blockData[blockBufferOffset + col + 56] = p7; + } +} + +function buildComponentData(frame, component) { + const blocksPerLine = component.blocksPerLine; + const blocksPerColumn = component.blocksPerColumn; + const computationBuffer = new Int16Array(64); + + for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) { + for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) { + const offset = getBlockBufferOffset(component, blockRow, blockCol); + quantizeAndInverse(component, offset, computationBuffer); } } - function buildComponentData(frame, component) { - var blocksPerLine = component.blocksPerLine; - var blocksPerColumn = component.blocksPerColumn; - var computationBuffer = new Int16Array(64); + return component.blockData; +} - for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) { - for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) { - var offset = getBlockBufferOffset(component, blockRow, blockCol); - quantizeAndInverse(component, offset, computationBuffer); - } - } +function findNextFileMarker(data, currentPos) { + let startPos = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : currentPos; + const maxPos = data.length - 1; + let newPos = startPos < currentPos ? startPos : currentPos; - return component.blockData; + if (currentPos >= maxPos) { + return null; } - function findNextFileMarker(data, currentPos) { - var startPos = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : currentPos; - - function peekUint16(pos) { - return data[pos] << 8 | data[pos + 1]; - } - - var maxPos = data.length - 1; - var newPos = startPos < currentPos ? startPos : currentPos; - - if (currentPos >= maxPos) { - return null; - } - - var currentMarker = peekUint16(currentPos); - - if (currentMarker >= 0xFFC0 && currentMarker <= 0xFFFE) { - return { - invalid: null, - marker: currentMarker, - offset: currentPos - }; - } - - var newMarker = peekUint16(newPos); - - while (!(newMarker >= 0xFFC0 && newMarker <= 0xFFFE)) { - if (++newPos >= maxPos) { - return null; - } - - newMarker = peekUint16(newPos); - } + const currentMarker = (0, _core_utils.readUint16)(data, currentPos); + if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) { return { - invalid: currentMarker.toString(16), - marker: newMarker, - offset: newPos + invalid: null, + marker: currentMarker, + offset: currentPos }; } - JpegImage.prototype = { - parse: function parse(data) { - var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - _ref2$dnlScanLines = _ref2.dnlScanLines, - dnlScanLines = _ref2$dnlScanLines === void 0 ? null : _ref2$dnlScanLines; + let newMarker = (0, _core_utils.readUint16)(data, newPos); - function readUint16() { - var value = data[offset] << 8 | data[offset + 1]; - offset += 2; - return value; + while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) { + if (++newPos >= maxPos) { + return null; + } + + newMarker = (0, _core_utils.readUint16)(data, newPos); + } + + return { + invalid: currentMarker.toString(16), + marker: newMarker, + offset: newPos + }; +} + +class JpegImage { + constructor() { + let { + decodeTransform = null, + colorTransform = -1 + } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + this._decodeTransform = decodeTransform; + this._colorTransform = colorTransform; + } + + parse(data) { + let { + dnlScanLines = null + } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + function readDataBlock() { + const length = (0, _core_utils.readUint16)(data, offset); + offset += 2; + let endOffset = offset + length - 2; + const fileMarker = findNextFileMarker(data, endOffset, offset); + + if (fileMarker && fileMarker.invalid) { + (0, _util.warn)("readDataBlock - incorrect length, current marker is: " + fileMarker.invalid); + endOffset = fileMarker.offset; } - function readDataBlock() { - var length = readUint16(); - var endOffset = offset + length - 2; - var fileMarker = findNextFileMarker(data, endOffset, offset); + const array = data.subarray(offset, endOffset); + offset += array.length; + return array; + } - if (fileMarker && fileMarker.invalid) { - (0, _util.warn)('readDataBlock - incorrect length, current marker is: ' + fileMarker.invalid); - endOffset = fileMarker.offset; - } + function prepareComponents(frame) { + const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH); + const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV); - var array = data.subarray(offset, endOffset); - offset += array.length; - return array; + for (let i = 0, ii = frame.components.length; i < ii; i++) { + const component = frame.components[i]; + const blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH); + const blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV); + const blocksPerLineForMcu = mcusPerLine * component.h; + const blocksPerColumnForMcu = mcusPerColumn * component.v; + const blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1); + component.blockData = new Int16Array(blocksBufferSize); + component.blocksPerLine = blocksPerLine; + component.blocksPerColumn = blocksPerColumn; } - function prepareComponents(frame) { - var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH); - var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV); + frame.mcusPerLine = mcusPerLine; + frame.mcusPerColumn = mcusPerColumn; + } - for (var i = 0; i < frame.components.length; i++) { - component = frame.components[i]; - var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH); - var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV); - var blocksPerLineForMcu = mcusPerLine * component.h; - var blocksPerColumnForMcu = mcusPerColumn * component.v; - var blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1); - component.blockData = new Int16Array(blocksBufferSize); - component.blocksPerLine = blocksPerLine; - component.blocksPerColumn = blocksPerColumn; - } - - frame.mcusPerLine = mcusPerLine; - frame.mcusPerColumn = mcusPerColumn; - } - - var offset = 0; - var jfif = null; - var adobe = null; - var frame, resetInterval; - var numSOSMarkers = 0; - var quantizationTables = []; - var huffmanTablesAC = [], + let offset = 0; + let jfif = null; + let adobe = null; + let frame, resetInterval; + let numSOSMarkers = 0; + const quantizationTables = []; + const huffmanTablesAC = [], huffmanTablesDC = []; - var fileMarker = readUint16(); + let fileMarker = (0, _core_utils.readUint16)(data, offset); + offset += 2; - if (fileMarker !== 0xFFD8) { - throw new JpegError('SOI not found'); - } + if (fileMarker !== 0xffd8) { + throw new JpegError("SOI not found"); + } - fileMarker = readUint16(); + fileMarker = (0, _core_utils.readUint16)(data, offset); + offset += 2; - markerLoop: while (fileMarker !== 0xFFD9) { - var i, j, l; + markerLoop: while (fileMarker !== 0xffd9) { + let i, j, l; - switch (fileMarker) { - case 0xFFE0: - case 0xFFE1: - case 0xFFE2: - case 0xFFE3: - case 0xFFE4: - case 0xFFE5: - case 0xFFE6: - case 0xFFE7: - case 0xFFE8: - case 0xFFE9: - case 0xFFEA: - case 0xFFEB: - case 0xFFEC: - case 0xFFED: - case 0xFFEE: - case 0xFFEF: - case 0xFFFE: - var appData = readDataBlock(); + switch (fileMarker) { + case 0xffe0: + case 0xffe1: + case 0xffe2: + case 0xffe3: + case 0xffe4: + case 0xffe5: + case 0xffe6: + case 0xffe7: + case 0xffe8: + case 0xffe9: + case 0xffea: + case 0xffeb: + case 0xffec: + case 0xffed: + case 0xffee: + case 0xffef: + case 0xfffe: + const appData = readDataBlock(); - if (fileMarker === 0xFFE0) { - if (appData[0] === 0x4A && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) { - jfif = { - version: { - major: appData[5], - minor: appData[6] - }, - densityUnits: appData[7], - xDensity: appData[8] << 8 | appData[9], - yDensity: appData[10] << 8 | appData[11], - thumbWidth: appData[12], - thumbHeight: appData[13], - thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13]) - }; + if (fileMarker === 0xffe0) { + if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) { + jfif = { + version: { + major: appData[5], + minor: appData[6] + }, + densityUnits: appData[7], + xDensity: appData[8] << 8 | appData[9], + yDensity: appData[10] << 8 | appData[11], + thumbWidth: appData[12], + thumbHeight: appData[13], + thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13]) + }; + } + } + + if (fileMarker === 0xffee) { + if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && appData[4] === 0x65) { + adobe = { + version: appData[5] << 8 | appData[6], + flags0: appData[7] << 8 | appData[8], + flags1: appData[9] << 8 | appData[10], + transformCode: appData[11] + }; + } + } + + break; + + case 0xffdb: + const quantizationTablesLength = (0, _core_utils.readUint16)(data, offset); + offset += 2; + const quantizationTablesEnd = quantizationTablesLength + offset - 2; + let z; + + while (offset < quantizationTablesEnd) { + const quantizationTableSpec = data[offset++]; + const tableData = new Uint16Array(64); + + if (quantizationTableSpec >> 4 === 0) { + for (j = 0; j < 64; j++) { + z = dctZigZag[j]; + tableData[z] = data[offset++]; } + } else if (quantizationTableSpec >> 4 === 1) { + for (j = 0; j < 64; j++) { + z = dctZigZag[j]; + tableData[z] = (0, _core_utils.readUint16)(data, offset); + offset += 2; + } + } else { + throw new JpegError("DQT - invalid table spec"); } - if (fileMarker === 0xFFEE) { - if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6F && appData[3] === 0x62 && appData[4] === 0x65) { - adobe = { - version: appData[5] << 8 | appData[6], - flags0: appData[7] << 8 | appData[8], - flags1: appData[9] << 8 | appData[10], - transformCode: appData[11] - }; - } + quantizationTables[quantizationTableSpec & 15] = tableData; + } + + break; + + case 0xffc0: + case 0xffc1: + case 0xffc2: + if (frame) { + throw new JpegError("Only single frame JPEGs supported"); + } + + offset += 2; + frame = {}; + frame.extended = fileMarker === 0xffc1; + frame.progressive = fileMarker === 0xffc2; + frame.precision = data[offset++]; + const sofScanLines = (0, _core_utils.readUint16)(data, offset); + offset += 2; + frame.scanLines = dnlScanLines || sofScanLines; + frame.samplesPerLine = (0, _core_utils.readUint16)(data, offset); + offset += 2; + frame.components = []; + frame.componentIds = {}; + const componentsCount = data[offset++]; + let maxH = 0, + maxV = 0; + + for (i = 0; i < componentsCount; i++) { + const componentId = data[offset]; + const h = data[offset + 1] >> 4; + const v = data[offset + 1] & 15; + + if (maxH < h) { + maxH = h; } - break; - - case 0xFFDB: - var quantizationTablesLength = readUint16(); - var quantizationTablesEnd = quantizationTablesLength + offset - 2; - var z; - - while (offset < quantizationTablesEnd) { - var quantizationTableSpec = data[offset++]; - var tableData = new Uint16Array(64); - - if (quantizationTableSpec >> 4 === 0) { - for (j = 0; j < 64; j++) { - z = dctZigZag[j]; - tableData[z] = data[offset++]; - } - } else if (quantizationTableSpec >> 4 === 1) { - for (j = 0; j < 64; j++) { - z = dctZigZag[j]; - tableData[z] = readUint16(); - } - } else { - throw new JpegError('DQT - invalid table spec'); - } - - quantizationTables[quantizationTableSpec & 15] = tableData; + if (maxV < v) { + maxV = v; } - break; + const qId = data[offset + 2]; + l = frame.components.push({ + h, + v, + quantizationId: qId, + quantizationTable: null + }); + frame.componentIds[componentId] = l - 1; + offset += 3; + } - case 0xFFC0: - case 0xFFC1: - case 0xFFC2: - if (frame) { - throw new JpegError('Only single frame JPEGs supported'); + frame.maxH = maxH; + frame.maxV = maxV; + prepareComponents(frame); + break; + + case 0xffc4: + const huffmanLength = (0, _core_utils.readUint16)(data, offset); + offset += 2; + + for (i = 2; i < huffmanLength;) { + const huffmanTableSpec = data[offset++]; + const codeLengths = new Uint8Array(16); + let codeLengthSum = 0; + + for (j = 0; j < 16; j++, offset++) { + codeLengthSum += codeLengths[j] = data[offset]; } - readUint16(); - frame = {}; - frame.extended = fileMarker === 0xFFC1; - frame.progressive = fileMarker === 0xFFC2; - frame.precision = data[offset++]; - var sofScanLines = readUint16(); - frame.scanLines = dnlScanLines || sofScanLines; - frame.samplesPerLine = readUint16(); - frame.components = []; - frame.componentIds = {}; - var componentsCount = data[offset++], - componentId; - var maxH = 0, - maxV = 0; + const huffmanValues = new Uint8Array(codeLengthSum); - for (i = 0; i < componentsCount; i++) { - componentId = data[offset]; - var h = data[offset + 1] >> 4; - var v = data[offset + 1] & 15; + for (j = 0; j < codeLengthSum; j++, offset++) { + huffmanValues[j] = data[offset]; + } - if (maxH < h) { - maxH = h; - } + i += 17 + codeLengthSum; + (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues); + } - if (maxV < v) { - maxV = v; - } + break; - var qId = data[offset + 2]; - l = frame.components.push({ - h: h, - v: v, - quantizationId: qId, - quantizationTable: null + case 0xffdd: + offset += 2; + resetInterval = (0, _core_utils.readUint16)(data, offset); + offset += 2; + break; + + case 0xffda: + const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines; + offset += 2; + const selectorsCount = data[offset++], + components = []; + + for (i = 0; i < selectorsCount; i++) { + const index = data[offset++]; + const componentIndex = frame.componentIds[index]; + const component = frame.components[componentIndex]; + component.index = index; + const tableSpec = data[offset++]; + component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4]; + component.huffmanTableAC = huffmanTablesAC[tableSpec & 15]; + components.push(component); + } + + const spectralStart = data[offset++], + spectralEnd = data[offset++], + successiveApproximation = data[offset++]; + + try { + const processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker); + offset += processed; + } catch (ex) { + if (ex instanceof DNLMarkerError) { + (0, _util.warn)(`${ex.message} -- attempting to re-parse the JPEG image.`); + return this.parse(data, { + dnlScanLines: ex.scanLines }); - frame.componentIds[componentId] = l - 1; - offset += 3; + } else if (ex instanceof EOIMarkerError) { + (0, _util.warn)(`${ex.message} -- ignoring the rest of the image data.`); + break markerLoop; } - frame.maxH = maxH; - frame.maxV = maxV; - prepareComponents(frame); + throw ex; + } + + break; + + case 0xffdc: + offset += 4; + break; + + case 0xffff: + if (data[offset] !== 0xff) { + offset--; + } + + break; + + default: + const nextFileMarker = findNextFileMarker(data, offset - 2, offset - 3); + + if (nextFileMarker && nextFileMarker.invalid) { + (0, _util.warn)("JpegImage.parse - unexpected data, current marker is: " + nextFileMarker.invalid); + offset = nextFileMarker.offset; break; + } - case 0xFFC4: - var huffmanLength = readUint16(); + if (!nextFileMarker || offset >= data.length - 1) { + (0, _util.warn)("JpegImage.parse - reached the end of the image data " + "without finding an EOI marker (0xFFD9)."); + break markerLoop; + } - for (i = 2; i < huffmanLength;) { - var huffmanTableSpec = data[offset++]; - var codeLengths = new Uint8Array(16); - var codeLengthSum = 0; - - for (j = 0; j < 16; j++, offset++) { - codeLengthSum += codeLengths[j] = data[offset]; - } - - var huffmanValues = new Uint8Array(codeLengthSum); - - for (j = 0; j < codeLengthSum; j++, offset++) { - huffmanValues[j] = data[offset]; - } - - i += 17 + codeLengthSum; - (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues); - } - - break; - - case 0xFFDD: - readUint16(); - resetInterval = readUint16(); - break; - - case 0xFFDA: - var parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines; - readUint16(); - var selectorsCount = data[offset++]; - var components = [], - component; - - for (i = 0; i < selectorsCount; i++) { - var componentIndex = frame.componentIds[data[offset++]]; - component = frame.components[componentIndex]; - var tableSpec = data[offset++]; - component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4]; - component.huffmanTableAC = huffmanTablesAC[tableSpec & 15]; - components.push(component); - } - - var spectralStart = data[offset++]; - var spectralEnd = data[offset++]; - var successiveApproximation = data[offset++]; - - try { - var processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker); - offset += processed; - } catch (ex) { - if (ex instanceof DNLMarkerError) { - (0, _util.warn)("".concat(ex.message, " -- attempting to re-parse the JPEG image.")); - return this.parse(data, { - dnlScanLines: ex.scanLines - }); - } else if (ex instanceof EOIMarkerError) { - (0, _util.warn)("".concat(ex.message, " -- ignoring the rest of the image data.")); - break markerLoop; - } - - throw ex; - } - - break; - - case 0xFFDC: - offset += 4; - break; - - case 0xFFFF: - if (data[offset] !== 0xFF) { - offset--; - } - - break; - - default: - if (data[offset - 3] === 0xFF && data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) { - offset -= 3; - break; - } - - var nextFileMarker = findNextFileMarker(data, offset - 2); - - if (nextFileMarker && nextFileMarker.invalid) { - (0, _util.warn)('JpegImage.parse - unexpected data, current marker is: ' + nextFileMarker.invalid); - offset = nextFileMarker.offset; - break; - } - - throw new JpegError('unknown marker ' + fileMarker.toString(16)); - } - - fileMarker = readUint16(); + throw new JpegError("JpegImage.parse - unknown marker: " + fileMarker.toString(16)); } - this.width = frame.samplesPerLine; - this.height = frame.scanLines; - this.jfif = jfif; - this.adobe = adobe; - this.components = []; + fileMarker = (0, _core_utils.readUint16)(data, offset); + offset += 2; + } - for (i = 0; i < frame.components.length; i++) { - component = frame.components[i]; - var quantizationTable = quantizationTables[component.quantizationId]; + this.width = frame.samplesPerLine; + this.height = frame.scanLines; + this.jfif = jfif; + this.adobe = adobe; + this.components = []; - if (quantizationTable) { - component.quantizationTable = quantizationTable; - } + for (let i = 0, ii = frame.components.length; i < ii; i++) { + const component = frame.components[i]; + const quantizationTable = quantizationTables[component.quantizationId]; - this.components.push({ - output: buildComponentData(frame, component), - scaleX: component.h / frame.maxH, - scaleY: component.v / frame.maxV, - blocksPerLine: component.blocksPerLine, - blocksPerColumn: component.blocksPerColumn - }); + if (quantizationTable) { + component.quantizationTable = quantizationTable; } - this.numComponents = this.components.length; - return undefined; - }, - _getLinearizedBlockData: function _getLinearizedBlockData(width, height) { - var isSourcePDF = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var scaleX = this.width / width, + this.components.push({ + index: component.index, + output: buildComponentData(frame, component), + scaleX: component.h / frame.maxH, + scaleY: component.v / frame.maxV, + blocksPerLine: component.blocksPerLine, + blocksPerColumn: component.blocksPerColumn + }); + } + + this.numComponents = this.components.length; + return undefined; + } + + _getLinearizedBlockData(width, height) { + let isSourcePDF = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + const scaleX = this.width / width, scaleY = this.height / height; - var component, componentScaleX, componentScaleY, blocksPerScanline; - var x, y, i, j, k; - var index; - var offset = 0; - var output; - var numComponents = this.components.length; - var dataLength = width * height * numComponents; - var data = new Uint8ClampedArray(dataLength); - var xScaleBlockOffset = new Uint32Array(width); - var mask3LSB = 0xfffffff8; + let component, componentScaleX, componentScaleY, blocksPerScanline; + let x, y, i, j, k; + let index; + let offset = 0; + let output; + const numComponents = this.components.length; + const dataLength = width * height * numComponents; + const data = new Uint8ClampedArray(dataLength); + const xScaleBlockOffset = new Uint32Array(width); + const mask3LSB = 0xfffffff8; + let lastComponentScaleX; - for (i = 0; i < numComponents; i++) { - component = this.components[i]; - componentScaleX = component.scaleX * scaleX; - componentScaleY = component.scaleY * scaleY; - offset = i; - output = component.output; - blocksPerScanline = component.blocksPerLine + 1 << 3; + for (i = 0; i < numComponents; i++) { + component = this.components[i]; + componentScaleX = component.scaleX * scaleX; + componentScaleY = component.scaleY * scaleY; + offset = i; + output = component.output; + blocksPerScanline = component.blocksPerLine + 1 << 3; + if (componentScaleX !== lastComponentScaleX) { for (x = 0; x < width; x++) { j = 0 | x * componentScaleX; xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7; } - for (y = 0; y < height; y++) { - j = 0 | y * componentScaleY; - index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3; + lastComponentScaleX = componentScaleX; + } - for (x = 0; x < width; x++) { - data[offset] = output[index + xScaleBlockOffset[x]]; - offset += numComponents; - } + for (y = 0; y < height; y++) { + j = 0 | y * componentScaleY; + index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3; + + for (x = 0; x < width; x++) { + data[offset] = output[index + xScaleBlockOffset[x]]; + offset += numComponents; } } - - var transform = this._decodeTransform; - - if (!isSourcePDF && numComponents === 4 && !transform) { - transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]); - } - - if (transform) { - for (i = 0; i < dataLength;) { - for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) { - data[i] = (data[i] * transform[k] >> 8) + transform[k + 1]; - } - } - } - - return data; - }, - - get _isColorConversionNeeded() { - if (this.adobe) { - return !!this.adobe.transformCode; - } - - if (this.numComponents === 3) { - if (this._colorTransform === 0) { - return false; - } - - return true; - } - - if (this._colorTransform === 1) { - return true; - } - - return false; - }, - - _convertYccToRgb: function convertYccToRgb(data) { - var Y, Cb, Cr; - - for (var i = 0, length = data.length; i < length; i += 3) { - Y = data[i]; - Cb = data[i + 1]; - Cr = data[i + 2]; - data[i] = Y - 179.456 + 1.402 * Cr; - data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr; - data[i + 2] = Y - 226.816 + 1.772 * Cb; - } - - return data; - }, - _convertYcckToRgb: function convertYcckToRgb(data) { - var Y, Cb, Cr, k; - var offset = 0; - - for (var i = 0, length = data.length; i < length; i += 4) { - Y = data[i]; - Cb = data[i + 1]; - Cr = data[i + 2]; - k = data[i + 3]; - data[offset++] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776); - data[offset++] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665); - data[offset++] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407); - } - - return data.subarray(0, offset); - }, - _convertYcckToCmyk: function convertYcckToCmyk(data) { - var Y, Cb, Cr; - - for (var i = 0, length = data.length; i < length; i += 4) { - Y = data[i]; - Cb = data[i + 1]; - Cr = data[i + 2]; - data[i] = 434.456 - Y - 1.402 * Cr; - data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr; - data[i + 2] = 481.816 - Y - 1.772 * Cb; - } - - return data; - }, - _convertCmykToRgb: function convertCmykToRgb(data) { - var c, m, y, k; - var offset = 0; - var scale = 1 / 255; - - for (var i = 0, length = data.length; i < length; i += 4) { - c = data[i] * scale; - m = data[i + 1] * scale; - y = data[i + 2] * scale; - k = data[i + 3] * scale; - data[offset++] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k - 285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y - 17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) - k * (21.86122147463605 * k + 189.48180835922747); - data[offset++] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k - 79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) - k * (20.737325471181034 * k + 187.80453709719578); - data[offset++] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k - 14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k - 193.58209356861505) - k * (22.33816807309886 * k + 180.12613974708367); - } - - return data.subarray(0, offset); - }, - getData: function getData(_ref3) { - var width = _ref3.width, - height = _ref3.height, - _ref3$forceRGB = _ref3.forceRGB, - forceRGB = _ref3$forceRGB === void 0 ? false : _ref3$forceRGB, - _ref3$isSourcePDF = _ref3.isSourcePDF, - isSourcePDF = _ref3$isSourcePDF === void 0 ? false : _ref3$isSourcePDF; - - if (this.numComponents > 4) { - throw new JpegError('Unsupported color mode'); - } - - var data = this._getLinearizedBlockData(width, height, isSourcePDF); - - if (this.numComponents === 1 && forceRGB) { - var dataLength = data.length; - var rgbData = new Uint8ClampedArray(dataLength * 3); - var offset = 0; - - for (var i = 0; i < dataLength; i++) { - var grayColor = data[i]; - rgbData[offset++] = grayColor; - rgbData[offset++] = grayColor; - rgbData[offset++] = grayColor; - } - - return rgbData; - } else if (this.numComponents === 3 && this._isColorConversionNeeded) { - return this._convertYccToRgb(data); - } else if (this.numComponents === 4) { - if (this._isColorConversionNeeded) { - if (forceRGB) { - return this._convertYcckToRgb(data); - } - - return this._convertYcckToCmyk(data); - } else if (forceRGB) { - return this._convertCmykToRgb(data); - } - } - - return data; } - }; - return JpegImage; -}(); + + let transform = this._decodeTransform; + + if (!isSourcePDF && numComponents === 4 && !transform) { + transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]); + } + + if (transform) { + for (i = 0; i < dataLength;) { + for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) { + data[i] = (data[i] * transform[k] >> 8) + transform[k + 1]; + } + } + } + + return data; + } + + get _isColorConversionNeeded() { + if (this.adobe) { + return !!this.adobe.transformCode; + } + + if (this.numComponents === 3) { + if (this._colorTransform === 0) { + return false; + } else if (this.components[0].index === 0x52 && this.components[1].index === 0x47 && this.components[2].index === 0x42) { + return false; + } + + return true; + } + + if (this._colorTransform === 1) { + return true; + } + + return false; + } + + _convertYccToRgb(data) { + let Y, Cb, Cr; + + for (let i = 0, length = data.length; i < length; i += 3) { + Y = data[i]; + Cb = data[i + 1]; + Cr = data[i + 2]; + data[i] = Y - 179.456 + 1.402 * Cr; + data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr; + data[i + 2] = Y - 226.816 + 1.772 * Cb; + } + + return data; + } + + _convertYcckToRgb(data) { + let Y, Cb, Cr, k; + let offset = 0; + + for (let i = 0, length = data.length; i < length; i += 4) { + Y = data[i]; + Cb = data[i + 1]; + Cr = data[i + 2]; + k = data[i + 3]; + data[offset++] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776); + data[offset++] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665); + data[offset++] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407); + } + + return data.subarray(0, offset); + } + + _convertYcckToCmyk(data) { + let Y, Cb, Cr; + + for (let i = 0, length = data.length; i < length; i += 4) { + Y = data[i]; + Cb = data[i + 1]; + Cr = data[i + 2]; + data[i] = 434.456 - Y - 1.402 * Cr; + data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr; + data[i + 2] = 481.816 - Y - 1.772 * Cb; + } + + return data; + } + + _convertCmykToRgb(data) { + let c, m, y, k; + let offset = 0; + + for (let i = 0, length = data.length; i < length; i += 4) { + c = data[i]; + m = data[i + 1]; + y = data[i + 2]; + k = data[i + 3]; + data[offset++] = 255 + c * (-0.00006747147073602441 * c + 0.0008379262121013727 * m + 0.0002894718188643294 * y + 0.003264231057537806 * k - 1.1185611867203937) + m * (0.000026374107616089405 * m - 0.00008626949158638572 * y - 0.0002748769067499491 * k - 0.02155688794978967) + y * (-0.00003878099212869363 * y - 0.0003267808279485286 * k + 0.0686742238595345) - k * (0.0003361971776183937 * k + 0.7430659151342254); + data[offset++] = 255 + c * (0.00013596372813588848 * c + 0.000924537132573585 * m + 0.00010567359618683593 * y + 0.0004791864687436512 * k - 0.3109689587515875) + m * (-0.00023545346108370344 * m + 0.0002702845253534714 * y + 0.0020200308977307156 * k - 0.7488052167015494) + y * (0.00006834815998235662 * y + 0.00015168452363460973 * k - 0.09751927774728933) - k * (0.0003189131175883281 * k + 0.7364883807733168); + data[offset++] = 255 + c * (0.000013598650411385307 * c + 0.00012423956175490851 * m + 0.0004751985097583589 * y - 0.0000036729317476630422 * k - 0.05562186980264034) + m * (0.00016141380598724676 * m + 0.0009692239130725186 * y + 0.0007782692450036253 * k - 0.44015232367526463) + y * (5.068882914068769e-7 * y + 0.0017778369011375071 * k - 0.7591454649749609) - k * (0.0003435319965105553 * k + 0.7063770186160144); + } + + return data.subarray(0, offset); + } + + getData(_ref) { + let { + width, + height, + forceRGB = false, + isSourcePDF = false + } = _ref; + + if (this.numComponents > 4) { + throw new JpegError("Unsupported color mode"); + } + + const data = this._getLinearizedBlockData(width, height, isSourcePDF); + + if (this.numComponents === 1 && forceRGB) { + const dataLength = data.length; + const rgbData = new Uint8ClampedArray(dataLength * 3); + let offset = 0; + + for (let i = 0; i < dataLength; i++) { + const grayColor = data[i]; + rgbData[offset++] = grayColor; + rgbData[offset++] = grayColor; + rgbData[offset++] = grayColor; + } + + return rgbData; + } else if (this.numComponents === 3 && this._isColorConversionNeeded) { + return this._convertYccToRgb(data); + } else if (this.numComponents === 4) { + if (this._isColorConversionNeeded) { + if (forceRGB) { + return this._convertYcckToRgb(data); + } + + return this._convertYcckToCmyk(data); + } else if (forceRGB) { + return this._convertCmykToRgb(data); + } + } + + return data; + } + +} exports.JpegImage = JpegImage; /***/ }), -/* 166 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 154 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.JpxStream = void 0; -var _stream = __w_pdfjs_require__(158); +var _decode_stream = __w_pdfjs_require__(144); -var _jpx = __w_pdfjs_require__(167); +var _jpx = __w_pdfjs_require__(155); -var _util = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(2); -var JpxStream = function JpxStreamClosure() { - function JpxStream(stream, maybeLength, dict, params) { +class JpxStream extends _decode_stream.DecodeStream { + constructor(stream, maybeLength, params) { + super(maybeLength); this.stream = stream; + this.dict = stream.dict; this.maybeLength = maybeLength; - this.dict = dict; this.params = params; - - _stream.DecodeStream.call(this, maybeLength); } - JpxStream.prototype = Object.create(_stream.DecodeStream.prototype); - Object.defineProperty(JpxStream.prototype, 'bytes', { - get: function JpxStream_bytes() { - return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength)); - }, - configurable: true - }); + get bytes() { + return (0, _util.shadow)(this, "bytes", this.stream.getBytes(this.maybeLength)); + } - JpxStream.prototype.ensureBuffer = function (requested) {}; + ensureBuffer(requested) {} - JpxStream.prototype.readBlock = function () { + readBlock() { if (this.eof) { return; } - var jpxImage = new _jpx.JpxImage(); + const jpxImage = new _jpx.JpxImage(); jpxImage.parse(this.bytes); - var width = jpxImage.width; - var height = jpxImage.height; - var componentsCount = jpxImage.componentsCount; - var tileCount = jpxImage.tiles.length; + const width = jpxImage.width; + const height = jpxImage.height; + const componentsCount = jpxImage.componentsCount; + const tileCount = jpxImage.tiles.length; if (tileCount === 1) { this.buffer = jpxImage.tiles[0].items; } else { - var data = new Uint8ClampedArray(width * height * componentsCount); + const data = new Uint8ClampedArray(width * height * componentsCount); - for (var k = 0; k < tileCount; k++) { - var tileComponents = jpxImage.tiles[k]; - var tileWidth = tileComponents.width; - var tileHeight = tileComponents.height; - var tileLeft = tileComponents.left; - var tileTop = tileComponents.top; - var src = tileComponents.items; - var srcPosition = 0; - var dataPosition = (width * tileTop + tileLeft) * componentsCount; - var imgRowSize = width * componentsCount; - var tileRowSize = tileWidth * componentsCount; + for (let k = 0; k < tileCount; k++) { + const tileComponents = jpxImage.tiles[k]; + const tileWidth = tileComponents.width; + const tileHeight = tileComponents.height; + const tileLeft = tileComponents.left; + const tileTop = tileComponents.top; + const src = tileComponents.items; + let srcPosition = 0; + let dataPosition = (width * tileTop + tileLeft) * componentsCount; + const imgRowSize = width * componentsCount; + const tileRowSize = tileWidth * componentsCount; - for (var j = 0; j < tileHeight; j++) { - var rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize); + for (let j = 0; j < tileHeight; j++) { + const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize); data.set(rowBytes, dataPosition); srcPosition += tileRowSize; dataPosition += imgRowSize; @@ -23179,830 +25640,876 @@ var JpxStream = function JpxStreamClosure() { this.bufferLength = this.buffer.length; this.eof = true; - }; + } - return JpxStream; -}(); +} exports.JpxStream = JpxStream; /***/ }), -/* 167 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 155 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.JpxImage = void 0; -var _util = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(2); -var _arithmetic_decoder = __w_pdfjs_require__(163); +var _core_utils = __w_pdfjs_require__(131); -var JpxError = function JpxErrorClosure() { - function JpxError(msg) { - this.message = 'JPX error: ' + msg; +var _arithmetic_decoder = __w_pdfjs_require__(151); + +class JpxError extends _util.BaseException { + constructor(msg) { + super(`JPX error: ${msg}`, "JpxError"); } - JpxError.prototype = new Error(); - JpxError.prototype.name = 'JpxError'; - JpxError.constructor = JpxError; - return JpxError; -}(); +} -var JpxImage = function JpxImageClosure() { - var SubbandsGainLog2 = { - 'LL': 0, - 'LH': 1, - 'HL': 1, - 'HH': 2 - }; +const SubbandsGainLog2 = { + LL: 0, + LH: 1, + HL: 1, + HH: 2 +}; - function JpxImage() { +class JpxImage { + constructor() { this.failOnCorruptedImage = false; } - JpxImage.prototype = { - parse: function JpxImage_parse(data) { - var head = (0, _util.readUint16)(data, 0); + parse(data) { + const head = (0, _core_utils.readUint16)(data, 0); - if (head === 0xFF4F) { - this.parseCodestream(data, 0, data.length); + if (head === 0xff4f) { + this.parseCodestream(data, 0, data.length); + return; + } + + const length = data.length; + let position = 0; + + while (position < length) { + let headerSize = 8; + let lbox = (0, _core_utils.readUint32)(data, position); + const tbox = (0, _core_utils.readUint32)(data, position + 4); + position += headerSize; + + if (lbox === 1) { + lbox = (0, _core_utils.readUint32)(data, position) * 4294967296 + (0, _core_utils.readUint32)(data, position + 4); + position += 8; + headerSize += 8; + } + + if (lbox === 0) { + lbox = length - position + headerSize; + } + + if (lbox < headerSize) { + throw new JpxError("Invalid box field size"); + } + + const dataLength = lbox - headerSize; + let jumpDataLength = true; + + switch (tbox) { + case 0x6a703268: + jumpDataLength = false; + break; + + case 0x636f6c72: + const method = data[position]; + + if (method === 1) { + const colorspace = (0, _core_utils.readUint32)(data, position + 3); + + switch (colorspace) { + case 16: + case 17: + case 18: + break; + + default: + (0, _util.warn)("Unknown colorspace " + colorspace); + break; + } + } else if (method === 2) { + (0, _util.info)("ICC profile not supported"); + } + + break; + + case 0x6a703263: + this.parseCodestream(data, position, position + dataLength); + break; + + case 0x6a502020: + if ((0, _core_utils.readUint32)(data, position) !== 0x0d0a870a) { + (0, _util.warn)("Invalid JP2 signature"); + } + + break; + + case 0x6a501a1a: + case 0x66747970: + case 0x72726571: + case 0x72657320: + case 0x69686472: + break; + + default: + const headerType = String.fromCharCode(tbox >> 24 & 0xff, tbox >> 16 & 0xff, tbox >> 8 & 0xff, tbox & 0xff); + (0, _util.warn)(`Unsupported header type ${tbox} (${headerType}).`); + break; + } + + if (jumpDataLength) { + position += dataLength; + } + } + } + + parseImageProperties(stream) { + let newByte = stream.getByte(); + + while (newByte >= 0) { + const oldByte = newByte; + newByte = stream.getByte(); + const code = oldByte << 8 | newByte; + + if (code === 0xff51) { + stream.skip(4); + const Xsiz = stream.getInt32() >>> 0; + const Ysiz = stream.getInt32() >>> 0; + const XOsiz = stream.getInt32() >>> 0; + const YOsiz = stream.getInt32() >>> 0; + stream.skip(16); + const Csiz = stream.getUint16(); + this.width = Xsiz - XOsiz; + this.height = Ysiz - YOsiz; + this.componentsCount = Csiz; + this.bitsPerComponent = 8; return; } + } - var position = 0, - length = data.length; + throw new JpxError("No size marker found in JPX stream"); + } - while (position < length) { - var headerSize = 8; - var lbox = (0, _util.readUint32)(data, position); - var tbox = (0, _util.readUint32)(data, position + 4); - position += headerSize; + parseCodestream(data, start, end) { + const context = {}; + let doNotRecover = false; - if (lbox === 1) { - lbox = (0, _util.readUint32)(data, position) * 4294967296 + (0, _util.readUint32)(data, position + 4); - position += 8; - headerSize += 8; - } + try { + let position = start; - if (lbox === 0) { - lbox = length - position + headerSize; - } + while (position + 1 < end) { + const code = (0, _core_utils.readUint16)(data, position); + position += 2; + let length = 0, + j, + sqcd, + spqcds, + spqcdSize, + scalarExpounded, + tile; - if (lbox < headerSize) { - throw new JpxError('Invalid box field size'); - } - - var dataLength = lbox - headerSize; - var jumpDataLength = true; - - switch (tbox) { - case 0x6A703268: - jumpDataLength = false; + switch (code) { + case 0xff4f: + context.mainHeader = true; break; - case 0x636F6C72: - var method = data[position]; + case 0xffd9: + break; - if (method === 1) { - var colorspace = (0, _util.readUint32)(data, position + 3); + case 0xff51: + length = (0, _core_utils.readUint16)(data, position); + const siz = {}; + siz.Xsiz = (0, _core_utils.readUint32)(data, position + 4); + siz.Ysiz = (0, _core_utils.readUint32)(data, position + 8); + siz.XOsiz = (0, _core_utils.readUint32)(data, position + 12); + siz.YOsiz = (0, _core_utils.readUint32)(data, position + 16); + siz.XTsiz = (0, _core_utils.readUint32)(data, position + 20); + siz.YTsiz = (0, _core_utils.readUint32)(data, position + 24); + siz.XTOsiz = (0, _core_utils.readUint32)(data, position + 28); + siz.YTOsiz = (0, _core_utils.readUint32)(data, position + 32); + const componentsCount = (0, _core_utils.readUint16)(data, position + 36); + siz.Csiz = componentsCount; + const components = []; + j = position + 38; - switch (colorspace) { - case 16: - case 17: - case 18: - break; - - default: - (0, _util.warn)('Unknown colorspace ' + colorspace); - break; - } - } else if (method === 2) { - (0, _util.info)('ICC profile not supported'); + for (let i = 0; i < componentsCount; i++) { + const component = { + precision: (data[j] & 0x7f) + 1, + isSigned: !!(data[j] & 0x80), + XRsiz: data[j + 1], + YRsiz: data[j + 2] + }; + j += 3; + calculateComponentDimensions(component, siz); + components.push(component); } + context.SIZ = siz; + context.components = components; + calculateTileGrids(context, components); + context.QCC = []; + context.COC = []; break; - case 0x6A703263: - this.parseCodestream(data, position, position + dataLength); - break; + case 0xff5c: + length = (0, _core_utils.readUint16)(data, position); + const qcd = {}; + j = position + 2; + sqcd = data[j++]; - case 0x6A502020: - if ((0, _util.readUint32)(data, position) !== 0x0d0a870a) { - (0, _util.warn)('Invalid JP2 signature'); + switch (sqcd & 0x1f) { + case 0: + spqcdSize = 8; + scalarExpounded = true; + break; + + case 1: + spqcdSize = 16; + scalarExpounded = false; + break; + + case 2: + spqcdSize = 16; + scalarExpounded = true; + break; + + default: + throw new Error("Invalid SQcd value " + sqcd); } - break; + qcd.noQuantization = spqcdSize === 8; + qcd.scalarExpounded = scalarExpounded; + qcd.guardBits = sqcd >> 5; + spqcds = []; - case 0x6A501A1A: - case 0x66747970: - case 0x72726571: - case 0x72657320: - case 0x69686472: - break; + while (j < length + position) { + const spqcd = {}; - default: - var headerType = String.fromCharCode(tbox >> 24 & 0xFF, tbox >> 16 & 0xFF, tbox >> 8 & 0xFF, tbox & 0xFF); - (0, _util.warn)('Unsupported header type ' + tbox + ' (' + headerType + ')'); - break; - } - - if (jumpDataLength) { - position += dataLength; - } - } - }, - parseImageProperties: function JpxImage_parseImageProperties(stream) { - var newByte = stream.getByte(); - - while (newByte >= 0) { - var oldByte = newByte; - newByte = stream.getByte(); - var code = oldByte << 8 | newByte; - - if (code === 0xFF51) { - stream.skip(4); - var Xsiz = stream.getInt32() >>> 0; - var Ysiz = stream.getInt32() >>> 0; - var XOsiz = stream.getInt32() >>> 0; - var YOsiz = stream.getInt32() >>> 0; - stream.skip(16); - var Csiz = stream.getUint16(); - this.width = Xsiz - XOsiz; - this.height = Ysiz - YOsiz; - this.componentsCount = Csiz; - this.bitsPerComponent = 8; - return; - } - } - - throw new JpxError('No size marker found in JPX stream'); - }, - parseCodestream: function JpxImage_parseCodestream(data, start, end) { - var context = {}; - var doNotRecover = false; - - try { - var position = start; - - while (position + 1 < end) { - var code = (0, _util.readUint16)(data, position); - position += 2; - var length = 0, - j, - sqcd, - spqcds, - spqcdSize, - scalarExpounded, - tile; - - switch (code) { - case 0xFF4F: - context.mainHeader = true; - break; - - case 0xFFD9: - break; - - case 0xFF51: - length = (0, _util.readUint16)(data, position); - var siz = {}; - siz.Xsiz = (0, _util.readUint32)(data, position + 4); - siz.Ysiz = (0, _util.readUint32)(data, position + 8); - siz.XOsiz = (0, _util.readUint32)(data, position + 12); - siz.YOsiz = (0, _util.readUint32)(data, position + 16); - siz.XTsiz = (0, _util.readUint32)(data, position + 20); - siz.YTsiz = (0, _util.readUint32)(data, position + 24); - siz.XTOsiz = (0, _util.readUint32)(data, position + 28); - siz.YTOsiz = (0, _util.readUint32)(data, position + 32); - var componentsCount = (0, _util.readUint16)(data, position + 36); - siz.Csiz = componentsCount; - var components = []; - j = position + 38; - - for (var i = 0; i < componentsCount; i++) { - var component = { - precision: (data[j] & 0x7F) + 1, - isSigned: !!(data[j] & 0x80), - XRsiz: data[j + 1], - YRsiz: data[j + 2] - }; - j += 3; - calculateComponentDimensions(component, siz); - components.push(component); - } - - context.SIZ = siz; - context.components = components; - calculateTileGrids(context, components); - context.QCC = []; - context.COC = []; - break; - - case 0xFF5C: - length = (0, _util.readUint16)(data, position); - var qcd = {}; - j = position + 2; - sqcd = data[j++]; - - switch (sqcd & 0x1F) { - case 0: - spqcdSize = 8; - scalarExpounded = true; - break; - - case 1: - spqcdSize = 16; - scalarExpounded = false; - break; - - case 2: - spqcdSize = 16; - scalarExpounded = true; - break; - - default: - throw new Error('Invalid SQcd value ' + sqcd); - } - - qcd.noQuantization = spqcdSize === 8; - qcd.scalarExpounded = scalarExpounded; - qcd.guardBits = sqcd >> 5; - spqcds = []; - - while (j < length + position) { - var spqcd = {}; - - if (spqcdSize === 8) { - spqcd.epsilon = data[j++] >> 3; - spqcd.mu = 0; - } else { - spqcd.epsilon = data[j] >> 3; - spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1]; - j += 2; - } - - spqcds.push(spqcd); - } - - qcd.SPqcds = spqcds; - - if (context.mainHeader) { - context.QCD = qcd; + if (spqcdSize === 8) { + spqcd.epsilon = data[j++] >> 3; + spqcd.mu = 0; } else { - context.currentTile.QCD = qcd; - context.currentTile.QCC = []; - } - - break; - - case 0xFF5D: - length = (0, _util.readUint16)(data, position); - var qcc = {}; - j = position + 2; - var cqcc; - - if (context.SIZ.Csiz < 257) { - cqcc = data[j++]; - } else { - cqcc = (0, _util.readUint16)(data, j); + spqcd.epsilon = data[j] >> 3; + spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1]; j += 2; } - sqcd = data[j++]; + spqcds.push(spqcd); + } - switch (sqcd & 0x1F) { - case 0: - spqcdSize = 8; - scalarExpounded = true; - break; + qcd.SPqcds = spqcds; - case 1: - spqcdSize = 16; - scalarExpounded = false; - break; + if (context.mainHeader) { + context.QCD = qcd; + } else { + context.currentTile.QCD = qcd; + context.currentTile.QCC = []; + } - case 2: - spqcdSize = 16; - scalarExpounded = true; - break; + break; - default: - throw new Error('Invalid SQcd value ' + sqcd); + case 0xff5d: + length = (0, _core_utils.readUint16)(data, position); + const qcc = {}; + j = position + 2; + let cqcc; + + if (context.SIZ.Csiz < 257) { + cqcc = data[j++]; + } else { + cqcc = (0, _core_utils.readUint16)(data, j); + j += 2; + } + + sqcd = data[j++]; + + switch (sqcd & 0x1f) { + case 0: + spqcdSize = 8; + scalarExpounded = true; + break; + + case 1: + spqcdSize = 16; + scalarExpounded = false; + break; + + case 2: + spqcdSize = 16; + scalarExpounded = true; + break; + + default: + throw new Error("Invalid SQcd value " + sqcd); + } + + qcc.noQuantization = spqcdSize === 8; + qcc.scalarExpounded = scalarExpounded; + qcc.guardBits = sqcd >> 5; + spqcds = []; + + while (j < length + position) { + const spqcd = {}; + + if (spqcdSize === 8) { + spqcd.epsilon = data[j++] >> 3; + spqcd.mu = 0; + } else { + spqcd.epsilon = data[j] >> 3; + spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1]; + j += 2; } - qcc.noQuantization = spqcdSize === 8; - qcc.scalarExpounded = scalarExpounded; - qcc.guardBits = sqcd >> 5; - spqcds = []; + spqcds.push(spqcd); + } + + qcc.SPqcds = spqcds; + + if (context.mainHeader) { + context.QCC[cqcc] = qcc; + } else { + context.currentTile.QCC[cqcc] = qcc; + } + + break; + + case 0xff52: + length = (0, _core_utils.readUint16)(data, position); + const cod = {}; + j = position + 2; + const scod = data[j++]; + cod.entropyCoderWithCustomPrecincts = !!(scod & 1); + cod.sopMarkerUsed = !!(scod & 2); + cod.ephMarkerUsed = !!(scod & 4); + cod.progressionOrder = data[j++]; + cod.layersCount = (0, _core_utils.readUint16)(data, j); + j += 2; + cod.multipleComponentTransform = data[j++]; + cod.decompositionLevelsCount = data[j++]; + cod.xcb = (data[j++] & 0xf) + 2; + cod.ycb = (data[j++] & 0xf) + 2; + const blockStyle = data[j++]; + cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1); + cod.resetContextProbabilities = !!(blockStyle & 2); + cod.terminationOnEachCodingPass = !!(blockStyle & 4); + cod.verticallyStripe = !!(blockStyle & 8); + cod.predictableTermination = !!(blockStyle & 16); + cod.segmentationSymbolUsed = !!(blockStyle & 32); + cod.reversibleTransformation = data[j++]; + + if (cod.entropyCoderWithCustomPrecincts) { + const precinctsSizes = []; while (j < length + position) { - spqcd = {}; - - if (spqcdSize === 8) { - spqcd.epsilon = data[j++] >> 3; - spqcd.mu = 0; - } else { - spqcd.epsilon = data[j] >> 3; - spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1]; - j += 2; - } - - spqcds.push(spqcd); + const precinctsSize = data[j++]; + precinctsSizes.push({ + PPx: precinctsSize & 0xf, + PPy: precinctsSize >> 4 + }); } - qcc.SPqcds = spqcds; + cod.precinctsSizes = precinctsSizes; + } - if (context.mainHeader) { - context.QCC[cqcc] = qcc; - } else { - context.currentTile.QCC[cqcc] = qcc; - } + const unsupported = []; - break; + if (cod.selectiveArithmeticCodingBypass) { + unsupported.push("selectiveArithmeticCodingBypass"); + } - case 0xFF52: - length = (0, _util.readUint16)(data, position); - var cod = {}; - j = position + 2; - var scod = data[j++]; - cod.entropyCoderWithCustomPrecincts = !!(scod & 1); - cod.sopMarkerUsed = !!(scod & 2); - cod.ephMarkerUsed = !!(scod & 4); - cod.progressionOrder = data[j++]; - cod.layersCount = (0, _util.readUint16)(data, j); - j += 2; - cod.multipleComponentTransform = data[j++]; - cod.decompositionLevelsCount = data[j++]; - cod.xcb = (data[j++] & 0xF) + 2; - cod.ycb = (data[j++] & 0xF) + 2; - var blockStyle = data[j++]; - cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1); - cod.resetContextProbabilities = !!(blockStyle & 2); - cod.terminationOnEachCodingPass = !!(blockStyle & 4); - cod.verticallyStripe = !!(blockStyle & 8); - cod.predictableTermination = !!(blockStyle & 16); - cod.segmentationSymbolUsed = !!(blockStyle & 32); - cod.reversibleTransformation = data[j++]; + if (cod.terminationOnEachCodingPass) { + unsupported.push("terminationOnEachCodingPass"); + } - if (cod.entropyCoderWithCustomPrecincts) { - var precinctsSizes = []; + if (cod.verticallyStripe) { + unsupported.push("verticallyStripe"); + } - while (j < length + position) { - var precinctsSize = data[j++]; - precinctsSizes.push({ - PPx: precinctsSize & 0xF, - PPy: precinctsSize >> 4 - }); - } + if (cod.predictableTermination) { + unsupported.push("predictableTermination"); + } - cod.precinctsSizes = precinctsSizes; - } + if (unsupported.length > 0) { + doNotRecover = true; + (0, _util.warn)(`JPX: Unsupported COD options (${unsupported.join(", ")}).`); + } - var unsupported = []; + if (context.mainHeader) { + context.COD = cod; + } else { + context.currentTile.COD = cod; + context.currentTile.COC = []; + } - if (cod.selectiveArithmeticCodingBypass) { - unsupported.push('selectiveArithmeticCodingBypass'); - } + break; - if (cod.resetContextProbabilities) { - unsupported.push('resetContextProbabilities'); - } + case 0xff90: + length = (0, _core_utils.readUint16)(data, position); + tile = {}; + tile.index = (0, _core_utils.readUint16)(data, position + 2); + tile.length = (0, _core_utils.readUint32)(data, position + 4); + tile.dataEnd = tile.length + position - 2; + tile.partIndex = data[position + 8]; + tile.partsCount = data[position + 9]; + context.mainHeader = false; - if (cod.terminationOnEachCodingPass) { - unsupported.push('terminationOnEachCodingPass'); - } + if (tile.partIndex === 0) { + tile.COD = context.COD; + tile.COC = context.COC.slice(0); + tile.QCD = context.QCD; + tile.QCC = context.QCC.slice(0); + } - if (cod.verticallyStripe) { - unsupported.push('verticallyStripe'); - } + context.currentTile = tile; + break; - if (cod.predictableTermination) { - unsupported.push('predictableTermination'); - } + case 0xff93: + tile = context.currentTile; - if (unsupported.length > 0) { - doNotRecover = true; - throw new Error('Unsupported COD options (' + unsupported.join(', ') + ')'); - } + if (tile.partIndex === 0) { + initializeTile(context, tile.index); + buildPackets(context); + } - if (context.mainHeader) { - context.COD = cod; - } else { - context.currentTile.COD = cod; - context.currentTile.COC = []; - } + length = tile.dataEnd - position; + parseTilePackets(context, data, position, length); + break; - break; + case 0xff53: + (0, _util.warn)("JPX: Codestream code 0xFF53 (COC) is not implemented."); - case 0xFF90: - length = (0, _util.readUint16)(data, position); - tile = {}; - tile.index = (0, _util.readUint16)(data, position + 2); - tile.length = (0, _util.readUint32)(data, position + 4); - tile.dataEnd = tile.length + position - 2; - tile.partIndex = data[position + 8]; - tile.partsCount = data[position + 9]; - context.mainHeader = false; + case 0xff55: + case 0xff57: + case 0xff58: + case 0xff64: + length = (0, _core_utils.readUint16)(data, position); + break; - if (tile.partIndex === 0) { - tile.COD = context.COD; - tile.COC = context.COC.slice(0); - tile.QCD = context.QCD; - tile.QCC = context.QCC.slice(0); - } - - context.currentTile = tile; - break; - - case 0xFF93: - tile = context.currentTile; - - if (tile.partIndex === 0) { - initializeTile(context, tile.index); - buildPackets(context); - } - - length = tile.dataEnd - position; - parseTilePackets(context, data, position, length); - break; - - case 0xFF55: - case 0xFF57: - case 0xFF58: - case 0xFF64: - length = (0, _util.readUint16)(data, position); - break; - - case 0xFF53: - throw new Error('Codestream code 0xFF53 (COC) is ' + 'not implemented'); - - default: - throw new Error('Unknown codestream code: ' + code.toString(16)); - } - - position += length; - } - } catch (e) { - if (doNotRecover || this.failOnCorruptedImage) { - throw new JpxError(e.message); - } else { - (0, _util.warn)('JPX: Trying to recover from: ' + e.message); + default: + throw new Error("Unknown codestream code: " + code.toString(16)); } + + position += length; + } + } catch (e) { + if (doNotRecover || this.failOnCorruptedImage) { + throw new JpxError(e.message); + } else { + (0, _util.warn)(`JPX: Trying to recover from: "${e.message}".`); } - - this.tiles = transformComponents(context); - this.width = context.SIZ.Xsiz - context.SIZ.XOsiz; - this.height = context.SIZ.Ysiz - context.SIZ.YOsiz; - this.componentsCount = context.SIZ.Csiz; } + + this.tiles = transformComponents(context); + this.width = context.SIZ.Xsiz - context.SIZ.XOsiz; + this.height = context.SIZ.Ysiz - context.SIZ.YOsiz; + this.componentsCount = context.SIZ.Csiz; + } + +} + +exports.JpxImage = JpxImage; + +function calculateComponentDimensions(component, siz) { + component.x0 = Math.ceil(siz.XOsiz / component.XRsiz); + component.x1 = Math.ceil(siz.Xsiz / component.XRsiz); + component.y0 = Math.ceil(siz.YOsiz / component.YRsiz); + component.y1 = Math.ceil(siz.Ysiz / component.YRsiz); + component.width = component.x1 - component.x0; + component.height = component.y1 - component.y0; +} + +function calculateTileGrids(context, components) { + const siz = context.SIZ; + const tiles = []; + let tile; + const numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz); + const numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz); + + for (let q = 0; q < numYtiles; q++) { + for (let p = 0; p < numXtiles; p++) { + tile = {}; + tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz); + tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz); + tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz); + tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz); + tile.width = tile.tx1 - tile.tx0; + tile.height = tile.ty1 - tile.ty0; + tile.components = []; + tiles.push(tile); + } + } + + context.tiles = tiles; + const componentsCount = siz.Csiz; + + for (let i = 0, ii = componentsCount; i < ii; i++) { + const component = components[i]; + + for (let j = 0, jj = tiles.length; j < jj; j++) { + const tileComponent = {}; + tile = tiles[j]; + tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz); + tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz); + tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz); + tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz); + tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0; + tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0; + tile.components[i] = tileComponent; + } + } +} + +function getBlocksDimensions(context, component, r) { + const codOrCoc = component.codingStyleParameters; + const result = {}; + + if (!codOrCoc.entropyCoderWithCustomPrecincts) { + result.PPx = 15; + result.PPy = 15; + } else { + result.PPx = codOrCoc.precinctsSizes[r].PPx; + result.PPy = codOrCoc.precinctsSizes[r].PPy; + } + + result.xcb_ = r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) : Math.min(codOrCoc.xcb, result.PPx); + result.ycb_ = r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) : Math.min(codOrCoc.ycb, result.PPy); + return result; +} + +function buildPrecincts(context, resolution, dimensions) { + const precinctWidth = 1 << dimensions.PPx; + const precinctHeight = 1 << dimensions.PPy; + const isZeroRes = resolution.resLevel === 0; + const precinctWidthInSubband = 1 << dimensions.PPx + (isZeroRes ? 0 : -1); + const precinctHeightInSubband = 1 << dimensions.PPy + (isZeroRes ? 0 : -1); + const numprecinctswide = resolution.trx1 > resolution.trx0 ? Math.ceil(resolution.trx1 / precinctWidth) - Math.floor(resolution.trx0 / precinctWidth) : 0; + const numprecinctshigh = resolution.try1 > resolution.try0 ? Math.ceil(resolution.try1 / precinctHeight) - Math.floor(resolution.try0 / precinctHeight) : 0; + const numprecincts = numprecinctswide * numprecinctshigh; + resolution.precinctParameters = { + precinctWidth, + precinctHeight, + numprecinctswide, + numprecinctshigh, + numprecincts, + precinctWidthInSubband, + precinctHeightInSubband }; +} - function calculateComponentDimensions(component, siz) { - component.x0 = Math.ceil(siz.XOsiz / component.XRsiz); - component.x1 = Math.ceil(siz.Xsiz / component.XRsiz); - component.y0 = Math.ceil(siz.YOsiz / component.YRsiz); - component.y1 = Math.ceil(siz.Ysiz / component.YRsiz); - component.width = component.x1 - component.x0; - component.height = component.y1 - component.y0; - } +function buildCodeblocks(context, subband, dimensions) { + const xcb_ = dimensions.xcb_; + const ycb_ = dimensions.ycb_; + const codeblockWidth = 1 << xcb_; + const codeblockHeight = 1 << ycb_; + const cbx0 = subband.tbx0 >> xcb_; + const cby0 = subband.tby0 >> ycb_; + const cbx1 = subband.tbx1 + codeblockWidth - 1 >> xcb_; + const cby1 = subband.tby1 + codeblockHeight - 1 >> ycb_; + const precinctParameters = subband.resolution.precinctParameters; + const codeblocks = []; + const precincts = []; + let i, j, codeblock, precinctNumber; - function calculateTileGrids(context, components) { - var siz = context.SIZ; - var tile, - tiles = []; - var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz); - var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz); + for (j = cby0; j < cby1; j++) { + for (i = cbx0; i < cbx1; i++) { + codeblock = { + cbx: i, + cby: j, + tbx0: codeblockWidth * i, + tby0: codeblockHeight * j, + tbx1: codeblockWidth * (i + 1), + tby1: codeblockHeight * (j + 1) + }; + codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0); + codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0); + codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1); + codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1); + const pi = Math.floor((codeblock.tbx0_ - subband.tbx0) / precinctParameters.precinctWidthInSubband); + const pj = Math.floor((codeblock.tby0_ - subband.tby0) / precinctParameters.precinctHeightInSubband); + precinctNumber = pi + pj * precinctParameters.numprecinctswide; + codeblock.precinctNumber = precinctNumber; + codeblock.subbandType = subband.type; + codeblock.Lblock = 3; - for (var q = 0; q < numYtiles; q++) { - for (var p = 0; p < numXtiles; p++) { - tile = {}; - tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz); - tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz); - tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz); - tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz); - tile.width = tile.tx1 - tile.tx0; - tile.height = tile.ty1 - tile.ty0; - tile.components = []; - tiles.push(tile); + if (codeblock.tbx1_ <= codeblock.tbx0_ || codeblock.tby1_ <= codeblock.tby0_) { + continue; } - } - context.tiles = tiles; - var componentsCount = siz.Csiz; + codeblocks.push(codeblock); + let precinct = precincts[precinctNumber]; - for (var i = 0, ii = componentsCount; i < ii; i++) { - var component = components[i]; + if (precinct !== undefined) { + if (i < precinct.cbxMin) { + precinct.cbxMin = i; + } else if (i > precinct.cbxMax) { + precinct.cbxMax = i; + } - for (var j = 0, jj = tiles.length; j < jj; j++) { - var tileComponent = {}; - tile = tiles[j]; - tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz); - tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz); - tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz); - tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz); - tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0; - tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0; - tile.components[i] = tileComponent; - } - } - } - - function getBlocksDimensions(context, component, r) { - var codOrCoc = component.codingStyleParameters; - var result = {}; - - if (!codOrCoc.entropyCoderWithCustomPrecincts) { - result.PPx = 15; - result.PPy = 15; - } else { - result.PPx = codOrCoc.precinctsSizes[r].PPx; - result.PPy = codOrCoc.precinctsSizes[r].PPy; - } - - result.xcb_ = r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) : Math.min(codOrCoc.xcb, result.PPx); - result.ycb_ = r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) : Math.min(codOrCoc.ycb, result.PPy); - return result; - } - - function buildPrecincts(context, resolution, dimensions) { - var precinctWidth = 1 << dimensions.PPx; - var precinctHeight = 1 << dimensions.PPy; - var isZeroRes = resolution.resLevel === 0; - var precinctWidthInSubband = 1 << dimensions.PPx + (isZeroRes ? 0 : -1); - var precinctHeightInSubband = 1 << dimensions.PPy + (isZeroRes ? 0 : -1); - var numprecinctswide = resolution.trx1 > resolution.trx0 ? Math.ceil(resolution.trx1 / precinctWidth) - Math.floor(resolution.trx0 / precinctWidth) : 0; - var numprecinctshigh = resolution.try1 > resolution.try0 ? Math.ceil(resolution.try1 / precinctHeight) - Math.floor(resolution.try0 / precinctHeight) : 0; - var numprecincts = numprecinctswide * numprecinctshigh; - resolution.precinctParameters = { - precinctWidth: precinctWidth, - precinctHeight: precinctHeight, - numprecinctswide: numprecinctswide, - numprecinctshigh: numprecinctshigh, - numprecincts: numprecincts, - precinctWidthInSubband: precinctWidthInSubband, - precinctHeightInSubband: precinctHeightInSubband - }; - } - - function buildCodeblocks(context, subband, dimensions) { - var xcb_ = dimensions.xcb_; - var ycb_ = dimensions.ycb_; - var codeblockWidth = 1 << xcb_; - var codeblockHeight = 1 << ycb_; - var cbx0 = subband.tbx0 >> xcb_; - var cby0 = subband.tby0 >> ycb_; - var cbx1 = subband.tbx1 + codeblockWidth - 1 >> xcb_; - var cby1 = subband.tby1 + codeblockHeight - 1 >> ycb_; - var precinctParameters = subband.resolution.precinctParameters; - var codeblocks = []; - var precincts = []; - var i, j, codeblock, precinctNumber; - - for (j = cby0; j < cby1; j++) { - for (i = cbx0; i < cbx1; i++) { - codeblock = { - cbx: i, - cby: j, - tbx0: codeblockWidth * i, - tby0: codeblockHeight * j, - tbx1: codeblockWidth * (i + 1), - tby1: codeblockHeight * (j + 1) + if (j < precinct.cbyMin) { + precinct.cbxMin = j; + } else if (j > precinct.cbyMax) { + precinct.cbyMax = j; + } + } else { + precincts[precinctNumber] = precinct = { + cbxMin: i, + cbyMin: j, + cbxMax: i, + cbyMax: j }; - codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0); - codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0); - codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1); - codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1); - var pi = Math.floor((codeblock.tbx0_ - subband.tbx0) / precinctParameters.precinctWidthInSubband); - var pj = Math.floor((codeblock.tby0_ - subband.tby0) / precinctParameters.precinctHeightInSubband); - precinctNumber = pi + pj * precinctParameters.numprecinctswide; - codeblock.precinctNumber = precinctNumber; - codeblock.subbandType = subband.type; - codeblock.Lblock = 3; - - if (codeblock.tbx1_ <= codeblock.tbx0_ || codeblock.tby1_ <= codeblock.tby0_) { - continue; - } - - codeblocks.push(codeblock); - var precinct = precincts[precinctNumber]; - - if (precinct !== undefined) { - if (i < precinct.cbxMin) { - precinct.cbxMin = i; - } else if (i > precinct.cbxMax) { - precinct.cbxMax = i; - } - - if (j < precinct.cbyMin) { - precinct.cbxMin = j; - } else if (j > precinct.cbyMax) { - precinct.cbyMax = j; - } - } else { - precincts[precinctNumber] = precinct = { - cbxMin: i, - cbyMin: j, - cbxMax: i, - cbyMax: j - }; - } - - codeblock.precinct = precinct; } - } - subband.codeblockParameters = { - codeblockWidth: xcb_, - codeblockHeight: ycb_, - numcodeblockwide: cbx1 - cbx0 + 1, - numcodeblockhigh: cby1 - cby0 + 1 - }; - subband.codeblocks = codeblocks; - subband.precincts = precincts; + codeblock.precinct = precinct; + } } - function createPacket(resolution, precinctNumber, layerNumber) { - var precinctCodeblocks = []; - var subbands = resolution.subbands; + subband.codeblockParameters = { + codeblockWidth: xcb_, + codeblockHeight: ycb_, + numcodeblockwide: cbx1 - cbx0 + 1, + numcodeblockhigh: cby1 - cby0 + 1 + }; + subband.codeblocks = codeblocks; + subband.precincts = precincts; +} - for (var i = 0, ii = subbands.length; i < ii; i++) { - var subband = subbands[i]; - var codeblocks = subband.codeblocks; +function createPacket(resolution, precinctNumber, layerNumber) { + const precinctCodeblocks = []; + const subbands = resolution.subbands; - for (var j = 0, jj = codeblocks.length; j < jj; j++) { - var codeblock = codeblocks[j]; + for (let i = 0, ii = subbands.length; i < ii; i++) { + const subband = subbands[i]; + const codeblocks = subband.codeblocks; - if (codeblock.precinctNumber !== precinctNumber) { - continue; - } + for (let j = 0, jj = codeblocks.length; j < jj; j++) { + const codeblock = codeblocks[j]; - precinctCodeblocks.push(codeblock); + if (codeblock.precinctNumber !== precinctNumber) { + continue; } - } - return { - layerNumber: layerNumber, - codeblocks: precinctCodeblocks - }; + precinctCodeblocks.push(codeblock); + } } - function LayerResolutionComponentPositionIterator(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var layersCount = tile.codingStyleDefaultParameters.layersCount; - var componentsCount = siz.Csiz; - var maxDecompositionLevelsCount = 0; + return { + layerNumber, + codeblocks: precinctCodeblocks + }; +} - for (var q = 0; q < componentsCount; q++) { - maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount); +function LayerResolutionComponentPositionIterator(context) { + const siz = context.SIZ; + const tileIndex = context.currentTile.index; + const tile = context.tiles[tileIndex]; + const layersCount = tile.codingStyleDefaultParameters.layersCount; + const componentsCount = siz.Csiz; + let maxDecompositionLevelsCount = 0; + + for (let q = 0; q < componentsCount; q++) { + maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount); + } + + let l = 0, + r = 0, + i = 0, + k = 0; + + this.nextPacket = function JpxImage_nextPacket() { + for (; l < layersCount; l++) { + for (; r <= maxDecompositionLevelsCount; r++) { + for (; i < componentsCount; i++) { + const component = tile.components[i]; + + if (r > component.codingStyleParameters.decompositionLevelsCount) { + continue; + } + + const resolution = component.resolutions[r]; + const numprecincts = resolution.precinctParameters.numprecincts; + + for (; k < numprecincts;) { + const packet = createPacket(resolution, k, l); + k++; + return packet; + } + + k = 0; + } + + i = 0; + } + + r = 0; } - var l = 0, - r = 0, - i = 0, - k = 0; + throw new JpxError("Out of packets"); + }; +} - this.nextPacket = function JpxImage_nextPacket() { +function ResolutionLayerComponentPositionIterator(context) { + const siz = context.SIZ; + const tileIndex = context.currentTile.index; + const tile = context.tiles[tileIndex]; + const layersCount = tile.codingStyleDefaultParameters.layersCount; + const componentsCount = siz.Csiz; + let maxDecompositionLevelsCount = 0; + + for (let q = 0; q < componentsCount; q++) { + maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount); + } + + let r = 0, + l = 0, + i = 0, + k = 0; + + this.nextPacket = function JpxImage_nextPacket() { + for (; r <= maxDecompositionLevelsCount; r++) { for (; l < layersCount; l++) { - for (; r <= maxDecompositionLevelsCount; r++) { - for (; i < componentsCount; i++) { - var component = tile.components[i]; + for (; i < componentsCount; i++) { + const component = tile.components[i]; - if (r > component.codingStyleParameters.decompositionLevelsCount) { - continue; - } - - var resolution = component.resolutions[r]; - var numprecincts = resolution.precinctParameters.numprecincts; - - for (; k < numprecincts;) { - var packet = createPacket(resolution, k, l); - k++; - return packet; - } - - k = 0; + if (r > component.codingStyleParameters.decompositionLevelsCount) { + continue; } - i = 0; - } + const resolution = component.resolutions[r]; + const numprecincts = resolution.precinctParameters.numprecincts; - r = 0; - } - - throw new JpxError('Out of packets'); - }; - } - - function ResolutionLayerComponentPositionIterator(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var layersCount = tile.codingStyleDefaultParameters.layersCount; - var componentsCount = siz.Csiz; - var maxDecompositionLevelsCount = 0; - - for (var q = 0; q < componentsCount; q++) { - maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount); - } - - var r = 0, - l = 0, - i = 0, - k = 0; - - this.nextPacket = function JpxImage_nextPacket() { - for (; r <= maxDecompositionLevelsCount; r++) { - for (; l < layersCount; l++) { - for (; i < componentsCount; i++) { - var component = tile.components[i]; - - if (r > component.codingStyleParameters.decompositionLevelsCount) { - continue; - } - - var resolution = component.resolutions[r]; - var numprecincts = resolution.precinctParameters.numprecincts; - - for (; k < numprecincts;) { - var packet = createPacket(resolution, k, l); - k++; - return packet; - } - - k = 0; + for (; k < numprecincts;) { + const packet = createPacket(resolution, k, l); + k++; + return packet; } - i = 0; + k = 0; } - l = 0; + i = 0; } - throw new JpxError('Out of packets'); - }; + l = 0; + } + + throw new JpxError("Out of packets"); + }; +} + +function ResolutionPositionComponentLayerIterator(context) { + const siz = context.SIZ; + const tileIndex = context.currentTile.index; + const tile = context.tiles[tileIndex]; + const layersCount = tile.codingStyleDefaultParameters.layersCount; + const componentsCount = siz.Csiz; + let l, r, c, p; + let maxDecompositionLevelsCount = 0; + + for (c = 0; c < componentsCount; c++) { + const component = tile.components[c]; + maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, component.codingStyleParameters.decompositionLevelsCount); } - function ResolutionPositionComponentLayerIterator(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var layersCount = tile.codingStyleDefaultParameters.layersCount; - var componentsCount = siz.Csiz; - var l, r, c, p; - var maxDecompositionLevelsCount = 0; + const maxNumPrecinctsInLevel = new Int32Array(maxDecompositionLevelsCount + 1); - for (c = 0; c < componentsCount; c++) { - var component = tile.components[c]; - maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, component.codingStyleParameters.decompositionLevelsCount); + for (r = 0; r <= maxDecompositionLevelsCount; ++r) { + let maxNumPrecincts = 0; + + for (c = 0; c < componentsCount; ++c) { + const resolutions = tile.components[c].resolutions; + + if (r < resolutions.length) { + maxNumPrecincts = Math.max(maxNumPrecincts, resolutions[r].precinctParameters.numprecincts); + } } - var maxNumPrecinctsInLevel = new Int32Array(maxDecompositionLevelsCount + 1); + maxNumPrecinctsInLevel[r] = maxNumPrecincts; + } - for (r = 0; r <= maxDecompositionLevelsCount; ++r) { - var maxNumPrecincts = 0; + l = 0; + r = 0; + c = 0; + p = 0; - for (c = 0; c < componentsCount; ++c) { - var resolutions = tile.components[c].resolutions; + this.nextPacket = function JpxImage_nextPacket() { + for (; r <= maxDecompositionLevelsCount; r++) { + for (; p < maxNumPrecinctsInLevel[r]; p++) { + for (; c < componentsCount; c++) { + const component = tile.components[c]; - if (r < resolutions.length) { - maxNumPrecincts = Math.max(maxNumPrecincts, resolutions[r].precinctParameters.numprecincts); + if (r > component.codingStyleParameters.decompositionLevelsCount) { + continue; + } + + const resolution = component.resolutions[r]; + const numprecincts = resolution.precinctParameters.numprecincts; + + if (p >= numprecincts) { + continue; + } + + for (; l < layersCount;) { + const packet = createPacket(resolution, p, l); + l++; + return packet; + } + + l = 0; } + + c = 0; } - maxNumPrecinctsInLevel[r] = maxNumPrecincts; + p = 0; } - l = 0; - r = 0; - c = 0; - p = 0; + throw new JpxError("Out of packets"); + }; +} - this.nextPacket = function JpxImage_nextPacket() { - for (; r <= maxDecompositionLevelsCount; r++) { - for (; p < maxNumPrecinctsInLevel[r]; p++) { - for (; c < componentsCount; c++) { - var component = tile.components[c]; +function PositionComponentResolutionLayerIterator(context) { + const siz = context.SIZ; + const tileIndex = context.currentTile.index; + const tile = context.tiles[tileIndex]; + const layersCount = tile.codingStyleDefaultParameters.layersCount; + const componentsCount = siz.Csiz; + const precinctsSizes = getPrecinctSizesInImageScale(tile); + const precinctsIterationSizes = precinctsSizes; + let l = 0, + r = 0, + c = 0, + px = 0, + py = 0; - if (r > component.codingStyleParameters.decompositionLevelsCount) { - continue; - } + this.nextPacket = function JpxImage_nextPacket() { + for (; py < precinctsIterationSizes.maxNumHigh; py++) { + for (; px < precinctsIterationSizes.maxNumWide; px++) { + for (; c < componentsCount; c++) { + const component = tile.components[c]; + const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; - var resolution = component.resolutions[r]; - var numprecincts = resolution.precinctParameters.numprecincts; + for (; r <= decompositionLevelsCount; r++) { + const resolution = component.resolutions[r]; + const sizeInImageScale = precinctsSizes.components[c].resolutions[r]; + const k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution); - if (p >= numprecincts) { + if (k === null) { continue; } for (; l < layersCount;) { - var packet = createPacket(resolution, p, l); + const packet = createPacket(resolution, k, l); l++; return packet; } @@ -24010,953 +26517,935 @@ var JpxImage = function JpxImageClosure() { l = 0; } - c = 0; + r = 0; } - p = 0; + c = 0; } - throw new JpxError('Out of packets'); - }; - } + px = 0; + } - function PositionComponentResolutionLayerIterator(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var layersCount = tile.codingStyleDefaultParameters.layersCount; - var componentsCount = siz.Csiz; - var precinctsSizes = getPrecinctSizesInImageScale(tile); - var precinctsIterationSizes = precinctsSizes; - var l = 0, - r = 0, - c = 0, - px = 0, - py = 0; + throw new JpxError("Out of packets"); + }; +} + +function ComponentPositionResolutionLayerIterator(context) { + const siz = context.SIZ; + const tileIndex = context.currentTile.index; + const tile = context.tiles[tileIndex]; + const layersCount = tile.codingStyleDefaultParameters.layersCount; + const componentsCount = siz.Csiz; + const precinctsSizes = getPrecinctSizesInImageScale(tile); + let l = 0, + r = 0, + c = 0, + px = 0, + py = 0; + + this.nextPacket = function JpxImage_nextPacket() { + for (; c < componentsCount; ++c) { + const component = tile.components[c]; + const precinctsIterationSizes = precinctsSizes.components[c]; + const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; - this.nextPacket = function JpxImage_nextPacket() { for (; py < precinctsIterationSizes.maxNumHigh; py++) { for (; px < precinctsIterationSizes.maxNumWide; px++) { - for (; c < componentsCount; c++) { - var component = tile.components[c]; - var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; + for (; r <= decompositionLevelsCount; r++) { + const resolution = component.resolutions[r]; + const sizeInImageScale = precinctsIterationSizes.resolutions[r]; + const k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution); - for (; r <= decompositionLevelsCount; r++) { - var resolution = component.resolutions[r]; - var sizeInImageScale = precinctsSizes.components[c].resolutions[r]; - var k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution); - - if (k === null) { - continue; - } - - for (; l < layersCount;) { - var packet = createPacket(resolution, k, l); - l++; - return packet; - } - - l = 0; + if (k === null) { + continue; } - r = 0; + for (; l < layersCount;) { + const packet = createPacket(resolution, k, l); + l++; + return packet; + } + + l = 0; } - c = 0; + r = 0; } px = 0; } - throw new JpxError('Out of packets'); - }; - } - - function ComponentPositionResolutionLayerIterator(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var layersCount = tile.codingStyleDefaultParameters.layersCount; - var componentsCount = siz.Csiz; - var precinctsSizes = getPrecinctSizesInImageScale(tile); - var l = 0, - r = 0, - c = 0, - px = 0, - py = 0; - - this.nextPacket = function JpxImage_nextPacket() { - for (; c < componentsCount; ++c) { - var component = tile.components[c]; - var precinctsIterationSizes = precinctsSizes.components[c]; - var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; - - for (; py < precinctsIterationSizes.maxNumHigh; py++) { - for (; px < precinctsIterationSizes.maxNumWide; px++) { - for (; r <= decompositionLevelsCount; r++) { - var resolution = component.resolutions[r]; - var sizeInImageScale = precinctsIterationSizes.resolutions[r]; - var k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution); - - if (k === null) { - continue; - } - - for (; l < layersCount;) { - var packet = createPacket(resolution, k, l); - l++; - return packet; - } - - l = 0; - } - - r = 0; - } - - px = 0; - } - - py = 0; - } - - throw new JpxError('Out of packets'); - }; - } - - function getPrecinctIndexIfExist(pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) { - var posX = pxIndex * precinctIterationSizes.minWidth; - var posY = pyIndex * precinctIterationSizes.minHeight; - - if (posX % sizeInImageScale.width !== 0 || posY % sizeInImageScale.height !== 0) { - return null; + py = 0; } - var startPrecinctRowIndex = posY / sizeInImageScale.width * resolution.precinctParameters.numprecinctswide; - return posX / sizeInImageScale.height + startPrecinctRowIndex; + throw new JpxError("Out of packets"); + }; +} + +function getPrecinctIndexIfExist(pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) { + const posX = pxIndex * precinctIterationSizes.minWidth; + const posY = pyIndex * precinctIterationSizes.minHeight; + + if (posX % sizeInImageScale.width !== 0 || posY % sizeInImageScale.height !== 0) { + return null; } - function getPrecinctSizesInImageScale(tile) { - var componentsCount = tile.components.length; - var minWidth = Number.MAX_VALUE; - var minHeight = Number.MAX_VALUE; - var maxNumWide = 0; - var maxNumHigh = 0; - var sizePerComponent = new Array(componentsCount); + const startPrecinctRowIndex = posY / sizeInImageScale.width * resolution.precinctParameters.numprecinctswide; + return posX / sizeInImageScale.height + startPrecinctRowIndex; +} - for (var c = 0; c < componentsCount; c++) { - var component = tile.components[c]; - var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; - var sizePerResolution = new Array(decompositionLevelsCount + 1); - var minWidthCurrentComponent = Number.MAX_VALUE; - var minHeightCurrentComponent = Number.MAX_VALUE; - var maxNumWideCurrentComponent = 0; - var maxNumHighCurrentComponent = 0; - var scale = 1; +function getPrecinctSizesInImageScale(tile) { + const componentsCount = tile.components.length; + let minWidth = Number.MAX_VALUE; + let minHeight = Number.MAX_VALUE; + let maxNumWide = 0; + let maxNumHigh = 0; + const sizePerComponent = new Array(componentsCount); - for (var r = decompositionLevelsCount; r >= 0; --r) { - var resolution = component.resolutions[r]; - var widthCurrentResolution = scale * resolution.precinctParameters.precinctWidth; - var heightCurrentResolution = scale * resolution.precinctParameters.precinctHeight; - minWidthCurrentComponent = Math.min(minWidthCurrentComponent, widthCurrentResolution); - minHeightCurrentComponent = Math.min(minHeightCurrentComponent, heightCurrentResolution); - maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent, resolution.precinctParameters.numprecinctswide); - maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent, resolution.precinctParameters.numprecinctshigh); - sizePerResolution[r] = { - width: widthCurrentResolution, - height: heightCurrentResolution - }; - scale <<= 1; - } + for (let c = 0; c < componentsCount; c++) { + const component = tile.components[c]; + const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; + const sizePerResolution = new Array(decompositionLevelsCount + 1); + let minWidthCurrentComponent = Number.MAX_VALUE; + let minHeightCurrentComponent = Number.MAX_VALUE; + let maxNumWideCurrentComponent = 0; + let maxNumHighCurrentComponent = 0; + let scale = 1; - minWidth = Math.min(minWidth, minWidthCurrentComponent); - minHeight = Math.min(minHeight, minHeightCurrentComponent); - maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent); - maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent); - sizePerComponent[c] = { - resolutions: sizePerResolution, - minWidth: minWidthCurrentComponent, - minHeight: minHeightCurrentComponent, - maxNumWide: maxNumWideCurrentComponent, - maxNumHigh: maxNumHighCurrentComponent + for (let r = decompositionLevelsCount; r >= 0; --r) { + const resolution = component.resolutions[r]; + const widthCurrentResolution = scale * resolution.precinctParameters.precinctWidth; + const heightCurrentResolution = scale * resolution.precinctParameters.precinctHeight; + minWidthCurrentComponent = Math.min(minWidthCurrentComponent, widthCurrentResolution); + minHeightCurrentComponent = Math.min(minHeightCurrentComponent, heightCurrentResolution); + maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent, resolution.precinctParameters.numprecinctswide); + maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent, resolution.precinctParameters.numprecinctshigh); + sizePerResolution[r] = { + width: widthCurrentResolution, + height: heightCurrentResolution }; + scale <<= 1; } - return { - components: sizePerComponent, - minWidth: minWidth, - minHeight: minHeight, - maxNumWide: maxNumWide, - maxNumHigh: maxNumHigh + minWidth = Math.min(minWidth, minWidthCurrentComponent); + minHeight = Math.min(minHeight, minHeightCurrentComponent); + maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent); + maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent); + sizePerComponent[c] = { + resolutions: sizePerResolution, + minWidth: minWidthCurrentComponent, + minHeight: minHeightCurrentComponent, + maxNumWide: maxNumWideCurrentComponent, + maxNumHigh: maxNumHighCurrentComponent }; } - function buildPackets(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var componentsCount = siz.Csiz; + return { + components: sizePerComponent, + minWidth, + minHeight, + maxNumWide, + maxNumHigh + }; +} - for (var c = 0; c < componentsCount; c++) { - var component = tile.components[c]; - var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; - var resolutions = []; - var subbands = []; +function buildPackets(context) { + const siz = context.SIZ; + const tileIndex = context.currentTile.index; + const tile = context.tiles[tileIndex]; + const componentsCount = siz.Csiz; - for (var r = 0; r <= decompositionLevelsCount; r++) { - var blocksDimensions = getBlocksDimensions(context, component, r); - var resolution = {}; - var scale = 1 << decompositionLevelsCount - r; - resolution.trx0 = Math.ceil(component.tcx0 / scale); - resolution.try0 = Math.ceil(component.tcy0 / scale); - resolution.trx1 = Math.ceil(component.tcx1 / scale); - resolution.try1 = Math.ceil(component.tcy1 / scale); - resolution.resLevel = r; - buildPrecincts(context, resolution, blocksDimensions); - resolutions.push(resolution); - var subband; + for (let c = 0; c < componentsCount; c++) { + const component = tile.components[c]; + const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; + const resolutions = []; + const subbands = []; - if (r === 0) { - subband = {}; - subband.type = 'LL'; - subband.tbx0 = Math.ceil(component.tcx0 / scale); - subband.tby0 = Math.ceil(component.tcy0 / scale); - subband.tbx1 = Math.ceil(component.tcx1 / scale); - subband.tby1 = Math.ceil(component.tcy1 / scale); - subband.resolution = resolution; - buildCodeblocks(context, subband, blocksDimensions); - subbands.push(subband); - resolution.subbands = [subband]; - } else { - var bscale = 1 << decompositionLevelsCount - r + 1; - var resolutionSubbands = []; - subband = {}; - subband.type = 'HL'; - subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5); - subband.tby0 = Math.ceil(component.tcy0 / bscale); - subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5); - subband.tby1 = Math.ceil(component.tcy1 / bscale); - subband.resolution = resolution; - buildCodeblocks(context, subband, blocksDimensions); - subbands.push(subband); - resolutionSubbands.push(subband); - subband = {}; - subband.type = 'LH'; - subband.tbx0 = Math.ceil(component.tcx0 / bscale); - subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5); - subband.tbx1 = Math.ceil(component.tcx1 / bscale); - subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5); - subband.resolution = resolution; - buildCodeblocks(context, subband, blocksDimensions); - subbands.push(subband); - resolutionSubbands.push(subband); - subband = {}; - subband.type = 'HH'; - subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5); - subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5); - subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5); - subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5); - subband.resolution = resolution; - buildCodeblocks(context, subband, blocksDimensions); - subbands.push(subband); - resolutionSubbands.push(subband); - resolution.subbands = resolutionSubbands; - } + for (let r = 0; r <= decompositionLevelsCount; r++) { + const blocksDimensions = getBlocksDimensions(context, component, r); + const resolution = {}; + const scale = 1 << decompositionLevelsCount - r; + resolution.trx0 = Math.ceil(component.tcx0 / scale); + resolution.try0 = Math.ceil(component.tcy0 / scale); + resolution.trx1 = Math.ceil(component.tcx1 / scale); + resolution.try1 = Math.ceil(component.tcy1 / scale); + resolution.resLevel = r; + buildPrecincts(context, resolution, blocksDimensions); + resolutions.push(resolution); + let subband; + + if (r === 0) { + subband = {}; + subband.type = "LL"; + subband.tbx0 = Math.ceil(component.tcx0 / scale); + subband.tby0 = Math.ceil(component.tcy0 / scale); + subband.tbx1 = Math.ceil(component.tcx1 / scale); + subband.tby1 = Math.ceil(component.tcy1 / scale); + subband.resolution = resolution; + buildCodeblocks(context, subband, blocksDimensions); + subbands.push(subband); + resolution.subbands = [subband]; + } else { + const bscale = 1 << decompositionLevelsCount - r + 1; + const resolutionSubbands = []; + subband = {}; + subband.type = "HL"; + subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5); + subband.tby0 = Math.ceil(component.tcy0 / bscale); + subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5); + subband.tby1 = Math.ceil(component.tcy1 / bscale); + subband.resolution = resolution; + buildCodeblocks(context, subband, blocksDimensions); + subbands.push(subband); + resolutionSubbands.push(subband); + subband = {}; + subband.type = "LH"; + subband.tbx0 = Math.ceil(component.tcx0 / bscale); + subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5); + subband.tbx1 = Math.ceil(component.tcx1 / bscale); + subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5); + subband.resolution = resolution; + buildCodeblocks(context, subband, blocksDimensions); + subbands.push(subband); + resolutionSubbands.push(subband); + subband = {}; + subband.type = "HH"; + subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5); + subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5); + subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5); + subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5); + subband.resolution = resolution; + buildCodeblocks(context, subband, blocksDimensions); + subbands.push(subband); + resolutionSubbands.push(subband); + resolution.subbands = resolutionSubbands; } - - component.resolutions = resolutions; - component.subbands = subbands; } - var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder; - - switch (progressionOrder) { - case 0: - tile.packetsIterator = new LayerResolutionComponentPositionIterator(context); - break; - - case 1: - tile.packetsIterator = new ResolutionLayerComponentPositionIterator(context); - break; - - case 2: - tile.packetsIterator = new ResolutionPositionComponentLayerIterator(context); - break; - - case 3: - tile.packetsIterator = new PositionComponentResolutionLayerIterator(context); - break; - - case 4: - tile.packetsIterator = new ComponentPositionResolutionLayerIterator(context); - break; - - default: - throw new JpxError("Unsupported progression order ".concat(progressionOrder)); - } + component.resolutions = resolutions; + component.subbands = subbands; } - function parseTilePackets(context, data, offset, dataLength) { - var position = 0; - var buffer, - bufferSize = 0, - skipNextBit = false; + const progressionOrder = tile.codingStyleDefaultParameters.progressionOrder; - function readBits(count) { - while (bufferSize < count) { - var b = data[offset + position]; - position++; + switch (progressionOrder) { + case 0: + tile.packetsIterator = new LayerResolutionComponentPositionIterator(context); + break; - if (skipNextBit) { - buffer = buffer << 7 | b; - bufferSize += 7; - skipNextBit = false; - } else { - buffer = buffer << 8 | b; - bufferSize += 8; - } + case 1: + tile.packetsIterator = new ResolutionLayerComponentPositionIterator(context); + break; - if (b === 0xFF) { - skipNextBit = true; - } - } + case 2: + tile.packetsIterator = new ResolutionPositionComponentLayerIterator(context); + break; - bufferSize -= count; - return buffer >>> bufferSize & (1 << count) - 1; - } + case 3: + tile.packetsIterator = new PositionComponentResolutionLayerIterator(context); + break; - function skipMarkerIfEqual(value) { - if (data[offset + position - 1] === 0xFF && data[offset + position] === value) { - skipBytes(1); - return true; - } else if (data[offset + position] === 0xFF && data[offset + position + 1] === value) { - skipBytes(2); - return true; - } + case 4: + tile.packetsIterator = new ComponentPositionResolutionLayerIterator(context); + break; - return false; - } + default: + throw new JpxError(`Unsupported progression order ${progressionOrder}`); + } +} - function skipBytes(count) { - position += count; - } +function parseTilePackets(context, data, offset, dataLength) { + let position = 0; + let buffer, + bufferSize = 0, + skipNextBit = false; - function alignToByte() { - bufferSize = 0; + function readBits(count) { + while (bufferSize < count) { + const b = data[offset + position]; + position++; if (skipNextBit) { - position++; + buffer = buffer << 7 | b; + bufferSize += 7; skipNextBit = false; + } else { + buffer = buffer << 8 | b; + bufferSize += 8; + } + + if (b === 0xff) { + skipNextBit = true; } } - function readCodingpasses() { - if (readBits(1) === 0) { - return 1; - } + bufferSize -= count; + return buffer >>> bufferSize & (1 << count) - 1; + } - if (readBits(1) === 0) { - return 2; - } - - var value = readBits(2); - - if (value < 3) { - return value + 3; - } - - value = readBits(5); - - if (value < 31) { - return value + 6; - } - - value = readBits(7); - return value + 37; + function skipMarkerIfEqual(value) { + if (data[offset + position - 1] === 0xff && data[offset + position] === value) { + skipBytes(1); + return true; + } else if (data[offset + position] === 0xff && data[offset + position + 1] === value) { + skipBytes(2); + return true; } - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var sopMarkerUsed = context.COD.sopMarkerUsed; - var ephMarkerUsed = context.COD.ephMarkerUsed; - var packetsIterator = tile.packetsIterator; + return false; + } - while (position < dataLength) { - alignToByte(); + function skipBytes(count) { + position += count; + } - if (sopMarkerUsed && skipMarkerIfEqual(0x91)) { - skipBytes(4); - } + function alignToByte() { + bufferSize = 0; - var packet = packetsIterator.nextPacket(); + if (skipNextBit) { + position++; + skipNextBit = false; + } + } - if (!readBits(1)) { - continue; - } + function readCodingpasses() { + if (readBits(1) === 0) { + return 1; + } - var layerNumber = packet.layerNumber; - var queue = [], - codeblock; + if (readBits(1) === 0) { + return 2; + } - for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) { - codeblock = packet.codeblocks[i]; - var precinct = codeblock.precinct; - var codeblockColumn = codeblock.cbx - precinct.cbxMin; - var codeblockRow = codeblock.cby - precinct.cbyMin; - var codeblockIncluded = false; - var firstTimeInclusion = false; - var valueReady; + let value = readBits(2); - if (codeblock['included'] !== undefined) { - codeblockIncluded = !!readBits(1); + if (value < 3) { + return value + 3; + } + + value = readBits(5); + + if (value < 31) { + return value + 6; + } + + value = readBits(7); + return value + 37; + } + + const tileIndex = context.currentTile.index; + const tile = context.tiles[tileIndex]; + const sopMarkerUsed = context.COD.sopMarkerUsed; + const ephMarkerUsed = context.COD.ephMarkerUsed; + const packetsIterator = tile.packetsIterator; + + while (position < dataLength) { + alignToByte(); + + if (sopMarkerUsed && skipMarkerIfEqual(0x91)) { + skipBytes(4); + } + + const packet = packetsIterator.nextPacket(); + + if (!readBits(1)) { + continue; + } + + const layerNumber = packet.layerNumber, + queue = []; + let codeblock; + + for (let i = 0, ii = packet.codeblocks.length; i < ii; i++) { + codeblock = packet.codeblocks[i]; + let precinct = codeblock.precinct; + const codeblockColumn = codeblock.cbx - precinct.cbxMin; + const codeblockRow = codeblock.cby - precinct.cbyMin; + let codeblockIncluded = false; + let firstTimeInclusion = false; + let valueReady, zeroBitPlanesTree; + + if (codeblock.included !== undefined) { + codeblockIncluded = !!readBits(1); + } else { + precinct = codeblock.precinct; + let inclusionTree; + + if (precinct.inclusionTree !== undefined) { + inclusionTree = precinct.inclusionTree; } else { - precinct = codeblock.precinct; - var inclusionTree, zeroBitPlanesTree; + const width = precinct.cbxMax - precinct.cbxMin + 1; + const height = precinct.cbyMax - precinct.cbyMin + 1; + inclusionTree = new InclusionTree(width, height, layerNumber); + zeroBitPlanesTree = new TagTree(width, height); + precinct.inclusionTree = inclusionTree; + precinct.zeroBitPlanesTree = zeroBitPlanesTree; - if (precinct['inclusionTree'] !== undefined) { - inclusionTree = precinct.inclusionTree; - } else { - var width = precinct.cbxMax - precinct.cbxMin + 1; - var height = precinct.cbyMax - precinct.cbyMin + 1; - inclusionTree = new InclusionTree(width, height, layerNumber); - zeroBitPlanesTree = new TagTree(width, height); - precinct.inclusionTree = inclusionTree; - precinct.zeroBitPlanesTree = zeroBitPlanesTree; - } - - if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) { - while (true) { - if (readBits(1)) { - valueReady = !inclusionTree.nextLevel(); - - if (valueReady) { - codeblock.included = true; - codeblockIncluded = firstTimeInclusion = true; - break; - } - } else { - inclusionTree.incrementValue(layerNumber); - break; - } + for (let l = 0; l < layerNumber; l++) { + if (readBits(1) !== 0) { + throw new JpxError("Invalid tag tree"); } } } - if (!codeblockIncluded) { - continue; - } - - if (firstTimeInclusion) { - zeroBitPlanesTree = precinct.zeroBitPlanesTree; - zeroBitPlanesTree.reset(codeblockColumn, codeblockRow); - + if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) { while (true) { if (readBits(1)) { - valueReady = !zeroBitPlanesTree.nextLevel(); + valueReady = !inclusionTree.nextLevel(); if (valueReady) { + codeblock.included = true; + codeblockIncluded = firstTimeInclusion = true; break; } } else { - zeroBitPlanesTree.incrementValue(); + inclusionTree.incrementValue(layerNumber); + break; } } - - codeblock.zeroBitPlanes = zeroBitPlanesTree.value; } - - var codingpasses = readCodingpasses(); - - while (readBits(1)) { - codeblock.Lblock++; - } - - var codingpassesLog2 = (0, _util.log2)(codingpasses); - var bits = (codingpasses < 1 << codingpassesLog2 ? codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock; - var codedDataLength = readBits(bits); - queue.push({ - codeblock: codeblock, - codingpasses: codingpasses, - dataLength: codedDataLength - }); } - alignToByte(); - - if (ephMarkerUsed) { - skipMarkerIfEqual(0x92); - } - - while (queue.length > 0) { - var packetItem = queue.shift(); - codeblock = packetItem.codeblock; - - if (codeblock['data'] === undefined) { - codeblock.data = []; - } - - codeblock.data.push({ - data: data, - start: offset + position, - end: offset + position + packetItem.dataLength, - codingpasses: packetItem.codingpasses - }); - position += packetItem.dataLength; - } - } - - return position; - } - - function copyCoefficients(coefficients, levelWidth, levelHeight, subband, delta, mb, reversible, segmentationSymbolUsed) { - var x0 = subband.tbx0; - var y0 = subband.tby0; - var width = subband.tbx1 - subband.tbx0; - var codeblocks = subband.codeblocks; - var right = subband.type.charAt(0) === 'H' ? 1 : 0; - var bottom = subband.type.charAt(1) === 'H' ? levelWidth : 0; - - for (var i = 0, ii = codeblocks.length; i < ii; ++i) { - var codeblock = codeblocks[i]; - var blockWidth = codeblock.tbx1_ - codeblock.tbx0_; - var blockHeight = codeblock.tby1_ - codeblock.tby0_; - - if (blockWidth === 0 || blockHeight === 0) { + if (!codeblockIncluded) { continue; } - if (codeblock['data'] === undefined) { - continue; - } + if (firstTimeInclusion) { + zeroBitPlanesTree = precinct.zeroBitPlanesTree; + zeroBitPlanesTree.reset(codeblockColumn, codeblockRow); - var bitModel, currentCodingpassType; - bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType, codeblock.zeroBitPlanes, mb); - currentCodingpassType = 2; - var data = codeblock.data, - totalLength = 0, - codingpasses = 0; - var j, jj, dataItem; + while (true) { + if (readBits(1)) { + valueReady = !zeroBitPlanesTree.nextLevel(); - for (j = 0, jj = data.length; j < jj; j++) { - dataItem = data[j]; - totalLength += dataItem.end - dataItem.start; - codingpasses += dataItem.codingpasses; - } - - var encodedData = new Uint8Array(totalLength); - var position = 0; - - for (j = 0, jj = data.length; j < jj; j++) { - dataItem = data[j]; - var chunk = dataItem.data.subarray(dataItem.start, dataItem.end); - encodedData.set(chunk, position); - position += chunk.length; - } - - var decoder = new _arithmetic_decoder.ArithmeticDecoder(encodedData, 0, totalLength); - bitModel.setDecoder(decoder); - - for (j = 0; j < codingpasses; j++) { - switch (currentCodingpassType) { - case 0: - bitModel.runSignificancePropagationPass(); - break; - - case 1: - bitModel.runMagnitudeRefinementPass(); - break; - - case 2: - bitModel.runCleanupPass(); - - if (segmentationSymbolUsed) { - bitModel.checkSegmentationSymbol(); - } - - break; - } - - currentCodingpassType = (currentCodingpassType + 1) % 3; - } - - var offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width; - var sign = bitModel.coefficentsSign; - var magnitude = bitModel.coefficentsMagnitude; - var bitsDecoded = bitModel.bitsDecoded; - var magnitudeCorrection = reversible ? 0 : 0.5; - var k, n, nb; - position = 0; - var interleave = subband.type !== 'LL'; - - for (j = 0; j < blockHeight; j++) { - var row = offset / width | 0; - var levelOffset = 2 * row * (levelWidth - width) + right + bottom; - - for (k = 0; k < blockWidth; k++) { - n = magnitude[position]; - - if (n !== 0) { - n = (n + magnitudeCorrection) * delta; - - if (sign[position] !== 0) { - n = -n; - } - - nb = bitsDecoded[position]; - var pos = interleave ? levelOffset + (offset << 1) : offset; - - if (reversible && nb >= mb) { - coefficients[pos] = n; - } else { - coefficients[pos] = n * (1 << mb - nb); + if (valueReady) { + break; } + } else { + zeroBitPlanesTree.incrementValue(); } - - offset++; - position++; } - offset += width - blockWidth; - } - } - } - - function transformTile(context, tile, c) { - var component = tile.components[c]; - var codingStyleParameters = component.codingStyleParameters; - var quantizationParameters = component.quantizationParameters; - var decompositionLevelsCount = codingStyleParameters.decompositionLevelsCount; - var spqcds = quantizationParameters.SPqcds; - var scalarExpounded = quantizationParameters.scalarExpounded; - var guardBits = quantizationParameters.guardBits; - var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed; - var precision = context.components[c].precision; - var reversible = codingStyleParameters.reversibleTransformation; - var transform = reversible ? new ReversibleTransform() : new IrreversibleTransform(); - var subbandCoefficients = []; - var b = 0; - - for (var i = 0; i <= decompositionLevelsCount; i++) { - var resolution = component.resolutions[i]; - var width = resolution.trx1 - resolution.trx0; - var height = resolution.try1 - resolution.try0; - var coefficients = new Float32Array(width * height); - - for (var j = 0, jj = resolution.subbands.length; j < jj; j++) { - var mu, epsilon; - - if (!scalarExpounded) { - mu = spqcds[0].mu; - epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0); - } else { - mu = spqcds[b].mu; - epsilon = spqcds[b].epsilon; - b++; - } - - var subband = resolution.subbands[j]; - var gainLog2 = SubbandsGainLog2[subband.type]; - var delta = reversible ? 1 : Math.pow(2, precision + gainLog2 - epsilon) * (1 + mu / 2048); - var mb = guardBits + epsilon - 1; - copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed); + codeblock.zeroBitPlanes = zeroBitPlanesTree.value; } - subbandCoefficients.push({ - width: width, - height: height, - items: coefficients + const codingpasses = readCodingpasses(); + + while (readBits(1)) { + codeblock.Lblock++; + } + + const codingpassesLog2 = (0, _core_utils.log2)(codingpasses); + const bits = (codingpasses < 1 << codingpassesLog2 ? codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock; + const codedDataLength = readBits(bits); + queue.push({ + codeblock, + codingpasses, + dataLength: codedDataLength }); } - var result = transform.calculate(subbandCoefficients, component.tcx0, component.tcy0); - return { - left: component.tcx0, - top: component.tcy0, - width: result.width, - height: result.height, - items: result.items - }; - } + alignToByte(); - function transformComponents(context) { - var siz = context.SIZ; - var components = context.components; - var componentsCount = siz.Csiz; - var resultImages = []; + if (ephMarkerUsed) { + skipMarkerIfEqual(0x92); + } - for (var i = 0, ii = context.tiles.length; i < ii; i++) { - var tile = context.tiles[i]; - var transformedTiles = []; - var c; + while (queue.length > 0) { + const packetItem = queue.shift(); + codeblock = packetItem.codeblock; - for (c = 0; c < componentsCount; c++) { - transformedTiles[c] = transformTile(context, tile, c); + if (codeblock.data === undefined) { + codeblock.data = []; } - var tile0 = transformedTiles[0]; - var out = new Uint8ClampedArray(tile0.items.length * componentsCount); - var result = { - left: tile0.left, - top: tile0.top, - width: tile0.width, - height: tile0.height, - items: out - }; - var shift, offset; - var pos = 0, - j, - jj, - y0, - y1, - y2; + codeblock.data.push({ + data, + start: offset + position, + end: offset + position + packetItem.dataLength, + codingpasses: packetItem.codingpasses + }); + position += packetItem.dataLength; + } + } - if (tile.codingStyleDefaultParameters.multipleComponentTransform) { - var fourComponents = componentsCount === 4; - var y0items = transformedTiles[0].items; - var y1items = transformedTiles[1].items; - var y2items = transformedTiles[2].items; - var y3items = fourComponents ? transformedTiles[3].items : null; - shift = components[0].precision - 8; - offset = (128 << shift) + 0.5; - var component0 = tile.components[0]; - var alpha01 = componentsCount - 3; - jj = y0items.length; + return position; +} - if (!component0.codingStyleParameters.reversibleTransformation) { - for (j = 0; j < jj; j++, pos += alpha01) { - y0 = y0items[j] + offset; - y1 = y1items[j]; - y2 = y2items[j]; - out[pos++] = y0 + 1.402 * y2 >> shift; - out[pos++] = y0 - 0.34413 * y1 - 0.71414 * y2 >> shift; - out[pos++] = y0 + 1.772 * y1 >> shift; +function copyCoefficients(coefficients, levelWidth, levelHeight, subband, delta, mb, reversible, segmentationSymbolUsed, resetContextProbabilities) { + const x0 = subband.tbx0; + const y0 = subband.tby0; + const width = subband.tbx1 - subband.tbx0; + const codeblocks = subband.codeblocks; + const right = subband.type.charAt(0) === "H" ? 1 : 0; + const bottom = subband.type.charAt(1) === "H" ? levelWidth : 0; + + for (let i = 0, ii = codeblocks.length; i < ii; ++i) { + const codeblock = codeblocks[i]; + const blockWidth = codeblock.tbx1_ - codeblock.tbx0_; + const blockHeight = codeblock.tby1_ - codeblock.tby0_; + + if (blockWidth === 0 || blockHeight === 0) { + continue; + } + + if (codeblock.data === undefined) { + continue; + } + + const bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType, codeblock.zeroBitPlanes, mb); + let currentCodingpassType = 2; + const data = codeblock.data; + let totalLength = 0, + codingpasses = 0; + let j, jj, dataItem; + + for (j = 0, jj = data.length; j < jj; j++) { + dataItem = data[j]; + totalLength += dataItem.end - dataItem.start; + codingpasses += dataItem.codingpasses; + } + + const encodedData = new Uint8Array(totalLength); + let position = 0; + + for (j = 0, jj = data.length; j < jj; j++) { + dataItem = data[j]; + const chunk = dataItem.data.subarray(dataItem.start, dataItem.end); + encodedData.set(chunk, position); + position += chunk.length; + } + + const decoder = new _arithmetic_decoder.ArithmeticDecoder(encodedData, 0, totalLength); + bitModel.setDecoder(decoder); + + for (j = 0; j < codingpasses; j++) { + switch (currentCodingpassType) { + case 0: + bitModel.runSignificancePropagationPass(); + break; + + case 1: + bitModel.runMagnitudeRefinementPass(); + break; + + case 2: + bitModel.runCleanupPass(); + + if (segmentationSymbolUsed) { + bitModel.checkSegmentationSymbol(); } - } else { - for (j = 0; j < jj; j++, pos += alpha01) { - y0 = y0items[j] + offset; - y1 = y1items[j]; - y2 = y2items[j]; - var g = y0 - (y2 + y1 >> 2); - out[pos++] = g + y2 >> shift; - out[pos++] = g >> shift; - out[pos++] = g + y1 >> shift; + + break; + } + + if (resetContextProbabilities) { + bitModel.reset(); + } + + currentCodingpassType = (currentCodingpassType + 1) % 3; + } + + let offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width; + const sign = bitModel.coefficentsSign; + const magnitude = bitModel.coefficentsMagnitude; + const bitsDecoded = bitModel.bitsDecoded; + const magnitudeCorrection = reversible ? 0 : 0.5; + let k, n, nb; + position = 0; + const interleave = subband.type !== "LL"; + + for (j = 0; j < blockHeight; j++) { + const row = offset / width | 0; + const levelOffset = 2 * row * (levelWidth - width) + right + bottom; + + for (k = 0; k < blockWidth; k++) { + n = magnitude[position]; + + if (n !== 0) { + n = (n + magnitudeCorrection) * delta; + + if (sign[position] !== 0) { + n = -n; + } + + nb = bitsDecoded[position]; + const pos = interleave ? levelOffset + (offset << 1) : offset; + + if (reversible && nb >= mb) { + coefficients[pos] = n; + } else { + coefficients[pos] = n * (1 << mb - nb); } } - if (fourComponents) { - for (j = 0, pos = 3; j < jj; j++, pos += 4) { - out[pos] = y3items[j] + offset >> shift; - } + offset++; + position++; + } + + offset += width - blockWidth; + } + } +} + +function transformTile(context, tile, c) { + const component = tile.components[c]; + const codingStyleParameters = component.codingStyleParameters; + const quantizationParameters = component.quantizationParameters; + const decompositionLevelsCount = codingStyleParameters.decompositionLevelsCount; + const spqcds = quantizationParameters.SPqcds; + const scalarExpounded = quantizationParameters.scalarExpounded; + const guardBits = quantizationParameters.guardBits; + const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed; + const resetContextProbabilities = codingStyleParameters.resetContextProbabilities; + const precision = context.components[c].precision; + const reversible = codingStyleParameters.reversibleTransformation; + const transform = reversible ? new ReversibleTransform() : new IrreversibleTransform(); + const subbandCoefficients = []; + let b = 0; + + for (let i = 0; i <= decompositionLevelsCount; i++) { + const resolution = component.resolutions[i]; + const width = resolution.trx1 - resolution.trx0; + const height = resolution.try1 - resolution.try0; + const coefficients = new Float32Array(width * height); + + for (let j = 0, jj = resolution.subbands.length; j < jj; j++) { + let mu, epsilon; + + if (!scalarExpounded) { + mu = spqcds[0].mu; + epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0); + } else { + mu = spqcds[b].mu; + epsilon = spqcds[b].epsilon; + b++; + } + + const subband = resolution.subbands[j]; + const gainLog2 = SubbandsGainLog2[subband.type]; + const delta = reversible ? 1 : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048); + const mb = guardBits + epsilon - 1; + copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed, resetContextProbabilities); + } + + subbandCoefficients.push({ + width, + height, + items: coefficients + }); + } + + const result = transform.calculate(subbandCoefficients, component.tcx0, component.tcy0); + return { + left: component.tcx0, + top: component.tcy0, + width: result.width, + height: result.height, + items: result.items + }; +} + +function transformComponents(context) { + const siz = context.SIZ; + const components = context.components; + const componentsCount = siz.Csiz; + const resultImages = []; + + for (let i = 0, ii = context.tiles.length; i < ii; i++) { + const tile = context.tiles[i]; + const transformedTiles = []; + + for (let c = 0; c < componentsCount; c++) { + transformedTiles[c] = transformTile(context, tile, c); + } + + const tile0 = transformedTiles[0]; + const out = new Uint8ClampedArray(tile0.items.length * componentsCount); + const result = { + left: tile0.left, + top: tile0.top, + width: tile0.width, + height: tile0.height, + items: out + }; + let shift, offset; + let pos = 0, + j, + jj, + y0, + y1, + y2; + + if (tile.codingStyleDefaultParameters.multipleComponentTransform) { + const fourComponents = componentsCount === 4; + const y0items = transformedTiles[0].items; + const y1items = transformedTiles[1].items; + const y2items = transformedTiles[2].items; + const y3items = fourComponents ? transformedTiles[3].items : null; + shift = components[0].precision - 8; + offset = (128 << shift) + 0.5; + const component0 = tile.components[0]; + const alpha01 = componentsCount - 3; + jj = y0items.length; + + if (!component0.codingStyleParameters.reversibleTransformation) { + for (j = 0; j < jj; j++, pos += alpha01) { + y0 = y0items[j] + offset; + y1 = y1items[j]; + y2 = y2items[j]; + out[pos++] = y0 + 1.402 * y2 >> shift; + out[pos++] = y0 - 0.34413 * y1 - 0.71414 * y2 >> shift; + out[pos++] = y0 + 1.772 * y1 >> shift; } } else { - for (c = 0; c < componentsCount; c++) { - var items = transformedTiles[c].items; - shift = components[c].precision - 8; - offset = (128 << shift) + 0.5; - - for (pos = c, j = 0, jj = items.length; j < jj; j++) { - out[pos] = items[j] + offset >> shift; - pos += componentsCount; - } + for (j = 0; j < jj; j++, pos += alpha01) { + y0 = y0items[j] + offset; + y1 = y1items[j]; + y2 = y2items[j]; + const g = y0 - (y2 + y1 >> 2); + out[pos++] = g + y2 >> shift; + out[pos++] = g >> shift; + out[pos++] = g + y1 >> shift; } } - resultImages.push(result); + if (fourComponents) { + for (j = 0, pos = 3; j < jj; j++, pos += 4) { + out[pos] = y3items[j] + offset >> shift; + } + } + } else { + for (let c = 0; c < componentsCount; c++) { + const items = transformedTiles[c].items; + shift = components[c].precision - 8; + offset = (128 << shift) + 0.5; + + for (pos = c, j = 0, jj = items.length; j < jj; j++) { + out[pos] = items[j] + offset >> shift; + pos += componentsCount; + } + } } - return resultImages; + resultImages.push(result); } - function initializeTile(context, tileIndex) { - var siz = context.SIZ; - var componentsCount = siz.Csiz; - var tile = context.tiles[tileIndex]; + return resultImages; +} - for (var c = 0; c < componentsCount; c++) { - var component = tile.components[c]; - var qcdOrQcc = context.currentTile.QCC[c] !== undefined ? context.currentTile.QCC[c] : context.currentTile.QCD; - component.quantizationParameters = qcdOrQcc; - var codOrCoc = context.currentTile.COC[c] !== undefined ? context.currentTile.COC[c] : context.currentTile.COD; - component.codingStyleParameters = codOrCoc; - } +function initializeTile(context, tileIndex) { + const siz = context.SIZ; + const componentsCount = siz.Csiz; + const tile = context.tiles[tileIndex]; - tile.codingStyleDefaultParameters = context.currentTile.COD; + for (let c = 0; c < componentsCount; c++) { + const component = tile.components[c]; + const qcdOrQcc = context.currentTile.QCC[c] !== undefined ? context.currentTile.QCC[c] : context.currentTile.QCD; + component.quantizationParameters = qcdOrQcc; + const codOrCoc = context.currentTile.COC[c] !== undefined ? context.currentTile.COC[c] : context.currentTile.COD; + component.codingStyleParameters = codOrCoc; } - var TagTree = function TagTreeClosure() { - function TagTree(width, height) { - var levelsLength = (0, _util.log2)(Math.max(width, height)) + 1; - this.levels = []; + tile.codingStyleDefaultParameters = context.currentTile.COD; +} - for (var i = 0; i < levelsLength; i++) { - var level = { - width: width, - height: height, - items: [] - }; - this.levels.push(level); - width = Math.ceil(width / 2); - height = Math.ceil(height / 2); +class TagTree { + constructor(width, height) { + const levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1; + this.levels = []; + + for (let i = 0; i < levelsLength; i++) { + const level = { + width, + height, + items: [] + }; + this.levels.push(level); + width = Math.ceil(width / 2); + height = Math.ceil(height / 2); + } + } + + reset(i, j) { + let currentLevel = 0, + value = 0, + level; + + while (currentLevel < this.levels.length) { + level = this.levels[currentLevel]; + const index = i + j * level.width; + + if (level.items[index] !== undefined) { + value = level.items[index]; + break; } + + level.index = index; + i >>= 1; + j >>= 1; + currentLevel++; } - TagTree.prototype = { - reset: function TagTree_reset(i, j) { - var currentLevel = 0, - value = 0, - level; + currentLevel--; + level = this.levels[currentLevel]; + level.items[level.index] = value; + this.currentLevel = currentLevel; + delete this.value; + } - while (currentLevel < this.levels.length) { - level = this.levels[currentLevel]; - var index = i + j * level.width; + incrementValue() { + const level = this.levels[this.currentLevel]; + level.items[level.index]++; + } - if (level.items[index] !== undefined) { - value = level.items[index]; - break; - } + nextLevel() { + let currentLevel = this.currentLevel; + let level = this.levels[currentLevel]; + const value = level.items[level.index]; + currentLevel--; - level.index = index; - i >>= 1; - j >>= 1; - currentLevel++; - } - - currentLevel--; - level = this.levels[currentLevel]; - level.items[level.index] = value; - this.currentLevel = currentLevel; - delete this.value; - }, - incrementValue: function TagTree_incrementValue() { - var level = this.levels[this.currentLevel]; - level.items[level.index]++; - }, - nextLevel: function TagTree_nextLevel() { - var currentLevel = this.currentLevel; - var level = this.levels[currentLevel]; - var value = level.items[level.index]; - currentLevel--; - - if (currentLevel < 0) { - this.value = value; - return false; - } - - this.currentLevel = currentLevel; - level = this.levels[currentLevel]; - level.items[level.index] = value; - return true; - } - }; - return TagTree; - }(); - - var InclusionTree = function InclusionTreeClosure() { - function InclusionTree(width, height, defaultValue) { - var levelsLength = (0, _util.log2)(Math.max(width, height)) + 1; - this.levels = []; - - for (var i = 0; i < levelsLength; i++) { - var items = new Uint8Array(width * height); - - for (var j = 0, jj = items.length; j < jj; j++) { - items[j] = defaultValue; - } - - var level = { - width: width, - height: height, - items: items - }; - this.levels.push(level); - width = Math.ceil(width / 2); - height = Math.ceil(height / 2); - } + if (currentLevel < 0) { + this.value = value; + return false; } - InclusionTree.prototype = { - reset: function InclusionTree_reset(i, j, stopValue) { - var currentLevel = 0; + this.currentLevel = currentLevel; + level = this.levels[currentLevel]; + level.items[level.index] = value; + return true; + } - while (currentLevel < this.levels.length) { - var level = this.levels[currentLevel]; - var index = i + j * level.width; - level.index = index; - var value = level.items[index]; +} - if (value === 0xFF) { - break; - } +class InclusionTree { + constructor(width, height, defaultValue) { + const levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1; + this.levels = []; - if (value > stopValue) { - this.currentLevel = currentLevel; - this.propagateValues(); - return false; - } + for (let i = 0; i < levelsLength; i++) { + const items = new Uint8Array(width * height); - i >>= 1; - j >>= 1; - currentLevel++; - } + for (let j = 0, jj = items.length; j < jj; j++) { + items[j] = defaultValue; + } - this.currentLevel = currentLevel - 1; - return true; - }, - incrementValue: function InclusionTree_incrementValue(stopValue) { - var level = this.levels[this.currentLevel]; - level.items[level.index] = stopValue + 1; + const level = { + width, + height, + items + }; + this.levels.push(level); + width = Math.ceil(width / 2); + height = Math.ceil(height / 2); + } + } + + reset(i, j, stopValue) { + let currentLevel = 0; + + while (currentLevel < this.levels.length) { + const level = this.levels[currentLevel]; + const index = i + j * level.width; + level.index = index; + const value = level.items[index]; + + if (value === 0xff) { + break; + } + + if (value > stopValue) { + this.currentLevel = currentLevel; this.propagateValues(); - }, - propagateValues: function InclusionTree_propagateValues() { - var levelIndex = this.currentLevel; - var level = this.levels[levelIndex]; - var currentValue = level.items[level.index]; - - while (--levelIndex >= 0) { - level = this.levels[levelIndex]; - level.items[level.index] = currentValue; - } - }, - nextLevel: function InclusionTree_nextLevel() { - var currentLevel = this.currentLevel; - var level = this.levels[currentLevel]; - var value = level.items[level.index]; - level.items[level.index] = 0xFF; - currentLevel--; - - if (currentLevel < 0) { - return false; - } - - this.currentLevel = currentLevel; - level = this.levels[currentLevel]; - level.items[level.index] = value; - return true; + return false; } - }; - return InclusionTree; - }(); - var BitModel = function BitModelClosure() { - var UNIFORM_CONTEXT = 17; - var RUNLENGTH_CONTEXT = 18; - var LLAndLHContextsLabel = new Uint8Array([0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8]); - var HLContextLabel = new Uint8Array([0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8]); - var HHContextLabel = new Uint8Array([0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5, 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8]); + i >>= 1; + j >>= 1; + currentLevel++; + } - function BitModel(width, height, subband, zeroBitPlanes, mb) { + this.currentLevel = currentLevel - 1; + return true; + } + + incrementValue(stopValue) { + const level = this.levels[this.currentLevel]; + level.items[level.index] = stopValue + 1; + this.propagateValues(); + } + + propagateValues() { + let levelIndex = this.currentLevel; + let level = this.levels[levelIndex]; + const currentValue = level.items[level.index]; + + while (--levelIndex >= 0) { + level = this.levels[levelIndex]; + level.items[level.index] = currentValue; + } + } + + nextLevel() { + let currentLevel = this.currentLevel; + let level = this.levels[currentLevel]; + const value = level.items[level.index]; + level.items[level.index] = 0xff; + currentLevel--; + + if (currentLevel < 0) { + return false; + } + + this.currentLevel = currentLevel; + level = this.levels[currentLevel]; + level.items[level.index] = value; + return true; + } + +} + +const BitModel = function BitModelClosure() { + const UNIFORM_CONTEXT = 17; + const RUNLENGTH_CONTEXT = 18; + const LLAndLHContextsLabel = new Uint8Array([0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8]); + const HLContextLabel = new Uint8Array([0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8]); + const HHContextLabel = new Uint8Array([0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5, 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8]); + + class BitModel { + constructor(width, height, subband, zeroBitPlanes, mb) { this.width = width; this.height = height; - this.contextLabelTable = subband === 'HH' ? HHContextLabel : subband === 'HL' ? HLContextLabel : LLAndLHContextsLabel; - var coefficientCount = width * height; + let contextLabelTable; + + if (subband === "HH") { + contextLabelTable = HHContextLabel; + } else if (subband === "HL") { + contextLabelTable = HLContextLabel; + } else { + contextLabelTable = LLAndLHContextsLabel; + } + + this.contextLabelTable = contextLabelTable; + const coefficientCount = width * height; this.neighborsSignificance = new Uint8Array(coefficientCount); this.coefficentsSign = new Uint8Array(coefficientCount); - this.coefficentsMagnitude = mb > 14 ? new Uint32Array(coefficientCount) : mb > 6 ? new Uint16Array(coefficientCount) : new Uint8Array(coefficientCount); + let coefficentsMagnitude; + + if (mb > 14) { + coefficentsMagnitude = new Uint32Array(coefficientCount); + } else if (mb > 6) { + coefficentsMagnitude = new Uint16Array(coefficientCount); + } else { + coefficentsMagnitude = new Uint8Array(coefficientCount); + } + + this.coefficentsMagnitude = coefficentsMagnitude; this.processingFlags = new Uint8Array(coefficientCount); - var bitsDecoded = new Uint8Array(coefficientCount); + const bitsDecoded = new Uint8Array(coefficientCount); if (zeroBitPlanes !== 0) { - for (var i = 0; i < coefficientCount; i++) { + for (let i = 0; i < coefficientCount; i++) { bitsDecoded[i] = zeroBitPlanes; } } @@ -24965,9783 +27454,5893 @@ var JpxImage = function JpxImageClosure() { this.reset(); } - BitModel.prototype = { - setDecoder: function BitModel_setDecoder(decoder) { - this.decoder = decoder; - }, - reset: function BitModel_reset() { - this.contexts = new Int8Array(19); - this.contexts[0] = 4 << 1 | 0; - this.contexts[UNIFORM_CONTEXT] = 46 << 1 | 0; - this.contexts[RUNLENGTH_CONTEXT] = 3 << 1 | 0; - }, - setNeighborsSignificance: function BitModel_setNeighborsSignificance(row, column, index) { - var neighborsSignificance = this.neighborsSignificance; - var width = this.width, + setDecoder(decoder) { + this.decoder = decoder; + } + + reset() { + this.contexts = new Int8Array(19); + this.contexts[0] = 4 << 1 | 0; + this.contexts[UNIFORM_CONTEXT] = 46 << 1 | 0; + this.contexts[RUNLENGTH_CONTEXT] = 3 << 1 | 0; + } + + setNeighborsSignificance(row, column, index) { + const neighborsSignificance = this.neighborsSignificance; + const width = this.width, height = this.height; - var left = column > 0; - var right = column + 1 < width; - var i; + const left = column > 0; + const right = column + 1 < width; + let i; - if (row > 0) { - i = index - width; - - if (left) { - neighborsSignificance[i - 1] += 0x10; - } - - if (right) { - neighborsSignificance[i + 1] += 0x10; - } - - neighborsSignificance[i] += 0x04; - } - - if (row + 1 < height) { - i = index + width; - - if (left) { - neighborsSignificance[i - 1] += 0x10; - } - - if (right) { - neighborsSignificance[i + 1] += 0x10; - } - - neighborsSignificance[i] += 0x04; - } + if (row > 0) { + i = index - width; if (left) { - neighborsSignificance[index - 1] += 0x01; + neighborsSignificance[i - 1] += 0x10; } if (right) { - neighborsSignificance[index + 1] += 0x01; + neighborsSignificance[i + 1] += 0x10; } - neighborsSignificance[index] |= 0x80; - }, - runSignificancePropagationPass: function BitModel_runSignificancePropagationPass() { - var decoder = this.decoder; - var width = this.width, + neighborsSignificance[i] += 0x04; + } + + if (row + 1 < height) { + i = index + width; + + if (left) { + neighborsSignificance[i - 1] += 0x10; + } + + if (right) { + neighborsSignificance[i + 1] += 0x10; + } + + neighborsSignificance[i] += 0x04; + } + + if (left) { + neighborsSignificance[index - 1] += 0x01; + } + + if (right) { + neighborsSignificance[index + 1] += 0x01; + } + + neighborsSignificance[index] |= 0x80; + } + + runSignificancePropagationPass() { + const decoder = this.decoder; + const width = this.width, height = this.height; - var coefficentsMagnitude = this.coefficentsMagnitude; - var coefficentsSign = this.coefficentsSign; - var neighborsSignificance = this.neighborsSignificance; - var processingFlags = this.processingFlags; - var contexts = this.contexts; - var labels = this.contextLabelTable; - var bitsDecoded = this.bitsDecoded; - var processedInverseMask = ~1; - var processedMask = 1; - var firstMagnitudeBitMask = 2; + const coefficentsMagnitude = this.coefficentsMagnitude; + const coefficentsSign = this.coefficentsSign; + const neighborsSignificance = this.neighborsSignificance; + const processingFlags = this.processingFlags; + const contexts = this.contexts; + const labels = this.contextLabelTable; + const bitsDecoded = this.bitsDecoded; + const processedInverseMask = ~1; + const processedMask = 1; + const firstMagnitudeBitMask = 2; - for (var i0 = 0; i0 < height; i0 += 4) { - for (var j = 0; j < width; j++) { - var index = i0 * width + j; + for (let i0 = 0; i0 < height; i0 += 4) { + for (let j = 0; j < width; j++) { + let index = i0 * width + j; - for (var i1 = 0; i1 < 4; i1++, index += width) { - var i = i0 + i1; + for (let i1 = 0; i1 < 4; i1++, index += width) { + const i = i0 + i1; - if (i >= height) { - break; - } - - processingFlags[index] &= processedInverseMask; - - if (coefficentsMagnitude[index] || !neighborsSignificance[index]) { - continue; - } - - var contextLabel = labels[neighborsSignificance[index]]; - var decision = decoder.readBit(contexts, contextLabel); - - if (decision) { - var sign = this.decodeSignBit(i, j, index); - coefficentsSign[index] = sign; - coefficentsMagnitude[index] = 1; - this.setNeighborsSignificance(i, j, index); - processingFlags[index] |= firstMagnitudeBitMask; - } - - bitsDecoded[index]++; - processingFlags[index] |= processedMask; + if (i >= height) { + break; } + + processingFlags[index] &= processedInverseMask; + + if (coefficentsMagnitude[index] || !neighborsSignificance[index]) { + continue; + } + + const contextLabel = labels[neighborsSignificance[index]]; + const decision = decoder.readBit(contexts, contextLabel); + + if (decision) { + const sign = this.decodeSignBit(i, j, index); + coefficentsSign[index] = sign; + coefficentsMagnitude[index] = 1; + this.setNeighborsSignificance(i, j, index); + processingFlags[index] |= firstMagnitudeBitMask; + } + + bitsDecoded[index]++; + processingFlags[index] |= processedMask; } } - }, - decodeSignBit: function BitModel_decodeSignBit(row, column, index) { - var width = this.width, + } + } + + decodeSignBit(row, column, index) { + const width = this.width, height = this.height; - var coefficentsMagnitude = this.coefficentsMagnitude; - var coefficentsSign = this.coefficentsSign; - var contribution, sign0, sign1, significance1; - var contextLabel, decoded; - significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0; + const coefficentsMagnitude = this.coefficentsMagnitude; + const coefficentsSign = this.coefficentsSign; + let contribution, sign0, sign1, significance1; + let contextLabel, decoded; + significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0; - if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) { - sign1 = coefficentsSign[index + 1]; + if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) { + sign1 = coefficentsSign[index + 1]; - if (significance1) { - sign0 = coefficentsSign[index - 1]; - contribution = 1 - sign1 - sign0; - } else { - contribution = 1 - sign1 - sign1; - } - } else if (significance1) { + if (significance1) { sign0 = coefficentsSign[index - 1]; - contribution = 1 - sign0 - sign0; + contribution = 1 - sign1 - sign0; } else { - contribution = 0; + contribution = 1 - sign1 - sign1; } + } else if (significance1) { + sign0 = coefficentsSign[index - 1]; + contribution = 1 - sign0 - sign0; + } else { + contribution = 0; + } - var horizontalContribution = 3 * contribution; - significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0; + const horizontalContribution = 3 * contribution; + significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0; - if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) { - sign1 = coefficentsSign[index + width]; + if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) { + sign1 = coefficentsSign[index + width]; - if (significance1) { - sign0 = coefficentsSign[index - width]; - contribution = 1 - sign1 - sign0 + horizontalContribution; - } else { - contribution = 1 - sign1 - sign1 + horizontalContribution; - } - } else if (significance1) { + if (significance1) { sign0 = coefficentsSign[index - width]; - contribution = 1 - sign0 - sign0 + horizontalContribution; + contribution = 1 - sign1 - sign0 + horizontalContribution; } else { - contribution = horizontalContribution; + contribution = 1 - sign1 - sign1 + horizontalContribution; } + } else if (significance1) { + sign0 = coefficentsSign[index - width]; + contribution = 1 - sign0 - sign0 + horizontalContribution; + } else { + contribution = horizontalContribution; + } - if (contribution >= 0) { - contextLabel = 9 + contribution; - decoded = this.decoder.readBit(this.contexts, contextLabel); - } else { - contextLabel = 9 - contribution; - decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1; - } + if (contribution >= 0) { + contextLabel = 9 + contribution; + decoded = this.decoder.readBit(this.contexts, contextLabel); + } else { + contextLabel = 9 - contribution; + decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1; + } - return decoded; - }, - runMagnitudeRefinementPass: function BitModel_runMagnitudeRefinementPass() { - var decoder = this.decoder; - var width = this.width, + return decoded; + } + + runMagnitudeRefinementPass() { + const decoder = this.decoder; + const width = this.width, height = this.height; - var coefficentsMagnitude = this.coefficentsMagnitude; - var neighborsSignificance = this.neighborsSignificance; - var contexts = this.contexts; - var bitsDecoded = this.bitsDecoded; - var processingFlags = this.processingFlags; - var processedMask = 1; - var firstMagnitudeBitMask = 2; - var length = width * height; - var width4 = width * 4; + const coefficentsMagnitude = this.coefficentsMagnitude; + const neighborsSignificance = this.neighborsSignificance; + const contexts = this.contexts; + const bitsDecoded = this.bitsDecoded; + const processingFlags = this.processingFlags; + const processedMask = 1; + const firstMagnitudeBitMask = 2; + const length = width * height; + const width4 = width * 4; - for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) { - indexNext = Math.min(length, index0 + width4); + for (let index0 = 0, indexNext; index0 < length; index0 = indexNext) { + indexNext = Math.min(length, index0 + width4); - for (var j = 0; j < width; j++) { - for (var index = index0 + j; index < indexNext; index += width) { - if (!coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) { - continue; - } - - var contextLabel = 16; - - if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) { - processingFlags[index] ^= firstMagnitudeBitMask; - var significance = neighborsSignificance[index] & 127; - contextLabel = significance === 0 ? 15 : 14; - } - - var bit = decoder.readBit(contexts, contextLabel); - coefficentsMagnitude[index] = coefficentsMagnitude[index] << 1 | bit; - bitsDecoded[index]++; - processingFlags[index] |= processedMask; + for (let j = 0; j < width; j++) { + for (let index = index0 + j; index < indexNext; index += width) { + if (!coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) { + continue; } + + let contextLabel = 16; + + if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) { + processingFlags[index] ^= firstMagnitudeBitMask; + const significance = neighborsSignificance[index] & 127; + contextLabel = significance === 0 ? 15 : 14; + } + + const bit = decoder.readBit(contexts, contextLabel); + coefficentsMagnitude[index] = coefficentsMagnitude[index] << 1 | bit; + bitsDecoded[index]++; + processingFlags[index] |= processedMask; } } - }, - runCleanupPass: function BitModel_runCleanupPass() { - var decoder = this.decoder; - var width = this.width, + } + } + + runCleanupPass() { + const decoder = this.decoder; + const width = this.width, height = this.height; - var neighborsSignificance = this.neighborsSignificance; - var coefficentsMagnitude = this.coefficentsMagnitude; - var coefficentsSign = this.coefficentsSign; - var contexts = this.contexts; - var labels = this.contextLabelTable; - var bitsDecoded = this.bitsDecoded; - var processingFlags = this.processingFlags; - var processedMask = 1; - var firstMagnitudeBitMask = 2; - var oneRowDown = width; - var twoRowsDown = width * 2; - var threeRowsDown = width * 3; - var iNext; + const neighborsSignificance = this.neighborsSignificance; + const coefficentsMagnitude = this.coefficentsMagnitude; + const coefficentsSign = this.coefficentsSign; + const contexts = this.contexts; + const labels = this.contextLabelTable; + const bitsDecoded = this.bitsDecoded; + const processingFlags = this.processingFlags; + const processedMask = 1; + const firstMagnitudeBitMask = 2; + const oneRowDown = width; + const twoRowsDown = width * 2; + const threeRowsDown = width * 3; + let iNext; - for (var i0 = 0; i0 < height; i0 = iNext) { - iNext = Math.min(i0 + 4, height); - var indexBase = i0 * width; - var checkAllEmpty = i0 + 3 < height; + for (let i0 = 0; i0 < height; i0 = iNext) { + iNext = Math.min(i0 + 4, height); + const indexBase = i0 * width; + const checkAllEmpty = i0 + 3 < height; - for (var j = 0; j < width; j++) { - var index0 = indexBase + j; - var allEmpty = checkAllEmpty && processingFlags[index0] === 0 && processingFlags[index0 + oneRowDown] === 0 && processingFlags[index0 + twoRowsDown] === 0 && processingFlags[index0 + threeRowsDown] === 0 && neighborsSignificance[index0] === 0 && neighborsSignificance[index0 + oneRowDown] === 0 && neighborsSignificance[index0 + twoRowsDown] === 0 && neighborsSignificance[index0 + threeRowsDown] === 0; - var i1 = 0, - index = index0; - var i = i0, - sign; + for (let j = 0; j < width; j++) { + const index0 = indexBase + j; + const allEmpty = checkAllEmpty && processingFlags[index0] === 0 && processingFlags[index0 + oneRowDown] === 0 && processingFlags[index0 + twoRowsDown] === 0 && processingFlags[index0 + threeRowsDown] === 0 && neighborsSignificance[index0] === 0 && neighborsSignificance[index0 + oneRowDown] === 0 && neighborsSignificance[index0 + twoRowsDown] === 0 && neighborsSignificance[index0 + threeRowsDown] === 0; + let i1 = 0, + index = index0; + let i = i0, + sign; - if (allEmpty) { - var hasSignificantCoefficent = decoder.readBit(contexts, RUNLENGTH_CONTEXT); + if (allEmpty) { + const hasSignificantCoefficent = decoder.readBit(contexts, RUNLENGTH_CONTEXT); - if (!hasSignificantCoefficent) { - bitsDecoded[index0]++; - bitsDecoded[index0 + oneRowDown]++; - bitsDecoded[index0 + twoRowsDown]++; - bitsDecoded[index0 + threeRowsDown]++; - continue; - } + if (!hasSignificantCoefficent) { + bitsDecoded[index0]++; + bitsDecoded[index0 + oneRowDown]++; + bitsDecoded[index0 + twoRowsDown]++; + bitsDecoded[index0 + threeRowsDown]++; + continue; + } - i1 = decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT); + i1 = decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT); - if (i1 !== 0) { - i = i0 + i1; - index += i1 * width; - } + if (i1 !== 0) { + i = i0 + i1; + index += i1 * width; + } + sign = this.decodeSignBit(i, j, index); + coefficentsSign[index] = sign; + coefficentsMagnitude[index] = 1; + this.setNeighborsSignificance(i, j, index); + processingFlags[index] |= firstMagnitudeBitMask; + index = index0; + + for (let i2 = i0; i2 <= i; i2++, index += width) { + bitsDecoded[index]++; + } + + i1++; + } + + for (i = i0 + i1; i < iNext; i++, index += width) { + if (coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) { + continue; + } + + const contextLabel = labels[neighborsSignificance[index]]; + const decision = decoder.readBit(contexts, contextLabel); + + if (decision === 1) { sign = this.decodeSignBit(i, j, index); coefficentsSign[index] = sign; coefficentsMagnitude[index] = 1; this.setNeighborsSignificance(i, j, index); processingFlags[index] |= firstMagnitudeBitMask; - index = index0; - - for (var i2 = i0; i2 <= i; i2++, index += width) { - bitsDecoded[index]++; - } - - i1++; } - for (i = i0 + i1; i < iNext; i++, index += width) { - if (coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) { - continue; - } - - var contextLabel = labels[neighborsSignificance[index]]; - var decision = decoder.readBit(contexts, contextLabel); - - if (decision === 1) { - sign = this.decodeSignBit(i, j, index); - coefficentsSign[index] = sign; - coefficentsMagnitude[index] = 1; - this.setNeighborsSignificance(i, j, index); - processingFlags[index] |= firstMagnitudeBitMask; - } - - bitsDecoded[index]++; - } + bitsDecoded[index]++; } } - }, - checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() { - var decoder = this.decoder; - var contexts = this.contexts; - var symbol = decoder.readBit(contexts, UNIFORM_CONTEXT) << 3 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 2 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT); - - if (symbol !== 0xA) { - throw new JpxError('Invalid segmentation symbol'); - } } - }; - return BitModel; - }(); + } - var Transform = function TransformClosure() { - function Transform() {} + checkSegmentationSymbol() { + const decoder = this.decoder; + const contexts = this.contexts; + const symbol = decoder.readBit(contexts, UNIFORM_CONTEXT) << 3 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 2 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT); - Transform.prototype.calculate = function transformCalculate(subbands, u0, v0) { - var ll = subbands[0]; - - for (var i = 1, ii = subbands.length; i < ii; i++) { - ll = this.iterate(ll, subbands[i], u0, v0); + if (symbol !== 0xa) { + throw new JpxError("Invalid segmentation symbol"); } + } - return ll; - }; + } - Transform.prototype.extend = function extend(buffer, offset, size) { - var i1 = offset - 1, - j1 = offset + 1; - var i2 = offset + size - 2, - j2 = offset + size; - buffer[i1--] = buffer[j1++]; - buffer[j2++] = buffer[i2--]; - buffer[i1--] = buffer[j1++]; - buffer[j2++] = buffer[i2--]; - buffer[i1--] = buffer[j1++]; - buffer[j2++] = buffer[i2--]; - buffer[i1] = buffer[j1]; - buffer[j2] = buffer[i2]; - }; + return BitModel; +}(); - Transform.prototype.iterate = function Transform_iterate(ll, hl_lh_hh, u0, v0) { - var llWidth = ll.width, - llHeight = ll.height, - llItems = ll.items; - var width = hl_lh_hh.width; - var height = hl_lh_hh.height; - var items = hl_lh_hh.items; - var i, j, k, l, u, v; +class Transform { + constructor() { + if (this.constructor === Transform) { + (0, _util.unreachable)("Cannot initialize Transform."); + } + } - for (k = 0, i = 0; i < llHeight; i++) { - l = i * 2 * width; + calculate(subbands, u0, v0) { + let ll = subbands[0]; - for (j = 0; j < llWidth; j++, k++, l += 2) { - items[l] = llItems[k]; - } + for (let i = 1, ii = subbands.length; i < ii; i++) { + ll = this.iterate(ll, subbands[i], u0, v0); + } + + return ll; + } + + extend(buffer, offset, size) { + let i1 = offset - 1, + j1 = offset + 1; + let i2 = offset + size - 2, + j2 = offset + size; + buffer[i1--] = buffer[j1++]; + buffer[j2++] = buffer[i2--]; + buffer[i1--] = buffer[j1++]; + buffer[j2++] = buffer[i2--]; + buffer[i1--] = buffer[j1++]; + buffer[j2++] = buffer[i2--]; + buffer[i1] = buffer[j1]; + buffer[j2] = buffer[i2]; + } + + filter(x, offset, length) { + (0, _util.unreachable)("Abstract method `filter` called"); + } + + iterate(ll, hl_lh_hh, u0, v0) { + const llWidth = ll.width, + llHeight = ll.height; + let llItems = ll.items; + const width = hl_lh_hh.width; + const height = hl_lh_hh.height; + const items = hl_lh_hh.items; + let i, j, k, l, u, v; + + for (k = 0, i = 0; i < llHeight; i++) { + l = i * 2 * width; + + for (j = 0; j < llWidth; j++, k++, l += 2) { + items[l] = llItems[k]; } + } - llItems = ll.items = null; - var bufferPadding = 4; - var rowBuffer = new Float32Array(width + 2 * bufferPadding); + llItems = ll.items = null; + const bufferPadding = 4; + const rowBuffer = new Float32Array(width + 2 * bufferPadding); - if (width === 1) { - if ((u0 & 1) !== 0) { - for (v = 0, k = 0; v < height; v++, k += width) { - items[k] *= 0.5; - } - } - } else { + if (width === 1) { + if ((u0 & 1) !== 0) { for (v = 0, k = 0; v < height; v++, k += width) { - rowBuffer.set(items.subarray(k, k + width), bufferPadding); - this.extend(rowBuffer, bufferPadding, width); - this.filter(rowBuffer, bufferPadding, width); - items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k); + items[k] *= 0.5; } } - - var numBuffers = 16; - var colBuffers = []; - - for (i = 0; i < numBuffers; i++) { - colBuffers.push(new Float32Array(height + 2 * bufferPadding)); + } else { + for (v = 0, k = 0; v < height; v++, k += width) { + rowBuffer.set(items.subarray(k, k + width), bufferPadding); + this.extend(rowBuffer, bufferPadding, width); + this.filter(rowBuffer, bufferPadding, width); + items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k); } + } - var b, - currentBuffer = 0; - ll = bufferPadding + height; + let numBuffers = 16; + const colBuffers = []; - if (height === 1) { - if ((v0 & 1) !== 0) { - for (u = 0; u < width; u++) { - items[u] *= 0.5; - } - } - } else { + for (i = 0; i < numBuffers; i++) { + colBuffers.push(new Float32Array(height + 2 * bufferPadding)); + } + + let b, + currentBuffer = 0; + ll = bufferPadding + height; + + if (height === 1) { + if ((v0 & 1) !== 0) { for (u = 0; u < width; u++) { - if (currentBuffer === 0) { - numBuffers = Math.min(width - u, numBuffers); + items[u] *= 0.5; + } + } + } else { + for (u = 0; u < width; u++) { + if (currentBuffer === 0) { + numBuffers = Math.min(width - u, numBuffers); - for (k = u, l = bufferPadding; l < ll; k += width, l++) { - for (b = 0; b < numBuffers; b++) { - colBuffers[b][l] = items[k + b]; - } + for (k = u, l = bufferPadding; l < ll; k += width, l++) { + for (b = 0; b < numBuffers; b++) { + colBuffers[b][l] = items[k + b]; } - - currentBuffer = numBuffers; } - currentBuffer--; - var buffer = colBuffers[currentBuffer]; - this.extend(buffer, bufferPadding, height); - this.filter(buffer, bufferPadding, height); + currentBuffer = numBuffers; + } - if (currentBuffer === 0) { - k = u - numBuffers + 1; + currentBuffer--; + const buffer = colBuffers[currentBuffer]; + this.extend(buffer, bufferPadding, height); + this.filter(buffer, bufferPadding, height); - for (l = bufferPadding; l < ll; k += width, l++) { - for (b = 0; b < numBuffers; b++) { - items[k + b] = colBuffers[b][l]; - } + if (currentBuffer === 0) { + k = u - numBuffers + 1; + + for (l = bufferPadding; l < ll; k += width, l++) { + for (b = 0; b < numBuffers; b++) { + items[k + b] = colBuffers[b][l]; } } } } - - return { - width: width, - height: height, - items: items - }; - }; - - return Transform; - }(); - - var IrreversibleTransform = function IrreversibleTransformClosure() { - function IrreversibleTransform() { - Transform.call(this); } - IrreversibleTransform.prototype = Object.create(Transform.prototype); + return { + width, + height, + items + }; + } - IrreversibleTransform.prototype.filter = function irreversibleTransformFilter(x, offset, length) { - var len = length >> 1; - offset = offset | 0; - var j, n, current, next; - var alpha = -1.586134342059924; - var beta = -0.052980118572961; - var gamma = 0.882911075530934; - var delta = 0.443506852043971; - var K = 1.230174104914001; - var K_ = 1 / K; - j = offset - 3; +} - for (n = len + 4; n--; j += 2) { - x[j] *= K_; - } +class IrreversibleTransform extends Transform { + filter(x, offset, length) { + const len = length >> 1; + offset |= 0; + let j, n, current, next; + const alpha = -1.586134342059924; + const beta = -0.052980118572961; + const gamma = 0.882911075530934; + const delta = 0.443506852043971; + const K = 1.230174104914001; + const K_ = 1 / K; + j = offset - 3; - j = offset - 2; - current = delta * x[j - 1]; + for (n = len + 4; n--; j += 2) { + x[j] *= K_; + } - for (n = len + 3; n--; j += 2) { - next = delta * x[j + 1]; + j = offset - 2; + current = delta * x[j - 1]; + + for (n = len + 3; n--; j += 2) { + next = delta * x[j + 1]; + x[j] = K * x[j] - current - next; + + if (n--) { + j += 2; + current = delta * x[j + 1]; x[j] = K * x[j] - current - next; - - if (n--) { - j += 2; - current = delta * x[j + 1]; - x[j] = K * x[j] - current - next; - } else { - break; - } + } else { + break; } + } - j = offset - 1; - current = gamma * x[j - 1]; + j = offset - 1; + current = gamma * x[j - 1]; - for (n = len + 2; n--; j += 2) { - next = gamma * x[j + 1]; + for (n = len + 2; n--; j += 2) { + next = gamma * x[j + 1]; + x[j] -= current + next; + + if (n--) { + j += 2; + current = gamma * x[j + 1]; + x[j] -= current + next; + } else { + break; + } + } + + j = offset; + current = beta * x[j - 1]; + + for (n = len + 1; n--; j += 2) { + next = beta * x[j + 1]; + x[j] -= current + next; + + if (n--) { + j += 2; + current = beta * x[j + 1]; + x[j] -= current + next; + } else { + break; + } + } + + if (len !== 0) { + j = offset + 1; + current = alpha * x[j - 1]; + + for (n = len; n--; j += 2) { + next = alpha * x[j + 1]; x[j] -= current + next; if (n--) { j += 2; - current = gamma * x[j + 1]; + current = alpha * x[j + 1]; x[j] -= current + next; } else { break; } } - - j = offset; - current = beta * x[j - 1]; - - for (n = len + 1; n--; j += 2) { - next = beta * x[j + 1]; - x[j] -= current + next; - - if (n--) { - j += 2; - current = beta * x[j + 1]; - x[j] -= current + next; - } else { - break; - } - } - - if (len !== 0) { - j = offset + 1; - current = alpha * x[j - 1]; - - for (n = len; n--; j += 2) { - next = alpha * x[j + 1]; - x[j] -= current + next; - - if (n--) { - j += 2; - current = alpha * x[j + 1]; - x[j] -= current + next; - } else { - break; - } - } - } - }; - - return IrreversibleTransform; - }(); - - var ReversibleTransform = function ReversibleTransformClosure() { - function ReversibleTransform() { - Transform.call(this); - } - - ReversibleTransform.prototype = Object.create(Transform.prototype); - - ReversibleTransform.prototype.filter = function reversibleTransformFilter(x, offset, length) { - var len = length >> 1; - offset = offset | 0; - var j, n; - - for (j = offset, n = len + 1; n--; j += 2) { - x[j] -= x[j - 1] + x[j + 1] + 2 >> 2; - } - - for (j = offset + 1, n = len; n--; j += 2) { - x[j] += x[j - 1] + x[j + 1] >> 1; - } - }; - - return ReversibleTransform; - }(); - - return JpxImage; -}(); - -exports.JpxImage = JpxImage; - -/***/ }), -/* 168 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.calculateSHA512 = exports.calculateSHA384 = exports.calculateSHA256 = exports.calculateMD5 = exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.ARCFourCipher = exports.AES256Cipher = exports.AES128Cipher = void 0; - -var _util = __w_pdfjs_require__(5); - -var _primitives = __w_pdfjs_require__(151); - -var _stream = __w_pdfjs_require__(158); - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var ARCFourCipher = function ARCFourCipherClosure() { - function ARCFourCipher(key) { - this.a = 0; - this.b = 0; - var s = new Uint8Array(256); - var i, - j = 0, - tmp, - keyLength = key.length; - - for (i = 0; i < 256; ++i) { - s[i] = i; - } - - for (i = 0; i < 256; ++i) { - tmp = s[i]; - j = j + tmp + key[i % keyLength] & 0xFF; - s[i] = s[j]; - s[j] = tmp; - } - - this.s = s; - } - - ARCFourCipher.prototype = { - encryptBlock: function ARCFourCipher_encryptBlock(data) { - var i, - n = data.length, - tmp, - tmp2; - var a = this.a, - b = this.b, - s = this.s; - var output = new Uint8Array(n); - - for (i = 0; i < n; ++i) { - a = a + 1 & 0xFF; - tmp = s[a]; - b = b + tmp & 0xFF; - tmp2 = s[b]; - s[a] = tmp2; - s[b] = tmp; - output[i] = data[i] ^ s[tmp + tmp2 & 0xFF]; - } - - this.a = a; - this.b = b; - return output; - } - }; - ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock; - return ARCFourCipher; -}(); - -exports.ARCFourCipher = ARCFourCipher; - -var calculateMD5 = function calculateMD5Closure() { - var r = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]); - var k = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]); - - function hash(data, offset, length) { - var h0 = 1732584193, - h1 = -271733879, - h2 = -1732584194, - h3 = 271733878; - var paddedLength = length + 72 & ~63; - var padded = new Uint8Array(paddedLength); - var i, j, n; - - for (i = 0; i < length; ++i) { - padded[i] = data[offset++]; - } - - padded[i++] = 0x80; - n = paddedLength - 8; - - while (i < n) { - padded[i++] = 0; - } - - padded[i++] = length << 3 & 0xFF; - padded[i++] = length >> 5 & 0xFF; - padded[i++] = length >> 13 & 0xFF; - padded[i++] = length >> 21 & 0xFF; - padded[i++] = length >>> 29 & 0xFF; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - var w = new Int32Array(16); - - for (i = 0; i < paddedLength;) { - for (j = 0; j < 16; ++j, i += 4) { - w[j] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | padded[i + 3] << 24; - } - - var a = h0, - b = h1, - c = h2, - d = h3, - f, - g; - - for (j = 0; j < 64; ++j) { - if (j < 16) { - f = b & c | ~b & d; - g = j; - } else if (j < 32) { - f = d & b | ~d & c; - g = 5 * j + 1 & 15; - } else if (j < 48) { - f = b ^ c ^ d; - g = 3 * j + 5 & 15; - } else { - f = c ^ (b | ~d); - g = 7 * j & 15; - } - - var tmp = d, - rotateArg = a + f + k[j] + w[g] | 0, - rotate = r[j]; - d = c; - c = b; - b = b + (rotateArg << rotate | rotateArg >>> 32 - rotate) | 0; - a = tmp; - } - - h0 = h0 + a | 0; - h1 = h1 + b | 0; - h2 = h2 + c | 0; - h3 = h3 + d | 0; - } - - return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]); - } - - return hash; -}(); - -exports.calculateMD5 = calculateMD5; - -var Word64 = function Word64Closure() { - function Word64(highInteger, lowInteger) { - this.high = highInteger | 0; - this.low = lowInteger | 0; - } - - Word64.prototype = { - and: function Word64_and(word) { - this.high &= word.high; - this.low &= word.low; - }, - xor: function Word64_xor(word) { - this.high ^= word.high; - this.low ^= word.low; - }, - or: function Word64_or(word) { - this.high |= word.high; - this.low |= word.low; - }, - shiftRight: function Word64_shiftRight(places) { - if (places >= 32) { - this.low = this.high >>> places - 32 | 0; - this.high = 0; - } else { - this.low = this.low >>> places | this.high << 32 - places; - this.high = this.high >>> places | 0; - } - }, - shiftLeft: function Word64_shiftLeft(places) { - if (places >= 32) { - this.high = this.low << places - 32; - this.low = 0; - } else { - this.high = this.high << places | this.low >>> 32 - places; - this.low = this.low << places; - } - }, - rotateRight: function Word64_rotateRight(places) { - var low, high; - - if (places & 32) { - high = this.low; - low = this.high; - } else { - low = this.low; - high = this.high; - } - - places &= 31; - this.low = low >>> places | high << 32 - places; - this.high = high >>> places | low << 32 - places; - }, - not: function Word64_not() { - this.high = ~this.high; - this.low = ~this.low; - }, - add: function Word64_add(word) { - var lowAdd = (this.low >>> 0) + (word.low >>> 0); - var highAdd = (this.high >>> 0) + (word.high >>> 0); - - if (lowAdd > 0xFFFFFFFF) { - highAdd += 1; - } - - this.low = lowAdd | 0; - this.high = highAdd | 0; - }, - copyTo: function Word64_copyTo(bytes, offset) { - bytes[offset] = this.high >>> 24 & 0xFF; - bytes[offset + 1] = this.high >> 16 & 0xFF; - bytes[offset + 2] = this.high >> 8 & 0xFF; - bytes[offset + 3] = this.high & 0xFF; - bytes[offset + 4] = this.low >>> 24 & 0xFF; - bytes[offset + 5] = this.low >> 16 & 0xFF; - bytes[offset + 6] = this.low >> 8 & 0xFF; - bytes[offset + 7] = this.low & 0xFF; - }, - assign: function Word64_assign(word) { - this.high = word.high; - this.low = word.low; - } - }; - return Word64; -}(); - -var calculateSHA256 = function calculateSHA256Closure() { - function rotr(x, n) { - return x >>> n | x << 32 - n; - } - - function ch(x, y, z) { - return x & y ^ ~x & z; - } - - function maj(x, y, z) { - return x & y ^ x & z ^ y & z; - } - - function sigma(x) { - return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22); - } - - function sigmaPrime(x) { - return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25); - } - - function littleSigma(x) { - return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3; - } - - function littleSigmaPrime(x) { - return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10; - } - - var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]; - - function hash(data, offset, length) { - var h0 = 0x6a09e667, - h1 = 0xbb67ae85, - h2 = 0x3c6ef372, - h3 = 0xa54ff53a, - h4 = 0x510e527f, - h5 = 0x9b05688c, - h6 = 0x1f83d9ab, - h7 = 0x5be0cd19; - var paddedLength = Math.ceil((length + 9) / 64) * 64; - var padded = new Uint8Array(paddedLength); - var i, j, n; - - for (i = 0; i < length; ++i) { - padded[i] = data[offset++]; - } - - padded[i++] = 0x80; - n = paddedLength - 8; - - while (i < n) { - padded[i++] = 0; - } - - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = length >>> 29 & 0xFF; - padded[i++] = length >> 21 & 0xFF; - padded[i++] = length >> 13 & 0xFF; - padded[i++] = length >> 5 & 0xFF; - padded[i++] = length << 3 & 0xFF; - var w = new Uint32Array(64); - - for (i = 0; i < paddedLength;) { - for (j = 0; j < 16; ++j) { - w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3]; - i += 4; - } - - for (j = 16; j < 64; ++j) { - w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + littleSigma(w[j - 15]) + w[j - 16] | 0; - } - - var a = h0, - b = h1, - c = h2, - d = h3, - e = h4, - f = h5, - g = h6, - h = h7, - t1, - t2; - - for (j = 0; j < 64; ++j) { - t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j]; - t2 = sigma(a) + maj(a, b, c); - h = g; - g = f; - f = e; - e = d + t1 | 0; - d = c; - c = b; - b = a; - a = t1 + t2 | 0; - } - - h0 = h0 + a | 0; - h1 = h1 + b | 0; - h2 = h2 + c | 0; - h3 = h3 + d | 0; - h4 = h4 + e | 0; - h5 = h5 + f | 0; - h6 = h6 + g | 0; - h7 = h7 + h | 0; - } - - return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]); - } - - return hash; -}(); - -exports.calculateSHA256 = calculateSHA256; - -var calculateSHA512 = function calculateSHA512Closure() { - function ch(result, x, y, z, tmp) { - result.assign(x); - result.and(y); - tmp.assign(x); - tmp.not(); - tmp.and(z); - result.xor(tmp); - } - - function maj(result, x, y, z, tmp) { - result.assign(x); - result.and(y); - tmp.assign(x); - tmp.and(z); - result.xor(tmp); - tmp.assign(y); - tmp.and(z); - result.xor(tmp); - } - - function sigma(result, x, tmp) { - result.assign(x); - result.rotateRight(28); - tmp.assign(x); - tmp.rotateRight(34); - result.xor(tmp); - tmp.assign(x); - tmp.rotateRight(39); - result.xor(tmp); - } - - function sigmaPrime(result, x, tmp) { - result.assign(x); - result.rotateRight(14); - tmp.assign(x); - tmp.rotateRight(18); - result.xor(tmp); - tmp.assign(x); - tmp.rotateRight(41); - result.xor(tmp); - } - - function littleSigma(result, x, tmp) { - result.assign(x); - result.rotateRight(1); - tmp.assign(x); - tmp.rotateRight(8); - result.xor(tmp); - tmp.assign(x); - tmp.shiftRight(7); - result.xor(tmp); - } - - function littleSigmaPrime(result, x, tmp) { - result.assign(x); - result.rotateRight(19); - tmp.assign(x); - tmp.rotateRight(61); - result.xor(tmp); - tmp.assign(x); - tmp.shiftRight(6); - result.xor(tmp); - } - - var k = [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)]; - - function hash(data, offset, length, mode384) { - mode384 = !!mode384; - var h0, h1, h2, h3, h4, h5, h6, h7; - - if (!mode384) { - h0 = new Word64(0x6a09e667, 0xf3bcc908); - h1 = new Word64(0xbb67ae85, 0x84caa73b); - h2 = new Word64(0x3c6ef372, 0xfe94f82b); - h3 = new Word64(0xa54ff53a, 0x5f1d36f1); - h4 = new Word64(0x510e527f, 0xade682d1); - h5 = new Word64(0x9b05688c, 0x2b3e6c1f); - h6 = new Word64(0x1f83d9ab, 0xfb41bd6b); - h7 = new Word64(0x5be0cd19, 0x137e2179); - } else { - h0 = new Word64(0xcbbb9d5d, 0xc1059ed8); - h1 = new Word64(0x629a292a, 0x367cd507); - h2 = new Word64(0x9159015a, 0x3070dd17); - h3 = new Word64(0x152fecd8, 0xf70e5939); - h4 = new Word64(0x67332667, 0xffc00b31); - h5 = new Word64(0x8eb44a87, 0x68581511); - h6 = new Word64(0xdb0c2e0d, 0x64f98fa7); - h7 = new Word64(0x47b5481d, 0xbefa4fa4); - } - - var paddedLength = Math.ceil((length + 17) / 128) * 128; - var padded = new Uint8Array(paddedLength); - var i, j, n; - - for (i = 0; i < length; ++i) { - padded[i] = data[offset++]; - } - - padded[i++] = 0x80; - n = paddedLength - 16; - - while (i < n) { - padded[i++] = 0; - } - - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = length >>> 29 & 0xFF; - padded[i++] = length >> 21 & 0xFF; - padded[i++] = length >> 13 & 0xFF; - padded[i++] = length >> 5 & 0xFF; - padded[i++] = length << 3 & 0xFF; - var w = new Array(80); - - for (i = 0; i < 80; i++) { - w[i] = new Word64(0, 0); - } - - var a = new Word64(0, 0), - b = new Word64(0, 0), - c = new Word64(0, 0); - var d = new Word64(0, 0), - e = new Word64(0, 0), - f = new Word64(0, 0); - var g = new Word64(0, 0), - h = new Word64(0, 0); - var t1 = new Word64(0, 0), - t2 = new Word64(0, 0); - var tmp1 = new Word64(0, 0), - tmp2 = new Word64(0, 0), - tmp3; - - for (i = 0; i < paddedLength;) { - for (j = 0; j < 16; ++j) { - w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3]; - w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | padded[i + 7]; - i += 8; - } - - for (j = 16; j < 80; ++j) { - tmp3 = w[j]; - littleSigmaPrime(tmp3, w[j - 2], tmp2); - tmp3.add(w[j - 7]); - littleSigma(tmp1, w[j - 15], tmp2); - tmp3.add(tmp1); - tmp3.add(w[j - 16]); - } - - a.assign(h0); - b.assign(h1); - c.assign(h2); - d.assign(h3); - e.assign(h4); - f.assign(h5); - g.assign(h6); - h.assign(h7); - - for (j = 0; j < 80; ++j) { - t1.assign(h); - sigmaPrime(tmp1, e, tmp2); - t1.add(tmp1); - ch(tmp1, e, f, g, tmp2); - t1.add(tmp1); - t1.add(k[j]); - t1.add(w[j]); - sigma(t2, a, tmp2); - maj(tmp1, a, b, c, tmp2); - t2.add(tmp1); - tmp3 = h; - h = g; - g = f; - f = e; - d.add(t1); - e = d; - d = c; - c = b; - b = a; - tmp3.assign(t1); - tmp3.add(t2); - a = tmp3; - } - - h0.add(a); - h1.add(b); - h2.add(c); - h3.add(d); - h4.add(e); - h5.add(f); - h6.add(g); - h7.add(h); - } - - var result; - - if (!mode384) { - result = new Uint8Array(64); - h0.copyTo(result, 0); - h1.copyTo(result, 8); - h2.copyTo(result, 16); - h3.copyTo(result, 24); - h4.copyTo(result, 32); - h5.copyTo(result, 40); - h6.copyTo(result, 48); - h7.copyTo(result, 56); - } else { - result = new Uint8Array(48); - h0.copyTo(result, 0); - h1.copyTo(result, 8); - h2.copyTo(result, 16); - h3.copyTo(result, 24); - h4.copyTo(result, 32); - h5.copyTo(result, 40); - } - - return result; - } - - return hash; -}(); - -exports.calculateSHA512 = calculateSHA512; - -var calculateSHA384 = function calculateSHA384Closure() { - function hash(data, offset, length) { - return calculateSHA512(data, offset, length, true); - } - - return hash; -}(); - -exports.calculateSHA384 = calculateSHA384; - -var NullCipher = function NullCipherClosure() { - function NullCipher() {} - - NullCipher.prototype = { - decryptBlock: function NullCipher_decryptBlock(data) { - return data; - } - }; - return NullCipher; -}(); - -var AESBaseCipher = -/*#__PURE__*/ -function () { - function AESBaseCipher() { - _classCallCheck(this, AESBaseCipher); - - if (this.constructor === AESBaseCipher) { - (0, _util.unreachable)('Cannot initialize AESBaseCipher.'); - } - - this._s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]); - this._inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]); - this._mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]); - this._mixCol = new Uint8Array(256); - - for (var i = 0; i < 256; i++) { - if (i < 128) { - this._mixCol[i] = i << 1; - } else { - this._mixCol[i] = i << 1 ^ 0x1b; - } - } - - this.buffer = new Uint8Array(16); - this.bufferPosition = 0; - } - - _createClass(AESBaseCipher, [{ - key: "_expandKey", - value: function _expandKey(cipherKey) { - (0, _util.unreachable)('Cannot call `_expandKey` on the base class'); - } - }, { - key: "_decrypt", - value: function _decrypt(input, key) { - var t, u, v; - var state = new Uint8Array(16); - state.set(input); - - for (var j = 0, k = this._keySize; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - - for (var i = this._cyclesOfRepetition - 1; i >= 1; --i) { - t = state[13]; - state[13] = state[9]; - state[9] = state[5]; - state[5] = state[1]; - state[1] = t; - t = state[14]; - u = state[10]; - state[14] = state[6]; - state[10] = state[2]; - state[6] = t; - state[2] = u; - t = state[15]; - u = state[11]; - v = state[7]; - state[15] = state[3]; - state[11] = t; - state[7] = u; - state[3] = v; - - for (var _j = 0; _j < 16; ++_j) { - state[_j] = this._inv_s[state[_j]]; - } - - for (var _j2 = 0, _k = i * 16; _j2 < 16; ++_j2, ++_k) { - state[_j2] ^= key[_k]; - } - - for (var _j3 = 0; _j3 < 16; _j3 += 4) { - var s0 = this._mix[state[_j3]]; - var s1 = this._mix[state[_j3 + 1]]; - var s2 = this._mix[state[_j3 + 2]]; - var s3 = this._mix[state[_j3 + 3]]; - t = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ s3 << 8; - state[_j3] = t >>> 24 & 0xFF; - state[_j3 + 1] = t >> 16 & 0xFF; - state[_j3 + 2] = t >> 8 & 0xFF; - state[_j3 + 3] = t & 0xFF; - } - } - - t = state[13]; - state[13] = state[9]; - state[9] = state[5]; - state[5] = state[1]; - state[1] = t; - t = state[14]; - u = state[10]; - state[14] = state[6]; - state[10] = state[2]; - state[6] = t; - state[2] = u; - t = state[15]; - u = state[11]; - v = state[7]; - state[15] = state[3]; - state[11] = t; - state[7] = u; - state[3] = v; - - for (var _j4 = 0; _j4 < 16; ++_j4) { - state[_j4] = this._inv_s[state[_j4]]; - state[_j4] ^= key[_j4]; - } - - return state; - } - }, { - key: "_encrypt", - value: function _encrypt(input, key) { - var s = this._s; - var t, u, v; - var state = new Uint8Array(16); - state.set(input); - - for (var j = 0; j < 16; ++j) { - state[j] ^= key[j]; - } - - for (var i = 1; i < this._cyclesOfRepetition; i++) { - for (var _j5 = 0; _j5 < 16; ++_j5) { - state[_j5] = s[state[_j5]]; - } - - v = state[1]; - state[1] = state[5]; - state[5] = state[9]; - state[9] = state[13]; - state[13] = v; - v = state[2]; - u = state[6]; - state[2] = state[10]; - state[6] = state[14]; - state[10] = v; - state[14] = u; - v = state[3]; - u = state[7]; - t = state[11]; - state[3] = state[15]; - state[7] = v; - state[11] = u; - state[15] = t; - - for (var _j6 = 0; _j6 < 16; _j6 += 4) { - var s0 = state[_j6 + 0]; - var s1 = state[_j6 + 1]; - var s2 = state[_j6 + 2]; - var s3 = state[_j6 + 3]; - t = s0 ^ s1 ^ s2 ^ s3; - state[_j6 + 0] ^= t ^ this._mixCol[s0 ^ s1]; - state[_j6 + 1] ^= t ^ this._mixCol[s1 ^ s2]; - state[_j6 + 2] ^= t ^ this._mixCol[s2 ^ s3]; - state[_j6 + 3] ^= t ^ this._mixCol[s3 ^ s0]; - } - - for (var _j7 = 0, k = i * 16; _j7 < 16; ++_j7, ++k) { - state[_j7] ^= key[k]; - } - } - - for (var _j8 = 0; _j8 < 16; ++_j8) { - state[_j8] = s[state[_j8]]; - } - - v = state[1]; - state[1] = state[5]; - state[5] = state[9]; - state[9] = state[13]; - state[13] = v; - v = state[2]; - u = state[6]; - state[2] = state[10]; - state[6] = state[14]; - state[10] = v; - state[14] = u; - v = state[3]; - u = state[7]; - t = state[11]; - state[3] = state[15]; - state[7] = v; - state[11] = u; - state[15] = t; - - for (var _j9 = 0, _k2 = this._keySize; _j9 < 16; ++_j9, ++_k2) { - state[_j9] ^= key[_k2]; - } - - return state; - } - }, { - key: "_decryptBlock2", - value: function _decryptBlock2(data, finalize) { - var sourceLength = data.length; - var buffer = this.buffer, - bufferLength = this.bufferPosition; - var result = [], - iv = this.iv; - - for (var i = 0; i < sourceLength; ++i) { - buffer[bufferLength] = data[i]; - ++bufferLength; - - if (bufferLength < 16) { - continue; - } - - var plain = this._decrypt(buffer, this._key); - - for (var j = 0; j < 16; ++j) { - plain[j] ^= iv[j]; - } - - iv = buffer; - result.push(plain); - buffer = new Uint8Array(16); - bufferLength = 0; - } - - this.buffer = buffer; - this.bufferLength = bufferLength; - this.iv = iv; - - if (result.length === 0) { - return new Uint8Array(0); - } - - var outputLength = 16 * result.length; - - if (finalize) { - var lastBlock = result[result.length - 1]; - var psLen = lastBlock[15]; - - if (psLen <= 16) { - for (var _i = 15, ii = 16 - psLen; _i >= ii; --_i) { - if (lastBlock[_i] !== psLen) { - psLen = 0; - break; - } - } - - outputLength -= psLen; - result[result.length - 1] = lastBlock.subarray(0, 16 - psLen); - } - } - - var output = new Uint8Array(outputLength); - - for (var _i2 = 0, _j10 = 0, _ii = result.length; _i2 < _ii; ++_i2, _j10 += 16) { - output.set(result[_i2], _j10); - } - - return output; - } - }, { - key: "decryptBlock", - value: function decryptBlock(data, finalize) { - var iv = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var sourceLength = data.length; - var buffer = this.buffer, - bufferLength = this.bufferPosition; - - if (iv) { - this.iv = iv; - } else { - for (var i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) { - buffer[bufferLength] = data[i]; - } - - if (bufferLength < 16) { - this.bufferLength = bufferLength; - return new Uint8Array(0); - } - - this.iv = buffer; - data = data.subarray(16); - } - - this.buffer = new Uint8Array(16); - this.bufferLength = 0; - this.decryptBlock = this._decryptBlock2; - return this.decryptBlock(data, finalize); - } - }, { - key: "encrypt", - value: function encrypt(data, iv) { - var sourceLength = data.length; - var buffer = this.buffer, - bufferLength = this.bufferPosition; - var result = []; - - if (!iv) { - iv = new Uint8Array(16); - } - - for (var i = 0; i < sourceLength; ++i) { - buffer[bufferLength] = data[i]; - ++bufferLength; - - if (bufferLength < 16) { - continue; - } - - for (var j = 0; j < 16; ++j) { - buffer[j] ^= iv[j]; - } - - var cipher = this._encrypt(buffer, this._key); - - iv = cipher; - result.push(cipher); - buffer = new Uint8Array(16); - bufferLength = 0; - } - - this.buffer = buffer; - this.bufferLength = bufferLength; - this.iv = iv; - - if (result.length === 0) { - return new Uint8Array(0); - } - - var outputLength = 16 * result.length; - var output = new Uint8Array(outputLength); - - for (var _i3 = 0, _j11 = 0, ii = result.length; _i3 < ii; ++_i3, _j11 += 16) { - output.set(result[_i3], _j11); - } - - return output; - } - }]); - - return AESBaseCipher; -}(); - -var AES128Cipher = -/*#__PURE__*/ -function (_AESBaseCipher) { - _inherits(AES128Cipher, _AESBaseCipher); - - function AES128Cipher(key) { - var _this; - - _classCallCheck(this, AES128Cipher); - - _this = _possibleConstructorReturn(this, _getPrototypeOf(AES128Cipher).call(this)); - _this._cyclesOfRepetition = 10; - _this._keySize = 160; - _this._rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]); - _this._key = _this._expandKey(key); - return _this; - } - - _createClass(AES128Cipher, [{ - key: "_expandKey", - value: function _expandKey(cipherKey) { - var b = 176; - var s = this._s; - var rcon = this._rcon; - var result = new Uint8Array(b); - result.set(cipherKey); - - for (var j = 16, i = 1; j < b; ++i) { - var t1 = result[j - 3]; - var t2 = result[j - 2]; - var t3 = result[j - 1]; - var t4 = result[j - 4]; - t1 = s[t1]; - t2 = s[t2]; - t3 = s[t3]; - t4 = s[t4]; - t1 = t1 ^ rcon[i]; - - for (var n = 0; n < 4; ++n) { - result[j] = t1 ^= result[j - 16]; - j++; - result[j] = t2 ^= result[j - 16]; - j++; - result[j] = t3 ^= result[j - 16]; - j++; - result[j] = t4 ^= result[j - 16]; - j++; - } - } - - return result; - } - }]); - - return AES128Cipher; -}(AESBaseCipher); - -exports.AES128Cipher = AES128Cipher; - -var AES256Cipher = -/*#__PURE__*/ -function (_AESBaseCipher2) { - _inherits(AES256Cipher, _AESBaseCipher2); - - function AES256Cipher(key) { - var _this2; - - _classCallCheck(this, AES256Cipher); - - _this2 = _possibleConstructorReturn(this, _getPrototypeOf(AES256Cipher).call(this)); - _this2._cyclesOfRepetition = 14; - _this2._keySize = 224; - _this2._key = _this2._expandKey(key); - return _this2; - } - - _createClass(AES256Cipher, [{ - key: "_expandKey", - value: function _expandKey(cipherKey) { - var b = 240; - var s = this._s; - var result = new Uint8Array(b); - result.set(cipherKey); - var r = 1; - var t1, t2, t3, t4; - - for (var j = 32, i = 1; j < b; ++i) { - if (j % 32 === 16) { - t1 = s[t1]; - t2 = s[t2]; - t3 = s[t3]; - t4 = s[t4]; - } else if (j % 32 === 0) { - t1 = result[j - 3]; - t2 = result[j - 2]; - t3 = result[j - 1]; - t4 = result[j - 4]; - t1 = s[t1]; - t2 = s[t2]; - t3 = s[t3]; - t4 = s[t4]; - t1 = t1 ^ r; - - if ((r <<= 1) >= 256) { - r = (r ^ 0x1b) & 0xFF; - } - } - - for (var n = 0; n < 4; ++n) { - result[j] = t1 ^= result[j - 32]; - j++; - result[j] = t2 ^= result[j - 32]; - j++; - result[j] = t3 ^= result[j - 32]; - j++; - result[j] = t4 ^= result[j - 32]; - j++; - } - } - - return result; - } - }]); - - return AES256Cipher; -}(AESBaseCipher); - -exports.AES256Cipher = AES256Cipher; - -var PDF17 = function PDF17Closure() { - function compareByteArrays(array1, array2) { - if (array1.length !== array2.length) { - return false; - } - - for (var i = 0; i < array1.length; i++) { - if (array1[i] !== array2[i]) { - return false; - } - } - - return true; - } - - function PDF17() {} - - PDF17.prototype = { - checkOwnerPassword: function PDF17_checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) { - var hashData = new Uint8Array(password.length + 56); - hashData.set(password, 0); - hashData.set(ownerValidationSalt, password.length); - hashData.set(userBytes, password.length + ownerValidationSalt.length); - var result = calculateSHA256(hashData, 0, hashData.length); - return compareByteArrays(result, ownerPassword); - }, - checkUserPassword: function PDF17_checkUserPassword(password, userValidationSalt, userPassword) { - var hashData = new Uint8Array(password.length + 8); - hashData.set(password, 0); - hashData.set(userValidationSalt, password.length); - var result = calculateSHA256(hashData, 0, hashData.length); - return compareByteArrays(result, userPassword); - }, - getOwnerKey: function PDF17_getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) { - var hashData = new Uint8Array(password.length + 56); - hashData.set(password, 0); - hashData.set(ownerKeySalt, password.length); - hashData.set(userBytes, password.length + ownerKeySalt.length); - var key = calculateSHA256(hashData, 0, hashData.length); - var cipher = new AES256Cipher(key); - return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16)); - }, - getUserKey: function PDF17_getUserKey(password, userKeySalt, userEncryption) { - var hashData = new Uint8Array(password.length + 8); - hashData.set(password, 0); - hashData.set(userKeySalt, password.length); - var key = calculateSHA256(hashData, 0, hashData.length); - var cipher = new AES256Cipher(key); - return cipher.decryptBlock(userEncryption, false, new Uint8Array(16)); - } - }; - return PDF17; -}(); - -exports.PDF17 = PDF17; - -var PDF20 = function PDF20Closure() { - function concatArrays(array1, array2) { - var t = new Uint8Array(array1.length + array2.length); - t.set(array1, 0); - t.set(array2, array1.length); - return t; - } - - function calculatePDF20Hash(password, input, userBytes) { - var k = calculateSHA256(input, 0, input.length).subarray(0, 32); - var e = [0]; - var i = 0; - - while (i < 64 || e[e.length - 1] > i - 32) { - var arrayLength = password.length + k.length + userBytes.length; - var k1 = new Uint8Array(arrayLength * 64); - var array = concatArrays(password, k); - array = concatArrays(array, userBytes); - - for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) { - k1.set(array, pos); - } - - var cipher = new AES128Cipher(k.subarray(0, 16)); - e = cipher.encrypt(k1, k.subarray(16, 32)); - var remainder = 0; - - for (var z = 0; z < 16; z++) { - remainder *= 256 % 3; - remainder %= 3; - remainder += (e[z] >>> 0) % 3; - remainder %= 3; - } - - if (remainder === 0) { - k = calculateSHA256(e, 0, e.length); - } else if (remainder === 1) { - k = calculateSHA384(e, 0, e.length); - } else if (remainder === 2) { - k = calculateSHA512(e, 0, e.length); - } - - i++; - } - - return k.subarray(0, 32); - } - - function PDF20() {} - - function compareByteArrays(array1, array2) { - if (array1.length !== array2.length) { - return false; - } - - for (var i = 0; i < array1.length; i++) { - if (array1[i] !== array2[i]) { - return false; - } - } - - return true; - } - - PDF20.prototype = { - hash: function PDF20_hash(password, concatBytes, userBytes) { - return calculatePDF20Hash(password, concatBytes, userBytes); - }, - checkOwnerPassword: function PDF20_checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) { - var hashData = new Uint8Array(password.length + 56); - hashData.set(password, 0); - hashData.set(ownerValidationSalt, password.length); - hashData.set(userBytes, password.length + ownerValidationSalt.length); - var result = calculatePDF20Hash(password, hashData, userBytes); - return compareByteArrays(result, ownerPassword); - }, - checkUserPassword: function PDF20_checkUserPassword(password, userValidationSalt, userPassword) { - var hashData = new Uint8Array(password.length + 8); - hashData.set(password, 0); - hashData.set(userValidationSalt, password.length); - var result = calculatePDF20Hash(password, hashData, []); - return compareByteArrays(result, userPassword); - }, - getOwnerKey: function PDF20_getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) { - var hashData = new Uint8Array(password.length + 56); - hashData.set(password, 0); - hashData.set(ownerKeySalt, password.length); - hashData.set(userBytes, password.length + ownerKeySalt.length); - var key = calculatePDF20Hash(password, hashData, userBytes); - var cipher = new AES256Cipher(key); - return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16)); - }, - getUserKey: function PDF20_getUserKey(password, userKeySalt, userEncryption) { - var hashData = new Uint8Array(password.length + 8); - hashData.set(password, 0); - hashData.set(userKeySalt, password.length); - var key = calculatePDF20Hash(password, hashData, []); - var cipher = new AES256Cipher(key); - return cipher.decryptBlock(userEncryption, false, new Uint8Array(16)); - } - }; - return PDF20; -}(); - -exports.PDF20 = PDF20; - -var CipherTransform = function CipherTransformClosure() { - function CipherTransform(stringCipherConstructor, streamCipherConstructor) { - this.StringCipherConstructor = stringCipherConstructor; - this.StreamCipherConstructor = streamCipherConstructor; - } - - CipherTransform.prototype = { - createStream: function CipherTransform_createStream(stream, length) { - var cipher = new this.StreamCipherConstructor(); - return new _stream.DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) { - return cipher.decryptBlock(data, finalize); - }); - }, - decryptString: function CipherTransform_decryptString(s) { - var cipher = new this.StringCipherConstructor(); - var data = (0, _util.stringToBytes)(s); - data = cipher.decryptBlock(data, true); - return (0, _util.bytesToString)(data); - } - }; - return CipherTransform; -}(); - -var CipherTransformFactory = function CipherTransformFactoryClosure() { - var defaultPasswordBytes = new Uint8Array([0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41, 0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08, 0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80, 0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]); - - function createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) { - if (password) { - var passwordLength = Math.min(127, password.length); - password = password.subarray(0, passwordLength); - } else { - password = []; - } - - var pdfAlgorithm; - - if (revision === 6) { - pdfAlgorithm = new PDF20(); - } else { - pdfAlgorithm = new PDF17(); - } - - if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) { - return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption); - } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) { - return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption); - } - - return null; - } - - function prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) { - var hashDataSize = 40 + ownerPassword.length + fileId.length; - var hashData = new Uint8Array(hashDataSize), - i = 0, - j, - n; - - if (password) { - n = Math.min(32, password.length); - - for (; i < n; ++i) { - hashData[i] = password[i]; - } - } - - j = 0; - - while (i < 32) { - hashData[i++] = defaultPasswordBytes[j++]; - } - - for (j = 0, n = ownerPassword.length; j < n; ++j) { - hashData[i++] = ownerPassword[j]; - } - - hashData[i++] = flags & 0xFF; - hashData[i++] = flags >> 8 & 0xFF; - hashData[i++] = flags >> 16 & 0xFF; - hashData[i++] = flags >>> 24 & 0xFF; - - for (j = 0, n = fileId.length; j < n; ++j) { - hashData[i++] = fileId[j]; - } - - if (revision >= 4 && !encryptMetadata) { - hashData[i++] = 0xFF; - hashData[i++] = 0xFF; - hashData[i++] = 0xFF; - hashData[i++] = 0xFF; - } - - var hash = calculateMD5(hashData, 0, i); - var keyLengthInBytes = keyLength >> 3; - - if (revision >= 3) { - for (j = 0; j < 50; ++j) { - hash = calculateMD5(hash, 0, keyLengthInBytes); - } - } - - var encryptionKey = hash.subarray(0, keyLengthInBytes); - var cipher, checkData; - - if (revision >= 3) { - for (i = 0; i < 32; ++i) { - hashData[i] = defaultPasswordBytes[i]; - } - - for (j = 0, n = fileId.length; j < n; ++j) { - hashData[i++] = fileId[j]; - } - - cipher = new ARCFourCipher(encryptionKey); - checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i)); - n = encryptionKey.length; - var derivedKey = new Uint8Array(n), - k; - - for (j = 1; j <= 19; ++j) { - for (k = 0; k < n; ++k) { - derivedKey[k] = encryptionKey[k] ^ j; - } - - cipher = new ARCFourCipher(derivedKey); - checkData = cipher.encryptBlock(checkData); - } - - for (j = 0, n = checkData.length; j < n; ++j) { - if (userPassword[j] !== checkData[j]) { - return null; - } - } - } else { - cipher = new ARCFourCipher(encryptionKey); - checkData = cipher.encryptBlock(defaultPasswordBytes); - - for (j = 0, n = checkData.length; j < n; ++j) { - if (userPassword[j] !== checkData[j]) { - return null; - } - } - } - - return encryptionKey; - } - - function decodeUserPassword(password, ownerPassword, revision, keyLength) { - var hashData = new Uint8Array(32), - i = 0, - j, - n; - n = Math.min(32, password.length); - - for (; i < n; ++i) { - hashData[i] = password[i]; - } - - j = 0; - - while (i < 32) { - hashData[i++] = defaultPasswordBytes[j++]; - } - - var hash = calculateMD5(hashData, 0, i); - var keyLengthInBytes = keyLength >> 3; - - if (revision >= 3) { - for (j = 0; j < 50; ++j) { - hash = calculateMD5(hash, 0, hash.length); - } - } - - var cipher, userPassword; - - if (revision >= 3) { - userPassword = ownerPassword; - var derivedKey = new Uint8Array(keyLengthInBytes), - k; - - for (j = 19; j >= 0; j--) { - for (k = 0; k < keyLengthInBytes; ++k) { - derivedKey[k] = hash[k] ^ j; - } - - cipher = new ARCFourCipher(derivedKey); - userPassword = cipher.encryptBlock(userPassword); - } - } else { - cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes)); - userPassword = cipher.encryptBlock(ownerPassword); - } - - return userPassword; - } - - var identityName = _primitives.Name.get('Identity'); - - function CipherTransformFactory(dict, fileId, password) { - var filter = dict.get('Filter'); - - if (!(0, _primitives.isName)(filter, 'Standard')) { - throw new _util.FormatError('unknown encryption method'); - } - - this.dict = dict; - var algorithm = dict.get('V'); - - if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) { - throw new _util.FormatError('unsupported encryption algorithm'); - } - - this.algorithm = algorithm; - var keyLength = dict.get('Length'); - - if (!keyLength) { - if (algorithm <= 3) { - keyLength = 40; - } else { - var cfDict = dict.get('CF'); - var streamCryptoName = dict.get('StmF'); - - if ((0, _primitives.isDict)(cfDict) && (0, _primitives.isName)(streamCryptoName)) { - cfDict.suppressEncryption = true; - var handlerDict = cfDict.get(streamCryptoName.name); - keyLength = handlerDict && handlerDict.get('Length') || 128; - - if (keyLength < 40) { - keyLength <<= 3; - } - } - } - } - - if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) { - throw new _util.FormatError('invalid key length'); - } - - var ownerPassword = (0, _util.stringToBytes)(dict.get('O')).subarray(0, 32); - var userPassword = (0, _util.stringToBytes)(dict.get('U')).subarray(0, 32); - var flags = dict.get('P'); - var revision = dict.get('R'); - var encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get('EncryptMetadata') !== false; - this.encryptMetadata = encryptMetadata; - var fileIdBytes = (0, _util.stringToBytes)(fileId); - var passwordBytes; - - if (password) { - if (revision === 6) { - try { - password = (0, _util.utf8StringToString)(password); - } catch (ex) { - (0, _util.warn)('CipherTransformFactory: ' + 'Unable to convert UTF8 encoded password.'); - } - } - - passwordBytes = (0, _util.stringToBytes)(password); - } - - var encryptionKey; - - if (algorithm !== 5) { - encryptionKey = prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata); - } else { - var ownerValidationSalt = (0, _util.stringToBytes)(dict.get('O')).subarray(32, 40); - var ownerKeySalt = (0, _util.stringToBytes)(dict.get('O')).subarray(40, 48); - var uBytes = (0, _util.stringToBytes)(dict.get('U')).subarray(0, 48); - var userValidationSalt = (0, _util.stringToBytes)(dict.get('U')).subarray(32, 40); - var userKeySalt = (0, _util.stringToBytes)(dict.get('U')).subarray(40, 48); - var ownerEncryption = (0, _util.stringToBytes)(dict.get('OE')); - var userEncryption = (0, _util.stringToBytes)(dict.get('UE')); - var perms = (0, _util.stringToBytes)(dict.get('Perms')); - encryptionKey = createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms); - } - - if (!encryptionKey && !password) { - throw new _util.PasswordException('No password given', _util.PasswordResponses.NEED_PASSWORD); - } else if (!encryptionKey && password) { - var decodedPassword = decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength); - encryptionKey = prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata); - } - - if (!encryptionKey) { - throw new _util.PasswordException('Incorrect Password', _util.PasswordResponses.INCORRECT_PASSWORD); - } - - this.encryptionKey = encryptionKey; - - if (algorithm >= 4) { - var cf = dict.get('CF'); - - if ((0, _primitives.isDict)(cf)) { - cf.suppressEncryption = true; - } - - this.cf = cf; - this.stmf = dict.get('StmF') || identityName; - this.strf = dict.get('StrF') || identityName; - this.eff = dict.get('EFF') || this.stmf; } } - function buildObjectKey(num, gen, encryptionKey, isAes) { - var key = new Uint8Array(encryptionKey.length + 9), - i, - n; - - for (i = 0, n = encryptionKey.length; i < n; ++i) { - key[i] = encryptionKey[i]; - } - - key[i++] = num & 0xFF; - key[i++] = num >> 8 & 0xFF; - key[i++] = num >> 16 & 0xFF; - key[i++] = gen & 0xFF; - key[i++] = gen >> 8 & 0xFF; - - if (isAes) { - key[i++] = 0x73; - key[i++] = 0x41; - key[i++] = 0x6C; - key[i++] = 0x54; - } - - var hash = calculateMD5(key, 0, i); - return hash.subarray(0, Math.min(encryptionKey.length + 5, 16)); - } - - function buildCipherConstructor(cf, name, num, gen, key) { - if (!(0, _primitives.isName)(name)) { - throw new _util.FormatError('Invalid crypt filter name.'); - } - - var cryptFilter = cf.get(name.name); - var cfm; - - if (cryptFilter !== null && cryptFilter !== undefined) { - cfm = cryptFilter.get('CFM'); - } - - if (!cfm || cfm.name === 'None') { - return function cipherTransformFactoryBuildCipherConstructorNone() { - return new NullCipher(); - }; - } - - if (cfm.name === 'V2') { - return function cipherTransformFactoryBuildCipherConstructorV2() { - return new ARCFourCipher(buildObjectKey(num, gen, key, false)); - }; - } - - if (cfm.name === 'AESV2') { - return function cipherTransformFactoryBuildCipherConstructorAESV2() { - return new AES128Cipher(buildObjectKey(num, gen, key, true)); - }; - } - - if (cfm.name === 'AESV3') { - return function cipherTransformFactoryBuildCipherConstructorAESV3() { - return new AES256Cipher(key); - }; - } - - throw new _util.FormatError('Unknown crypto method'); - } - - CipherTransformFactory.prototype = { - createCipherTransform: function CipherTransformFactory_createCipherTransform(num, gen) { - if (this.algorithm === 4 || this.algorithm === 5) { - return new CipherTransform(buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey), buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey)); - } - - var key = buildObjectKey(num, gen, this.encryptionKey, false); - - var cipherConstructor = function buildCipherCipherConstructor() { - return new ARCFourCipher(key); - }; - - return new CipherTransform(cipherConstructor, cipherConstructor); - } - }; - return CipherTransformFactory; -}(); - -exports.CipherTransformFactory = CipherTransformFactory; - -/***/ }), -/* 169 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.ColorSpace = void 0; - -var _util = __w_pdfjs_require__(5); - -var _primitives = __w_pdfjs_require__(151); - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -function resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) { - var COMPONENTS = 3; - alpha01 = alpha01 !== 1 ? 0 : alpha01; - var xRatio = w1 / w2; - var yRatio = h1 / h2; - var newIndex = 0, - oldIndex; - var xScaled = new Uint16Array(w2); - var w1Scanline = w1 * COMPONENTS; - - for (var i = 0; i < w2; i++) { - xScaled[i] = Math.floor(i * xRatio) * COMPONENTS; - } - - for (var _i = 0; _i < h2; _i++) { - var py = Math.floor(_i * yRatio) * w1Scanline; - - for (var j = 0; j < w2; j++) { - oldIndex = py + xScaled[j]; - dest[newIndex++] = src[oldIndex++]; - dest[newIndex++] = src[oldIndex++]; - dest[newIndex++] = src[oldIndex++]; - newIndex += alpha01; - } - } } -var ColorSpace = -/*#__PURE__*/ -function () { - function ColorSpace(name, numComps) { - _classCallCheck(this, ColorSpace); +class ReversibleTransform extends Transform { + filter(x, offset, length) { + const len = length >> 1; + offset |= 0; + let j, n; - if (this.constructor === ColorSpace) { - (0, _util.unreachable)('Cannot initialize ColorSpace.'); + for (j = offset, n = len + 1; n--; j += 2) { + x[j] -= x[j - 1] + x[j + 1] + 2 >> 2; } - this.name = name; - this.numComps = numComps; + for (j = offset + 1, n = len; n--; j += 2) { + x[j] += x[j - 1] + x[j + 1] >> 1; + } } - _createClass(ColorSpace, [{ - key: "getRgb", - value: function getRgb(src, srcOffset) { - var rgb = new Uint8ClampedArray(3); - this.getRgbItem(src, srcOffset, rgb, 0); - return rgb; +} + +/***/ }), +/* 156 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.LZWStream = void 0; + +var _decode_stream = __w_pdfjs_require__(144); + +class LZWStream extends _decode_stream.DecodeStream { + constructor(str, maybeLength, earlyChange) { + super(maybeLength); + this.str = str; + this.dict = str.dict; + this.cachedData = 0; + this.bitsCached = 0; + const maxLzwDictionarySize = 4096; + const lzwState = { + earlyChange, + codeLength: 9, + nextCode: 258, + dictionaryValues: new Uint8Array(maxLzwDictionarySize), + dictionaryLengths: new Uint16Array(maxLzwDictionarySize), + dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize), + currentSequence: new Uint8Array(maxLzwDictionarySize), + currentSequenceLength: 0 + }; + + for (let i = 0; i < 256; ++i) { + lzwState.dictionaryValues[i] = i; + lzwState.dictionaryLengths[i] = 1; } - }, { - key: "getRgbItem", - value: function getRgbItem(src, srcOffset, dest, destOffset) { - (0, _util.unreachable)('Should not call ColorSpace.getRgbItem'); - } - }, { - key: "getRgbBuffer", - value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - (0, _util.unreachable)('Should not call ColorSpace.getRgbBuffer'); - } - }, { - key: "getOutputLength", - value: function getOutputLength(inputLength, alpha01) { - (0, _util.unreachable)('Should not call ColorSpace.getOutputLength'); - } - }, { - key: "isPassthrough", - value: function isPassthrough(bits) { - return false; - } - }, { - key: "isDefaultDecode", - value: function isDefaultDecode(decodeMap, bpc) { - return ColorSpace.isDefaultDecode(decodeMap, this.numComps); - } - }, { - key: "fillRgb", - value: function fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) { - var count = originalWidth * originalHeight; - var rgbBuf = null; - var numComponentColors = 1 << bpc; - var needsResizing = originalHeight !== height || originalWidth !== width; - if (this.isPassthrough(bpc)) { - rgbBuf = comps; - } else if (this.numComps === 1 && count > numComponentColors && this.name !== 'DeviceGray' && this.name !== 'DeviceRGB') { - var allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors); - - for (var i = 0; i < numComponentColors; i++) { - allColors[i] = i; - } - - var colorMap = new Uint8ClampedArray(numComponentColors * 3); - this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0); - - if (!needsResizing) { - var destPos = 0; - - for (var _i2 = 0; _i2 < count; ++_i2) { - var key = comps[_i2] * 3; - dest[destPos++] = colorMap[key]; - dest[destPos++] = colorMap[key + 1]; - dest[destPos++] = colorMap[key + 2]; - destPos += alpha01; - } - } else { - rgbBuf = new Uint8Array(count * 3); - var rgbPos = 0; - - for (var _i3 = 0; _i3 < count; ++_i3) { - var _key = comps[_i3] * 3; - - rgbBuf[rgbPos++] = colorMap[_key]; - rgbBuf[rgbPos++] = colorMap[_key + 1]; - rgbBuf[rgbPos++] = colorMap[_key + 2]; - } - } - } else { - if (!needsResizing) { - this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01); - } else { - rgbBuf = new Uint8ClampedArray(count * 3); - this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0); - } - } - - if (rgbBuf) { - if (needsResizing) { - resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01); - } else { - var _destPos = 0, - _rgbPos = 0; - - for (var _i4 = 0, ii = width * actualHeight; _i4 < ii; _i4++) { - dest[_destPos++] = rgbBuf[_rgbPos++]; - dest[_destPos++] = rgbBuf[_rgbPos++]; - dest[_destPos++] = rgbBuf[_rgbPos++]; - _destPos += alpha01; - } - } - } - } - }, { - key: "usesZeroToOneRange", - get: function get() { - return (0, _util.shadow)(this, 'usesZeroToOneRange', true); - } - }], [{ - key: "parse", - value: function parse(cs, xref, res, pdfFunctionFactory) { - var IR = this.parseToIR(cs, xref, res, pdfFunctionFactory); - return this.fromIR(IR); - } - }, { - key: "fromIR", - value: function fromIR(IR) { - var name = Array.isArray(IR) ? IR[0] : IR; - var whitePoint, blackPoint, gamma; - - switch (name) { - case 'DeviceGrayCS': - return this.singletons.gray; - - case 'DeviceRgbCS': - return this.singletons.rgb; - - case 'DeviceCmykCS': - return this.singletons.cmyk; - - case 'CalGrayCS': - whitePoint = IR[1]; - blackPoint = IR[2]; - gamma = IR[3]; - return new CalGrayCS(whitePoint, blackPoint, gamma); - - case 'CalRGBCS': - whitePoint = IR[1]; - blackPoint = IR[2]; - gamma = IR[3]; - var matrix = IR[4]; - return new CalRGBCS(whitePoint, blackPoint, gamma, matrix); - - case 'PatternCS': - var basePatternCS = IR[1]; - - if (basePatternCS) { - basePatternCS = this.fromIR(basePatternCS); - } - - return new PatternCS(basePatternCS); - - case 'IndexedCS': - var baseIndexedCS = IR[1]; - var hiVal = IR[2]; - var lookup = IR[3]; - return new IndexedCS(this.fromIR(baseIndexedCS), hiVal, lookup); - - case 'AlternateCS': - var numComps = IR[1]; - var alt = IR[2]; - var tintFn = IR[3]; - return new AlternateCS(numComps, this.fromIR(alt), tintFn); - - case 'LabCS': - whitePoint = IR[1]; - blackPoint = IR[2]; - var range = IR[3]; - return new LabCS(whitePoint, blackPoint, range); - - default: - throw new _util.FormatError("Unknown colorspace name: ".concat(name)); - } - } - }, { - key: "parseToIR", - value: function parseToIR(cs, xref) { - var res = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var pdfFunctionFactory = arguments.length > 3 ? arguments[3] : undefined; - cs = xref.fetchIfRef(cs); - - if ((0, _primitives.isName)(cs)) { - switch (cs.name) { - case 'DeviceGray': - case 'G': - return 'DeviceGrayCS'; - - case 'DeviceRGB': - case 'RGB': - return 'DeviceRgbCS'; - - case 'DeviceCMYK': - case 'CMYK': - return 'DeviceCmykCS'; - - case 'Pattern': - return ['PatternCS', null]; - - default: - if ((0, _primitives.isDict)(res)) { - var colorSpaces = res.get('ColorSpace'); - - if ((0, _primitives.isDict)(colorSpaces)) { - var resCS = colorSpaces.get(cs.name); - - if (resCS) { - if ((0, _primitives.isName)(resCS)) { - return this.parseToIR(resCS, xref, res, pdfFunctionFactory); - } - - cs = resCS; - break; - } - } - } - - throw new _util.FormatError("unrecognized colorspace ".concat(cs.name)); - } - } - - if (Array.isArray(cs)) { - var mode = xref.fetchIfRef(cs[0]).name; - var numComps, params, alt, whitePoint, blackPoint, gamma; - - switch (mode) { - case 'DeviceGray': - case 'G': - return 'DeviceGrayCS'; - - case 'DeviceRGB': - case 'RGB': - return 'DeviceRgbCS'; - - case 'DeviceCMYK': - case 'CMYK': - return 'DeviceCmykCS'; - - case 'CalGray': - params = xref.fetchIfRef(cs[1]); - whitePoint = params.getArray('WhitePoint'); - blackPoint = params.getArray('BlackPoint'); - gamma = params.get('Gamma'); - return ['CalGrayCS', whitePoint, blackPoint, gamma]; - - case 'CalRGB': - params = xref.fetchIfRef(cs[1]); - whitePoint = params.getArray('WhitePoint'); - blackPoint = params.getArray('BlackPoint'); - gamma = params.getArray('Gamma'); - var matrix = params.getArray('Matrix'); - return ['CalRGBCS', whitePoint, blackPoint, gamma, matrix]; - - case 'ICCBased': - var stream = xref.fetchIfRef(cs[1]); - var dict = stream.dict; - numComps = dict.get('N'); - alt = dict.get('Alternate'); - - if (alt) { - var altIR = this.parseToIR(alt, xref, res, pdfFunctionFactory); - var altCS = this.fromIR(altIR, pdfFunctionFactory); - - if (altCS.numComps === numComps) { - return altIR; - } - - (0, _util.warn)('ICCBased color space: Ignoring incorrect /Alternate entry.'); - } - - if (numComps === 1) { - return 'DeviceGrayCS'; - } else if (numComps === 3) { - return 'DeviceRgbCS'; - } else if (numComps === 4) { - return 'DeviceCmykCS'; - } - - break; - - case 'Pattern': - var basePatternCS = cs[1] || null; - - if (basePatternCS) { - basePatternCS = this.parseToIR(basePatternCS, xref, res, pdfFunctionFactory); - } - - return ['PatternCS', basePatternCS]; - - case 'Indexed': - case 'I': - var baseIndexedCS = this.parseToIR(cs[1], xref, res, pdfFunctionFactory); - var hiVal = xref.fetchIfRef(cs[2]) + 1; - var lookup = xref.fetchIfRef(cs[3]); - - if ((0, _primitives.isStream)(lookup)) { - lookup = lookup.getBytes(); - } - - return ['IndexedCS', baseIndexedCS, hiVal, lookup]; - - case 'Separation': - case 'DeviceN': - var name = xref.fetchIfRef(cs[1]); - numComps = Array.isArray(name) ? name.length : 1; - alt = this.parseToIR(cs[2], xref, res, pdfFunctionFactory); - var tintFn = pdfFunctionFactory.create(xref.fetchIfRef(cs[3])); - return ['AlternateCS', numComps, alt, tintFn]; - - case 'Lab': - params = xref.fetchIfRef(cs[1]); - whitePoint = params.getArray('WhitePoint'); - blackPoint = params.getArray('BlackPoint'); - var range = params.getArray('Range'); - return ['LabCS', whitePoint, blackPoint, range]; - - default: - throw new _util.FormatError("unimplemented color space object \"".concat(mode, "\"")); - } - } - - throw new _util.FormatError("unrecognized color space object: \"".concat(cs, "\"")); - } - }, { - key: "isDefaultDecode", - value: function isDefaultDecode(decode, numComps) { - if (!Array.isArray(decode)) { - return true; - } - - if (numComps * 2 !== decode.length) { - (0, _util.warn)('The decode map is not the correct length'); - return true; - } - - for (var i = 0, ii = decode.length; i < ii; i += 2) { - if (decode[i] !== 0 || decode[i + 1] !== 1) { - return false; - } - } - - return true; - } - }, { - key: "singletons", - get: function get() { - return (0, _util.shadow)(this, 'singletons', { - get gray() { - return (0, _util.shadow)(this, 'gray', new DeviceGrayCS()); - }, - - get rgb() { - return (0, _util.shadow)(this, 'rgb', new DeviceRgbCS()); - }, - - get cmyk() { - return (0, _util.shadow)(this, 'cmyk', new DeviceCmykCS()); - } - - }); - } - }]); - - return ColorSpace; -}(); - -exports.ColorSpace = ColorSpace; - -var AlternateCS = -/*#__PURE__*/ -function (_ColorSpace) { - _inherits(AlternateCS, _ColorSpace); - - function AlternateCS(numComps, base, tintFn) { - var _this; - - _classCallCheck(this, AlternateCS); - - _this = _possibleConstructorReturn(this, _getPrototypeOf(AlternateCS).call(this, 'Alternate', numComps)); - _this.base = base; - _this.tintFn = tintFn; - _this.tmpBuf = new Float32Array(base.numComps); - return _this; + this.lzwState = lzwState; } - _createClass(AlternateCS, [{ - key: "getRgbItem", - value: function getRgbItem(src, srcOffset, dest, destOffset) { - var tmpBuf = this.tmpBuf; - this.tintFn(src, srcOffset, tmpBuf, 0); - this.base.getRgbItem(tmpBuf, 0, dest, destOffset); - } - }, { - key: "getRgbBuffer", - value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - var tintFn = this.tintFn; - var base = this.base; - var scale = 1 / ((1 << bits) - 1); - var baseNumComps = base.numComps; - var usesZeroToOneRange = base.usesZeroToOneRange; - var isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0; - var pos = isPassthrough ? destOffset : 0; - var baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count); - var numComps = this.numComps; - var scaled = new Float32Array(numComps); - var tinted = new Float32Array(baseNumComps); - var i, j; + readBits(n) { + let bitsCached = this.bitsCached; + let cachedData = this.cachedData; - for (i = 0; i < count; i++) { - for (j = 0; j < numComps; j++) { - scaled[j] = src[srcOffset++] * scale; - } + while (bitsCached < n) { + const c = this.str.getByte(); - tintFn(scaled, 0, tinted, 0); - - if (usesZeroToOneRange) { - for (j = 0; j < baseNumComps; j++) { - baseBuf[pos++] = tinted[j] * 255; - } - } else { - base.getRgbItem(tinted, 0, baseBuf, pos); - pos += baseNumComps; - } + if (c === -1) { + this.eof = true; + return null; } - if (!isPassthrough) { - base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01); - } + cachedData = cachedData << 8 | c; + bitsCached += 8; } - }, { - key: "getOutputLength", - value: function getOutputLength(inputLength, alpha01) { - return this.base.getOutputLength(inputLength * this.base.numComps / this.numComps, alpha01); - } - }]); - return AlternateCS; -}(ColorSpace); - -var PatternCS = -/*#__PURE__*/ -function (_ColorSpace2) { - _inherits(PatternCS, _ColorSpace2); - - function PatternCS(baseCS) { - var _this2; - - _classCallCheck(this, PatternCS); - - _this2 = _possibleConstructorReturn(this, _getPrototypeOf(PatternCS).call(this, 'Pattern', null)); - _this2.base = baseCS; - return _this2; + this.bitsCached = bitsCached -= n; + this.cachedData = cachedData; + this.lastCode = null; + return cachedData >>> bitsCached & (1 << n) - 1; } - _createClass(PatternCS, [{ - key: "isDefaultDecode", - value: function isDefaultDecode(decodeMap, bpc) { - (0, _util.unreachable)('Should not call PatternCS.isDefaultDecode'); - } - }]); + readBlock() { + const blockSize = 512, + decodedSizeDelta = blockSize; + let estimatedDecodedSize = blockSize * 2; + let i, j, q; + const lzwState = this.lzwState; - return PatternCS; -}(ColorSpace); - -var IndexedCS = -/*#__PURE__*/ -function (_ColorSpace3) { - _inherits(IndexedCS, _ColorSpace3); - - function IndexedCS(base, highVal, lookup) { - var _this3; - - _classCallCheck(this, IndexedCS); - - _this3 = _possibleConstructorReturn(this, _getPrototypeOf(IndexedCS).call(this, 'Indexed', 1)); - _this3.base = base; - _this3.highVal = highVal; - var baseNumComps = base.numComps; - var length = baseNumComps * highVal; - - if ((0, _primitives.isStream)(lookup)) { - _this3.lookup = new Uint8Array(length); - var bytes = lookup.getBytes(length); - - _this3.lookup.set(bytes); - } else if ((0, _util.isString)(lookup)) { - _this3.lookup = new Uint8Array(length); - - for (var i = 0; i < length; ++i) { - _this3.lookup[i] = lookup.charCodeAt(i); - } - } else if (lookup instanceof Uint8Array) { - _this3.lookup = lookup; - } else { - throw new _util.FormatError("Unrecognized lookup table: ".concat(lookup)); - } - - return _this3; - } - - _createClass(IndexedCS, [{ - key: "getRgbItem", - value: function getRgbItem(src, srcOffset, dest, destOffset) { - var numComps = this.base.numComps; - var start = src[srcOffset] * numComps; - this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0); - } - }, { - key: "getRgbBuffer", - value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - var base = this.base; - var numComps = base.numComps; - var outputDelta = base.getOutputLength(numComps, alpha01); - var lookup = this.lookup; - - for (var i = 0; i < count; ++i) { - var lookupPos = src[srcOffset++] * numComps; - base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01); - destOffset += outputDelta; - } - } - }, { - key: "getOutputLength", - value: function getOutputLength(inputLength, alpha01) { - return this.base.getOutputLength(inputLength * this.base.numComps, alpha01); - } - }, { - key: "isDefaultDecode", - value: function isDefaultDecode(decodeMap, bpc) { - if (!Array.isArray(decodeMap)) { - return true; - } - - if (decodeMap.length !== 2) { - (0, _util.warn)('Decode map length is not correct'); - return true; - } - - if (!Number.isInteger(bpc) || bpc < 1) { - (0, _util.warn)('Bits per component is not correct'); - return true; - } - - return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1; - } - }]); - - return IndexedCS; -}(ColorSpace); - -var DeviceGrayCS = -/*#__PURE__*/ -function (_ColorSpace4) { - _inherits(DeviceGrayCS, _ColorSpace4); - - function DeviceGrayCS() { - _classCallCheck(this, DeviceGrayCS); - - return _possibleConstructorReturn(this, _getPrototypeOf(DeviceGrayCS).call(this, 'DeviceGray', 1)); - } - - _createClass(DeviceGrayCS, [{ - key: "getRgbItem", - value: function getRgbItem(src, srcOffset, dest, destOffset) { - var c = src[srcOffset] * 255; - dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c; - } - }, { - key: "getRgbBuffer", - value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - var scale = 255 / ((1 << bits) - 1); - var j = srcOffset, - q = destOffset; - - for (var i = 0; i < count; ++i) { - var c = scale * src[j++]; - dest[q++] = c; - dest[q++] = c; - dest[q++] = c; - q += alpha01; - } - } - }, { - key: "getOutputLength", - value: function getOutputLength(inputLength, alpha01) { - return inputLength * (3 + alpha01); - } - }]); - - return DeviceGrayCS; -}(ColorSpace); - -var DeviceRgbCS = -/*#__PURE__*/ -function (_ColorSpace5) { - _inherits(DeviceRgbCS, _ColorSpace5); - - function DeviceRgbCS() { - _classCallCheck(this, DeviceRgbCS); - - return _possibleConstructorReturn(this, _getPrototypeOf(DeviceRgbCS).call(this, 'DeviceRGB', 3)); - } - - _createClass(DeviceRgbCS, [{ - key: "getRgbItem", - value: function getRgbItem(src, srcOffset, dest, destOffset) { - dest[destOffset] = src[srcOffset] * 255; - dest[destOffset + 1] = src[srcOffset + 1] * 255; - dest[destOffset + 2] = src[srcOffset + 2] * 255; - } - }, { - key: "getRgbBuffer", - value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - if (bits === 8 && alpha01 === 0) { - dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset); - return; - } - - var scale = 255 / ((1 << bits) - 1); - var j = srcOffset, - q = destOffset; - - for (var i = 0; i < count; ++i) { - dest[q++] = scale * src[j++]; - dest[q++] = scale * src[j++]; - dest[q++] = scale * src[j++]; - q += alpha01; - } - } - }, { - key: "getOutputLength", - value: function getOutputLength(inputLength, alpha01) { - return inputLength * (3 + alpha01) / 3 | 0; - } - }, { - key: "isPassthrough", - value: function isPassthrough(bits) { - return bits === 8; - } - }]); - - return DeviceRgbCS; -}(ColorSpace); - -var DeviceCmykCS = function DeviceCmykCSClosure() { - function convertToRgb(src, srcOffset, srcScale, dest, destOffset) { - var c = src[srcOffset] * srcScale; - var m = src[srcOffset + 1] * srcScale; - var y = src[srcOffset + 2] * srcScale; - var k = src[srcOffset + 3] * srcScale; - dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747); - dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578); - dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367); - } - - var DeviceCmykCS = - /*#__PURE__*/ - function (_ColorSpace6) { - _inherits(DeviceCmykCS, _ColorSpace6); - - function DeviceCmykCS() { - _classCallCheck(this, DeviceCmykCS); - - return _possibleConstructorReturn(this, _getPrototypeOf(DeviceCmykCS).call(this, 'DeviceCMYK', 4)); - } - - _createClass(DeviceCmykCS, [{ - key: "getRgbItem", - value: function getRgbItem(src, srcOffset, dest, destOffset) { - convertToRgb(src, srcOffset, 1, dest, destOffset); - } - }, { - key: "getRgbBuffer", - value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - var scale = 1 / ((1 << bits) - 1); - - for (var i = 0; i < count; i++) { - convertToRgb(src, srcOffset, scale, dest, destOffset); - srcOffset += 4; - destOffset += 3 + alpha01; - } - } - }, { - key: "getOutputLength", - value: function getOutputLength(inputLength, alpha01) { - return inputLength / 4 * (3 + alpha01) | 0; - } - }]); - - return DeviceCmykCS; - }(ColorSpace); - - return DeviceCmykCS; -}(); - -var CalGrayCS = function CalGrayCSClosure() { - function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) { - var A = src[srcOffset] * scale; - var AG = Math.pow(A, cs.G); - var L = cs.YW * AG; - var val = Math.max(295.8 * Math.pow(L, 0.333333333333333333) - 40.8, 0); - dest[destOffset] = val; - dest[destOffset + 1] = val; - dest[destOffset + 2] = val; - } - - var CalGrayCS = - /*#__PURE__*/ - function (_ColorSpace7) { - _inherits(CalGrayCS, _ColorSpace7); - - function CalGrayCS(whitePoint, blackPoint, gamma) { - var _this4; - - _classCallCheck(this, CalGrayCS); - - _this4 = _possibleConstructorReturn(this, _getPrototypeOf(CalGrayCS).call(this, 'CalGray', 1)); - - if (!whitePoint) { - throw new _util.FormatError('WhitePoint missing - required for color space CalGray'); - } - - blackPoint = blackPoint || [0, 0, 0]; - gamma = gamma || 1; - _this4.XW = whitePoint[0]; - _this4.YW = whitePoint[1]; - _this4.ZW = whitePoint[2]; - _this4.XB = blackPoint[0]; - _this4.YB = blackPoint[1]; - _this4.ZB = blackPoint[2]; - _this4.G = gamma; - - if (_this4.XW < 0 || _this4.ZW < 0 || _this4.YW !== 1) { - throw new _util.FormatError("Invalid WhitePoint components for ".concat(_this4.name) + ', no fallback available'); - } - - if (_this4.XB < 0 || _this4.YB < 0 || _this4.ZB < 0) { - (0, _util.info)("Invalid BlackPoint for ".concat(_this4.name, ", falling back to default.")); - _this4.XB = _this4.YB = _this4.ZB = 0; - } - - if (_this4.XB !== 0 || _this4.YB !== 0 || _this4.ZB !== 0) { - (0, _util.warn)("".concat(_this4.name, ", BlackPoint: XB: ").concat(_this4.XB, ", YB: ").concat(_this4.YB, ", ") + "ZB: ".concat(_this4.ZB, ", only default values are supported.")); - } - - if (_this4.G < 1) { - (0, _util.info)("Invalid Gamma: ".concat(_this4.G, " for ").concat(_this4.name, ", ") + 'falling back to default.'); - _this4.G = 1; - } - - return _this4; - } - - _createClass(CalGrayCS, [{ - key: "getRgbItem", - value: function getRgbItem(src, srcOffset, dest, destOffset) { - convertToRgb(this, src, srcOffset, dest, destOffset, 1); - } - }, { - key: "getRgbBuffer", - value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - var scale = 1 / ((1 << bits) - 1); - - for (var i = 0; i < count; ++i) { - convertToRgb(this, src, srcOffset, dest, destOffset, scale); - srcOffset += 1; - destOffset += 3 + alpha01; - } - } - }, { - key: "getOutputLength", - value: function getOutputLength(inputLength, alpha01) { - return inputLength * (3 + alpha01); - } - }]); - - return CalGrayCS; - }(ColorSpace); - - return CalGrayCS; -}(); - -var CalRGBCS = function CalRGBCSClosure() { - var BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]); - var BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]); - var SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]); - var FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]); - var tempNormalizeMatrix = new Float32Array(3); - var tempConvertMatrix1 = new Float32Array(3); - var tempConvertMatrix2 = new Float32Array(3); - var DECODE_L_CONSTANT = Math.pow((8 + 16) / 116, 3) / 8.0; - - function matrixProduct(a, b, result) { - result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; - result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2]; - result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2]; - } - - function convertToFlat(sourceWhitePoint, LMS, result) { - result[0] = LMS[0] * 1 / sourceWhitePoint[0]; - result[1] = LMS[1] * 1 / sourceWhitePoint[1]; - result[2] = LMS[2] * 1 / sourceWhitePoint[2]; - } - - function convertToD65(sourceWhitePoint, LMS, result) { - var D65X = 0.95047; - var D65Y = 1; - var D65Z = 1.08883; - result[0] = LMS[0] * D65X / sourceWhitePoint[0]; - result[1] = LMS[1] * D65Y / sourceWhitePoint[1]; - result[2] = LMS[2] * D65Z / sourceWhitePoint[2]; - } - - function sRGBTransferFunction(color) { - if (color <= 0.0031308) { - return adjustToRange(0, 1, 12.92 * color); - } - - return adjustToRange(0, 1, (1 + 0.055) * Math.pow(color, 1 / 2.4) - 0.055); - } - - function adjustToRange(min, max, value) { - return Math.max(min, Math.min(max, value)); - } - - function decodeL(L) { - if (L < 0) { - return -decodeL(-L); - } - - if (L > 8.0) { - return Math.pow((L + 16) / 116, 3); - } - - return L * DECODE_L_CONSTANT; - } - - function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) { - if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) { - result[0] = XYZ_Flat[0]; - result[1] = XYZ_Flat[1]; - result[2] = XYZ_Flat[2]; + if (!lzwState) { return; } - var zeroDecodeL = decodeL(0); - var X_DST = zeroDecodeL; - var X_SRC = decodeL(sourceBlackPoint[0]); - var Y_DST = zeroDecodeL; - var Y_SRC = decodeL(sourceBlackPoint[1]); - var Z_DST = zeroDecodeL; - var Z_SRC = decodeL(sourceBlackPoint[2]); - var X_Scale = (1 - X_DST) / (1 - X_SRC); - var X_Offset = 1 - X_Scale; - var Y_Scale = (1 - Y_DST) / (1 - Y_SRC); - var Y_Offset = 1 - Y_Scale; - var Z_Scale = (1 - Z_DST) / (1 - Z_SRC); - var Z_Offset = 1 - Z_Scale; - result[0] = XYZ_Flat[0] * X_Scale + X_Offset; - result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset; - result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset; + const earlyChange = lzwState.earlyChange; + let nextCode = lzwState.nextCode; + const dictionaryValues = lzwState.dictionaryValues; + const dictionaryLengths = lzwState.dictionaryLengths; + const dictionaryPrevCodes = lzwState.dictionaryPrevCodes; + let codeLength = lzwState.codeLength; + let prevCode = lzwState.prevCode; + const currentSequence = lzwState.currentSequence; + let currentSequenceLength = lzwState.currentSequenceLength; + let decodedLength = 0; + let currentBufferLength = this.bufferLength; + let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize); + + for (i = 0; i < blockSize; i++) { + const code = this.readBits(codeLength); + const hasPrev = currentSequenceLength > 0; + + if (code < 256) { + currentSequence[0] = code; + currentSequenceLength = 1; + } else if (code >= 258) { + if (code < nextCode) { + currentSequenceLength = dictionaryLengths[code]; + + for (j = currentSequenceLength - 1, q = code; j >= 0; j--) { + currentSequence[j] = dictionaryValues[q]; + q = dictionaryPrevCodes[q]; + } + } else { + currentSequence[currentSequenceLength++] = currentSequence[0]; + } + } else if (code === 256) { + codeLength = 9; + nextCode = 258; + currentSequenceLength = 0; + continue; + } else { + this.eof = true; + delete this.lzwState; + break; + } + + if (hasPrev) { + dictionaryPrevCodes[nextCode] = prevCode; + dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1; + dictionaryValues[nextCode] = currentSequence[0]; + nextCode++; + codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0; + } + + prevCode = code; + decodedLength += currentSequenceLength; + + if (estimatedDecodedSize < decodedLength) { + do { + estimatedDecodedSize += decodedSizeDelta; + } while (estimatedDecodedSize < decodedLength); + + buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize); + } + + for (j = 0; j < currentSequenceLength; j++) { + buffer[currentBufferLength++] = currentSequence[j]; + } + } + + lzwState.nextCode = nextCode; + lzwState.codeLength = codeLength; + lzwState.prevCode = prevCode; + lzwState.currentSequenceLength = currentSequenceLength; + this.bufferLength = currentBufferLength; } - function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) { - if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) { - result[0] = XYZ_In[0]; - result[1] = XYZ_In[1]; - result[2] = XYZ_In[2]; +} + +exports.LZWStream = LZWStream; + +/***/ }), +/* 157 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PredictorStream = void 0; + +var _decode_stream = __w_pdfjs_require__(144); + +var _primitives = __w_pdfjs_require__(130); + +var _util = __w_pdfjs_require__(2); + +class PredictorStream extends _decode_stream.DecodeStream { + constructor(str, maybeLength, params) { + super(maybeLength); + + if (!(params instanceof _primitives.Dict)) { + return str; + } + + const predictor = this.predictor = params.get("Predictor") || 1; + + if (predictor <= 1) { + return str; + } + + if (predictor !== 2 && (predictor < 10 || predictor > 15)) { + throw new _util.FormatError(`Unsupported predictor: ${predictor}`); + } + + if (predictor === 2) { + this.readBlock = this.readBlockTiff; + } else { + this.readBlock = this.readBlockPng; + } + + this.str = str; + this.dict = str.dict; + const colors = this.colors = params.get("Colors") || 1; + const bits = this.bits = params.get("BPC", "BitsPerComponent") || 8; + const columns = this.columns = params.get("Columns") || 1; + this.pixBytes = colors * bits + 7 >> 3; + this.rowBytes = columns * colors * bits + 7 >> 3; + return this; + } + + readBlockTiff() { + const rowBytes = this.rowBytes; + const bufferLength = this.bufferLength; + const buffer = this.ensureBuffer(bufferLength + rowBytes); + const bits = this.bits; + const colors = this.colors; + const rawBytes = this.str.getBytes(rowBytes); + this.eof = !rawBytes.length; + + if (this.eof) { return; } - var LMS = result; - matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS); - var LMS_Flat = tempNormalizeMatrix; - convertToFlat(sourceWhitePoint, LMS, LMS_Flat); - matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result); - } + let inbuf = 0, + outbuf = 0; + let inbits = 0, + outbits = 0; + let pos = bufferLength; + let i; - function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) { - var LMS = result; - matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS); - var LMS_D65 = tempNormalizeMatrix; - convertToD65(sourceWhitePoint, LMS, LMS_D65); - matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result); - } - - function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) { - var A = adjustToRange(0, 1, src[srcOffset] * scale); - var B = adjustToRange(0, 1, src[srcOffset + 1] * scale); - var C = adjustToRange(0, 1, src[srcOffset + 2] * scale); - var AGR = Math.pow(A, cs.GR); - var BGG = Math.pow(B, cs.GG); - var CGB = Math.pow(C, cs.GB); - var X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB; - var Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB; - var Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB; - var XYZ = tempConvertMatrix1; - XYZ[0] = X; - XYZ[1] = Y; - XYZ[2] = Z; - var XYZ_Flat = tempConvertMatrix2; - normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat); - var XYZ_Black = tempConvertMatrix1; - compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black); - var XYZ_D65 = tempConvertMatrix2; - normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65); - var SRGB = tempConvertMatrix1; - matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB); - dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255; - dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255; - dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255; - } - - var CalRGBCS = - /*#__PURE__*/ - function (_ColorSpace8) { - _inherits(CalRGBCS, _ColorSpace8); - - function CalRGBCS(whitePoint, blackPoint, gamma, matrix) { - var _this5; - - _classCallCheck(this, CalRGBCS); - - _this5 = _possibleConstructorReturn(this, _getPrototypeOf(CalRGBCS).call(this, 'CalRGB', 3)); - - if (!whitePoint) { - throw new _util.FormatError('WhitePoint missing - required for color space CalRGB'); + if (bits === 1 && colors === 1) { + for (i = 0; i < rowBytes; ++i) { + let c = rawBytes[i] ^ inbuf; + c ^= c >> 1; + c ^= c >> 2; + c ^= c >> 4; + inbuf = (c & 1) << 7; + buffer[pos++] = c; + } + } else if (bits === 8) { + for (i = 0; i < colors; ++i) { + buffer[pos++] = rawBytes[i]; } - blackPoint = blackPoint || new Float32Array(3); - gamma = gamma || new Float32Array([1, 1, 1]); - matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); - var XW = whitePoint[0]; - var YW = whitePoint[1]; - var ZW = whitePoint[2]; - _this5.whitePoint = whitePoint; - var XB = blackPoint[0]; - var YB = blackPoint[1]; - var ZB = blackPoint[2]; - _this5.blackPoint = blackPoint; - _this5.GR = gamma[0]; - _this5.GG = gamma[1]; - _this5.GB = gamma[2]; - _this5.MXA = matrix[0]; - _this5.MYA = matrix[1]; - _this5.MZA = matrix[2]; - _this5.MXB = matrix[3]; - _this5.MYB = matrix[4]; - _this5.MZB = matrix[5]; - _this5.MXC = matrix[6]; - _this5.MYC = matrix[7]; - _this5.MZC = matrix[8]; + for (; i < rowBytes; ++i) { + buffer[pos] = buffer[pos - colors] + rawBytes[i]; + pos++; + } + } else if (bits === 16) { + const bytesPerPixel = colors * 2; - if (XW < 0 || ZW < 0 || YW !== 1) { - throw new _util.FormatError("Invalid WhitePoint components for ".concat(_this5.name) + ', no fallback available'); + for (i = 0; i < bytesPerPixel; ++i) { + buffer[pos++] = rawBytes[i]; } - if (XB < 0 || YB < 0 || ZB < 0) { - (0, _util.info)("Invalid BlackPoint for ".concat(_this5.name, " [").concat(XB, ", ").concat(YB, ", ").concat(ZB, "], ") + 'falling back to default.'); - _this5.blackPoint = new Float32Array(3); + for (; i < rowBytes; i += 2) { + const sum = ((rawBytes[i] & 0xff) << 8) + (rawBytes[i + 1] & 0xff) + ((buffer[pos - bytesPerPixel] & 0xff) << 8) + (buffer[pos - bytesPerPixel + 1] & 0xff); + buffer[pos++] = sum >> 8 & 0xff; + buffer[pos++] = sum & 0xff; } - - if (_this5.GR < 0 || _this5.GG < 0 || _this5.GB < 0) { - (0, _util.info)("Invalid Gamma [".concat(_this5.GR, ", ").concat(_this5.GG, ", ").concat(_this5.GB, "] for ") + "".concat(_this5.name, ", falling back to default.")); - _this5.GR = _this5.GG = _this5.GB = 1; - } - - return _this5; - } - - _createClass(CalRGBCS, [{ - key: "getRgbItem", - value: function getRgbItem(src, srcOffset, dest, destOffset) { - convertToRgb(this, src, srcOffset, dest, destOffset, 1); - } - }, { - key: "getRgbBuffer", - value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - var scale = 1 / ((1 << bits) - 1); - - for (var i = 0; i < count; ++i) { - convertToRgb(this, src, srcOffset, dest, destOffset, scale); - srcOffset += 3; - destOffset += 3 + alpha01; - } - } - }, { - key: "getOutputLength", - value: function getOutputLength(inputLength, alpha01) { - return inputLength * (3 + alpha01) / 3 | 0; - } - }]); - - return CalRGBCS; - }(ColorSpace); - - return CalRGBCS; -}(); - -var LabCS = function LabCSClosure() { - function fn_g(x) { - var result; - - if (x >= 6 / 29) { - result = x * x * x; } else { - result = 108 / 841 * (x - 4 / 29); - } + const compArray = new Uint8Array(colors + 1); + const bitMask = (1 << bits) - 1; + let j = 0, + k = bufferLength; + const columns = this.columns; - return result; - } - - function decode(value, high1, low2, high2) { - return low2 + value * (high2 - low2) / high1; - } - - function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) { - var Ls = src[srcOffset]; - var as = src[srcOffset + 1]; - var bs = src[srcOffset + 2]; - - if (maxVal !== false) { - Ls = decode(Ls, maxVal, 0, 100); - as = decode(as, maxVal, cs.amin, cs.amax); - bs = decode(bs, maxVal, cs.bmin, cs.bmax); - } - - as = as > cs.amax ? cs.amax : as < cs.amin ? cs.amin : as; - bs = bs > cs.bmax ? cs.bmax : bs < cs.bmin ? cs.bmin : bs; - var M = (Ls + 16) / 116; - var L = M + as / 500; - var N = M - bs / 200; - var X = cs.XW * fn_g(L); - var Y = cs.YW * fn_g(M); - var Z = cs.ZW * fn_g(N); - var r, g, b; - - if (cs.ZW < 1) { - r = X * 3.1339 + Y * -1.6170 + Z * -0.4906; - g = X * -0.9785 + Y * 1.9160 + Z * 0.0333; - b = X * 0.0720 + Y * -0.2290 + Z * 1.4057; - } else { - r = X * 3.2406 + Y * -1.5372 + Z * -0.4986; - g = X * -0.9689 + Y * 1.8758 + Z * 0.0415; - b = X * 0.0557 + Y * -0.2040 + Z * 1.0570; - } - - dest[destOffset] = Math.sqrt(r) * 255; - dest[destOffset + 1] = Math.sqrt(g) * 255; - dest[destOffset + 2] = Math.sqrt(b) * 255; - } - - var LabCS = - /*#__PURE__*/ - function (_ColorSpace9) { - _inherits(LabCS, _ColorSpace9); - - function LabCS(whitePoint, blackPoint, range) { - var _this6; - - _classCallCheck(this, LabCS); - - _this6 = _possibleConstructorReturn(this, _getPrototypeOf(LabCS).call(this, 'Lab', 3)); - - if (!whitePoint) { - throw new _util.FormatError('WhitePoint missing - required for color space Lab'); - } - - blackPoint = blackPoint || [0, 0, 0]; - range = range || [-100, 100, -100, 100]; - _this6.XW = whitePoint[0]; - _this6.YW = whitePoint[1]; - _this6.ZW = whitePoint[2]; - _this6.amin = range[0]; - _this6.amax = range[1]; - _this6.bmin = range[2]; - _this6.bmax = range[3]; - _this6.XB = blackPoint[0]; - _this6.YB = blackPoint[1]; - _this6.ZB = blackPoint[2]; - - if (_this6.XW < 0 || _this6.ZW < 0 || _this6.YW !== 1) { - throw new _util.FormatError('Invalid WhitePoint components, no fallback available'); - } - - if (_this6.XB < 0 || _this6.YB < 0 || _this6.ZB < 0) { - (0, _util.info)('Invalid BlackPoint, falling back to default'); - _this6.XB = _this6.YB = _this6.ZB = 0; - } - - if (_this6.amin > _this6.amax || _this6.bmin > _this6.bmax) { - (0, _util.info)('Invalid Range, falling back to defaults'); - _this6.amin = -100; - _this6.amax = 100; - _this6.bmin = -100; - _this6.bmax = 100; - } - - return _this6; - } - - _createClass(LabCS, [{ - key: "getRgbItem", - value: function getRgbItem(src, srcOffset, dest, destOffset) { - convertToRgb(this, src, srcOffset, false, dest, destOffset); - } - }, { - key: "getRgbBuffer", - value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - var maxVal = (1 << bits) - 1; - - for (var i = 0; i < count; i++) { - convertToRgb(this, src, srcOffset, maxVal, dest, destOffset); - srcOffset += 3; - destOffset += 3 + alpha01; - } - } - }, { - key: "getOutputLength", - value: function getOutputLength(inputLength, alpha01) { - return inputLength * (3 + alpha01) / 3 | 0; - } - }, { - key: "isDefaultDecode", - value: function isDefaultDecode(decodeMap, bpc) { - return true; - } - }, { - key: "usesZeroToOneRange", - get: function get() { - return (0, _util.shadow)(this, 'usesZeroToOneRange', false); - } - }]); - - return LabCS; - }(ColorSpace); - - return LabCS; -}(); - -/***/ }), -/* 170 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.MarkupAnnotation = exports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = void 0; - -var _util = __w_pdfjs_require__(5); - -var _obj = __w_pdfjs_require__(156); - -var _primitives = __w_pdfjs_require__(151); - -var _colorspace = __w_pdfjs_require__(169); - -var _core_utils = __w_pdfjs_require__(154); - -var _operator_list = __w_pdfjs_require__(171); - -var _stream = __w_pdfjs_require__(158); - -function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } - -function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var AnnotationFactory = -/*#__PURE__*/ -function () { - function AnnotationFactory() { - _classCallCheck(this, AnnotationFactory); - } - - _createClass(AnnotationFactory, null, [{ - key: "create", - value: function create(xref, ref, pdfManager, idFactory) { - return pdfManager.ensure(this, '_create', [xref, ref, pdfManager, idFactory]); - } - }, { - key: "_create", - value: function _create(xref, ref, pdfManager, idFactory) { - var dict = xref.fetchIfRef(ref); - - if (!(0, _primitives.isDict)(dict)) { - return undefined; - } - - var id = (0, _primitives.isRef)(ref) ? ref.toString() : "annot_".concat(idFactory.createObjId()); - var subtype = dict.get('Subtype'); - subtype = (0, _primitives.isName)(subtype) ? subtype.name : null; - var parameters = { - xref: xref, - dict: dict, - subtype: subtype, - id: id, - pdfManager: pdfManager - }; - - switch (subtype) { - case 'Link': - return new LinkAnnotation(parameters); - - case 'Text': - return new TextAnnotation(parameters); - - case 'Widget': - var fieldType = (0, _core_utils.getInheritableProperty)({ - dict: dict, - key: 'FT' - }); - fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null; - - switch (fieldType) { - case 'Tx': - return new TextWidgetAnnotation(parameters); - - case 'Btn': - return new ButtonWidgetAnnotation(parameters); - - case 'Ch': - return new ChoiceWidgetAnnotation(parameters); + for (i = 0; i < columns; ++i) { + for (let kk = 0; kk < colors; ++kk) { + if (inbits < bits) { + inbuf = inbuf << 8 | rawBytes[j++] & 0xff; + inbits += 8; } - (0, _util.warn)('Unimplemented widget field type "' + fieldType + '", ' + 'falling back to base field type.'); - return new WidgetAnnotation(parameters); + compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask; + inbits -= bits; + outbuf = outbuf << bits | compArray[kk]; + outbits += bits; - case 'Popup': - return new PopupAnnotation(parameters); + if (outbits >= 8) { + buffer[k++] = outbuf >> outbits - 8 & 0xff; + outbits -= 8; + } + } + } - case 'FreeText': - return new FreeTextAnnotation(parameters); + if (outbits > 0) { + buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1); + } + } - case 'Line': - return new LineAnnotation(parameters); + this.bufferLength += rowBytes; + } - case 'Square': - return new SquareAnnotation(parameters); + readBlockPng() { + const rowBytes = this.rowBytes; + const pixBytes = this.pixBytes; + const predictor = this.str.getByte(); + const rawBytes = this.str.getBytes(rowBytes); + this.eof = !rawBytes.length; - case 'Circle': - return new CircleAnnotation(parameters); + if (this.eof) { + return; + } - case 'PolyLine': - return new PolylineAnnotation(parameters); + const bufferLength = this.bufferLength; + const buffer = this.ensureBuffer(bufferLength + rowBytes); + let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength); - case 'Polygon': - return new PolygonAnnotation(parameters); + if (prevRow.length === 0) { + prevRow = new Uint8Array(rowBytes); + } - case 'Caret': - return new CaretAnnotation(parameters); + let i, + j = bufferLength, + up, + c; - case 'Ink': - return new InkAnnotation(parameters); + switch (predictor) { + case 0: + for (i = 0; i < rowBytes; ++i) { + buffer[j++] = rawBytes[i]; + } - case 'Highlight': - return new HighlightAnnotation(parameters); + break; - case 'Underline': - return new UnderlineAnnotation(parameters); + case 1: + for (i = 0; i < pixBytes; ++i) { + buffer[j++] = rawBytes[i]; + } - case 'Squiggly': - return new SquigglyAnnotation(parameters); + for (; i < rowBytes; ++i) { + buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xff; + j++; + } - case 'StrikeOut': - return new StrikeOutAnnotation(parameters); + break; - case 'Stamp': - return new StampAnnotation(parameters); + case 2: + for (i = 0; i < rowBytes; ++i) { + buffer[j++] = prevRow[i] + rawBytes[i] & 0xff; + } - case 'FileAttachment': - return new FileAttachmentAnnotation(parameters); + break; - default: - if (!subtype) { - (0, _util.warn)('Annotation is missing the required /Subtype.'); + case 3: + for (i = 0; i < pixBytes; ++i) { + buffer[j++] = (prevRow[i] >> 1) + rawBytes[i]; + } + + for (; i < rowBytes; ++i) { + buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xff; + j++; + } + + break; + + case 4: + for (i = 0; i < pixBytes; ++i) { + up = prevRow[i]; + c = rawBytes[i]; + buffer[j++] = up + c; + } + + for (; i < rowBytes; ++i) { + up = prevRow[i]; + const upLeft = prevRow[i - pixBytes]; + const left = buffer[j - pixBytes]; + const p = left + up - upLeft; + let pa = p - left; + + if (pa < 0) { + pa = -pa; + } + + let pb = p - up; + + if (pb < 0) { + pb = -pb; + } + + let pc = p - upLeft; + + if (pc < 0) { + pc = -pc; + } + + c = rawBytes[i]; + + if (pa <= pb && pa <= pc) { + buffer[j++] = left + c; + } else if (pb <= pc) { + buffer[j++] = up + c; } else { - (0, _util.warn)('Unimplemented annotation type "' + subtype + '", ' + 'falling back to base annotation.'); + buffer[j++] = upLeft + c; } + } - return new Annotation(parameters); - } + break; + + default: + throw new _util.FormatError(`Unsupported predictor: ${predictor}`); } - }]); - return AnnotationFactory; -}(); - -exports.AnnotationFactory = AnnotationFactory; - -function getTransformMatrix(rect, bbox, matrix) { - var bounds = _util.Util.getAxialAlignedBoundingBox(bbox, matrix); - - var minX = bounds[0]; - var minY = bounds[1]; - var maxX = bounds[2]; - var maxY = bounds[3]; - - if (minX === maxX || minY === maxY) { - return [1, 0, 0, 1, rect[0], rect[1]]; + this.bufferLength += rowBytes; } - var xRatio = (rect[2] - rect[0]) / (maxX - minX); - var yRatio = (rect[3] - rect[1]) / (maxY - minY); - return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio]; } -var Annotation = -/*#__PURE__*/ -function () { - function Annotation(params) { - _classCallCheck(this, Annotation); - - var dict = params.dict; - this.setContents(dict.get('Contents')); - this.setModificationDate(dict.get('M')); - this.setFlags(dict.get('F')); - this.setRectangle(dict.getArray('Rect')); - this.setColor(dict.getArray('C')); - this.setBorderStyle(dict); - this.setAppearance(dict); - this.data = { - annotationFlags: this.flags, - borderStyle: this.borderStyle, - color: this.color, - contents: this.contents, - hasAppearance: !!this.appearance, - id: params.id, - modificationDate: this.modificationDate, - rect: this.rectangle, - subtype: params.subtype - }; - } - - _createClass(Annotation, [{ - key: "_hasFlag", - value: function _hasFlag(flags, flag) { - return !!(flags & flag); - } - }, { - key: "_isViewable", - value: function _isViewable(flags) { - return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN) && !this._hasFlag(flags, _util.AnnotationFlag.NOVIEW); - } - }, { - key: "_isPrintable", - value: function _isPrintable(flags) { - return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN); - } - }, { - key: "setContents", - value: function setContents(contents) { - this.contents = (0, _util.stringToPDFString)(contents || ''); - } - }, { - key: "setModificationDate", - value: function setModificationDate(modificationDate) { - this.modificationDate = (0, _util.isString)(modificationDate) ? modificationDate : null; - } - }, { - key: "setFlags", - value: function setFlags(flags) { - this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0; - } - }, { - key: "hasFlag", - value: function hasFlag(flag) { - return this._hasFlag(this.flags, flag); - } - }, { - key: "setRectangle", - value: function setRectangle(rectangle) { - if (Array.isArray(rectangle) && rectangle.length === 4) { - this.rectangle = _util.Util.normalizeRect(rectangle); - } else { - this.rectangle = [0, 0, 0, 0]; - } - } - }, { - key: "setColor", - value: function setColor(color) { - var rgbColor = new Uint8ClampedArray(3); - - if (!Array.isArray(color)) { - this.color = rgbColor; - return; - } - - switch (color.length) { - case 0: - this.color = null; - break; - - case 1: - _colorspace.ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0); - - this.color = rgbColor; - break; - - case 3: - _colorspace.ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0); - - this.color = rgbColor; - break; - - case 4: - _colorspace.ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0); - - this.color = rgbColor; - break; - - default: - this.color = rgbColor; - break; - } - } - }, { - key: "setBorderStyle", - value: function setBorderStyle(borderStyle) { - this.borderStyle = new AnnotationBorderStyle(); - - if (!(0, _primitives.isDict)(borderStyle)) { - return; - } - - if (borderStyle.has('BS')) { - var dict = borderStyle.get('BS'); - var dictType = dict.get('Type'); - - if (!dictType || (0, _primitives.isName)(dictType, 'Border')) { - this.borderStyle.setWidth(dict.get('W'), this.rectangle); - this.borderStyle.setStyle(dict.get('S')); - this.borderStyle.setDashArray(dict.getArray('D')); - } - } else if (borderStyle.has('Border')) { - var array = borderStyle.getArray('Border'); - - if (Array.isArray(array) && array.length >= 3) { - this.borderStyle.setHorizontalCornerRadius(array[0]); - this.borderStyle.setVerticalCornerRadius(array[1]); - this.borderStyle.setWidth(array[2], this.rectangle); - - if (array.length === 4) { - this.borderStyle.setDashArray(array[3]); - } - } - } else { - this.borderStyle.setWidth(0); - } - } - }, { - key: "setAppearance", - value: function setAppearance(dict) { - this.appearance = null; - var appearanceStates = dict.get('AP'); - - if (!(0, _primitives.isDict)(appearanceStates)) { - return; - } - - var normalAppearanceState = appearanceStates.get('N'); - - if ((0, _primitives.isStream)(normalAppearanceState)) { - this.appearance = normalAppearanceState; - return; - } - - if (!(0, _primitives.isDict)(normalAppearanceState)) { - return; - } - - var as = dict.get('AS'); - - if (!(0, _primitives.isName)(as) || !normalAppearanceState.has(as.name)) { - return; - } - - this.appearance = normalAppearanceState.get(as.name); - } - }, { - key: "loadResources", - value: function loadResources(keys) { - return this.appearance.dict.getAsync('Resources').then(function (resources) { - if (!resources) { - return undefined; - } - - var objectLoader = new _obj.ObjectLoader(resources, keys, resources.xref); - return objectLoader.load().then(function () { - return resources; - }); - }); - } - }, { - key: "getOperatorList", - value: function getOperatorList(evaluator, task, renderForms) { - var _this = this; - - if (!this.appearance) { - return Promise.resolve(new _operator_list.OperatorList()); - } - - var data = this.data; - var appearanceDict = this.appearance.dict; - var resourcesPromise = this.loadResources(['ExtGState', 'ColorSpace', 'Pattern', 'Shading', 'XObject', 'Font']); - var bbox = appearanceDict.getArray('BBox') || [0, 0, 1, 1]; - var matrix = appearanceDict.getArray('Matrix') || [1, 0, 0, 1, 0, 0]; - var transform = getTransformMatrix(data.rect, bbox, matrix); - return resourcesPromise.then(function (resources) { - var opList = new _operator_list.OperatorList(); - opList.addOp(_util.OPS.beginAnnotation, [data.rect, transform, matrix]); - return evaluator.getOperatorList({ - stream: _this.appearance, - task: task, - resources: resources, - operatorList: opList - }).then(function () { - opList.addOp(_util.OPS.endAnnotation, []); - - _this.appearance.reset(); - - return opList; - }); - }); - } - }, { - key: "viewable", - get: function get() { - if (this.flags === 0) { - return true; - } - - return this._isViewable(this.flags); - } - }, { - key: "printable", - get: function get() { - if (this.flags === 0) { - return false; - } - - return this._isPrintable(this.flags); - } - }]); - - return Annotation; -}(); - -exports.Annotation = Annotation; - -var AnnotationBorderStyle = -/*#__PURE__*/ -function () { - function AnnotationBorderStyle() { - _classCallCheck(this, AnnotationBorderStyle); - - this.width = 1; - this.style = _util.AnnotationBorderStyleType.SOLID; - this.dashArray = [3]; - this.horizontalCornerRadius = 0; - this.verticalCornerRadius = 0; - } - - _createClass(AnnotationBorderStyle, [{ - key: "setWidth", - value: function setWidth(width) { - var rect = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0, 0, 0, 0]; - - if ((0, _primitives.isName)(width)) { - this.width = 0; - return; - } - - if (Number.isInteger(width)) { - if (width > 0) { - var maxWidth = (rect[2] - rect[0]) / 2; - var maxHeight = (rect[3] - rect[1]) / 2; - - if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) { - (0, _util.warn)("AnnotationBorderStyle.setWidth - ignoring width: ".concat(width)); - width = 1; - } - } - - this.width = width; - } - } - }, { - key: "setStyle", - value: function setStyle(style) { - if (!(0, _primitives.isName)(style)) { - return; - } - - switch (style.name) { - case 'S': - this.style = _util.AnnotationBorderStyleType.SOLID; - break; - - case 'D': - this.style = _util.AnnotationBorderStyleType.DASHED; - break; - - case 'B': - this.style = _util.AnnotationBorderStyleType.BEVELED; - break; - - case 'I': - this.style = _util.AnnotationBorderStyleType.INSET; - break; - - case 'U': - this.style = _util.AnnotationBorderStyleType.UNDERLINE; - break; - - default: - break; - } - } - }, { - key: "setDashArray", - value: function setDashArray(dashArray) { - if (Array.isArray(dashArray) && dashArray.length > 0) { - var isValid = true; - var allZeros = true; - - for (var i = 0, len = dashArray.length; i < len; i++) { - var element = dashArray[i]; - var validNumber = +element >= 0; - - if (!validNumber) { - isValid = false; - break; - } else if (element > 0) { - allZeros = false; - } - } - - if (isValid && !allZeros) { - this.dashArray = dashArray; - } else { - this.width = 0; - } - } else if (dashArray) { - this.width = 0; - } - } - }, { - key: "setHorizontalCornerRadius", - value: function setHorizontalCornerRadius(radius) { - if (Number.isInteger(radius)) { - this.horizontalCornerRadius = radius; - } - } - }, { - key: "setVerticalCornerRadius", - value: function setVerticalCornerRadius(radius) { - if (Number.isInteger(radius)) { - this.verticalCornerRadius = radius; - } - } - }]); - - return AnnotationBorderStyle; -}(); - -exports.AnnotationBorderStyle = AnnotationBorderStyle; - -var MarkupAnnotation = -/*#__PURE__*/ -function (_Annotation) { - _inherits(MarkupAnnotation, _Annotation); - - function MarkupAnnotation(parameters) { - var _this2; - - _classCallCheck(this, MarkupAnnotation); - - _this2 = _possibleConstructorReturn(this, _getPrototypeOf(MarkupAnnotation).call(this, parameters)); - var dict = parameters.dict; - - if (!dict.has('C')) { - _this2.data.color = null; - } - - _this2.setCreationDate(dict.get('CreationDate')); - - _this2.data.creationDate = _this2.creationDate; - _this2.data.hasPopup = dict.has('Popup'); - _this2.data.title = (0, _util.stringToPDFString)(dict.get('T') || ''); - return _this2; - } - - _createClass(MarkupAnnotation, [{ - key: "setCreationDate", - value: function setCreationDate(creationDate) { - this.creationDate = (0, _util.isString)(creationDate) ? creationDate : null; - } - }]); - - return MarkupAnnotation; -}(Annotation); - -exports.MarkupAnnotation = MarkupAnnotation; - -var WidgetAnnotation = -/*#__PURE__*/ -function (_Annotation2) { - _inherits(WidgetAnnotation, _Annotation2); - - function WidgetAnnotation(params) { - var _this3; - - _classCallCheck(this, WidgetAnnotation); - - _this3 = _possibleConstructorReturn(this, _getPrototypeOf(WidgetAnnotation).call(this, params)); - var dict = params.dict; - var data = _this3.data; - data.annotationType = _util.AnnotationType.WIDGET; - data.fieldName = _this3._constructFieldName(dict); - data.fieldValue = (0, _core_utils.getInheritableProperty)({ - dict: dict, - key: 'V', - getArray: true - }); - data.alternativeText = (0, _util.stringToPDFString)(dict.get('TU') || ''); - data.defaultAppearance = (0, _core_utils.getInheritableProperty)({ - dict: dict, - key: 'DA' - }) || ''; - var fieldType = (0, _core_utils.getInheritableProperty)({ - dict: dict, - key: 'FT' - }); - data.fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null; - _this3.fieldResources = (0, _core_utils.getInheritableProperty)({ - dict: dict, - key: 'DR' - }) || _primitives.Dict.empty; - data.fieldFlags = (0, _core_utils.getInheritableProperty)({ - dict: dict, - key: 'Ff' - }); - - if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) { - data.fieldFlags = 0; - } - - data.readOnly = _this3.hasFieldFlag(_util.AnnotationFieldFlag.READONLY); - - if (data.fieldType === 'Sig') { - // Odoo: display digital signature even if verification not implemented https://github.com/mozilla/pdf.js/issues/4743 - //data.fieldValue = null; - - //_this3.setFlags(_util.AnnotationFlag.HIDDEN); - } - - return _this3; - } - - _createClass(WidgetAnnotation, [{ - key: "_constructFieldName", - value: function _constructFieldName(dict) { - if (!dict.has('T') && !dict.has('Parent')) { - (0, _util.warn)('Unknown field name, falling back to empty field name.'); - return ''; - } - - if (!dict.has('Parent')) { - return (0, _util.stringToPDFString)(dict.get('T')); - } - - var fieldName = []; - - if (dict.has('T')) { - fieldName.unshift((0, _util.stringToPDFString)(dict.get('T'))); - } - - var loopDict = dict; - - while (loopDict.has('Parent')) { - loopDict = loopDict.get('Parent'); - - if (!(0, _primitives.isDict)(loopDict)) { - break; - } - - if (loopDict.has('T')) { - fieldName.unshift((0, _util.stringToPDFString)(loopDict.get('T'))); - } - } - - return fieldName.join('.'); - } - }, { - key: "hasFieldFlag", - value: function hasFieldFlag(flag) { - return !!(this.data.fieldFlags & flag); - } - }, { - key: "getOperatorList", - value: function getOperatorList(evaluator, task, renderForms) { - if (renderForms) { - return Promise.resolve(new _operator_list.OperatorList()); - } - - return _get(_getPrototypeOf(WidgetAnnotation.prototype), "getOperatorList", this).call(this, evaluator, task, renderForms); - } - }]); - - return WidgetAnnotation; -}(Annotation); - -var TextWidgetAnnotation = -/*#__PURE__*/ -function (_WidgetAnnotation) { - _inherits(TextWidgetAnnotation, _WidgetAnnotation); - - function TextWidgetAnnotation(params) { - var _this4; - - _classCallCheck(this, TextWidgetAnnotation); - - _this4 = _possibleConstructorReturn(this, _getPrototypeOf(TextWidgetAnnotation).call(this, params)); - var dict = params.dict; - _this4.data.fieldValue = (0, _util.stringToPDFString)(_this4.data.fieldValue || ''); - var alignment = (0, _core_utils.getInheritableProperty)({ - dict: dict, - key: 'Q' - }); - - if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) { - alignment = null; - } - - _this4.data.textAlignment = alignment; - var maximumLength = (0, _core_utils.getInheritableProperty)({ - dict: dict, - key: 'MaxLen' - }); - - if (!Number.isInteger(maximumLength) || maximumLength < 0) { - maximumLength = null; - } - - _this4.data.maxLen = maximumLength; - _this4.data.multiLine = _this4.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE); - _this4.data.comb = _this4.hasFieldFlag(_util.AnnotationFieldFlag.COMB) && !_this4.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE) && !_this4.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD) && !_this4.hasFieldFlag(_util.AnnotationFieldFlag.FILESELECT) && _this4.data.maxLen !== null; - return _this4; - } - - _createClass(TextWidgetAnnotation, [{ - key: "getOperatorList", - value: function getOperatorList(evaluator, task, renderForms) { - if (renderForms || this.appearance) { - return _get(_getPrototypeOf(TextWidgetAnnotation.prototype), "getOperatorList", this).call(this, evaluator, task, renderForms); - } - - var operatorList = new _operator_list.OperatorList(); - - if (!this.data.defaultAppearance) { - return Promise.resolve(operatorList); - } - - var stream = new _stream.Stream((0, _util.stringToBytes)(this.data.defaultAppearance)); - return evaluator.getOperatorList({ - stream: stream, - task: task, - resources: this.fieldResources, - operatorList: operatorList - }).then(function () { - return operatorList; - }); - } - }]); - - return TextWidgetAnnotation; -}(WidgetAnnotation); - -var ButtonWidgetAnnotation = -/*#__PURE__*/ -function (_WidgetAnnotation2) { - _inherits(ButtonWidgetAnnotation, _WidgetAnnotation2); - - function ButtonWidgetAnnotation(params) { - var _this5; - - _classCallCheck(this, ButtonWidgetAnnotation); - - _this5 = _possibleConstructorReturn(this, _getPrototypeOf(ButtonWidgetAnnotation).call(this, params)); - _this5.data.checkBox = !_this5.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !_this5.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON); - _this5.data.radioButton = _this5.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !_this5.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON); - _this5.data.pushButton = _this5.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON); - - if (_this5.data.checkBox) { - _this5._processCheckBox(params); - } else if (_this5.data.radioButton) { - _this5._processRadioButton(params); - } else if (_this5.data.pushButton) { - _this5._processPushButton(params); - } else { - (0, _util.warn)('Invalid field flags for button widget annotation'); - } - - return _this5; - } - - _createClass(ButtonWidgetAnnotation, [{ - key: "_processCheckBox", - value: function _processCheckBox(params) { - if ((0, _primitives.isName)(this.data.fieldValue)) { - this.data.fieldValue = this.data.fieldValue.name; - } - - var customAppearance = params.dict.get('AP'); - - if (!(0, _primitives.isDict)(customAppearance)) { - return; - } - - var exportValueOptionsDict = customAppearance.get('D'); - - if (!(0, _primitives.isDict)(exportValueOptionsDict)) { - return; - } - - var exportValues = exportValueOptionsDict.getKeys(); - var hasCorrectOptionCount = exportValues.length === 2; - - if (!hasCorrectOptionCount) { - return; - } - - this.data.exportValue = exportValues[0] === 'Off' ? exportValues[1] : exportValues[0]; - } - }, { - key: "_processRadioButton", - value: function _processRadioButton(params) { - this.data.fieldValue = this.data.buttonValue = null; - var fieldParent = params.dict.get('Parent'); - - if ((0, _primitives.isDict)(fieldParent) && fieldParent.has('V')) { - var fieldParentValue = fieldParent.get('V'); - - if ((0, _primitives.isName)(fieldParentValue)) { - this.data.fieldValue = fieldParentValue.name; - } - } - - var appearanceStates = params.dict.get('AP'); - - if (!(0, _primitives.isDict)(appearanceStates)) { - return; - } - - var normalAppearanceState = appearanceStates.get('N'); - - if (!(0, _primitives.isDict)(normalAppearanceState)) { - return; - } - - var keys = normalAppearanceState.getKeys(); - - for (var i = 0, ii = keys.length; i < ii; i++) { - if (keys[i] !== 'Off') { - this.data.buttonValue = keys[i]; - break; - } - } - } - }, { - key: "_processPushButton", - value: function _processPushButton(params) { - if (!params.dict.has('A')) { - (0, _util.warn)('Push buttons without action dictionaries are not supported'); - return; - } - - _obj.Catalog.parseDestDictionary({ - destDict: params.dict, - resultObj: this.data, - docBaseUrl: params.pdfManager.docBaseUrl - }); - } - }]); - - return ButtonWidgetAnnotation; -}(WidgetAnnotation); - -var ChoiceWidgetAnnotation = -/*#__PURE__*/ -function (_WidgetAnnotation3) { - _inherits(ChoiceWidgetAnnotation, _WidgetAnnotation3); - - function ChoiceWidgetAnnotation(params) { - var _this6; - - _classCallCheck(this, ChoiceWidgetAnnotation); - - _this6 = _possibleConstructorReturn(this, _getPrototypeOf(ChoiceWidgetAnnotation).call(this, params)); - _this6.data.options = []; - var options = (0, _core_utils.getInheritableProperty)({ - dict: params.dict, - key: 'Opt' - }); - - if (Array.isArray(options)) { - var xref = params.xref; - - for (var i = 0, ii = options.length; i < ii; i++) { - var option = xref.fetchIfRef(options[i]); - var isOptionArray = Array.isArray(option); - _this6.data.options[i] = { - exportValue: isOptionArray ? xref.fetchIfRef(option[0]) : option, - displayValue: (0, _util.stringToPDFString)(isOptionArray ? xref.fetchIfRef(option[1]) : option) - }; - } - } - - if (!Array.isArray(_this6.data.fieldValue)) { - _this6.data.fieldValue = [_this6.data.fieldValue]; - } - - _this6.data.combo = _this6.hasFieldFlag(_util.AnnotationFieldFlag.COMBO); - _this6.data.multiSelect = _this6.hasFieldFlag(_util.AnnotationFieldFlag.MULTISELECT); - return _this6; - } - - return ChoiceWidgetAnnotation; -}(WidgetAnnotation); - -var TextAnnotation = -/*#__PURE__*/ -function (_MarkupAnnotation) { - _inherits(TextAnnotation, _MarkupAnnotation); - - function TextAnnotation(parameters) { - var _this7; - - _classCallCheck(this, TextAnnotation); - - var DEFAULT_ICON_SIZE = 22; - _this7 = _possibleConstructorReturn(this, _getPrototypeOf(TextAnnotation).call(this, parameters)); - _this7.data.annotationType = _util.AnnotationType.TEXT; - - if (_this7.data.hasAppearance) { - _this7.data.name = 'NoIcon'; - } else { - _this7.data.rect[1] = _this7.data.rect[3] - DEFAULT_ICON_SIZE; - _this7.data.rect[2] = _this7.data.rect[0] + DEFAULT_ICON_SIZE; - _this7.data.name = parameters.dict.has('Name') ? parameters.dict.get('Name').name : 'Note'; - } - - return _this7; - } - - return TextAnnotation; -}(MarkupAnnotation); - -var LinkAnnotation = -/*#__PURE__*/ -function (_Annotation3) { - _inherits(LinkAnnotation, _Annotation3); - - function LinkAnnotation(params) { - var _this8; - - _classCallCheck(this, LinkAnnotation); - - _this8 = _possibleConstructorReturn(this, _getPrototypeOf(LinkAnnotation).call(this, params)); - _this8.data.annotationType = _util.AnnotationType.LINK; - - _obj.Catalog.parseDestDictionary({ - destDict: params.dict, - resultObj: _this8.data, - docBaseUrl: params.pdfManager.docBaseUrl - }); - - return _this8; - } - - return LinkAnnotation; -}(Annotation); - -var PopupAnnotation = -/*#__PURE__*/ -function (_Annotation4) { - _inherits(PopupAnnotation, _Annotation4); - - function PopupAnnotation(parameters) { - var _this9; - - _classCallCheck(this, PopupAnnotation); - - _this9 = _possibleConstructorReturn(this, _getPrototypeOf(PopupAnnotation).call(this, parameters)); - _this9.data.annotationType = _util.AnnotationType.POPUP; - var dict = parameters.dict; - var parentItem = dict.get('Parent'); - - if (!parentItem) { - (0, _util.warn)('Popup annotation has a missing or invalid parent annotation.'); - return _possibleConstructorReturn(_this9); - } - - var parentSubtype = parentItem.get('Subtype'); - _this9.data.parentType = (0, _primitives.isName)(parentSubtype) ? parentSubtype.name : null; - _this9.data.parentId = dict.getRaw('Parent').toString(); - _this9.data.title = (0, _util.stringToPDFString)(parentItem.get('T') || ''); - _this9.data.contents = (0, _util.stringToPDFString)(parentItem.get('Contents') || ''); - - if (!parentItem.has('M')) { - _this9.data.modificationDate = null; - } else { - _this9.setModificationDate(parentItem.get('M')); - - _this9.data.modificationDate = _this9.modificationDate; - } - - if (!parentItem.has('C')) { - _this9.data.color = null; - } else { - _this9.setColor(parentItem.getArray('C')); - - _this9.data.color = _this9.color; - } - - if (!_this9.viewable) { - var parentFlags = parentItem.get('F'); - - if (_this9._isViewable(parentFlags)) { - _this9.setFlags(parentFlags); - } - } - - return _this9; - } - - return PopupAnnotation; -}(Annotation); - -var FreeTextAnnotation = -/*#__PURE__*/ -function (_MarkupAnnotation2) { - _inherits(FreeTextAnnotation, _MarkupAnnotation2); - - function FreeTextAnnotation(parameters) { - var _this10; - - _classCallCheck(this, FreeTextAnnotation); - - _this10 = _possibleConstructorReturn(this, _getPrototypeOf(FreeTextAnnotation).call(this, parameters)); - _this10.data.annotationType = _util.AnnotationType.FREETEXT; - return _this10; - } - - return FreeTextAnnotation; -}(MarkupAnnotation); - -var LineAnnotation = -/*#__PURE__*/ -function (_MarkupAnnotation3) { - _inherits(LineAnnotation, _MarkupAnnotation3); - - function LineAnnotation(parameters) { - var _this11; - - _classCallCheck(this, LineAnnotation); - - _this11 = _possibleConstructorReturn(this, _getPrototypeOf(LineAnnotation).call(this, parameters)); - _this11.data.annotationType = _util.AnnotationType.LINE; - var dict = parameters.dict; - _this11.data.lineCoordinates = _util.Util.normalizeRect(dict.getArray('L')); - return _this11; - } - - return LineAnnotation; -}(MarkupAnnotation); - -var SquareAnnotation = -/*#__PURE__*/ -function (_MarkupAnnotation4) { - _inherits(SquareAnnotation, _MarkupAnnotation4); - - function SquareAnnotation(parameters) { - var _this12; - - _classCallCheck(this, SquareAnnotation); - - _this12 = _possibleConstructorReturn(this, _getPrototypeOf(SquareAnnotation).call(this, parameters)); - _this12.data.annotationType = _util.AnnotationType.SQUARE; - return _this12; - } - - return SquareAnnotation; -}(MarkupAnnotation); - -var CircleAnnotation = -/*#__PURE__*/ -function (_MarkupAnnotation5) { - _inherits(CircleAnnotation, _MarkupAnnotation5); - - function CircleAnnotation(parameters) { - var _this13; - - _classCallCheck(this, CircleAnnotation); - - _this13 = _possibleConstructorReturn(this, _getPrototypeOf(CircleAnnotation).call(this, parameters)); - _this13.data.annotationType = _util.AnnotationType.CIRCLE; - return _this13; - } - - return CircleAnnotation; -}(MarkupAnnotation); - -var PolylineAnnotation = -/*#__PURE__*/ -function (_MarkupAnnotation6) { - _inherits(PolylineAnnotation, _MarkupAnnotation6); - - function PolylineAnnotation(parameters) { - var _this14; - - _classCallCheck(this, PolylineAnnotation); - - _this14 = _possibleConstructorReturn(this, _getPrototypeOf(PolylineAnnotation).call(this, parameters)); - _this14.data.annotationType = _util.AnnotationType.POLYLINE; - var dict = parameters.dict; - var rawVertices = dict.getArray('Vertices'); - _this14.data.vertices = []; - - for (var i = 0, ii = rawVertices.length; i < ii; i += 2) { - _this14.data.vertices.push({ - x: rawVertices[i], - y: rawVertices[i + 1] - }); - } - - return _this14; - } - - return PolylineAnnotation; -}(MarkupAnnotation); - -var PolygonAnnotation = -/*#__PURE__*/ -function (_PolylineAnnotation) { - _inherits(PolygonAnnotation, _PolylineAnnotation); - - function PolygonAnnotation(parameters) { - var _this15; - - _classCallCheck(this, PolygonAnnotation); - - _this15 = _possibleConstructorReturn(this, _getPrototypeOf(PolygonAnnotation).call(this, parameters)); - _this15.data.annotationType = _util.AnnotationType.POLYGON; - return _this15; - } - - return PolygonAnnotation; -}(PolylineAnnotation); - -var CaretAnnotation = -/*#__PURE__*/ -function (_MarkupAnnotation7) { - _inherits(CaretAnnotation, _MarkupAnnotation7); - - function CaretAnnotation(parameters) { - var _this16; - - _classCallCheck(this, CaretAnnotation); - - _this16 = _possibleConstructorReturn(this, _getPrototypeOf(CaretAnnotation).call(this, parameters)); - _this16.data.annotationType = _util.AnnotationType.CARET; - return _this16; - } - - return CaretAnnotation; -}(MarkupAnnotation); - -var InkAnnotation = -/*#__PURE__*/ -function (_MarkupAnnotation8) { - _inherits(InkAnnotation, _MarkupAnnotation8); - - function InkAnnotation(parameters) { - var _this17; - - _classCallCheck(this, InkAnnotation); - - _this17 = _possibleConstructorReturn(this, _getPrototypeOf(InkAnnotation).call(this, parameters)); - _this17.data.annotationType = _util.AnnotationType.INK; - var dict = parameters.dict; - var xref = parameters.xref; - var originalInkLists = dict.getArray('InkList'); - _this17.data.inkLists = []; - - for (var i = 0, ii = originalInkLists.length; i < ii; ++i) { - _this17.data.inkLists.push([]); - - for (var j = 0, jj = originalInkLists[i].length; j < jj; j += 2) { - _this17.data.inkLists[i].push({ - x: xref.fetchIfRef(originalInkLists[i][j]), - y: xref.fetchIfRef(originalInkLists[i][j + 1]) - }); - } - } - - return _this17; - } - - return InkAnnotation; -}(MarkupAnnotation); - -var HighlightAnnotation = -/*#__PURE__*/ -function (_MarkupAnnotation9) { - _inherits(HighlightAnnotation, _MarkupAnnotation9); - - function HighlightAnnotation(parameters) { - var _this18; - - _classCallCheck(this, HighlightAnnotation); - - _this18 = _possibleConstructorReturn(this, _getPrototypeOf(HighlightAnnotation).call(this, parameters)); - _this18.data.annotationType = _util.AnnotationType.HIGHLIGHT; - return _this18; - } - - return HighlightAnnotation; -}(MarkupAnnotation); - -var UnderlineAnnotation = -/*#__PURE__*/ -function (_MarkupAnnotation10) { - _inherits(UnderlineAnnotation, _MarkupAnnotation10); - - function UnderlineAnnotation(parameters) { - var _this19; - - _classCallCheck(this, UnderlineAnnotation); - - _this19 = _possibleConstructorReturn(this, _getPrototypeOf(UnderlineAnnotation).call(this, parameters)); - _this19.data.annotationType = _util.AnnotationType.UNDERLINE; - return _this19; - } - - return UnderlineAnnotation; -}(MarkupAnnotation); - -var SquigglyAnnotation = -/*#__PURE__*/ -function (_MarkupAnnotation11) { - _inherits(SquigglyAnnotation, _MarkupAnnotation11); - - function SquigglyAnnotation(parameters) { - var _this20; - - _classCallCheck(this, SquigglyAnnotation); - - _this20 = _possibleConstructorReturn(this, _getPrototypeOf(SquigglyAnnotation).call(this, parameters)); - _this20.data.annotationType = _util.AnnotationType.SQUIGGLY; - return _this20; - } - - return SquigglyAnnotation; -}(MarkupAnnotation); - -var StrikeOutAnnotation = -/*#__PURE__*/ -function (_MarkupAnnotation12) { - _inherits(StrikeOutAnnotation, _MarkupAnnotation12); - - function StrikeOutAnnotation(parameters) { - var _this21; - - _classCallCheck(this, StrikeOutAnnotation); - - _this21 = _possibleConstructorReturn(this, _getPrototypeOf(StrikeOutAnnotation).call(this, parameters)); - _this21.data.annotationType = _util.AnnotationType.STRIKEOUT; - return _this21; - } - - return StrikeOutAnnotation; -}(MarkupAnnotation); - -var StampAnnotation = -/*#__PURE__*/ -function (_MarkupAnnotation13) { - _inherits(StampAnnotation, _MarkupAnnotation13); - - function StampAnnotation(parameters) { - var _this22; - - _classCallCheck(this, StampAnnotation); - - _this22 = _possibleConstructorReturn(this, _getPrototypeOf(StampAnnotation).call(this, parameters)); - _this22.data.annotationType = _util.AnnotationType.STAMP; - return _this22; - } - - return StampAnnotation; -}(MarkupAnnotation); - -var FileAttachmentAnnotation = -/*#__PURE__*/ -function (_MarkupAnnotation14) { - _inherits(FileAttachmentAnnotation, _MarkupAnnotation14); - - function FileAttachmentAnnotation(parameters) { - var _this23; - - _classCallCheck(this, FileAttachmentAnnotation); - - _this23 = _possibleConstructorReturn(this, _getPrototypeOf(FileAttachmentAnnotation).call(this, parameters)); - var file = new _obj.FileSpec(parameters.dict.get('FS'), parameters.xref); - _this23.data.annotationType = _util.AnnotationType.FILEATTACHMENT; - _this23.data.file = file.serializable; - return _this23; - } - - return FileAttachmentAnnotation; -}(MarkupAnnotation); +exports.PredictorStream = PredictorStream; /***/ }), -/* 171 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 158 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.OperatorList = void 0; +})); +exports.RunLengthStream = void 0; -var _util = __w_pdfjs_require__(5); +var _decode_stream = __w_pdfjs_require__(144); -var QueueOptimizer = function QueueOptimizerClosure() { - function addState(parentState, pattern, checkFn, iterateFn, processFn) { - var state = parentState; - - for (var i = 0, ii = pattern.length - 1; i < ii; i++) { - var item = pattern[i]; - state = state[item] || (state[item] = []); - } - - state[pattern[pattern.length - 1]] = { - checkFn: checkFn, - iterateFn: iterateFn, - processFn: processFn - }; +class RunLengthStream extends _decode_stream.DecodeStream { + constructor(str, maybeLength) { + super(maybeLength); + this.str = str; + this.dict = str.dict; } - function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) { - var iFirstPIMXO = iFirstSave + 2; + readBlock() { + const repeatHeader = this.str.getBytes(2); - for (var i = 0; i < count; i++) { - var arg = argsArray[iFirstPIMXO + 4 * i]; - var imageMask = arg.length === 1 && arg[0]; + if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) { + this.eof = true; + return; + } - if (imageMask && imageMask.width === 1 && imageMask.height === 1 && (!imageMask.data.length || imageMask.data.length === 1 && imageMask.data[0] === 0)) { - fnArray[iFirstPIMXO + 4 * i] = _util.OPS.paintSolidColorImageMask; + let buffer; + let bufferLength = this.bufferLength; + let n = repeatHeader[0]; + + if (n < 128) { + buffer = this.ensureBuffer(bufferLength + n + 1); + buffer[bufferLength++] = repeatHeader[1]; + + if (n > 0) { + const source = this.str.getBytes(n); + buffer.set(source, bufferLength); + bufferLength += n; + } + } else { + n = 257 - n; + const b = repeatHeader[1]; + buffer = this.ensureBuffer(bufferLength + n + 1); + + for (let i = 0; i < n; i++) { + buffer[bufferLength++] = b; + } + } + + this.bufferLength = bufferLength; + } + +} + +exports.RunLengthStream = RunLengthStream; + +/***/ }), +/* 159 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Font = exports.ErrorFont = void 0; + +var _util = __w_pdfjs_require__(2); + +var _cff_parser = __w_pdfjs_require__(160); + +var _fonts_utils = __w_pdfjs_require__(163); + +var _unicode = __w_pdfjs_require__(165); + +var _glyphlist = __w_pdfjs_require__(164); + +var _encodings = __w_pdfjs_require__(162); + +var _standard_fonts = __w_pdfjs_require__(166); + +var _to_unicode_map = __w_pdfjs_require__(167); + +var _cff_font = __w_pdfjs_require__(168); + +var _font_renderer = __w_pdfjs_require__(169); + +var _metrics = __w_pdfjs_require__(170); + +var _glyf = __w_pdfjs_require__(171); + +var _cmap = __w_pdfjs_require__(141); + +var _opentype_file_builder = __w_pdfjs_require__(172); + +var _core_utils = __w_pdfjs_require__(131); + +var _stream = __w_pdfjs_require__(135); + +var _type1_font = __w_pdfjs_require__(173); + +const PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]]; +const PDF_GLYPH_SPACE_UNITS = 1000; +const EXPORT_DATA_PROPERTIES = ["ascent", "bbox", "black", "bold", "charProcOperatorList", "composite", "cssFontInfo", "data", "defaultVMetrics", "defaultWidth", "descent", "fallbackName", "fontMatrix", "fontType", "isType3Font", "italic", "loadedName", "mimetype", "missingFile", "name", "remeasure", "subtype", "type", "vertical"]; +const EXPORT_DATA_EXTRA_PROPERTIES = ["cMap", "defaultEncoding", "differences", "isMonospace", "isSerifFont", "isSymbolicFont", "seacMap", "toFontChar", "toUnicode", "vmetrics", "widths"]; + +function adjustWidths(properties) { + if (!properties.fontMatrix) { + return; + } + + if (properties.fontMatrix[0] === _util.FONT_IDENTITY_MATRIX[0]) { + return; + } + + const scale = 0.001 / properties.fontMatrix[0]; + const glyphsWidths = properties.widths; + + for (const glyph in glyphsWidths) { + glyphsWidths[glyph] *= scale; + } + + properties.defaultWidth *= scale; +} + +function adjustToUnicode(properties, builtInEncoding) { + if (properties.isInternalFont) { + return; + } + + if (builtInEncoding === properties.defaultEncoding) { + return; + } + + if (properties.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) { + return; + } + + const toUnicode = [], + glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + + for (const charCode in builtInEncoding) { + if (properties.hasIncludedToUnicodeMap) { + if (properties.toUnicode.has(charCode)) { + continue; + } + } else if (properties.hasEncoding) { + if (properties.differences.length === 0 || properties.differences[charCode] !== undefined) { + continue; + } + } + + const glyphName = builtInEncoding[charCode]; + const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap); + + if (unicode !== -1) { + toUnicode[charCode] = String.fromCharCode(unicode); + } + } + + if (toUnicode.length > 0) { + properties.toUnicode.amend(toUnicode); + } +} + +function amendFallbackToUnicode(properties) { + if (!properties.fallbackToUnicode) { + return; + } + + if (properties.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) { + return; + } + + const toUnicode = []; + + for (const charCode in properties.fallbackToUnicode) { + if (properties.toUnicode.has(charCode)) { + continue; + } + + toUnicode[charCode] = properties.fallbackToUnicode[charCode]; + } + + if (toUnicode.length > 0) { + properties.toUnicode.amend(toUnicode); + } +} + +class Glyph { + constructor(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) { + this.originalCharCode = originalCharCode; + this.fontChar = fontChar; + this.unicode = unicode; + this.accent = accent; + this.width = width; + this.vmetric = vmetric; + this.operatorListId = operatorListId; + this.isSpace = isSpace; + this.isInFont = isInFont; + const category = (0, _unicode.getCharUnicodeCategory)(unicode); + this.isWhitespace = category.isWhitespace; + this.isZeroWidthDiacritic = category.isZeroWidthDiacritic; + this.isInvisibleFormatMark = category.isInvisibleFormatMark; + } + + matchesForCache(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) { + return this.originalCharCode === originalCharCode && this.fontChar === fontChar && this.unicode === unicode && this.accent === accent && this.width === width && this.vmetric === vmetric && this.operatorListId === operatorListId && this.isSpace === isSpace && this.isInFont === isInFont; + } + +} + +function int16(b0, b1) { + return (b0 << 8) + b1; +} + +function writeSignedInt16(bytes, index, value) { + bytes[index + 1] = value; + bytes[index] = value >>> 8; +} + +function signedInt16(b0, b1) { + const value = (b0 << 8) + b1; + return value & 1 << 15 ? value - 0x10000 : value; +} + +function int32(b0, b1, b2, b3) { + return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; +} + +function string16(value) { + return String.fromCharCode(value >> 8 & 0xff, value & 0xff); +} + +function safeString16(value) { + if (value > 0x7fff) { + value = 0x7fff; + } else if (value < -0x8000) { + value = -0x8000; + } + + return String.fromCharCode(value >> 8 & 0xff, value & 0xff); +} + +function isTrueTypeFile(file) { + const header = file.peekBytes(4); + return (0, _core_utils.readUint32)(header, 0) === 0x00010000 || (0, _util.bytesToString)(header) === "true"; +} + +function isTrueTypeCollectionFile(file) { + const header = file.peekBytes(4); + return (0, _util.bytesToString)(header) === "ttcf"; +} + +function isOpenTypeFile(file) { + const header = file.peekBytes(4); + return (0, _util.bytesToString)(header) === "OTTO"; +} + +function isType1File(file) { + const header = file.peekBytes(2); + + if (header[0] === 0x25 && header[1] === 0x21) { + return true; + } + + if (header[0] === 0x80 && header[1] === 0x01) { + return true; + } + + return false; +} + +function isCFFFile(file) { + const header = file.peekBytes(4); + + if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) { + return true; + } + + return false; +} + +function getFontFileType(file, _ref) { + let { + type, + subtype, + composite + } = _ref; + let fileType, fileSubtype; + + if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) { + if (composite) { + fileType = "CIDFontType2"; + } else { + fileType = "TrueType"; + } + } else if (isOpenTypeFile(file)) { + if (composite) { + fileType = "CIDFontType2"; + } else { + fileType = "OpenType"; + } + } else if (isType1File(file)) { + if (composite) { + fileType = "CIDFontType0"; + } else { + fileType = type === "MMType1" ? "MMType1" : "Type1"; + } + } else if (isCFFFile(file)) { + if (composite) { + fileType = "CIDFontType0"; + fileSubtype = "CIDFontType0C"; + } else { + fileType = type === "MMType1" ? "MMType1" : "Type1"; + fileSubtype = "Type1C"; + } + } else { + (0, _util.warn)("getFontFileType: Unable to detect correct font file Type/Subtype."); + fileType = type; + fileSubtype = subtype; + } + + return [fileType, fileSubtype]; +} + +function applyStandardFontGlyphMap(map, glyphMap) { + for (const charCode in glyphMap) { + map[+charCode] = glyphMap[charCode]; + } +} + +function buildToFontChar(encoding, glyphsUnicodeMap, differences) { + const toFontChar = []; + let unicode; + + for (let i = 0, ii = encoding.length; i < ii; i++) { + unicode = (0, _unicode.getUnicodeForGlyph)(encoding[i], glyphsUnicodeMap); + + if (unicode !== -1) { + toFontChar[i] = unicode; + } + } + + for (const charCode in differences) { + unicode = (0, _unicode.getUnicodeForGlyph)(differences[charCode], glyphsUnicodeMap); + + if (unicode !== -1) { + toFontChar[+charCode] = unicode; + } + } + + return toFontChar; +} + +function convertCidString(charCode, cid) { + let shouldThrow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + switch (cid.length) { + case 1: + return cid.charCodeAt(0); + + case 2: + return cid.charCodeAt(0) << 8 | cid.charCodeAt(1); + } + + const msg = `Unsupported CID string (charCode ${charCode}): "${cid}".`; + + if (shouldThrow) { + throw new _util.FormatError(msg); + } + + (0, _util.warn)(msg); + return cid; +} + +function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId, toUnicode) { + const newMap = Object.create(null); + const toUnicodeExtraMap = new Map(); + const toFontChar = []; + const usedGlyphIds = new Set(); + let privateUseAreaIndex = 0; + const privateUseOffetStart = PRIVATE_USE_AREAS[privateUseAreaIndex][0]; + let nextAvailableFontCharCode = privateUseOffetStart; + let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1]; + + for (let originalCharCode in charCodeToGlyphId) { + originalCharCode |= 0; + let glyphId = charCodeToGlyphId[originalCharCode]; + + if (!hasGlyph(glyphId)) { + continue; + } + + if (nextAvailableFontCharCode > privateUseOffetEnd) { + privateUseAreaIndex++; + + if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) { + (0, _util.warn)("Ran out of space in font private use area."); + break; + } + + nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0]; + privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1]; + } + + const fontCharCode = nextAvailableFontCharCode++; + + if (glyphId === 0) { + glyphId = newGlyphZeroId; + } + + let unicode = toUnicode.get(originalCharCode); + + if (typeof unicode === "string") { + unicode = unicode.codePointAt(0); + } + + if (unicode && unicode < privateUseOffetStart && !usedGlyphIds.has(glyphId)) { + toUnicodeExtraMap.set(unicode, glyphId); + usedGlyphIds.add(glyphId); + } + + newMap[fontCharCode] = glyphId; + toFontChar[originalCharCode] = fontCharCode; + } + + return { + toFontChar, + charCodeToGlyphId: newMap, + toUnicodeExtraMap, + nextAvailableFontCharCode + }; +} + +function getRanges(glyphs, toUnicodeExtraMap, numGlyphs) { + const codes = []; + + for (const charCode in glyphs) { + if (glyphs[charCode] >= numGlyphs) { + continue; + } + + codes.push({ + fontCharCode: charCode | 0, + glyphId: glyphs[charCode] + }); + } + + if (toUnicodeExtraMap) { + for (const [unicode, glyphId] of toUnicodeExtraMap) { + if (glyphId >= numGlyphs) { continue; } + codes.push({ + fontCharCode: unicode, + glyphId + }); + } + } + + if (codes.length === 0) { + codes.push({ + fontCharCode: 0, + glyphId: 0 + }); + } + + codes.sort(function fontGetRangesSort(a, b) { + return a.fontCharCode - b.fontCharCode; + }); + const ranges = []; + const length = codes.length; + + for (let n = 0; n < length;) { + const start = codes[n].fontCharCode; + const codeIndices = [codes[n].glyphId]; + ++n; + let end = start; + + while (n < length && end + 1 === codes[n].fontCharCode) { + codeIndices.push(codes[n].glyphId); + ++end; + ++n; + + if (end === 0xffff) { + break; + } + } + + ranges.push([start, end, codeIndices]); + } + + return ranges; +} + +function createCmapTable(glyphs, toUnicodeExtraMap, numGlyphs) { + const ranges = getRanges(glyphs, toUnicodeExtraMap, numGlyphs); + const numTables = ranges.at(-1)[1] > 0xffff ? 2 : 1; + let cmap = "\x00\x00" + string16(numTables) + "\x00\x03" + "\x00\x01" + (0, _util.string32)(4 + numTables * 8); + let i, ii, j, jj; + + for (i = ranges.length - 1; i >= 0; --i) { + if (ranges[i][0] <= 0xffff) { break; } - - return count - i; } - var InitialState = []; - addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, _util.OPS.restore], null, function iterateInlineImageGroup(context, i) { - var fnArray = context.fnArray; - var iFirstSave = context.iCurr - 3; - var pos = (i - iFirstSave) % 4; + const bmpLength = i + 1; - switch (pos) { - case 0: - return fnArray[i] === _util.OPS.save; + if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) { + ranges[i][1] = 0xfffe; + } - case 1: - return fnArray[i] === _util.OPS.transform; + const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0; + const segCount = bmpLength + trailingRangesCount; - case 2: - return fnArray[i] === _util.OPS.paintInlineImageXObject; + const searchParams = _opentype_file_builder.OpenTypeFileBuilder.getSearchParams(segCount, 2); - case 3: - return fnArray[i] === _util.OPS.restore; - } + let startCount = ""; + let endCount = ""; + let idDeltas = ""; + let idRangeOffsets = ""; + let glyphsIds = ""; + let bias = 0; + let range, start, end, codes; - throw new Error("iterateInlineImageGroup - invalid pos: ".concat(pos)); - }, function foundInlineImageGroup(context, i) { - var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10; - var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200; - var MAX_WIDTH = 1000; - var IMAGE_PADDING = 1; - var fnArray = context.fnArray, - argsArray = context.argsArray; - var curr = context.iCurr; - var iFirstSave = curr - 3; - var iFirstTransform = curr - 2; - var iFirstPIIXO = curr - 1; - var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK); + for (i = 0, ii = bmpLength; i < ii; i++) { + range = ranges[i]; + start = range[0]; + end = range[1]; + startCount += string16(start); + endCount += string16(end); + codes = range[2]; + let contiguous = true; - if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) { - return i - (i - iFirstSave) % 4; - } - - var maxX = 0; - var map = [], - maxLineHeight = 0; - var currentX = IMAGE_PADDING, - currentY = IMAGE_PADDING; - var q; - - for (q = 0; q < count; q++) { - var transform = argsArray[iFirstTransform + (q << 2)]; - var img = argsArray[iFirstPIIXO + (q << 2)][0]; - - if (currentX + img.width > MAX_WIDTH) { - maxX = Math.max(maxX, currentX); - currentY += maxLineHeight + 2 * IMAGE_PADDING; - currentX = 0; - maxLineHeight = 0; - } - - map.push({ - transform: transform, - x: currentX, - y: currentY, - w: img.width, - h: img.height - }); - currentX += img.width + 2 * IMAGE_PADDING; - maxLineHeight = Math.max(maxLineHeight, img.height); - } - - var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING; - var imgHeight = currentY + maxLineHeight + IMAGE_PADDING; - var imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4); - var imgRowSize = imgWidth << 2; - - for (q = 0; q < count; q++) { - var data = argsArray[iFirstPIIXO + (q << 2)][0].data; - var rowSize = map[q].w << 2; - var dataOffset = 0; - var offset = map[q].x + map[q].y * imgWidth << 2; - imgData.set(data.subarray(0, rowSize), offset - imgRowSize); - - for (var k = 0, kk = map[q].h; k < kk; k++) { - imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset); - dataOffset += rowSize; - offset += imgRowSize; - } - - imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset); - - while (offset >= 0) { - data[offset - 4] = data[offset]; - data[offset - 3] = data[offset + 1]; - data[offset - 2] = data[offset + 2]; - data[offset - 1] = data[offset + 3]; - data[offset + rowSize] = data[offset + rowSize - 4]; - data[offset + rowSize + 1] = data[offset + rowSize - 3]; - data[offset + rowSize + 2] = data[offset + rowSize - 2]; - data[offset + rowSize + 3] = data[offset + rowSize - 1]; - offset -= imgRowSize; + for (j = 1, jj = codes.length; j < jj; ++j) { + if (codes[j] !== codes[j - 1] + 1) { + contiguous = false; + break; } } - fnArray.splice(iFirstSave, count * 4, _util.OPS.paintInlineImageXObjectGroup); - argsArray.splice(iFirstSave, count * 4, [{ - width: imgWidth, - height: imgHeight, - kind: _util.ImageKind.RGBA_32BPP, - data: imgData - }, map]); - return iFirstSave + 1; - }); - addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageMaskXObject, _util.OPS.restore], null, function iterateImageMaskGroup(context, i) { - var fnArray = context.fnArray; - var iFirstSave = context.iCurr - 3; - var pos = (i - iFirstSave) % 4; + if (!contiguous) { + const offset = (segCount - i) * 2 + bias * 2; + bias += end - start + 1; + idDeltas += string16(0); + idRangeOffsets += string16(offset); - switch (pos) { - case 0: - return fnArray[i] === _util.OPS.save; + for (j = 0, jj = codes.length; j < jj; ++j) { + glyphsIds += string16(codes[j]); + } + } else { + const startCode = codes[0]; + idDeltas += string16(startCode - start & 0xffff); + idRangeOffsets += string16(0); + } + } - case 1: - return fnArray[i] === _util.OPS.transform; + if (trailingRangesCount > 0) { + endCount += "\xFF\xFF"; + startCount += "\xFF\xFF"; + idDeltas += "\x00\x01"; + idRangeOffsets += "\x00\x00"; + } - case 2: - return fnArray[i] === _util.OPS.paintImageMaskXObject; + const format314 = "\x00\x00" + string16(2 * segCount) + string16(searchParams.range) + string16(searchParams.entry) + string16(searchParams.rangeShift) + endCount + "\x00\x00" + startCount + idDeltas + idRangeOffsets + glyphsIds; + let format31012 = ""; + let header31012 = ""; - case 3: - return fnArray[i] === _util.OPS.restore; + if (numTables > 1) { + cmap += "\x00\x03" + "\x00\x0A" + (0, _util.string32)(4 + numTables * 8 + 4 + format314.length); + format31012 = ""; + + for (i = 0, ii = ranges.length; i < ii; i++) { + range = ranges[i]; + start = range[0]; + codes = range[2]; + let code = codes[0]; + + for (j = 1, jj = codes.length; j < jj; ++j) { + if (codes[j] !== codes[j - 1] + 1) { + end = range[0] + j - 1; + format31012 += (0, _util.string32)(start) + (0, _util.string32)(end) + (0, _util.string32)(code); + start = end + 1; + code = codes[j]; + } + } + + format31012 += (0, _util.string32)(start) + (0, _util.string32)(range[1]) + (0, _util.string32)(code); } - throw new Error("iterateImageMaskGroup - invalid pos: ".concat(pos)); - }, function foundImageMaskGroup(context, i) { - var MIN_IMAGES_IN_MASKS_BLOCK = 10; - var MAX_IMAGES_IN_MASKS_BLOCK = 100; - var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000; - var fnArray = context.fnArray, - argsArray = context.argsArray; - var curr = context.iCurr; - var iFirstSave = curr - 3; - var iFirstTransform = curr - 2; - var iFirstPIMXO = curr - 1; - var count = Math.floor((i - iFirstSave) / 4); - count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray); + header31012 = "\x00\x0C" + "\x00\x00" + (0, _util.string32)(format31012.length + 16) + "\x00\x00\x00\x00" + (0, _util.string32)(format31012.length / 12); + } - if (count < MIN_IMAGES_IN_MASKS_BLOCK) { - return i - (i - iFirstSave) % 4; + return cmap + "\x00\x04" + string16(format314.length + 4) + format314 + header31012 + format31012; +} + +function validateOS2Table(os2, file) { + file.pos = (file.start || 0) + os2.offset; + const version = file.getUint16(); + file.skip(60); + const selection = file.getUint16(); + + if (version < 4 && selection & 0x0300) { + return false; + } + + const firstChar = file.getUint16(); + const lastChar = file.getUint16(); + + if (firstChar > lastChar) { + return false; + } + + file.skip(6); + const usWinAscent = file.getUint16(); + + if (usWinAscent === 0) { + return false; + } + + os2.data[8] = os2.data[9] = 0; + return true; +} + +function createOS2Table(properties, charstrings, override) { + override = override || { + unitsPerEm: 0, + yMax: 0, + yMin: 0, + ascent: 0, + descent: 0 + }; + let ulUnicodeRange1 = 0; + let ulUnicodeRange2 = 0; + let ulUnicodeRange3 = 0; + let ulUnicodeRange4 = 0; + let firstCharIndex = null; + let lastCharIndex = 0; + + if (charstrings) { + for (let code in charstrings) { + code |= 0; + + if (firstCharIndex > code || !firstCharIndex) { + firstCharIndex = code; + } + + if (lastCharIndex < code) { + lastCharIndex = code; + } + + const position = (0, _unicode.getUnicodeRangeFor)(code); + + if (position < 32) { + ulUnicodeRange1 |= 1 << position; + } else if (position < 64) { + ulUnicodeRange2 |= 1 << position - 32; + } else if (position < 96) { + ulUnicodeRange3 |= 1 << position - 64; + } else if (position < 123) { + ulUnicodeRange4 |= 1 << position - 96; + } else { + throw new _util.FormatError("Unicode ranges Bits > 123 are reserved for internal usage"); + } } - var q; - var isSameImage = false; - var iTransform, transformArgs; - var firstPIMXOArg0 = argsArray[iFirstPIMXO][0]; + if (lastCharIndex > 0xffff) { + lastCharIndex = 0xffff; + } + } else { + firstCharIndex = 0; + lastCharIndex = 255; + } - if (argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0) { - isSameImage = true; - var firstTransformArg0 = argsArray[iFirstTransform][0]; - var firstTransformArg3 = argsArray[iFirstTransform][3]; - iTransform = iFirstTransform + 4; - var iPIMXO = iFirstPIMXO + 4; + const bbox = properties.bbox || [0, 0, 0, 0]; + const unitsPerEm = override.unitsPerEm || 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0]; + const scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS; + const typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3])); + let typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1])); - for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) { - transformArgs = argsArray[iTransform]; + if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) { + typoDescent = -typoDescent; + } - if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== 0 || transformArgs[2] !== 0 || transformArgs[3] !== firstTransformArg3) { - if (q < MIN_IMAGES_IN_MASKS_BLOCK) { - isSameImage = false; - } else { - count = q; - } + const winAscent = override.yMax || typoAscent; + const winDescent = -override.yMin || -typoDescent; + return "\x00\x03" + "\x02\x24" + "\x01\xF4" + "\x00\x05" + "\x00\x00" + "\x02\x8A" + "\x02\xBB" + "\x00\x00" + "\x00\x8C" + "\x02\x8A" + "\x02\xBB" + "\x00\x00" + "\x01\xDF" + "\x00\x31" + "\x01\x02" + "\x00\x00" + "\x00\x00\x06" + String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + "\x00\x00\x00\x00\x00\x00" + (0, _util.string32)(ulUnicodeRange1) + (0, _util.string32)(ulUnicodeRange2) + (0, _util.string32)(ulUnicodeRange3) + (0, _util.string32)(ulUnicodeRange4) + "\x2A\x32\x31\x2A" + string16(properties.italicAngle ? 1 : 0) + string16(firstCharIndex || properties.firstChar) + string16(lastCharIndex || properties.lastChar) + string16(typoAscent) + string16(typoDescent) + "\x00\x64" + string16(winAscent) + string16(winDescent) + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + string16(properties.xHeight) + string16(properties.capHeight) + string16(0) + string16(firstCharIndex || properties.firstChar) + "\x00\x03"; +} +function createPostTable(properties) { + const angle = Math.floor(properties.italicAngle * 2 ** 16); + return "\x00\x03\x00\x00" + (0, _util.string32)(angle) + "\x00\x00" + "\x00\x00" + (0, _util.string32)(properties.fixedPitch ? 1 : 0) + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + "\x00\x00\x00\x00"; +} + +function createPostscriptName(name) { + return name.replace(/[^\x21-\x7E]|[[\](){}<>/%]/g, "").slice(0, 63); +} + +function createNameTable(name, proto) { + if (!proto) { + proto = [[], []]; + } + + const strings = [proto[0][0] || "Original licence", proto[0][1] || name, proto[0][2] || "Unknown", proto[0][3] || "uniqueID", proto[0][4] || name, proto[0][5] || "Version 0.11", proto[0][6] || createPostscriptName(name), proto[0][7] || "Unknown", proto[0][8] || "Unknown", proto[0][9] || "Unknown"]; + const stringsUnicode = []; + let i, ii, j, jj, str; + + for (i = 0, ii = strings.length; i < ii; i++) { + str = proto[1][i] || strings[i]; + const strBufUnicode = []; + + for (j = 0, jj = str.length; j < jj; j++) { + strBufUnicode.push(string16(str.charCodeAt(j))); + } + + stringsUnicode.push(strBufUnicode.join("")); + } + + const names = [strings, stringsUnicode]; + const platforms = ["\x00\x01", "\x00\x03"]; + const encodings = ["\x00\x00", "\x00\x01"]; + const languages = ["\x00\x00", "\x04\x09"]; + const namesRecordCount = strings.length * platforms.length; + let nameTable = "\x00\x00" + string16(namesRecordCount) + string16(namesRecordCount * 12 + 6); + let strOffset = 0; + + for (i = 0, ii = platforms.length; i < ii; i++) { + const strs = names[i]; + + for (j = 0, jj = strs.length; j < jj; j++) { + str = strs[j]; + const nameRecord = platforms[i] + encodings[i] + languages[i] + string16(j) + string16(str.length) + string16(strOffset); + nameTable += nameRecord; + strOffset += str.length; + } + } + + nameTable += strings.join("") + stringsUnicode.join(""); + return nameTable; +} + +class Font { + constructor(name, file, properties) { + this.name = name; + this.psName = null; + this.mimetype = null; + this.disableFontFace = false; + this.loadedName = properties.loadedName; + this.isType3Font = properties.isType3Font; + this.missingFile = false; + this.cssFontInfo = properties.cssFontInfo; + this._charsCache = Object.create(null); + this._glyphCache = Object.create(null); + let isSerifFont = !!(properties.flags & _fonts_utils.FontFlags.Serif); + + if (!isSerifFont && !properties.isSimulatedFlags) { + const baseName = name.replace(/[,_]/g, "-").split("-")[0], + serifFonts = (0, _standard_fonts.getSerifFonts)(); + + for (const namePart of baseName.split("+")) { + if (serifFonts[namePart]) { + isSerifFont = true; break; } } } - if (isSameImage) { - count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK); - var positions = new Float32Array(count * 2); - iTransform = iFirstTransform; + this.isSerifFont = isSerifFont; + this.isSymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Symbolic); + this.isMonospace = !!(properties.flags & _fonts_utils.FontFlags.FixedPitch); + let type = properties.type; + let subtype = properties.subtype; + this.type = type; + this.subtype = subtype; + let fallbackName = "sans-serif"; - for (q = 0; q < count; q++, iTransform += 4) { - transformArgs = argsArray[iTransform]; - positions[q << 1] = transformArgs[4]; - positions[(q << 1) + 1] = transformArgs[5]; - } - - fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat); - argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg3, positions]); - } else { - count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK); - var images = []; - - for (q = 0; q < count; q++) { - transformArgs = argsArray[iFirstTransform + (q << 2)]; - var maskParams = argsArray[iFirstPIMXO + (q << 2)][0]; - images.push({ - data: maskParams.data, - width: maskParams.width, - height: maskParams.height, - transform: transformArgs - }); - } - - fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectGroup); - argsArray.splice(iFirstSave, count * 4, [images]); + if (this.isMonospace) { + fallbackName = "monospace"; + } else if (this.isSerifFont) { + fallbackName = "serif"; } - return iFirstSave + 1; - }); - addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageXObject, _util.OPS.restore], function (context) { - var argsArray = context.argsArray; - var iFirstTransform = context.iCurr - 2; - return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0; - }, function iterateImageGroup(context, i) { - var fnArray = context.fnArray, - argsArray = context.argsArray; - var iFirstSave = context.iCurr - 3; - var pos = (i - iFirstSave) % 4; + this.fallbackName = fallbackName; + this.differences = properties.differences; + this.widths = properties.widths; + this.defaultWidth = properties.defaultWidth; + this.composite = properties.composite; + this.cMap = properties.cMap; + this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS; + this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS; + this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS; + this.lineHeight = this.ascent - this.descent; + this.fontMatrix = properties.fontMatrix; + this.bbox = properties.bbox; + this.defaultEncoding = properties.defaultEncoding; + this.toUnicode = properties.toUnicode; + this.toFontChar = []; - switch (pos) { - case 0: - return fnArray[i] === _util.OPS.save; + if (properties.type === "Type3") { + for (let charCode = 0; charCode < 256; charCode++) { + this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode]; + } - case 1: - if (fnArray[i] !== _util.OPS.transform) { - return false; - } - - var iFirstTransform = context.iCurr - 2; - var firstTransformArg0 = argsArray[iFirstTransform][0]; - var firstTransformArg3 = argsArray[iFirstTransform][3]; - - if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) { - return false; - } - - return true; - - case 2: - if (fnArray[i] !== _util.OPS.paintImageXObject) { - return false; - } - - var iFirstPIXO = context.iCurr - 1; - var firstPIXOArg0 = argsArray[iFirstPIXO][0]; - - if (argsArray[i][0] !== firstPIXOArg0) { - return false; - } - - return true; - - case 3: - return fnArray[i] === _util.OPS.restore; + this.fontType = _util.FontType.TYPE3; + return; } - throw new Error("iterateImageGroup - invalid pos: ".concat(pos)); - }, function (context, i) { - var MIN_IMAGES_IN_BLOCK = 3; - var MAX_IMAGES_IN_BLOCK = 1000; - var fnArray = context.fnArray, - argsArray = context.argsArray; - var curr = context.iCurr; - var iFirstSave = curr - 3; - var iFirstTransform = curr - 2; - var iFirstPIXO = curr - 1; - var firstPIXOArg0 = argsArray[iFirstPIXO][0]; - var firstTransformArg0 = argsArray[iFirstTransform][0]; - var firstTransformArg3 = argsArray[iFirstTransform][3]; - var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK); + this.cidEncoding = properties.cidEncoding || ""; + this.vertical = !!properties.vertical; - if (count < MIN_IMAGES_IN_BLOCK) { - return i - (i - iFirstSave) % 4; + if (this.vertical) { + this.vmetrics = properties.vmetrics; + this.defaultVMetrics = properties.defaultVMetrics; } - var positions = new Float32Array(count * 2); - var iTransform = iFirstTransform; + if (!file || file.isEmpty) { + if (file) { + (0, _util.warn)('Font file is empty in "' + name + '" (' + this.loadedName + ")"); + } - for (var q = 0; q < count; q++, iTransform += 4) { - var transformArgs = argsArray[iTransform]; - positions[q << 1] = transformArgs[4]; - positions[(q << 1) + 1] = transformArgs[5]; + this.fallbackToSystemFont(properties); + return; } - var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions]; - fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageXObjectRepeat); - argsArray.splice(iFirstSave, count * 4, args); - return iFirstSave + 1; - }); - addState(InitialState, [_util.OPS.beginText, _util.OPS.setFont, _util.OPS.setTextMatrix, _util.OPS.showText, _util.OPS.endText], null, function iterateShowTextGroup(context, i) { - var fnArray = context.fnArray, - argsArray = context.argsArray; - var iFirstSave = context.iCurr - 4; - var pos = (i - iFirstSave) % 5; + [type, subtype] = getFontFileType(file, properties); - switch (pos) { - case 0: - return fnArray[i] === _util.OPS.beginText; - - case 1: - return fnArray[i] === _util.OPS.setFont; - - case 2: - return fnArray[i] === _util.OPS.setTextMatrix; - - case 3: - if (fnArray[i] !== _util.OPS.showText) { - return false; - } - - var iFirstSetFont = context.iCurr - 3; - var firstSetFontArg0 = argsArray[iFirstSetFont][0]; - var firstSetFontArg1 = argsArray[iFirstSetFont][1]; - - if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) { - return false; - } - - return true; - - case 4: - return fnArray[i] === _util.OPS.endText; + if (type !== this.type || subtype !== this.subtype) { + (0, _util.info)("Inconsistent font file Type/SubType, expected: " + `${this.type}/${this.subtype} but found: ${type}/${subtype}.`); } - throw new Error("iterateShowTextGroup - invalid pos: ".concat(pos)); - }, function (context, i) { - var MIN_CHARS_IN_BLOCK = 3; - var MAX_CHARS_IN_BLOCK = 1000; - var fnArray = context.fnArray, - argsArray = context.argsArray; - var curr = context.iCurr; - var iFirstBeginText = curr - 4; - var iFirstSetFont = curr - 3; - var iFirstSetTextMatrix = curr - 2; - var iFirstShowText = curr - 1; - var iFirstEndText = curr; - var firstSetFontArg0 = argsArray[iFirstSetFont][0]; - var firstSetFontArg1 = argsArray[iFirstSetFont][1]; - var count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK); - - if (count < MIN_CHARS_IN_BLOCK) { - return i - (i - iFirstBeginText) % 5; - } - - var iFirst = iFirstBeginText; - - if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) { - count++; - iFirst -= 5; - } - - var iEndText = iFirst + 4; - - for (var q = 1; q < count; q++) { - fnArray.splice(iEndText, 3); - argsArray.splice(iEndText, 3); - iEndText += 2; - } - - return iEndText + 1; - }); - - function QueueOptimizer(queue) { - this.queue = queue; - this.state = null; - this.context = { - iCurr: 0, - fnArray: queue.fnArray, - argsArray: queue.argsArray - }; - this.match = null; - this.lastProcessed = 0; - } - - QueueOptimizer.prototype = { - _optimize: function _optimize() { - var fnArray = this.queue.fnArray; - var i = this.lastProcessed, - ii = fnArray.length; - var state = this.state; - var match = this.match; - - if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) { - this.lastProcessed = ii; - return; - } - - var context = this.context; - - while (i < ii) { - if (match) { - var iterate = (0, match.iterateFn)(context, i); - - if (iterate) { - i++; - continue; - } - - i = (0, match.processFn)(context, i + 1); - ii = fnArray.length; - match = null; - state = null; - - if (i >= ii) { - break; - } - } - - state = (state || InitialState)[fnArray[i]]; - - if (!state || Array.isArray(state)) { - i++; - continue; - } - - context.iCurr = i; - i++; - - if (state.checkFn && !(0, state.checkFn)(context)) { - state = null; - continue; - } - - match = state; - state = null; - } - - this.state = state; - this.match = match; - this.lastProcessed = i; - }, - push: function push(fn, args) { - this.queue.fnArray.push(fn); - this.queue.argsArray.push(args); - - this._optimize(); - }, - flush: function flush() { - while (this.match) { - var length = this.queue.fnArray.length; - this.lastProcessed = (0, this.match.processFn)(this.context, length); - this.match = null; - this.state = null; - - this._optimize(); - } - }, - reset: function reset() { - this.state = null; - this.match = null; - this.lastProcessed = 0; - } - }; - return QueueOptimizer; -}(); - -var NullOptimizer = function NullOptimizerClosure() { - function NullOptimizer(queue) { - this.queue = queue; - } - - NullOptimizer.prototype = { - push: function push(fn, args) { - this.queue.fnArray.push(fn); - this.queue.argsArray.push(args); - }, - flush: function flush() {}, - reset: function reset() {} - }; - return NullOptimizer; -}(); - -var OperatorList = function OperatorListClosure() { - var CHUNK_SIZE = 1000; - var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5; - - function OperatorList(intent, messageHandler, pageIndex) { - this.messageHandler = messageHandler; - this.fnArray = []; - this.argsArray = []; - - if (messageHandler && intent !== 'oplist') { - this.optimizer = new QueueOptimizer(this); - } else { - this.optimizer = new NullOptimizer(this); - } - - this.dependencies = Object.create(null); - this._totalLength = 0; - this.pageIndex = pageIndex; - this.intent = intent; - this.weight = 0; - } - - OperatorList.prototype = { - get length() { - return this.argsArray.length; - }, - - get totalLength() { - return this._totalLength + this.length; - }, - - addOp: function addOp(fn, args) { - this.optimizer.push(fn, args); - this.weight++; - - if (this.messageHandler) { - if (this.weight >= CHUNK_SIZE) { - this.flush(); - } else if (this.weight >= CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === _util.OPS.endText)) { - this.flush(); - } - } - }, - addDependency: function addDependency(dependency) { - if (dependency in this.dependencies) { - return; - } - - this.dependencies[dependency] = true; - this.addOp(_util.OPS.dependency, [dependency]); - }, - addDependencies: function addDependencies(dependencies) { - for (var key in dependencies) { - this.addDependency(key); - } - }, - addOpList: function addOpList(opList) { - Object.assign(this.dependencies, opList.dependencies); - - for (var i = 0, ii = opList.length; i < ii; i++) { - this.addOp(opList.fnArray[i], opList.argsArray[i]); - } - }, - getIR: function getIR() { - return { - fnArray: this.fnArray, - argsArray: this.argsArray, - length: this.length - }; - }, - - get _transfers() { - var transfers = []; - var fnArray = this.fnArray, - argsArray = this.argsArray, - length = this.length; - - for (var i = 0; i < length; i++) { - switch (fnArray[i]) { - case _util.OPS.paintInlineImageXObject: - case _util.OPS.paintInlineImageXObjectGroup: - case _util.OPS.paintImageMaskXObject: - var arg = argsArray[i][0]; - ; - - if (!arg.cached) { - transfers.push(arg.data.buffer); - } - - break; - } - } - - return transfers; - }, - - flush: function flush() { - var lastChunk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - this.optimizer.flush(); - var length = this.length; - this._totalLength += length; - this.messageHandler.send('RenderPageChunk', { - operatorList: { - fnArray: this.fnArray, - argsArray: this.argsArray, - lastChunk: lastChunk, - length: length - }, - pageIndex: this.pageIndex, - intent: this.intent - }, this._transfers); - this.dependencies = Object.create(null); - this.fnArray.length = 0; - this.argsArray.length = 0; - this.weight = 0; - this.optimizer.reset(); - } - }; - return OperatorList; -}(); - -exports.OperatorList = OperatorList; - -/***/ }), -/* 172 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PartialEvaluator = void 0; - -var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2)); - -var _util = __w_pdfjs_require__(5); - -var _cmap = __w_pdfjs_require__(173); - -var _primitives = __w_pdfjs_require__(151); - -var _fonts = __w_pdfjs_require__(174); - -var _encodings = __w_pdfjs_require__(177); - -var _unicode = __w_pdfjs_require__(180); - -var _standard_fonts = __w_pdfjs_require__(179); - -var _pattern = __w_pdfjs_require__(183); - -var _parser = __w_pdfjs_require__(157); - -var _bidi = __w_pdfjs_require__(184); - -var _colorspace = __w_pdfjs_require__(169); - -var _stream = __w_pdfjs_require__(158); - -var _glyphlist = __w_pdfjs_require__(178); - -var _core_utils = __w_pdfjs_require__(154); - -var _metrics = __w_pdfjs_require__(185); - -var _function = __w_pdfjs_require__(186); - -var _jpeg_stream = __w_pdfjs_require__(164); - -var _murmurhash = __w_pdfjs_require__(188); - -var _image_utils = __w_pdfjs_require__(189); - -var _operator_list = __w_pdfjs_require__(171); - -var _image = __w_pdfjs_require__(190); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var PartialEvaluator = function PartialEvaluatorClosure() { - var DefaultPartialEvaluatorOptions = { - forceDataSchema: false, - maxImageSize: -1, - disableFontFace: false, - nativeImageDecoderSupport: _util.NativeImageDecoding.DECODE, - ignoreErrors: false, - isEvalSupported: true - }; - - function PartialEvaluator(_ref) { - var _this = this; - - var xref = _ref.xref, - handler = _ref.handler, - pageIndex = _ref.pageIndex, - idFactory = _ref.idFactory, - fontCache = _ref.fontCache, - builtInCMapCache = _ref.builtInCMapCache, - _ref$options = _ref.options, - options = _ref$options === void 0 ? null : _ref$options, - pdfFunctionFactory = _ref.pdfFunctionFactory; - this.xref = xref; - this.handler = handler; - this.pageIndex = pageIndex; - this.idFactory = idFactory; - this.fontCache = fontCache; - this.builtInCMapCache = builtInCMapCache; - this.options = options || DefaultPartialEvaluatorOptions; - this.pdfFunctionFactory = pdfFunctionFactory; - this.parsingType3Font = false; - - this.fetchBuiltInCMap = - /*#__PURE__*/ - function () { - var _ref2 = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee(name) { - var data; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (!_this.builtInCMapCache.has(name)) { - _context.next = 2; - break; - } - - return _context.abrupt("return", _this.builtInCMapCache.get(name)); - - case 2: - _context.next = 4; - return _this.handler.sendWithPromise('FetchBuiltInCMap', { - name: name - }); - - case 4: - data = _context.sent; - - if (data.compressionType !== _util.CMapCompressionType.NONE) { - _this.builtInCMapCache.set(name, data); - } - - return _context.abrupt("return", data); - - case 7: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - - return function (_x) { - return _ref2.apply(this, arguments); - }; - }(); - } - - var TIME_SLOT_DURATION_MS = 20; - var CHECK_TIME_EVERY = 100; - - function TimeSlotManager() { - this.reset(); - } - - TimeSlotManager.prototype = { - check: function TimeSlotManager_check() { - if (++this.checked < CHECK_TIME_EVERY) { - return false; - } - - this.checked = 0; - return this.endTime <= Date.now(); - }, - reset: function TimeSlotManager_reset() { - this.endTime = Date.now() + TIME_SLOT_DURATION_MS; - this.checked = 0; - } - }; - - function normalizeBlendMode(value) { - if (!(0, _primitives.isName)(value)) { - return 'source-over'; - } - - switch (value.name) { - case 'Normal': - case 'Compatible': - return 'source-over'; - - case 'Multiply': - return 'multiply'; - - case 'Screen': - return 'screen'; - - case 'Overlay': - return 'overlay'; - - case 'Darken': - return 'darken'; - - case 'Lighten': - return 'lighten'; - - case 'ColorDodge': - return 'color-dodge'; - - case 'ColorBurn': - return 'color-burn'; - - case 'HardLight': - return 'hard-light'; - - case 'SoftLight': - return 'soft-light'; - - case 'Difference': - return 'difference'; - - case 'Exclusion': - return 'exclusion'; - - case 'Hue': - return 'hue'; - - case 'Saturation': - return 'saturation'; - - case 'Color': - return 'color'; - - case 'Luminosity': - return 'luminosity'; - } - - (0, _util.warn)('Unsupported blend mode: ' + value.name); - return 'source-over'; - } - - var deferred = Promise.resolve(); - var TILING_PATTERN = 1, - SHADING_PATTERN = 2; - PartialEvaluator.prototype = { - clone: function clone() { - var newOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DefaultPartialEvaluatorOptions; - var newEvaluator = Object.create(this); - newEvaluator.options = newOptions; - return newEvaluator; - }, - hasBlendModes: function PartialEvaluator_hasBlendModes(resources) { - if (!(0, _primitives.isDict)(resources)) { - return false; - } - - var processed = Object.create(null); - - if (resources.objId) { - processed[resources.objId] = true; - } - - var nodes = [resources], - xref = this.xref; - - while (nodes.length) { - var key, i, ii; - var node = nodes.shift(); - var graphicStates = node.get('ExtGState'); - - if ((0, _primitives.isDict)(graphicStates)) { - var graphicStatesKeys = graphicStates.getKeys(); - - for (i = 0, ii = graphicStatesKeys.length; i < ii; i++) { - key = graphicStatesKeys[i]; - var graphicState = graphicStates.get(key); - var bm = graphicState.get('BM'); - - if ((0, _primitives.isName)(bm) && bm.name !== 'Normal') { - return true; - } - } - } - - var xObjects = node.get('XObject'); - - if (!(0, _primitives.isDict)(xObjects)) { - continue; - } - - var xObjectsKeys = xObjects.getKeys(); - - for (i = 0, ii = xObjectsKeys.length; i < ii; i++) { - key = xObjectsKeys[i]; - var xObject = xObjects.getRaw(key); - - if ((0, _primitives.isRef)(xObject)) { - if (processed[xObject.toString()]) { - continue; - } - - xObject = xref.fetch(xObject); - } - - if (!(0, _primitives.isStream)(xObject)) { - continue; - } - - if (xObject.dict.objId) { - if (processed[xObject.dict.objId]) { - continue; - } - - processed[xObject.dict.objId] = true; - } - - var xResources = xObject.dict.get('Resources'); - - if ((0, _primitives.isDict)(xResources) && (!xResources.objId || !processed[xResources.objId])) { - nodes.push(xResources); - - if (xResources.objId) { - processed[xResources.objId] = true; - } - } - } - } - - return false; - }, - buildFormXObject: function PartialEvaluator_buildFormXObject(resources, xobj, smask, operatorList, task, initialState) { - var dict = xobj.dict; - var matrix = dict.getArray('Matrix'); - var bbox = dict.getArray('BBox'); - - if (Array.isArray(bbox) && bbox.length === 4) { - bbox = _util.Util.normalizeRect(bbox); - } else { - bbox = null; - } - - var group = dict.get('Group'); - - if (group) { - var groupOptions = { - matrix: matrix, - bbox: bbox, - smask: smask, - isolated: false, - knockout: false - }; - var groupSubtype = group.get('S'); - var colorSpace = null; - - if ((0, _primitives.isName)(groupSubtype, 'Transparency')) { - groupOptions.isolated = group.get('I') || false; - groupOptions.knockout = group.get('K') || false; - - if (group.has('CS')) { - colorSpace = _colorspace.ColorSpace.parse(group.get('CS'), this.xref, resources, this.pdfFunctionFactory); - } - } - - if (smask && smask.backdrop) { - colorSpace = colorSpace || _colorspace.ColorSpace.singletons.rgb; - smask.backdrop = colorSpace.getRgb(smask.backdrop, 0); - } - - operatorList.addOp(_util.OPS.beginGroup, [groupOptions]); - } - - operatorList.addOp(_util.OPS.paintFormXObjectBegin, [matrix, bbox]); - return this.getOperatorList({ - stream: xobj, - task: task, - resources: dict.get('Resources') || resources, - operatorList: operatorList, - initialState: initialState - }).then(function () { - operatorList.addOp(_util.OPS.paintFormXObjectEnd, []); - - if (group) { - operatorList.addOp(_util.OPS.endGroup, [groupOptions]); - } - }); - }, - buildPaintImageXObject: function () { - var _buildPaintImageXObject = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee2(_ref3) { - var _this2 = this; - - var resources, image, _ref3$isInline, isInline, operatorList, cacheKey, imageCache, _ref3$forceDisableNat, forceDisableNativeImageDecoder, dict, w, h, maxImageSize, imageMask, imgData, args, width, height, bitStrideLength, imgArray, decode, softMask, mask, SMALL_IMAGE_DIMENSIONS, imageObj, nativeImageDecoderSupport, objId, nativeImageDecoder, imgPromise; - - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - resources = _ref3.resources, image = _ref3.image, _ref3$isInline = _ref3.isInline, isInline = _ref3$isInline === void 0 ? false : _ref3$isInline, operatorList = _ref3.operatorList, cacheKey = _ref3.cacheKey, imageCache = _ref3.imageCache, _ref3$forceDisableNat = _ref3.forceDisableNativeImageDecoder, forceDisableNativeImageDecoder = _ref3$forceDisableNat === void 0 ? false : _ref3$forceDisableNat; - dict = image.dict; - w = dict.get('Width', 'W'); - h = dict.get('Height', 'H'); - - if (!(!(w && (0, _util.isNum)(w)) || !(h && (0, _util.isNum)(h)))) { - _context2.next = 7; - break; - } - - (0, _util.warn)('Image dimensions are missing, or not numbers.'); - return _context2.abrupt("return", undefined); - - case 7: - maxImageSize = this.options.maxImageSize; - - if (!(maxImageSize !== -1 && w * h > maxImageSize)) { - _context2.next = 11; - break; - } - - (0, _util.warn)('Image exceeded maximum allowed size and was removed.'); - return _context2.abrupt("return", undefined); - - case 11: - imageMask = dict.get('ImageMask', 'IM') || false; - - if (!imageMask) { - _context2.next = 24; - break; - } - - width = dict.get('Width', 'W'); - height = dict.get('Height', 'H'); - bitStrideLength = width + 7 >> 3; - imgArray = image.getBytes(bitStrideLength * height, true); - decode = dict.getArray('Decode', 'D'); - imgData = _image.PDFImage.createMask({ - imgArray: imgArray, - width: width, - height: height, - imageIsFromDecodeStream: image instanceof _stream.DecodeStream, - inverseDecode: !!decode && decode[0] > 0 - }); - imgData.cached = !!cacheKey; - args = [imgData]; - operatorList.addOp(_util.OPS.paintImageMaskXObject, args); - - if (cacheKey) { - imageCache[cacheKey] = { - fn: _util.OPS.paintImageMaskXObject, - args: args - }; - } - - return _context2.abrupt("return", undefined); - - case 24: - softMask = dict.get('SMask', 'SM') || false; - mask = dict.get('Mask') || false; - SMALL_IMAGE_DIMENSIONS = 200; - - if (!(isInline && !softMask && !mask && !(image instanceof _jpeg_stream.JpegStream) && w + h < SMALL_IMAGE_DIMENSIONS)) { - _context2.next = 32; - break; - } - - imageObj = new _image.PDFImage({ - xref: this.xref, - res: resources, - image: image, - isInline: isInline, - pdfFunctionFactory: this.pdfFunctionFactory - }); - imgData = imageObj.createImageData(true); - operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]); - return _context2.abrupt("return", undefined); - - case 32: - nativeImageDecoderSupport = forceDisableNativeImageDecoder ? _util.NativeImageDecoding.NONE : this.options.nativeImageDecoderSupport; - objId = "img_".concat(this.idFactory.createObjId()); - - if (this.parsingType3Font) { - (0, _util.assert)(nativeImageDecoderSupport === _util.NativeImageDecoding.NONE, 'Type3 image resources should be completely decoded in the worker.'); - objId = "".concat(this.idFactory.getDocId(), "_type3res_").concat(objId); - } - - if (!(nativeImageDecoderSupport !== _util.NativeImageDecoding.NONE && !softMask && !mask && image instanceof _jpeg_stream.JpegStream && _image_utils.NativeImageDecoder.isSupported(image, this.xref, resources, this.pdfFunctionFactory))) { - _context2.next = 37; - break; - } - - return _context2.abrupt("return", this.handler.sendWithPromise('obj', [objId, this.pageIndex, 'JpegStream', image.getIR(this.options.forceDataSchema)]).then(function () { - operatorList.addDependency(objId); - args = [objId, w, h]; - operatorList.addOp(_util.OPS.paintJpegXObject, args); - - if (cacheKey) { - imageCache[cacheKey] = { - fn: _util.OPS.paintJpegXObject, - args: args - }; - } - }, function (reason) { - (0, _util.warn)('Native JPEG decoding failed -- trying to recover: ' + (reason && reason.message)); - return _this2.buildPaintImageXObject({ - resources: resources, - image: image, - isInline: isInline, - operatorList: operatorList, - cacheKey: cacheKey, - imageCache: imageCache, - forceDisableNativeImageDecoder: true - }); - })); - - case 37: - nativeImageDecoder = null; - - if (nativeImageDecoderSupport === _util.NativeImageDecoding.DECODE && (image instanceof _jpeg_stream.JpegStream || mask instanceof _jpeg_stream.JpegStream || softMask instanceof _jpeg_stream.JpegStream)) { - nativeImageDecoder = new _image_utils.NativeImageDecoder({ - xref: this.xref, - resources: resources, - handler: this.handler, - forceDataSchema: this.options.forceDataSchema, - pdfFunctionFactory: this.pdfFunctionFactory - }); - } - - operatorList.addDependency(objId); - args = [objId, w, h]; - imgPromise = _image.PDFImage.buildImage({ - handler: this.handler, - xref: this.xref, - res: resources, - image: image, - isInline: isInline, - nativeDecoder: nativeImageDecoder, - pdfFunctionFactory: this.pdfFunctionFactory - }).then(function (imageObj) { - var imgData = imageObj.createImageData(false); - - if (_this2.parsingType3Font) { - return _this2.handler.sendWithPromise('commonobj', [objId, 'FontType3Res', imgData], [imgData.data.buffer]); - } - - _this2.handler.send('obj', [objId, _this2.pageIndex, 'Image', imgData], [imgData.data.buffer]); - - return undefined; - })["catch"](function (reason) { - (0, _util.warn)('Unable to decode image: ' + reason); - - if (_this2.parsingType3Font) { - return _this2.handler.sendWithPromise('commonobj', [objId, 'FontType3Res', null]); - } - - _this2.handler.send('obj', [objId, _this2.pageIndex, 'Image', null]); - - return undefined; - }); - - if (!this.parsingType3Font) { - _context2.next = 45; - break; - } - - _context2.next = 45; - return imgPromise; - - case 45: - operatorList.addOp(_util.OPS.paintImageXObject, args); - - if (cacheKey) { - imageCache[cacheKey] = { - fn: _util.OPS.paintImageXObject, - args: args - }; - } - - return _context2.abrupt("return", undefined); - - case 48: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function buildPaintImageXObject(_x2) { - return _buildPaintImageXObject.apply(this, arguments); - } - - return buildPaintImageXObject; - }(), - handleSMask: function PartialEvaluator_handleSmask(smask, resources, operatorList, task, stateManager) { - var smaskContent = smask.get('G'); - var smaskOptions = { - subtype: smask.get('S').name, - backdrop: smask.get('BC') - }; - var transferObj = smask.get('TR'); - - if ((0, _function.isPDFFunction)(transferObj)) { - var transferFn = this.pdfFunctionFactory.create(transferObj); - var transferMap = new Uint8Array(256); - var tmp = new Float32Array(1); - - for (var i = 0; i < 256; i++) { - tmp[0] = i / 255; - transferFn(tmp, 0, tmp, 0); - transferMap[i] = tmp[0] * 255 | 0; - } - - smaskOptions.transferMap = transferMap; - } - - return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone()); - }, - handleTilingType: function handleTilingType(fn, args, resources, pattern, patternDict, operatorList, task) { - var _this3 = this; - - var tilingOpList = new _operator_list.OperatorList(); - var resourcesArray = [patternDict.get('Resources'), resources]; - - var patternResources = _primitives.Dict.merge(this.xref, resourcesArray); - - return this.getOperatorList({ - stream: pattern, - task: task, - resources: patternResources, - operatorList: tilingOpList - }).then(function () { - return (0, _pattern.getTilingPatternIR)({ - fnArray: tilingOpList.fnArray, - argsArray: tilingOpList.argsArray - }, patternDict, args); - }).then(function (tilingPatternIR) { - operatorList.addDependencies(tilingOpList.dependencies); - operatorList.addOp(fn, tilingPatternIR); - }, function (reason) { - if (_this3.options.ignoreErrors) { - _this3.handler.send('UnsupportedFeature', { - featureId: _util.UNSUPPORTED_FEATURES.unknown - }); - - (0, _util.warn)("handleTilingType - ignoring pattern: \"".concat(reason, "\".")); - return; - } - - throw reason; - }); - }, - handleSetFont: function PartialEvaluator_handleSetFont(resources, fontArgs, fontRef, operatorList, task, state) { - var _this4 = this; - - var fontName; - - if (fontArgs) { - fontArgs = fontArgs.slice(); - fontName = fontArgs[0].name; - } - - return this.loadFont(fontName, fontRef, resources).then(function (translated) { - if (!translated.font.isType3Font) { - return translated; - } - - return translated.loadType3Data(_this4, resources, operatorList, task).then(function () { - return translated; - })["catch"](function (reason) { - _this4.handler.send('UnsupportedFeature', { - featureId: _util.UNSUPPORTED_FEATURES.font - }); - - return new TranslatedFont('g_font_error', new _fonts.ErrorFont('Type3 font load error: ' + reason), translated.font); - }); - }).then(function (translated) { - state.font = translated.font; - translated.send(_this4.handler); - return translated.loadedName; - }); - }, - handleText: function handleText(chars, state) { - var font = state.font; - var glyphs = font.charsToGlyphs(chars); - - if (font.data) { - var isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); - - if (isAddToPathSet || state.fillColorSpace.name === 'Pattern' || font.disableFontFace || this.options.disableFontFace) { - PartialEvaluator.buildFontPaths(font, glyphs, this.handler); - } - } - - return glyphs; - }, - setGState: function PartialEvaluator_setGState(resources, gState, operatorList, task, stateManager) { - var _this5 = this; - - var gStateObj = []; - var gStateKeys = gState.getKeys(); - var promise = Promise.resolve(); - - var _loop = function _loop() { - var key = gStateKeys[i]; - var value = gState.get(key); - - switch (key) { - case 'Type': - break; - - case 'LW': - case 'LC': - case 'LJ': - case 'ML': - case 'D': - case 'RI': - case 'FL': - case 'CA': - case 'ca': - gStateObj.push([key, value]); - break; - - case 'Font': - promise = promise.then(function () { - return _this5.handleSetFont(resources, null, value[0], operatorList, task, stateManager.state).then(function (loadedName) { - operatorList.addDependency(loadedName); - gStateObj.push([key, [loadedName, value[1]]]); - }); - }); - break; - - case 'BM': - gStateObj.push([key, normalizeBlendMode(value)]); - break; - - case 'SMask': - if ((0, _primitives.isName)(value, 'None')) { - gStateObj.push([key, false]); - break; - } - - if ((0, _primitives.isDict)(value)) { - promise = promise.then(function () { - return _this5.handleSMask(value, resources, operatorList, task, stateManager); - }); - gStateObj.push([key, true]); - } else { - (0, _util.warn)('Unsupported SMask type'); - } - - break; - - case 'OP': - case 'op': - case 'OPM': - case 'BG': - case 'BG2': - case 'UCR': - case 'UCR2': - case 'TR': - case 'TR2': - case 'HT': - case 'SM': - case 'SA': - case 'AIS': - case 'TK': - (0, _util.info)('graphic state operator ' + key); - break; - - default: - (0, _util.info)('Unknown graphic state operator ' + key); - break; - } - }; - - for (var i = 0, ii = gStateKeys.length; i < ii; i++) { - _loop(); - } - - return promise.then(function () { - if (gStateObj.length > 0) { - operatorList.addOp(_util.OPS.setGState, [gStateObj]); - } - }); - }, - loadFont: function PartialEvaluator_loadFont(fontName, font, resources) { - var _this6 = this; - - function errorFont() { - return Promise.resolve(new TranslatedFont('g_font_error', new _fonts.ErrorFont('Font ' + fontName + ' is not available'), font)); - } - - var fontRef, - xref = this.xref; - - if (font) { - if (!(0, _primitives.isRef)(font)) { - throw new Error('The "font" object should be a reference.'); - } - - fontRef = font; - } else { - var fontRes = resources.get('Font'); - - if (fontRes) { - fontRef = fontRes.getRaw(fontName); - } else { - (0, _util.warn)('fontRes not available'); - return errorFont(); - } - } - - if (!fontRef) { - (0, _util.warn)('fontRef not available'); - return errorFont(); - } - - if (this.fontCache.has(fontRef)) { - return this.fontCache.get(fontRef); - } - - font = xref.fetchIfRef(fontRef); - - if (!(0, _primitives.isDict)(font)) { - return errorFont(); - } - - if (font.translated) { - return font.translated; - } - - var fontCapability = (0, _util.createPromiseCapability)(); - var preEvaluatedFont = this.preEvaluateFont(font); - var descriptor = preEvaluatedFont.descriptor, - hash = preEvaluatedFont.hash; - var fontRefIsRef = (0, _primitives.isRef)(fontRef), - fontID; - - if (fontRefIsRef) { - fontID = fontRef.toString(); - } - - if (hash && (0, _primitives.isDict)(descriptor)) { - if (!descriptor.fontAliases) { - descriptor.fontAliases = Object.create(null); - } - - var fontAliases = descriptor.fontAliases; - - if (fontAliases[hash]) { - var aliasFontRef = fontAliases[hash].aliasRef; - - if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) { - this.fontCache.putAlias(fontRef, aliasFontRef); - return this.fontCache.get(fontRef); - } - } else { - fontAliases[hash] = { - fontID: _fonts.Font.getFontID() - }; - } - - if (fontRefIsRef) { - fontAliases[hash].aliasRef = fontRef; - } - - fontID = fontAliases[hash].fontID; - } - - if (fontRefIsRef) { - this.fontCache.put(fontRef, fontCapability.promise); - } else { - if (!fontID) { - fontID = this.idFactory.createObjId(); - } - - this.fontCache.put("id_".concat(fontID), fontCapability.promise); - } - - (0, _util.assert)(fontID, 'The "fontID" must be defined.'); - font.loadedName = "".concat(this.idFactory.getDocId(), "_f").concat(fontID); - font.translated = fontCapability.promise; - var translatedPromise; - - try { - translatedPromise = this.translateFont(preEvaluatedFont); - } catch (e) { - translatedPromise = Promise.reject(e); - } - - translatedPromise.then(function (translatedFont) { - if (translatedFont.fontType !== undefined) { - var xrefFontStats = xref.stats.fontTypes; - xrefFontStats[translatedFont.fontType] = true; - } - - fontCapability.resolve(new TranslatedFont(font.loadedName, translatedFont, font)); - })["catch"](function (reason) { - _this6.handler.send('UnsupportedFeature', { - featureId: _util.UNSUPPORTED_FEATURES.font - }); - - try { - var fontFile3 = descriptor && descriptor.get('FontFile3'); - var subtype = fontFile3 && fontFile3.get('Subtype'); - var fontType = (0, _fonts.getFontType)(preEvaluatedFont.type, subtype && subtype.name); - var xrefFontStats = xref.stats.fontTypes; - xrefFontStats[fontType] = true; - } catch (ex) {} - - fontCapability.resolve(new TranslatedFont(font.loadedName, new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason), font)); - }); - return fontCapability.promise; - }, - buildPath: function buildPath(operatorList, fn, args) { - var parsingText = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - var lastIndex = operatorList.length - 1; - - if (!args) { - args = []; - } - - if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) { - if (parsingText) { - (0, _util.warn)("Encountered path operator \"".concat(fn, "\" inside of a text object.")); - operatorList.addOp(_util.OPS.save, null); - } - - operatorList.addOp(_util.OPS.constructPath, [[fn], args]); - - if (parsingText) { - operatorList.addOp(_util.OPS.restore, null); - } - } else { - var opArgs = operatorList.argsArray[lastIndex]; - opArgs[0].push(fn); - Array.prototype.push.apply(opArgs[1], args); - } - }, - handleColorN: function () { - var _handleColorN = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee3(operatorList, fn, args, cs, patterns, resources, task) { - var patternName, pattern, dict, typeNum, color, shading, matrix; - return _regenerator["default"].wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - patternName = args[args.length - 1]; - - if (!((0, _primitives.isName)(patternName) && (pattern = patterns.get(patternName.name)))) { - _context3.next = 16; - break; - } - - dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern; - typeNum = dict.get('PatternType'); - - if (!(typeNum === TILING_PATTERN)) { - _context3.next = 9; - break; - } - - color = cs.base ? cs.base.getRgb(args, 0) : null; - return _context3.abrupt("return", this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task)); - - case 9: - if (!(typeNum === SHADING_PATTERN)) { - _context3.next = 15; - break; - } - - shading = dict.get('Shading'); - matrix = dict.getArray('Matrix'); - pattern = _pattern.Pattern.parseShading(shading, matrix, this.xref, resources, this.handler, this.pdfFunctionFactory); - operatorList.addOp(fn, pattern.getIR()); - return _context3.abrupt("return", undefined); - - case 15: - throw new _util.FormatError("Unknown PatternType: ".concat(typeNum)); - - case 16: - throw new _util.FormatError("Unknown PatternName: ".concat(patternName)); - - case 17: - case "end": - return _context3.stop(); - } - } - }, _callee3, this); - })); - - function handleColorN(_x3, _x4, _x5, _x6, _x7, _x8, _x9) { - return _handleColorN.apply(this, arguments); - } - - return handleColorN; - }(), - getOperatorList: function getOperatorList(_ref4) { - var _this7 = this; - - var stream = _ref4.stream, - task = _ref4.task, - resources = _ref4.resources, - operatorList = _ref4.operatorList, - _ref4$initialState = _ref4.initialState, - initialState = _ref4$initialState === void 0 ? null : _ref4$initialState; - resources = resources || _primitives.Dict.empty; - initialState = initialState || new EvalState(); - - if (!operatorList) { - throw new Error('getOperatorList: missing "operatorList" parameter'); - } - - var self = this; - var xref = this.xref; - var parsingText = false; - var imageCache = Object.create(null); - - var xobjs = resources.get('XObject') || _primitives.Dict.empty; - - var patterns = resources.get('Pattern') || _primitives.Dict.empty; - - var stateManager = new StateManager(initialState); - var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); - var timeSlotManager = new TimeSlotManager(); - - function closePendingRestoreOPS(argument) { - for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) { - operatorList.addOp(_util.OPS.restore, []); - } - } - - return new Promise(function promiseBody(resolve, reject) { - var next = function next(promise) { - promise.then(function () { - try { - promiseBody(resolve, reject); - } catch (ex) { - reject(ex); - } - }, reject); - }; - - task.ensureNotTerminated(); - timeSlotManager.reset(); - var stop, - operation = {}, - i, - ii, - cs; - - while (!(stop = timeSlotManager.check())) { - operation.args = null; - - if (!preprocessor.read(operation)) { - break; - } - - var args = operation.args; - var fn = operation.fn; - - switch (fn | 0) { - case _util.OPS.paintXObject: - var name = args[0].name; - - if (name && imageCache[name] !== undefined) { - operatorList.addOp(imageCache[name].fn, imageCache[name].args); - args = null; - continue; - } - - next(new Promise(function (resolveXObject, rejectXObject) { - if (!name) { - throw new _util.FormatError('XObject must be referred to by name.'); - } - - var xobj = xobjs.get(name); - - if (!xobj) { - operatorList.addOp(fn, args); - resolveXObject(); - return; - } - - if (!(0, _primitives.isStream)(xobj)) { - throw new _util.FormatError('XObject should be a stream'); - } - - var type = xobj.dict.get('Subtype'); - - if (!(0, _primitives.isName)(type)) { - throw new _util.FormatError('XObject should have a Name subtype'); - } - - if (type.name === 'Form') { - stateManager.save(); - self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone()).then(function () { - stateManager.restore(); - resolveXObject(); - }, rejectXObject); - return; - } else if (type.name === 'Image') { - self.buildPaintImageXObject({ - resources: resources, - image: xobj, - operatorList: operatorList, - cacheKey: name, - imageCache: imageCache - }).then(resolveXObject, rejectXObject); - return; - } else if (type.name === 'PS') { - (0, _util.info)('Ignored XObject subtype PS'); - } else { - throw new _util.FormatError("Unhandled XObject subtype ".concat(type.name)); - } - - resolveXObject(); - })["catch"](function (reason) { - if (self.options.ignoreErrors) { - self.handler.send('UnsupportedFeature', { - featureId: _util.UNSUPPORTED_FEATURES.unknown - }); - (0, _util.warn)("getOperatorList - ignoring XObject: \"".concat(reason, "\".")); - return; - } - - throw reason; - })); - return; - - case _util.OPS.setFont: - var fontSize = args[1]; - next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state).then(function (loadedName) { - operatorList.addDependency(loadedName); - operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]); - })); - return; - - case _util.OPS.beginText: - parsingText = true; - break; - - case _util.OPS.endText: - parsingText = false; - break; - - case _util.OPS.endInlineImage: - var cacheKey = args[0].cacheKey; - - if (cacheKey) { - var cacheEntry = imageCache[cacheKey]; - - if (cacheEntry !== undefined) { - operatorList.addOp(cacheEntry.fn, cacheEntry.args); - args = null; - continue; - } - } - - next(self.buildPaintImageXObject({ - resources: resources, - image: args[0], - isInline: true, - operatorList: operatorList, - cacheKey: cacheKey, - imageCache: imageCache - })); - return; - - case _util.OPS.showText: - args[0] = self.handleText(args[0], stateManager.state); - break; - - case _util.OPS.showSpacedText: - var arr = args[0]; - var combinedGlyphs = []; - var arrLength = arr.length; - var state = stateManager.state; - - for (i = 0; i < arrLength; ++i) { - var arrItem = arr[i]; - - if ((0, _util.isString)(arrItem)) { - Array.prototype.push.apply(combinedGlyphs, self.handleText(arrItem, state)); - } else if ((0, _util.isNum)(arrItem)) { - combinedGlyphs.push(arrItem); - } - } - - args[0] = combinedGlyphs; - fn = _util.OPS.showText; - break; - - case _util.OPS.nextLineShowText: - operatorList.addOp(_util.OPS.nextLine); - args[0] = self.handleText(args[0], stateManager.state); - fn = _util.OPS.showText; - break; - - case _util.OPS.nextLineSetSpacingShowText: - operatorList.addOp(_util.OPS.nextLine); - operatorList.addOp(_util.OPS.setWordSpacing, [args.shift()]); - operatorList.addOp(_util.OPS.setCharSpacing, [args.shift()]); - args[0] = self.handleText(args[0], stateManager.state); - fn = _util.OPS.showText; - break; - - case _util.OPS.setTextRenderingMode: - stateManager.state.textRenderingMode = args[0]; - break; - - case _util.OPS.setFillColorSpace: - stateManager.state.fillColorSpace = _colorspace.ColorSpace.parse(args[0], xref, resources, self.pdfFunctionFactory); - continue; - - case _util.OPS.setStrokeColorSpace: - stateManager.state.strokeColorSpace = _colorspace.ColorSpace.parse(args[0], xref, resources, self.pdfFunctionFactory); - continue; - - case _util.OPS.setFillColor: - cs = stateManager.state.fillColorSpace; - args = cs.getRgb(args, 0); - fn = _util.OPS.setFillRGBColor; - break; - - case _util.OPS.setStrokeColor: - cs = stateManager.state.strokeColorSpace; - args = cs.getRgb(args, 0); - fn = _util.OPS.setStrokeRGBColor; - break; - - case _util.OPS.setFillGray: - stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.gray; - args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0); - fn = _util.OPS.setFillRGBColor; - break; - - case _util.OPS.setStrokeGray: - stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray; - args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0); - fn = _util.OPS.setStrokeRGBColor; - break; - - case _util.OPS.setFillCMYKColor: - stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk; - args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0); - fn = _util.OPS.setFillRGBColor; - break; - - case _util.OPS.setStrokeCMYKColor: - stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk; - args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0); - fn = _util.OPS.setStrokeRGBColor; - break; - - case _util.OPS.setFillRGBColor: - stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb; - args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0); - break; - - case _util.OPS.setStrokeRGBColor: - stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb; - args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0); - break; - - case _util.OPS.setFillColorN: - cs = stateManager.state.fillColorSpace; - - if (cs.name === 'Pattern') { - next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, task)); - return; - } - - args = cs.getRgb(args, 0); - fn = _util.OPS.setFillRGBColor; - break; - - case _util.OPS.setStrokeColorN: - cs = stateManager.state.strokeColorSpace; - - if (cs.name === 'Pattern') { - next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, task)); - return; - } - - args = cs.getRgb(args, 0); - fn = _util.OPS.setStrokeRGBColor; - break; - - case _util.OPS.shadingFill: - var shadingRes = resources.get('Shading'); - - if (!shadingRes) { - throw new _util.FormatError('No shading resource found'); - } - - var shading = shadingRes.get(args[0].name); - - if (!shading) { - throw new _util.FormatError('No shading object found'); - } - - var shadingFill = _pattern.Pattern.parseShading(shading, null, xref, resources, self.handler, self.pdfFunctionFactory); - - var patternIR = shadingFill.getIR(); - args = [patternIR]; - fn = _util.OPS.shadingFill; - break; - - case _util.OPS.setGState: - var dictName = args[0]; - var extGState = resources.get('ExtGState'); - - if (!(0, _primitives.isDict)(extGState) || !extGState.has(dictName.name)) { - break; - } - - var gState = extGState.get(dictName.name); - next(self.setGState(resources, gState, operatorList, task, stateManager)); - return; - - case _util.OPS.moveTo: - case _util.OPS.lineTo: - case _util.OPS.curveTo: - case _util.OPS.curveTo2: - case _util.OPS.curveTo3: - case _util.OPS.closePath: - case _util.OPS.rectangle: - self.buildPath(operatorList, fn, args, parsingText); - continue; - - case _util.OPS.markPoint: - case _util.OPS.markPointProps: - case _util.OPS.beginMarkedContent: - case _util.OPS.beginMarkedContentProps: - case _util.OPS.endMarkedContent: - case _util.OPS.beginCompat: - case _util.OPS.endCompat: - continue; - - default: - if (args !== null) { - for (i = 0, ii = args.length; i < ii; i++) { - if (args[i] instanceof _primitives.Dict) { - break; - } - } - - if (i < ii) { - (0, _util.warn)('getOperatorList - ignoring operator: ' + fn); - continue; - } - } - - } - - operatorList.addOp(fn, args); - } - - if (stop) { - next(deferred); - return; - } - - closePendingRestoreOPS(); - resolve(); - })["catch"](function (reason) { - if (_this7.options.ignoreErrors) { - _this7.handler.send('UnsupportedFeature', { - featureId: _util.UNSUPPORTED_FEATURES.unknown - }); - - (0, _util.warn)("getOperatorList - ignoring errors during \"".concat(task.name, "\" ") + "task: \"".concat(reason, "\".")); - closePendingRestoreOPS(); - return; - } - - throw reason; - }); - }, - getTextContent: function getTextContent(_ref5) { - var _this8 = this; - - var stream = _ref5.stream, - task = _ref5.task, - resources = _ref5.resources, - _ref5$stateManager = _ref5.stateManager, - stateManager = _ref5$stateManager === void 0 ? null : _ref5$stateManager, - _ref5$normalizeWhites = _ref5.normalizeWhitespace, - normalizeWhitespace = _ref5$normalizeWhites === void 0 ? false : _ref5$normalizeWhites, - _ref5$combineTextItem = _ref5.combineTextItems, - combineTextItems = _ref5$combineTextItem === void 0 ? false : _ref5$combineTextItem, - sink = _ref5.sink, - _ref5$seenStyles = _ref5.seenStyles, - seenStyles = _ref5$seenStyles === void 0 ? Object.create(null) : _ref5$seenStyles; - resources = resources || _primitives.Dict.empty; - stateManager = stateManager || new StateManager(new TextState()); - var WhitespaceRegexp = /\s/g; - var textContent = { - items: [], - styles: Object.create(null) - }; - var textContentItem = { - initialized: false, - str: [], - width: 0, - height: 0, - vertical: false, - lastAdvanceWidth: 0, - lastAdvanceHeight: 0, - textAdvanceScale: 0, - spaceWidth: 0, - fakeSpaceMin: Infinity, - fakeMultiSpaceMin: Infinity, - fakeMultiSpaceMax: -0, - textRunBreakAllowed: false, - transform: null, - fontName: null - }; - var SPACE_FACTOR = 0.3; - var MULTI_SPACE_FACTOR = 1.5; - var MULTI_SPACE_FACTOR_MAX = 4; - var self = this; - var xref = this.xref; - var xobjs = null; - var skipEmptyXObjs = Object.create(null); - var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); - var textState; - - function ensureTextContentItem() { - if (textContentItem.initialized) { - return textContentItem; - } - - var font = textState.font; - - if (!(font.loadedName in seenStyles)) { - seenStyles[font.loadedName] = true; - textContent.styles[font.loadedName] = { - fontFamily: font.fallbackName, - ascent: font.ascent, - descent: font.descent, - vertical: !!font.vertical - }; - } - - textContentItem.fontName = font.loadedName; - var tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise]; - - if (font.isType3Font && textState.fontSize <= 1 && !(0, _util.isArrayEqual)(textState.fontMatrix, _util.FONT_IDENTITY_MATRIX)) { - var glyphHeight = font.bbox[3] - font.bbox[1]; - - if (glyphHeight > 0) { - tsm[3] *= glyphHeight * textState.fontMatrix[3]; - } - } - - var trm = _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm)); - - textContentItem.transform = trm; - - if (!font.vertical) { - textContentItem.width = 0; - textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]); - textContentItem.vertical = false; - } else { - textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]); - textContentItem.height = 0; - textContentItem.vertical = true; - } - - var a = textState.textLineMatrix[0]; - var b = textState.textLineMatrix[1]; - var scaleLineX = Math.sqrt(a * a + b * b); - a = textState.ctm[0]; - b = textState.ctm[1]; - var scaleCtmX = Math.sqrt(a * a + b * b); - textContentItem.textAdvanceScale = scaleCtmX * scaleLineX; - textContentItem.lastAdvanceWidth = 0; - textContentItem.lastAdvanceHeight = 0; - var spaceWidth = font.spaceWidth / 1000 * textState.fontSize; - - if (spaceWidth) { - textContentItem.spaceWidth = spaceWidth; - textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR; - textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR; - textContentItem.fakeMultiSpaceMax = spaceWidth * MULTI_SPACE_FACTOR_MAX; - textContentItem.textRunBreakAllowed = !font.isMonospace; - } else { - textContentItem.spaceWidth = 0; - textContentItem.fakeSpaceMin = Infinity; - textContentItem.fakeMultiSpaceMin = Infinity; - textContentItem.fakeMultiSpaceMax = 0; - textContentItem.textRunBreakAllowed = false; - } - - textContentItem.initialized = true; - return textContentItem; - } - - function replaceWhitespace(str) { - var i = 0, - ii = str.length, - code; - - while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7F) { - i++; - } - - return i < ii ? str.replace(WhitespaceRegexp, ' ') : str; - } - - function runBidiTransform(textChunk) { - var str = textChunk.str.join(''); - var bidiResult = (0, _bidi.bidi)(str, -1, textChunk.vertical); - return { - str: normalizeWhitespace ? replaceWhitespace(bidiResult.str) : bidiResult.str, - dir: bidiResult.dir, - width: textChunk.width, - height: textChunk.height, - transform: textChunk.transform, - fontName: textChunk.fontName - }; - } - - function handleSetFont(fontName, fontRef) { - return self.loadFont(fontName, fontRef, resources).then(function (translated) { - textState.font = translated.font; - textState.fontMatrix = translated.font.fontMatrix || _util.FONT_IDENTITY_MATRIX; - }); - } - - function buildTextContentItem(chars) { - var font = textState.font; - var textChunk = ensureTextContentItem(); - var width = 0; - var height = 0; - var glyphs = font.charsToGlyphs(chars); - - for (var i = 0; i < glyphs.length; i++) { - var glyph = glyphs[i]; - var glyphWidth = null; - - if (font.vertical && glyph.vmetric) { - glyphWidth = glyph.vmetric[0]; - } else { - glyphWidth = glyph.width; - } - - var glyphUnicode = glyph.unicode; - var NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)(); - - if (NormalizedUnicodes[glyphUnicode] !== undefined) { - glyphUnicode = NormalizedUnicodes[glyphUnicode]; - } - - glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode); - var charSpacing = textState.charSpacing; - - if (glyph.isSpace) { - var wordSpacing = textState.wordSpacing; - charSpacing += wordSpacing; - - if (wordSpacing > 0) { - addFakeSpaces(wordSpacing, textChunk.str); - } - } - - var tx = 0; - var ty = 0; - - if (!font.vertical) { - var w0 = glyphWidth * textState.fontMatrix[0]; - tx = (w0 * textState.fontSize + charSpacing) * textState.textHScale; - width += tx; - } else { - var w1 = glyphWidth * textState.fontMatrix[0]; - ty = w1 * textState.fontSize + charSpacing; - height += ty; - } - - textState.translateTextMatrix(tx, ty); - textChunk.str.push(glyphUnicode); - } - - if (!font.vertical) { - textChunk.lastAdvanceWidth = width; - textChunk.width += width; - } else { - textChunk.lastAdvanceHeight = height; - textChunk.height += Math.abs(height); - } - - return textChunk; - } - - function addFakeSpaces(width, strBuf) { - if (width < textContentItem.fakeSpaceMin) { - return; - } - - if (width < textContentItem.fakeMultiSpaceMin) { - strBuf.push(' '); - return; - } - - var fakeSpaces = Math.round(width / textContentItem.spaceWidth); - - while (fakeSpaces-- > 0) { - strBuf.push(' '); - } - } - - function flushTextContentItem() { - if (!textContentItem.initialized) { - return; - } - - if (!textContentItem.vertical) { - textContentItem.width *= textContentItem.textAdvanceScale; - } else { - textContentItem.height *= textContentItem.textAdvanceScale; - } - - textContent.items.push(runBidiTransform(textContentItem)); - textContentItem.initialized = false; - textContentItem.str.length = 0; - } - - function enqueueChunk() { - var length = textContent.items.length; - - if (length > 0) { - sink.enqueue(textContent, length); - textContent.items = []; - textContent.styles = Object.create(null); - } - } - - var timeSlotManager = new TimeSlotManager(); - return new Promise(function promiseBody(resolve, reject) { - var next = function next(promise) { - enqueueChunk(); - Promise.all([promise, sink.ready]).then(function () { - try { - promiseBody(resolve, reject); - } catch (ex) { - reject(ex); - } - }, reject); - }; - - task.ensureNotTerminated(); - timeSlotManager.reset(); - var stop, - operation = {}, - args = []; - - while (!(stop = timeSlotManager.check())) { - args.length = 0; - operation.args = args; - - if (!preprocessor.read(operation)) { - break; - } - - textState = stateManager.state; - var fn = operation.fn; - args = operation.args; - var advance, diff; - - switch (fn | 0) { - case _util.OPS.setFont: - var fontNameArg = args[0].name, - fontSizeArg = args[1]; - - if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) { - break; - } - - flushTextContentItem(); - textState.fontName = fontNameArg; - textState.fontSize = fontSizeArg; - next(handleSetFont(fontNameArg, null)); - return; - - case _util.OPS.setTextRise: - flushTextContentItem(); - textState.textRise = args[0]; - break; - - case _util.OPS.setHScale: - flushTextContentItem(); - textState.textHScale = args[0] / 100; - break; - - case _util.OPS.setLeading: - flushTextContentItem(); - textState.leading = args[0]; - break; - - case _util.OPS.moveText: - var isSameTextLine = !textState.font ? false : (textState.font.vertical ? args[0] : args[1]) === 0; - advance = args[0] - args[1]; - - if (combineTextItems && isSameTextLine && textContentItem.initialized && advance > 0 && advance <= textContentItem.fakeMultiSpaceMax) { - textState.translateTextLineMatrix(args[0], args[1]); - textContentItem.width += args[0] - textContentItem.lastAdvanceWidth; - textContentItem.height += args[1] - textContentItem.lastAdvanceHeight; - diff = args[0] - textContentItem.lastAdvanceWidth - (args[1] - textContentItem.lastAdvanceHeight); - addFakeSpaces(diff, textContentItem.str); - break; - } - - flushTextContentItem(); - textState.translateTextLineMatrix(args[0], args[1]); - textState.textMatrix = textState.textLineMatrix.slice(); - break; - - case _util.OPS.setLeadingMoveText: - flushTextContentItem(); - textState.leading = -args[1]; - textState.translateTextLineMatrix(args[0], args[1]); - textState.textMatrix = textState.textLineMatrix.slice(); - break; - - case _util.OPS.nextLine: - flushTextContentItem(); - textState.carriageReturn(); - break; - - case _util.OPS.setTextMatrix: - advance = textState.calcTextLineMatrixAdvance(args[0], args[1], args[2], args[3], args[4], args[5]); - - if (combineTextItems && advance !== null && textContentItem.initialized && advance.value > 0 && advance.value <= textContentItem.fakeMultiSpaceMax) { - textState.translateTextLineMatrix(advance.width, advance.height); - textContentItem.width += advance.width - textContentItem.lastAdvanceWidth; - textContentItem.height += advance.height - textContentItem.lastAdvanceHeight; - diff = advance.width - textContentItem.lastAdvanceWidth - (advance.height - textContentItem.lastAdvanceHeight); - addFakeSpaces(diff, textContentItem.str); - break; - } - - flushTextContentItem(); - textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); - textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - - case _util.OPS.setCharSpacing: - textState.charSpacing = args[0]; - break; - - case _util.OPS.setWordSpacing: - textState.wordSpacing = args[0]; - break; - - case _util.OPS.beginText: - flushTextContentItem(); - textState.textMatrix = _util.IDENTITY_MATRIX.slice(); - textState.textLineMatrix = _util.IDENTITY_MATRIX.slice(); - break; - - case _util.OPS.showSpacedText: - var items = args[0]; - var offset; - - for (var j = 0, jj = items.length; j < jj; j++) { - if (typeof items[j] === 'string') { - buildTextContentItem(items[j]); - } else if ((0, _util.isNum)(items[j])) { - ensureTextContentItem(); - advance = items[j] * textState.fontSize / 1000; - var breakTextRun = false; - - if (textState.font.vertical) { - offset = advance; - textState.translateTextMatrix(0, offset); - breakTextRun = textContentItem.textRunBreakAllowed && advance > textContentItem.fakeMultiSpaceMax; - - if (!breakTextRun) { - textContentItem.height += offset; - } - } else { - advance = -advance; - offset = advance * textState.textHScale; - textState.translateTextMatrix(offset, 0); - breakTextRun = textContentItem.textRunBreakAllowed && advance > textContentItem.fakeMultiSpaceMax; - - if (!breakTextRun) { - textContentItem.width += offset; - } - } - - if (breakTextRun) { - flushTextContentItem(); - } else if (advance > 0) { - addFakeSpaces(advance, textContentItem.str); - } - } - } - - break; - - case _util.OPS.showText: - buildTextContentItem(args[0]); - break; - - case _util.OPS.nextLineShowText: - flushTextContentItem(); - textState.carriageReturn(); - buildTextContentItem(args[0]); - break; - - case _util.OPS.nextLineSetSpacingShowText: - flushTextContentItem(); - textState.wordSpacing = args[0]; - textState.charSpacing = args[1]; - textState.carriageReturn(); - buildTextContentItem(args[2]); - break; - - case _util.OPS.paintXObject: - flushTextContentItem(); - - if (!xobjs) { - xobjs = resources.get('XObject') || _primitives.Dict.empty; - } - - var name = args[0].name; - - if (name && skipEmptyXObjs[name] !== undefined) { - break; - } - - next(new Promise(function (resolveXObject, rejectXObject) { - if (!name) { - throw new _util.FormatError('XObject must be referred to by name.'); - } - - var xobj = xobjs.get(name); - - if (!xobj) { - resolveXObject(); - return; - } - - if (!(0, _primitives.isStream)(xobj)) { - throw new _util.FormatError('XObject should be a stream'); - } - - var type = xobj.dict.get('Subtype'); - - if (!(0, _primitives.isName)(type)) { - throw new _util.FormatError('XObject should have a Name subtype'); - } - - if (type.name !== 'Form') { - skipEmptyXObjs[name] = true; - resolveXObject(); - return; - } - - var currentState = stateManager.state.clone(); - var xObjStateManager = new StateManager(currentState); - var matrix = xobj.dict.getArray('Matrix'); - - if (Array.isArray(matrix) && matrix.length === 6) { - xObjStateManager.transform(matrix); - } - - enqueueChunk(); - var sinkWrapper = { - enqueueInvoked: false, - enqueue: function enqueue(chunk, size) { - this.enqueueInvoked = true; - sink.enqueue(chunk, size); - }, - - get desiredSize() { - return sink.desiredSize; - }, - - get ready() { - return sink.ready; - } - - }; - self.getTextContent({ - stream: xobj, - task: task, - resources: xobj.dict.get('Resources') || resources, - stateManager: xObjStateManager, - normalizeWhitespace: normalizeWhitespace, - combineTextItems: combineTextItems, - sink: sinkWrapper, - seenStyles: seenStyles - }).then(function () { - if (!sinkWrapper.enqueueInvoked) { - skipEmptyXObjs[name] = true; - } - - resolveXObject(); - }, rejectXObject); - })["catch"](function (reason) { - if (reason instanceof _util.AbortException) { - return; - } - - if (self.options.ignoreErrors) { - (0, _util.warn)("getTextContent - ignoring XObject: \"".concat(reason, "\".")); - return; - } - - throw reason; - })); - return; - - case _util.OPS.setGState: - flushTextContentItem(); - var dictName = args[0]; - var extGState = resources.get('ExtGState'); - - if (!(0, _primitives.isDict)(extGState) || !(0, _primitives.isName)(dictName)) { - break; - } - - var gState = extGState.get(dictName.name); - - if (!(0, _primitives.isDict)(gState)) { - break; - } - - var gStateFont = gState.get('Font'); - - if (gStateFont) { - textState.fontName = null; - textState.fontSize = gStateFont[1]; - next(handleSetFont(null, gStateFont[0])); - return; - } - - break; - } - - if (textContent.items.length >= sink.desiredSize) { - stop = true; - break; - } - } - - if (stop) { - next(deferred); - return; - } - - flushTextContentItem(); - enqueueChunk(); - resolve(); - })["catch"](function (reason) { - if (reason instanceof _util.AbortException) { - return; - } - - if (_this8.options.ignoreErrors) { - (0, _util.warn)("getTextContent - ignoring errors during \"".concat(task.name, "\" ") + "task: \"".concat(reason, "\".")); - flushTextContentItem(); - enqueueChunk(); - return; - } - - throw reason; - }); - }, - extractDataStructures: function PartialEvaluator_extractDataStructures(dict, baseDict, properties) { - var _this9 = this; - - var xref = this.xref, - cidToGidBytes; - var toUnicode = dict.get('ToUnicode') || baseDict.get('ToUnicode'); - var toUnicodePromise = toUnicode ? this.readToUnicode(toUnicode) : Promise.resolve(undefined); - - if (properties.composite) { - var cidSystemInfo = dict.get('CIDSystemInfo'); - - if ((0, _primitives.isDict)(cidSystemInfo)) { - properties.cidSystemInfo = { - registry: (0, _util.stringToPDFString)(cidSystemInfo.get('Registry')), - ordering: (0, _util.stringToPDFString)(cidSystemInfo.get('Ordering')), - supplement: cidSystemInfo.get('Supplement') - }; - } - - var cidToGidMap = dict.get('CIDToGIDMap'); - - if ((0, _primitives.isStream)(cidToGidMap)) { - cidToGidBytes = cidToGidMap.getBytes(); - } - } - - var differences = []; - var baseEncodingName = null; - var encoding; - - if (dict.has('Encoding')) { - encoding = dict.get('Encoding'); - - if ((0, _primitives.isDict)(encoding)) { - baseEncodingName = encoding.get('BaseEncoding'); - baseEncodingName = (0, _primitives.isName)(baseEncodingName) ? baseEncodingName.name : null; - - if (encoding.has('Differences')) { - var diffEncoding = encoding.get('Differences'); - var index = 0; - - for (var j = 0, jj = diffEncoding.length; j < jj; j++) { - var data = xref.fetchIfRef(diffEncoding[j]); - - if ((0, _util.isNum)(data)) { - index = data; - } else if ((0, _primitives.isName)(data)) { - differences[index++] = data.name; - } else { - throw new _util.FormatError("Invalid entry in 'Differences' array: ".concat(data)); - } - } - } - } else if ((0, _primitives.isName)(encoding)) { - baseEncodingName = encoding.name; - } else { - throw new _util.FormatError('Encoding is not a Name nor a Dict'); - } - - if (baseEncodingName !== 'MacRomanEncoding' && baseEncodingName !== 'MacExpertEncoding' && baseEncodingName !== 'WinAnsiEncoding') { - baseEncodingName = null; - } - } - - if (baseEncodingName) { - properties.defaultEncoding = (0, _encodings.getEncoding)(baseEncodingName).slice(); - } else { - var isSymbolicFont = !!(properties.flags & _fonts.FontFlags.Symbolic); - var isNonsymbolicFont = !!(properties.flags & _fonts.FontFlags.Nonsymbolic); - encoding = _encodings.StandardEncoding; - - if (properties.type === 'TrueType' && !isNonsymbolicFont) { - encoding = _encodings.WinAnsiEncoding; - } - - if (isSymbolicFont) { - encoding = _encodings.MacRomanEncoding; - - if (!properties.file) { - if (/Symbol/i.test(properties.name)) { - encoding = _encodings.SymbolSetEncoding; - } else if (/Dingbats/i.test(properties.name)) { - encoding = _encodings.ZapfDingbatsEncoding; - } - } - } - - properties.defaultEncoding = encoding; - } - - properties.differences = differences; - properties.baseEncodingName = baseEncodingName; - properties.hasEncoding = !!baseEncodingName || differences.length > 0; - properties.dict = dict; - return toUnicodePromise.then(function (toUnicode) { - properties.toUnicode = toUnicode; - return _this9.buildToUnicode(properties); - }).then(function (toUnicode) { - properties.toUnicode = toUnicode; - - if (cidToGidBytes) { - properties.cidToGidMap = _this9.readCidToGidMap(cidToGidBytes, toUnicode); - } - - return properties; - }); - }, - _buildSimpleFontToUnicode: function _buildSimpleFontToUnicode(properties) { - (0, _util.assert)(!properties.composite, 'Must be a simple font.'); - var toUnicode = [], - charcode, - glyphName; - var encoding = properties.defaultEncoding.slice(); - var baseEncodingName = properties.baseEncodingName; - var differences = properties.differences; - - for (charcode in differences) { - glyphName = differences[charcode]; - - if (glyphName === '.notdef') { - continue; - } - - encoding[charcode] = glyphName; - } - - var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); - - for (charcode in encoding) { - glyphName = encoding[charcode]; - - if (glyphName === '') { - continue; - } else if (glyphsUnicodeMap[glyphName] === undefined) { - var code = 0; - - switch (glyphName[0]) { - case 'G': - if (glyphName.length === 3) { - code = parseInt(glyphName.substring(1), 16); - } - - break; - - case 'g': - if (glyphName.length === 5) { - code = parseInt(glyphName.substring(1), 16); - } - - break; - - case 'C': - case 'c': - if (glyphName.length >= 3) { - code = +glyphName.substring(1); - } - - break; - - default: - var unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap); - - if (unicode !== -1) { - code = unicode; - } - - } - - if (code) { - if (baseEncodingName && code === +charcode) { - var baseEncoding = (0, _encodings.getEncoding)(baseEncodingName); - - if (baseEncoding && (glyphName = baseEncoding[charcode])) { - toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]); - continue; - } - } - - toUnicode[charcode] = String.fromCodePoint(code); - } - - continue; - } - - toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]); - } - - return new _fonts.ToUnicodeMap(toUnicode); - }, - buildToUnicode: function buildToUnicode(properties) { - properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0; - - if (properties.hasIncludedToUnicodeMap) { - if (!properties.composite && properties.hasEncoding) { - properties.fallbackToUnicode = this._buildSimpleFontToUnicode(properties); - } - - return Promise.resolve(properties.toUnicode); - } - - if (!properties.composite) { - return Promise.resolve(this._buildSimpleFontToUnicode(properties)); - } - - if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof _cmap.IdentityCMap) || properties.cidSystemInfo.registry === 'Adobe' && (properties.cidSystemInfo.ordering === 'GB1' || properties.cidSystemInfo.ordering === 'CNS1' || properties.cidSystemInfo.ordering === 'Japan1' || properties.cidSystemInfo.ordering === 'Korea1'))) { - var registry = properties.cidSystemInfo.registry; - var ordering = properties.cidSystemInfo.ordering; - - var ucs2CMapName = _primitives.Name.get(registry + '-' + ordering + '-UCS2'); - - return _cmap.CMapFactory.create({ - encoding: ucs2CMapName, - fetchBuiltInCMap: this.fetchBuiltInCMap, - useCMap: null - }).then(function (ucs2CMap) { - var cMap = properties.cMap; - var toUnicode = []; - cMap.forEach(function (charcode, cid) { - if (cid > 0xffff) { - throw new _util.FormatError('Max size of CID is 65,535'); - } - - var ucs2 = ucs2CMap.lookup(cid); - - if (ucs2) { - toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)); - } - }); - return new _fonts.ToUnicodeMap(toUnicode); - }); - } - - return Promise.resolve(new _fonts.IdentityToUnicodeMap(properties.firstChar, properties.lastChar)); - }, - readToUnicode: function PartialEvaluator_readToUnicode(toUnicode) { - var cmapObj = toUnicode; - - if ((0, _primitives.isName)(cmapObj)) { - return _cmap.CMapFactory.create({ - encoding: cmapObj, - fetchBuiltInCMap: this.fetchBuiltInCMap, - useCMap: null - }).then(function (cmap) { - if (cmap instanceof _cmap.IdentityCMap) { - return new _fonts.IdentityToUnicodeMap(0, 0xFFFF); - } - - return new _fonts.ToUnicodeMap(cmap.getMap()); - }); - } else if ((0, _primitives.isStream)(cmapObj)) { - return _cmap.CMapFactory.create({ - encoding: cmapObj, - fetchBuiltInCMap: this.fetchBuiltInCMap, - useCMap: null - }).then(function (cmap) { - if (cmap instanceof _cmap.IdentityCMap) { - return new _fonts.IdentityToUnicodeMap(0, 0xFFFF); - } - - var map = new Array(cmap.length); - cmap.forEach(function (charCode, token) { - var str = []; - - for (var k = 0; k < token.length; k += 2) { - var w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1); - - if ((w1 & 0xF800) !== 0xD800) { - str.push(w1); - continue; - } - - k += 2; - var w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1); - str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000); - } - - map[charCode] = String.fromCodePoint.apply(String, str); - }); - return new _fonts.ToUnicodeMap(map); - }); - } - - return Promise.resolve(null); - }, - readCidToGidMap: function readCidToGidMap(glyphsData, toUnicode) { - var result = []; - - for (var j = 0, jj = glyphsData.length; j < jj; j++) { - var glyphID = glyphsData[j++] << 8 | glyphsData[j]; - var code = j >> 1; - - if (glyphID === 0 && !toUnicode.has(code)) { - continue; - } - - result[code] = glyphID; - } - - return result; - }, - extractWidths: function PartialEvaluator_extractWidths(dict, descriptor, properties) { - var xref = this.xref; - var glyphsWidths = []; - var defaultWidth = 0; - var glyphsVMetrics = []; - var defaultVMetrics; - var i, ii, j, jj, start, code, widths; - - if (properties.composite) { - defaultWidth = dict.has('DW') ? dict.get('DW') : 1000; - widths = dict.get('W'); - - if (widths) { - for (i = 0, ii = widths.length; i < ii; i++) { - start = xref.fetchIfRef(widths[i++]); - code = xref.fetchIfRef(widths[i]); - - if (Array.isArray(code)) { - for (j = 0, jj = code.length; j < jj; j++) { - glyphsWidths[start++] = xref.fetchIfRef(code[j]); - } - } else { - var width = xref.fetchIfRef(widths[++i]); - - for (j = start; j <= code; j++) { - glyphsWidths[j] = width; - } - } - } - } - - if (properties.vertical) { - var vmetrics = dict.getArray('DW2') || [880, -1000]; - defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]]; - vmetrics = dict.get('W2'); - - if (vmetrics) { - for (i = 0, ii = vmetrics.length; i < ii; i++) { - start = xref.fetchIfRef(vmetrics[i++]); - code = xref.fetchIfRef(vmetrics[i]); - - if (Array.isArray(code)) { - for (j = 0, jj = code.length; j < jj; j++) { - glyphsVMetrics[start++] = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j])]; - } - } else { - var vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i])]; - - for (j = start; j <= code; j++) { - glyphsVMetrics[j] = vmetric; - } - } - } - } - } - } else { - var firstChar = properties.firstChar; - widths = dict.get('Widths'); - - if (widths) { - j = firstChar; - - for (i = 0, ii = widths.length; i < ii; i++) { - glyphsWidths[j++] = xref.fetchIfRef(widths[i]); - } - - defaultWidth = parseFloat(descriptor.get('MissingWidth')) || 0; - } else { - var baseFontName = dict.get('BaseFont'); - - if ((0, _primitives.isName)(baseFontName)) { - var metrics = this.getBaseFontMetrics(baseFontName.name); - glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties); - defaultWidth = metrics.defaultWidth; - } - } - } - - var isMonospace = true; - var firstWidth = defaultWidth; - - for (var glyph in glyphsWidths) { - var glyphWidth = glyphsWidths[glyph]; - - if (!glyphWidth) { - continue; - } - - if (!firstWidth) { - firstWidth = glyphWidth; - continue; - } - - if (firstWidth !== glyphWidth) { - isMonospace = false; - break; - } - } - - if (isMonospace) { - properties.flags |= _fonts.FontFlags.FixedPitch; - } - - properties.defaultWidth = defaultWidth; - properties.widths = glyphsWidths; - properties.defaultVMetrics = defaultVMetrics; - properties.vmetrics = glyphsVMetrics; - }, - isSerifFont: function PartialEvaluator_isSerifFont(baseFontName) { - var fontNameWoStyle = baseFontName.split('-')[0]; - return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || fontNameWoStyle.search(/serif/gi) !== -1; - }, - getBaseFontMetrics: function PartialEvaluator_getBaseFontMetrics(name) { - var defaultWidth = 0; - // Odoo: backport mozilla/pdf.js@8805614a03c for courier font bug with chrome 92 - var widths = Object.create(null); - var monospace = false; - var stdFontMap = (0, _standard_fonts.getStdFontMap)(); - var lookupName = stdFontMap[name] || name; - var Metrics = (0, _metrics.getMetrics)(); - - if (!(lookupName in Metrics)) { - if (this.isSerifFont(name)) { - lookupName = 'Times-Roman'; - } else { - lookupName = 'Helvetica'; - } - } - - var glyphWidths = Metrics[lookupName]; - - if ((0, _util.isNum)(glyphWidths)) { - defaultWidth = glyphWidths; - monospace = true; - } else { - widths = glyphWidths(); - } - - return { - defaultWidth: defaultWidth, - monospace: monospace, - widths: widths - }; - }, - buildCharCodeToWidth: function PartialEvaluator_bulildCharCodeToWidth(widthsByGlyphName, properties) { - var widths = Object.create(null); - var differences = properties.differences; - var encoding = properties.defaultEncoding; - - for (var charCode = 0; charCode < 256; charCode++) { - if (charCode in differences && widthsByGlyphName[differences[charCode]]) { - widths[charCode] = widthsByGlyphName[differences[charCode]]; - continue; - } - - if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) { - widths[charCode] = widthsByGlyphName[encoding[charCode]]; - continue; - } - } - - return widths; - }, - preEvaluateFont: function PartialEvaluator_preEvaluateFont(dict) { - var baseDict = dict; - var type = dict.get('Subtype'); - - if (!(0, _primitives.isName)(type)) { - throw new _util.FormatError('invalid font Subtype'); - } - - var composite = false; - var uint8array; - - if (type.name === 'Type0') { - var df = dict.get('DescendantFonts'); - - if (!df) { - throw new _util.FormatError('Descendant fonts are not specified'); - } - - dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df; - type = dict.get('Subtype'); - - if (!(0, _primitives.isName)(type)) { - throw new _util.FormatError('invalid font Subtype'); - } - - composite = true; - } - - var descriptor = dict.get('FontDescriptor'); - - if (descriptor) { - var hash = new _murmurhash.MurmurHash3_64(); - var encoding = baseDict.getRaw('Encoding'); - - if ((0, _primitives.isName)(encoding)) { - hash.update(encoding.name); - } else if ((0, _primitives.isRef)(encoding)) { - hash.update(encoding.toString()); - } else if ((0, _primitives.isDict)(encoding)) { - var keys = encoding.getKeys(); - - for (var i = 0, ii = keys.length; i < ii; i++) { - var entry = encoding.getRaw(keys[i]); - - if ((0, _primitives.isName)(entry)) { - hash.update(entry.name); - } else if ((0, _primitives.isRef)(entry)) { - hash.update(entry.toString()); - } else if (Array.isArray(entry)) { - var diffLength = entry.length, - diffBuf = new Array(diffLength); - - for (var j = 0; j < diffLength; j++) { - var diffEntry = entry[j]; - - if ((0, _primitives.isName)(diffEntry)) { - diffBuf[j] = diffEntry.name; - } else if ((0, _util.isNum)(diffEntry) || (0, _primitives.isRef)(diffEntry)) { - diffBuf[j] = diffEntry.toString(); - } - } - - hash.update(diffBuf.join()); - } - } - } - - var firstChar = dict.get('FirstChar') || 0; - var lastChar = dict.get('LastChar') || (composite ? 0xFFFF : 0xFF); - hash.update("".concat(firstChar, "-").concat(lastChar)); - var toUnicode = dict.get('ToUnicode') || baseDict.get('ToUnicode'); - - if ((0, _primitives.isStream)(toUnicode)) { - var stream = toUnicode.str || toUnicode; - uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start); - hash.update(uint8array); - } else if ((0, _primitives.isName)(toUnicode)) { - hash.update(toUnicode.name); - } - - var widths = dict.get('Widths') || baseDict.get('Widths'); - - if (widths) { - uint8array = new Uint8Array(new Uint32Array(widths).buffer); - hash.update(uint8array); - } - } - - return { - descriptor: descriptor, - dict: dict, - baseDict: baseDict, - composite: composite, - type: type.name, - hash: hash ? hash.hexdigest() : '' - }; - }, - translateFont: function PartialEvaluator_translateFont(preEvaluatedFont) { - var _this10 = this; - - var baseDict = preEvaluatedFont.baseDict; - var dict = preEvaluatedFont.dict; - var composite = preEvaluatedFont.composite; - var descriptor = preEvaluatedFont.descriptor; - var type = preEvaluatedFont.type; - var maxCharIndex = composite ? 0xFFFF : 0xFF; - var properties; - - if (!descriptor) { - if (type === 'Type3') { - descriptor = new _primitives.Dict(null); - descriptor.set('FontName', _primitives.Name.get(type)); - descriptor.set('FontBBox', dict.getArray('FontBBox')); - } else { - var baseFontName = dict.get('BaseFont'); - - if (!(0, _primitives.isName)(baseFontName)) { - throw new _util.FormatError('Base font is not specified'); - } - - baseFontName = baseFontName.name.replace(/[,_]/g, '-'); - var metrics = this.getBaseFontMetrics(baseFontName); - var fontNameWoStyle = baseFontName.split('-')[0]; - var flags = (this.isSerifFont(fontNameWoStyle) ? _fonts.FontFlags.Serif : 0) | (metrics.monospace ? _fonts.FontFlags.FixedPitch : 0) | ((0, _standard_fonts.getSymbolsFonts)()[fontNameWoStyle] ? _fonts.FontFlags.Symbolic : _fonts.FontFlags.Nonsymbolic); - properties = { - type: type, - name: baseFontName, - widths: metrics.widths, - defaultWidth: metrics.defaultWidth, - flags: flags, - firstChar: 0, - lastChar: maxCharIndex - }; - return this.extractDataStructures(dict, dict, properties).then(function (properties) { - properties.widths = _this10.buildCharCodeToWidth(metrics.widths, properties); - return new _fonts.Font(baseFontName, null, properties); - }); - } - } - - var firstChar = dict.get('FirstChar') || 0; - var lastChar = dict.get('LastChar') || maxCharIndex; - var fontName = descriptor.get('FontName'); - var baseFont = dict.get('BaseFont'); - - if ((0, _util.isString)(fontName)) { - fontName = _primitives.Name.get(fontName); - } - - if ((0, _util.isString)(baseFont)) { - baseFont = _primitives.Name.get(baseFont); - } - - if (type !== 'Type3') { - var fontNameStr = fontName && fontName.name; - var baseFontStr = baseFont && baseFont.name; - - if (fontNameStr !== baseFontStr) { - (0, _util.info)("The FontDescriptor's FontName is \"".concat(fontNameStr, "\" but ") + "should be the same as the Font's BaseFont \"".concat(baseFontStr, "\".")); - - if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) { - fontName = baseFont; - } - } - } - - fontName = fontName || baseFont; - - if (!(0, _primitives.isName)(fontName)) { - throw new _util.FormatError('invalid font name'); - } - - var fontFile = descriptor.get('FontFile', 'FontFile2', 'FontFile3'); - - if (fontFile) { - if (fontFile.dict) { - var subtype = fontFile.dict.get('Subtype'); - - if (subtype) { - subtype = subtype.name; - } - - var length1 = fontFile.dict.get('Length1'); - var length2 = fontFile.dict.get('Length2'); - var length3 = fontFile.dict.get('Length3'); - } - } - - properties = { - type: type, - name: fontName.name, - subtype: subtype, - file: fontFile, - length1: length1, - length2: length2, - length3: length3, - loadedName: baseDict.loadedName, - composite: composite, - wideChars: composite, - fixedPitch: false, - fontMatrix: dict.getArray('FontMatrix') || _util.FONT_IDENTITY_MATRIX, - firstChar: firstChar || 0, - lastChar: lastChar || maxCharIndex, - bbox: descriptor.getArray('FontBBox'), - ascent: descriptor.get('Ascent'), - descent: descriptor.get('Descent'), - xHeight: descriptor.get('XHeight'), - capHeight: descriptor.get('CapHeight'), - flags: descriptor.get('Flags'), - italicAngle: descriptor.get('ItalicAngle'), - isType3Font: false - }; - var cMapPromise; - - if (composite) { - var cidEncoding = baseDict.get('Encoding'); - - if ((0, _primitives.isName)(cidEncoding)) { - properties.cidEncoding = cidEncoding.name; - } - - cMapPromise = _cmap.CMapFactory.create({ - encoding: cidEncoding, - fetchBuiltInCMap: this.fetchBuiltInCMap, - useCMap: null - }).then(function (cMap) { - properties.cMap = cMap; - properties.vertical = properties.cMap.vertical; - }); - } else { - cMapPromise = Promise.resolve(undefined); - } - - return cMapPromise.then(function () { - return _this10.extractDataStructures(dict, baseDict, properties); - }).then(function (properties) { - _this10.extractWidths(dict, descriptor, properties); - - if (type === 'Type3') { - properties.isType3Font = true; - } - - return new _fonts.Font(fontName.name, fontFile, properties); - }); - } - }; - - PartialEvaluator.buildFontPaths = function (font, glyphs, handler) { - function buildPath(fontChar) { - if (font.renderer.hasBuiltPath(fontChar)) { - return; - } - - handler.send('commonobj', ["".concat(font.loadedName, "_path_").concat(fontChar), 'FontPath', font.renderer.getPathJs(fontChar)]); - } - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; + let data; try { - for (var _iterator = glyphs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var glyph = _step.value; - buildPath(glyph.fontChar); - var accent = glyph.accent; + switch (type) { + case "MMType1": + (0, _util.info)("MMType1 font (" + name + "), falling back to Type1."); - if (accent && accent.fontChar) { - buildPath(accent.fontChar); - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator["return"] != null) { - _iterator["return"](); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } + case "Type1": + case "CIDFontType0": + this.mimetype = "font/opentype"; + const cff = subtype === "Type1C" || subtype === "CIDFontType0C" ? new _cff_font.CFFFont(file, properties) : new _type1_font.Type1Font(name, file, properties); + adjustWidths(properties); + data = this.convert(name, cff, properties); + break; + + case "OpenType": + case "TrueType": + case "CIDFontType2": + this.mimetype = "font/opentype"; + data = this.checkAndRepair(name, file, properties); + + if (this.isOpenType) { + adjustWidths(properties); + type = "OpenType"; + } + + break; + + default: + throw new _util.FormatError(`Font ${type} is not supported`); } + } catch (e) { + (0, _util.warn)(e); + this.fallbackToSystemFont(properties); + return; } - }; - return PartialEvaluator; -}(); - -exports.PartialEvaluator = PartialEvaluator; - -var TranslatedFont = function TranslatedFontClosure() { - function TranslatedFont(loadedName, font, dict) { - this.loadedName = loadedName; - this.font = font; - this.dict = dict; - this.type3Loaded = null; - this.sent = false; + amendFallbackToUnicode(properties); + this.data = data; + this.fontType = (0, _fonts_utils.getFontType)(type, subtype, properties.isStandardFont); + this.fontMatrix = properties.fontMatrix; + this.widths = properties.widths; + this.defaultWidth = properties.defaultWidth; + this.toUnicode = properties.toUnicode; + this.seacMap = properties.seacMap; } - TranslatedFont.prototype = { - send: function send(handler) { - if (this.sent) { - return; + get renderer() { + const renderer = _font_renderer.FontRendererFactory.create(this, _fonts_utils.SEAC_ANALYSIS_ENABLED); + + return (0, _util.shadow)(this, "renderer", renderer); + } + + exportData() { + let extraProperties = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + const exportDataProperties = extraProperties ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES] : EXPORT_DATA_PROPERTIES; + const data = Object.create(null); + let property, value; + + for (property of exportDataProperties) { + value = this[property]; + + if (value !== undefined) { + data[property] = value; + } + } + + return data; + } + + fallbackToSystemFont(properties) { + this.missingFile = true; + const name = this.name; + const type = this.type; + const subtype = this.subtype; + let fontName = (0, _fonts_utils.normalizeFontName)(name); + const stdFontMap = (0, _standard_fonts.getStdFontMap)(), + nonStdFontMap = (0, _standard_fonts.getNonStdFontMap)(); + const isStandardFont = !!stdFontMap[fontName]; + const isMappedToStandardFont = !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]); + fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName; + const fontBasicMetricsMap = (0, _metrics.getFontBasicMetrics)(); + const metrics = fontBasicMetricsMap[fontName]; + + if (metrics) { + if (isNaN(this.ascent)) { + this.ascent = metrics.ascent / PDF_GLYPH_SPACE_UNITS; } - this.sent = true; - handler.send('commonobj', [this.loadedName, 'Font', this.font.exportData()]); - }, - fallback: function fallback(handler) { - if (!this.font.data) { - return; + if (isNaN(this.descent)) { + this.descent = metrics.descent / PDF_GLYPH_SPACE_UNITS; } - this.font.disableFontFace = true; - var glyphs = this.font.glyphCacheValues; - PartialEvaluator.buildFontPaths(this.font, glyphs, handler); - }, - loadType3Data: function loadType3Data(evaluator, resources, parentOperatorList, task) { - if (!this.font.isType3Font) { - throw new Error('Must be a Type3 font.'); + if (isNaN(this.capHeight)) { + this.capHeight = metrics.capHeight / PDF_GLYPH_SPACE_UNITS; + } + } + + this.bold = fontName.search(/bold/gi) !== -1; + this.italic = fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1; + this.black = name.search(/Black/g) !== -1; + const isNarrow = name.search(/Narrow/g) !== -1; + this.remeasure = (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0; + + if ((isStandardFont || isMappedToStandardFont) && type === "CIDFontType2" && this.cidEncoding.startsWith("Identity-")) { + const cidToGidMap = properties.cidToGidMap; + const map = []; + applyStandardFontGlyphMap(map, (0, _standard_fonts.getGlyphMapForStandardFonts)()); + + if (/Arial-?Black/i.test(name)) { + applyStandardFontGlyphMap(map, (0, _standard_fonts.getSupplementalGlyphMapForArialBlack)()); + } else if (/Calibri/i.test(name)) { + applyStandardFontGlyphMap(map, (0, _standard_fonts.getSupplementalGlyphMapForCalibri)()); } - if (this.type3Loaded) { - return this.type3Loaded; - } + if (cidToGidMap) { + for (const charCode in map) { + const cid = map[charCode]; - var type3Options = Object.create(evaluator.options); - type3Options.ignoreErrors = false; - type3Options.nativeImageDecoderSupport = _util.NativeImageDecoding.NONE; - var type3Evaluator = evaluator.clone(type3Options); - type3Evaluator.parsingType3Font = true; - var translatedFont = this.font; - var loadCharProcsPromise = Promise.resolve(); - var charProcs = this.dict.get('CharProcs'); - var fontResources = this.dict.get('Resources') || resources; - var charProcKeys = charProcs.getKeys(); - var charProcOperatorList = Object.create(null); + if (cidToGidMap[cid] !== undefined) { + map[+charCode] = cidToGidMap[cid]; + } + } - var _loop2 = function _loop2() { - var key = charProcKeys[i]; - loadCharProcsPromise = loadCharProcsPromise.then(function () { - var glyphStream = charProcs.get(key); - var operatorList = new _operator_list.OperatorList(); - return type3Evaluator.getOperatorList({ - stream: glyphStream, - task: task, - resources: fontResources, - operatorList: operatorList - }).then(function () { - charProcOperatorList[key] = operatorList.getIR(); - parentOperatorList.addDependencies(operatorList.dependencies); - })["catch"](function (reason) { - (0, _util.warn)("Type3 font resource \"".concat(key, "\" is not available.")); - var operatorList = new _operator_list.OperatorList(); - charProcOperatorList[key] = operatorList.getIR(); + if (cidToGidMap.length !== this.toUnicode.length && properties.hasIncludedToUnicodeMap && this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) { + this.toUnicode.forEach(function (charCode, unicodeCharCode) { + const cid = map[charCode]; + + if (cidToGidMap[cid] === undefined) { + map[+charCode] = unicodeCharCode; + } }); + } + } + + if (!(this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap)) { + this.toUnicode.forEach(function (charCode, unicodeCharCode) { + map[+charCode] = unicodeCharCode; }); - }; - - for (var i = 0, n = charProcKeys.length; i < n; ++i) { - _loop2(); } - this.type3Loaded = loadCharProcsPromise.then(function () { - translatedFont.charProcOperatorList = charProcOperatorList; + this.toFontChar = map; + this.toUnicode = new _to_unicode_map.ToUnicodeMap(map); + } else if (/Symbol/i.test(fontName)) { + this.toFontChar = buildToFontChar(_encodings.SymbolSetEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences); + } else if (/Dingbats/i.test(fontName)) { + if (/Wingdings/i.test(name)) { + (0, _util.warn)("Non-embedded Wingdings font, falling back to ZapfDingbats."); + } + + this.toFontChar = buildToFontChar(_encodings.ZapfDingbatsEncoding, (0, _glyphlist.getDingbatsGlyphsUnicode)(), this.differences); + } else if (isStandardFont) { + const map = buildToFontChar(this.defaultEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences); + + if (type === "CIDFontType2" && !this.cidEncoding.startsWith("Identity-") && !(this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap)) { + this.toUnicode.forEach(function (charCode, unicodeCharCode) { + map[+charCode] = unicodeCharCode; + }); + } + + this.toFontChar = map; + } else { + const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + const map = []; + this.toUnicode.forEach((charCode, unicodeCharCode) => { + if (!this.composite) { + const glyphName = this.differences[charCode] || this.defaultEncoding[charCode]; + const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap); + + if (unicode !== -1) { + unicodeCharCode = unicode; + } + } + + map[+charCode] = unicodeCharCode; }); - return this.type3Loaded; - } - }; - return TranslatedFont; -}(); -var StateManager = function StateManagerClosure() { - function StateManager(initialState) { - this.state = initialState; - this.stateStack = []; + if (this.composite && this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) { + if (/Verdana/i.test(name)) { + applyStandardFontGlyphMap(map, (0, _standard_fonts.getGlyphMapForStandardFonts)()); + } + } + + this.toFontChar = map; + } + + amendFallbackToUnicode(properties); + this.loadedName = fontName.split("-")[0]; + this.fontType = (0, _fonts_utils.getFontType)(type, subtype, properties.isStandardFont); } - StateManager.prototype = { - save: function save() { - var old = this.state; - this.stateStack.push(this.state); - this.state = old.clone(); - }, - restore: function restore() { - var prev = this.stateStack.pop(); + checkAndRepair(name, font, properties) { + const VALID_TABLES = ["OS/2", "cmap", "head", "hhea", "hmtx", "maxp", "name", "post", "loca", "glyf", "fpgm", "prep", "cvt ", "CFF "]; - if (prev) { - this.state = prev; + function readTables(file, numTables) { + const tables = Object.create(null); + tables["OS/2"] = null; + tables.cmap = null; + tables.head = null; + tables.hhea = null; + tables.hmtx = null; + tables.maxp = null; + tables.name = null; + tables.post = null; + + for (let i = 0; i < numTables; i++) { + const table = readTableEntry(file); + + if (!VALID_TABLES.includes(table.tag)) { + continue; + } + + if (table.length === 0) { + continue; + } + + tables[table.tag] = table; } - }, - transform: function transform(args) { - this.state.ctm = _util.Util.transform(this.state.ctm, args); + + return tables; } - }; - return StateManager; -}(); -var TextState = function TextStateClosure() { - function TextState() { - this.ctm = new Float32Array(_util.IDENTITY_MATRIX); - this.fontName = null; - this.fontSize = 0; - this.font = null; - this.fontMatrix = _util.FONT_IDENTITY_MATRIX; - this.textMatrix = _util.IDENTITY_MATRIX.slice(); - this.textLineMatrix = _util.IDENTITY_MATRIX.slice(); - this.charSpacing = 0; - this.wordSpacing = 0; - this.leading = 0; - this.textHScale = 1; - this.textRise = 0; - } + function readTableEntry(file) { + const tag = file.getString(4); + const checksum = file.getInt32() >>> 0; + const offset = file.getInt32() >>> 0; + const length = file.getInt32() >>> 0; + const previousPosition = file.pos; + file.pos = file.start || 0; + file.skip(offset); + const data = file.getBytes(length); + file.pos = previousPosition; - TextState.prototype = { - setTextMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) { - var m = this.textMatrix; - m[0] = a; - m[1] = b; - m[2] = c; - m[3] = d; - m[4] = e; - m[5] = f; - }, - setTextLineMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) { - var m = this.textLineMatrix; - m[0] = a; - m[1] = b; - m[2] = c; - m[3] = d; - m[4] = e; - m[5] = f; - }, - translateTextMatrix: function TextState_translateTextMatrix(x, y) { - var m = this.textMatrix; - m[4] = m[0] * x + m[2] * y + m[4]; - m[5] = m[1] * x + m[3] * y + m[5]; - }, - translateTextLineMatrix: function TextState_translateTextMatrix(x, y) { - var m = this.textLineMatrix; - m[4] = m[0] * x + m[2] * y + m[4]; - m[5] = m[1] * x + m[3] * y + m[5]; - }, - calcTextLineMatrixAdvance: function TextState_calcTextLineMatrixAdvance(a, b, c, d, e, f) { - var font = this.font; - - if (!font) { - return null; - } - - var m = this.textLineMatrix; - - if (!(a === m[0] && b === m[1] && c === m[2] && d === m[3])) { - return null; - } - - var txDiff = e - m[4], - tyDiff = f - m[5]; - - if (font.vertical && txDiff !== 0 || !font.vertical && tyDiff !== 0) { - return null; - } - - var tx, - ty, - denominator = a * d - b * c; - - if (font.vertical) { - tx = -tyDiff * c / denominator; - ty = tyDiff * a / denominator; - } else { - tx = txDiff * d / denominator; - ty = -txDiff * b / denominator; + if (tag === "head") { + data[8] = data[9] = data[10] = data[11] = 0; + data[17] |= 0x20; } return { - width: tx, - height: ty, - value: font.vertical ? ty : tx + tag, + checksum, + length, + offset, + data }; - }, - calcRenderMatrix: function TextState_calcRendeMatrix(ctm) { - var tsm = [this.fontSize * this.textHScale, 0, 0, this.fontSize, 0, this.textRise]; - return _util.Util.transform(ctm, _util.Util.transform(this.textMatrix, tsm)); - }, - carriageReturn: function TextState_carriageReturn() { - this.translateTextLineMatrix(0, -this.leading); - this.textMatrix = this.textLineMatrix.slice(); - }, - clone: function TextState_clone() { - var clone = Object.create(this); - clone.textMatrix = this.textMatrix.slice(); - clone.textLineMatrix = this.textLineMatrix.slice(); - clone.fontMatrix = this.fontMatrix.slice(); - return clone; } - }; - return TextState; -}(); -var EvalState = function EvalStateClosure() { - function EvalState() { - this.ctm = new Float32Array(_util.IDENTITY_MATRIX); - this.font = null; - this.textRenderingMode = _util.TextRenderingMode.FILL; - this.fillColorSpace = _colorspace.ColorSpace.singletons.gray; - this.strokeColorSpace = _colorspace.ColorSpace.singletons.gray; - } - - EvalState.prototype = { - clone: function CanvasExtraState_clone() { - return Object.create(this); + function readOpenTypeHeader(ttf) { + return { + version: ttf.getString(4), + numTables: ttf.getUint16(), + searchRange: ttf.getUint16(), + entrySelector: ttf.getUint16(), + rangeShift: ttf.getUint16() + }; } - }; - return EvalState; -}(); -var EvaluatorPreprocessor = function EvaluatorPreprocessorClosure() { - var getOPMap = (0, _core_utils.getLookupTableFactory)(function (t) { - t['w'] = { - id: _util.OPS.setLineWidth, - numArgs: 1, - variableArgs: false - }; - t['J'] = { - id: _util.OPS.setLineCap, - numArgs: 1, - variableArgs: false - }; - t['j'] = { - id: _util.OPS.setLineJoin, - numArgs: 1, - variableArgs: false - }; - t['M'] = { - id: _util.OPS.setMiterLimit, - numArgs: 1, - variableArgs: false - }; - t['d'] = { - id: _util.OPS.setDash, - numArgs: 2, - variableArgs: false - }; - t['ri'] = { - id: _util.OPS.setRenderingIntent, - numArgs: 1, - variableArgs: false - }; - t['i'] = { - id: _util.OPS.setFlatness, - numArgs: 1, - variableArgs: false - }; - t['gs'] = { - id: _util.OPS.setGState, - numArgs: 1, - variableArgs: false - }; - t['q'] = { - id: _util.OPS.save, - numArgs: 0, - variableArgs: false - }; - t['Q'] = { - id: _util.OPS.restore, - numArgs: 0, - variableArgs: false - }; - t['cm'] = { - id: _util.OPS.transform, - numArgs: 6, - variableArgs: false - }; - t['m'] = { - id: _util.OPS.moveTo, - numArgs: 2, - variableArgs: false - }; - t['l'] = { - id: _util.OPS.lineTo, - numArgs: 2, - variableArgs: false - }; - t['c'] = { - id: _util.OPS.curveTo, - numArgs: 6, - variableArgs: false - }; - t['v'] = { - id: _util.OPS.curveTo2, - numArgs: 4, - variableArgs: false - }; - t['y'] = { - id: _util.OPS.curveTo3, - numArgs: 4, - variableArgs: false - }; - t['h'] = { - id: _util.OPS.closePath, - numArgs: 0, - variableArgs: false - }; - t['re'] = { - id: _util.OPS.rectangle, - numArgs: 4, - variableArgs: false - }; - t['S'] = { - id: _util.OPS.stroke, - numArgs: 0, - variableArgs: false - }; - t['s'] = { - id: _util.OPS.closeStroke, - numArgs: 0, - variableArgs: false - }; - t['f'] = { - id: _util.OPS.fill, - numArgs: 0, - variableArgs: false - }; - t['F'] = { - id: _util.OPS.fill, - numArgs: 0, - variableArgs: false - }; - t['f*'] = { - id: _util.OPS.eoFill, - numArgs: 0, - variableArgs: false - }; - t['B'] = { - id: _util.OPS.fillStroke, - numArgs: 0, - variableArgs: false - }; - t['B*'] = { - id: _util.OPS.eoFillStroke, - numArgs: 0, - variableArgs: false - }; - t['b'] = { - id: _util.OPS.closeFillStroke, - numArgs: 0, - variableArgs: false - }; - t['b*'] = { - id: _util.OPS.closeEOFillStroke, - numArgs: 0, - variableArgs: false - }; - t['n'] = { - id: _util.OPS.endPath, - numArgs: 0, - variableArgs: false - }; - t['W'] = { - id: _util.OPS.clip, - numArgs: 0, - variableArgs: false - }; - t['W*'] = { - id: _util.OPS.eoClip, - numArgs: 0, - variableArgs: false - }; - t['BT'] = { - id: _util.OPS.beginText, - numArgs: 0, - variableArgs: false - }; - t['ET'] = { - id: _util.OPS.endText, - numArgs: 0, - variableArgs: false - }; - t['Tc'] = { - id: _util.OPS.setCharSpacing, - numArgs: 1, - variableArgs: false - }; - t['Tw'] = { - id: _util.OPS.setWordSpacing, - numArgs: 1, - variableArgs: false - }; - t['Tz'] = { - id: _util.OPS.setHScale, - numArgs: 1, - variableArgs: false - }; - t['TL'] = { - id: _util.OPS.setLeading, - numArgs: 1, - variableArgs: false - }; - t['Tf'] = { - id: _util.OPS.setFont, - numArgs: 2, - variableArgs: false - }; - t['Tr'] = { - id: _util.OPS.setTextRenderingMode, - numArgs: 1, - variableArgs: false - }; - t['Ts'] = { - id: _util.OPS.setTextRise, - numArgs: 1, - variableArgs: false - }; - t['Td'] = { - id: _util.OPS.moveText, - numArgs: 2, - variableArgs: false - }; - t['TD'] = { - id: _util.OPS.setLeadingMoveText, - numArgs: 2, - variableArgs: false - }; - t['Tm'] = { - id: _util.OPS.setTextMatrix, - numArgs: 6, - variableArgs: false - }; - t['T*'] = { - id: _util.OPS.nextLine, - numArgs: 0, - variableArgs: false - }; - t['Tj'] = { - id: _util.OPS.showText, - numArgs: 1, - variableArgs: false - }; - t['TJ'] = { - id: _util.OPS.showSpacedText, - numArgs: 1, - variableArgs: false - }; - t['\''] = { - id: _util.OPS.nextLineShowText, - numArgs: 1, - variableArgs: false - }; - t['"'] = { - id: _util.OPS.nextLineSetSpacingShowText, - numArgs: 3, - variableArgs: false - }; - t['d0'] = { - id: _util.OPS.setCharWidth, - numArgs: 2, - variableArgs: false - }; - t['d1'] = { - id: _util.OPS.setCharWidthAndBounds, - numArgs: 6, - variableArgs: false - }; - t['CS'] = { - id: _util.OPS.setStrokeColorSpace, - numArgs: 1, - variableArgs: false - }; - t['cs'] = { - id: _util.OPS.setFillColorSpace, - numArgs: 1, - variableArgs: false - }; - t['SC'] = { - id: _util.OPS.setStrokeColor, - numArgs: 4, - variableArgs: true - }; - t['SCN'] = { - id: _util.OPS.setStrokeColorN, - numArgs: 33, - variableArgs: true - }; - t['sc'] = { - id: _util.OPS.setFillColor, - numArgs: 4, - variableArgs: true - }; - t['scn'] = { - id: _util.OPS.setFillColorN, - numArgs: 33, - variableArgs: true - }; - t['G'] = { - id: _util.OPS.setStrokeGray, - numArgs: 1, - variableArgs: false - }; - t['g'] = { - id: _util.OPS.setFillGray, - numArgs: 1, - variableArgs: false - }; - t['RG'] = { - id: _util.OPS.setStrokeRGBColor, - numArgs: 3, - variableArgs: false - }; - t['rg'] = { - id: _util.OPS.setFillRGBColor, - numArgs: 3, - variableArgs: false - }; - t['K'] = { - id: _util.OPS.setStrokeCMYKColor, - numArgs: 4, - variableArgs: false - }; - t['k'] = { - id: _util.OPS.setFillCMYKColor, - numArgs: 4, - variableArgs: false - }; - t['sh'] = { - id: _util.OPS.shadingFill, - numArgs: 1, - variableArgs: false - }; - t['BI'] = { - id: _util.OPS.beginInlineImage, - numArgs: 0, - variableArgs: false - }; - t['ID'] = { - id: _util.OPS.beginImageData, - numArgs: 0, - variableArgs: false - }; - t['EI'] = { - id: _util.OPS.endInlineImage, - numArgs: 1, - variableArgs: false - }; - t['Do'] = { - id: _util.OPS.paintXObject, - numArgs: 1, - variableArgs: false - }; - t['MP'] = { - id: _util.OPS.markPoint, - numArgs: 1, - variableArgs: false - }; - t['DP'] = { - id: _util.OPS.markPointProps, - numArgs: 2, - variableArgs: false - }; - t['BMC'] = { - id: _util.OPS.beginMarkedContent, - numArgs: 1, - variableArgs: false - }; - t['BDC'] = { - id: _util.OPS.beginMarkedContentProps, - numArgs: 2, - variableArgs: false - }; - t['EMC'] = { - id: _util.OPS.endMarkedContent, - numArgs: 0, - variableArgs: false - }; - t['BX'] = { - id: _util.OPS.beginCompat, - numArgs: 0, - variableArgs: false - }; - t['EX'] = { - id: _util.OPS.endCompat, - numArgs: 0, - variableArgs: false - }; - t['BM'] = null; - t['BD'] = null; - t['true'] = null; - t['fa'] = null; - t['fal'] = null; - t['fals'] = null; - t['false'] = null; - t['nu'] = null; - t['nul'] = null; - t['null'] = null; - }); - var MAX_INVALID_PATH_OPS = 20; + function readTrueTypeCollectionHeader(ttc) { + const ttcTag = ttc.getString(4); + (0, _util.assert)(ttcTag === "ttcf", "Must be a TrueType Collection font."); + const majorVersion = ttc.getUint16(); + const minorVersion = ttc.getUint16(); + const numFonts = ttc.getInt32() >>> 0; + const offsetTable = []; - function EvaluatorPreprocessor(stream, xref, stateManager) { - this.opMap = getOPMap(); - this.parser = new _parser.Parser({ - lexer: new _parser.Lexer(stream, this.opMap), - xref: xref - }); - this.stateManager = stateManager; - this.nonProcessedArgs = []; - this._numInvalidPathOPS = 0; - } + for (let i = 0; i < numFonts; i++) { + offsetTable.push(ttc.getInt32() >>> 0); + } - EvaluatorPreprocessor.prototype = { - get savedStatesDepth() { - return this.stateManager.stateStack.length; - }, + const header = { + ttcTag, + majorVersion, + minorVersion, + numFonts, + offsetTable + }; - read: function EvaluatorPreprocessor_read(operation) { - var args = operation.args; + switch (majorVersion) { + case 1: + return header; - while (true) { - var obj = this.parser.getObj(); + case 2: + header.dsigTag = ttc.getInt32() >>> 0; + header.dsigLength = ttc.getInt32() >>> 0; + header.dsigOffset = ttc.getInt32() >>> 0; + return header; + } - if ((0, _primitives.isCmd)(obj)) { - var cmd = obj.cmd; - var opSpec = this.opMap[cmd]; + throw new _util.FormatError(`Invalid TrueType Collection majorVersion: ${majorVersion}.`); + } - if (!opSpec) { - (0, _util.warn)("Unknown command \"".concat(cmd, "\".")); + function readTrueTypeCollectionData(ttc, fontName) { + const { + numFonts, + offsetTable + } = readTrueTypeCollectionHeader(ttc); + const fontNameParts = fontName.split("+"); + let fallbackData; + + for (let i = 0; i < numFonts; i++) { + ttc.pos = (ttc.start || 0) + offsetTable[i]; + const potentialHeader = readOpenTypeHeader(ttc); + const potentialTables = readTables(ttc, potentialHeader.numTables); + + if (!potentialTables.name) { + throw new _util.FormatError('TrueType Collection font must contain a "name" table.'); + } + + const nameTable = readNameTable(potentialTables.name); + + for (let j = 0, jj = nameTable.length; j < jj; j++) { + for (let k = 0, kk = nameTable[j].length; k < kk; k++) { + const nameEntry = nameTable[j][k] && nameTable[j][k].replace(/\s/g, ""); + + if (!nameEntry) { + continue; + } + + if (nameEntry === fontName) { + return { + header: potentialHeader, + tables: potentialTables + }; + } + + if (fontNameParts.length < 2) { + continue; + } + + for (const part of fontNameParts) { + if (nameEntry === part) { + fallbackData = { + name: part, + header: potentialHeader, + tables: potentialTables + }; + } + } + } + } + } + + if (fallbackData) { + (0, _util.warn)(`TrueType Collection does not contain "${fontName}" font, ` + `falling back to "${fallbackData.name}" font instead.`); + return { + header: fallbackData.header, + tables: fallbackData.tables + }; + } + + throw new _util.FormatError(`TrueType Collection does not contain "${fontName}" font.`); + } + + function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) { + if (!cmap) { + (0, _util.warn)("No cmap table available."); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: false + }; + } + + let segment; + let start = (file.start || 0) + cmap.offset; + file.pos = start; + file.skip(2); + const numTables = file.getUint16(); + let potentialTable; + let canBreak = false; + + for (let i = 0; i < numTables; i++) { + const platformId = file.getUint16(); + const encodingId = file.getUint16(); + const offset = file.getInt32() >>> 0; + let useTable = false; + + if (potentialTable && potentialTable.platformId === platformId && potentialTable.encodingId === encodingId) { + continue; + } + + if (platformId === 0 && (encodingId === 0 || encodingId === 1 || encodingId === 3)) { + useTable = true; + } else if (platformId === 1 && encodingId === 0) { + useTable = true; + } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) { + useTable = true; + + if (!isSymbolicFont) { + canBreak = true; + } + } else if (isSymbolicFont && platformId === 3 && encodingId === 0) { + useTable = true; + let correctlySorted = true; + + if (i < numTables - 1) { + const nextBytes = file.peekBytes(2), + nextPlatformId = int16(nextBytes[0], nextBytes[1]); + + if (nextPlatformId < platformId) { + correctlySorted = false; + } + } + + if (correctlySorted) { + canBreak = true; + } + } + + if (useTable) { + potentialTable = { + platformId, + encodingId, + offset + }; + } + + if (canBreak) { + break; + } + } + + if (potentialTable) { + file.pos = start + potentialTable.offset; + } + + if (!potentialTable || file.peekByte() === -1) { + (0, _util.warn)("Could not find a preferred cmap table."); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: false + }; + } + + const format = file.getUint16(); + let hasShortCmap = false; + const mappings = []; + let j, glyphId; + + if (format === 0) { + file.skip(2 + 2); + + for (j = 0; j < 256; j++) { + const index = file.getByte(); + + if (!index) { continue; } - var fn = opSpec.id; - var numArgs = opSpec.numArgs; - var argsLength = args !== null ? args.length : 0; + mappings.push({ + charCode: j, + glyphId: index + }); + } - if (!opSpec.variableArgs) { - if (argsLength !== numArgs) { - var nonProcessedArgs = this.nonProcessedArgs; + hasShortCmap = true; + } else if (format === 2) { + file.skip(2 + 2); + const subHeaderKeys = []; + let maxSubHeaderKey = 0; - while (argsLength > numArgs) { - nonProcessedArgs.push(args.shift()); - argsLength--; + for (let i = 0; i < 256; i++) { + const subHeaderKey = file.getUint16() >> 3; + subHeaderKeys.push(subHeaderKey); + maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey); + } + + const subHeaders = []; + + for (let i = 0; i <= maxSubHeaderKey; i++) { + subHeaders.push({ + firstCode: file.getUint16(), + entryCount: file.getUint16(), + idDelta: signedInt16(file.getByte(), file.getByte()), + idRangePos: file.pos + file.getUint16() + }); + } + + for (let i = 0; i < 256; i++) { + if (subHeaderKeys[i] === 0) { + file.pos = subHeaders[0].idRangePos + 2 * i; + glyphId = file.getUint16(); + mappings.push({ + charCode: i, + glyphId + }); + } else { + const s = subHeaders[subHeaderKeys[i]]; + + for (j = 0; j < s.entryCount; j++) { + const charCode = (i << 8) + j + s.firstCode; + file.pos = s.idRangePos + 2 * j; + glyphId = file.getUint16(); + + if (glyphId !== 0) { + glyphId = (glyphId + s.idDelta) % 65536; } - while (argsLength < numArgs && nonProcessedArgs.length !== 0) { - if (args === null) { - args = []; - } - - args.unshift(nonProcessedArgs.pop()); - argsLength++; - } + mappings.push({ + charCode, + glyphId + }); } + } + } + } else if (format === 4) { + file.skip(2 + 2); + const segCount = file.getUint16() >> 1; + file.skip(6); + const segments = []; + let segIndex; - if (argsLength < numArgs) { - var partialMsg = "command ".concat(cmd, ": expected ").concat(numArgs, " args, ") + "but received ".concat(argsLength, " args."); + for (segIndex = 0; segIndex < segCount; segIndex++) { + segments.push({ + end: file.getUint16() + }); + } - if (fn >= _util.OPS.moveTo && fn <= _util.OPS.endPath && ++this._numInvalidPathOPS > MAX_INVALID_PATH_OPS) { - throw new _util.FormatError("Invalid ".concat(partialMsg)); - } + file.skip(2); - (0, _util.warn)("Skipping ".concat(partialMsg)); + for (segIndex = 0; segIndex < segCount; segIndex++) { + segments[segIndex].start = file.getUint16(); + } - if (args !== null) { - args.length = 0; - } + for (segIndex = 0; segIndex < segCount; segIndex++) { + segments[segIndex].delta = file.getUint16(); + } + let offsetsCount = 0, + offsetIndex; + + for (segIndex = 0; segIndex < segCount; segIndex++) { + segment = segments[segIndex]; + const rangeOffset = file.getUint16(); + + if (!rangeOffset) { + segment.offsetIndex = -1; + continue; + } + + offsetIndex = (rangeOffset >> 1) - (segCount - segIndex); + segment.offsetIndex = offsetIndex; + offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1); + } + + const offsets = []; + + for (j = 0; j < offsetsCount; j++) { + offsets.push(file.getUint16()); + } + + for (segIndex = 0; segIndex < segCount; segIndex++) { + segment = segments[segIndex]; + start = segment.start; + const end = segment.end; + const delta = segment.delta; + offsetIndex = segment.offsetIndex; + + for (j = start; j <= end; j++) { + if (j === 0xffff) { continue; } - } else if (argsLength > numArgs) { - (0, _util.info)("Command ".concat(cmd, ": expected [0, ").concat(numArgs, "] args, ") + "but received ".concat(argsLength, " args.")); - } - this.preprocessCommand(fn, args); - operation.fn = fn; - operation.args = args; - return true; - } - - if ((0, _primitives.isEOF)(obj)) { - return false; - } - - if (obj !== null) { - if (args === null) { - args = []; - } - - args.push(obj); - - if (args.length > 33) { - throw new _util.FormatError('Too many arguments'); + glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start]; + glyphId = glyphId + delta & 0xffff; + mappings.push({ + charCode: j, + glyphId + }); } } - } - }, - preprocessCommand: function EvaluatorPreprocessor_preprocessCommand(fn, args) { - switch (fn | 0) { - case _util.OPS.save: - this.stateManager.save(); - break; + } else if (format === 6) { + file.skip(2 + 2); + const firstCode = file.getUint16(); + const entryCount = file.getUint16(); - case _util.OPS.restore: - this.stateManager.restore(); - break; + for (j = 0; j < entryCount; j++) { + glyphId = file.getUint16(); + const charCode = firstCode + j; + mappings.push({ + charCode, + glyphId + }); + } + } else if (format === 12) { + file.skip(2 + 4 + 4); + const nGroups = file.getInt32() >>> 0; - case _util.OPS.transform: - this.stateManager.transform(args); - break; - } - } - }; - return EvaluatorPreprocessor; -}(); + for (j = 0; j < nGroups; j++) { + const startCharCode = file.getInt32() >>> 0; + const endCharCode = file.getInt32() >>> 0; + let glyphCode = file.getInt32() >>> 0; -/***/ }), -/* 173 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.CMapFactory = exports.IdentityCMap = exports.CMap = void 0; - -var _util = __w_pdfjs_require__(5); - -var _primitives = __w_pdfjs_require__(151); - -var _parser = __w_pdfjs_require__(157); - -var _core_utils = __w_pdfjs_require__(154); - -var _stream = __w_pdfjs_require__(158); - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var BUILT_IN_CMAPS = ['Adobe-GB1-UCS2', 'Adobe-CNS1-UCS2', 'Adobe-Japan1-UCS2', 'Adobe-Korea1-UCS2', '78-EUC-H', '78-EUC-V', '78-H', '78-RKSJ-H', '78-RKSJ-V', '78-V', '78ms-RKSJ-H', '78ms-RKSJ-V', '83pv-RKSJ-H', '90ms-RKSJ-H', '90ms-RKSJ-V', '90msp-RKSJ-H', '90msp-RKSJ-V', '90pv-RKSJ-H', '90pv-RKSJ-V', 'Add-H', 'Add-RKSJ-H', 'Add-RKSJ-V', 'Add-V', 'Adobe-CNS1-0', 'Adobe-CNS1-1', 'Adobe-CNS1-2', 'Adobe-CNS1-3', 'Adobe-CNS1-4', 'Adobe-CNS1-5', 'Adobe-CNS1-6', 'Adobe-GB1-0', 'Adobe-GB1-1', 'Adobe-GB1-2', 'Adobe-GB1-3', 'Adobe-GB1-4', 'Adobe-GB1-5', 'Adobe-Japan1-0', 'Adobe-Japan1-1', 'Adobe-Japan1-2', 'Adobe-Japan1-3', 'Adobe-Japan1-4', 'Adobe-Japan1-5', 'Adobe-Japan1-6', 'Adobe-Korea1-0', 'Adobe-Korea1-1', 'Adobe-Korea1-2', 'B5-H', 'B5-V', 'B5pc-H', 'B5pc-V', 'CNS-EUC-H', 'CNS-EUC-V', 'CNS1-H', 'CNS1-V', 'CNS2-H', 'CNS2-V', 'ETHK-B5-H', 'ETHK-B5-V', 'ETen-B5-H', 'ETen-B5-V', 'ETenms-B5-H', 'ETenms-B5-V', 'EUC-H', 'EUC-V', 'Ext-H', 'Ext-RKSJ-H', 'Ext-RKSJ-V', 'Ext-V', 'GB-EUC-H', 'GB-EUC-V', 'GB-H', 'GB-V', 'GBK-EUC-H', 'GBK-EUC-V', 'GBK2K-H', 'GBK2K-V', 'GBKp-EUC-H', 'GBKp-EUC-V', 'GBT-EUC-H', 'GBT-EUC-V', 'GBT-H', 'GBT-V', 'GBTpc-EUC-H', 'GBTpc-EUC-V', 'GBpc-EUC-H', 'GBpc-EUC-V', 'H', 'HKdla-B5-H', 'HKdla-B5-V', 'HKdlb-B5-H', 'HKdlb-B5-V', 'HKgccs-B5-H', 'HKgccs-B5-V', 'HKm314-B5-H', 'HKm314-B5-V', 'HKm471-B5-H', 'HKm471-B5-V', 'HKscs-B5-H', 'HKscs-B5-V', 'Hankaku', 'Hiragana', 'KSC-EUC-H', 'KSC-EUC-V', 'KSC-H', 'KSC-Johab-H', 'KSC-Johab-V', 'KSC-V', 'KSCms-UHC-H', 'KSCms-UHC-HW-H', 'KSCms-UHC-HW-V', 'KSCms-UHC-V', 'KSCpc-EUC-H', 'KSCpc-EUC-V', 'Katakana', 'NWP-H', 'NWP-V', 'RKSJ-H', 'RKSJ-V', 'Roman', 'UniCNS-UCS2-H', 'UniCNS-UCS2-V', 'UniCNS-UTF16-H', 'UniCNS-UTF16-V', 'UniCNS-UTF32-H', 'UniCNS-UTF32-V', 'UniCNS-UTF8-H', 'UniCNS-UTF8-V', 'UniGB-UCS2-H', 'UniGB-UCS2-V', 'UniGB-UTF16-H', 'UniGB-UTF16-V', 'UniGB-UTF32-H', 'UniGB-UTF32-V', 'UniGB-UTF8-H', 'UniGB-UTF8-V', 'UniJIS-UCS2-H', 'UniJIS-UCS2-HW-H', 'UniJIS-UCS2-HW-V', 'UniJIS-UCS2-V', 'UniJIS-UTF16-H', 'UniJIS-UTF16-V', 'UniJIS-UTF32-H', 'UniJIS-UTF32-V', 'UniJIS-UTF8-H', 'UniJIS-UTF8-V', 'UniJIS2004-UTF16-H', 'UniJIS2004-UTF16-V', 'UniJIS2004-UTF32-H', 'UniJIS2004-UTF32-V', 'UniJIS2004-UTF8-H', 'UniJIS2004-UTF8-V', 'UniJISPro-UCS2-HW-V', 'UniJISPro-UCS2-V', 'UniJISPro-UTF8-V', 'UniJISX0213-UTF32-H', 'UniJISX0213-UTF32-V', 'UniJISX02132004-UTF32-H', 'UniJISX02132004-UTF32-V', 'UniKS-UCS2-H', 'UniKS-UCS2-V', 'UniKS-UTF16-H', 'UniKS-UTF16-V', 'UniKS-UTF32-H', 'UniKS-UTF32-V', 'UniKS-UTF8-H', 'UniKS-UTF8-V', 'V', 'WP-Symbol']; - -var CMap = -/*#__PURE__*/ -function () { - function CMap() { - var builtInCMap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - _classCallCheck(this, CMap); - - this.codespaceRanges = [[], [], [], []]; - this.numCodespaceRanges = 0; - this._map = []; - this.name = ''; - this.vertical = false; - this.useCMap = null; - this.builtInCMap = builtInCMap; - } - - _createClass(CMap, [{ - key: "addCodespaceRange", - value: function addCodespaceRange(n, low, high) { - this.codespaceRanges[n - 1].push(low, high); - this.numCodespaceRanges++; - } - }, { - key: "mapCidRange", - value: function mapCidRange(low, high, dstLow) { - while (low <= high) { - this._map[low++] = dstLow++; - } - } - }, { - key: "mapBfRange", - value: function mapBfRange(low, high, dstLow) { - var lastByte = dstLow.length - 1; - - while (low <= high) { - this._map[low++] = dstLow; - dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(dstLow.charCodeAt(lastByte) + 1); - } - } - }, { - key: "mapBfRangeToArray", - value: function mapBfRangeToArray(low, high, array) { - var i = 0, - ii = array.length; - - while (low <= high && i < ii) { - this._map[low] = array[i++]; - ++low; - } - } - }, { - key: "mapOne", - value: function mapOne(src, dst) { - this._map[src] = dst; - } - }, { - key: "lookup", - value: function lookup(code) { - return this._map[code]; - } - }, { - key: "contains", - value: function contains(code) { - return this._map[code] !== undefined; - } - }, { - key: "forEach", - value: function forEach(callback) { - var map = this._map; - var length = map.length; - - if (length <= 0x10000) { - for (var i = 0; i < length; i++) { - if (map[i] !== undefined) { - callback(i, map[i]); + for (let charCode = startCharCode; charCode <= endCharCode; charCode++) { + mappings.push({ + charCode, + glyphId: glyphCode++ + }); } } } else { - for (var _i in map) { - callback(_i, map[_i]); + (0, _util.warn)("cmap table has unsupported format: " + format); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: false + }; + } + + mappings.sort(function (a, b) { + return a.charCode - b.charCode; + }); + + for (let i = 1; i < mappings.length; i++) { + if (mappings[i - 1].charCode === mappings[i].charCode) { + mappings.splice(i, 1); + i--; + } + } + + return { + platformId: potentialTable.platformId, + encodingId: potentialTable.encodingId, + mappings, + hasShortCmap + }; + } + + function sanitizeMetrics(file, header, metrics, headTable, numGlyphs, dupFirstEntry) { + if (!header) { + if (metrics) { + metrics.data = null; + } + + return; + } + + file.pos = (file.start || 0) + header.offset; + file.pos += 4; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + const caretOffset = file.getUint16(); + file.pos += 8; + file.pos += 2; + let numOfMetrics = file.getUint16(); + + if (caretOffset !== 0) { + const macStyle = int16(headTable.data[44], headTable.data[45]); + + if (!(macStyle & 2)) { + header.data[22] = 0; + header.data[23] = 0; + } + } + + if (numOfMetrics > numGlyphs) { + (0, _util.info)(`The numOfMetrics (${numOfMetrics}) should not be ` + `greater than the numGlyphs (${numGlyphs}).`); + numOfMetrics = numGlyphs; + header.data[34] = (numOfMetrics & 0xff00) >> 8; + header.data[35] = numOfMetrics & 0x00ff; + } + + const numOfSidebearings = numGlyphs - numOfMetrics; + const numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1); + + if (numMissing > 0) { + const entries = new Uint8Array(metrics.length + numMissing * 2); + entries.set(metrics.data); + + if (dupFirstEntry) { + entries[metrics.length] = metrics.data[2]; + entries[metrics.length + 1] = metrics.data[3]; + } + + metrics.data = entries; + } + } + + function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) { + const glyphProfile = { + length: 0, + sizeOfInstructions: 0 + }; + + if (sourceEnd - sourceStart <= 12) { + return glyphProfile; + } + + const glyf = source.subarray(sourceStart, sourceEnd); + let contoursCount = signedInt16(glyf[0], glyf[1]); + + if (contoursCount < 0) { + contoursCount = -1; + writeSignedInt16(glyf, 0, contoursCount); + dest.set(glyf, destStart); + glyphProfile.length = glyf.length; + return glyphProfile; + } + + let i, + j = 10, + flagsCount = 0; + + for (i = 0; i < contoursCount; i++) { + const endPoint = glyf[j] << 8 | glyf[j + 1]; + flagsCount = endPoint + 1; + j += 2; + } + + const instructionsStart = j; + const instructionsLength = glyf[j] << 8 | glyf[j + 1]; + glyphProfile.sizeOfInstructions = instructionsLength; + j += 2 + instructionsLength; + const instructionsEnd = j; + let coordinatesLength = 0; + + for (i = 0; i < flagsCount; i++) { + const flag = glyf[j++]; + + if (flag & 0xc0) { + glyf[j - 1] = flag & 0x3f; + } + + let xLength = 2; + + if (flag & 2) { + xLength = 1; + } else if (flag & 16) { + xLength = 0; + } + + let yLength = 2; + + if (flag & 4) { + yLength = 1; + } else if (flag & 32) { + yLength = 0; + } + + const xyLength = xLength + yLength; + coordinatesLength += xyLength; + + if (flag & 8) { + const repeat = glyf[j++]; + i += repeat; + coordinatesLength += repeat * xyLength; + } + } + + if (coordinatesLength === 0) { + return glyphProfile; + } + + let glyphDataLength = j + coordinatesLength; + + if (glyphDataLength > glyf.length) { + return glyphProfile; + } + + if (!hintsValid && instructionsLength > 0) { + dest.set(glyf.subarray(0, instructionsStart), destStart); + dest.set([0, 0], destStart + instructionsStart); + dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2); + glyphDataLength -= instructionsLength; + + if (glyf.length - glyphDataLength > 3) { + glyphDataLength = glyphDataLength + 3 & ~3; + } + + glyphProfile.length = glyphDataLength; + return glyphProfile; + } + + if (glyf.length - glyphDataLength > 3) { + glyphDataLength = glyphDataLength + 3 & ~3; + dest.set(glyf.subarray(0, glyphDataLength), destStart); + glyphProfile.length = glyphDataLength; + return glyphProfile; + } + + dest.set(glyf, destStart); + glyphProfile.length = glyf.length; + return glyphProfile; + } + + function sanitizeHead(head, numGlyphs, locaLength) { + const data = head.data; + const version = int32(data[0], data[1], data[2], data[3]); + + if (version >> 16 !== 1) { + (0, _util.info)("Attempting to fix invalid version in head table: " + version); + data[0] = 0; + data[1] = 1; + data[2] = 0; + data[3] = 0; + } + + const indexToLocFormat = int16(data[50], data[51]); + + if (indexToLocFormat < 0 || indexToLocFormat > 1) { + (0, _util.info)("Attempting to fix invalid indexToLocFormat in head table: " + indexToLocFormat); + const numGlyphsPlusOne = numGlyphs + 1; + + if (locaLength === numGlyphsPlusOne << 1) { + data[50] = 0; + data[51] = 0; + } else if (locaLength === numGlyphsPlusOne << 2) { + data[50] = 0; + data[51] = 1; + } else { + throw new _util.FormatError("Could not fix indexToLocFormat: " + indexToLocFormat); } } } - }, { - key: "charCodeOf", - value: function charCodeOf(value) { - var map = this._map; - if (map.length <= 0x10000) { - return map.indexOf(value); + function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions) { + let itemSize, itemDecode, itemEncode; + + if (isGlyphLocationsLong) { + itemSize = 4; + + itemDecode = function fontItemDecodeLong(data, offset) { + return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]; + }; + + itemEncode = function fontItemEncodeLong(data, offset, value) { + data[offset] = value >>> 24 & 0xff; + data[offset + 1] = value >> 16 & 0xff; + data[offset + 2] = value >> 8 & 0xff; + data[offset + 3] = value & 0xff; + }; + } else { + itemSize = 2; + + itemDecode = function fontItemDecode(data, offset) { + return data[offset] << 9 | data[offset + 1] << 1; + }; + + itemEncode = function fontItemEncode(data, offset, value) { + data[offset] = value >> 9 & 0xff; + data[offset + 1] = value >> 1 & 0xff; + }; } - for (var charCode in map) { - if (map[charCode] === value) { + const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs; + const locaDataSize = itemSize * (1 + numGlyphsOut); + const locaData = new Uint8Array(locaDataSize); + locaData.set(loca.data.subarray(0, locaDataSize)); + loca.data = locaData; + const oldGlyfData = glyf.data; + const oldGlyfDataLength = oldGlyfData.length; + const newGlyfData = new Uint8Array(oldGlyfDataLength); + let i, j; + const locaEntries = []; + + for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) { + let offset = itemDecode(locaData, j); + + if (offset > oldGlyfDataLength) { + offset = oldGlyfDataLength; + } + + locaEntries.push({ + index: i, + offset, + endOffset: 0 + }); + } + + locaEntries.sort((a, b) => { + return a.offset - b.offset; + }); + + for (i = 0; i < numGlyphs; i++) { + locaEntries[i].endOffset = locaEntries[i + 1].offset; + } + + locaEntries.sort((a, b) => { + return a.index - b.index; + }); + + for (i = 0; i < numGlyphs; i++) { + const { + offset, + endOffset + } = locaEntries[i]; + + if (offset !== 0 || endOffset !== 0) { + break; + } + + const nextOffset = locaEntries[i + 1].offset; + + if (nextOffset === 0) { + continue; + } + + locaEntries[i].endOffset = nextOffset; + break; + } + + const missingGlyphs = Object.create(null); + let writeOffset = 0; + itemEncode(locaData, 0, writeOffset); + + for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) { + const glyphProfile = sanitizeGlyph(oldGlyfData, locaEntries[i].offset, locaEntries[i].endOffset, newGlyfData, writeOffset, hintsValid); + const newLength = glyphProfile.length; + + if (newLength === 0) { + missingGlyphs[i] = true; + } + + if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) { + maxSizeOfInstructions = glyphProfile.sizeOfInstructions; + } + + writeOffset += newLength; + itemEncode(locaData, j, writeOffset); + } + + if (writeOffset === 0) { + const simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]); + + for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) { + itemEncode(locaData, j, simpleGlyph.length); + } + + glyf.data = simpleGlyph; + } else if (dupFirstEntry) { + const firstEntryLength = itemDecode(locaData, itemSize); + + if (newGlyfData.length > firstEntryLength + writeOffset) { + glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset); + } else { + glyf.data = new Uint8Array(firstEntryLength + writeOffset); + glyf.data.set(newGlyfData.subarray(0, writeOffset)); + } + + glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset); + itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength); + } else { + glyf.data = newGlyfData.subarray(0, writeOffset); + } + + return { + missingGlyphs, + maxSizeOfInstructions + }; + } + + function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) { + const start = (font.start || 0) + post.offset; + font.pos = start; + const length = post.length, + end = start + length; + const version = font.getInt32(); + font.skip(28); + let glyphNames; + let valid = true; + let i; + + switch (version) { + case 0x00010000: + glyphNames = _fonts_utils.MacStandardGlyphOrdering; + break; + + case 0x00020000: + const numGlyphs = font.getUint16(); + + if (numGlyphs !== maxpNumGlyphs) { + valid = false; + break; + } + + const glyphNameIndexes = []; + + for (i = 0; i < numGlyphs; ++i) { + const index = font.getUint16(); + + if (index >= 32768) { + valid = false; + break; + } + + glyphNameIndexes.push(index); + } + + if (!valid) { + break; + } + + const customNames = [], + strBuf = []; + + while (font.pos < end) { + const stringLength = font.getByte(); + strBuf.length = stringLength; + + for (i = 0; i < stringLength; ++i) { + strBuf[i] = String.fromCharCode(font.getByte()); + } + + customNames.push(strBuf.join("")); + } + + glyphNames = []; + + for (i = 0; i < numGlyphs; ++i) { + const j = glyphNameIndexes[i]; + + if (j < 258) { + glyphNames.push(_fonts_utils.MacStandardGlyphOrdering[j]); + continue; + } + + glyphNames.push(customNames[j - 258]); + } + + break; + + case 0x00030000: + break; + + default: + (0, _util.warn)("Unknown/unsupported post table version " + version); + valid = false; + + if (propertiesObj.defaultEncoding) { + glyphNames = propertiesObj.defaultEncoding; + } + + break; + } + + propertiesObj.glyphNames = glyphNames; + return valid; + } + + function readNameTable(nameTable) { + const start = (font.start || 0) + nameTable.offset; + font.pos = start; + const names = [[], []]; + const length = nameTable.length, + end = start + length; + const format = font.getUint16(); + const FORMAT_0_HEADER_LENGTH = 6; + + if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) { + return names; + } + + const numRecords = font.getUint16(); + const stringsStart = font.getUint16(); + const records = []; + const NAME_RECORD_LENGTH = 12; + let i, ii; + + for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) { + const r = { + platform: font.getUint16(), + encoding: font.getUint16(), + language: font.getUint16(), + name: font.getUint16(), + length: font.getUint16(), + offset: font.getUint16() + }; + + if (r.platform === 1 && r.encoding === 0 && r.language === 0 || r.platform === 3 && r.encoding === 1 && r.language === 0x409) { + records.push(r); + } + } + + for (i = 0, ii = records.length; i < ii; i++) { + const record = records[i]; + + if (record.length <= 0) { + continue; + } + + const pos = start + stringsStart + record.offset; + + if (pos + record.length > end) { + continue; + } + + font.pos = pos; + const nameIndex = record.name; + + if (record.encoding) { + let str = ""; + + for (let j = 0, jj = record.length; j < jj; j += 2) { + str += String.fromCharCode(font.getUint16()); + } + + names[1][nameIndex] = str; + } else { + names[0][nameIndex] = font.getString(record.length); + } + } + + return names; + } + + const TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2]; + + function sanitizeTTProgram(table, ttContext) { + let data = table.data; + let i = 0, + j, + n, + b, + funcId, + pc, + lastEndf = 0, + lastDeff = 0; + const stack = []; + const callstack = []; + const functionsCalled = []; + let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions; + let inFDEF = false, + ifLevel = 0, + inELSE = 0; + + for (let ii = data.length; i < ii;) { + const op = data[i++]; + + if (op === 0x40) { + n = data[i++]; + + if (inFDEF || inELSE) { + i += n; + } else { + for (j = 0; j < n; j++) { + stack.push(data[i++]); + } + } + } else if (op === 0x41) { + n = data[i++]; + + if (inFDEF || inELSE) { + i += n * 2; + } else { + for (j = 0; j < n; j++) { + b = data[i++]; + stack.push(b << 8 | data[i++]); + } + } + } else if ((op & 0xf8) === 0xb0) { + n = op - 0xb0 + 1; + + if (inFDEF || inELSE) { + i += n; + } else { + for (j = 0; j < n; j++) { + stack.push(data[i++]); + } + } + } else if ((op & 0xf8) === 0xb8) { + n = op - 0xb8 + 1; + + if (inFDEF || inELSE) { + i += n * 2; + } else { + for (j = 0; j < n; j++) { + b = data[i++]; + stack.push(b << 8 | data[i++]); + } + } + } else if (op === 0x2b && !tooComplexToFollowFunctions) { + if (!inFDEF && !inELSE) { + funcId = stack.at(-1); + + if (isNaN(funcId)) { + (0, _util.info)("TT: CALL empty stack (or invalid entry)."); + } else { + ttContext.functionsUsed[funcId] = true; + + if (funcId in ttContext.functionsStackDeltas) { + const newStackLength = stack.length + ttContext.functionsStackDeltas[funcId]; + + if (newStackLength < 0) { + (0, _util.warn)("TT: CALL invalid functions stack delta."); + ttContext.hintsValid = false; + return; + } + + stack.length = newStackLength; + } else if (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) { + callstack.push({ + data, + i, + stackTop: stack.length - 1 + }); + functionsCalled.push(funcId); + pc = ttContext.functionsDefined[funcId]; + + if (!pc) { + (0, _util.warn)("TT: CALL non-existent function"); + ttContext.hintsValid = false; + return; + } + + data = pc.data; + i = pc.i; + } + } + } + } else if (op === 0x2c && !tooComplexToFollowFunctions) { + if (inFDEF || inELSE) { + (0, _util.warn)("TT: nested FDEFs not allowed"); + tooComplexToFollowFunctions = true; + } + + inFDEF = true; + lastDeff = i; + funcId = stack.pop(); + ttContext.functionsDefined[funcId] = { + data, + i + }; + } else if (op === 0x2d) { + if (inFDEF) { + inFDEF = false; + lastEndf = i; + } else { + pc = callstack.pop(); + + if (!pc) { + (0, _util.warn)("TT: ENDF bad stack"); + ttContext.hintsValid = false; + return; + } + + funcId = functionsCalled.pop(); + data = pc.data; + i = pc.i; + ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop; + } + } else if (op === 0x89) { + if (inFDEF || inELSE) { + (0, _util.warn)("TT: nested IDEFs not allowed"); + tooComplexToFollowFunctions = true; + } + + inFDEF = true; + lastDeff = i; + } else if (op === 0x58) { + ++ifLevel; + } else if (op === 0x1b) { + inELSE = ifLevel; + } else if (op === 0x59) { + if (inELSE === ifLevel) { + inELSE = 0; + } + + --ifLevel; + } else if (op === 0x1c) { + if (!inFDEF && !inELSE) { + const offset = stack.at(-1); + + if (offset > 0) { + i += offset - 1; + } + } + } + + if (!inFDEF && !inELSE) { + let stackDelta = 0; + + if (op <= 0x8e) { + stackDelta = TTOpsStackDeltas[op]; + } else if (op >= 0xc0 && op <= 0xdf) { + stackDelta = -1; + } else if (op >= 0xe0) { + stackDelta = -2; + } + + if (op >= 0x71 && op <= 0x75) { + n = stack.pop(); + + if (!isNaN(n)) { + stackDelta = -n * 2; + } + } + + while (stackDelta < 0 && stack.length > 0) { + stack.pop(); + stackDelta++; + } + + while (stackDelta > 0) { + stack.push(NaN); + stackDelta--; + } + } + } + + ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions; + const content = [data]; + + if (i > data.length) { + content.push(new Uint8Array(i - data.length)); + } + + if (lastDeff > lastEndf) { + (0, _util.warn)("TT: complementing a missing function tail"); + content.push(new Uint8Array([0x22, 0x2d])); + } + + foldTTTable(table, content); + } + + function checkInvalidFunctions(ttContext, maxFunctionDefs) { + if (ttContext.tooComplexToFollowFunctions) { + return; + } + + if (ttContext.functionsDefined.length > maxFunctionDefs) { + (0, _util.warn)("TT: more functions defined than expected"); + ttContext.hintsValid = false; + return; + } + + for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) { + if (j > maxFunctionDefs) { + (0, _util.warn)("TT: invalid function id: " + j); + ttContext.hintsValid = false; + return; + } + + if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) { + (0, _util.warn)("TT: undefined function: " + j); + ttContext.hintsValid = false; + return; + } + } + } + + function foldTTTable(table, content) { + if (content.length > 1) { + let newLength = 0; + let j, jj; + + for (j = 0, jj = content.length; j < jj; j++) { + newLength += content[j].length; + } + + newLength = newLength + 3 & ~3; + const result = new Uint8Array(newLength); + let pos = 0; + + for (j = 0, jj = content.length; j < jj; j++) { + result.set(content[j], pos); + pos += content[j].length; + } + + table.data = result; + table.length = newLength; + } + } + + function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) { + const ttContext = { + functionsDefined: [], + functionsUsed: [], + functionsStackDeltas: [], + tooComplexToFollowFunctions: false, + hintsValid: true + }; + + if (fpgm) { + sanitizeTTProgram(fpgm, ttContext); + } + + if (prep) { + sanitizeTTProgram(prep, ttContext); + } + + if (fpgm) { + checkInvalidFunctions(ttContext, maxFunctionDefs); + } + + if (cvt && cvt.length & 1) { + const cvtData = new Uint8Array(cvt.length + 1); + cvtData.set(cvt.data); + cvt.data = cvtData; + } + + return ttContext.hintsValid; + } + + font = new _stream.Stream(new Uint8Array(font.getBytes())); + let header, tables; + + if (isTrueTypeCollectionFile(font)) { + const ttcData = readTrueTypeCollectionData(font, this.name); + header = ttcData.header; + tables = ttcData.tables; + } else { + header = readOpenTypeHeader(font); + tables = readTables(font, header.numTables); + } + + let cff, cffFile; + const isTrueType = !tables["CFF "]; + + if (!isTrueType) { + const isComposite = properties.composite && ((properties.cidToGidMap || []).length > 0 || !(properties.cMap instanceof _cmap.IdentityCMap)); + + if (header.version === "OTTO" && !isComposite || !tables.head || !tables.hhea || !tables.maxp || !tables.post) { + cffFile = new _stream.Stream(tables["CFF "].data); + cff = new _cff_font.CFFFont(cffFile, properties); + adjustWidths(properties); + return this.convert(name, cff, properties); + } + + delete tables.glyf; + delete tables.loca; + delete tables.fpgm; + delete tables.prep; + delete tables["cvt "]; + this.isOpenType = true; + } else { + if (!tables.loca) { + throw new _util.FormatError('Required "loca" table is not found'); + } + + if (!tables.glyf) { + (0, _util.warn)('Required "glyf" table is not found -- trying to recover.'); + tables.glyf = { + tag: "glyf", + data: new Uint8Array(0) + }; + } + + this.isOpenType = false; + } + + if (!tables.maxp) { + throw new _util.FormatError('Required "maxp" table is not found'); + } + + font.pos = (font.start || 0) + tables.maxp.offset; + const version = font.getInt32(); + const numGlyphs = font.getUint16(); + + if (properties.scaleFactors && properties.scaleFactors.length === numGlyphs && isTrueType) { + const { + scaleFactors + } = properties; + const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]); + const glyphs = new _glyf.GlyfTable({ + glyfTable: tables.glyf.data, + isGlyphLocationsLong, + locaTable: tables.loca.data, + numGlyphs + }); + glyphs.scale(scaleFactors); + const { + glyf, + loca, + isLocationLong + } = glyphs.write(); + tables.glyf.data = glyf; + tables.loca.data = loca; + + if (isLocationLong !== !!isGlyphLocationsLong) { + tables.head.data[50] = 0; + tables.head.data[51] = isLocationLong ? 1 : 0; + } + + const metrics = tables.hmtx.data; + + for (let i = 0; i < numGlyphs; i++) { + const j = 4 * i; + const advanceWidth = Math.round(scaleFactors[i] * int16(metrics[j], metrics[j + 1])); + metrics[j] = advanceWidth >> 8 & 0xff; + metrics[j + 1] = advanceWidth & 0xff; + const lsb = Math.round(scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3])); + writeSignedInt16(metrics, j + 2, lsb); + } + } + + let numGlyphsOut = numGlyphs + 1; + let dupFirstEntry = true; + + if (numGlyphsOut > 0xffff) { + dupFirstEntry = false; + numGlyphsOut = numGlyphs; + (0, _util.warn)("Not enough space in glyfs to duplicate first glyph."); + } + + let maxFunctionDefs = 0; + let maxSizeOfInstructions = 0; + + if (version >= 0x00010000 && tables.maxp.length >= 22) { + font.pos += 8; + const maxZones = font.getUint16(); + + if (maxZones > 2) { + tables.maxp.data[14] = 0; + tables.maxp.data[15] = 2; + } + + font.pos += 4; + maxFunctionDefs = font.getUint16(); + font.pos += 4; + maxSizeOfInstructions = font.getUint16(); + } + + tables.maxp.data[4] = numGlyphsOut >> 8; + tables.maxp.data[5] = numGlyphsOut & 255; + const hintsValid = sanitizeTTPrograms(tables.fpgm, tables.prep, tables["cvt "], maxFunctionDefs); + + if (!hintsValid) { + delete tables.fpgm; + delete tables.prep; + delete tables["cvt "]; + } + + sanitizeMetrics(font, tables.hhea, tables.hmtx, tables.head, numGlyphsOut, dupFirstEntry); + + if (!tables.head) { + throw new _util.FormatError('Required "head" table is not found'); + } + + sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0); + let missingGlyphs = Object.create(null); + + if (isTrueType) { + const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]); + const glyphsInfo = sanitizeGlyphLocations(tables.loca, tables.glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions); + missingGlyphs = glyphsInfo.missingGlyphs; + + if (version >= 0x00010000 && tables.maxp.length >= 22) { + tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8; + tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255; + } + } + + if (!tables.hhea) { + throw new _util.FormatError('Required "hhea" table is not found'); + } + + if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) { + tables.hhea.data[10] = 0xff; + tables.hhea.data[11] = 0xff; + } + + const metricsOverride = { + unitsPerEm: int16(tables.head.data[18], tables.head.data[19]), + yMax: int16(tables.head.data[42], tables.head.data[43]), + yMin: signedInt16(tables.head.data[38], tables.head.data[39]), + ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]), + descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]), + lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9]) + }; + this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm; + this.descent = metricsOverride.descent / metricsOverride.unitsPerEm; + this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm; + + if (this.cssFontInfo && this.cssFontInfo.lineHeight) { + this.lineHeight = this.cssFontInfo.metrics.lineHeight; + this.lineGap = this.cssFontInfo.metrics.lineGap; + } else { + this.lineHeight = this.ascent - this.descent + this.lineGap; + } + + if (tables.post) { + readPostScriptTable(tables.post, properties, numGlyphs); + } + + tables.post = { + tag: "post", + data: createPostTable(properties) + }; + const charCodeToGlyphId = []; + + function hasGlyph(glyphId) { + return !missingGlyphs[glyphId]; + } + + if (properties.composite) { + const cidToGidMap = properties.cidToGidMap || []; + const isCidToGidMapEmpty = cidToGidMap.length === 0; + properties.cMap.forEach(function (charCode, cid) { + if (typeof cid === "string") { + cid = convertCidString(charCode, cid, true); + } + + if (cid > 0xffff) { + throw new _util.FormatError("Max size of CID is 65,535"); + } + + let glyphId = -1; + + if (isCidToGidMapEmpty) { + glyphId = cid; + } else if (cidToGidMap[cid] !== undefined) { + glyphId = cidToGidMap[cid]; + } + + if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) { + charCodeToGlyphId[charCode] = glyphId; + } + }); + } else { + const cmapTable = readCmapTable(tables.cmap, font, this.isSymbolicFont, properties.hasEncoding); + const cmapPlatformId = cmapTable.platformId; + const cmapEncodingId = cmapTable.encodingId; + const cmapMappings = cmapTable.mappings; + const cmapMappingsLength = cmapMappings.length; + let baseEncoding = [], + forcePostTable = false; + + if (properties.hasEncoding && (properties.baseEncodingName === "MacRomanEncoding" || properties.baseEncodingName === "WinAnsiEncoding")) { + baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName); + } + + if (properties.hasEncoding && !this.isSymbolicFont && (cmapPlatformId === 3 && cmapEncodingId === 1 || cmapPlatformId === 1 && cmapEncodingId === 0)) { + const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + + for (let charCode = 0; charCode < 256; charCode++) { + let glyphName; + + if (this.differences[charCode] !== undefined) { + glyphName = this.differences[charCode]; + } else if (baseEncoding.length && baseEncoding[charCode] !== "") { + glyphName = baseEncoding[charCode]; + } else { + glyphName = _encodings.StandardEncoding[charCode]; + } + + if (!glyphName) { + continue; + } + + const standardGlyphName = (0, _fonts_utils.recoverGlyphName)(glyphName, glyphsUnicodeMap); + let unicodeOrCharCode; + + if (cmapPlatformId === 3 && cmapEncodingId === 1) { + unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName]; + } else if (cmapPlatformId === 1 && cmapEncodingId === 0) { + unicodeOrCharCode = _encodings.MacRomanEncoding.indexOf(standardGlyphName); + } + + if (unicodeOrCharCode === undefined) { + if (!properties.glyphNames && properties.hasIncludedToUnicodeMap && !(this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap)) { + const unicode = this.toUnicode.get(charCode); + + if (unicode) { + unicodeOrCharCode = unicode.codePointAt(0); + } + } + + if (unicodeOrCharCode === undefined) { + continue; + } + } + + for (let i = 0; i < cmapMappingsLength; ++i) { + if (cmapMappings[i].charCode !== unicodeOrCharCode) { + continue; + } + + charCodeToGlyphId[charCode] = cmapMappings[i].glyphId; + break; + } + } + } else if (cmapPlatformId === 0) { + for (let i = 0; i < cmapMappingsLength; ++i) { + charCodeToGlyphId[cmapMappings[i].charCode] = cmapMappings[i].glyphId; + } + + forcePostTable = true; + } else { + for (let i = 0; i < cmapMappingsLength; ++i) { + let charCode = cmapMappings[i].charCode; + + if (cmapPlatformId === 3 && charCode >= 0xf000 && charCode <= 0xf0ff) { + charCode &= 0xff; + } + + charCodeToGlyphId[charCode] = cmapMappings[i].glyphId; + } + } + + if (properties.glyphNames && (baseEncoding.length || this.differences.length)) { + for (let i = 0; i < 256; ++i) { + if (!forcePostTable && charCodeToGlyphId[i] !== undefined) { + continue; + } + + const glyphName = this.differences[i] || baseEncoding[i]; + + if (!glyphName) { + continue; + } + + const glyphId = properties.glyphNames.indexOf(glyphName); + + if (glyphId > 0 && hasGlyph(glyphId)) { + charCodeToGlyphId[i] = glyphId; + } + } + } + } + + if (charCodeToGlyphId.length === 0) { + charCodeToGlyphId[0] = 0; + } + + let glyphZeroId = numGlyphsOut - 1; + + if (!dupFirstEntry) { + glyphZeroId = 0; + } + + if (!properties.cssFontInfo) { + const newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId, this.toUnicode); + this.toFontChar = newMapping.toFontChar; + tables.cmap = { + tag: "cmap", + data: createCmapTable(newMapping.charCodeToGlyphId, newMapping.toUnicodeExtraMap, numGlyphsOut) + }; + + if (!tables["OS/2"] || !validateOS2Table(tables["OS/2"], font)) { + tables["OS/2"] = { + tag: "OS/2", + data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride) + }; + } + } + + if (!isTrueType) { + try { + cffFile = new _stream.Stream(tables["CFF "].data); + const parser = new _cff_parser.CFFParser(cffFile, properties, _fonts_utils.SEAC_ANALYSIS_ENABLED); + cff = parser.parse(); + cff.duplicateFirstGlyph(); + const compiler = new _cff_parser.CFFCompiler(cff); + tables["CFF "].data = compiler.compile(); + } catch (e) { + (0, _util.warn)("Failed to compile font " + properties.loadedName); + } + } + + if (!tables.name) { + tables.name = { + tag: "name", + data: createNameTable(this.name) + }; + } else { + const namePrototype = readNameTable(tables.name); + tables.name.data = createNameTable(name, namePrototype); + this.psName = namePrototype[0][6] || null; + } + + const builder = new _opentype_file_builder.OpenTypeFileBuilder(header.version); + + for (const tableTag in tables) { + builder.addTable(tableTag, tables[tableTag].data); + } + + return builder.toArray(); + } + + convert(fontName, font, properties) { + properties.fixedPitch = false; + + if (properties.builtInEncoding) { + adjustToUnicode(properties, properties.builtInEncoding); + } + + let glyphZeroId = 1; + + if (font instanceof _cff_font.CFFFont) { + glyphZeroId = font.numGlyphs - 1; + } + + const mapping = font.getGlyphMapping(properties); + let newMapping = null; + let newCharCodeToGlyphId = mapping; + let toUnicodeExtraMap = null; + + if (!properties.cssFontInfo) { + newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId, this.toUnicode); + this.toFontChar = newMapping.toFontChar; + newCharCodeToGlyphId = newMapping.charCodeToGlyphId; + toUnicodeExtraMap = newMapping.toUnicodeExtraMap; + } + + const numGlyphs = font.numGlyphs; + + function getCharCodes(charCodeToGlyphId, glyphId) { + let charCodes = null; + + for (const charCode in charCodeToGlyphId) { + if (glyphId === charCodeToGlyphId[charCode]) { + if (!charCodes) { + charCodes = []; + } + + charCodes.push(charCode | 0); + } + } + + return charCodes; + } + + function createCharCode(charCodeToGlyphId, glyphId) { + for (const charCode in charCodeToGlyphId) { + if (glyphId === charCodeToGlyphId[charCode]) { return charCode | 0; } } - return -1; + newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId; + return newMapping.nextAvailableFontCharCode++; } - }, { - key: "getMap", - value: function getMap() { - return this._map; + + const seacs = font.seacs; + + if (newMapping && _fonts_utils.SEAC_ANALYSIS_ENABLED && seacs && seacs.length) { + const matrix = properties.fontMatrix || _util.FONT_IDENTITY_MATRIX; + const charset = font.getCharset(); + const seacMap = Object.create(null); + + for (let glyphId in seacs) { + glyphId |= 0; + const seac = seacs[glyphId]; + const baseGlyphName = _encodings.StandardEncoding[seac[2]]; + const accentGlyphName = _encodings.StandardEncoding[seac[3]]; + const baseGlyphId = charset.indexOf(baseGlyphName); + const accentGlyphId = charset.indexOf(accentGlyphName); + + if (baseGlyphId < 0 || accentGlyphId < 0) { + continue; + } + + const accentOffset = { + x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4], + y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5] + }; + const charCodes = getCharCodes(mapping, glyphId); + + if (!charCodes) { + continue; + } + + for (let i = 0, ii = charCodes.length; i < ii; i++) { + const charCode = charCodes[i]; + const charCodeToGlyphId = newMapping.charCodeToGlyphId; + const baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId); + const accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId); + seacMap[charCode] = { + baseFontCharCode, + accentFontCharCode, + accentOffset + }; + } + } + + properties.seacMap = seacMap; } - }, { - key: "readCharCode", - value: function readCharCode(str, offset, out) { - var c = 0; - var codespaceRanges = this.codespaceRanges; - for (var n = 0, nn = codespaceRanges.length; n < nn; n++) { - c = (c << 8 | str.charCodeAt(offset + n)) >>> 0; - var codespaceRange = codespaceRanges[n]; + const unitsPerEm = 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0]; + const builder = new _opentype_file_builder.OpenTypeFileBuilder("\x4F\x54\x54\x4F"); + builder.addTable("CFF ", font.data); + builder.addTable("OS/2", createOS2Table(properties, newCharCodeToGlyphId)); + builder.addTable("cmap", createCmapTable(newCharCodeToGlyphId, toUnicodeExtraMap, numGlyphs)); + builder.addTable("head", "\x00\x01\x00\x00" + "\x00\x00\x10\x00" + "\x00\x00\x00\x00" + "\x5F\x0F\x3C\xF5" + "\x00\x00" + safeString16(unitsPerEm) + "\x00\x00\x00\x00\x9e\x0b\x7e\x27" + "\x00\x00\x00\x00\x9e\x0b\x7e\x27" + "\x00\x00" + safeString16(properties.descent) + "\x0F\xFF" + safeString16(properties.ascent) + string16(properties.italicAngle ? 2 : 0) + "\x00\x11" + "\x00\x00" + "\x00\x00" + "\x00\x00"); + builder.addTable("hhea", "\x00\x01\x00\x00" + safeString16(properties.ascent) + safeString16(properties.descent) + "\x00\x00" + "\xFF\xFF" + "\x00\x00" + "\x00\x00" + "\x00\x00" + safeString16(properties.capHeight) + safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + "\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + string16(numGlyphs)); + builder.addTable("hmtx", function fontFieldsHmtx() { + const charstrings = font.charstrings; + const cffWidths = font.cff ? font.cff.widths : null; + let hmtx = "\x00\x00\x00\x00"; - for (var k = 0, kk = codespaceRange.length; k < kk;) { - var low = codespaceRange[k++]; - var high = codespaceRange[k++]; + for (let i = 1, ii = numGlyphs; i < ii; i++) { + let width = 0; - if (c >= low && c <= high) { - out.charcode = c; - out.length = n + 1; - return; + if (charstrings) { + const charstring = charstrings[i - 1]; + width = "width" in charstring ? charstring.width : 0; + } else if (cffWidths) { + width = Math.ceil(cffWidths[i] || 0); + } + + hmtx += string16(width) + string16(0); + } + + return hmtx; + }()); + builder.addTable("maxp", "\x00\x00\x50\x00" + string16(numGlyphs)); + builder.addTable("name", createNameTable(fontName)); + builder.addTable("post", createPostTable(properties)); + return builder.toArray(); + } + + get spaceWidth() { + const possibleSpaceReplacements = ["space", "minus", "one", "i", "I"]; + let width; + + for (let i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) { + const glyphName = possibleSpaceReplacements[i]; + + if (glyphName in this.widths) { + width = this.widths[glyphName]; + break; + } + + const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + const glyphUnicode = glyphsUnicodeMap[glyphName]; + let charcode = 0; + + if (this.composite && this.cMap.contains(glyphUnicode)) { + charcode = this.cMap.lookup(glyphUnicode); + + if (typeof charcode === "string") { + charcode = convertCidString(glyphUnicode, charcode); + } + } + + if (!charcode && this.toUnicode) { + charcode = this.toUnicode.charCodeOf(glyphUnicode); + } + + if (charcode <= 0) { + charcode = glyphUnicode; + } + + width = this.widths[charcode]; + + if (width) { + break; + } + } + + width = width || this.defaultWidth; + return (0, _util.shadow)(this, "spaceWidth", width); + } + + _charToGlyph(charcode) { + let isSpace = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + let fontCharCode, width, operatorListId; + let widthCode = charcode; + + if (this.cMap && this.cMap.contains(charcode)) { + widthCode = this.cMap.lookup(charcode); + + if (typeof widthCode === "string") { + widthCode = convertCidString(charcode, widthCode); + } + } + + width = this.widths[widthCode]; + + if (typeof width !== "number") { + width = this.defaultWidth; + } + + const vmetric = this.vmetrics && this.vmetrics[widthCode]; + let unicode = this.toUnicode.get(charcode) || charcode; + + if (typeof unicode === "number") { + unicode = String.fromCharCode(unicode); + } + + let isInFont = this.toFontChar[charcode] !== undefined; + fontCharCode = this.toFontChar[charcode] || charcode; + + if (this.missingFile) { + const glyphName = this.differences[charcode] || this.defaultEncoding[charcode]; + + if ((glyphName === ".notdef" || glyphName === "") && this.type === "Type1") { + fontCharCode = 0x20; + } + + fontCharCode = (0, _unicode.mapSpecialUnicodeValues)(fontCharCode); + } + + if (this.isType3Font) { + operatorListId = fontCharCode; + } + + let accent = null; + + if (this.seacMap && this.seacMap[charcode]) { + isInFont = true; + const seac = this.seacMap[charcode]; + fontCharCode = seac.baseFontCharCode; + accent = { + fontChar: String.fromCodePoint(seac.accentFontCharCode), + offset: seac.accentOffset + }; + } + + let fontChar = ""; + + if (typeof fontCharCode === "number") { + if (fontCharCode <= 0x10ffff) { + fontChar = String.fromCodePoint(fontCharCode); + } else { + (0, _util.warn)(`charToGlyph - invalid fontCharCode: ${fontCharCode}`); + } + } + + let glyph = this._glyphCache[charcode]; + + if (!glyph || !glyph.matchesForCache(charcode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont)) { + glyph = new Glyph(charcode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont); + this._glyphCache[charcode] = glyph; + } + + return glyph; + } + + charsToGlyphs(chars) { + let glyphs = this._charsCache[chars]; + + if (glyphs) { + return glyphs; + } + + glyphs = []; + + if (this.cMap) { + const c = Object.create(null), + ii = chars.length; + let i = 0; + + while (i < ii) { + this.cMap.readCharCode(chars, i, c); + const { + charcode, + length + } = c; + i += length; + + const glyph = this._charToGlyph(charcode, length === 1 && chars.charCodeAt(i - 1) === 0x20); + + glyphs.push(glyph); + } + } else { + for (let i = 0, ii = chars.length; i < ii; ++i) { + const charcode = chars.charCodeAt(i); + + const glyph = this._charToGlyph(charcode, charcode === 0x20); + + glyphs.push(glyph); + } + } + + return this._charsCache[chars] = glyphs; + } + + getCharPositions(chars) { + const positions = []; + + if (this.cMap) { + const c = Object.create(null); + let i = 0; + + while (i < chars.length) { + this.cMap.readCharCode(chars, i, c); + const length = c.length; + positions.push([i, i + length]); + i += length; + } + } else { + for (let i = 0, ii = chars.length; i < ii; ++i) { + positions.push([i, i + 1]); + } + } + + return positions; + } + + get glyphCacheValues() { + return Object.values(this._glyphCache); + } + + encodeString(str) { + const buffers = []; + const currentBuf = []; + + const hasCurrentBufErrors = () => buffers.length % 2 === 1; + + const getCharCode = this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap ? unicode => this.toUnicode.charCodeOf(unicode) : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode)); + + for (let i = 0, ii = str.length; i < ii; i++) { + const unicode = str.codePointAt(i); + + if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) { + i++; + } + + if (this.toUnicode) { + const charCode = getCharCode(unicode); + + if (charCode !== -1) { + if (hasCurrentBufErrors()) { + buffers.push(currentBuf.join("")); + currentBuf.length = 0; } - } - } - out.charcode = 0; - out.length = 1; - } - }, { - key: "length", - get: function get() { - return this._map.length; - } - }, { - key: "isIdentityCMap", - get: function get() { - if (!(this.name === 'Identity-H' || this.name === 'Identity-V')) { - return false; - } + const charCodeLength = this.cMap ? this.cMap.getCharCodeLength(charCode) : 1; - if (this._map.length !== 0x10000) { - return false; - } - - for (var i = 0; i < 0x10000; i++) { - if (this._map[i] !== i) { - return false; - } - } - - return true; - } - }]); - - return CMap; -}(); - -exports.CMap = CMap; - -var IdentityCMap = -/*#__PURE__*/ -function (_CMap) { - _inherits(IdentityCMap, _CMap); - - function IdentityCMap(vertical, n) { - var _this; - - _classCallCheck(this, IdentityCMap); - - _this = _possibleConstructorReturn(this, _getPrototypeOf(IdentityCMap).call(this)); - _this.vertical = vertical; - - _this.addCodespaceRange(n, 0, 0xffff); - - return _this; - } - - _createClass(IdentityCMap, [{ - key: "mapCidRange", - value: function mapCidRange(low, high, dstLow) { - (0, _util.unreachable)('should not call mapCidRange'); - } - }, { - key: "mapBfRange", - value: function mapBfRange(low, high, dstLow) { - (0, _util.unreachable)('should not call mapBfRange'); - } - }, { - key: "mapBfRangeToArray", - value: function mapBfRangeToArray(low, high, array) { - (0, _util.unreachable)('should not call mapBfRangeToArray'); - } - }, { - key: "mapOne", - value: function mapOne(src, dst) { - (0, _util.unreachable)('should not call mapCidOne'); - } - }, { - key: "lookup", - value: function lookup(code) { - return Number.isInteger(code) && code <= 0xffff ? code : undefined; - } - }, { - key: "contains", - value: function contains(code) { - return Number.isInteger(code) && code <= 0xffff; - } - }, { - key: "forEach", - value: function forEach(callback) { - for (var i = 0; i <= 0xffff; i++) { - callback(i, i); - } - } - }, { - key: "charCodeOf", - value: function charCodeOf(value) { - return Number.isInteger(value) && value <= 0xffff ? value : -1; - } - }, { - key: "getMap", - value: function getMap() { - var map = new Array(0x10000); - - for (var i = 0; i <= 0xffff; i++) { - map[i] = i; - } - - return map; - } - }, { - key: "length", - get: function get() { - return 0x10000; - } - }, { - key: "isIdentityCMap", - get: function get() { - (0, _util.unreachable)('should not access .isIdentityCMap'); - } - }]); - - return IdentityCMap; -}(CMap); - -exports.IdentityCMap = IdentityCMap; - -var BinaryCMapReader = function BinaryCMapReaderClosure() { - function hexToInt(a, size) { - var n = 0; - - for (var i = 0; i <= size; i++) { - n = n << 8 | a[i]; - } - - return n >>> 0; - } - - function hexToStr(a, size) { - if (size === 1) { - return String.fromCharCode(a[0], a[1]); - } - - if (size === 3) { - return String.fromCharCode(a[0], a[1], a[2], a[3]); - } - - return String.fromCharCode.apply(null, a.subarray(0, size + 1)); - } - - function addHex(a, b, size) { - var c = 0; - - for (var i = size; i >= 0; i--) { - c += a[i] + b[i]; - a[i] = c & 255; - c >>= 8; - } - } - - function incHex(a, size) { - var c = 1; - - for (var i = size; i >= 0 && c > 0; i--) { - c += a[i]; - a[i] = c & 255; - c >>= 8; - } - } - - var MAX_NUM_SIZE = 16; - var MAX_ENCODED_NUM_SIZE = 19; - - function BinaryCMapStream(data) { - this.buffer = data; - this.pos = 0; - this.end = data.length; - this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE); - } - - BinaryCMapStream.prototype = { - readByte: function readByte() { - if (this.pos >= this.end) { - return -1; - } - - return this.buffer[this.pos++]; - }, - readNumber: function readNumber() { - var n = 0; - var last; - - do { - var b = this.readByte(); - - if (b < 0) { - throw new _util.FormatError('unexpected EOF in bcmap'); - } - - last = !(b & 0x80); - n = n << 7 | b & 0x7F; - } while (!last); - - return n; - }, - readSigned: function readSigned() { - var n = this.readNumber(); - return n & 1 ? ~(n >>> 1) : n >>> 1; - }, - readHex: function readHex(num, size) { - num.set(this.buffer.subarray(this.pos, this.pos + size + 1)); - this.pos += size + 1; - }, - readHexNumber: function readHexNumber(num, size) { - var last; - var stack = this.tmpBuf, - sp = 0; - - do { - var b = this.readByte(); - - if (b < 0) { - throw new _util.FormatError('unexpected EOF in bcmap'); - } - - last = !(b & 0x80); - stack[sp++] = b & 0x7F; - } while (!last); - - var i = size, - buffer = 0, - bufferSize = 0; - - while (i >= 0) { - while (bufferSize < 8 && stack.length > 0) { - buffer = stack[--sp] << bufferSize | buffer; - bufferSize += 7; - } - - num[i] = buffer & 255; - i--; - buffer >>= 8; - bufferSize -= 8; - } - }, - readHexSigned: function readHexSigned(num, size) { - this.readHexNumber(num, size); - var sign = num[size] & 1 ? 255 : 0; - var c = 0; - - for (var i = 0; i <= size; i++) { - c = (c & 1) << 8 | num[i]; - num[i] = c >> 1 ^ sign; - } - }, - readString: function readString() { - var len = this.readNumber(); - var s = ''; - - for (var i = 0; i < len; i++) { - s += String.fromCharCode(this.readNumber()); - } - - return s; - } - }; - - function processBinaryCMap(data, cMap, extend) { - return new Promise(function (resolve, reject) { - var stream = new BinaryCMapStream(data); - var header = stream.readByte(); - cMap.vertical = !!(header & 1); - var useCMap = null; - var start = new Uint8Array(MAX_NUM_SIZE); - var end = new Uint8Array(MAX_NUM_SIZE); - - var _char = new Uint8Array(MAX_NUM_SIZE); - - var charCode = new Uint8Array(MAX_NUM_SIZE); - var tmp = new Uint8Array(MAX_NUM_SIZE); - var code; - var b; - - while ((b = stream.readByte()) >= 0) { - var type = b >> 5; - - if (type === 7) { - switch (b & 0x1F) { - case 0: - stream.readString(); - break; - - case 1: - useCMap = stream.readString(); - break; + for (let j = charCodeLength - 1; j >= 0; j--) { + currentBuf.push(String.fromCharCode(charCode >> 8 * j & 0xff)); } continue; } + } - var sequence = !!(b & 0x10); - var dataSize = b & 15; + if (!hasCurrentBufErrors()) { + buffers.push(currentBuf.join("")); + currentBuf.length = 0; + } - if (dataSize + 1 > MAX_NUM_SIZE) { - throw new Error('processBinaryCMap: Invalid dataSize.'); + currentBuf.push(String.fromCodePoint(unicode)); + } + + buffers.push(currentBuf.join("")); + return buffers; + } + +} + +exports.Font = Font; + +class ErrorFont { + constructor(error) { + this.error = error; + this.loadedName = "g_font_error"; + this.missingFile = true; + } + + charsToGlyphs() { + return []; + } + + encodeString(chars) { + return [chars]; + } + + exportData() { + let extraProperties = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + return { + error: this.error + }; + } + +} + +exports.ErrorFont = ErrorFont; + +/***/ }), +/* 160 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CFFTopDict = exports.CFFStrings = exports.CFFStandardStrings = exports.CFFPrivateDict = exports.CFFParser = exports.CFFIndex = exports.CFFHeader = exports.CFFFDSelect = exports.CFFCompiler = exports.CFFCharset = exports.CFF = void 0; + +var _util = __w_pdfjs_require__(2); + +var _charsets = __w_pdfjs_require__(161); + +var _encodings = __w_pdfjs_require__(162); + +const MAX_SUBR_NESTING = 10; +const CFFStandardStrings = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "endash", "dagger", "daggerdbl", "periodcentered", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", "Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", "logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", "degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", "aacute", "acircumflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", "otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", "001.000", "001.001", "001.002", "001.003", "Black", "Bold", "Book", "Light", "Medium", "Regular", "Roman", "Semibold"]; +exports.CFFStandardStrings = CFFStandardStrings; +const NUM_STANDARD_CFF_STRINGS = 391; +const CharstringValidationData = [null, { + id: "hstem", + min: 2, + stackClearing: true, + stem: true +}, null, { + id: "vstem", + min: 2, + stackClearing: true, + stem: true +}, { + id: "vmoveto", + min: 1, + stackClearing: true +}, { + id: "rlineto", + min: 2, + resetStack: true +}, { + id: "hlineto", + min: 1, + resetStack: true +}, { + id: "vlineto", + min: 1, + resetStack: true +}, { + id: "rrcurveto", + min: 6, + resetStack: true +}, null, { + id: "callsubr", + min: 1, + undefStack: true +}, { + id: "return", + min: 0, + undefStack: true +}, null, null, { + id: "endchar", + min: 0, + stackClearing: true +}, null, null, null, { + id: "hstemhm", + min: 2, + stackClearing: true, + stem: true +}, { + id: "hintmask", + min: 0, + stackClearing: true +}, { + id: "cntrmask", + min: 0, + stackClearing: true +}, { + id: "rmoveto", + min: 2, + stackClearing: true +}, { + id: "hmoveto", + min: 1, + stackClearing: true +}, { + id: "vstemhm", + min: 2, + stackClearing: true, + stem: true +}, { + id: "rcurveline", + min: 8, + resetStack: true +}, { + id: "rlinecurve", + min: 8, + resetStack: true +}, { + id: "vvcurveto", + min: 4, + resetStack: true +}, { + id: "hhcurveto", + min: 4, + resetStack: true +}, null, { + id: "callgsubr", + min: 1, + undefStack: true +}, { + id: "vhcurveto", + min: 4, + resetStack: true +}, { + id: "hvcurveto", + min: 4, + resetStack: true +}]; +const CharstringValidationData12 = [null, null, null, { + id: "and", + min: 2, + stackDelta: -1 +}, { + id: "or", + min: 2, + stackDelta: -1 +}, { + id: "not", + min: 1, + stackDelta: 0 +}, null, null, null, { + id: "abs", + min: 1, + stackDelta: 0 +}, { + id: "add", + min: 2, + stackDelta: -1, + + stackFn(stack, index) { + stack[index - 2] = stack[index - 2] + stack[index - 1]; + } + +}, { + id: "sub", + min: 2, + stackDelta: -1, + + stackFn(stack, index) { + stack[index - 2] = stack[index - 2] - stack[index - 1]; + } + +}, { + id: "div", + min: 2, + stackDelta: -1, + + stackFn(stack, index) { + stack[index - 2] = stack[index - 2] / stack[index - 1]; + } + +}, null, { + id: "neg", + min: 1, + stackDelta: 0, + + stackFn(stack, index) { + stack[index - 1] = -stack[index - 1]; + } + +}, { + id: "eq", + min: 2, + stackDelta: -1 +}, null, null, { + id: "drop", + min: 1, + stackDelta: -1 +}, null, { + id: "put", + min: 2, + stackDelta: -2 +}, { + id: "get", + min: 1, + stackDelta: 0 +}, { + id: "ifelse", + min: 4, + stackDelta: -3 +}, { + id: "random", + min: 0, + stackDelta: 1 +}, { + id: "mul", + min: 2, + stackDelta: -1, + + stackFn(stack, index) { + stack[index - 2] = stack[index - 2] * stack[index - 1]; + } + +}, null, { + id: "sqrt", + min: 1, + stackDelta: 0 +}, { + id: "dup", + min: 1, + stackDelta: 1 +}, { + id: "exch", + min: 2, + stackDelta: 0 +}, { + id: "index", + min: 2, + stackDelta: 0 +}, { + id: "roll", + min: 3, + stackDelta: -2 +}, null, null, null, { + id: "hflex", + min: 7, + resetStack: true +}, { + id: "flex", + min: 13, + resetStack: true +}, { + id: "hflex1", + min: 9, + resetStack: true +}, { + id: "flex1", + min: 11, + resetStack: true +}]; + +class CFFParser { + constructor(file, properties, seacAnalysisEnabled) { + this.bytes = file.getBytes(); + this.properties = properties; + this.seacAnalysisEnabled = !!seacAnalysisEnabled; + } + + parse() { + const properties = this.properties; + const cff = new CFF(); + this.cff = cff; + const header = this.parseHeader(); + const nameIndex = this.parseIndex(header.endPos); + const topDictIndex = this.parseIndex(nameIndex.endPos); + const stringIndex = this.parseIndex(topDictIndex.endPos); + const globalSubrIndex = this.parseIndex(stringIndex.endPos); + const topDictParsed = this.parseDict(topDictIndex.obj.get(0)); + const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings); + cff.header = header.obj; + cff.names = this.parseNameIndex(nameIndex.obj); + cff.strings = this.parseStringIndex(stringIndex.obj); + cff.topDict = topDict; + cff.globalSubrIndex = globalSubrIndex.obj; + this.parsePrivateDict(cff.topDict); + cff.isCIDFont = topDict.hasName("ROS"); + const charStringOffset = topDict.getByName("CharStrings"); + const charStringIndex = this.parseIndex(charStringOffset).obj; + const fontMatrix = topDict.getByName("FontMatrix"); + + if (fontMatrix) { + properties.fontMatrix = fontMatrix; + } + + const fontBBox = topDict.getByName("FontBBox"); + + if (fontBBox) { + properties.ascent = Math.max(fontBBox[3], fontBBox[1]); + properties.descent = Math.min(fontBBox[1], fontBBox[3]); + properties.ascentScaled = true; + } + + let charset, encoding; + + if (cff.isCIDFont) { + const fdArrayIndex = this.parseIndex(topDict.getByName("FDArray")).obj; + + for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) { + const dictRaw = fdArrayIndex.get(i); + const fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings); + this.parsePrivateDict(fontDict); + cff.fdArray.push(fontDict); + } + + encoding = null; + charset = this.parseCharsets(topDict.getByName("charset"), charStringIndex.count, cff.strings, true); + cff.fdSelect = this.parseFDSelect(topDict.getByName("FDSelect"), charStringIndex.count); + } else { + charset = this.parseCharsets(topDict.getByName("charset"), charStringIndex.count, cff.strings, false); + encoding = this.parseEncoding(topDict.getByName("Encoding"), properties, cff.strings, charset.charset); + } + + cff.charset = charset; + cff.encoding = encoding; + const charStringsAndSeacs = this.parseCharStrings({ + charStrings: charStringIndex, + localSubrIndex: topDict.privateDict.subrsIndex, + globalSubrIndex: globalSubrIndex.obj, + fdSelect: cff.fdSelect, + fdArray: cff.fdArray, + privateDict: topDict.privateDict + }); + cff.charStrings = charStringsAndSeacs.charStrings; + cff.seacs = charStringsAndSeacs.seacs; + cff.widths = charStringsAndSeacs.widths; + return cff; + } + + parseHeader() { + let bytes = this.bytes; + const bytesLength = bytes.length; + let offset = 0; + + while (offset < bytesLength && bytes[offset] !== 1) { + ++offset; + } + + if (offset >= bytesLength) { + throw new _util.FormatError("Invalid CFF header"); + } + + if (offset !== 0) { + (0, _util.info)("cff data is shifted"); + bytes = bytes.subarray(offset); + this.bytes = bytes; + } + + const major = bytes[0]; + const minor = bytes[1]; + const hdrSize = bytes[2]; + const offSize = bytes[3]; + const header = new CFFHeader(major, minor, hdrSize, offSize); + return { + obj: header, + endPos: hdrSize + }; + } + + parseDict(dict) { + let pos = 0; + + function parseOperand() { + let value = dict[pos++]; + + if (value === 30) { + return parseFloatOperand(); + } else if (value === 28) { + value = dict[pos++]; + value = (value << 24 | dict[pos++] << 16) >> 16; + return value; + } else if (value === 29) { + value = dict[pos++]; + value = value << 8 | dict[pos++]; + value = value << 8 | dict[pos++]; + value = value << 8 | dict[pos++]; + return value; + } else if (value >= 32 && value <= 246) { + return value - 139; + } else if (value >= 247 && value <= 250) { + return (value - 247) * 256 + dict[pos++] + 108; + } else if (value >= 251 && value <= 254) { + return -((value - 251) * 256) - dict[pos++] - 108; + } + + (0, _util.warn)('CFFParser_parseDict: "' + value + '" is a reserved command.'); + return NaN; + } + + function parseFloatOperand() { + let str = ""; + const eof = 15; + const lookup = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "E", "E-", null, "-"]; + const length = dict.length; + + while (pos < length) { + const b = dict[pos++]; + const b1 = b >> 4; + const b2 = b & 15; + + if (b1 === eof) { + break; } - var ucs2DataSize = 1; - var subitemsCount = stream.readNumber(); - var i; + str += lookup[b1]; + + if (b2 === eof) { + break; + } + + str += lookup[b2]; + } + + return parseFloat(str); + } + + let operands = []; + const entries = []; + pos = 0; + const end = dict.length; + + while (pos < end) { + let b = dict[pos]; + + if (b <= 21) { + if (b === 12) { + b = b << 8 | dict[++pos]; + } + + entries.push([b, operands]); + operands = []; + ++pos; + } else { + operands.push(parseOperand()); + } + } + + return entries; + } + + parseIndex(pos) { + const cffIndex = new CFFIndex(); + const bytes = this.bytes; + const count = bytes[pos++] << 8 | bytes[pos++]; + const offsets = []; + let end = pos; + let i, ii; + + if (count !== 0) { + const offsetSize = bytes[pos++]; + const startPos = pos + (count + 1) * offsetSize - 1; + + for (i = 0, ii = count + 1; i < ii; ++i) { + let offset = 0; + + for (let j = 0; j < offsetSize; ++j) { + offset <<= 8; + offset += bytes[pos++]; + } + + offsets.push(startPos + offset); + } + + end = offsets[count]; + } + + for (i = 0, ii = offsets.length - 1; i < ii; ++i) { + const offsetStart = offsets[i]; + const offsetEnd = offsets[i + 1]; + cffIndex.add(bytes.subarray(offsetStart, offsetEnd)); + } + + return { + obj: cffIndex, + endPos: end + }; + } + + parseNameIndex(index) { + const names = []; + + for (let i = 0, ii = index.count; i < ii; ++i) { + const name = index.get(i); + names.push((0, _util.bytesToString)(name)); + } + + return names; + } + + parseStringIndex(index) { + const strings = new CFFStrings(); + + for (let i = 0, ii = index.count; i < ii; ++i) { + const data = index.get(i); + strings.add((0, _util.bytesToString)(data)); + } + + return strings; + } + + createDict(Type, dict, strings) { + const cffDict = new Type(strings); + + for (let i = 0, ii = dict.length; i < ii; ++i) { + const pair = dict[i]; + const key = pair[0]; + const value = pair[1]; + cffDict.setByKey(key, value); + } + + return cffDict; + } + + parseCharString(state, data, localSubrIndex, globalSubrIndex) { + if (!data || state.callDepth > MAX_SUBR_NESTING) { + return false; + } + + let stackSize = state.stackSize; + const stack = state.stack; + const length = data.length; + + for (let j = 0; j < length;) { + const value = data[j++]; + let validationCommand = null; + + if (value === 12) { + const q = data[j++]; + + if (q === 0) { + data[j - 2] = 139; + data[j - 1] = 22; + stackSize = 0; + } else { + validationCommand = CharstringValidationData12[q]; + } + } else if (value === 28) { + stack[stackSize] = (data[j] << 24 | data[j + 1] << 16) >> 16; + j += 2; + stackSize++; + } else if (value === 14) { + if (stackSize >= 4) { + stackSize -= 4; + + if (this.seacAnalysisEnabled) { + state.seac = stack.slice(stackSize, stackSize + 4); + return false; + } + } + + validationCommand = CharstringValidationData[value]; + } else if (value >= 32 && value <= 246) { + stack[stackSize] = value - 139; + stackSize++; + } else if (value >= 247 && value <= 254) { + stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - data[j] - 108; + j++; + stackSize++; + } else if (value === 255) { + stack[stackSize] = (data[j] << 24 | data[j + 1] << 16 | data[j + 2] << 8 | data[j + 3]) / 65536; + j += 4; + stackSize++; + } else if (value === 19 || value === 20) { + state.hints += stackSize >> 1; + j += state.hints + 7 >> 3; + stackSize %= 2; + validationCommand = CharstringValidationData[value]; + } else if (value === 10 || value === 29) { + let subrsIndex; + + if (value === 10) { + subrsIndex = localSubrIndex; + } else { + subrsIndex = globalSubrIndex; + } + + if (!subrsIndex) { + validationCommand = CharstringValidationData[value]; + (0, _util.warn)("Missing subrsIndex for " + validationCommand.id); + return false; + } + + let bias = 32768; + + if (subrsIndex.count < 1240) { + bias = 107; + } else if (subrsIndex.count < 33900) { + bias = 1131; + } + + const subrNumber = stack[--stackSize] + bias; + + if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) { + validationCommand = CharstringValidationData[value]; + (0, _util.warn)("Out of bounds subrIndex for " + validationCommand.id); + return false; + } + + state.stackSize = stackSize; + state.callDepth++; + const valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex); + + if (!valid) { + return false; + } + + state.callDepth--; + stackSize = state.stackSize; + continue; + } else if (value === 11) { + state.stackSize = stackSize; + return true; + } else if (value === 0 && j === data.length) { + data[j - 1] = 14; + validationCommand = CharstringValidationData[14]; + } else { + validationCommand = CharstringValidationData[value]; + } + + if (validationCommand) { + if (validationCommand.stem) { + state.hints += stackSize >> 1; + + if (value === 3 || value === 23) { + state.hasVStems = true; + } else if (state.hasVStems && (value === 1 || value === 18)) { + (0, _util.warn)("CFF stem hints are in wrong order"); + data[j - 1] = value === 1 ? 3 : 23; + } + } + + if ("min" in validationCommand) { + if (!state.undefStack && stackSize < validationCommand.min) { + (0, _util.warn)("Not enough parameters for " + validationCommand.id + "; actual: " + stackSize + ", expected: " + validationCommand.min); + + if (stackSize === 0) { + data[j - 1] = 14; + return true; + } + + return false; + } + } + + if (state.firstStackClearing && validationCommand.stackClearing) { + state.firstStackClearing = false; + stackSize -= validationCommand.min; + + if (stackSize >= 2 && validationCommand.stem) { + stackSize %= 2; + } else if (stackSize > 1) { + (0, _util.warn)("Found too many parameters for stack-clearing command"); + } + + if (stackSize > 0) { + state.width = stack[stackSize - 1]; + } + } + + if ("stackDelta" in validationCommand) { + if ("stackFn" in validationCommand) { + validationCommand.stackFn(stack, stackSize); + } + + stackSize += validationCommand.stackDelta; + } else if (validationCommand.stackClearing) { + stackSize = 0; + } else if (validationCommand.resetStack) { + stackSize = 0; + state.undefStack = false; + } else if (validationCommand.undefStack) { + stackSize = 0; + state.undefStack = true; + state.firstStackClearing = false; + } + } + } + + state.stackSize = stackSize; + return true; + } + + parseCharStrings(_ref) { + let { + charStrings, + localSubrIndex, + globalSubrIndex, + fdSelect, + fdArray, + privateDict + } = _ref; + const seacs = []; + const widths = []; + const count = charStrings.count; + + for (let i = 0; i < count; i++) { + const charstring = charStrings.get(i); + const state = { + callDepth: 0, + stackSize: 0, + stack: [], + undefStack: true, + hints: 0, + firstStackClearing: true, + seac: null, + width: null, + hasVStems: false + }; + let valid = true; + let localSubrToUse = null; + let privateDictToUse = privateDict; + + if (fdSelect && fdArray.length) { + const fdIndex = fdSelect.getFDIndex(i); + + if (fdIndex === -1) { + (0, _util.warn)("Glyph index is not in fd select."); + valid = false; + } + + if (fdIndex >= fdArray.length) { + (0, _util.warn)("Invalid fd index for glyph index."); + valid = false; + } + + if (valid) { + privateDictToUse = fdArray[fdIndex].privateDict; + localSubrToUse = privateDictToUse.subrsIndex; + } + } else if (localSubrIndex) { + localSubrToUse = localSubrIndex; + } + + if (valid) { + valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex); + } + + if (state.width !== null) { + const nominalWidth = privateDictToUse.getByName("nominalWidthX"); + widths[i] = nominalWidth + state.width; + } else { + const defaultWidth = privateDictToUse.getByName("defaultWidthX"); + widths[i] = defaultWidth; + } + + if (state.seac !== null) { + seacs[i] = state.seac; + } + + if (!valid) { + charStrings.set(i, new Uint8Array([14])); + } + } + + return { + charStrings, + seacs, + widths + }; + } + + emptyPrivateDictionary(parentDict) { + const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings); + parentDict.setByKey(18, [0, 0]); + parentDict.privateDict = privateDict; + } + + parsePrivateDict(parentDict) { + if (!parentDict.hasName("Private")) { + this.emptyPrivateDictionary(parentDict); + return; + } + + const privateOffset = parentDict.getByName("Private"); + + if (!Array.isArray(privateOffset) || privateOffset.length !== 2) { + parentDict.removeByName("Private"); + return; + } + + const size = privateOffset[0]; + const offset = privateOffset[1]; + + if (size === 0 || offset >= this.bytes.length) { + this.emptyPrivateDictionary(parentDict); + return; + } + + const privateDictEnd = offset + size; + const dictData = this.bytes.subarray(offset, privateDictEnd); + const dict = this.parseDict(dictData); + const privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings); + parentDict.privateDict = privateDict; + + if (!privateDict.getByName("Subrs")) { + return; + } + + const subrsOffset = privateDict.getByName("Subrs"); + const relativeOffset = offset + subrsOffset; + + if (subrsOffset === 0 || relativeOffset >= this.bytes.length) { + this.emptyPrivateDictionary(parentDict); + return; + } + + const subrsIndex = this.parseIndex(relativeOffset); + privateDict.subrsIndex = subrsIndex.obj; + } + + parseCharsets(pos, length, strings, cid) { + if (pos === 0) { + return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, _charsets.ISOAdobeCharset); + } else if (pos === 1) { + return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, _charsets.ExpertCharset); + } else if (pos === 2) { + return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, _charsets.ExpertSubsetCharset); + } + + const bytes = this.bytes; + const start = pos; + const format = bytes[pos++]; + const charset = [cid ? 0 : ".notdef"]; + let id, count, i; + length -= 1; + + switch (format) { + case 0: + for (i = 0; i < length; i++) { + id = bytes[pos++] << 8 | bytes[pos++]; + charset.push(cid ? id : strings.get(id)); + } + + break; + + case 1: + while (charset.length <= length) { + id = bytes[pos++] << 8 | bytes[pos++]; + count = bytes[pos++]; + + for (i = 0; i <= count; i++) { + charset.push(cid ? id++ : strings.get(id++)); + } + } + + break; + + case 2: + while (charset.length <= length) { + id = bytes[pos++] << 8 | bytes[pos++]; + count = bytes[pos++] << 8 | bytes[pos++]; + + for (i = 0; i <= count; i++) { + charset.push(cid ? id++ : strings.get(id++)); + } + } + + break; + + default: + throw new _util.FormatError("Unknown charset format"); + } + + const end = pos; + const raw = bytes.subarray(start, end); + return new CFFCharset(false, format, charset, raw); + } + + parseEncoding(pos, properties, strings, charset) { + const encoding = Object.create(null); + const bytes = this.bytes; + let predefined = false; + let format, i, ii; + let raw = null; + + function readSupplement() { + const supplementsCount = bytes[pos++]; + + for (i = 0; i < supplementsCount; i++) { + const code = bytes[pos++]; + const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff); + encoding[code] = charset.indexOf(strings.get(sid)); + } + } + + if (pos === 0 || pos === 1) { + predefined = true; + format = pos; + const baseEncoding = pos ? _encodings.ExpertEncoding : _encodings.StandardEncoding; + + for (i = 0, ii = charset.length; i < ii; i++) { + const index = baseEncoding.indexOf(charset[i]); + + if (index !== -1) { + encoding[index] = i; + } + } + } else { + const dataStart = pos; + format = bytes[pos++]; + + switch (format & 0x7f) { + case 0: + const glyphsCount = bytes[pos++]; + + for (i = 1; i <= glyphsCount; i++) { + encoding[bytes[pos++]] = i; + } + + break; + + case 1: + const rangesCount = bytes[pos++]; + let gid = 1; + + for (i = 0; i < rangesCount; i++) { + const start = bytes[pos++]; + const left = bytes[pos++]; + + for (let j = start; j <= start + left; j++) { + encoding[j] = gid++; + } + } + + break; + + default: + throw new _util.FormatError(`Unknown encoding format: ${format} in CFF`); + } + + const dataEnd = pos; + + if (format & 0x80) { + bytes[dataStart] &= 0x7f; + readSupplement(); + } + + raw = bytes.subarray(dataStart, dataEnd); + } + + format &= 0x7f; + return new CFFEncoding(predefined, format, encoding, raw); + } + + parseFDSelect(pos, length) { + const bytes = this.bytes; + const format = bytes[pos++]; + const fdSelect = []; + let i; + + switch (format) { + case 0: + for (i = 0; i < length; ++i) { + const id = bytes[pos++]; + fdSelect.push(id); + } + + break; + + case 3: + const rangesCount = bytes[pos++] << 8 | bytes[pos++]; + + for (i = 0; i < rangesCount; ++i) { + let first = bytes[pos++] << 8 | bytes[pos++]; + + if (i === 0 && first !== 0) { + (0, _util.warn)("parseFDSelect: The first range must have a first GID of 0" + " -- trying to recover."); + first = 0; + } + + const fdIndex = bytes[pos++]; + const next = bytes[pos] << 8 | bytes[pos + 1]; + + for (let j = first; j < next; ++j) { + fdSelect.push(fdIndex); + } + } + + pos += 2; + break; + + default: + throw new _util.FormatError(`parseFDSelect: Unknown format "${format}".`); + } + + if (fdSelect.length !== length) { + throw new _util.FormatError("parseFDSelect: Invalid font data."); + } + + return new CFFFDSelect(format, fdSelect); + } + +} + +exports.CFFParser = CFFParser; + +class CFF { + constructor() { + this.header = null; + this.names = []; + this.topDict = null; + this.strings = new CFFStrings(); + this.globalSubrIndex = null; + this.encoding = null; + this.charset = null; + this.charStrings = null; + this.fdArray = []; + this.fdSelect = null; + this.isCIDFont = false; + } + + duplicateFirstGlyph() { + if (this.charStrings.count >= 65535) { + (0, _util.warn)("Not enough space in charstrings to duplicate first glyph."); + return; + } + + const glyphZero = this.charStrings.get(0); + this.charStrings.add(glyphZero); + + if (this.isCIDFont) { + this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]); + } + } + + hasGlyphId(id) { + if (id < 0 || id >= this.charStrings.count) { + return false; + } + + const glyph = this.charStrings.get(id); + return glyph.length > 0; + } + +} + +exports.CFF = CFF; + +class CFFHeader { + constructor(major, minor, hdrSize, offSize) { + this.major = major; + this.minor = minor; + this.hdrSize = hdrSize; + this.offSize = offSize; + } + +} + +exports.CFFHeader = CFFHeader; + +class CFFStrings { + constructor() { + this.strings = []; + } + + get(index) { + if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) { + return CFFStandardStrings[index]; + } + + if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) { + return this.strings[index - NUM_STANDARD_CFF_STRINGS]; + } + + return CFFStandardStrings[0]; + } + + getSID(str) { + let index = CFFStandardStrings.indexOf(str); + + if (index !== -1) { + return index; + } + + index = this.strings.indexOf(str); + + if (index !== -1) { + return index + NUM_STANDARD_CFF_STRINGS; + } + + return -1; + } + + add(value) { + this.strings.push(value); + } + + get count() { + return this.strings.length; + } + +} + +exports.CFFStrings = CFFStrings; + +class CFFIndex { + constructor() { + this.objects = []; + this.length = 0; + } + + add(data) { + this.length += data.length; + this.objects.push(data); + } + + set(index, data) { + this.length += data.length - this.objects[index].length; + this.objects[index] = data; + } + + get(index) { + return this.objects[index]; + } + + get count() { + return this.objects.length; + } + +} + +exports.CFFIndex = CFFIndex; + +class CFFDict { + constructor(tables, strings) { + this.keyToNameMap = tables.keyToNameMap; + this.nameToKeyMap = tables.nameToKeyMap; + this.defaults = tables.defaults; + this.types = tables.types; + this.opcodes = tables.opcodes; + this.order = tables.order; + this.strings = strings; + this.values = Object.create(null); + } + + setByKey(key, value) { + if (!(key in this.keyToNameMap)) { + return false; + } + + const valueLength = value.length; + + if (valueLength === 0) { + return true; + } + + for (let i = 0; i < valueLength; i++) { + if (isNaN(value[i])) { + (0, _util.warn)('Invalid CFFDict value: "' + value + '" for key "' + key + '".'); + return true; + } + } + + const type = this.types[key]; + + if (type === "num" || type === "sid" || type === "offset") { + value = value[0]; + } + + this.values[key] = value; + return true; + } + + setByName(name, value) { + if (!(name in this.nameToKeyMap)) { + throw new _util.FormatError(`Invalid dictionary name "${name}"`); + } + + this.values[this.nameToKeyMap[name]] = value; + } + + hasName(name) { + return this.nameToKeyMap[name] in this.values; + } + + getByName(name) { + if (!(name in this.nameToKeyMap)) { + throw new _util.FormatError(`Invalid dictionary name ${name}"`); + } + + const key = this.nameToKeyMap[name]; + + if (!(key in this.values)) { + return this.defaults[key]; + } + + return this.values[key]; + } + + removeByName(name) { + delete this.values[this.nameToKeyMap[name]]; + } + + static createTables(layout) { + const tables = { + keyToNameMap: {}, + nameToKeyMap: {}, + defaults: {}, + types: {}, + opcodes: {}, + order: [] + }; + + for (let i = 0, ii = layout.length; i < ii; ++i) { + const entry = layout[i]; + const key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0]; + tables.keyToNameMap[key] = entry[1]; + tables.nameToKeyMap[entry[1]] = key; + tables.types[key] = entry[2]; + tables.defaults[key] = entry[3]; + tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]]; + tables.order.push(key); + } + + return tables; + } + +} + +const CFFTopDictLayout = [[[12, 30], "ROS", ["sid", "sid", "num"], null], [[12, 20], "SyntheticBase", "num", null], [0, "version", "sid", null], [1, "Notice", "sid", null], [[12, 0], "Copyright", "sid", null], [2, "FullName", "sid", null], [3, "FamilyName", "sid", null], [4, "Weight", "sid", null], [[12, 1], "isFixedPitch", "num", 0], [[12, 2], "ItalicAngle", "num", 0], [[12, 3], "UnderlinePosition", "num", -100], [[12, 4], "UnderlineThickness", "num", 50], [[12, 5], "PaintType", "num", 0], [[12, 6], "CharstringType", "num", 2], [[12, 7], "FontMatrix", ["num", "num", "num", "num", "num", "num"], [0.001, 0, 0, 0.001, 0, 0]], [13, "UniqueID", "num", null], [5, "FontBBox", ["num", "num", "num", "num"], [0, 0, 0, 0]], [[12, 8], "StrokeWidth", "num", 0], [14, "XUID", "array", null], [15, "charset", "offset", 0], [16, "Encoding", "offset", 0], [17, "CharStrings", "offset", 0], [18, "Private", ["offset", "offset"], null], [[12, 21], "PostScript", "sid", null], [[12, 22], "BaseFontName", "sid", null], [[12, 23], "BaseFontBlend", "delta", null], [[12, 31], "CIDFontVersion", "num", 0], [[12, 32], "CIDFontRevision", "num", 0], [[12, 33], "CIDFontType", "num", 0], [[12, 34], "CIDCount", "num", 8720], [[12, 35], "UIDBase", "num", null], [[12, 37], "FDSelect", "offset", null], [[12, 36], "FDArray", "offset", null], [[12, 38], "FontName", "sid", null]]; + +class CFFTopDict extends CFFDict { + static get tables() { + return (0, _util.shadow)(this, "tables", this.createTables(CFFTopDictLayout)); + } + + constructor(strings) { + super(CFFTopDict.tables, strings); + this.privateDict = null; + } + +} + +exports.CFFTopDict = CFFTopDict; +const CFFPrivateDictLayout = [[6, "BlueValues", "delta", null], [7, "OtherBlues", "delta", null], [8, "FamilyBlues", "delta", null], [9, "FamilyOtherBlues", "delta", null], [[12, 9], "BlueScale", "num", 0.039625], [[12, 10], "BlueShift", "num", 7], [[12, 11], "BlueFuzz", "num", 1], [10, "StdHW", "num", null], [11, "StdVW", "num", null], [[12, 12], "StemSnapH", "delta", null], [[12, 13], "StemSnapV", "delta", null], [[12, 14], "ForceBold", "num", 0], [[12, 17], "LanguageGroup", "num", 0], [[12, 18], "ExpansionFactor", "num", 0.06], [[12, 19], "initialRandomSeed", "num", 0], [20, "defaultWidthX", "num", 0], [21, "nominalWidthX", "num", 0], [19, "Subrs", "offset", null]]; + +class CFFPrivateDict extends CFFDict { + static get tables() { + return (0, _util.shadow)(this, "tables", this.createTables(CFFPrivateDictLayout)); + } + + constructor(strings) { + super(CFFPrivateDict.tables, strings); + this.subrsIndex = null; + } + +} + +exports.CFFPrivateDict = CFFPrivateDict; +const CFFCharsetPredefinedTypes = { + ISO_ADOBE: 0, + EXPERT: 1, + EXPERT_SUBSET: 2 +}; + +class CFFCharset { + constructor(predefined, format, charset, raw) { + this.predefined = predefined; + this.format = format; + this.charset = charset; + this.raw = raw; + } + +} + +exports.CFFCharset = CFFCharset; + +class CFFEncoding { + constructor(predefined, format, encoding, raw) { + this.predefined = predefined; + this.format = format; + this.encoding = encoding; + this.raw = raw; + } + +} + +class CFFFDSelect { + constructor(format, fdSelect) { + this.format = format; + this.fdSelect = fdSelect; + } + + getFDIndex(glyphIndex) { + if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) { + return -1; + } + + return this.fdSelect[glyphIndex]; + } + +} + +exports.CFFFDSelect = CFFFDSelect; + +class CFFOffsetTracker { + constructor() { + this.offsets = Object.create(null); + } + + isTracking(key) { + return key in this.offsets; + } + + track(key, location) { + if (key in this.offsets) { + throw new _util.FormatError(`Already tracking location of ${key}`); + } + + this.offsets[key] = location; + } + + offset(value) { + for (const key in this.offsets) { + this.offsets[key] += value; + } + } + + setEntryLocation(key, values, output) { + if (!(key in this.offsets)) { + throw new _util.FormatError(`Not tracking location of ${key}`); + } + + const data = output.data; + const dataOffset = this.offsets[key]; + const size = 5; + + for (let i = 0, ii = values.length; i < ii; ++i) { + const offset0 = i * size + dataOffset; + const offset1 = offset0 + 1; + const offset2 = offset0 + 2; + const offset3 = offset0 + 3; + const offset4 = offset0 + 4; + + if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) { + throw new _util.FormatError("writing to an offset that is not empty"); + } + + const value = values[i]; + data[offset0] = 0x1d; + data[offset1] = value >> 24 & 0xff; + data[offset2] = value >> 16 & 0xff; + data[offset3] = value >> 8 & 0xff; + data[offset4] = value & 0xff; + } + } + +} + +class CFFCompiler { + constructor(cff) { + this.cff = cff; + } + + compile() { + const cff = this.cff; + const output = { + data: [], + length: 0, + + add(data) { + this.data = this.data.concat(data); + this.length = this.data.length; + } + + }; + const header = this.compileHeader(cff.header); + output.add(header); + const nameIndex = this.compileNameIndex(cff.names); + output.add(nameIndex); + + if (cff.isCIDFont) { + if (cff.topDict.hasName("FontMatrix")) { + const base = cff.topDict.getByName("FontMatrix"); + cff.topDict.removeByName("FontMatrix"); + + for (let i = 0, ii = cff.fdArray.length; i < ii; i++) { + const subDict = cff.fdArray[i]; + let matrix = base.slice(0); + + if (subDict.hasName("FontMatrix")) { + matrix = _util.Util.transform(matrix, subDict.getByName("FontMatrix")); + } + + subDict.setByName("FontMatrix", matrix); + } + } + } + + const xuid = cff.topDict.getByName("XUID"); + + if (xuid && xuid.length > 16) { + cff.topDict.removeByName("XUID"); + } + + cff.topDict.setByName("charset", 0); + let compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont); + output.add(compiled.output); + const topDictTracker = compiled.trackers[0]; + const stringIndex = this.compileStringIndex(cff.strings.strings); + output.add(stringIndex); + const globalSubrIndex = this.compileIndex(cff.globalSubrIndex); + output.add(globalSubrIndex); + + if (cff.encoding && cff.topDict.hasName("Encoding")) { + if (cff.encoding.predefined) { + topDictTracker.setEntryLocation("Encoding", [cff.encoding.format], output); + } else { + const encoding = this.compileEncoding(cff.encoding); + topDictTracker.setEntryLocation("Encoding", [output.length], output); + output.add(encoding); + } + } + + const charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont); + topDictTracker.setEntryLocation("charset", [output.length], output); + output.add(charset); + const charStrings = this.compileCharStrings(cff.charStrings); + topDictTracker.setEntryLocation("CharStrings", [output.length], output); + output.add(charStrings); + + if (cff.isCIDFont) { + topDictTracker.setEntryLocation("FDSelect", [output.length], output); + const fdSelect = this.compileFDSelect(cff.fdSelect); + output.add(fdSelect); + compiled = this.compileTopDicts(cff.fdArray, output.length, true); + topDictTracker.setEntryLocation("FDArray", [output.length], output); + output.add(compiled.output); + const fontDictTrackers = compiled.trackers; + this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output); + } + + this.compilePrivateDicts([cff.topDict], [topDictTracker], output); + output.add([0]); + return output.data; + } + + encodeNumber(value) { + if (Number.isInteger(value)) { + return this.encodeInteger(value); + } + + return this.encodeFloat(value); + } + + static get EncodeFloatRegExp() { + return (0, _util.shadow)(this, "EncodeFloatRegExp", /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/); + } + + encodeFloat(num) { + let value = num.toString(); + const m = CFFCompiler.EncodeFloatRegExp.exec(value); + + if (m) { + const epsilon = parseFloat("1e" + ((m[2] ? +m[2] : 0) + m[1].length)); + value = (Math.round(num * epsilon) / epsilon).toString(); + } + + let nibbles = ""; + let i, ii; + + for (i = 0, ii = value.length; i < ii; ++i) { + const a = value[i]; + + if (a === "e") { + nibbles += value[++i] === "-" ? "c" : "b"; + } else if (a === ".") { + nibbles += "a"; + } else if (a === "-") { + nibbles += "e"; + } else { + nibbles += a; + } + } + + nibbles += nibbles.length & 1 ? "f" : "ff"; + const out = [30]; + + for (i = 0, ii = nibbles.length; i < ii; i += 2) { + out.push(parseInt(nibbles.substring(i, i + 2), 16)); + } + + return out; + } + + encodeInteger(value) { + let code; + + if (value >= -107 && value <= 107) { + code = [value + 139]; + } else if (value >= 108 && value <= 1131) { + value -= 108; + code = [(value >> 8) + 247, value & 0xff]; + } else if (value >= -1131 && value <= -108) { + value = -value - 108; + code = [(value >> 8) + 251, value & 0xff]; + } else if (value >= -32768 && value <= 32767) { + code = [0x1c, value >> 8 & 0xff, value & 0xff]; + } else { + code = [0x1d, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff]; + } + + return code; + } + + compileHeader(header) { + return [header.major, header.minor, 4, header.offSize]; + } + + compileNameIndex(names) { + const nameIndex = new CFFIndex(); + + for (let i = 0, ii = names.length; i < ii; ++i) { + const name = names[i]; + const length = Math.min(name.length, 127); + let sanitizedName = new Array(length); + + for (let j = 0; j < length; j++) { + let char = name[j]; + + if (char < "!" || char > "~" || char === "[" || char === "]" || char === "(" || char === ")" || char === "{" || char === "}" || char === "<" || char === ">" || char === "/" || char === "%") { + char = "_"; + } + + sanitizedName[j] = char; + } + + sanitizedName = sanitizedName.join(""); + + if (sanitizedName === "") { + sanitizedName = "Bad_Font_Name"; + } + + nameIndex.add((0, _util.stringToBytes)(sanitizedName)); + } + + return this.compileIndex(nameIndex); + } + + compileTopDicts(dicts, length, removeCidKeys) { + const fontDictTrackers = []; + let fdArrayIndex = new CFFIndex(); + + for (let i = 0, ii = dicts.length; i < ii; ++i) { + const fontDict = dicts[i]; + + if (removeCidKeys) { + fontDict.removeByName("CIDFontVersion"); + fontDict.removeByName("CIDFontRevision"); + fontDict.removeByName("CIDFontType"); + fontDict.removeByName("CIDCount"); + fontDict.removeByName("UIDBase"); + } + + const fontDictTracker = new CFFOffsetTracker(); + const fontDictData = this.compileDict(fontDict, fontDictTracker); + fontDictTrackers.push(fontDictTracker); + fdArrayIndex.add(fontDictData); + fontDictTracker.offset(length); + } + + fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers); + return { + trackers: fontDictTrackers, + output: fdArrayIndex + }; + } + + compilePrivateDicts(dicts, trackers, output) { + for (let i = 0, ii = dicts.length; i < ii; ++i) { + const fontDict = dicts[i]; + const privateDict = fontDict.privateDict; + + if (!privateDict || !fontDict.hasName("Private")) { + throw new _util.FormatError("There must be a private dictionary."); + } + + const privateDictTracker = new CFFOffsetTracker(); + const privateDictData = this.compileDict(privateDict, privateDictTracker); + let outputLength = output.length; + privateDictTracker.offset(outputLength); + + if (!privateDictData.length) { + outputLength = 0; + } + + trackers[i].setEntryLocation("Private", [privateDictData.length, outputLength], output); + output.add(privateDictData); + + if (privateDict.subrsIndex && privateDict.hasName("Subrs")) { + const subrs = this.compileIndex(privateDict.subrsIndex); + privateDictTracker.setEntryLocation("Subrs", [privateDictData.length], output); + output.add(subrs); + } + } + } + + compileDict(dict, offsetTracker) { + const out = []; + + for (const key of dict.order) { + if (!(key in dict.values)) { + continue; + } + + let values = dict.values[key]; + let types = dict.types[key]; + + if (!Array.isArray(types)) { + types = [types]; + } + + if (!Array.isArray(values)) { + values = [values]; + } + + if (values.length === 0) { + continue; + } + + for (let j = 0, jj = types.length; j < jj; ++j) { + const type = types[j]; + const value = values[j]; switch (type) { - case 0: - stream.readHex(start, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize)); - - for (i = 1; i < subitemsCount; i++) { - incHex(end, dataSize); - stream.readHexNumber(start, dataSize); - addHex(start, end, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize)); - } - + case "num": + case "sid": + out.push(...this.encodeNumber(value)); break; - case 1: - stream.readHex(start, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - stream.readNumber(); + case "offset": + const name = dict.keyToNameMap[key]; - for (i = 1; i < subitemsCount; i++) { - incHex(end, dataSize); - stream.readHexNumber(start, dataSize); - addHex(start, end, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - stream.readNumber(); + if (!offsetTracker.isTracking(name)) { + offsetTracker.track(name, out.length); } + out.push(0x1d, 0, 0, 0, 0); break; - case 2: - stream.readHex(_char, dataSize); - code = stream.readNumber(); - cMap.mapOne(hexToInt(_char, dataSize), code); + case "array": + case "delta": + out.push(...this.encodeNumber(value)); - for (i = 1; i < subitemsCount; i++) { - incHex(_char, dataSize); - - if (!sequence) { - stream.readHexNumber(tmp, dataSize); - addHex(_char, tmp, dataSize); - } - - code = stream.readSigned() + (code + 1); - cMap.mapOne(hexToInt(_char, dataSize), code); - } - - break; - - case 3: - stream.readHex(start, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - code = stream.readNumber(); - cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code); - - for (i = 1; i < subitemsCount; i++) { - incHex(end, dataSize); - - if (!sequence) { - stream.readHexNumber(start, dataSize); - addHex(start, end, dataSize); - } else { - start.set(end); - } - - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - code = stream.readNumber(); - cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code); - } - - break; - - case 4: - stream.readHex(_char, ucs2DataSize); - stream.readHex(charCode, dataSize); - cMap.mapOne(hexToInt(_char, ucs2DataSize), hexToStr(charCode, dataSize)); - - for (i = 1; i < subitemsCount; i++) { - incHex(_char, ucs2DataSize); - - if (!sequence) { - stream.readHexNumber(tmp, ucs2DataSize); - addHex(_char, tmp, ucs2DataSize); - } - - incHex(charCode, dataSize); - stream.readHexSigned(tmp, dataSize); - addHex(charCode, tmp, dataSize); - cMap.mapOne(hexToInt(_char, ucs2DataSize), hexToStr(charCode, dataSize)); - } - - break; - - case 5: - stream.readHex(start, ucs2DataSize); - stream.readHexNumber(end, ucs2DataSize); - addHex(end, start, ucs2DataSize); - stream.readHex(charCode, dataSize); - cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize)); - - for (i = 1; i < subitemsCount; i++) { - incHex(end, ucs2DataSize); - - if (!sequence) { - stream.readHexNumber(start, ucs2DataSize); - addHex(start, end, ucs2DataSize); - } else { - start.set(end); - } - - stream.readHexNumber(end, ucs2DataSize); - addHex(end, start, ucs2DataSize); - stream.readHex(charCode, dataSize); - cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize)); + for (let k = 1, kk = values.length; k < kk; ++k) { + out.push(...this.encodeNumber(values[k])); } break; default: - reject(new Error('processBinaryCMap: Unknown type: ' + type)); - return; + throw new _util.FormatError(`Unknown data type of ${type}`); } } - if (useCMap) { - resolve(extend(useCMap)); - return; - } - - resolve(cMap); - }); - } - - function BinaryCMapReader() {} - - BinaryCMapReader.prototype = { - process: processBinaryCMap - }; - return BinaryCMapReader; -}(); - -var CMapFactory = function CMapFactoryClosure() { - function strToInt(str) { - var a = 0; - - for (var i = 0; i < str.length; i++) { - a = a << 8 | str.charCodeAt(i); + out.push(...dict.opcodes[key]); } - return a >>> 0; + return out; } - function expectString(obj) { - if (!(0, _util.isString)(obj)) { - throw new _util.FormatError('Malformed CMap: expected string.'); - } - } + compileStringIndex(strings) { + const stringIndex = new CFFIndex(); - function expectInt(obj) { - if (!Number.isInteger(obj)) { - throw new _util.FormatError('Malformed CMap: expected int.'); - } - } - - function parseBfChar(cMap, lexer) { - while (true) { - var obj = lexer.getObj(); - - if ((0, _primitives.isEOF)(obj)) { - break; - } - - if ((0, _primitives.isCmd)(obj, 'endbfchar')) { - return; - } - - expectString(obj); - var src = strToInt(obj); - obj = lexer.getObj(); - expectString(obj); - var dst = obj; - cMap.mapOne(src, dst); - } - } - - function parseBfRange(cMap, lexer) { - while (true) { - var obj = lexer.getObj(); - - if ((0, _primitives.isEOF)(obj)) { - break; - } - - if ((0, _primitives.isCmd)(obj, 'endbfrange')) { - return; - } - - expectString(obj); - var low = strToInt(obj); - obj = lexer.getObj(); - expectString(obj); - var high = strToInt(obj); - obj = lexer.getObj(); - - if (Number.isInteger(obj) || (0, _util.isString)(obj)) { - var dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj; - cMap.mapBfRange(low, high, dstLow); - } else if ((0, _primitives.isCmd)(obj, '[')) { - obj = lexer.getObj(); - var array = []; - - while (!(0, _primitives.isCmd)(obj, ']') && !(0, _primitives.isEOF)(obj)) { - array.push(obj); - obj = lexer.getObj(); - } - - cMap.mapBfRangeToArray(low, high, array); - } else { - break; - } + for (let i = 0, ii = strings.length; i < ii; ++i) { + stringIndex.add((0, _util.stringToBytes)(strings[i])); } - throw new _util.FormatError('Invalid bf range.'); + return this.compileIndex(stringIndex); } - function parseCidChar(cMap, lexer) { - while (true) { - var obj = lexer.getObj(); - - if ((0, _primitives.isEOF)(obj)) { - break; - } - - if ((0, _primitives.isCmd)(obj, 'endcidchar')) { - return; - } - - expectString(obj); - var src = strToInt(obj); - obj = lexer.getObj(); - expectInt(obj); - var dst = obj; - cMap.mapOne(src, dst); - } + compileGlobalSubrIndex() { + const globalSubrIndex = this.cff.globalSubrIndex; + this.out.writeByteArray(this.compileIndex(globalSubrIndex)); } - function parseCidRange(cMap, lexer) { - while (true) { - var obj = lexer.getObj(); + compileCharStrings(charStrings) { + const charStringsIndex = new CFFIndex(); - if ((0, _primitives.isEOF)(obj)) { - break; - } + for (let i = 0; i < charStrings.count; i++) { + const glyph = charStrings.get(i); - if ((0, _primitives.isCmd)(obj, 'endcidrange')) { - return; - } - - expectString(obj); - var low = strToInt(obj); - obj = lexer.getObj(); - expectString(obj); - var high = strToInt(obj); - obj = lexer.getObj(); - expectInt(obj); - var dstLow = obj; - cMap.mapCidRange(low, high, dstLow); - } - } - - function parseCodespaceRange(cMap, lexer) { - while (true) { - var obj = lexer.getObj(); - - if ((0, _primitives.isEOF)(obj)) { - break; - } - - if ((0, _primitives.isCmd)(obj, 'endcodespacerange')) { - return; - } - - if (!(0, _util.isString)(obj)) { - break; - } - - var low = strToInt(obj); - obj = lexer.getObj(); - - if (!(0, _util.isString)(obj)) { - break; - } - - var high = strToInt(obj); - cMap.addCodespaceRange(obj.length, low, high); - } - - throw new _util.FormatError('Invalid codespace range.'); - } - - function parseWMode(cMap, lexer) { - var obj = lexer.getObj(); - - if (Number.isInteger(obj)) { - cMap.vertical = !!obj; - } - } - - function parseCMapName(cMap, lexer) { - var obj = lexer.getObj(); - - if ((0, _primitives.isName)(obj) && (0, _util.isString)(obj.name)) { - cMap.name = obj.name; - } - } - - function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) { - var previous; - var embeddedUseCMap; - - objLoop: while (true) { - try { - var obj = lexer.getObj(); - - if ((0, _primitives.isEOF)(obj)) { - break; - } else if ((0, _primitives.isName)(obj)) { - if (obj.name === 'WMode') { - parseWMode(cMap, lexer); - } else if (obj.name === 'CMapName') { - parseCMapName(cMap, lexer); - } - - previous = obj; - } else if ((0, _primitives.isCmd)(obj)) { - switch (obj.cmd) { - case 'endcmap': - break objLoop; - - case 'usecmap': - if ((0, _primitives.isName)(previous)) { - embeddedUseCMap = previous.name; - } - - break; - - case 'begincodespacerange': - parseCodespaceRange(cMap, lexer); - break; - - case 'beginbfchar': - parseBfChar(cMap, lexer); - break; - - case 'begincidchar': - parseCidChar(cMap, lexer); - break; - - case 'beginbfrange': - parseBfRange(cMap, lexer); - break; - - case 'begincidrange': - parseCidRange(cMap, lexer); - break; - } - } - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)('Invalid cMap data: ' + ex); + if (glyph.length === 0) { + charStringsIndex.add(new Uint8Array([0x8b, 0x0e])); continue; } + + charStringsIndex.add(glyph); } - if (!useCMap && embeddedUseCMap) { - useCMap = embeddedUseCMap; - } - - if (useCMap) { - return extendCMap(cMap, fetchBuiltInCMap, useCMap); - } - - return Promise.resolve(cMap); + return this.compileIndex(charStringsIndex); } - function extendCMap(cMap, fetchBuiltInCMap, useCMap) { - return createBuiltInCMap(useCMap, fetchBuiltInCMap).then(function (newCMap) { - cMap.useCMap = newCMap; + compileCharset(charset, numGlyphs, strings, isCIDFont) { + let out; + const numGlyphsLessNotDef = numGlyphs - 1; - if (cMap.numCodespaceRanges === 0) { - var useCodespaceRanges = cMap.useCMap.codespaceRanges; + if (isCIDFont) { + out = new Uint8Array([2, 0, 0, numGlyphsLessNotDef >> 8 & 0xff, numGlyphsLessNotDef & 0xff]); + } else { + const length = 1 + numGlyphsLessNotDef * 2; + out = new Uint8Array(length); + out[0] = 0; + let charsetIndex = 0; + const numCharsets = charset.charset.length; + let warned = false; - for (var i = 0; i < useCodespaceRanges.length; i++) { - cMap.codespaceRanges[i] = useCodespaceRanges[i].slice(); - } + for (let i = 1; i < out.length; i += 2) { + let sid = 0; - cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges; - } + if (charsetIndex < numCharsets) { + const name = charset.charset[charsetIndex++]; + sid = strings.getSID(name); - cMap.useCMap.forEach(function (key, value) { - if (!cMap.contains(key)) { - cMap.mapOne(key, cMap.useCMap.lookup(key)); - } - }); - return cMap; - }); - } + if (sid === -1) { + sid = 0; - function createBuiltInCMap(name, fetchBuiltInCMap) { - if (name === 'Identity-H') { - return Promise.resolve(new IdentityCMap(false, 2)); - } else if (name === 'Identity-V') { - return Promise.resolve(new IdentityCMap(true, 2)); - } - - if (!BUILT_IN_CMAPS.includes(name)) { - return Promise.reject(new Error('Unknown CMap name: ' + name)); - } - - if (!fetchBuiltInCMap) { - return Promise.reject(new Error('Built-in CMap parameters are not provided.')); - } - - return fetchBuiltInCMap(name).then(function (data) { - var cMapData = data.cMapData, - compressionType = data.compressionType; - var cMap = new CMap(true); - - if (compressionType === _util.CMapCompressionType.BINARY) { - return new BinaryCMapReader().process(cMapData, cMap, function (useCMap) { - return extendCMap(cMap, fetchBuiltInCMap, useCMap); - }); - } - - if (compressionType === _util.CMapCompressionType.NONE) { - var lexer = new _parser.Lexer(new _stream.Stream(cMapData)); - return parseCMap(cMap, lexer, fetchBuiltInCMap, null); - } - - return Promise.reject(new Error('TODO: Only BINARY/NONE CMap compression is currently supported.')); - }); - } - - return { - create: function create(params) { - var encoding = params.encoding; - var fetchBuiltInCMap = params.fetchBuiltInCMap; - var useCMap = params.useCMap; - - if ((0, _primitives.isName)(encoding)) { - return createBuiltInCMap(encoding.name, fetchBuiltInCMap); - } else if ((0, _primitives.isStream)(encoding)) { - var cMap = new CMap(); - var lexer = new _parser.Lexer(encoding); - return parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap).then(function (parsedCMap) { - if (parsedCMap.isIdentityCMap) { - return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap); + if (!warned) { + warned = true; + (0, _util.warn)(`Couldn't find ${name} in CFF strings`); + } } + } - return parsedCMap; - }); + out[i] = sid >> 8 & 0xff; + out[i + 1] = sid & 0xff; + } + } + + return this.compileTypedArray(out); + } + + compileEncoding(encoding) { + return this.compileTypedArray(encoding.raw); + } + + compileFDSelect(fdSelect) { + const format = fdSelect.format; + let out, i; + + switch (format) { + case 0: + out = new Uint8Array(1 + fdSelect.fdSelect.length); + out[0] = format; + + for (i = 0; i < fdSelect.fdSelect.length; i++) { + out[i + 1] = fdSelect.fdSelect[i]; + } + + break; + + case 3: + const start = 0; + let lastFD = fdSelect.fdSelect[0]; + const ranges = [format, 0, 0, start >> 8 & 0xff, start & 0xff, lastFD]; + + for (i = 1; i < fdSelect.fdSelect.length; i++) { + const currentFD = fdSelect.fdSelect[i]; + + if (currentFD !== lastFD) { + ranges.push(i >> 8 & 0xff, i & 0xff, currentFD); + lastFD = currentFD; + } + } + + const numRanges = (ranges.length - 3) / 3; + ranges[1] = numRanges >> 8 & 0xff; + ranges[2] = numRanges & 0xff; + ranges.push(i >> 8 & 0xff, i & 0xff); + out = new Uint8Array(ranges); + break; + } + + return this.compileTypedArray(out); + } + + compileTypedArray(data) { + const out = []; + + for (let i = 0, ii = data.length; i < ii; ++i) { + out[i] = data[i]; + } + + return out; + } + + compileIndex(index) { + let trackers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + const objects = index.objects; + const count = objects.length; + + if (count === 0) { + return [0, 0]; + } + + const data = [count >> 8 & 0xff, count & 0xff]; + let lastOffset = 1, + i; + + for (i = 0; i < count; ++i) { + lastOffset += objects[i].length; + } + + let offsetSize; + + if (lastOffset < 0x100) { + offsetSize = 1; + } else if (lastOffset < 0x10000) { + offsetSize = 2; + } else if (lastOffset < 0x1000000) { + offsetSize = 3; + } else { + offsetSize = 4; + } + + data.push(offsetSize); + let relativeOffset = 1; + + for (i = 0; i < count + 1; i++) { + if (offsetSize === 1) { + data.push(relativeOffset & 0xff); + } else if (offsetSize === 2) { + data.push(relativeOffset >> 8 & 0xff, relativeOffset & 0xff); + } else if (offsetSize === 3) { + data.push(relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff); + } else { + data.push(relativeOffset >>> 24 & 0xff, relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff); } - return Promise.reject(new Error('Encoding required.')); + if (objects[i]) { + relativeOffset += objects[i].length; + } } - }; -}(); -exports.CMapFactory = CMapFactory; + for (i = 0; i < count; i++) { + if (trackers[i]) { + trackers[i].offset(data.length); + } + + for (let j = 0, jj = objects[i].length; j < jj; j++) { + data.push(objects[i][j]); + } + } + + return data; + } + +} + +exports.CFFCompiler = CFFCompiler; /***/ }), -/* 174 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 161 */ +/***/ ((__unused_webpack_module, exports) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); +exports.ISOAdobeCharset = exports.ExpertSubsetCharset = exports.ExpertCharset = void 0; +const ISOAdobeCharset = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "endash", "dagger", "daggerdbl", "periodcentered", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", "Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", "logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", "degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", "aacute", "acircumflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", "otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron"]; +exports.ISOAdobeCharset = ISOAdobeCharset; +const ExpertCharset = [".notdef", "space", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "onequarter", "onehalf", "threequarters", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"]; +exports.ExpertCharset = ExpertCharset; +const ExpertSubsetCharset = [".notdef", "space", "dollaroldstyle", "dollarsuperior", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", "periodsuperior", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "hyphensuperior", "colonmonetary", "onefitted", "rupiah", "centoldstyle", "figuredash", "hypheninferior", "onequarter", "onehalf", "threequarters", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior"]; +exports.ExpertSubsetCharset = ExpertSubsetCharset; + +/***/ }), +/* 162 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ZapfDingbatsEncoding = exports.WinAnsiEncoding = exports.SymbolSetEncoding = exports.StandardEncoding = exports.MacRomanEncoding = exports.ExpertEncoding = void 0; +exports.getEncoding = getEncoding; +const ExpertEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "", "", "", "isuperior", "", "", "lsuperior", "msuperior", "nsuperior", "osuperior", "", "", "rsuperior", "ssuperior", "tsuperior", "", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "exclamdownsmall", "centoldstyle", "Lslashsmall", "", "", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "", "Dotaccentsmall", "", "", "Macronsmall", "", "", "figuredash", "hypheninferior", "", "", "Ogoneksmall", "Ringsmall", "Cedillasmall", "", "", "", "onequarter", "onehalf", "threequarters", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "", "", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"]; +exports.ExpertEncoding = ExpertEncoding; +const MacExpertEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "centoldstyle", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "", "threequartersemdash", "", "questionsmall", "", "", "", "", "Ethsmall", "", "", "onequarter", "onehalf", "threequarters", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "", "", "", "", "", "", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hypheninferior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "asuperior", "centsuperior", "", "", "", "", "Aacutesmall", "Agravesmall", "Acircumflexsmall", "Adieresissmall", "Atildesmall", "Aringsmall", "Ccedillasmall", "Eacutesmall", "Egravesmall", "Ecircumflexsmall", "Edieresissmall", "Iacutesmall", "Igravesmall", "Icircumflexsmall", "Idieresissmall", "Ntildesmall", "Oacutesmall", "Ogravesmall", "Ocircumflexsmall", "Odieresissmall", "Otildesmall", "Uacutesmall", "Ugravesmall", "Ucircumflexsmall", "Udieresissmall", "", "eightsuperior", "fourinferior", "threeinferior", "sixinferior", "eightinferior", "seveninferior", "Scaronsmall", "", "centinferior", "twoinferior", "", "Dieresissmall", "", "Caronsmall", "osuperior", "fiveinferior", "", "commainferior", "periodinferior", "Yacutesmall", "", "dollarinferior", "", "", "Thornsmall", "", "nineinferior", "zeroinferior", "Zcaronsmall", "AEsmall", "Oslashsmall", "questiondownsmall", "oneinferior", "Lslashsmall", "", "", "", "", "", "", "Cedillasmall", "", "", "", "", "", "OEsmall", "figuredash", "hyphensuperior", "", "", "", "", "exclamdownsmall", "", "Ydieresissmall", "", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "ninesuperior", "zerosuperior", "", "esuperior", "rsuperior", "tsuperior", "", "", "isuperior", "ssuperior", "dsuperior", "", "", "", "", "", "lsuperior", "Ogoneksmall", "Brevesmall", "Macronsmall", "bsuperior", "nsuperior", "msuperior", "commasuperior", "periodsuperior", "Dotaccentsmall", "Ringsmall", "", "", "", ""]; +const MacRomanEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", "eacute", "egrave", "ecircumflex", "edieresis", "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", "bullet", "paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", "AE", "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", "summation", "product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", "questiondown", "exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", "guillemotright", "ellipsis", "space", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", "emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", "circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron"]; +exports.MacRomanEncoding = MacRomanEncoding; +const StandardEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "", "endash", "dagger", "daggerdbl", "periodcentered", "", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "", "questiondown", "", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "", "ring", "cedilla", "", "hungarumlaut", "ogonek", "caron", "emdash", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "AE", "", "ordfeminine", "", "", "", "", "Lslash", "Oslash", "OE", "ordmasculine", "", "", "", "", "", "ae", "", "", "", "dotlessi", "", "", "lslash", "oslash", "oe", "germandbls", "", "", "", ""]; +exports.StandardEncoding = StandardEncoding; +const WinAnsiEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "bullet", "Euro", "bullet", "quotesinglbase", "florin", "quotedblbase", "ellipsis", "dagger", "daggerdbl", "circumflex", "perthousand", "Scaron", "guilsinglleft", "OE", "bullet", "Zcaron", "bullet", "bullet", "quoteleft", "quoteright", "quotedblleft", "quotedblright", "bullet", "endash", "emdash", "tilde", "trademark", "scaron", "guilsinglright", "oe", "bullet", "zcaron", "Ydieresis", "space", "exclamdown", "cent", "sterling", "currency", "yen", "brokenbar", "section", "dieresis", "copyright", "ordfeminine", "guillemotleft", "logicalnot", "hyphen", "registered", "macron", "degree", "plusminus", "twosuperior", "threesuperior", "acute", "mu", "paragraph", "periodcentered", "cedilla", "onesuperior", "ordmasculine", "guillemotright", "onequarter", "onehalf", "threequarters", "questiondown", "Agrave", "Aacute", "Acircumflex", "Atilde", "Adieresis", "Aring", "AE", "Ccedilla", "Egrave", "Eacute", "Ecircumflex", "Edieresis", "Igrave", "Iacute", "Icircumflex", "Idieresis", "Eth", "Ntilde", "Ograve", "Oacute", "Ocircumflex", "Otilde", "Odieresis", "multiply", "Oslash", "Ugrave", "Uacute", "Ucircumflex", "Udieresis", "Yacute", "Thorn", "germandbls", "agrave", "aacute", "acircumflex", "atilde", "adieresis", "aring", "ae", "ccedilla", "egrave", "eacute", "ecircumflex", "edieresis", "igrave", "iacute", "icircumflex", "idieresis", "eth", "ntilde", "ograve", "oacute", "ocircumflex", "otilde", "odieresis", "divide", "oslash", "ugrave", "uacute", "ucircumflex", "udieresis", "yacute", "thorn", "ydieresis"]; +exports.WinAnsiEncoding = WinAnsiEncoding; +const SymbolSetEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "universal", "numbersign", "existential", "percent", "ampersand", "suchthat", "parenleft", "parenright", "asteriskmath", "plus", "comma", "minus", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "congruent", "Alpha", "Beta", "Chi", "Delta", "Epsilon", "Phi", "Gamma", "Eta", "Iota", "theta1", "Kappa", "Lambda", "Mu", "Nu", "Omicron", "Pi", "Theta", "Rho", "Sigma", "Tau", "Upsilon", "sigma1", "Omega", "Xi", "Psi", "Zeta", "bracketleft", "therefore", "bracketright", "perpendicular", "underscore", "radicalex", "alpha", "beta", "chi", "delta", "epsilon", "phi", "gamma", "eta", "iota", "phi1", "kappa", "lambda", "mu", "nu", "omicron", "pi", "theta", "rho", "sigma", "tau", "upsilon", "omega1", "omega", "xi", "psi", "zeta", "braceleft", "bar", "braceright", "similar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Euro", "Upsilon1", "minute", "lessequal", "fraction", "infinity", "florin", "club", "diamond", "heart", "spade", "arrowboth", "arrowleft", "arrowup", "arrowright", "arrowdown", "degree", "plusminus", "second", "greaterequal", "multiply", "proportional", "partialdiff", "bullet", "divide", "notequal", "equivalence", "approxequal", "ellipsis", "arrowvertex", "arrowhorizex", "carriagereturn", "aleph", "Ifraktur", "Rfraktur", "weierstrass", "circlemultiply", "circleplus", "emptyset", "intersection", "union", "propersuperset", "reflexsuperset", "notsubset", "propersubset", "reflexsubset", "element", "notelement", "angle", "gradient", "registerserif", "copyrightserif", "trademarkserif", "product", "radical", "dotmath", "logicalnot", "logicaland", "logicalor", "arrowdblboth", "arrowdblleft", "arrowdblup", "arrowdblright", "arrowdbldown", "lozenge", "angleleft", "registersans", "copyrightsans", "trademarksans", "summation", "parenlefttp", "parenleftex", "parenleftbt", "bracketlefttp", "bracketleftex", "bracketleftbt", "bracelefttp", "braceleftmid", "braceleftbt", "braceex", "", "angleright", "integral", "integraltp", "integralex", "integralbt", "parenrighttp", "parenrightex", "parenrightbt", "bracketrighttp", "bracketrightex", "bracketrightbt", "bracerighttp", "bracerightmid", "bracerightbt", ""]; +exports.SymbolSetEncoding = SymbolSetEncoding; +const ZapfDingbatsEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "a1", "a2", "a202", "a3", "a4", "a5", "a119", "a118", "a117", "a11", "a12", "a13", "a14", "a15", "a16", "a105", "a17", "a18", "a19", "a20", "a21", "a22", "a23", "a24", "a25", "a26", "a27", "a28", "a6", "a7", "a8", "a9", "a10", "a29", "a30", "a31", "a32", "a33", "a34", "a35", "a36", "a37", "a38", "a39", "a40", "a41", "a42", "a43", "a44", "a45", "a46", "a47", "a48", "a49", "a50", "a51", "a52", "a53", "a54", "a55", "a56", "a57", "a58", "a59", "a60", "a61", "a62", "a63", "a64", "a65", "a66", "a67", "a68", "a69", "a70", "a71", "a72", "a73", "a74", "a203", "a75", "a204", "a76", "a77", "a78", "a79", "a81", "a82", "a83", "a84", "a97", "a98", "a99", "a100", "", "a89", "a90", "a93", "a94", "a91", "a92", "a205", "a85", "a206", "a86", "a87", "a88", "a95", "a96", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "a101", "a102", "a103", "a104", "a106", "a107", "a108", "a112", "a111", "a110", "a109", "a120", "a121", "a122", "a123", "a124", "a125", "a126", "a127", "a128", "a129", "a130", "a131", "a132", "a133", "a134", "a135", "a136", "a137", "a138", "a139", "a140", "a141", "a142", "a143", "a144", "a145", "a146", "a147", "a148", "a149", "a150", "a151", "a152", "a153", "a154", "a155", "a156", "a157", "a158", "a159", "a160", "a161", "a163", "a164", "a196", "a165", "a192", "a166", "a167", "a168", "a169", "a170", "a171", "a172", "a173", "a162", "a174", "a175", "a176", "a177", "a178", "a179", "a193", "a180", "a199", "a181", "a200", "a182", "", "a201", "a183", "a184", "a197", "a185", "a194", "a198", "a186", "a195", "a187", "a188", "a189", "a190", "a191", ""]; +exports.ZapfDingbatsEncoding = ZapfDingbatsEncoding; + +function getEncoding(encodingName) { + switch (encodingName) { + case "WinAnsiEncoding": + return WinAnsiEncoding; + + case "StandardEncoding": + return StandardEncoding; + + case "MacRomanEncoding": + return MacRomanEncoding; + + case "SymbolSetEncoding": + return SymbolSetEncoding; + + case "ZapfDingbatsEncoding": + return ZapfDingbatsEncoding; + + case "ExpertEncoding": + return ExpertEncoding; + + case "MacExpertEncoding": + return MacExpertEncoding; + + default: + return null; + } +} + +/***/ }), +/* 163 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SEAC_ANALYSIS_ENABLED = exports.MacStandardGlyphOrdering = exports.FontFlags = void 0; exports.getFontType = getFontType; -exports.IdentityToUnicodeMap = exports.ToUnicodeMap = exports.FontFlags = exports.Font = exports.ErrorFont = exports.SEAC_ANALYSIS_ENABLED = void 0; +exports.normalizeFontName = normalizeFontName; +exports.recoverGlyphName = recoverGlyphName; +exports.type1FontGlyphMapping = type1FontGlyphMapping; -var _util = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(2); -var _cff_parser = __w_pdfjs_require__(175); +var _encodings = __w_pdfjs_require__(162); -var _glyphlist = __w_pdfjs_require__(178); +var _glyphlist = __w_pdfjs_require__(164); -var _encodings = __w_pdfjs_require__(177); +var _unicode = __w_pdfjs_require__(165); -var _standard_fonts = __w_pdfjs_require__(179); - -var _unicode = __w_pdfjs_require__(180); - -var _font_renderer = __w_pdfjs_require__(181); - -var _cmap = __w_pdfjs_require__(173); - -var _core_utils = __w_pdfjs_require__(154); - -var _stream = __w_pdfjs_require__(158); - -var _type1_parser = __w_pdfjs_require__(182); - -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } - -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } - -var PRIVATE_USE_AREAS = [[0xE000, 0xF8FF], [0x100000, 0x10FFFD]]; -var PDF_GLYPH_SPACE_UNITS = 1000; -var SEAC_ANALYSIS_ENABLED = true; +const SEAC_ANALYSIS_ENABLED = true; exports.SEAC_ANALYSIS_ENABLED = SEAC_ANALYSIS_ENABLED; -var FontFlags = { +const FontFlags = { FixedPitch: 1, Serif: 2, Symbolic: 4, @@ -34753,80 +33352,36 @@ var FontFlags = { ForceBold: 262144 }; exports.FontFlags = FontFlags; -var MacStandardGlyphOrdering = ['.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', 'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar', 'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply', 'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter', 'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla', 'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat']; - -function adjustWidths(properties) { - if (!properties.fontMatrix) { - return; - } - - if (properties.fontMatrix[0] === _util.FONT_IDENTITY_MATRIX[0]) { - return; - } - - var scale = 0.001 / properties.fontMatrix[0]; - var glyphsWidths = properties.widths; - - for (var glyph in glyphsWidths) { - glyphsWidths[glyph] *= scale; - } - - properties.defaultWidth *= scale; -} - -function adjustToUnicode(properties, builtInEncoding) { - if (properties.hasIncludedToUnicodeMap) { - return; - } - - if (properties.hasEncoding) { - return; - } - - if (builtInEncoding === properties.defaultEncoding) { - return; - } - - if (properties.toUnicode instanceof IdentityToUnicodeMap) { - return; - } - - var toUnicode = [], - glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); - - for (var charCode in builtInEncoding) { - var glyphName = builtInEncoding[charCode]; - var unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap); - - if (unicode !== -1) { - toUnicode[charCode] = String.fromCharCode(unicode); - } - } - - properties.toUnicode.amend(toUnicode); -} +const MacStandardGlyphOrdering = [".notdef", ".null", "nonmarkingreturn", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", "eacute", "egrave", "ecircumflex", "edieresis", "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", "bullet", "paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", "AE", "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", "summation", "product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", "questiondown", "exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", "guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", "emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", "circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "Lslash", "lslash", "Scaron", "scaron", "Zcaron", "zcaron", "brokenbar", "Eth", "eth", "Yacute", "yacute", "Thorn", "thorn", "minus", "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf", "onequarter", "threequarters", "franc", "Gbreve", "gbreve", "Idotaccent", "Scedilla", "scedilla", "Cacute", "cacute", "Ccaron", "ccaron", "dcroat"]; +exports.MacStandardGlyphOrdering = MacStandardGlyphOrdering; function getFontType(type, subtype) { + let isStandardFont = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + switch (type) { - case 'Type1': - return subtype === 'Type1C' ? _util.FontType.TYPE1C : _util.FontType.TYPE1; + case "Type1": + if (isStandardFont) { + return _util.FontType.TYPE1STANDARD; + } - case 'CIDFontType0': - return subtype === 'CIDFontType0C' ? _util.FontType.CIDFONTTYPE0C : _util.FontType.CIDFONTTYPE0; + return subtype === "Type1C" ? _util.FontType.TYPE1C : _util.FontType.TYPE1; - case 'OpenType': + case "CIDFontType0": + return subtype === "CIDFontType0C" ? _util.FontType.CIDFONTTYPE0C : _util.FontType.CIDFONTTYPE0; + + case "OpenType": return _util.FontType.OPENTYPE; - case 'TrueType': + case "TrueType": return _util.FontType.TRUETYPE; - case 'CIDFontType2': + case "CIDFontType2": return _util.FontType.CIDFONTTYPE2; - case 'MMType1': + case "MMType1": return _util.FontType.MMTYPE1; - case 'Type0': + case "Type0": return _util.FontType.TYPE0; default: @@ -34839,2581 +33394,38 @@ function recoverGlyphName(name, glyphsUnicodeMap) { return name; } - var unicode = (0, _unicode.getUnicodeForGlyph)(name, glyphsUnicodeMap); + const unicode = (0, _unicode.getUnicodeForGlyph)(name, glyphsUnicodeMap); if (unicode !== -1) { - for (var key in glyphsUnicodeMap) { + for (const key in glyphsUnicodeMap) { if (glyphsUnicodeMap[key] === unicode) { return key; } } } - (0, _util.info)('Unable to recover a standard glyph name for: ' + name); + (0, _util.info)("Unable to recover a standard glyph name for: " + name); return name; } -var Glyph = function GlyphClosure() { - function Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) { - this.fontChar = fontChar; - this.unicode = unicode; - this.accent = accent; - this.width = width; - this.vmetric = vmetric; - this.operatorListId = operatorListId; - this.isSpace = isSpace; - this.isInFont = isInFont; - } - - Glyph.prototype.matchesForCache = function (fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) { - return this.fontChar === fontChar && this.unicode === unicode && this.accent === accent && this.width === width && this.vmetric === vmetric && this.operatorListId === operatorListId && this.isSpace === isSpace && this.isInFont === isInFont; - }; - - return Glyph; -}(); - -var ToUnicodeMap = function ToUnicodeMapClosure() { - function ToUnicodeMap() { - var cmap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - this._map = cmap; - } - - ToUnicodeMap.prototype = { - get length() { - return this._map.length; - }, - - forEach: function forEach(callback) { - for (var charCode in this._map) { - callback(charCode, this._map[charCode].charCodeAt(0)); - } - }, - has: function has(i) { - return this._map[i] !== undefined; - }, - get: function get(i) { - return this._map[i]; - }, - charCodeOf: function charCodeOf(value) { - var map = this._map; - - if (map.length <= 0x10000) { - return map.indexOf(value); - } - - for (var charCode in map) { - if (map[charCode] === value) { - return charCode | 0; - } - } - - return -1; - }, - amend: function amend(map) { - for (var charCode in map) { - this._map[charCode] = map[charCode]; - } - } - }; - return ToUnicodeMap; -}(); - -exports.ToUnicodeMap = ToUnicodeMap; - -var IdentityToUnicodeMap = function IdentityToUnicodeMapClosure() { - function IdentityToUnicodeMap(firstChar, lastChar) { - this.firstChar = firstChar; - this.lastChar = lastChar; - } - - IdentityToUnicodeMap.prototype = { - get length() { - return this.lastChar + 1 - this.firstChar; - }, - - forEach: function forEach(callback) { - for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) { - callback(i, i); - } - }, - has: function has(i) { - return this.firstChar <= i && i <= this.lastChar; - }, - get: function get(i) { - if (this.firstChar <= i && i <= this.lastChar) { - return String.fromCharCode(i); - } - - return undefined; - }, - charCodeOf: function charCodeOf(v) { - return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar ? v : -1; - }, - amend: function amend(map) { - (0, _util.unreachable)('Should not call amend()'); - } - }; - return IdentityToUnicodeMap; -}(); - -exports.IdentityToUnicodeMap = IdentityToUnicodeMap; - -var OpenTypeFileBuilder = function OpenTypeFileBuilderClosure() { - function writeInt16(dest, offset, num) { - dest[offset] = num >> 8 & 0xFF; - dest[offset + 1] = num & 0xFF; - } - - function writeInt32(dest, offset, num) { - dest[offset] = num >> 24 & 0xFF; - dest[offset + 1] = num >> 16 & 0xFF; - dest[offset + 2] = num >> 8 & 0xFF; - dest[offset + 3] = num & 0xFF; - } - - function writeData(dest, offset, data) { - var i, ii; - - if (data instanceof Uint8Array) { - dest.set(data, offset); - } else if (typeof data === 'string') { - for (i = 0, ii = data.length; i < ii; i++) { - dest[offset++] = data.charCodeAt(i) & 0xFF; - } - } else { - for (i = 0, ii = data.length; i < ii; i++) { - dest[offset++] = data[i] & 0xFF; - } - } - } - - function OpenTypeFileBuilder(sfnt) { - this.sfnt = sfnt; - this.tables = Object.create(null); - } - - OpenTypeFileBuilder.getSearchParams = function OpenTypeFileBuilder_getSearchParams(entriesCount, entrySize) { - var maxPower2 = 1, - log2 = 0; - - while ((maxPower2 ^ entriesCount) > maxPower2) { - maxPower2 <<= 1; - log2++; - } - - var searchRange = maxPower2 * entrySize; - return { - range: searchRange, - entry: log2, - rangeShift: entrySize * entriesCount - searchRange - }; - }; - - var OTF_HEADER_SIZE = 12; - var OTF_TABLE_ENTRY_SIZE = 16; - OpenTypeFileBuilder.prototype = { - toArray: function OpenTypeFileBuilder_toArray() { - var sfnt = this.sfnt; - var tables = this.tables; - var tablesNames = Object.keys(tables); - tablesNames.sort(); - var numTables = tablesNames.length; - var i, j, jj, table, tableName; - var offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE; - var tableOffsets = [offset]; - - for (i = 0; i < numTables; i++) { - table = tables[tablesNames[i]]; - var paddedLength = (table.length + 3 & ~3) >>> 0; - offset += paddedLength; - tableOffsets.push(offset); - } - - var file = new Uint8Array(offset); - - for (i = 0; i < numTables; i++) { - table = tables[tablesNames[i]]; - writeData(file, tableOffsets[i], table); - } - - if (sfnt === 'true') { - sfnt = (0, _util.string32)(0x00010000); - } - - file[0] = sfnt.charCodeAt(0) & 0xFF; - file[1] = sfnt.charCodeAt(1) & 0xFF; - file[2] = sfnt.charCodeAt(2) & 0xFF; - file[3] = sfnt.charCodeAt(3) & 0xFF; - writeInt16(file, 4, numTables); - var searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16); - writeInt16(file, 6, searchParams.range); - writeInt16(file, 8, searchParams.entry); - writeInt16(file, 10, searchParams.rangeShift); - offset = OTF_HEADER_SIZE; - - for (i = 0; i < numTables; i++) { - tableName = tablesNames[i]; - file[offset] = tableName.charCodeAt(0) & 0xFF; - file[offset + 1] = tableName.charCodeAt(1) & 0xFF; - file[offset + 2] = tableName.charCodeAt(2) & 0xFF; - file[offset + 3] = tableName.charCodeAt(3) & 0xFF; - var checksum = 0; - - for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) { - var quad = (0, _util.readUint32)(file, j); - checksum = checksum + quad >>> 0; - } - - writeInt32(file, offset + 4, checksum); - writeInt32(file, offset + 8, tableOffsets[i]); - writeInt32(file, offset + 12, tables[tableName].length); - offset += OTF_TABLE_ENTRY_SIZE; - } - - return file; - }, - addTable: function OpenTypeFileBuilder_addTable(tag, data) { - if (tag in this.tables) { - throw new Error('Table ' + tag + ' already exists'); - } - - this.tables[tag] = data; - } - }; - return OpenTypeFileBuilder; -}(); - -var Font = function FontClosure() { - function Font(name, file, properties) { - var charCode; - this.name = name; - this.loadedName = properties.loadedName; - this.isType3Font = properties.isType3Font; - this.sizes = []; - this.missingFile = false; - this.glyphCache = Object.create(null); - this.isSerifFont = !!(properties.flags & FontFlags.Serif); - this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic); - this.isMonospace = !!(properties.flags & FontFlags.FixedPitch); - var type = properties.type; - var subtype = properties.subtype; - this.type = type; - this.subtype = subtype; - this.fallbackName = this.isMonospace ? 'monospace' : this.isSerifFont ? 'serif' : 'sans-serif'; - this.differences = properties.differences; - this.widths = properties.widths; - this.defaultWidth = properties.defaultWidth; - this.composite = properties.composite; - this.wideChars = properties.wideChars; - this.cMap = properties.cMap; - this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS; - this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS; - this.fontMatrix = properties.fontMatrix; - this.bbox = properties.bbox; - this.defaultEncoding = properties.defaultEncoding; - this.toUnicode = properties.toUnicode; - this.fallbackToUnicode = properties.fallbackToUnicode || new ToUnicodeMap(); - this.toFontChar = []; - - if (properties.type === 'Type3') { - for (charCode = 0; charCode < 256; charCode++) { - this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode]; - } - - this.fontType = _util.FontType.TYPE3; - return; - } - - this.cidEncoding = properties.cidEncoding; - this.vertical = properties.vertical; - - if (this.vertical) { - this.vmetrics = properties.vmetrics; - this.defaultVMetrics = properties.defaultVMetrics; - } - - if (!file || file.isEmpty) { - if (file) { - (0, _util.warn)('Font file is empty in "' + name + '" (' + this.loadedName + ')'); - } - - this.fallbackToSystemFont(); - return; - } - - var _getFontFileType = getFontFileType(file, properties); - - var _getFontFileType2 = _slicedToArray(_getFontFileType, 2); - - type = _getFontFileType2[0]; - subtype = _getFontFileType2[1]; - - if (type !== this.type || subtype !== this.subtype) { - (0, _util.info)('Inconsistent font file Type/SubType, expected: ' + "".concat(this.type, "/").concat(this.subtype, " but found: ").concat(type, "/").concat(subtype, ".")); - } - - try { - var data; - - switch (type) { - case 'MMType1': - (0, _util.info)('MMType1 font (' + name + '), falling back to Type1.'); - - case 'Type1': - case 'CIDFontType0': - this.mimetype = 'font/opentype'; - var cff = subtype === 'Type1C' || subtype === 'CIDFontType0C' ? new CFFFont(file, properties) : new Type1Font(name, file, properties); - adjustWidths(properties); - data = this.convert(name, cff, properties); - break; - - case 'OpenType': - case 'TrueType': - case 'CIDFontType2': - this.mimetype = 'font/opentype'; - data = this.checkAndRepair(name, file, properties); - - if (this.isOpenType) { - adjustWidths(properties); - type = 'OpenType'; - } - - break; - - default: - throw new _util.FormatError("Font ".concat(type, " is not supported")); - } - } catch (e) { - (0, _util.warn)(e); - this.fallbackToSystemFont(); - return; - } - - this.data = data; - this.fontType = getFontType(type, subtype); - this.fontMatrix = properties.fontMatrix; - this.widths = properties.widths; - this.defaultWidth = properties.defaultWidth; - this.toUnicode = properties.toUnicode; - this.encoding = properties.baseEncoding; - this.seacMap = properties.seacMap; - } - - Font.getFontID = function () { - var ID = 1; - return function Font_getFontID() { - return String(ID++); - }; - }(); - - function int16(b0, b1) { - return (b0 << 8) + b1; - } - - function writeSignedInt16(bytes, index, value) { - bytes[index + 1] = value; - bytes[index] = value >>> 8; - } - - function signedInt16(b0, b1) { - var value = (b0 << 8) + b1; - return value & 1 << 15 ? value - 0x10000 : value; - } - - function int32(b0, b1, b2, b3) { - return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; - } - - function string16(value) { - return String.fromCharCode(value >> 8 & 0xff, value & 0xff); - } - - function safeString16(value) { - value = value > 0x7FFF ? 0x7FFF : value < -0x8000 ? -0x8000 : value; - return String.fromCharCode(value >> 8 & 0xff, value & 0xff); - } - - function isTrueTypeFile(file) { - var header = file.peekBytes(4); - return (0, _util.readUint32)(header, 0) === 0x00010000 || (0, _util.bytesToString)(header) === 'true'; - } - - function isTrueTypeCollectionFile(file) { - var header = file.peekBytes(4); - return (0, _util.bytesToString)(header) === 'ttcf'; - } - - function isOpenTypeFile(file) { - var header = file.peekBytes(4); - return (0, _util.bytesToString)(header) === 'OTTO'; - } - - function isType1File(file) { - var header = file.peekBytes(2); - - if (header[0] === 0x25 && header[1] === 0x21) { - return true; - } - - if (header[0] === 0x80 && header[1] === 0x01) { - return true; - } - - return false; - } - - function isCFFFile(file) { - var header = file.peekBytes(4); - - if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) { - return true; - } - - return false; - } - - function getFontFileType(file, _ref) { - var type = _ref.type, - subtype = _ref.subtype, - composite = _ref.composite; - var fileType, fileSubtype; - - if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) { - if (composite) { - fileType = 'CIDFontType2'; - } else { - fileType = 'TrueType'; - } - } else if (isOpenTypeFile(file)) { - if (composite) { - fileType = 'CIDFontType2'; - } else { - fileType = 'OpenType'; - } - } else if (isType1File(file)) { - if (composite) { - fileType = 'CIDFontType0'; - } else { - fileType = type === 'MMType1' ? 'MMType1' : 'Type1'; - } - } else if (isCFFFile(file)) { - if (composite) { - fileType = 'CIDFontType0'; - fileSubtype = 'CIDFontType0C'; - } else { - fileType = type === 'MMType1' ? 'MMType1' : 'Type1'; - fileSubtype = 'Type1C'; - } - } else { - (0, _util.warn)('getFontFileType: Unable to detect correct font file Type/Subtype.'); - fileType = type; - fileSubtype = subtype; - } - - return [fileType, fileSubtype]; - } - - function buildToFontChar(encoding, glyphsUnicodeMap, differences) { - var toFontChar = [], - unicode; - - for (var i = 0, ii = encoding.length; i < ii; i++) { - unicode = (0, _unicode.getUnicodeForGlyph)(encoding[i], glyphsUnicodeMap); - - if (unicode !== -1) { - toFontChar[i] = unicode; - } - } - - for (var charCode in differences) { - unicode = (0, _unicode.getUnicodeForGlyph)(differences[charCode], glyphsUnicodeMap); - - if (unicode !== -1) { - toFontChar[+charCode] = unicode; - } - } - - return toFontChar; - } - - function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) { - var newMap = Object.create(null); - var toFontChar = []; - var privateUseAreaIndex = 0; - var nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0]; - var privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1]; - - for (var originalCharCode in charCodeToGlyphId) { - originalCharCode |= 0; - var glyphId = charCodeToGlyphId[originalCharCode]; - - if (!hasGlyph(glyphId)) { - continue; - } - - if (nextAvailableFontCharCode > privateUseOffetEnd) { - privateUseAreaIndex++; - - if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) { - (0, _util.warn)('Ran out of space in font private use area.'); - break; - } - - nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0]; - privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1]; - } - - var fontCharCode = nextAvailableFontCharCode++; - - if (glyphId === 0) { - glyphId = newGlyphZeroId; - } - - newMap[fontCharCode] = glyphId; - toFontChar[originalCharCode] = fontCharCode; - } - - return { - toFontChar: toFontChar, - charCodeToGlyphId: newMap, - nextAvailableFontCharCode: nextAvailableFontCharCode - }; - } - - function getRanges(glyphs, numGlyphs) { - var codes = []; - - for (var charCode in glyphs) { - if (glyphs[charCode] >= numGlyphs) { - continue; - } - - codes.push({ - fontCharCode: charCode | 0, - glyphId: glyphs[charCode] - }); - } - - if (codes.length === 0) { - codes.push({ - fontCharCode: 0, - glyphId: 0 - }); - } - - codes.sort(function fontGetRangesSort(a, b) { - return a.fontCharCode - b.fontCharCode; - }); - var ranges = []; - var length = codes.length; - - for (var n = 0; n < length;) { - var start = codes[n].fontCharCode; - var codeIndices = [codes[n].glyphId]; - ++n; - var end = start; - - while (n < length && end + 1 === codes[n].fontCharCode) { - codeIndices.push(codes[n].glyphId); - ++end; - ++n; - - if (end === 0xFFFF) { - break; - } - } - - ranges.push([start, end, codeIndices]); - } - - return ranges; - } - - function createCmapTable(glyphs, numGlyphs) { - var ranges = getRanges(glyphs, numGlyphs); - var numTables = ranges[ranges.length - 1][1] > 0xFFFF ? 2 : 1; - var cmap = '\x00\x00' + string16(numTables) + '\x00\x03' + '\x00\x01' + (0, _util.string32)(4 + numTables * 8); - var i, ii, j, jj; - - for (i = ranges.length - 1; i >= 0; --i) { - if (ranges[i][0] <= 0xFFFF) { - break; - } - } - - var bmpLength = i + 1; - - if (ranges[i][0] < 0xFFFF && ranges[i][1] === 0xFFFF) { - ranges[i][1] = 0xFFFE; - } - - var trailingRangesCount = ranges[i][1] < 0xFFFF ? 1 : 0; - var segCount = bmpLength + trailingRangesCount; - var searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2); - var startCount = ''; - var endCount = ''; - var idDeltas = ''; - var idRangeOffsets = ''; - var glyphsIds = ''; - var bias = 0; - var range, start, end, codes; - - for (i = 0, ii = bmpLength; i < ii; i++) { - range = ranges[i]; - start = range[0]; - end = range[1]; - startCount += string16(start); - endCount += string16(end); - codes = range[2]; - var contiguous = true; - - for (j = 1, jj = codes.length; j < jj; ++j) { - if (codes[j] !== codes[j - 1] + 1) { - contiguous = false; - break; - } - } - - if (!contiguous) { - var offset = (segCount - i) * 2 + bias * 2; - bias += end - start + 1; - idDeltas += string16(0); - idRangeOffsets += string16(offset); - - for (j = 0, jj = codes.length; j < jj; ++j) { - glyphsIds += string16(codes[j]); - } - } else { - var startCode = codes[0]; - idDeltas += string16(startCode - start & 0xFFFF); - idRangeOffsets += string16(0); - } - } - - if (trailingRangesCount > 0) { - endCount += '\xFF\xFF'; - startCount += '\xFF\xFF'; - idDeltas += '\x00\x01'; - idRangeOffsets += '\x00\x00'; - } - - var format314 = '\x00\x00' + string16(2 * segCount) + string16(searchParams.range) + string16(searchParams.entry) + string16(searchParams.rangeShift) + endCount + '\x00\x00' + startCount + idDeltas + idRangeOffsets + glyphsIds; - var format31012 = ''; - var header31012 = ''; - - if (numTables > 1) { - cmap += '\x00\x03' + '\x00\x0A' + (0, _util.string32)(4 + numTables * 8 + 4 + format314.length); - format31012 = ''; - - for (i = 0, ii = ranges.length; i < ii; i++) { - range = ranges[i]; - start = range[0]; - codes = range[2]; - var code = codes[0]; - - for (j = 1, jj = codes.length; j < jj; ++j) { - if (codes[j] !== codes[j - 1] + 1) { - end = range[0] + j - 1; - format31012 += (0, _util.string32)(start) + (0, _util.string32)(end) + (0, _util.string32)(code); - start = end + 1; - code = codes[j]; - } - } - - format31012 += (0, _util.string32)(start) + (0, _util.string32)(range[1]) + (0, _util.string32)(code); - } - - header31012 = '\x00\x0C' + '\x00\x00' + (0, _util.string32)(format31012.length + 16) + '\x00\x00\x00\x00' + (0, _util.string32)(format31012.length / 12); - } - - return cmap + '\x00\x04' + string16(format314.length + 4) + format314 + header31012 + format31012; - } - - function validateOS2Table(os2) { - var stream = new _stream.Stream(os2.data); - var version = stream.getUint16(); - stream.getBytes(60); - var selection = stream.getUint16(); - - if (version < 4 && selection & 0x0300) { - return false; - } - - var firstChar = stream.getUint16(); - var lastChar = stream.getUint16(); - - if (firstChar > lastChar) { - return false; - } - - stream.getBytes(6); - var usWinAscent = stream.getUint16(); - - if (usWinAscent === 0) { - return false; - } - - os2.data[8] = os2.data[9] = 0; - return true; - } - - function createOS2Table(properties, charstrings, override) { - override = override || { - unitsPerEm: 0, - yMax: 0, - yMin: 0, - ascent: 0, - descent: 0 - }; - var ulUnicodeRange1 = 0; - var ulUnicodeRange2 = 0; - var ulUnicodeRange3 = 0; - var ulUnicodeRange4 = 0; - var firstCharIndex = null; - var lastCharIndex = 0; - - if (charstrings) { - for (var code in charstrings) { - code |= 0; - - if (firstCharIndex > code || !firstCharIndex) { - firstCharIndex = code; - } - - if (lastCharIndex < code) { - lastCharIndex = code; - } - - var position = (0, _unicode.getUnicodeRangeFor)(code); - - if (position < 32) { - ulUnicodeRange1 |= 1 << position; - } else if (position < 64) { - ulUnicodeRange2 |= 1 << position - 32; - } else if (position < 96) { - ulUnicodeRange3 |= 1 << position - 64; - } else if (position < 123) { - ulUnicodeRange4 |= 1 << position - 96; - } else { - throw new _util.FormatError('Unicode ranges Bits > 123 are reserved for internal usage'); - } - } - - if (lastCharIndex > 0xFFFF) { - lastCharIndex = 0xFFFF; - } - } else { - firstCharIndex = 0; - lastCharIndex = 255; - } - - var bbox = properties.bbox || [0, 0, 0, 0]; - var unitsPerEm = override.unitsPerEm || 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0]; - var scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS; - var typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3])); - var typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1])); - - if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) { - typoDescent = -typoDescent; - } - - var winAscent = override.yMax || typoAscent; - var winDescent = -override.yMin || -typoDescent; - return '\x00\x03' + '\x02\x24' + '\x01\xF4' + '\x00\x05' + '\x00\x00' + '\x02\x8A' + '\x02\xBB' + '\x00\x00' + '\x00\x8C' + '\x02\x8A' + '\x02\xBB' + '\x00\x00' + '\x01\xDF' + '\x00\x31' + '\x01\x02' + '\x00\x00' + '\x00\x00\x06' + String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + '\x00\x00\x00\x00\x00\x00' + (0, _util.string32)(ulUnicodeRange1) + (0, _util.string32)(ulUnicodeRange2) + (0, _util.string32)(ulUnicodeRange3) + (0, _util.string32)(ulUnicodeRange4) + '\x2A\x32\x31\x2A' + string16(properties.italicAngle ? 1 : 0) + string16(firstCharIndex || properties.firstChar) + string16(lastCharIndex || properties.lastChar) + string16(typoAscent) + string16(typoDescent) + '\x00\x64' + string16(winAscent) + string16(winDescent) + '\x00\x00\x00\x00' + '\x00\x00\x00\x00' + string16(properties.xHeight) + string16(properties.capHeight) + string16(0) + string16(firstCharIndex || properties.firstChar) + '\x00\x03'; - } - - function createPostTable(properties) { - var angle = Math.floor(properties.italicAngle * Math.pow(2, 16)); - return '\x00\x03\x00\x00' + (0, _util.string32)(angle) + '\x00\x00' + '\x00\x00' + (0, _util.string32)(properties.fixedPitch) + '\x00\x00\x00\x00' + '\x00\x00\x00\x00' + '\x00\x00\x00\x00' + '\x00\x00\x00\x00'; - } - - function createNameTable(name, proto) { - if (!proto) { - proto = [[], []]; - } - - var strings = [proto[0][0] || 'Original licence', proto[0][1] || name, proto[0][2] || 'Unknown', proto[0][3] || 'uniqueID', proto[0][4] || name, proto[0][5] || 'Version 0.11', proto[0][6] || '', proto[0][7] || 'Unknown', proto[0][8] || 'Unknown', proto[0][9] || 'Unknown']; - var stringsUnicode = []; - var i, ii, j, jj, str; - - for (i = 0, ii = strings.length; i < ii; i++) { - str = proto[1][i] || strings[i]; - var strBufUnicode = []; - - for (j = 0, jj = str.length; j < jj; j++) { - strBufUnicode.push(string16(str.charCodeAt(j))); - } - - stringsUnicode.push(strBufUnicode.join('')); - } - - var names = [strings, stringsUnicode]; - var platforms = ['\x00\x01', '\x00\x03']; - var encodings = ['\x00\x00', '\x00\x01']; - var languages = ['\x00\x00', '\x04\x09']; - var namesRecordCount = strings.length * platforms.length; - var nameTable = '\x00\x00' + string16(namesRecordCount) + string16(namesRecordCount * 12 + 6); - var strOffset = 0; - - for (i = 0, ii = platforms.length; i < ii; i++) { - var strs = names[i]; - - for (j = 0, jj = strs.length; j < jj; j++) { - str = strs[j]; - var nameRecord = platforms[i] + encodings[i] + languages[i] + string16(j) + string16(str.length) + string16(strOffset); - nameTable += nameRecord; - strOffset += str.length; - } - } - - nameTable += strings.join('') + stringsUnicode.join(''); - return nameTable; - } - - Font.prototype = { - name: null, - font: null, - mimetype: null, - encoding: null, - disableFontFace: false, - - get renderer() { - var renderer = _font_renderer.FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED); - - return (0, _util.shadow)(this, 'renderer', renderer); - }, - - exportData: function Font_exportData() { - var data = {}; - - for (var i in this) { - if (this.hasOwnProperty(i)) { - data[i] = this[i]; - } - } - - return data; - }, - fallbackToSystemFont: function Font_fallbackToSystemFont() { - var _this = this; - - this.missingFile = true; - var charCode, unicode; - var name = this.name; - var type = this.type; - var subtype = this.subtype; - var fontName = name.replace(/[,_]/g, '-'); - var stdFontMap = (0, _standard_fonts.getStdFontMap)(), - nonStdFontMap = (0, _standard_fonts.getNonStdFontMap)(); - var isStandardFont = !!stdFontMap[fontName] || !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]); - fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName; - this.bold = fontName.search(/bold/gi) !== -1; - this.italic = fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1; - this.black = name.search(/Black/g) !== -1; - this.remeasure = Object.keys(this.widths).length > 0; - - if (isStandardFont && type === 'CIDFontType2' && this.cidEncoding.startsWith('Identity-')) { - var GlyphMapForStandardFonts = (0, _standard_fonts.getGlyphMapForStandardFonts)(); - var map = []; - - for (charCode in GlyphMapForStandardFonts) { - map[+charCode] = GlyphMapForStandardFonts[charCode]; - } - - if (/Arial-?Black/i.test(name)) { - var SupplementalGlyphMapForArialBlack = (0, _standard_fonts.getSupplementalGlyphMapForArialBlack)(); - - for (charCode in SupplementalGlyphMapForArialBlack) { - map[+charCode] = SupplementalGlyphMapForArialBlack[charCode]; - } - } else if (/Calibri/i.test(name)) { - var SupplementalGlyphMapForCalibri = (0, _standard_fonts.getSupplementalGlyphMapForCalibri)(); - - for (charCode in SupplementalGlyphMapForCalibri) { - map[+charCode] = SupplementalGlyphMapForCalibri[charCode]; - } - } - - var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap; - - if (!isIdentityUnicode) { - this.toUnicode.forEach(function (charCode, unicodeCharCode) { - map[+charCode] = unicodeCharCode; - }); - } - - this.toFontChar = map; - this.toUnicode = new ToUnicodeMap(map); - } else if (/Symbol/i.test(fontName)) { - this.toFontChar = buildToFontChar(_encodings.SymbolSetEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences); - } else if (/Dingbats/i.test(fontName)) { - if (/Wingdings/i.test(name)) { - (0, _util.warn)('Non-embedded Wingdings font, falling back to ZapfDingbats.'); - } - - this.toFontChar = buildToFontChar(_encodings.ZapfDingbatsEncoding, (0, _glyphlist.getDingbatsGlyphsUnicode)(), this.differences); - } else if (isStandardFont) { - this.toFontChar = buildToFontChar(this.defaultEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences); - } else { - var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); - this.toUnicode.forEach(function (charCode, unicodeCharCode) { - if (!_this.composite) { - var glyphName = _this.differences[charCode] || _this.defaultEncoding[charCode]; - unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap); - - if (unicode !== -1) { - unicodeCharCode = unicode; - } - } - - _this.toFontChar[charCode] = unicodeCharCode; - }); - } - - this.loadedName = fontName.split('-')[0]; - this.fontType = getFontType(type, subtype); - }, - checkAndRepair: function Font_checkAndRepair(name, font, properties) { - var VALID_TABLES = ['OS/2', 'cmap', 'head', 'hhea', 'hmtx', 'maxp', 'name', 'post', 'loca', 'glyf', 'fpgm', 'prep', 'cvt ', 'CFF ']; - - function readTables(file, numTables) { - var tables = Object.create(null); - tables['OS/2'] = null; - tables['cmap'] = null; - tables['head'] = null; - tables['hhea'] = null; - tables['hmtx'] = null; - tables['maxp'] = null; - tables['name'] = null; - tables['post'] = null; - - for (var i = 0; i < numTables; i++) { - var table = readTableEntry(font); - - if (!VALID_TABLES.includes(table.tag)) { - continue; - } - - if (table.length === 0) { - continue; - } - - tables[table.tag] = table; - } - - return tables; - } - - function readTableEntry(file) { - var tag = (0, _util.bytesToString)(file.getBytes(4)); - var checksum = file.getInt32() >>> 0; - var offset = file.getInt32() >>> 0; - var length = file.getInt32() >>> 0; - var previousPosition = file.pos; - file.pos = file.start ? file.start : 0; - file.skip(offset); - var data = file.getBytes(length); - file.pos = previousPosition; - - if (tag === 'head') { - data[8] = data[9] = data[10] = data[11] = 0; - data[17] |= 0x20; - } - - return { - tag: tag, - checksum: checksum, - length: length, - offset: offset, - data: data - }; - } - - function readOpenTypeHeader(ttf) { - return { - version: (0, _util.bytesToString)(ttf.getBytes(4)), - numTables: ttf.getUint16(), - searchRange: ttf.getUint16(), - entrySelector: ttf.getUint16(), - rangeShift: ttf.getUint16() - }; - } - - function readTrueTypeCollectionHeader(ttc) { - var ttcTag = (0, _util.bytesToString)(ttc.getBytes(4)); - (0, _util.assert)(ttcTag === 'ttcf', 'Must be a TrueType Collection font.'); - var majorVersion = ttc.getUint16(); - var minorVersion = ttc.getUint16(); - var numFonts = ttc.getInt32() >>> 0; - var offsetTable = []; - - for (var i = 0; i < numFonts; i++) { - offsetTable.push(ttc.getInt32() >>> 0); - } - - var header = { - ttcTag: ttcTag, - majorVersion: majorVersion, - minorVersion: minorVersion, - numFonts: numFonts, - offsetTable: offsetTable - }; - - switch (majorVersion) { - case 1: - return header; - - case 2: - header.dsigTag = ttc.getInt32() >>> 0; - header.dsigLength = ttc.getInt32() >>> 0; - header.dsigOffset = ttc.getInt32() >>> 0; - return header; - } - - throw new _util.FormatError("Invalid TrueType Collection majorVersion: ".concat(majorVersion, ".")); - } - - function readTrueTypeCollectionData(ttc, fontName) { - var _readTrueTypeCollecti = readTrueTypeCollectionHeader(ttc), - numFonts = _readTrueTypeCollecti.numFonts, - offsetTable = _readTrueTypeCollecti.offsetTable; - - for (var i = 0; i < numFonts; i++) { - ttc.pos = (ttc.start || 0) + offsetTable[i]; - var potentialHeader = readOpenTypeHeader(ttc); - var potentialTables = readTables(ttc, potentialHeader.numTables); - - if (!potentialTables['name']) { - throw new _util.FormatError('TrueType Collection font must contain a "name" table.'); - } - - var nameTable = readNameTable(potentialTables['name']); - - for (var j = 0, jj = nameTable.length; j < jj; j++) { - for (var k = 0, kk = nameTable[j].length; k < kk; k++) { - var nameEntry = nameTable[j][k]; - - if (nameEntry && nameEntry.replace(/\s/g, '') === fontName) { - return { - header: potentialHeader, - tables: potentialTables - }; - } - } - } - } - - throw new _util.FormatError("TrueType Collection does not contain \"".concat(fontName, "\" font.")); - } - - function readCmapTable(cmap, font, isSymbolicFont, hasEncoding) { - if (!cmap) { - (0, _util.warn)('No cmap table available.'); - return { - platformId: -1, - encodingId: -1, - mappings: [], - hasShortCmap: false - }; - } - - var segment; - var start = (font.start ? font.start : 0) + cmap.offset; - font.pos = start; - font.getUint16(); - var numTables = font.getUint16(); - var potentialTable; - var canBreak = false; - - for (var i = 0; i < numTables; i++) { - var platformId = font.getUint16(); - var encodingId = font.getUint16(); - var offset = font.getInt32() >>> 0; - var useTable = false; - - if (potentialTable && potentialTable.platformId === platformId && potentialTable.encodingId === encodingId) { - continue; - } - - if (platformId === 0 && encodingId === 0) { - useTable = true; - } else if (platformId === 1 && encodingId === 0) { - useTable = true; - } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) { - useTable = true; - - if (!isSymbolicFont) { - canBreak = true; - } - } else if (isSymbolicFont && platformId === 3 && encodingId === 0) { - useTable = true; - canBreak = true; - } - - if (useTable) { - potentialTable = { - platformId: platformId, - encodingId: encodingId, - offset: offset - }; - } - - if (canBreak) { - break; - } - } - - if (potentialTable) { - font.pos = start + potentialTable.offset; - } - - if (!potentialTable || font.peekByte() === -1) { - (0, _util.warn)('Could not find a preferred cmap table.'); - return { - platformId: -1, - encodingId: -1, - mappings: [], - hasShortCmap: false - }; - } - - var format = font.getUint16(); - font.getUint16(); - font.getUint16(); - var hasShortCmap = false; - var mappings = []; - var j, glyphId; - - if (format === 0) { - for (j = 0; j < 256; j++) { - var index = font.getByte(); - - if (!index) { - continue; - } - - mappings.push({ - charCode: j, - glyphId: index - }); - } - - hasShortCmap = true; - } else if (format === 4) { - var segCount = font.getUint16() >> 1; - font.getBytes(6); - var segIndex, - segments = []; - - for (segIndex = 0; segIndex < segCount; segIndex++) { - segments.push({ - end: font.getUint16() - }); - } - - font.getUint16(); - - for (segIndex = 0; segIndex < segCount; segIndex++) { - segments[segIndex].start = font.getUint16(); - } - - for (segIndex = 0; segIndex < segCount; segIndex++) { - segments[segIndex].delta = font.getUint16(); - } - - var offsetsCount = 0; - - for (segIndex = 0; segIndex < segCount; segIndex++) { - segment = segments[segIndex]; - var rangeOffset = font.getUint16(); - - if (!rangeOffset) { - segment.offsetIndex = -1; - continue; - } - - var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex); - segment.offsetIndex = offsetIndex; - offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1); - } - - var offsets = []; - - for (j = 0; j < offsetsCount; j++) { - offsets.push(font.getUint16()); - } - - for (segIndex = 0; segIndex < segCount; segIndex++) { - segment = segments[segIndex]; - start = segment.start; - var end = segment.end; - var delta = segment.delta; - offsetIndex = segment.offsetIndex; - - for (j = start; j <= end; j++) { - if (j === 0xFFFF) { - continue; - } - - glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start]; - glyphId = glyphId + delta & 0xFFFF; - mappings.push({ - charCode: j, - glyphId: glyphId - }); - } - } - } else if (format === 6) { - var firstCode = font.getUint16(); - var entryCount = font.getUint16(); - - for (j = 0; j < entryCount; j++) { - glyphId = font.getUint16(); - var charCode = firstCode + j; - mappings.push({ - charCode: charCode, - glyphId: glyphId - }); - } - } else { - (0, _util.warn)('cmap table has unsupported format: ' + format); - return { - platformId: -1, - encodingId: -1, - mappings: [], - hasShortCmap: false - }; - } - - mappings.sort(function (a, b) { - return a.charCode - b.charCode; - }); - - for (i = 1; i < mappings.length; i++) { - if (mappings[i - 1].charCode === mappings[i].charCode) { - mappings.splice(i, 1); - i--; - } - } - - return { - platformId: potentialTable.platformId, - encodingId: potentialTable.encodingId, - mappings: mappings, - hasShortCmap: hasShortCmap - }; - } - - function sanitizeMetrics(font, header, metrics, numGlyphs, dupFirstEntry) { - if (!header) { - if (metrics) { - metrics.data = null; - } - - return; - } - - font.pos = (font.start ? font.start : 0) + header.offset; - font.pos += 4; - font.pos += 2; - font.pos += 2; - font.pos += 2; - font.pos += 2; - font.pos += 2; - font.pos += 2; - font.pos += 2; - font.pos += 2; - font.pos += 2; - font.pos += 2; - font.pos += 8; - font.pos += 2; - var numOfMetrics = font.getUint16(); - - if (numOfMetrics > numGlyphs) { - (0, _util.info)('The numOfMetrics (' + numOfMetrics + ') should not be ' + 'greater than the numGlyphs (' + numGlyphs + ')'); - numOfMetrics = numGlyphs; - header.data[34] = (numOfMetrics & 0xff00) >> 8; - header.data[35] = numOfMetrics & 0x00ff; - } - - var numOfSidebearings = numGlyphs - numOfMetrics; - var numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1); - - if (numMissing > 0) { - var entries = new Uint8Array(metrics.length + numMissing * 2); - entries.set(metrics.data); - - if (dupFirstEntry) { - entries[metrics.length] = metrics.data[2]; - entries[metrics.length + 1] = metrics.data[3]; - } - - metrics.data = entries; - } - } - - function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) { - var glyphProfile = { - length: 0, - sizeOfInstructions: 0 - }; - - if (sourceEnd - sourceStart <= 12) { - return glyphProfile; - } - - var glyf = source.subarray(sourceStart, sourceEnd); - var contoursCount = signedInt16(glyf[0], glyf[1]); - - if (contoursCount < 0) { - contoursCount = -1; - writeSignedInt16(glyf, 0, contoursCount); - dest.set(glyf, destStart); - glyphProfile.length = glyf.length; - return glyphProfile; - } - - var i, - j = 10, - flagsCount = 0; - - for (i = 0; i < contoursCount; i++) { - var endPoint = glyf[j] << 8 | glyf[j + 1]; - flagsCount = endPoint + 1; - j += 2; - } - - var instructionsStart = j; - var instructionsLength = glyf[j] << 8 | glyf[j + 1]; - glyphProfile.sizeOfInstructions = instructionsLength; - j += 2 + instructionsLength; - var instructionsEnd = j; - var coordinatesLength = 0; - - for (i = 0; i < flagsCount; i++) { - var flag = glyf[j++]; - - if (flag & 0xC0) { - glyf[j - 1] = flag & 0x3F; - } - - var xyLength = (flag & 2 ? 1 : flag & 16 ? 0 : 2) + (flag & 4 ? 1 : flag & 32 ? 0 : 2); - coordinatesLength += xyLength; - - if (flag & 8) { - var repeat = glyf[j++]; - i += repeat; - coordinatesLength += repeat * xyLength; - } - } - - if (coordinatesLength === 0) { - return glyphProfile; - } - - var glyphDataLength = j + coordinatesLength; - - if (glyphDataLength > glyf.length) { - return glyphProfile; - } - - if (!hintsValid && instructionsLength > 0) { - dest.set(glyf.subarray(0, instructionsStart), destStart); - dest.set([0, 0], destStart + instructionsStart); - dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2); - glyphDataLength -= instructionsLength; - - if (glyf.length - glyphDataLength > 3) { - glyphDataLength = glyphDataLength + 3 & ~3; - } - - glyphProfile.length = glyphDataLength; - return glyphProfile; - } - - if (glyf.length - glyphDataLength > 3) { - glyphDataLength = glyphDataLength + 3 & ~3; - dest.set(glyf.subarray(0, glyphDataLength), destStart); - glyphProfile.length = glyphDataLength; - return glyphProfile; - } - - dest.set(glyf, destStart); - glyphProfile.length = glyf.length; - return glyphProfile; - } - - function sanitizeHead(head, numGlyphs, locaLength) { - var data = head.data; - var version = int32(data[0], data[1], data[2], data[3]); - - if (version >> 16 !== 1) { - (0, _util.info)('Attempting to fix invalid version in head table: ' + version); - data[0] = 0; - data[1] = 1; - data[2] = 0; - data[3] = 0; - } - - var indexToLocFormat = int16(data[50], data[51]); - - if (indexToLocFormat < 0 || indexToLocFormat > 1) { - (0, _util.info)('Attempting to fix invalid indexToLocFormat in head table: ' + indexToLocFormat); - var numGlyphsPlusOne = numGlyphs + 1; - - if (locaLength === numGlyphsPlusOne << 1) { - data[50] = 0; - data[51] = 0; - } else if (locaLength === numGlyphsPlusOne << 2) { - data[50] = 0; - data[51] = 1; - } else { - throw new _util.FormatError('Could not fix indexToLocFormat: ' + indexToLocFormat); - } - } - } - - function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions) { - var itemSize, itemDecode, itemEncode; - - if (isGlyphLocationsLong) { - itemSize = 4; - - itemDecode = function fontItemDecodeLong(data, offset) { - return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]; - }; - - itemEncode = function fontItemEncodeLong(data, offset, value) { - data[offset] = value >>> 24 & 0xFF; - data[offset + 1] = value >> 16 & 0xFF; - data[offset + 2] = value >> 8 & 0xFF; - data[offset + 3] = value & 0xFF; - }; - } else { - itemSize = 2; - - itemDecode = function fontItemDecode(data, offset) { - return data[offset] << 9 | data[offset + 1] << 1; - }; - - itemEncode = function fontItemEncode(data, offset, value) { - data[offset] = value >> 9 & 0xFF; - data[offset + 1] = value >> 1 & 0xFF; - }; - } - - var numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs; - var locaData = loca.data; - var locaDataSize = itemSize * (1 + numGlyphsOut); - locaData = new Uint8Array(locaDataSize); - locaData.set(loca.data.subarray(0, locaDataSize)); - loca.data = locaData; - var oldGlyfData = glyf.data; - var oldGlyfDataLength = oldGlyfData.length; - var newGlyfData = new Uint8Array(oldGlyfDataLength); - var startOffset = itemDecode(locaData, 0); - var writeOffset = 0; - var missingGlyphs = Object.create(null); - itemEncode(locaData, 0, writeOffset); - var i, j; - - for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) { - var endOffset = itemDecode(locaData, j); - - if (endOffset === 0) { - endOffset = startOffset; - } - - if (endOffset > oldGlyfDataLength && (oldGlyfDataLength + 3 & ~3) === endOffset) { - endOffset = oldGlyfDataLength; - } - - if (endOffset > oldGlyfDataLength) { - startOffset = endOffset; - } - - var glyphProfile = sanitizeGlyph(oldGlyfData, startOffset, endOffset, newGlyfData, writeOffset, hintsValid); - var newLength = glyphProfile.length; - - if (newLength === 0) { - missingGlyphs[i] = true; - } - - if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) { - maxSizeOfInstructions = glyphProfile.sizeOfInstructions; - } - - writeOffset += newLength; - itemEncode(locaData, j, writeOffset); - startOffset = endOffset; - } - - if (writeOffset === 0) { - var simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]); - - for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) { - itemEncode(locaData, j, simpleGlyph.length); - } - - glyf.data = simpleGlyph; - } else if (dupFirstEntry) { - var firstEntryLength = itemDecode(locaData, itemSize); - - if (newGlyfData.length > firstEntryLength + writeOffset) { - glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset); - } else { - glyf.data = new Uint8Array(firstEntryLength + writeOffset); - glyf.data.set(newGlyfData.subarray(0, writeOffset)); - } - - glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset); - itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength); - } else { - glyf.data = newGlyfData.subarray(0, writeOffset); - } - - return { - missingGlyphs: missingGlyphs, - maxSizeOfInstructions: maxSizeOfInstructions - }; - } - - function readPostScriptTable(post, properties, maxpNumGlyphs) { - var start = (font.start ? font.start : 0) + post.offset; - font.pos = start; - var length = post.length, - end = start + length; - var version = font.getInt32(); - font.getBytes(28); - var glyphNames; - var valid = true; - var i; - - switch (version) { - case 0x00010000: - glyphNames = MacStandardGlyphOrdering; - break; - - case 0x00020000: - var numGlyphs = font.getUint16(); - - if (numGlyphs !== maxpNumGlyphs) { - valid = false; - break; - } - - var glyphNameIndexes = []; - - for (i = 0; i < numGlyphs; ++i) { - var index = font.getUint16(); - - if (index >= 32768) { - valid = false; - break; - } - - glyphNameIndexes.push(index); - } - - if (!valid) { - break; - } - - var customNames = []; - var strBuf = []; - - while (font.pos < end) { - var stringLength = font.getByte(); - strBuf.length = stringLength; - - for (i = 0; i < stringLength; ++i) { - strBuf[i] = String.fromCharCode(font.getByte()); - } - - customNames.push(strBuf.join('')); - } - - glyphNames = []; - - for (i = 0; i < numGlyphs; ++i) { - var j = glyphNameIndexes[i]; - - if (j < 258) { - glyphNames.push(MacStandardGlyphOrdering[j]); - continue; - } - - glyphNames.push(customNames[j - 258]); - } - - break; - - case 0x00030000: - break; - - default: - (0, _util.warn)('Unknown/unsupported post table version ' + version); - valid = false; - - if (properties.defaultEncoding) { - glyphNames = properties.defaultEncoding; - } - - break; - } - - properties.glyphNames = glyphNames; - return valid; - } - - function readNameTable(nameTable) { - var start = (font.start ? font.start : 0) + nameTable.offset; - font.pos = start; - var names = [[], []]; - var length = nameTable.length, - end = start + length; - var format = font.getUint16(); - var FORMAT_0_HEADER_LENGTH = 6; - - if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) { - return names; - } - - var numRecords = font.getUint16(); - var stringsStart = font.getUint16(); - var records = []; - var NAME_RECORD_LENGTH = 12; - var i, ii; - - for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) { - var r = { - platform: font.getUint16(), - encoding: font.getUint16(), - language: font.getUint16(), - name: font.getUint16(), - length: font.getUint16(), - offset: font.getUint16() - }; - - if (r.platform === 1 && r.encoding === 0 && r.language === 0 || r.platform === 3 && r.encoding === 1 && r.language === 0x409) { - records.push(r); - } - } - - for (i = 0, ii = records.length; i < ii; i++) { - var record = records[i]; - - if (record.length <= 0) { - continue; - } - - var pos = start + stringsStart + record.offset; - - if (pos + record.length > end) { - continue; - } - - font.pos = pos; - var nameIndex = record.name; - - if (record.encoding) { - var str = ''; - - for (var j = 0, jj = record.length; j < jj; j += 2) { - str += String.fromCharCode(font.getUint16()); - } - - names[1][nameIndex] = str; - } else { - names[0][nameIndex] = (0, _util.bytesToString)(font.getBytes(record.length)); - } - } - - return names; - } - - var TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2]; - - function sanitizeTTProgram(table, ttContext) { - var data = table.data; - var i = 0, - j, - n, - b, - funcId, - pc, - lastEndf = 0, - lastDeff = 0; - var stack = []; - var callstack = []; - var functionsCalled = []; - var tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions; - var inFDEF = false, - ifLevel = 0, - inELSE = 0; - - for (var ii = data.length; i < ii;) { - var op = data[i++]; - - if (op === 0x40) { - n = data[i++]; - - if (inFDEF || inELSE) { - i += n; - } else { - for (j = 0; j < n; j++) { - stack.push(data[i++]); - } - } - } else if (op === 0x41) { - n = data[i++]; - - if (inFDEF || inELSE) { - i += n * 2; - } else { - for (j = 0; j < n; j++) { - b = data[i++]; - stack.push(b << 8 | data[i++]); - } - } - } else if ((op & 0xF8) === 0xB0) { - n = op - 0xB0 + 1; - - if (inFDEF || inELSE) { - i += n; - } else { - for (j = 0; j < n; j++) { - stack.push(data[i++]); - } - } - } else if ((op & 0xF8) === 0xB8) { - n = op - 0xB8 + 1; - - if (inFDEF || inELSE) { - i += n * 2; - } else { - for (j = 0; j < n; j++) { - b = data[i++]; - stack.push(b << 8 | data[i++]); - } - } - } else if (op === 0x2B && !tooComplexToFollowFunctions) { - if (!inFDEF && !inELSE) { - funcId = stack[stack.length - 1]; - - if (isNaN(funcId)) { - (0, _util.info)('TT: CALL empty stack (or invalid entry).'); - } else { - ttContext.functionsUsed[funcId] = true; - - if (funcId in ttContext.functionsStackDeltas) { - var newStackLength = stack.length + ttContext.functionsStackDeltas[funcId]; - - if (newStackLength < 0) { - (0, _util.warn)('TT: CALL invalid functions stack delta.'); - ttContext.hintsValid = false; - return; - } - - stack.length = newStackLength; - } else if (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) { - callstack.push({ - data: data, - i: i, - stackTop: stack.length - 1 - }); - functionsCalled.push(funcId); - pc = ttContext.functionsDefined[funcId]; - - if (!pc) { - (0, _util.warn)('TT: CALL non-existent function'); - ttContext.hintsValid = false; - return; - } - - data = pc.data; - i = pc.i; - } - } - } - } else if (op === 0x2C && !tooComplexToFollowFunctions) { - if (inFDEF || inELSE) { - (0, _util.warn)('TT: nested FDEFs not allowed'); - tooComplexToFollowFunctions = true; - } - - inFDEF = true; - lastDeff = i; - funcId = stack.pop(); - ttContext.functionsDefined[funcId] = { - data: data, - i: i - }; - } else if (op === 0x2D) { - if (inFDEF) { - inFDEF = false; - lastEndf = i; - } else { - pc = callstack.pop(); - - if (!pc) { - (0, _util.warn)('TT: ENDF bad stack'); - ttContext.hintsValid = false; - return; - } - - funcId = functionsCalled.pop(); - data = pc.data; - i = pc.i; - ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop; - } - } else if (op === 0x89) { - if (inFDEF || inELSE) { - (0, _util.warn)('TT: nested IDEFs not allowed'); - tooComplexToFollowFunctions = true; - } - - inFDEF = true; - lastDeff = i; - } else if (op === 0x58) { - ++ifLevel; - } else if (op === 0x1B) { - inELSE = ifLevel; - } else if (op === 0x59) { - if (inELSE === ifLevel) { - inELSE = 0; - } - - --ifLevel; - } else if (op === 0x1C) { - if (!inFDEF && !inELSE) { - var offset = stack[stack.length - 1]; - - if (offset > 0) { - i += offset - 1; - } - } - } - - if (!inFDEF && !inELSE) { - var stackDelta = op <= 0x8E ? TTOpsStackDeltas[op] : op >= 0xC0 && op <= 0xDF ? -1 : op >= 0xE0 ? -2 : 0; - - if (op >= 0x71 && op <= 0x75) { - n = stack.pop(); - - if (!isNaN(n)) { - stackDelta = -n * 2; - } - } - - while (stackDelta < 0 && stack.length > 0) { - stack.pop(); - stackDelta++; - } - - while (stackDelta > 0) { - stack.push(NaN); - stackDelta--; - } - } - } - - ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions; - var content = [data]; - - if (i > data.length) { - content.push(new Uint8Array(i - data.length)); - } - - if (lastDeff > lastEndf) { - (0, _util.warn)('TT: complementing a missing function tail'); - content.push(new Uint8Array([0x22, 0x2D])); - } - - foldTTTable(table, content); - } - - function checkInvalidFunctions(ttContext, maxFunctionDefs) { - if (ttContext.tooComplexToFollowFunctions) { - return; - } - - if (ttContext.functionsDefined.length > maxFunctionDefs) { - (0, _util.warn)('TT: more functions defined than expected'); - ttContext.hintsValid = false; - return; - } - - for (var j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) { - if (j > maxFunctionDefs) { - (0, _util.warn)('TT: invalid function id: ' + j); - ttContext.hintsValid = false; - return; - } - - if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) { - (0, _util.warn)('TT: undefined function: ' + j); - ttContext.hintsValid = false; - return; - } - } - } - - function foldTTTable(table, content) { - if (content.length > 1) { - var newLength = 0; - var j, jj; - - for (j = 0, jj = content.length; j < jj; j++) { - newLength += content[j].length; - } - - newLength = newLength + 3 & ~3; - var result = new Uint8Array(newLength); - var pos = 0; - - for (j = 0, jj = content.length; j < jj; j++) { - result.set(content[j], pos); - pos += content[j].length; - } - - table.data = result; - table.length = newLength; - } - } - - function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) { - var ttContext = { - functionsDefined: [], - functionsUsed: [], - functionsStackDeltas: [], - tooComplexToFollowFunctions: false, - hintsValid: true - }; - - if (fpgm) { - sanitizeTTProgram(fpgm, ttContext); - } - - if (prep) { - sanitizeTTProgram(prep, ttContext); - } - - if (fpgm) { - checkInvalidFunctions(ttContext, maxFunctionDefs); - } - - if (cvt && cvt.length & 1) { - var cvtData = new Uint8Array(cvt.length + 1); - cvtData.set(cvt.data); - cvt.data = cvtData; - } - - return ttContext.hintsValid; - } - - font = new _stream.Stream(new Uint8Array(font.getBytes())); - var header, tables; - - if (isTrueTypeCollectionFile(font)) { - var ttcData = readTrueTypeCollectionData(font, this.name); - header = ttcData.header; - tables = ttcData.tables; - } else { - header = readOpenTypeHeader(font); - tables = readTables(font, header.numTables); - } - - var cff, cffFile; - var isTrueType = !tables['CFF ']; - - if (!isTrueType) { - var isComposite = properties.composite && ((properties.cidToGidMap || []).length > 0 || !(properties.cMap instanceof _cmap.IdentityCMap)); - - if (header.version === 'OTTO' && !isComposite || !tables['head'] || !tables['hhea'] || !tables['maxp'] || !tables['post']) { - cffFile = new _stream.Stream(tables['CFF '].data); - cff = new CFFFont(cffFile, properties); - adjustWidths(properties); - return this.convert(name, cff, properties); - } - - delete tables['glyf']; - delete tables['loca']; - delete tables['fpgm']; - delete tables['prep']; - delete tables['cvt ']; - this.isOpenType = true; - } else { - if (!tables['loca']) { - throw new _util.FormatError('Required "loca" table is not found'); - } - - if (!tables['glyf']) { - (0, _util.warn)('Required "glyf" table is not found -- trying to recover.'); - tables['glyf'] = { - tag: 'glyf', - data: new Uint8Array(0) - }; - } - - this.isOpenType = false; - } - - if (!tables['maxp']) { - throw new _util.FormatError('Required "maxp" table is not found'); - } - - font.pos = (font.start || 0) + tables['maxp'].offset; - var version = font.getInt32(); - var numGlyphs = font.getUint16(); - var numGlyphsOut = numGlyphs + 1; - var dupFirstEntry = true; - - if (numGlyphsOut > 0xFFFF) { - dupFirstEntry = false; - numGlyphsOut = numGlyphs; - (0, _util.warn)('Not enough space in glyfs to duplicate first glyph.'); - } - - var maxFunctionDefs = 0; - var maxSizeOfInstructions = 0; - - if (version >= 0x00010000 && tables['maxp'].length >= 22) { - font.pos += 8; - var maxZones = font.getUint16(); - - if (maxZones > 2) { - tables['maxp'].data[14] = 0; - tables['maxp'].data[15] = 2; - } - - font.pos += 4; - maxFunctionDefs = font.getUint16(); - font.pos += 4; - maxSizeOfInstructions = font.getUint16(); - } - - tables['maxp'].data[4] = numGlyphsOut >> 8; - tables['maxp'].data[5] = numGlyphsOut & 255; - var hintsValid = sanitizeTTPrograms(tables['fpgm'], tables['prep'], tables['cvt '], maxFunctionDefs); - - if (!hintsValid) { - delete tables['fpgm']; - delete tables['prep']; - delete tables['cvt ']; - } - - sanitizeMetrics(font, tables['hhea'], tables['hmtx'], numGlyphsOut, dupFirstEntry); - - if (!tables['head']) { - throw new _util.FormatError('Required "head" table is not found'); - } - - sanitizeHead(tables['head'], numGlyphs, isTrueType ? tables['loca'].length : 0); - var missingGlyphs = Object.create(null); - - if (isTrueType) { - var isGlyphLocationsLong = int16(tables['head'].data[50], tables['head'].data[51]); - var glyphsInfo = sanitizeGlyphLocations(tables['loca'], tables['glyf'], numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions); - missingGlyphs = glyphsInfo.missingGlyphs; - - if (version >= 0x00010000 && tables['maxp'].length >= 22) { - tables['maxp'].data[26] = glyphsInfo.maxSizeOfInstructions >> 8; - tables['maxp'].data[27] = glyphsInfo.maxSizeOfInstructions & 255; - } - } - - if (!tables['hhea']) { - throw new _util.FormatError('Required "hhea" table is not found'); - } - - if (tables['hhea'].data[10] === 0 && tables['hhea'].data[11] === 0) { - tables['hhea'].data[10] = 0xFF; - tables['hhea'].data[11] = 0xFF; - } - - var metricsOverride = { - unitsPerEm: int16(tables['head'].data[18], tables['head'].data[19]), - yMax: int16(tables['head'].data[42], tables['head'].data[43]), - yMin: signedInt16(tables['head'].data[38], tables['head'].data[39]), - ascent: int16(tables['hhea'].data[4], tables['hhea'].data[5]), - descent: signedInt16(tables['hhea'].data[6], tables['hhea'].data[7]) - }; - this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm; - this.descent = metricsOverride.descent / metricsOverride.unitsPerEm; - - if (tables['post']) { - readPostScriptTable(tables['post'], properties, numGlyphs); - } - - tables['post'] = { - tag: 'post', - data: createPostTable(properties) - }; - var charCodeToGlyphId = [], - charCode; - - function hasGlyph(glyphId) { - return !missingGlyphs[glyphId]; - } - - if (properties.composite) { - var cidToGidMap = properties.cidToGidMap || []; - var isCidToGidMapEmpty = cidToGidMap.length === 0; - properties.cMap.forEach(function (charCode, cid) { - if (cid > 0xffff) { - throw new _util.FormatError('Max size of CID is 65,535'); - } - - var glyphId = -1; - - if (isCidToGidMapEmpty) { - glyphId = cid; - } else if (cidToGidMap[cid] !== undefined) { - glyphId = cidToGidMap[cid]; - } - - if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) { - charCodeToGlyphId[charCode] = glyphId; - } - }); - } else { - var cmapTable = readCmapTable(tables['cmap'], font, this.isSymbolicFont, properties.hasEncoding); - var cmapPlatformId = cmapTable.platformId; - var cmapEncodingId = cmapTable.encodingId; - var cmapMappings = cmapTable.mappings; - var cmapMappingsLength = cmapMappings.length; - - if (properties.hasEncoding && (cmapPlatformId === 3 && cmapEncodingId === 1 || cmapPlatformId === 1 && cmapEncodingId === 0) || cmapPlatformId === -1 && cmapEncodingId === -1 && !!(0, _encodings.getEncoding)(properties.baseEncodingName)) { - var baseEncoding = []; - - if (properties.baseEncodingName === 'MacRomanEncoding' || properties.baseEncodingName === 'WinAnsiEncoding') { - baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName); - } - - var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); - - for (charCode = 0; charCode < 256; charCode++) { - var glyphName, standardGlyphName; - - if (this.differences && charCode in this.differences) { - glyphName = this.differences[charCode]; - } else if (charCode in baseEncoding && baseEncoding[charCode] !== '') { - glyphName = baseEncoding[charCode]; - } else { - glyphName = _encodings.StandardEncoding[charCode]; - } - - if (!glyphName) { - continue; - } - - standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap); - var unicodeOrCharCode; - - if (cmapPlatformId === 3 && cmapEncodingId === 1) { - unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName]; - } else if (cmapPlatformId === 1 && cmapEncodingId === 0) { - unicodeOrCharCode = _encodings.MacRomanEncoding.indexOf(standardGlyphName); - } - - var found = false; - - for (var i = 0; i < cmapMappingsLength; ++i) { - if (cmapMappings[i].charCode !== unicodeOrCharCode) { - continue; - } - - charCodeToGlyphId[charCode] = cmapMappings[i].glyphId; - found = true; - break; - } - - if (!found && properties.glyphNames) { - var glyphId = properties.glyphNames.indexOf(glyphName); - - if (glyphId === -1 && standardGlyphName !== glyphName) { - glyphId = properties.glyphNames.indexOf(standardGlyphName); - } - - if (glyphId > 0 && hasGlyph(glyphId)) { - charCodeToGlyphId[charCode] = glyphId; - } - } - } - } else if (cmapPlatformId === 0 && cmapEncodingId === 0) { - for (var _i2 = 0; _i2 < cmapMappingsLength; ++_i2) { - charCodeToGlyphId[cmapMappings[_i2].charCode] = cmapMappings[_i2].glyphId; - } - } else { - for (var _i3 = 0; _i3 < cmapMappingsLength; ++_i3) { - charCode = cmapMappings[_i3].charCode; - - if (cmapPlatformId === 3 && charCode >= 0xF000 && charCode <= 0xF0FF) { - charCode &= 0xFF; - } - - charCodeToGlyphId[charCode] = cmapMappings[_i3].glyphId; - } - } - } - - if (charCodeToGlyphId.length === 0) { - charCodeToGlyphId[0] = 0; - } - - var glyphZeroId = numGlyphsOut - 1; - - if (!dupFirstEntry) { - glyphZeroId = 0; - } - - var newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId); - this.toFontChar = newMapping.toFontChar; - tables['cmap'] = { - tag: 'cmap', - data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut) - }; - - if (!tables['OS/2'] || !validateOS2Table(tables['OS/2'])) { - tables['OS/2'] = { - tag: 'OS/2', - data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride) - }; - } - - if (!isTrueType) { - try { - cffFile = new _stream.Stream(tables['CFF '].data); - var parser = new _cff_parser.CFFParser(cffFile, properties, SEAC_ANALYSIS_ENABLED); - cff = parser.parse(); - cff.duplicateFirstGlyph(); - var compiler = new _cff_parser.CFFCompiler(cff); - tables['CFF '].data = compiler.compile(); - } catch (e) { - (0, _util.warn)('Failed to compile font ' + properties.loadedName); - } - } - - if (!tables['name']) { - tables['name'] = { - tag: 'name', - data: createNameTable(this.name) - }; - } else { - var namePrototype = readNameTable(tables['name']); - tables['name'].data = createNameTable(name, namePrototype); - } - - var builder = new OpenTypeFileBuilder(header.version); - - for (var tableTag in tables) { - builder.addTable(tableTag, tables[tableTag].data); - } - - return builder.toArray(); - }, - convert: function Font_convert(fontName, font, properties) { - properties.fixedPitch = false; - - if (properties.builtInEncoding) { - adjustToUnicode(properties, properties.builtInEncoding); - } - - var glyphZeroId = 1; - - if (font instanceof CFFFont) { - glyphZeroId = font.numGlyphs - 1; - } - - var mapping = font.getGlyphMapping(properties); - var newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId); - this.toFontChar = newMapping.toFontChar; - var numGlyphs = font.numGlyphs; - - function getCharCodes(charCodeToGlyphId, glyphId) { - var charCodes = null; - - for (var charCode in charCodeToGlyphId) { - if (glyphId === charCodeToGlyphId[charCode]) { - if (!charCodes) { - charCodes = []; - } - - charCodes.push(charCode | 0); - } - } - - return charCodes; - } - - function createCharCode(charCodeToGlyphId, glyphId) { - for (var charCode in charCodeToGlyphId) { - if (glyphId === charCodeToGlyphId[charCode]) { - return charCode | 0; - } - } - - newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId; - return newMapping.nextAvailableFontCharCode++; - } - - var seacs = font.seacs; - - if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) { - var matrix = properties.fontMatrix || _util.FONT_IDENTITY_MATRIX; - var charset = font.getCharset(); - var seacMap = Object.create(null); - - for (var glyphId in seacs) { - glyphId |= 0; - var seac = seacs[glyphId]; - var baseGlyphName = _encodings.StandardEncoding[seac[2]]; - var accentGlyphName = _encodings.StandardEncoding[seac[3]]; - var baseGlyphId = charset.indexOf(baseGlyphName); - var accentGlyphId = charset.indexOf(accentGlyphName); - - if (baseGlyphId < 0 || accentGlyphId < 0) { - continue; - } - - var accentOffset = { - x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4], - y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5] - }; - var charCodes = getCharCodes(mapping, glyphId); - - if (!charCodes) { - continue; - } - - for (var i = 0, ii = charCodes.length; i < ii; i++) { - var charCode = charCodes[i]; - var charCodeToGlyphId = newMapping.charCodeToGlyphId; - var baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId); - var accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId); - seacMap[charCode] = { - baseFontCharCode: baseFontCharCode, - accentFontCharCode: accentFontCharCode, - accentOffset: accentOffset - }; - } - } - - properties.seacMap = seacMap; - } - - var unitsPerEm = 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0]; - var builder = new OpenTypeFileBuilder('\x4F\x54\x54\x4F'); - builder.addTable('CFF ', font.data); - builder.addTable('OS/2', createOS2Table(properties, newMapping.charCodeToGlyphId)); - builder.addTable('cmap', createCmapTable(newMapping.charCodeToGlyphId, numGlyphs)); - builder.addTable('head', '\x00\x01\x00\x00' + '\x00\x00\x10\x00' + '\x00\x00\x00\x00' + '\x5F\x0F\x3C\xF5' + '\x00\x00' + safeString16(unitsPerEm) + '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + '\x00\x00' + safeString16(properties.descent) + '\x0F\xFF' + safeString16(properties.ascent) + string16(properties.italicAngle ? 2 : 0) + '\x00\x11' + '\x00\x00' + '\x00\x00' + '\x00\x00'); - builder.addTable('hhea', '\x00\x01\x00\x00' + safeString16(properties.ascent) + safeString16(properties.descent) + '\x00\x00' + '\xFF\xFF' + '\x00\x00' + '\x00\x00' + '\x00\x00' + safeString16(properties.capHeight) + safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + '\x00\x00' + '\x00\x00' + '\x00\x00' + '\x00\x00' + '\x00\x00' + '\x00\x00' + string16(numGlyphs)); - builder.addTable('hmtx', function fontFieldsHmtx() { - var charstrings = font.charstrings; - var cffWidths = font.cff ? font.cff.widths : null; - var hmtx = '\x00\x00\x00\x00'; - - for (var i = 1, ii = numGlyphs; i < ii; i++) { - var width = 0; - - if (charstrings) { - var charstring = charstrings[i - 1]; - width = 'width' in charstring ? charstring.width : 0; - } else if (cffWidths) { - width = Math.ceil(cffWidths[i] || 0); - } - - hmtx += string16(width) + string16(0); - } - - return hmtx; - }()); - builder.addTable('maxp', '\x00\x00\x50\x00' + string16(numGlyphs)); - builder.addTable('name', createNameTable(fontName)); - builder.addTable('post', createPostTable(properties)); - return builder.toArray(); - }, - - get spaceWidth() { - if ('_shadowWidth' in this) { - return this._shadowWidth; - } - - var possibleSpaceReplacements = ['space', 'minus', 'one', 'i', 'I']; - var width; - - for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) { - var glyphName = possibleSpaceReplacements[i]; - - if (glyphName in this.widths) { - width = this.widths[glyphName]; - break; - } - - var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); - var glyphUnicode = glyphsUnicodeMap[glyphName]; - var charcode = 0; - - if (this.composite) { - if (this.cMap.contains(glyphUnicode)) { - charcode = this.cMap.lookup(glyphUnicode); - } - } - - if (!charcode && this.toUnicode) { - charcode = this.toUnicode.charCodeOf(glyphUnicode); - } - - if (charcode <= 0) { - charcode = glyphUnicode; - } - - width = this.widths[charcode]; - - if (width) { - break; - } - } - - width = width || this.defaultWidth; - this._shadowWidth = width; - return width; - }, - - charToGlyph: function Font_charToGlyph(charcode, isSpace) { - var fontCharCode, width, operatorListId; - var widthCode = charcode; - - if (this.cMap && this.cMap.contains(charcode)) { - widthCode = this.cMap.lookup(charcode); - } - - width = this.widths[widthCode]; - width = (0, _util.isNum)(width) ? width : this.defaultWidth; - var vmetric = this.vmetrics && this.vmetrics[widthCode]; - var unicode = this.toUnicode.get(charcode) || this.fallbackToUnicode.get(charcode) || charcode; - - if (typeof unicode === 'number') { - unicode = String.fromCharCode(unicode); - } - - var isInFont = charcode in this.toFontChar; - fontCharCode = this.toFontChar[charcode] || charcode; - - if (this.missingFile) { - fontCharCode = (0, _unicode.mapSpecialUnicodeValues)(fontCharCode); - } - - if (this.isType3Font) { - operatorListId = fontCharCode; - } - - var accent = null; - - if (this.seacMap && this.seacMap[charcode]) { - isInFont = true; - var seac = this.seacMap[charcode]; - fontCharCode = seac.baseFontCharCode; - accent = { - fontChar: String.fromCodePoint(seac.accentFontCharCode), - offset: seac.accentOffset - }; - } - - var fontChar = typeof fontCharCode === 'number' ? String.fromCodePoint(fontCharCode) : ''; - var glyph = this.glyphCache[charcode]; - - if (!glyph || !glyph.matchesForCache(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont)) { - glyph = new Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont); - this.glyphCache[charcode] = glyph; - } - - return glyph; - }, - charsToGlyphs: function Font_charsToGlyphs(chars) { - var charsCache = this.charsCache; - var glyphs, glyph, charcode; - - if (charsCache) { - glyphs = charsCache[chars]; - - if (glyphs) { - return glyphs; - } - } - - if (!charsCache) { - charsCache = this.charsCache = Object.create(null); - } - - glyphs = []; - var charsCacheKey = chars; - var i = 0, - ii; - - if (this.cMap) { - var c = Object.create(null); - - while (i < chars.length) { - this.cMap.readCharCode(chars, i, c); - charcode = c.charcode; - var length = c.length; - i += length; - var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20; - glyph = this.charToGlyph(charcode, isSpace); - glyphs.push(glyph); - } - } else { - for (i = 0, ii = chars.length; i < ii; ++i) { - charcode = chars.charCodeAt(i); - glyph = this.charToGlyph(charcode, charcode === 0x20); - glyphs.push(glyph); - } - } - - return charsCache[charsCacheKey] = glyphs; - }, - - get glyphCacheValues() { - return Object.values(this.glyphCache); - } - - }; - return Font; -}(); - -exports.Font = Font; - -var ErrorFont = function ErrorFontClosure() { - function ErrorFont(error) { - this.error = error; - this.loadedName = 'g_font_error'; - this.missingFile = true; - } - - ErrorFont.prototype = { - charsToGlyphs: function ErrorFont_charsToGlyphs() { - return []; - }, - exportData: function ErrorFont_exportData() { - return { - error: this.error - }; - } - }; - return ErrorFont; -}(); - -exports.ErrorFont = ErrorFont; - function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) { - var charCodeToGlyphId = Object.create(null); - var glyphId, charCode, baseEncoding; - var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic); + const charCodeToGlyphId = Object.create(null); + let glyphId, charCode, baseEncoding; + const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic); - if (properties.baseEncodingName) { + if (properties.isInternalFont) { + baseEncoding = builtInEncoding; + + for (charCode = 0; charCode < baseEncoding.length; charCode++) { + glyphId = glyphNames.indexOf(baseEncoding[charCode]); + + if (glyphId >= 0) { + charCodeToGlyphId[charCode] = glyphId; + } else { + charCodeToGlyphId[charCode] = 0; + } + } + } else if (properties.baseEncodingName) { baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName); for (charCode = 0; charCode < baseEncoding.length; charCode++) { @@ -37443,12 +33455,12 @@ function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) { } } - var differences = properties.differences, - glyphsUnicodeMap; + const differences = properties.differences; + let glyphsUnicodeMap; if (differences) { for (charCode in differences) { - var glyphName = differences[charCode]; + const glyphName = differences[charCode]; glyphId = glyphNames.indexOf(glyphName); if (glyphId === -1) { @@ -37456,7 +33468,7 @@ function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) { glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); } - var standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap); + const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap); if (standardGlyphName !== glyphName) { glyphId = glyphNames.indexOf(standardGlyphName); @@ -37474,7061 +33486,12766 @@ function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) { return charCodeToGlyphId; } -var Type1Font = function Type1FontClosure() { - function findBlock(streamBytes, signature, startIndex) { - var streamBytesLength = streamBytes.length; - var signatureLength = signature.length; - var scanLength = streamBytesLength - signatureLength; - var i = startIndex, - j, - found = false; - - while (i < scanLength) { - j = 0; - - while (j < signatureLength && streamBytes[i + j] === signature[j]) { - j++; - } - - if (j >= signatureLength) { - i += j; - - while (i < streamBytesLength && (0, _util.isSpace)(streamBytes[i])) { - i++; - } - - found = true; - break; - } - - i++; - } - - return { - found: found, - length: i - }; - } - - function getHeaderBlock(stream, suggestedLength) { - var EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63]; - var streamStartPos = stream.pos; - var headerBytes, headerBytesLength, block; - - try { - headerBytes = stream.getBytes(suggestedLength); - headerBytesLength = headerBytes.length; - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - } - - if (headerBytesLength === suggestedLength) { - block = findBlock(headerBytes, EEXEC_SIGNATURE, suggestedLength - 2 * EEXEC_SIGNATURE.length); - - if (block.found && block.length === suggestedLength) { - return { - stream: new _stream.Stream(headerBytes), - length: suggestedLength - }; - } - } - - (0, _util.warn)('Invalid "Length1" property in Type1 font -- trying to recover.'); - stream.pos = streamStartPos; - var SCAN_BLOCK_LENGTH = 2048; - var actualLength; - - while (true) { - var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH); - block = findBlock(scanBytes, EEXEC_SIGNATURE, 0); - - if (block.length === 0) { - break; - } - - stream.pos += block.length; - - if (block.found) { - actualLength = stream.pos - streamStartPos; - break; - } - } - - stream.pos = streamStartPos; - - if (actualLength) { - return { - stream: new _stream.Stream(stream.getBytes(actualLength)), - length: actualLength - }; - } - - (0, _util.warn)('Unable to recover "Length1" property in Type1 font -- using as is.'); - return { - stream: new _stream.Stream(stream.getBytes(suggestedLength)), - length: suggestedLength - }; - } - - function getEexecBlock(stream, suggestedLength) { - var eexecBytes = stream.getBytes(); - return { - stream: new _stream.Stream(eexecBytes), - length: eexecBytes.length - }; - } - - function Type1Font(name, file, properties) { - var PFB_HEADER_SIZE = 6; - var headerBlockLength = properties.length1; - var eexecBlockLength = properties.length2; - var pfbHeader = file.peekBytes(PFB_HEADER_SIZE); - var pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01; - - if (pfbHeaderPresent) { - file.skip(PFB_HEADER_SIZE); - headerBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2]; - } - - var headerBlock = getHeaderBlock(file, headerBlockLength); - var headerBlockParser = new _type1_parser.Type1Parser(headerBlock.stream, false, SEAC_ANALYSIS_ENABLED); - headerBlockParser.extractFontHeader(properties); - - if (pfbHeaderPresent) { - pfbHeader = file.getBytes(PFB_HEADER_SIZE); - eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2]; - } - - var eexecBlock = getEexecBlock(file, eexecBlockLength); - var eexecBlockParser = new _type1_parser.Type1Parser(eexecBlock.stream, true, SEAC_ANALYSIS_ENABLED); - var data = eexecBlockParser.extractFontProgram(); - - for (var info in data.properties) { - properties[info] = data.properties[info]; - } - - var charstrings = data.charstrings; - var type2Charstrings = this.getType2Charstrings(charstrings); - var subrs = this.getType2Subrs(data.subrs); - this.charstrings = charstrings; - this.data = this.wrap(name, type2Charstrings, this.charstrings, subrs, properties); - this.seacs = this.getSeacs(data.charstrings); - } - - Type1Font.prototype = { - get numGlyphs() { - return this.charstrings.length + 1; - }, - - getCharset: function Type1Font_getCharset() { - var charset = ['.notdef']; - var charstrings = this.charstrings; - - for (var glyphId = 0; glyphId < charstrings.length; glyphId++) { - charset.push(charstrings[glyphId].glyphName); - } - - return charset; - }, - getGlyphMapping: function Type1Font_getGlyphMapping(properties) { - var charstrings = this.charstrings; - var glyphNames = ['.notdef'], - glyphId; - - for (glyphId = 0; glyphId < charstrings.length; glyphId++) { - glyphNames.push(charstrings[glyphId].glyphName); - } - - var encoding = properties.builtInEncoding; - - if (encoding) { - var builtInEncoding = Object.create(null); - - for (var charCode in encoding) { - glyphId = glyphNames.indexOf(encoding[charCode]); - - if (glyphId >= 0) { - builtInEncoding[charCode] = glyphId; - } - } - } - - return type1FontGlyphMapping(properties, builtInEncoding, glyphNames); - }, - hasGlyphId: function Type1Font_hasGlyphID(id) { - if (id < 0 || id >= this.numGlyphs) { - return false; - } - - if (id === 0) { - return true; - } - - var glyph = this.charstrings[id - 1]; - return glyph.charstring.length > 0; - }, - getSeacs: function Type1Font_getSeacs(charstrings) { - var i, ii; - var seacMap = []; - - for (i = 0, ii = charstrings.length; i < ii; i++) { - var charstring = charstrings[i]; - - if (charstring.seac) { - seacMap[i + 1] = charstring.seac; - } - } - - return seacMap; - }, - getType2Charstrings: function Type1Font_getType2Charstrings(type1Charstrings) { - var type2Charstrings = []; - - for (var i = 0, ii = type1Charstrings.length; i < ii; i++) { - type2Charstrings.push(type1Charstrings[i].charstring); - } - - return type2Charstrings; - }, - getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) { - var bias = 0; - var count = type1Subrs.length; - - if (count < 1133) { - bias = 107; - } else if (count < 33769) { - bias = 1131; - } else { - bias = 32768; - } - - var type2Subrs = []; - var i; - - for (i = 0; i < bias; i++) { - type2Subrs.push([0x0B]); - } - - for (i = 0; i < count; i++) { - type2Subrs.push(type1Subrs[i]); - } - - return type2Subrs; - }, - wrap: function Type1Font_wrap(name, glyphs, charstrings, subrs, properties) { - var cff = new _cff_parser.CFF(); - cff.header = new _cff_parser.CFFHeader(1, 0, 4, 4); - cff.names = [name]; - var topDict = new _cff_parser.CFFTopDict(); - topDict.setByName('version', 391); - topDict.setByName('Notice', 392); - topDict.setByName('FullName', 393); - topDict.setByName('FamilyName', 394); - topDict.setByName('Weight', 395); - topDict.setByName('Encoding', null); - topDict.setByName('FontMatrix', properties.fontMatrix); - topDict.setByName('FontBBox', properties.bbox); - topDict.setByName('charset', null); - topDict.setByName('CharStrings', null); - topDict.setByName('Private', null); - cff.topDict = topDict; - var strings = new _cff_parser.CFFStrings(); - strings.add('Version 0.11'); - strings.add('See original notice'); - strings.add(name); - strings.add(name); - strings.add('Medium'); - cff.strings = strings; - cff.globalSubrIndex = new _cff_parser.CFFIndex(); - var count = glyphs.length; - var charsetArray = ['.notdef']; - var i, ii; - - for (i = 0; i < count; i++) { - var glyphName = charstrings[i].glyphName; - - var index = _cff_parser.CFFStandardStrings.indexOf(glyphName); - - if (index === -1) { - strings.add(glyphName); - } - - charsetArray.push(glyphName); - } - - cff.charset = new _cff_parser.CFFCharset(false, 0, charsetArray); - var charStringsIndex = new _cff_parser.CFFIndex(); - charStringsIndex.add([0x8B, 0x0E]); - - for (i = 0; i < count; i++) { - charStringsIndex.add(glyphs[i]); - } - - cff.charStrings = charStringsIndex; - var privateDict = new _cff_parser.CFFPrivateDict(); - privateDict.setByName('Subrs', null); - var fields = ['BlueValues', 'OtherBlues', 'FamilyBlues', 'FamilyOtherBlues', 'StemSnapH', 'StemSnapV', 'BlueShift', 'BlueFuzz', 'BlueScale', 'LanguageGroup', 'ExpansionFactor', 'ForceBold', 'StdHW', 'StdVW']; - - for (i = 0, ii = fields.length; i < ii; i++) { - var field = fields[i]; - - if (!(field in properties.privateData)) { - continue; - } - - var value = properties.privateData[field]; - - if (Array.isArray(value)) { - for (var j = value.length - 1; j > 0; j--) { - value[j] -= value[j - 1]; - } - } - - privateDict.setByName(field, value); - } - - cff.topDict.privateDict = privateDict; - var subrIndex = new _cff_parser.CFFIndex(); - - for (i = 0, ii = subrs.length; i < ii; i++) { - subrIndex.add(subrs[i]); - } - - privateDict.subrsIndex = subrIndex; - var compiler = new _cff_parser.CFFCompiler(cff); - return compiler.compile(); - } - }; - return Type1Font; -}(); - -var CFFFont = function CFFFontClosure() { - function CFFFont(file, properties) { - this.properties = properties; - var parser = new _cff_parser.CFFParser(file, properties, SEAC_ANALYSIS_ENABLED); - this.cff = parser.parse(); - this.cff.duplicateFirstGlyph(); - var compiler = new _cff_parser.CFFCompiler(this.cff); - this.seacs = this.cff.seacs; - - try { - this.data = compiler.compile(); - } catch (e) { - (0, _util.warn)('Failed to compile font ' + properties.loadedName); - this.data = file; - } - } - - CFFFont.prototype = { - get numGlyphs() { - return this.cff.charStrings.count; - }, - - getCharset: function CFFFont_getCharset() { - return this.cff.charset.charset; - }, - getGlyphMapping: function CFFFont_getGlyphMapping() { - var cff = this.cff; - var properties = this.properties; - var charsets = cff.charset.charset; - var charCodeToGlyphId; - var glyphId; - - if (properties.composite) { - charCodeToGlyphId = Object.create(null); - var charCode; - - if (cff.isCIDFont) { - for (glyphId = 0; glyphId < charsets.length; glyphId++) { - var cid = charsets[glyphId]; - charCode = properties.cMap.charCodeOf(cid); - charCodeToGlyphId[charCode] = glyphId; - } - } else { - for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) { - charCode = properties.cMap.charCodeOf(glyphId); - charCodeToGlyphId[charCode] = glyphId; - } - } - - return charCodeToGlyphId; - } - - var encoding = cff.encoding ? cff.encoding.encoding : null; - charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets); - return charCodeToGlyphId; - }, - hasGlyphId: function CFFFont_hasGlyphID(id) { - return this.cff.hasGlyphId(id); - } - }; - return CFFFont; -}(); - -/***/ }), -/* 175 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.CFFFDSelect = exports.CFFCompiler = exports.CFFPrivateDict = exports.CFFTopDict = exports.CFFCharset = exports.CFFIndex = exports.CFFStrings = exports.CFFHeader = exports.CFF = exports.CFFParser = exports.CFFStandardStrings = void 0; - -var _util = __w_pdfjs_require__(5); - -var _charsets = __w_pdfjs_require__(176); - -var _encodings = __w_pdfjs_require__(177); - -var MAX_SUBR_NESTING = 10; -var CFFStandardStrings = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall', '001.000', '001.001', '001.002', '001.003', 'Black', 'Bold', 'Book', 'Light', 'Medium', 'Regular', 'Roman', 'Semibold']; -exports.CFFStandardStrings = CFFStandardStrings; -var NUM_STANDARD_CFF_STRINGS = 391; - -var CFFParser = function CFFParserClosure() { - var CharstringValidationData = [null, { - id: 'hstem', - min: 2, - stackClearing: true, - stem: true - }, null, { - id: 'vstem', - min: 2, - stackClearing: true, - stem: true - }, { - id: 'vmoveto', - min: 1, - stackClearing: true - }, { - id: 'rlineto', - min: 2, - resetStack: true - }, { - id: 'hlineto', - min: 1, - resetStack: true - }, { - id: 'vlineto', - min: 1, - resetStack: true - }, { - id: 'rrcurveto', - min: 6, - resetStack: true - }, null, { - id: 'callsubr', - min: 1, - undefStack: true - }, { - id: 'return', - min: 0, - undefStack: true - }, null, null, { - id: 'endchar', - min: 0, - stackClearing: true - }, null, null, null, { - id: 'hstemhm', - min: 2, - stackClearing: true, - stem: true - }, { - id: 'hintmask', - min: 0, - stackClearing: true - }, { - id: 'cntrmask', - min: 0, - stackClearing: true - }, { - id: 'rmoveto', - min: 2, - stackClearing: true - }, { - id: 'hmoveto', - min: 1, - stackClearing: true - }, { - id: 'vstemhm', - min: 2, - stackClearing: true, - stem: true - }, { - id: 'rcurveline', - min: 8, - resetStack: true - }, { - id: 'rlinecurve', - min: 8, - resetStack: true - }, { - id: 'vvcurveto', - min: 4, - resetStack: true - }, { - id: 'hhcurveto', - min: 4, - resetStack: true - }, null, { - id: 'callgsubr', - min: 1, - undefStack: true - }, { - id: 'vhcurveto', - min: 4, - resetStack: true - }, { - id: 'hvcurveto', - min: 4, - resetStack: true - }]; - var CharstringValidationData12 = [null, null, null, { - id: 'and', - min: 2, - stackDelta: -1 - }, { - id: 'or', - min: 2, - stackDelta: -1 - }, { - id: 'not', - min: 1, - stackDelta: 0 - }, null, null, null, { - id: 'abs', - min: 1, - stackDelta: 0 - }, { - id: 'add', - min: 2, - stackDelta: -1, - stackFn: function stack_div(stack, index) { - stack[index - 2] = stack[index - 2] + stack[index - 1]; - } - }, { - id: 'sub', - min: 2, - stackDelta: -1, - stackFn: function stack_div(stack, index) { - stack[index - 2] = stack[index - 2] - stack[index - 1]; - } - }, { - id: 'div', - min: 2, - stackDelta: -1, - stackFn: function stack_div(stack, index) { - stack[index - 2] = stack[index - 2] / stack[index - 1]; - } - }, null, { - id: 'neg', - min: 1, - stackDelta: 0, - stackFn: function stack_div(stack, index) { - stack[index - 1] = -stack[index - 1]; - } - }, { - id: 'eq', - min: 2, - stackDelta: -1 - }, null, null, { - id: 'drop', - min: 1, - stackDelta: -1 - }, null, { - id: 'put', - min: 2, - stackDelta: -2 - }, { - id: 'get', - min: 1, - stackDelta: 0 - }, { - id: 'ifelse', - min: 4, - stackDelta: -3 - }, { - id: 'random', - min: 0, - stackDelta: 1 - }, { - id: 'mul', - min: 2, - stackDelta: -1, - stackFn: function stack_div(stack, index) { - stack[index - 2] = stack[index - 2] * stack[index - 1]; - } - }, null, { - id: 'sqrt', - min: 1, - stackDelta: 0 - }, { - id: 'dup', - min: 1, - stackDelta: 1 - }, { - id: 'exch', - min: 2, - stackDelta: 0 - }, { - id: 'index', - min: 2, - stackDelta: 0 - }, { - id: 'roll', - min: 3, - stackDelta: -2 - }, null, null, null, { - id: 'hflex', - min: 7, - resetStack: true - }, { - id: 'flex', - min: 13, - resetStack: true - }, { - id: 'hflex1', - min: 9, - resetStack: true - }, { - id: 'flex1', - min: 11, - resetStack: true - }]; - - function CFFParser(file, properties, seacAnalysisEnabled) { - this.bytes = file.getBytes(); - this.properties = properties; - this.seacAnalysisEnabled = !!seacAnalysisEnabled; - } - - CFFParser.prototype = { - parse: function CFFParser_parse() { - var properties = this.properties; - var cff = new CFF(); - this.cff = cff; - var header = this.parseHeader(); - var nameIndex = this.parseIndex(header.endPos); - var topDictIndex = this.parseIndex(nameIndex.endPos); - var stringIndex = this.parseIndex(topDictIndex.endPos); - var globalSubrIndex = this.parseIndex(stringIndex.endPos); - var topDictParsed = this.parseDict(topDictIndex.obj.get(0)); - var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings); - cff.header = header.obj; - cff.names = this.parseNameIndex(nameIndex.obj); - cff.strings = this.parseStringIndex(stringIndex.obj); - cff.topDict = topDict; - cff.globalSubrIndex = globalSubrIndex.obj; - this.parsePrivateDict(cff.topDict); - cff.isCIDFont = topDict.hasName('ROS'); - var charStringOffset = topDict.getByName('CharStrings'); - var charStringIndex = this.parseIndex(charStringOffset).obj; - var fontMatrix = topDict.getByName('FontMatrix'); - - if (fontMatrix) { - properties.fontMatrix = fontMatrix; - } - - var fontBBox = topDict.getByName('FontBBox'); - - if (fontBBox) { - properties.ascent = Math.max(fontBBox[3], fontBBox[1]); - properties.descent = Math.min(fontBBox[1], fontBBox[3]); - properties.ascentScaled = true; - } - - var charset, encoding; - - if (cff.isCIDFont) { - var fdArrayIndex = this.parseIndex(topDict.getByName('FDArray')).obj; - - for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) { - var dictRaw = fdArrayIndex.get(i); - var fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings); - this.parsePrivateDict(fontDict); - cff.fdArray.push(fontDict); - } - - encoding = null; - charset = this.parseCharsets(topDict.getByName('charset'), charStringIndex.count, cff.strings, true); - cff.fdSelect = this.parseFDSelect(topDict.getByName('FDSelect'), charStringIndex.count); - } else { - charset = this.parseCharsets(topDict.getByName('charset'), charStringIndex.count, cff.strings, false); - encoding = this.parseEncoding(topDict.getByName('Encoding'), properties, cff.strings, charset.charset); - } - - cff.charset = charset; - cff.encoding = encoding; - var charStringsAndSeacs = this.parseCharStrings({ - charStrings: charStringIndex, - localSubrIndex: topDict.privateDict.subrsIndex, - globalSubrIndex: globalSubrIndex.obj, - fdSelect: cff.fdSelect, - fdArray: cff.fdArray, - privateDict: topDict.privateDict - }); - cff.charStrings = charStringsAndSeacs.charStrings; - cff.seacs = charStringsAndSeacs.seacs; - cff.widths = charStringsAndSeacs.widths; - return cff; - }, - parseHeader: function CFFParser_parseHeader() { - var bytes = this.bytes; - var bytesLength = bytes.length; - var offset = 0; - - while (offset < bytesLength && bytes[offset] !== 1) { - ++offset; - } - - if (offset >= bytesLength) { - throw new _util.FormatError('Invalid CFF header'); - } - - if (offset !== 0) { - (0, _util.info)('cff data is shifted'); - bytes = bytes.subarray(offset); - this.bytes = bytes; - } - - var major = bytes[0]; - var minor = bytes[1]; - var hdrSize = bytes[2]; - var offSize = bytes[3]; - var header = new CFFHeader(major, minor, hdrSize, offSize); - return { - obj: header, - endPos: hdrSize - }; - }, - parseDict: function CFFParser_parseDict(dict) { - var pos = 0; - - function parseOperand() { - var value = dict[pos++]; - - if (value === 30) { - return parseFloatOperand(); - } else if (value === 28) { - value = dict[pos++]; - value = (value << 24 | dict[pos++] << 16) >> 16; - return value; - } else if (value === 29) { - value = dict[pos++]; - value = value << 8 | dict[pos++]; - value = value << 8 | dict[pos++]; - value = value << 8 | dict[pos++]; - return value; - } else if (value >= 32 && value <= 246) { - return value - 139; - } else if (value >= 247 && value <= 250) { - return (value - 247) * 256 + dict[pos++] + 108; - } else if (value >= 251 && value <= 254) { - return -((value - 251) * 256) - dict[pos++] - 108; - } - - (0, _util.warn)('CFFParser_parseDict: "' + value + '" is a reserved command.'); - return NaN; - } - - function parseFloatOperand() { - var str = ''; - var eof = 15; - var lookup = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'E', 'E-', null, '-']; - var length = dict.length; - - while (pos < length) { - var b = dict[pos++]; - var b1 = b >> 4; - var b2 = b & 15; - - if (b1 === eof) { - break; - } - - str += lookup[b1]; - - if (b2 === eof) { - break; - } - - str += lookup[b2]; - } - - return parseFloat(str); - } - - var operands = []; - var entries = []; - pos = 0; - var end = dict.length; - - while (pos < end) { - var b = dict[pos]; - - if (b <= 21) { - if (b === 12) { - b = b << 8 | dict[++pos]; - } - - entries.push([b, operands]); - operands = []; - ++pos; - } else { - operands.push(parseOperand()); - } - } - - return entries; - }, - parseIndex: function CFFParser_parseIndex(pos) { - var cffIndex = new CFFIndex(); - var bytes = this.bytes; - var count = bytes[pos++] << 8 | bytes[pos++]; - var offsets = []; - var end = pos; - var i, ii; - - if (count !== 0) { - var offsetSize = bytes[pos++]; - var startPos = pos + (count + 1) * offsetSize - 1; - - for (i = 0, ii = count + 1; i < ii; ++i) { - var offset = 0; - - for (var j = 0; j < offsetSize; ++j) { - offset <<= 8; - offset += bytes[pos++]; - } - - offsets.push(startPos + offset); - } - - end = offsets[count]; - } - - for (i = 0, ii = offsets.length - 1; i < ii; ++i) { - var offsetStart = offsets[i]; - var offsetEnd = offsets[i + 1]; - cffIndex.add(bytes.subarray(offsetStart, offsetEnd)); - } - - return { - obj: cffIndex, - endPos: end - }; - }, - parseNameIndex: function CFFParser_parseNameIndex(index) { - var names = []; - - for (var i = 0, ii = index.count; i < ii; ++i) { - var name = index.get(i); - names.push((0, _util.bytesToString)(name)); - } - - return names; - }, - parseStringIndex: function CFFParser_parseStringIndex(index) { - var strings = new CFFStrings(); - - for (var i = 0, ii = index.count; i < ii; ++i) { - var data = index.get(i); - strings.add((0, _util.bytesToString)(data)); - } - - return strings; - }, - createDict: function CFFParser_createDict(Type, dict, strings) { - var cffDict = new Type(strings); - - for (var i = 0, ii = dict.length; i < ii; ++i) { - var pair = dict[i]; - var key = pair[0]; - var value = pair[1]; - cffDict.setByKey(key, value); - } - - return cffDict; - }, - parseCharString: function CFFParser_parseCharString(state, data, localSubrIndex, globalSubrIndex) { - if (!data || state.callDepth > MAX_SUBR_NESTING) { - return false; - } - - var stackSize = state.stackSize; - var stack = state.stack; - var length = data.length; - - for (var j = 0; j < length;) { - var value = data[j++]; - var validationCommand = null; - - if (value === 12) { - var q = data[j++]; - - if (q === 0) { - data[j - 2] = 139; - data[j - 1] = 22; - stackSize = 0; - } else { - validationCommand = CharstringValidationData12[q]; - } - } else if (value === 28) { - stack[stackSize] = (data[j] << 24 | data[j + 1] << 16) >> 16; - j += 2; - stackSize++; - } else if (value === 14) { - if (stackSize >= 4) { - stackSize -= 4; - - if (this.seacAnalysisEnabled) { - state.seac = stack.slice(stackSize, stackSize + 4); - return false; - } - } - - validationCommand = CharstringValidationData[value]; - } else if (value >= 32 && value <= 246) { - stack[stackSize] = value - 139; - stackSize++; - } else if (value >= 247 && value <= 254) { - stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - data[j] - 108; - j++; - stackSize++; - } else if (value === 255) { - stack[stackSize] = (data[j] << 24 | data[j + 1] << 16 | data[j + 2] << 8 | data[j + 3]) / 65536; - j += 4; - stackSize++; - } else if (value === 19 || value === 20) { - state.hints += stackSize >> 1; - j += state.hints + 7 >> 3; - stackSize %= 2; - validationCommand = CharstringValidationData[value]; - } else if (value === 10 || value === 29) { - var subrsIndex; - - if (value === 10) { - subrsIndex = localSubrIndex; - } else { - subrsIndex = globalSubrIndex; - } - - if (!subrsIndex) { - validationCommand = CharstringValidationData[value]; - (0, _util.warn)('Missing subrsIndex for ' + validationCommand.id); - return false; - } - - var bias = 32768; - - if (subrsIndex.count < 1240) { - bias = 107; - } else if (subrsIndex.count < 33900) { - bias = 1131; - } - - var subrNumber = stack[--stackSize] + bias; - - if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) { - validationCommand = CharstringValidationData[value]; - (0, _util.warn)('Out of bounds subrIndex for ' + validationCommand.id); - return false; - } - - state.stackSize = stackSize; - state.callDepth++; - var valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex); - - if (!valid) { - return false; - } - - state.callDepth--; - stackSize = state.stackSize; - continue; - } else if (value === 11) { - state.stackSize = stackSize; - return true; - } else { - validationCommand = CharstringValidationData[value]; - } - - if (validationCommand) { - if (validationCommand.stem) { - state.hints += stackSize >> 1; - - if (value === 3 || value === 23) { - state.hasVStems = true; - } else if (state.hasVStems && (value === 1 || value === 18)) { - (0, _util.warn)('CFF stem hints are in wrong order'); - data[j - 1] = value === 1 ? 3 : 23; - } - } - - if ('min' in validationCommand) { - if (!state.undefStack && stackSize < validationCommand.min) { - (0, _util.warn)('Not enough parameters for ' + validationCommand.id + '; actual: ' + stackSize + ', expected: ' + validationCommand.min); - return false; - } - } - - if (state.firstStackClearing && validationCommand.stackClearing) { - state.firstStackClearing = false; - stackSize -= validationCommand.min; - - if (stackSize >= 2 && validationCommand.stem) { - stackSize %= 2; - } else if (stackSize > 1) { - (0, _util.warn)('Found too many parameters for stack-clearing command'); - } - - if (stackSize > 0 && stack[stackSize - 1] >= 0) { - state.width = stack[stackSize - 1]; - } - } - - if ('stackDelta' in validationCommand) { - if ('stackFn' in validationCommand) { - validationCommand.stackFn(stack, stackSize); - } - - stackSize += validationCommand.stackDelta; - } else if (validationCommand.stackClearing) { - stackSize = 0; - } else if (validationCommand.resetStack) { - stackSize = 0; - state.undefStack = false; - } else if (validationCommand.undefStack) { - stackSize = 0; - state.undefStack = true; - state.firstStackClearing = false; - } - } - } - - state.stackSize = stackSize; - return true; - }, - parseCharStrings: function parseCharStrings(_ref) { - var charStrings = _ref.charStrings, - localSubrIndex = _ref.localSubrIndex, - globalSubrIndex = _ref.globalSubrIndex, - fdSelect = _ref.fdSelect, - fdArray = _ref.fdArray, - privateDict = _ref.privateDict; - var seacs = []; - var widths = []; - var count = charStrings.count; - - for (var i = 0; i < count; i++) { - var charstring = charStrings.get(i); - var state = { - callDepth: 0, - stackSize: 0, - stack: [], - undefStack: true, - hints: 0, - firstStackClearing: true, - seac: null, - width: null, - hasVStems: false - }; - var valid = true; - var localSubrToUse = null; - var privateDictToUse = privateDict; - - if (fdSelect && fdArray.length) { - var fdIndex = fdSelect.getFDIndex(i); - - if (fdIndex === -1) { - (0, _util.warn)('Glyph index is not in fd select.'); - valid = false; - } - - if (fdIndex >= fdArray.length) { - (0, _util.warn)('Invalid fd index for glyph index.'); - valid = false; - } - - if (valid) { - privateDictToUse = fdArray[fdIndex].privateDict; - localSubrToUse = privateDictToUse.subrsIndex; - } - } else if (localSubrIndex) { - localSubrToUse = localSubrIndex; - } - - if (valid) { - valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex); - } - - if (state.width !== null) { - var nominalWidth = privateDictToUse.getByName('nominalWidthX'); - widths[i] = nominalWidth + state.width; - } else { - var defaultWidth = privateDictToUse.getByName('defaultWidthX'); - widths[i] = defaultWidth; - } - - if (state.seac !== null) { - seacs[i] = state.seac; - } - - if (!valid) { - charStrings.set(i, new Uint8Array([14])); - } - } - - return { - charStrings: charStrings, - seacs: seacs, - widths: widths - }; - }, - emptyPrivateDictionary: function CFFParser_emptyPrivateDictionary(parentDict) { - var privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings); - parentDict.setByKey(18, [0, 0]); - parentDict.privateDict = privateDict; - }, - parsePrivateDict: function CFFParser_parsePrivateDict(parentDict) { - if (!parentDict.hasName('Private')) { - this.emptyPrivateDictionary(parentDict); - return; - } - - var privateOffset = parentDict.getByName('Private'); - - if (!Array.isArray(privateOffset) || privateOffset.length !== 2) { - parentDict.removeByName('Private'); - return; - } - - var size = privateOffset[0]; - var offset = privateOffset[1]; - - if (size === 0 || offset >= this.bytes.length) { - this.emptyPrivateDictionary(parentDict); - return; - } - - var privateDictEnd = offset + size; - var dictData = this.bytes.subarray(offset, privateDictEnd); - var dict = this.parseDict(dictData); - var privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings); - parentDict.privateDict = privateDict; - - if (!privateDict.getByName('Subrs')) { - return; - } - - var subrsOffset = privateDict.getByName('Subrs'); - var relativeOffset = offset + subrsOffset; - - if (subrsOffset === 0 || relativeOffset >= this.bytes.length) { - this.emptyPrivateDictionary(parentDict); - return; - } - - var subrsIndex = this.parseIndex(relativeOffset); - privateDict.subrsIndex = subrsIndex.obj; - }, - parseCharsets: function CFFParser_parseCharsets(pos, length, strings, cid) { - if (pos === 0) { - return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, _charsets.ISOAdobeCharset); - } else if (pos === 1) { - return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, _charsets.ExpertCharset); - } else if (pos === 2) { - return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, _charsets.ExpertSubsetCharset); - } - - var bytes = this.bytes; - var start = pos; - var format = bytes[pos++]; - var charset = ['.notdef']; - var id, count, i; - length -= 1; - - switch (format) { - case 0: - for (i = 0; i < length; i++) { - id = bytes[pos++] << 8 | bytes[pos++]; - charset.push(cid ? id : strings.get(id)); - } - - break; - - case 1: - while (charset.length <= length) { - id = bytes[pos++] << 8 | bytes[pos++]; - count = bytes[pos++]; - - for (i = 0; i <= count; i++) { - charset.push(cid ? id++ : strings.get(id++)); - } - } - - break; - - case 2: - while (charset.length <= length) { - id = bytes[pos++] << 8 | bytes[pos++]; - count = bytes[pos++] << 8 | bytes[pos++]; - - for (i = 0; i <= count; i++) { - charset.push(cid ? id++ : strings.get(id++)); - } - } - - break; - - default: - throw new _util.FormatError('Unknown charset format'); - } - - var end = pos; - var raw = bytes.subarray(start, end); - return new CFFCharset(false, format, charset, raw); - }, - parseEncoding: function CFFParser_parseEncoding(pos, properties, strings, charset) { - var encoding = Object.create(null); - var bytes = this.bytes; - var predefined = false; - var format, i, ii; - var raw = null; - - function readSupplement() { - var supplementsCount = bytes[pos++]; - - for (i = 0; i < supplementsCount; i++) { - var code = bytes[pos++]; - var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff); - encoding[code] = charset.indexOf(strings.get(sid)); - } - } - - if (pos === 0 || pos === 1) { - predefined = true; - format = pos; - var baseEncoding = pos ? _encodings.ExpertEncoding : _encodings.StandardEncoding; - - for (i = 0, ii = charset.length; i < ii; i++) { - var index = baseEncoding.indexOf(charset[i]); - - if (index !== -1) { - encoding[index] = i; - } - } - } else { - var dataStart = pos; - format = bytes[pos++]; - - switch (format & 0x7f) { - case 0: - var glyphsCount = bytes[pos++]; - - for (i = 1; i <= glyphsCount; i++) { - encoding[bytes[pos++]] = i; - } - - break; - - case 1: - var rangesCount = bytes[pos++]; - var gid = 1; - - for (i = 0; i < rangesCount; i++) { - var start = bytes[pos++]; - var left = bytes[pos++]; - - for (var j = start; j <= start + left; j++) { - encoding[j] = gid++; - } - } - - break; - - default: - throw new _util.FormatError("Unknown encoding format: ".concat(format, " in CFF")); - } - - var dataEnd = pos; - - if (format & 0x80) { - bytes[dataStart] &= 0x7f; - readSupplement(); - } - - raw = bytes.subarray(dataStart, dataEnd); - } - - format = format & 0x7f; - return new CFFEncoding(predefined, format, encoding, raw); - }, - parseFDSelect: function CFFParser_parseFDSelect(pos, length) { - var bytes = this.bytes; - var format = bytes[pos++]; - var fdSelect = []; - var i; - - switch (format) { - case 0: - for (i = 0; i < length; ++i) { - var id = bytes[pos++]; - fdSelect.push(id); - } - - break; - - case 3: - var rangesCount = bytes[pos++] << 8 | bytes[pos++]; - - for (i = 0; i < rangesCount; ++i) { - var first = bytes[pos++] << 8 | bytes[pos++]; - - if (i === 0 && first !== 0) { - (0, _util.warn)('parseFDSelect: The first range must have a first GID of 0' + ' -- trying to recover.'); - first = 0; - } - - var fdIndex = bytes[pos++]; - var next = bytes[pos] << 8 | bytes[pos + 1]; - - for (var j = first; j < next; ++j) { - fdSelect.push(fdIndex); - } - } - - pos += 2; - break; - - default: - throw new _util.FormatError("parseFDSelect: Unknown format \"".concat(format, "\".")); - } - - if (fdSelect.length !== length) { - throw new _util.FormatError('parseFDSelect: Invalid font data.'); - } - - return new CFFFDSelect(format, fdSelect); - } - }; - return CFFParser; -}(); - -exports.CFFParser = CFFParser; - -var CFF = function CFFClosure() { - function CFF() { - this.header = null; - this.names = []; - this.topDict = null; - this.strings = new CFFStrings(); - this.globalSubrIndex = null; - this.encoding = null; - this.charset = null; - this.charStrings = null; - this.fdArray = []; - this.fdSelect = null; - this.isCIDFont = false; - } - - CFF.prototype = { - duplicateFirstGlyph: function CFF_duplicateFirstGlyph() { - if (this.charStrings.count >= 65535) { - (0, _util.warn)('Not enough space in charstrings to duplicate first glyph.'); - return; - } - - var glyphZero = this.charStrings.get(0); - this.charStrings.add(glyphZero); - - if (this.isCIDFont) { - this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]); - } - }, - hasGlyphId: function CFF_hasGlyphID(id) { - if (id < 0 || id >= this.charStrings.count) { - return false; - } - - var glyph = this.charStrings.get(id); - return glyph.length > 0; - } - }; - return CFF; -}(); - -exports.CFF = CFF; - -var CFFHeader = function CFFHeaderClosure() { - function CFFHeader(major, minor, hdrSize, offSize) { - this.major = major; - this.minor = minor; - this.hdrSize = hdrSize; - this.offSize = offSize; - } - - return CFFHeader; -}(); - -exports.CFFHeader = CFFHeader; - -var CFFStrings = function CFFStringsClosure() { - function CFFStrings() { - this.strings = []; - } - - CFFStrings.prototype = { - get: function CFFStrings_get(index) { - if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) { - return CFFStandardStrings[index]; - } - - if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) { - return this.strings[index - NUM_STANDARD_CFF_STRINGS]; - } - - return CFFStandardStrings[0]; - }, - getSID: function CFFStrings_getSID(str) { - var index = CFFStandardStrings.indexOf(str); - - if (index !== -1) { - return index; - } - - index = this.strings.indexOf(str); - - if (index !== -1) { - return index + NUM_STANDARD_CFF_STRINGS; - } - - return -1; - }, - add: function CFFStrings_add(value) { - this.strings.push(value); - }, - - get count() { - return this.strings.length; - } - - }; - return CFFStrings; -}(); - -exports.CFFStrings = CFFStrings; - -var CFFIndex = function CFFIndexClosure() { - function CFFIndex() { - this.objects = []; - this.length = 0; - } - - CFFIndex.prototype = { - add: function CFFIndex_add(data) { - this.length += data.length; - this.objects.push(data); - }, - set: function CFFIndex_set(index, data) { - this.length += data.length - this.objects[index].length; - this.objects[index] = data; - }, - get: function CFFIndex_get(index) { - return this.objects[index]; - }, - - get count() { - return this.objects.length; - } - - }; - return CFFIndex; -}(); - -exports.CFFIndex = CFFIndex; - -var CFFDict = function CFFDictClosure() { - function CFFDict(tables, strings) { - this.keyToNameMap = tables.keyToNameMap; - this.nameToKeyMap = tables.nameToKeyMap; - this.defaults = tables.defaults; - this.types = tables.types; - this.opcodes = tables.opcodes; - this.order = tables.order; - this.strings = strings; - this.values = Object.create(null); - } - - CFFDict.prototype = { - setByKey: function CFFDict_setByKey(key, value) { - if (!(key in this.keyToNameMap)) { - return false; - } - - var valueLength = value.length; - - if (valueLength === 0) { - return true; - } - - for (var i = 0; i < valueLength; i++) { - if (isNaN(value[i])) { - (0, _util.warn)('Invalid CFFDict value: "' + value + '" for key "' + key + '".'); - return true; - } - } - - var type = this.types[key]; - - if (type === 'num' || type === 'sid' || type === 'offset') { - value = value[0]; - } - - this.values[key] = value; - return true; - }, - setByName: function CFFDict_setByName(name, value) { - if (!(name in this.nameToKeyMap)) { - throw new _util.FormatError("Invalid dictionary name \"".concat(name, "\"")); - } - - this.values[this.nameToKeyMap[name]] = value; - }, - hasName: function CFFDict_hasName(name) { - return this.nameToKeyMap[name] in this.values; - }, - getByName: function CFFDict_getByName(name) { - if (!(name in this.nameToKeyMap)) { - throw new _util.FormatError("Invalid dictionary name ".concat(name, "\"")); - } - - var key = this.nameToKeyMap[name]; - - if (!(key in this.values)) { - return this.defaults[key]; - } - - return this.values[key]; - }, - removeByName: function CFFDict_removeByName(name) { - delete this.values[this.nameToKeyMap[name]]; - } - }; - - CFFDict.createTables = function CFFDict_createTables(layout) { - var tables = { - keyToNameMap: {}, - nameToKeyMap: {}, - defaults: {}, - types: {}, - opcodes: {}, - order: [] - }; - - for (var i = 0, ii = layout.length; i < ii; ++i) { - var entry = layout[i]; - var key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0]; - tables.keyToNameMap[key] = entry[1]; - tables.nameToKeyMap[entry[1]] = key; - tables.types[key] = entry[2]; - tables.defaults[key] = entry[3]; - tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]]; - tables.order.push(key); - } - - return tables; - }; - - return CFFDict; -}(); - -var CFFTopDict = function CFFTopDictClosure() { - var layout = [[[12, 30], 'ROS', ['sid', 'sid', 'num'], null], [[12, 20], 'SyntheticBase', 'num', null], [0, 'version', 'sid', null], [1, 'Notice', 'sid', null], [[12, 0], 'Copyright', 'sid', null], [2, 'FullName', 'sid', null], [3, 'FamilyName', 'sid', null], [4, 'Weight', 'sid', null], [[12, 1], 'isFixedPitch', 'num', 0], [[12, 2], 'ItalicAngle', 'num', 0], [[12, 3], 'UnderlinePosition', 'num', -100], [[12, 4], 'UnderlineThickness', 'num', 50], [[12, 5], 'PaintType', 'num', 0], [[12, 6], 'CharstringType', 'num', 2], [[12, 7], 'FontMatrix', ['num', 'num', 'num', 'num', 'num', 'num'], [0.001, 0, 0, 0.001, 0, 0]], [13, 'UniqueID', 'num', null], [5, 'FontBBox', ['num', 'num', 'num', 'num'], [0, 0, 0, 0]], [[12, 8], 'StrokeWidth', 'num', 0], [14, 'XUID', 'array', null], [15, 'charset', 'offset', 0], [16, 'Encoding', 'offset', 0], [17, 'CharStrings', 'offset', 0], [18, 'Private', ['offset', 'offset'], null], [[12, 21], 'PostScript', 'sid', null], [[12, 22], 'BaseFontName', 'sid', null], [[12, 23], 'BaseFontBlend', 'delta', null], [[12, 31], 'CIDFontVersion', 'num', 0], [[12, 32], 'CIDFontRevision', 'num', 0], [[12, 33], 'CIDFontType', 'num', 0], [[12, 34], 'CIDCount', 'num', 8720], [[12, 35], 'UIDBase', 'num', null], [[12, 37], 'FDSelect', 'offset', null], [[12, 36], 'FDArray', 'offset', null], [[12, 38], 'FontName', 'sid', null]]; - var tables = null; - - function CFFTopDict(strings) { - if (tables === null) { - tables = CFFDict.createTables(layout); - } - - CFFDict.call(this, tables, strings); - this.privateDict = null; - } - - CFFTopDict.prototype = Object.create(CFFDict.prototype); - return CFFTopDict; -}(); - -exports.CFFTopDict = CFFTopDict; - -var CFFPrivateDict = function CFFPrivateDictClosure() { - var layout = [[6, 'BlueValues', 'delta', null], [7, 'OtherBlues', 'delta', null], [8, 'FamilyBlues', 'delta', null], [9, 'FamilyOtherBlues', 'delta', null], [[12, 9], 'BlueScale', 'num', 0.039625], [[12, 10], 'BlueShift', 'num', 7], [[12, 11], 'BlueFuzz', 'num', 1], [10, 'StdHW', 'num', null], [11, 'StdVW', 'num', null], [[12, 12], 'StemSnapH', 'delta', null], [[12, 13], 'StemSnapV', 'delta', null], [[12, 14], 'ForceBold', 'num', 0], [[12, 17], 'LanguageGroup', 'num', 0], [[12, 18], 'ExpansionFactor', 'num', 0.06], [[12, 19], 'initialRandomSeed', 'num', 0], [20, 'defaultWidthX', 'num', 0], [21, 'nominalWidthX', 'num', 0], [19, 'Subrs', 'offset', null]]; - var tables = null; - - function CFFPrivateDict(strings) { - if (tables === null) { - tables = CFFDict.createTables(layout); - } - - CFFDict.call(this, tables, strings); - this.subrsIndex = null; - } - - CFFPrivateDict.prototype = Object.create(CFFDict.prototype); - return CFFPrivateDict; -}(); - -exports.CFFPrivateDict = CFFPrivateDict; -var CFFCharsetPredefinedTypes = { - ISO_ADOBE: 0, - EXPERT: 1, - EXPERT_SUBSET: 2 -}; - -var CFFCharset = function CFFCharsetClosure() { - function CFFCharset(predefined, format, charset, raw) { - this.predefined = predefined; - this.format = format; - this.charset = charset; - this.raw = raw; - } - - return CFFCharset; -}(); - -exports.CFFCharset = CFFCharset; - -var CFFEncoding = function CFFEncodingClosure() { - function CFFEncoding(predefined, format, encoding, raw) { - this.predefined = predefined; - this.format = format; - this.encoding = encoding; - this.raw = raw; - } - - return CFFEncoding; -}(); - -var CFFFDSelect = function CFFFDSelectClosure() { - function CFFFDSelect(format, fdSelect) { - this.format = format; - this.fdSelect = fdSelect; - } - - CFFFDSelect.prototype = { - getFDIndex: function CFFFDSelect_get(glyphIndex) { - if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) { - return -1; - } - - return this.fdSelect[glyphIndex]; - } - }; - return CFFFDSelect; -}(); - -exports.CFFFDSelect = CFFFDSelect; - -var CFFOffsetTracker = function CFFOffsetTrackerClosure() { - function CFFOffsetTracker() { - this.offsets = Object.create(null); - } - - CFFOffsetTracker.prototype = { - isTracking: function CFFOffsetTracker_isTracking(key) { - return key in this.offsets; - }, - track: function CFFOffsetTracker_track(key, location) { - if (key in this.offsets) { - throw new _util.FormatError("Already tracking location of ".concat(key)); - } - - this.offsets[key] = location; - }, - offset: function CFFOffsetTracker_offset(value) { - for (var key in this.offsets) { - this.offsets[key] += value; - } - }, - setEntryLocation: function CFFOffsetTracker_setEntryLocation(key, values, output) { - if (!(key in this.offsets)) { - throw new _util.FormatError("Not tracking location of ".concat(key)); - } - - var data = output.data; - var dataOffset = this.offsets[key]; - var size = 5; - - for (var i = 0, ii = values.length; i < ii; ++i) { - var offset0 = i * size + dataOffset; - var offset1 = offset0 + 1; - var offset2 = offset0 + 2; - var offset3 = offset0 + 3; - var offset4 = offset0 + 4; - - if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) { - throw new _util.FormatError('writing to an offset that is not empty'); - } - - var value = values[i]; - data[offset0] = 0x1d; - data[offset1] = value >> 24 & 0xFF; - data[offset2] = value >> 16 & 0xFF; - data[offset3] = value >> 8 & 0xFF; - data[offset4] = value & 0xFF; - } - } - }; - return CFFOffsetTracker; -}(); - -var CFFCompiler = function CFFCompilerClosure() { - function CFFCompiler(cff) { - this.cff = cff; - } - - CFFCompiler.prototype = { - compile: function CFFCompiler_compile() { - var cff = this.cff; - var output = { - data: [], - length: 0, - add: function CFFCompiler_add(data) { - this.data = this.data.concat(data); - this.length = this.data.length; - } - }; - var header = this.compileHeader(cff.header); - output.add(header); - var nameIndex = this.compileNameIndex(cff.names); - output.add(nameIndex); - - if (cff.isCIDFont) { - if (cff.topDict.hasName('FontMatrix')) { - var base = cff.topDict.getByName('FontMatrix'); - cff.topDict.removeByName('FontMatrix'); - - for (var i = 0, ii = cff.fdArray.length; i < ii; i++) { - var subDict = cff.fdArray[i]; - var matrix = base.slice(0); - - if (subDict.hasName('FontMatrix')) { - matrix = _util.Util.transform(matrix, subDict.getByName('FontMatrix')); - } - - subDict.setByName('FontMatrix', matrix); - } - } - } - - cff.topDict.setByName('charset', 0); - var compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont); - output.add(compiled.output); - var topDictTracker = compiled.trackers[0]; - var stringIndex = this.compileStringIndex(cff.strings.strings); - output.add(stringIndex); - var globalSubrIndex = this.compileIndex(cff.globalSubrIndex); - output.add(globalSubrIndex); - - if (cff.encoding && cff.topDict.hasName('Encoding')) { - if (cff.encoding.predefined) { - topDictTracker.setEntryLocation('Encoding', [cff.encoding.format], output); - } else { - var encoding = this.compileEncoding(cff.encoding); - topDictTracker.setEntryLocation('Encoding', [output.length], output); - output.add(encoding); - } - } - - var charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont); - topDictTracker.setEntryLocation('charset', [output.length], output); - output.add(charset); - var charStrings = this.compileCharStrings(cff.charStrings); - topDictTracker.setEntryLocation('CharStrings', [output.length], output); - output.add(charStrings); - - if (cff.isCIDFont) { - topDictTracker.setEntryLocation('FDSelect', [output.length], output); - var fdSelect = this.compileFDSelect(cff.fdSelect); - output.add(fdSelect); - compiled = this.compileTopDicts(cff.fdArray, output.length, true); - topDictTracker.setEntryLocation('FDArray', [output.length], output); - output.add(compiled.output); - var fontDictTrackers = compiled.trackers; - this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output); - } - - this.compilePrivateDicts([cff.topDict], [topDictTracker], output); - output.add([0]); - return output.data; - }, - encodeNumber: function CFFCompiler_encodeNumber(value) { - if (parseFloat(value) === parseInt(value, 10) && !isNaN(value)) { - return this.encodeInteger(value); - } - - return this.encodeFloat(value); - }, - encodeFloat: function CFFCompiler_encodeFloat(num) { - var value = num.toString(); - var m = /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(value); - - if (m) { - var epsilon = parseFloat('1e' + ((m[2] ? +m[2] : 0) + m[1].length)); - value = (Math.round(num * epsilon) / epsilon).toString(); - } - - var nibbles = ''; - var i, ii; - - for (i = 0, ii = value.length; i < ii; ++i) { - var a = value[i]; - - if (a === 'e') { - nibbles += value[++i] === '-' ? 'c' : 'b'; - } else if (a === '.') { - nibbles += 'a'; - } else if (a === '-') { - nibbles += 'e'; - } else { - nibbles += a; - } - } - - nibbles += nibbles.length & 1 ? 'f' : 'ff'; - var out = [30]; - - for (i = 0, ii = nibbles.length; i < ii; i += 2) { - out.push(parseInt(nibbles.substring(i, i + 2), 16)); - } - - return out; - }, - encodeInteger: function CFFCompiler_encodeInteger(value) { - var code; - - if (value >= -107 && value <= 107) { - code = [value + 139]; - } else if (value >= 108 && value <= 1131) { - value = value - 108; - code = [(value >> 8) + 247, value & 0xFF]; - } else if (value >= -1131 && value <= -108) { - value = -value - 108; - code = [(value >> 8) + 251, value & 0xFF]; - } else if (value >= -32768 && value <= 32767) { - code = [0x1c, value >> 8 & 0xFF, value & 0xFF]; - } else { - code = [0x1d, value >> 24 & 0xFF, value >> 16 & 0xFF, value >> 8 & 0xFF, value & 0xFF]; - } - - return code; - }, - compileHeader: function CFFCompiler_compileHeader(header) { - return [header.major, header.minor, header.hdrSize, header.offSize]; - }, - compileNameIndex: function CFFCompiler_compileNameIndex(names) { - var nameIndex = new CFFIndex(); - - for (var i = 0, ii = names.length; i < ii; ++i) { - var name = names[i]; - var length = Math.min(name.length, 127); - var sanitizedName = new Array(length); - - for (var j = 0; j < length; j++) { - var _char = name[j]; - - if (_char < '!' || _char > '~' || _char === '[' || _char === ']' || _char === '(' || _char === ')' || _char === '{' || _char === '}' || _char === '<' || _char === '>' || _char === '/' || _char === '%') { - _char = '_'; - } - - sanitizedName[j] = _char; - } - - sanitizedName = sanitizedName.join(''); - - if (sanitizedName === '') { - sanitizedName = 'Bad_Font_Name'; - } - - nameIndex.add((0, _util.stringToBytes)(sanitizedName)); - } - - return this.compileIndex(nameIndex); - }, - compileTopDicts: function CFFCompiler_compileTopDicts(dicts, length, removeCidKeys) { - var fontDictTrackers = []; - var fdArrayIndex = new CFFIndex(); - - for (var i = 0, ii = dicts.length; i < ii; ++i) { - var fontDict = dicts[i]; - - if (removeCidKeys) { - fontDict.removeByName('CIDFontVersion'); - fontDict.removeByName('CIDFontRevision'); - fontDict.removeByName('CIDFontType'); - fontDict.removeByName('CIDCount'); - fontDict.removeByName('UIDBase'); - } - - var fontDictTracker = new CFFOffsetTracker(); - var fontDictData = this.compileDict(fontDict, fontDictTracker); - fontDictTrackers.push(fontDictTracker); - fdArrayIndex.add(fontDictData); - fontDictTracker.offset(length); - } - - fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers); - return { - trackers: fontDictTrackers, - output: fdArrayIndex - }; - }, - compilePrivateDicts: function CFFCompiler_compilePrivateDicts(dicts, trackers, output) { - for (var i = 0, ii = dicts.length; i < ii; ++i) { - var fontDict = dicts[i]; - var privateDict = fontDict.privateDict; - - if (!privateDict || !fontDict.hasName('Private')) { - throw new _util.FormatError('There must be a private dictionary.'); - } - - var privateDictTracker = new CFFOffsetTracker(); - var privateDictData = this.compileDict(privateDict, privateDictTracker); - var outputLength = output.length; - privateDictTracker.offset(outputLength); - - if (!privateDictData.length) { - outputLength = 0; - } - - trackers[i].setEntryLocation('Private', [privateDictData.length, outputLength], output); - output.add(privateDictData); - - if (privateDict.subrsIndex && privateDict.hasName('Subrs')) { - var subrs = this.compileIndex(privateDict.subrsIndex); - privateDictTracker.setEntryLocation('Subrs', [privateDictData.length], output); - output.add(subrs); - } - } - }, - compileDict: function CFFCompiler_compileDict(dict, offsetTracker) { - var out = []; - var order = dict.order; - - for (var i = 0; i < order.length; ++i) { - var key = order[i]; - - if (!(key in dict.values)) { - continue; - } - - var values = dict.values[key]; - var types = dict.types[key]; - - if (!Array.isArray(types)) { - types = [types]; - } - - if (!Array.isArray(values)) { - values = [values]; - } - - if (values.length === 0) { - continue; - } - - for (var j = 0, jj = types.length; j < jj; ++j) { - var type = types[j]; - var value = values[j]; - - switch (type) { - case 'num': - case 'sid': - out = out.concat(this.encodeNumber(value)); - break; - - case 'offset': - var name = dict.keyToNameMap[key]; - - if (!offsetTracker.isTracking(name)) { - offsetTracker.track(name, out.length); - } - - out = out.concat([0x1d, 0, 0, 0, 0]); - break; - - case 'array': - case 'delta': - out = out.concat(this.encodeNumber(value)); - - for (var k = 1, kk = values.length; k < kk; ++k) { - out = out.concat(this.encodeNumber(values[k])); - } - - break; - - default: - throw new _util.FormatError("Unknown data type of ".concat(type)); - } - } - - out = out.concat(dict.opcodes[key]); - } - - return out; - }, - compileStringIndex: function CFFCompiler_compileStringIndex(strings) { - var stringIndex = new CFFIndex(); - - for (var i = 0, ii = strings.length; i < ii; ++i) { - stringIndex.add((0, _util.stringToBytes)(strings[i])); - } - - return this.compileIndex(stringIndex); - }, - compileGlobalSubrIndex: function CFFCompiler_compileGlobalSubrIndex() { - var globalSubrIndex = this.cff.globalSubrIndex; - this.out.writeByteArray(this.compileIndex(globalSubrIndex)); - }, - compileCharStrings: function CFFCompiler_compileCharStrings(charStrings) { - var charStringsIndex = new CFFIndex(); - - for (var i = 0; i < charStrings.count; i++) { - var glyph = charStrings.get(i); - - if (glyph.length === 0) { - charStringsIndex.add(new Uint8Array([0x8B, 0x0E])); - continue; - } - - charStringsIndex.add(glyph); - } - - return this.compileIndex(charStringsIndex); - }, - compileCharset: function CFFCompiler_compileCharset(charset, numGlyphs, strings, isCIDFont) { - var out; - var numGlyphsLessNotDef = numGlyphs - 1; - - if (isCIDFont) { - out = new Uint8Array([2, 0, 0, numGlyphsLessNotDef >> 8 & 0xFF, numGlyphsLessNotDef & 0xFF]); - } else { - var length = 1 + numGlyphsLessNotDef * 2; - out = new Uint8Array(length); - out[0] = 0; - var charsetIndex = 0; - var numCharsets = charset.charset.length; - var warned = false; - - for (var i = 1; i < out.length; i += 2) { - var sid = 0; - - if (charsetIndex < numCharsets) { - var name = charset.charset[charsetIndex++]; - sid = strings.getSID(name); - - if (sid === -1) { - sid = 0; - - if (!warned) { - warned = true; - (0, _util.warn)("Couldn't find ".concat(name, " in CFF strings")); - } - } - } - - out[i] = sid >> 8 & 0xFF; - out[i + 1] = sid & 0xFF; - } - } - - return this.compileTypedArray(out); - }, - compileEncoding: function CFFCompiler_compileEncoding(encoding) { - return this.compileTypedArray(encoding.raw); - }, - compileFDSelect: function CFFCompiler_compileFDSelect(fdSelect) { - var format = fdSelect.format; - var out, i; - - switch (format) { - case 0: - out = new Uint8Array(1 + fdSelect.fdSelect.length); - out[0] = format; - - for (i = 0; i < fdSelect.fdSelect.length; i++) { - out[i + 1] = fdSelect.fdSelect[i]; - } - - break; - - case 3: - var start = 0; - var lastFD = fdSelect.fdSelect[0]; - var ranges = [format, 0, 0, start >> 8 & 0xFF, start & 0xFF, lastFD]; - - for (i = 1; i < fdSelect.fdSelect.length; i++) { - var currentFD = fdSelect.fdSelect[i]; - - if (currentFD !== lastFD) { - ranges.push(i >> 8 & 0xFF, i & 0xFF, currentFD); - lastFD = currentFD; - } - } - - var numRanges = (ranges.length - 3) / 3; - ranges[1] = numRanges >> 8 & 0xFF; - ranges[2] = numRanges & 0xFF; - ranges.push(i >> 8 & 0xFF, i & 0xFF); - out = new Uint8Array(ranges); - break; - } - - return this.compileTypedArray(out); - }, - compileTypedArray: function CFFCompiler_compileTypedArray(data) { - var out = []; - - for (var i = 0, ii = data.length; i < ii; ++i) { - out[i] = data[i]; - } - - return out; - }, - compileIndex: function CFFCompiler_compileIndex(index, trackers) { - trackers = trackers || []; - var objects = index.objects; - var count = objects.length; - - if (count === 0) { - return [0, 0, 0]; - } - - var data = [count >> 8 & 0xFF, count & 0xff]; - var lastOffset = 1, - i; - - for (i = 0; i < count; ++i) { - lastOffset += objects[i].length; - } - - var offsetSize; - - if (lastOffset < 0x100) { - offsetSize = 1; - } else if (lastOffset < 0x10000) { - offsetSize = 2; - } else if (lastOffset < 0x1000000) { - offsetSize = 3; - } else { - offsetSize = 4; - } - - data.push(offsetSize); - var relativeOffset = 1; - - for (i = 0; i < count + 1; i++) { - if (offsetSize === 1) { - data.push(relativeOffset & 0xFF); - } else if (offsetSize === 2) { - data.push(relativeOffset >> 8 & 0xFF, relativeOffset & 0xFF); - } else if (offsetSize === 3) { - data.push(relativeOffset >> 16 & 0xFF, relativeOffset >> 8 & 0xFF, relativeOffset & 0xFF); - } else { - data.push(relativeOffset >>> 24 & 0xFF, relativeOffset >> 16 & 0xFF, relativeOffset >> 8 & 0xFF, relativeOffset & 0xFF); - } - - if (objects[i]) { - relativeOffset += objects[i].length; - } - } - - for (i = 0; i < count; i++) { - if (trackers[i]) { - trackers[i].offset(data.length); - } - - for (var j = 0, jj = objects[i].length; j < jj; j++) { - data.push(objects[i][j]); - } - } - - return data; - } - }; - return CFFCompiler; -}(); - -exports.CFFCompiler = CFFCompiler; - -/***/ }), -/* 176 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.ExpertSubsetCharset = exports.ExpertCharset = exports.ISOAdobeCharset = void 0; -var ISOAdobeCharset = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron']; -exports.ISOAdobeCharset = ISOAdobeCharset; -var ExpertCharset = ['.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall']; -exports.ExpertCharset = ExpertCharset; -var ExpertSubsetCharset = ['.notdef', 'space', 'dollaroldstyle', 'dollarsuperior', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted', 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior']; -exports.ExpertSubsetCharset = ExpertSubsetCharset; - -/***/ }), -/* 177 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getEncoding = getEncoding; -exports.ExpertEncoding = exports.ZapfDingbatsEncoding = exports.SymbolSetEncoding = exports.MacRomanEncoding = exports.StandardEncoding = exports.WinAnsiEncoding = void 0; -var ExpertEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', '', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', 'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall']; -exports.ExpertEncoding = ExpertEncoding; -var MacExpertEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', 'centoldstyle', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', '', 'threequartersemdash', '', 'questionsmall', '', '', '', '', 'Ethsmall', '', '', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '', '', '', '', '', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hypheninferior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', 'asuperior', 'centsuperior', '', '', '', '', 'Aacutesmall', 'Agravesmall', 'Acircumflexsmall', 'Adieresissmall', 'Atildesmall', 'Aringsmall', 'Ccedillasmall', 'Eacutesmall', 'Egravesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Iacutesmall', 'Igravesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ntildesmall', 'Oacutesmall', 'Ogravesmall', 'Ocircumflexsmall', 'Odieresissmall', 'Otildesmall', 'Uacutesmall', 'Ugravesmall', 'Ucircumflexsmall', 'Udieresissmall', '', 'eightsuperior', 'fourinferior', 'threeinferior', 'sixinferior', 'eightinferior', 'seveninferior', 'Scaronsmall', '', 'centinferior', 'twoinferior', '', 'Dieresissmall', '', 'Caronsmall', 'osuperior', 'fiveinferior', '', 'commainferior', 'periodinferior', 'Yacutesmall', '', 'dollarinferior', '', '', 'Thornsmall', '', 'nineinferior', 'zeroinferior', 'Zcaronsmall', 'AEsmall', 'Oslashsmall', 'questiondownsmall', 'oneinferior', 'Lslashsmall', '', '', '', '', '', '', 'Cedillasmall', '', '', '', '', '', 'OEsmall', 'figuredash', 'hyphensuperior', '', '', '', '', 'exclamdownsmall', '', 'Ydieresissmall', '', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'ninesuperior', 'zerosuperior', '', 'esuperior', 'rsuperior', 'tsuperior', '', '', 'isuperior', 'ssuperior', 'dsuperior', '', '', '', '', '', 'lsuperior', 'Ogoneksmall', 'Brevesmall', 'Macronsmall', 'bsuperior', 'nsuperior', 'msuperior', 'commasuperior', 'periodsuperior', 'Dotaccentsmall', 'Ringsmall', '', '', '', '']; -var MacRomanEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', 'space', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron']; -exports.MacRomanEncoding = MacRomanEncoding; -var StandardEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl', 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla', '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '', '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae', '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls', '', '', '', '']; -exports.StandardEncoding = StandardEncoding; -var WinAnsiEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'bullet', 'Euro', 'bullet', 'quotesinglbase', 'florin', 'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl', 'circumflex', 'perthousand', 'Scaron', 'guilsinglleft', 'OE', 'bullet', 'Zcaron', 'bullet', 'bullet', 'quoteleft', 'quoteright', 'quotedblleft', 'quotedblright', 'bullet', 'endash', 'emdash', 'tilde', 'trademark', 'scaron', 'guilsinglright', 'oe', 'bullet', 'zcaron', 'Ydieresis', 'space', 'exclamdown', 'cent', 'sterling', 'currency', 'yen', 'brokenbar', 'section', 'dieresis', 'copyright', 'ordfeminine', 'guillemotleft', 'logicalnot', 'hyphen', 'registered', 'macron', 'degree', 'plusminus', 'twosuperior', 'threesuperior', 'acute', 'mu', 'paragraph', 'periodcentered', 'cedilla', 'onesuperior', 'ordmasculine', 'guillemotright', 'onequarter', 'onehalf', 'threequarters', 'questiondown', 'Agrave', 'Aacute', 'Acircumflex', 'Atilde', 'Adieresis', 'Aring', 'AE', 'Ccedilla', 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis', 'Igrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Eth', 'Ntilde', 'Ograve', 'Oacute', 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply', 'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex', 'Udieresis', 'Yacute', 'Thorn', 'germandbls', 'agrave', 'aacute', 'acircumflex', 'atilde', 'adieresis', 'aring', 'ae', 'ccedilla', 'egrave', 'eacute', 'ecircumflex', 'edieresis', 'igrave', 'iacute', 'icircumflex', 'idieresis', 'eth', 'ntilde', 'ograve', 'oacute', 'ocircumflex', 'otilde', 'odieresis', 'divide', 'oslash', 'ugrave', 'uacute', 'ucircumflex', 'udieresis', 'yacute', 'thorn', 'ydieresis']; -exports.WinAnsiEncoding = WinAnsiEncoding; -var SymbolSetEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'universal', 'numbersign', 'existential', 'percent', 'ampersand', 'suchthat', 'parenleft', 'parenright', 'asteriskmath', 'plus', 'comma', 'minus', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'congruent', 'Alpha', 'Beta', 'Chi', 'Delta', 'Epsilon', 'Phi', 'Gamma', 'Eta', 'Iota', 'theta1', 'Kappa', 'Lambda', 'Mu', 'Nu', 'Omicron', 'Pi', 'Theta', 'Rho', 'Sigma', 'Tau', 'Upsilon', 'sigma1', 'Omega', 'Xi', 'Psi', 'Zeta', 'bracketleft', 'therefore', 'bracketright', 'perpendicular', 'underscore', 'radicalex', 'alpha', 'beta', 'chi', 'delta', 'epsilon', 'phi', 'gamma', 'eta', 'iota', 'phi1', 'kappa', 'lambda', 'mu', 'nu', 'omicron', 'pi', 'theta', 'rho', 'sigma', 'tau', 'upsilon', 'omega1', 'omega', 'xi', 'psi', 'zeta', 'braceleft', 'bar', 'braceright', 'similar', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'Euro', 'Upsilon1', 'minute', 'lessequal', 'fraction', 'infinity', 'florin', 'club', 'diamond', 'heart', 'spade', 'arrowboth', 'arrowleft', 'arrowup', 'arrowright', 'arrowdown', 'degree', 'plusminus', 'second', 'greaterequal', 'multiply', 'proportional', 'partialdiff', 'bullet', 'divide', 'notequal', 'equivalence', 'approxequal', 'ellipsis', 'arrowvertex', 'arrowhorizex', 'carriagereturn', 'aleph', 'Ifraktur', 'Rfraktur', 'weierstrass', 'circlemultiply', 'circleplus', 'emptyset', 'intersection', 'union', 'propersuperset', 'reflexsuperset', 'notsubset', 'propersubset', 'reflexsubset', 'element', 'notelement', 'angle', 'gradient', 'registerserif', 'copyrightserif', 'trademarkserif', 'product', 'radical', 'dotmath', 'logicalnot', 'logicaland', 'logicalor', 'arrowdblboth', 'arrowdblleft', 'arrowdblup', 'arrowdblright', 'arrowdbldown', 'lozenge', 'angleleft', 'registersans', 'copyrightsans', 'trademarksans', 'summation', 'parenlefttp', 'parenleftex', 'parenleftbt', 'bracketlefttp', 'bracketleftex', 'bracketleftbt', 'bracelefttp', 'braceleftmid', 'braceleftbt', 'braceex', '', 'angleright', 'integral', 'integraltp', 'integralex', 'integralbt', 'parenrighttp', 'parenrightex', 'parenrightbt', 'bracketrighttp', 'bracketrightex', 'bracketrightbt', 'bracerighttp', 'bracerightmid', 'bracerightbt', '']; -exports.SymbolSetEncoding = SymbolSetEncoding; -var ZapfDingbatsEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'a1', 'a2', 'a202', 'a3', 'a4', 'a5', 'a119', 'a118', 'a117', 'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a105', 'a17', 'a18', 'a19', 'a20', 'a21', 'a22', 'a23', 'a24', 'a25', 'a26', 'a27', 'a28', 'a6', 'a7', 'a8', 'a9', 'a10', 'a29', 'a30', 'a31', 'a32', 'a33', 'a34', 'a35', 'a36', 'a37', 'a38', 'a39', 'a40', 'a41', 'a42', 'a43', 'a44', 'a45', 'a46', 'a47', 'a48', 'a49', 'a50', 'a51', 'a52', 'a53', 'a54', 'a55', 'a56', 'a57', 'a58', 'a59', 'a60', 'a61', 'a62', 'a63', 'a64', 'a65', 'a66', 'a67', 'a68', 'a69', 'a70', 'a71', 'a72', 'a73', 'a74', 'a203', 'a75', 'a204', 'a76', 'a77', 'a78', 'a79', 'a81', 'a82', 'a83', 'a84', 'a97', 'a98', 'a99', 'a100', '', 'a89', 'a90', 'a93', 'a94', 'a91', 'a92', 'a205', 'a85', 'a206', 'a86', 'a87', 'a88', 'a95', 'a96', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'a101', 'a102', 'a103', 'a104', 'a106', 'a107', 'a108', 'a112', 'a111', 'a110', 'a109', 'a120', 'a121', 'a122', 'a123', 'a124', 'a125', 'a126', 'a127', 'a128', 'a129', 'a130', 'a131', 'a132', 'a133', 'a134', 'a135', 'a136', 'a137', 'a138', 'a139', 'a140', 'a141', 'a142', 'a143', 'a144', 'a145', 'a146', 'a147', 'a148', 'a149', 'a150', 'a151', 'a152', 'a153', 'a154', 'a155', 'a156', 'a157', 'a158', 'a159', 'a160', 'a161', 'a163', 'a164', 'a196', 'a165', 'a192', 'a166', 'a167', 'a168', 'a169', 'a170', 'a171', 'a172', 'a173', 'a162', 'a174', 'a175', 'a176', 'a177', 'a178', 'a179', 'a193', 'a180', 'a199', 'a181', 'a200', 'a182', '', 'a201', 'a183', 'a184', 'a197', 'a185', 'a194', 'a198', 'a186', 'a195', 'a187', 'a188', 'a189', 'a190', 'a191', '']; -exports.ZapfDingbatsEncoding = ZapfDingbatsEncoding; - -function getEncoding(encodingName) { - switch (encodingName) { - case 'WinAnsiEncoding': - return WinAnsiEncoding; - - case 'StandardEncoding': - return StandardEncoding; - - case 'MacRomanEncoding': - return MacRomanEncoding; - - case 'SymbolSetEncoding': - return SymbolSetEncoding; - - case 'ZapfDingbatsEncoding': - return ZapfDingbatsEncoding; - - case 'ExpertEncoding': - return ExpertEncoding; - - case 'MacExpertEncoding': - return MacExpertEncoding; - - default: - return null; - } +function normalizeFontName(name) { + return name.replace(/[,_]/g, "-").replace(/\s/g, ""); } /***/ }), -/* 178 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 164 */ +/***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => { -var getLookupTableFactory = __w_pdfjs_require__(154).getLookupTableFactory; -var getGlyphsUnicode = getLookupTableFactory(function (t) { - t['A'] = 0x0041; - t['AE'] = 0x00C6; - t['AEacute'] = 0x01FC; - t['AEmacron'] = 0x01E2; - t['AEsmall'] = 0xF7E6; - t['Aacute'] = 0x00C1; - t['Aacutesmall'] = 0xF7E1; - t['Abreve'] = 0x0102; - t['Abreveacute'] = 0x1EAE; - t['Abrevecyrillic'] = 0x04D0; - t['Abrevedotbelow'] = 0x1EB6; - t['Abrevegrave'] = 0x1EB0; - t['Abrevehookabove'] = 0x1EB2; - t['Abrevetilde'] = 0x1EB4; - t['Acaron'] = 0x01CD; - t['Acircle'] = 0x24B6; - t['Acircumflex'] = 0x00C2; - t['Acircumflexacute'] = 0x1EA4; - t['Acircumflexdotbelow'] = 0x1EAC; - t['Acircumflexgrave'] = 0x1EA6; - t['Acircumflexhookabove'] = 0x1EA8; - t['Acircumflexsmall'] = 0xF7E2; - t['Acircumflextilde'] = 0x1EAA; - t['Acute'] = 0xF6C9; - t['Acutesmall'] = 0xF7B4; - t['Acyrillic'] = 0x0410; - t['Adblgrave'] = 0x0200; - t['Adieresis'] = 0x00C4; - t['Adieresiscyrillic'] = 0x04D2; - t['Adieresismacron'] = 0x01DE; - t['Adieresissmall'] = 0xF7E4; - t['Adotbelow'] = 0x1EA0; - t['Adotmacron'] = 0x01E0; - t['Agrave'] = 0x00C0; - t['Agravesmall'] = 0xF7E0; - t['Ahookabove'] = 0x1EA2; - t['Aiecyrillic'] = 0x04D4; - t['Ainvertedbreve'] = 0x0202; - t['Alpha'] = 0x0391; - t['Alphatonos'] = 0x0386; - t['Amacron'] = 0x0100; - t['Amonospace'] = 0xFF21; - t['Aogonek'] = 0x0104; - t['Aring'] = 0x00C5; - t['Aringacute'] = 0x01FA; - t['Aringbelow'] = 0x1E00; - t['Aringsmall'] = 0xF7E5; - t['Asmall'] = 0xF761; - t['Atilde'] = 0x00C3; - t['Atildesmall'] = 0xF7E3; - t['Aybarmenian'] = 0x0531; - t['B'] = 0x0042; - t['Bcircle'] = 0x24B7; - t['Bdotaccent'] = 0x1E02; - t['Bdotbelow'] = 0x1E04; - t['Becyrillic'] = 0x0411; - t['Benarmenian'] = 0x0532; - t['Beta'] = 0x0392; - t['Bhook'] = 0x0181; - t['Blinebelow'] = 0x1E06; - t['Bmonospace'] = 0xFF22; - t['Brevesmall'] = 0xF6F4; - t['Bsmall'] = 0xF762; - t['Btopbar'] = 0x0182; - t['C'] = 0x0043; - t['Caarmenian'] = 0x053E; - t['Cacute'] = 0x0106; - t['Caron'] = 0xF6CA; - t['Caronsmall'] = 0xF6F5; - t['Ccaron'] = 0x010C; - t['Ccedilla'] = 0x00C7; - t['Ccedillaacute'] = 0x1E08; - t['Ccedillasmall'] = 0xF7E7; - t['Ccircle'] = 0x24B8; - t['Ccircumflex'] = 0x0108; - t['Cdot'] = 0x010A; - t['Cdotaccent'] = 0x010A; - t['Cedillasmall'] = 0xF7B8; - t['Chaarmenian'] = 0x0549; - t['Cheabkhasiancyrillic'] = 0x04BC; - t['Checyrillic'] = 0x0427; - t['Chedescenderabkhasiancyrillic'] = 0x04BE; - t['Chedescendercyrillic'] = 0x04B6; - t['Chedieresiscyrillic'] = 0x04F4; - t['Cheharmenian'] = 0x0543; - t['Chekhakassiancyrillic'] = 0x04CB; - t['Cheverticalstrokecyrillic'] = 0x04B8; - t['Chi'] = 0x03A7; - t['Chook'] = 0x0187; - t['Circumflexsmall'] = 0xF6F6; - t['Cmonospace'] = 0xFF23; - t['Coarmenian'] = 0x0551; - t['Csmall'] = 0xF763; - t['D'] = 0x0044; - t['DZ'] = 0x01F1; - t['DZcaron'] = 0x01C4; - t['Daarmenian'] = 0x0534; - t['Dafrican'] = 0x0189; - t['Dcaron'] = 0x010E; - t['Dcedilla'] = 0x1E10; - t['Dcircle'] = 0x24B9; - t['Dcircumflexbelow'] = 0x1E12; - t['Dcroat'] = 0x0110; - t['Ddotaccent'] = 0x1E0A; - t['Ddotbelow'] = 0x1E0C; - t['Decyrillic'] = 0x0414; - t['Deicoptic'] = 0x03EE; - t['Delta'] = 0x2206; - t['Deltagreek'] = 0x0394; - t['Dhook'] = 0x018A; - t['Dieresis'] = 0xF6CB; - t['DieresisAcute'] = 0xF6CC; - t['DieresisGrave'] = 0xF6CD; - t['Dieresissmall'] = 0xF7A8; - t['Digammagreek'] = 0x03DC; - t['Djecyrillic'] = 0x0402; - t['Dlinebelow'] = 0x1E0E; - t['Dmonospace'] = 0xFF24; - t['Dotaccentsmall'] = 0xF6F7; - t['Dslash'] = 0x0110; - t['Dsmall'] = 0xF764; - t['Dtopbar'] = 0x018B; - t['Dz'] = 0x01F2; - t['Dzcaron'] = 0x01C5; - t['Dzeabkhasiancyrillic'] = 0x04E0; - t['Dzecyrillic'] = 0x0405; - t['Dzhecyrillic'] = 0x040F; - t['E'] = 0x0045; - t['Eacute'] = 0x00C9; - t['Eacutesmall'] = 0xF7E9; - t['Ebreve'] = 0x0114; - t['Ecaron'] = 0x011A; - t['Ecedillabreve'] = 0x1E1C; - t['Echarmenian'] = 0x0535; - t['Ecircle'] = 0x24BA; - t['Ecircumflex'] = 0x00CA; - t['Ecircumflexacute'] = 0x1EBE; - t['Ecircumflexbelow'] = 0x1E18; - t['Ecircumflexdotbelow'] = 0x1EC6; - t['Ecircumflexgrave'] = 0x1EC0; - t['Ecircumflexhookabove'] = 0x1EC2; - t['Ecircumflexsmall'] = 0xF7EA; - t['Ecircumflextilde'] = 0x1EC4; - t['Ecyrillic'] = 0x0404; - t['Edblgrave'] = 0x0204; - t['Edieresis'] = 0x00CB; - t['Edieresissmall'] = 0xF7EB; - t['Edot'] = 0x0116; - t['Edotaccent'] = 0x0116; - t['Edotbelow'] = 0x1EB8; - t['Efcyrillic'] = 0x0424; - t['Egrave'] = 0x00C8; - t['Egravesmall'] = 0xF7E8; - t['Eharmenian'] = 0x0537; - t['Ehookabove'] = 0x1EBA; - t['Eightroman'] = 0x2167; - t['Einvertedbreve'] = 0x0206; - t['Eiotifiedcyrillic'] = 0x0464; - t['Elcyrillic'] = 0x041B; - t['Elevenroman'] = 0x216A; - t['Emacron'] = 0x0112; - t['Emacronacute'] = 0x1E16; - t['Emacrongrave'] = 0x1E14; - t['Emcyrillic'] = 0x041C; - t['Emonospace'] = 0xFF25; - t['Encyrillic'] = 0x041D; - t['Endescendercyrillic'] = 0x04A2; - t['Eng'] = 0x014A; - t['Enghecyrillic'] = 0x04A4; - t['Enhookcyrillic'] = 0x04C7; - t['Eogonek'] = 0x0118; - t['Eopen'] = 0x0190; - t['Epsilon'] = 0x0395; - t['Epsilontonos'] = 0x0388; - t['Ercyrillic'] = 0x0420; - t['Ereversed'] = 0x018E; - t['Ereversedcyrillic'] = 0x042D; - t['Escyrillic'] = 0x0421; - t['Esdescendercyrillic'] = 0x04AA; - t['Esh'] = 0x01A9; - t['Esmall'] = 0xF765; - t['Eta'] = 0x0397; - t['Etarmenian'] = 0x0538; - t['Etatonos'] = 0x0389; - t['Eth'] = 0x00D0; - t['Ethsmall'] = 0xF7F0; - t['Etilde'] = 0x1EBC; - t['Etildebelow'] = 0x1E1A; - t['Euro'] = 0x20AC; - t['Ezh'] = 0x01B7; - t['Ezhcaron'] = 0x01EE; - t['Ezhreversed'] = 0x01B8; - t['F'] = 0x0046; - t['Fcircle'] = 0x24BB; - t['Fdotaccent'] = 0x1E1E; - t['Feharmenian'] = 0x0556; - t['Feicoptic'] = 0x03E4; - t['Fhook'] = 0x0191; - t['Fitacyrillic'] = 0x0472; - t['Fiveroman'] = 0x2164; - t['Fmonospace'] = 0xFF26; - t['Fourroman'] = 0x2163; - t['Fsmall'] = 0xF766; - t['G'] = 0x0047; - t['GBsquare'] = 0x3387; - t['Gacute'] = 0x01F4; - t['Gamma'] = 0x0393; - t['Gammaafrican'] = 0x0194; - t['Gangiacoptic'] = 0x03EA; - t['Gbreve'] = 0x011E; - t['Gcaron'] = 0x01E6; - t['Gcedilla'] = 0x0122; - t['Gcircle'] = 0x24BC; - t['Gcircumflex'] = 0x011C; - t['Gcommaaccent'] = 0x0122; - t['Gdot'] = 0x0120; - t['Gdotaccent'] = 0x0120; - t['Gecyrillic'] = 0x0413; - t['Ghadarmenian'] = 0x0542; - t['Ghemiddlehookcyrillic'] = 0x0494; - t['Ghestrokecyrillic'] = 0x0492; - t['Gheupturncyrillic'] = 0x0490; - t['Ghook'] = 0x0193; - t['Gimarmenian'] = 0x0533; - t['Gjecyrillic'] = 0x0403; - t['Gmacron'] = 0x1E20; - t['Gmonospace'] = 0xFF27; - t['Grave'] = 0xF6CE; - t['Gravesmall'] = 0xF760; - t['Gsmall'] = 0xF767; - t['Gsmallhook'] = 0x029B; - t['Gstroke'] = 0x01E4; - t['H'] = 0x0048; - t['H18533'] = 0x25CF; - t['H18543'] = 0x25AA; - t['H18551'] = 0x25AB; - t['H22073'] = 0x25A1; - t['HPsquare'] = 0x33CB; - t['Haabkhasiancyrillic'] = 0x04A8; - t['Hadescendercyrillic'] = 0x04B2; - t['Hardsigncyrillic'] = 0x042A; - t['Hbar'] = 0x0126; - t['Hbrevebelow'] = 0x1E2A; - t['Hcedilla'] = 0x1E28; - t['Hcircle'] = 0x24BD; - t['Hcircumflex'] = 0x0124; - t['Hdieresis'] = 0x1E26; - t['Hdotaccent'] = 0x1E22; - t['Hdotbelow'] = 0x1E24; - t['Hmonospace'] = 0xFF28; - t['Hoarmenian'] = 0x0540; - t['Horicoptic'] = 0x03E8; - t['Hsmall'] = 0xF768; - t['Hungarumlaut'] = 0xF6CF; - t['Hungarumlautsmall'] = 0xF6F8; - t['Hzsquare'] = 0x3390; - t['I'] = 0x0049; - t['IAcyrillic'] = 0x042F; - t['IJ'] = 0x0132; - t['IUcyrillic'] = 0x042E; - t['Iacute'] = 0x00CD; - t['Iacutesmall'] = 0xF7ED; - t['Ibreve'] = 0x012C; - t['Icaron'] = 0x01CF; - t['Icircle'] = 0x24BE; - t['Icircumflex'] = 0x00CE; - t['Icircumflexsmall'] = 0xF7EE; - t['Icyrillic'] = 0x0406; - t['Idblgrave'] = 0x0208; - t['Idieresis'] = 0x00CF; - t['Idieresisacute'] = 0x1E2E; - t['Idieresiscyrillic'] = 0x04E4; - t['Idieresissmall'] = 0xF7EF; - t['Idot'] = 0x0130; - t['Idotaccent'] = 0x0130; - t['Idotbelow'] = 0x1ECA; - t['Iebrevecyrillic'] = 0x04D6; - t['Iecyrillic'] = 0x0415; - t['Ifraktur'] = 0x2111; - t['Igrave'] = 0x00CC; - t['Igravesmall'] = 0xF7EC; - t['Ihookabove'] = 0x1EC8; - t['Iicyrillic'] = 0x0418; - t['Iinvertedbreve'] = 0x020A; - t['Iishortcyrillic'] = 0x0419; - t['Imacron'] = 0x012A; - t['Imacroncyrillic'] = 0x04E2; - t['Imonospace'] = 0xFF29; - t['Iniarmenian'] = 0x053B; - t['Iocyrillic'] = 0x0401; - t['Iogonek'] = 0x012E; - t['Iota'] = 0x0399; - t['Iotaafrican'] = 0x0196; - t['Iotadieresis'] = 0x03AA; - t['Iotatonos'] = 0x038A; - t['Ismall'] = 0xF769; - t['Istroke'] = 0x0197; - t['Itilde'] = 0x0128; - t['Itildebelow'] = 0x1E2C; - t['Izhitsacyrillic'] = 0x0474; - t['Izhitsadblgravecyrillic'] = 0x0476; - t['J'] = 0x004A; - t['Jaarmenian'] = 0x0541; - t['Jcircle'] = 0x24BF; - t['Jcircumflex'] = 0x0134; - t['Jecyrillic'] = 0x0408; - t['Jheharmenian'] = 0x054B; - t['Jmonospace'] = 0xFF2A; - t['Jsmall'] = 0xF76A; - t['K'] = 0x004B; - t['KBsquare'] = 0x3385; - t['KKsquare'] = 0x33CD; - t['Kabashkircyrillic'] = 0x04A0; - t['Kacute'] = 0x1E30; - t['Kacyrillic'] = 0x041A; - t['Kadescendercyrillic'] = 0x049A; - t['Kahookcyrillic'] = 0x04C3; - t['Kappa'] = 0x039A; - t['Kastrokecyrillic'] = 0x049E; - t['Kaverticalstrokecyrillic'] = 0x049C; - t['Kcaron'] = 0x01E8; - t['Kcedilla'] = 0x0136; - t['Kcircle'] = 0x24C0; - t['Kcommaaccent'] = 0x0136; - t['Kdotbelow'] = 0x1E32; - t['Keharmenian'] = 0x0554; - t['Kenarmenian'] = 0x053F; - t['Khacyrillic'] = 0x0425; - t['Kheicoptic'] = 0x03E6; - t['Khook'] = 0x0198; - t['Kjecyrillic'] = 0x040C; - t['Klinebelow'] = 0x1E34; - t['Kmonospace'] = 0xFF2B; - t['Koppacyrillic'] = 0x0480; - t['Koppagreek'] = 0x03DE; - t['Ksicyrillic'] = 0x046E; - t['Ksmall'] = 0xF76B; - t['L'] = 0x004C; - t['LJ'] = 0x01C7; - t['LL'] = 0xF6BF; - t['Lacute'] = 0x0139; - t['Lambda'] = 0x039B; - t['Lcaron'] = 0x013D; - t['Lcedilla'] = 0x013B; - t['Lcircle'] = 0x24C1; - t['Lcircumflexbelow'] = 0x1E3C; - t['Lcommaaccent'] = 0x013B; - t['Ldot'] = 0x013F; - t['Ldotaccent'] = 0x013F; - t['Ldotbelow'] = 0x1E36; - t['Ldotbelowmacron'] = 0x1E38; - t['Liwnarmenian'] = 0x053C; - t['Lj'] = 0x01C8; - t['Ljecyrillic'] = 0x0409; - t['Llinebelow'] = 0x1E3A; - t['Lmonospace'] = 0xFF2C; - t['Lslash'] = 0x0141; - t['Lslashsmall'] = 0xF6F9; - t['Lsmall'] = 0xF76C; - t['M'] = 0x004D; - t['MBsquare'] = 0x3386; - t['Macron'] = 0xF6D0; - t['Macronsmall'] = 0xF7AF; - t['Macute'] = 0x1E3E; - t['Mcircle'] = 0x24C2; - t['Mdotaccent'] = 0x1E40; - t['Mdotbelow'] = 0x1E42; - t['Menarmenian'] = 0x0544; - t['Mmonospace'] = 0xFF2D; - t['Msmall'] = 0xF76D; - t['Mturned'] = 0x019C; - t['Mu'] = 0x039C; - t['N'] = 0x004E; - t['NJ'] = 0x01CA; - t['Nacute'] = 0x0143; - t['Ncaron'] = 0x0147; - t['Ncedilla'] = 0x0145; - t['Ncircle'] = 0x24C3; - t['Ncircumflexbelow'] = 0x1E4A; - t['Ncommaaccent'] = 0x0145; - t['Ndotaccent'] = 0x1E44; - t['Ndotbelow'] = 0x1E46; - t['Nhookleft'] = 0x019D; - t['Nineroman'] = 0x2168; - t['Nj'] = 0x01CB; - t['Njecyrillic'] = 0x040A; - t['Nlinebelow'] = 0x1E48; - t['Nmonospace'] = 0xFF2E; - t['Nowarmenian'] = 0x0546; - t['Nsmall'] = 0xF76E; - t['Ntilde'] = 0x00D1; - t['Ntildesmall'] = 0xF7F1; - t['Nu'] = 0x039D; - t['O'] = 0x004F; - t['OE'] = 0x0152; - t['OEsmall'] = 0xF6FA; - t['Oacute'] = 0x00D3; - t['Oacutesmall'] = 0xF7F3; - t['Obarredcyrillic'] = 0x04E8; - t['Obarreddieresiscyrillic'] = 0x04EA; - t['Obreve'] = 0x014E; - t['Ocaron'] = 0x01D1; - t['Ocenteredtilde'] = 0x019F; - t['Ocircle'] = 0x24C4; - t['Ocircumflex'] = 0x00D4; - t['Ocircumflexacute'] = 0x1ED0; - t['Ocircumflexdotbelow'] = 0x1ED8; - t['Ocircumflexgrave'] = 0x1ED2; - t['Ocircumflexhookabove'] = 0x1ED4; - t['Ocircumflexsmall'] = 0xF7F4; - t['Ocircumflextilde'] = 0x1ED6; - t['Ocyrillic'] = 0x041E; - t['Odblacute'] = 0x0150; - t['Odblgrave'] = 0x020C; - t['Odieresis'] = 0x00D6; - t['Odieresiscyrillic'] = 0x04E6; - t['Odieresissmall'] = 0xF7F6; - t['Odotbelow'] = 0x1ECC; - t['Ogoneksmall'] = 0xF6FB; - t['Ograve'] = 0x00D2; - t['Ogravesmall'] = 0xF7F2; - t['Oharmenian'] = 0x0555; - t['Ohm'] = 0x2126; - t['Ohookabove'] = 0x1ECE; - t['Ohorn'] = 0x01A0; - t['Ohornacute'] = 0x1EDA; - t['Ohorndotbelow'] = 0x1EE2; - t['Ohorngrave'] = 0x1EDC; - t['Ohornhookabove'] = 0x1EDE; - t['Ohorntilde'] = 0x1EE0; - t['Ohungarumlaut'] = 0x0150; - t['Oi'] = 0x01A2; - t['Oinvertedbreve'] = 0x020E; - t['Omacron'] = 0x014C; - t['Omacronacute'] = 0x1E52; - t['Omacrongrave'] = 0x1E50; - t['Omega'] = 0x2126; - t['Omegacyrillic'] = 0x0460; - t['Omegagreek'] = 0x03A9; - t['Omegaroundcyrillic'] = 0x047A; - t['Omegatitlocyrillic'] = 0x047C; - t['Omegatonos'] = 0x038F; - t['Omicron'] = 0x039F; - t['Omicrontonos'] = 0x038C; - t['Omonospace'] = 0xFF2F; - t['Oneroman'] = 0x2160; - t['Oogonek'] = 0x01EA; - t['Oogonekmacron'] = 0x01EC; - t['Oopen'] = 0x0186; - t['Oslash'] = 0x00D8; - t['Oslashacute'] = 0x01FE; - t['Oslashsmall'] = 0xF7F8; - t['Osmall'] = 0xF76F; - t['Ostrokeacute'] = 0x01FE; - t['Otcyrillic'] = 0x047E; - t['Otilde'] = 0x00D5; - t['Otildeacute'] = 0x1E4C; - t['Otildedieresis'] = 0x1E4E; - t['Otildesmall'] = 0xF7F5; - t['P'] = 0x0050; - t['Pacute'] = 0x1E54; - t['Pcircle'] = 0x24C5; - t['Pdotaccent'] = 0x1E56; - t['Pecyrillic'] = 0x041F; - t['Peharmenian'] = 0x054A; - t['Pemiddlehookcyrillic'] = 0x04A6; - t['Phi'] = 0x03A6; - t['Phook'] = 0x01A4; - t['Pi'] = 0x03A0; - t['Piwrarmenian'] = 0x0553; - t['Pmonospace'] = 0xFF30; - t['Psi'] = 0x03A8; - t['Psicyrillic'] = 0x0470; - t['Psmall'] = 0xF770; - t['Q'] = 0x0051; - t['Qcircle'] = 0x24C6; - t['Qmonospace'] = 0xFF31; - t['Qsmall'] = 0xF771; - t['R'] = 0x0052; - t['Raarmenian'] = 0x054C; - t['Racute'] = 0x0154; - t['Rcaron'] = 0x0158; - t['Rcedilla'] = 0x0156; - t['Rcircle'] = 0x24C7; - t['Rcommaaccent'] = 0x0156; - t['Rdblgrave'] = 0x0210; - t['Rdotaccent'] = 0x1E58; - t['Rdotbelow'] = 0x1E5A; - t['Rdotbelowmacron'] = 0x1E5C; - t['Reharmenian'] = 0x0550; - t['Rfraktur'] = 0x211C; - t['Rho'] = 0x03A1; - t['Ringsmall'] = 0xF6FC; - t['Rinvertedbreve'] = 0x0212; - t['Rlinebelow'] = 0x1E5E; - t['Rmonospace'] = 0xFF32; - t['Rsmall'] = 0xF772; - t['Rsmallinverted'] = 0x0281; - t['Rsmallinvertedsuperior'] = 0x02B6; - t['S'] = 0x0053; - t['SF010000'] = 0x250C; - t['SF020000'] = 0x2514; - t['SF030000'] = 0x2510; - t['SF040000'] = 0x2518; - t['SF050000'] = 0x253C; - t['SF060000'] = 0x252C; - t['SF070000'] = 0x2534; - t['SF080000'] = 0x251C; - t['SF090000'] = 0x2524; - t['SF100000'] = 0x2500; - t['SF110000'] = 0x2502; - t['SF190000'] = 0x2561; - t['SF200000'] = 0x2562; - t['SF210000'] = 0x2556; - t['SF220000'] = 0x2555; - t['SF230000'] = 0x2563; - t['SF240000'] = 0x2551; - t['SF250000'] = 0x2557; - t['SF260000'] = 0x255D; - t['SF270000'] = 0x255C; - t['SF280000'] = 0x255B; - t['SF360000'] = 0x255E; - t['SF370000'] = 0x255F; - t['SF380000'] = 0x255A; - t['SF390000'] = 0x2554; - t['SF400000'] = 0x2569; - t['SF410000'] = 0x2566; - t['SF420000'] = 0x2560; - t['SF430000'] = 0x2550; - t['SF440000'] = 0x256C; - t['SF450000'] = 0x2567; - t['SF460000'] = 0x2568; - t['SF470000'] = 0x2564; - t['SF480000'] = 0x2565; - t['SF490000'] = 0x2559; - t['SF500000'] = 0x2558; - t['SF510000'] = 0x2552; - t['SF520000'] = 0x2553; - t['SF530000'] = 0x256B; - t['SF540000'] = 0x256A; - t['Sacute'] = 0x015A; - t['Sacutedotaccent'] = 0x1E64; - t['Sampigreek'] = 0x03E0; - t['Scaron'] = 0x0160; - t['Scarondotaccent'] = 0x1E66; - t['Scaronsmall'] = 0xF6FD; - t['Scedilla'] = 0x015E; - t['Schwa'] = 0x018F; - t['Schwacyrillic'] = 0x04D8; - t['Schwadieresiscyrillic'] = 0x04DA; - t['Scircle'] = 0x24C8; - t['Scircumflex'] = 0x015C; - t['Scommaaccent'] = 0x0218; - t['Sdotaccent'] = 0x1E60; - t['Sdotbelow'] = 0x1E62; - t['Sdotbelowdotaccent'] = 0x1E68; - t['Seharmenian'] = 0x054D; - t['Sevenroman'] = 0x2166; - t['Shaarmenian'] = 0x0547; - t['Shacyrillic'] = 0x0428; - t['Shchacyrillic'] = 0x0429; - t['Sheicoptic'] = 0x03E2; - t['Shhacyrillic'] = 0x04BA; - t['Shimacoptic'] = 0x03EC; - t['Sigma'] = 0x03A3; - t['Sixroman'] = 0x2165; - t['Smonospace'] = 0xFF33; - t['Softsigncyrillic'] = 0x042C; - t['Ssmall'] = 0xF773; - t['Stigmagreek'] = 0x03DA; - t['T'] = 0x0054; - t['Tau'] = 0x03A4; - t['Tbar'] = 0x0166; - t['Tcaron'] = 0x0164; - t['Tcedilla'] = 0x0162; - t['Tcircle'] = 0x24C9; - t['Tcircumflexbelow'] = 0x1E70; - t['Tcommaaccent'] = 0x0162; - t['Tdotaccent'] = 0x1E6A; - t['Tdotbelow'] = 0x1E6C; - t['Tecyrillic'] = 0x0422; - t['Tedescendercyrillic'] = 0x04AC; - t['Tenroman'] = 0x2169; - t['Tetsecyrillic'] = 0x04B4; - t['Theta'] = 0x0398; - t['Thook'] = 0x01AC; - t['Thorn'] = 0x00DE; - t['Thornsmall'] = 0xF7FE; - t['Threeroman'] = 0x2162; - t['Tildesmall'] = 0xF6FE; - t['Tiwnarmenian'] = 0x054F; - t['Tlinebelow'] = 0x1E6E; - t['Tmonospace'] = 0xFF34; - t['Toarmenian'] = 0x0539; - t['Tonefive'] = 0x01BC; - t['Tonesix'] = 0x0184; - t['Tonetwo'] = 0x01A7; - t['Tretroflexhook'] = 0x01AE; - t['Tsecyrillic'] = 0x0426; - t['Tshecyrillic'] = 0x040B; - t['Tsmall'] = 0xF774; - t['Twelveroman'] = 0x216B; - t['Tworoman'] = 0x2161; - t['U'] = 0x0055; - t['Uacute'] = 0x00DA; - t['Uacutesmall'] = 0xF7FA; - t['Ubreve'] = 0x016C; - t['Ucaron'] = 0x01D3; - t['Ucircle'] = 0x24CA; - t['Ucircumflex'] = 0x00DB; - t['Ucircumflexbelow'] = 0x1E76; - t['Ucircumflexsmall'] = 0xF7FB; - t['Ucyrillic'] = 0x0423; - t['Udblacute'] = 0x0170; - t['Udblgrave'] = 0x0214; - t['Udieresis'] = 0x00DC; - t['Udieresisacute'] = 0x01D7; - t['Udieresisbelow'] = 0x1E72; - t['Udieresiscaron'] = 0x01D9; - t['Udieresiscyrillic'] = 0x04F0; - t['Udieresisgrave'] = 0x01DB; - t['Udieresismacron'] = 0x01D5; - t['Udieresissmall'] = 0xF7FC; - t['Udotbelow'] = 0x1EE4; - t['Ugrave'] = 0x00D9; - t['Ugravesmall'] = 0xF7F9; - t['Uhookabove'] = 0x1EE6; - t['Uhorn'] = 0x01AF; - t['Uhornacute'] = 0x1EE8; - t['Uhorndotbelow'] = 0x1EF0; - t['Uhorngrave'] = 0x1EEA; - t['Uhornhookabove'] = 0x1EEC; - t['Uhorntilde'] = 0x1EEE; - t['Uhungarumlaut'] = 0x0170; - t['Uhungarumlautcyrillic'] = 0x04F2; - t['Uinvertedbreve'] = 0x0216; - t['Ukcyrillic'] = 0x0478; - t['Umacron'] = 0x016A; - t['Umacroncyrillic'] = 0x04EE; - t['Umacrondieresis'] = 0x1E7A; - t['Umonospace'] = 0xFF35; - t['Uogonek'] = 0x0172; - t['Upsilon'] = 0x03A5; - t['Upsilon1'] = 0x03D2; - t['Upsilonacutehooksymbolgreek'] = 0x03D3; - t['Upsilonafrican'] = 0x01B1; - t['Upsilondieresis'] = 0x03AB; - t['Upsilondieresishooksymbolgreek'] = 0x03D4; - t['Upsilonhooksymbol'] = 0x03D2; - t['Upsilontonos'] = 0x038E; - t['Uring'] = 0x016E; - t['Ushortcyrillic'] = 0x040E; - t['Usmall'] = 0xF775; - t['Ustraightcyrillic'] = 0x04AE; - t['Ustraightstrokecyrillic'] = 0x04B0; - t['Utilde'] = 0x0168; - t['Utildeacute'] = 0x1E78; - t['Utildebelow'] = 0x1E74; - t['V'] = 0x0056; - t['Vcircle'] = 0x24CB; - t['Vdotbelow'] = 0x1E7E; - t['Vecyrillic'] = 0x0412; - t['Vewarmenian'] = 0x054E; - t['Vhook'] = 0x01B2; - t['Vmonospace'] = 0xFF36; - t['Voarmenian'] = 0x0548; - t['Vsmall'] = 0xF776; - t['Vtilde'] = 0x1E7C; - t['W'] = 0x0057; - t['Wacute'] = 0x1E82; - t['Wcircle'] = 0x24CC; - t['Wcircumflex'] = 0x0174; - t['Wdieresis'] = 0x1E84; - t['Wdotaccent'] = 0x1E86; - t['Wdotbelow'] = 0x1E88; - t['Wgrave'] = 0x1E80; - t['Wmonospace'] = 0xFF37; - t['Wsmall'] = 0xF777; - t['X'] = 0x0058; - t['Xcircle'] = 0x24CD; - t['Xdieresis'] = 0x1E8C; - t['Xdotaccent'] = 0x1E8A; - t['Xeharmenian'] = 0x053D; - t['Xi'] = 0x039E; - t['Xmonospace'] = 0xFF38; - t['Xsmall'] = 0xF778; - t['Y'] = 0x0059; - t['Yacute'] = 0x00DD; - t['Yacutesmall'] = 0xF7FD; - t['Yatcyrillic'] = 0x0462; - t['Ycircle'] = 0x24CE; - t['Ycircumflex'] = 0x0176; - t['Ydieresis'] = 0x0178; - t['Ydieresissmall'] = 0xF7FF; - t['Ydotaccent'] = 0x1E8E; - t['Ydotbelow'] = 0x1EF4; - t['Yericyrillic'] = 0x042B; - t['Yerudieresiscyrillic'] = 0x04F8; - t['Ygrave'] = 0x1EF2; - t['Yhook'] = 0x01B3; - t['Yhookabove'] = 0x1EF6; - t['Yiarmenian'] = 0x0545; - t['Yicyrillic'] = 0x0407; - t['Yiwnarmenian'] = 0x0552; - t['Ymonospace'] = 0xFF39; - t['Ysmall'] = 0xF779; - t['Ytilde'] = 0x1EF8; - t['Yusbigcyrillic'] = 0x046A; - t['Yusbigiotifiedcyrillic'] = 0x046C; - t['Yuslittlecyrillic'] = 0x0466; - t['Yuslittleiotifiedcyrillic'] = 0x0468; - t['Z'] = 0x005A; - t['Zaarmenian'] = 0x0536; - t['Zacute'] = 0x0179; - t['Zcaron'] = 0x017D; - t['Zcaronsmall'] = 0xF6FF; - t['Zcircle'] = 0x24CF; - t['Zcircumflex'] = 0x1E90; - t['Zdot'] = 0x017B; - t['Zdotaccent'] = 0x017B; - t['Zdotbelow'] = 0x1E92; - t['Zecyrillic'] = 0x0417; - t['Zedescendercyrillic'] = 0x0498; - t['Zedieresiscyrillic'] = 0x04DE; - t['Zeta'] = 0x0396; - t['Zhearmenian'] = 0x053A; - t['Zhebrevecyrillic'] = 0x04C1; - t['Zhecyrillic'] = 0x0416; - t['Zhedescendercyrillic'] = 0x0496; - t['Zhedieresiscyrillic'] = 0x04DC; - t['Zlinebelow'] = 0x1E94; - t['Zmonospace'] = 0xFF3A; - t['Zsmall'] = 0xF77A; - t['Zstroke'] = 0x01B5; - t['a'] = 0x0061; - t['aabengali'] = 0x0986; - t['aacute'] = 0x00E1; - t['aadeva'] = 0x0906; - t['aagujarati'] = 0x0A86; - t['aagurmukhi'] = 0x0A06; - t['aamatragurmukhi'] = 0x0A3E; - t['aarusquare'] = 0x3303; - t['aavowelsignbengali'] = 0x09BE; - t['aavowelsigndeva'] = 0x093E; - t['aavowelsigngujarati'] = 0x0ABE; - t['abbreviationmarkarmenian'] = 0x055F; - t['abbreviationsigndeva'] = 0x0970; - t['abengali'] = 0x0985; - t['abopomofo'] = 0x311A; - t['abreve'] = 0x0103; - t['abreveacute'] = 0x1EAF; - t['abrevecyrillic'] = 0x04D1; - t['abrevedotbelow'] = 0x1EB7; - t['abrevegrave'] = 0x1EB1; - t['abrevehookabove'] = 0x1EB3; - t['abrevetilde'] = 0x1EB5; - t['acaron'] = 0x01CE; - t['acircle'] = 0x24D0; - t['acircumflex'] = 0x00E2; - t['acircumflexacute'] = 0x1EA5; - t['acircumflexdotbelow'] = 0x1EAD; - t['acircumflexgrave'] = 0x1EA7; - t['acircumflexhookabove'] = 0x1EA9; - t['acircumflextilde'] = 0x1EAB; - t['acute'] = 0x00B4; - t['acutebelowcmb'] = 0x0317; - t['acutecmb'] = 0x0301; - t['acutecomb'] = 0x0301; - t['acutedeva'] = 0x0954; - t['acutelowmod'] = 0x02CF; - t['acutetonecmb'] = 0x0341; - t['acyrillic'] = 0x0430; - t['adblgrave'] = 0x0201; - t['addakgurmukhi'] = 0x0A71; - t['adeva'] = 0x0905; - t['adieresis'] = 0x00E4; - t['adieresiscyrillic'] = 0x04D3; - t['adieresismacron'] = 0x01DF; - t['adotbelow'] = 0x1EA1; - t['adotmacron'] = 0x01E1; - t['ae'] = 0x00E6; - t['aeacute'] = 0x01FD; - t['aekorean'] = 0x3150; - t['aemacron'] = 0x01E3; - t['afii00208'] = 0x2015; - t['afii08941'] = 0x20A4; - t['afii10017'] = 0x0410; - t['afii10018'] = 0x0411; - t['afii10019'] = 0x0412; - t['afii10020'] = 0x0413; - t['afii10021'] = 0x0414; - t['afii10022'] = 0x0415; - t['afii10023'] = 0x0401; - t['afii10024'] = 0x0416; - t['afii10025'] = 0x0417; - t['afii10026'] = 0x0418; - t['afii10027'] = 0x0419; - t['afii10028'] = 0x041A; - t['afii10029'] = 0x041B; - t['afii10030'] = 0x041C; - t['afii10031'] = 0x041D; - t['afii10032'] = 0x041E; - t['afii10033'] = 0x041F; - t['afii10034'] = 0x0420; - t['afii10035'] = 0x0421; - t['afii10036'] = 0x0422; - t['afii10037'] = 0x0423; - t['afii10038'] = 0x0424; - t['afii10039'] = 0x0425; - t['afii10040'] = 0x0426; - t['afii10041'] = 0x0427; - t['afii10042'] = 0x0428; - t['afii10043'] = 0x0429; - t['afii10044'] = 0x042A; - t['afii10045'] = 0x042B; - t['afii10046'] = 0x042C; - t['afii10047'] = 0x042D; - t['afii10048'] = 0x042E; - t['afii10049'] = 0x042F; - t['afii10050'] = 0x0490; - t['afii10051'] = 0x0402; - t['afii10052'] = 0x0403; - t['afii10053'] = 0x0404; - t['afii10054'] = 0x0405; - t['afii10055'] = 0x0406; - t['afii10056'] = 0x0407; - t['afii10057'] = 0x0408; - t['afii10058'] = 0x0409; - t['afii10059'] = 0x040A; - t['afii10060'] = 0x040B; - t['afii10061'] = 0x040C; - t['afii10062'] = 0x040E; - t['afii10063'] = 0xF6C4; - t['afii10064'] = 0xF6C5; - t['afii10065'] = 0x0430; - t['afii10066'] = 0x0431; - t['afii10067'] = 0x0432; - t['afii10068'] = 0x0433; - t['afii10069'] = 0x0434; - t['afii10070'] = 0x0435; - t['afii10071'] = 0x0451; - t['afii10072'] = 0x0436; - t['afii10073'] = 0x0437; - t['afii10074'] = 0x0438; - t['afii10075'] = 0x0439; - t['afii10076'] = 0x043A; - t['afii10077'] = 0x043B; - t['afii10078'] = 0x043C; - t['afii10079'] = 0x043D; - t['afii10080'] = 0x043E; - t['afii10081'] = 0x043F; - t['afii10082'] = 0x0440; - t['afii10083'] = 0x0441; - t['afii10084'] = 0x0442; - t['afii10085'] = 0x0443; - t['afii10086'] = 0x0444; - t['afii10087'] = 0x0445; - t['afii10088'] = 0x0446; - t['afii10089'] = 0x0447; - t['afii10090'] = 0x0448; - t['afii10091'] = 0x0449; - t['afii10092'] = 0x044A; - t['afii10093'] = 0x044B; - t['afii10094'] = 0x044C; - t['afii10095'] = 0x044D; - t['afii10096'] = 0x044E; - t['afii10097'] = 0x044F; - t['afii10098'] = 0x0491; - t['afii10099'] = 0x0452; - t['afii10100'] = 0x0453; - t['afii10101'] = 0x0454; - t['afii10102'] = 0x0455; - t['afii10103'] = 0x0456; - t['afii10104'] = 0x0457; - t['afii10105'] = 0x0458; - t['afii10106'] = 0x0459; - t['afii10107'] = 0x045A; - t['afii10108'] = 0x045B; - t['afii10109'] = 0x045C; - t['afii10110'] = 0x045E; - t['afii10145'] = 0x040F; - t['afii10146'] = 0x0462; - t['afii10147'] = 0x0472; - t['afii10148'] = 0x0474; - t['afii10192'] = 0xF6C6; - t['afii10193'] = 0x045F; - t['afii10194'] = 0x0463; - t['afii10195'] = 0x0473; - t['afii10196'] = 0x0475; - t['afii10831'] = 0xF6C7; - t['afii10832'] = 0xF6C8; - t['afii10846'] = 0x04D9; - t['afii299'] = 0x200E; - t['afii300'] = 0x200F; - t['afii301'] = 0x200D; - t['afii57381'] = 0x066A; - t['afii57388'] = 0x060C; - t['afii57392'] = 0x0660; - t['afii57393'] = 0x0661; - t['afii57394'] = 0x0662; - t['afii57395'] = 0x0663; - t['afii57396'] = 0x0664; - t['afii57397'] = 0x0665; - t['afii57398'] = 0x0666; - t['afii57399'] = 0x0667; - t['afii57400'] = 0x0668; - t['afii57401'] = 0x0669; - t['afii57403'] = 0x061B; - t['afii57407'] = 0x061F; - t['afii57409'] = 0x0621; - t['afii57410'] = 0x0622; - t['afii57411'] = 0x0623; - t['afii57412'] = 0x0624; - t['afii57413'] = 0x0625; - t['afii57414'] = 0x0626; - t['afii57415'] = 0x0627; - t['afii57416'] = 0x0628; - t['afii57417'] = 0x0629; - t['afii57418'] = 0x062A; - t['afii57419'] = 0x062B; - t['afii57420'] = 0x062C; - t['afii57421'] = 0x062D; - t['afii57422'] = 0x062E; - t['afii57423'] = 0x062F; - t['afii57424'] = 0x0630; - t['afii57425'] = 0x0631; - t['afii57426'] = 0x0632; - t['afii57427'] = 0x0633; - t['afii57428'] = 0x0634; - t['afii57429'] = 0x0635; - t['afii57430'] = 0x0636; - t['afii57431'] = 0x0637; - t['afii57432'] = 0x0638; - t['afii57433'] = 0x0639; - t['afii57434'] = 0x063A; - t['afii57440'] = 0x0640; - t['afii57441'] = 0x0641; - t['afii57442'] = 0x0642; - t['afii57443'] = 0x0643; - t['afii57444'] = 0x0644; - t['afii57445'] = 0x0645; - t['afii57446'] = 0x0646; - t['afii57448'] = 0x0648; - t['afii57449'] = 0x0649; - t['afii57450'] = 0x064A; - t['afii57451'] = 0x064B; - t['afii57452'] = 0x064C; - t['afii57453'] = 0x064D; - t['afii57454'] = 0x064E; - t['afii57455'] = 0x064F; - t['afii57456'] = 0x0650; - t['afii57457'] = 0x0651; - t['afii57458'] = 0x0652; - t['afii57470'] = 0x0647; - t['afii57505'] = 0x06A4; - t['afii57506'] = 0x067E; - t['afii57507'] = 0x0686; - t['afii57508'] = 0x0698; - t['afii57509'] = 0x06AF; - t['afii57511'] = 0x0679; - t['afii57512'] = 0x0688; - t['afii57513'] = 0x0691; - t['afii57514'] = 0x06BA; - t['afii57519'] = 0x06D2; - t['afii57534'] = 0x06D5; - t['afii57636'] = 0x20AA; - t['afii57645'] = 0x05BE; - t['afii57658'] = 0x05C3; - t['afii57664'] = 0x05D0; - t['afii57665'] = 0x05D1; - t['afii57666'] = 0x05D2; - t['afii57667'] = 0x05D3; - t['afii57668'] = 0x05D4; - t['afii57669'] = 0x05D5; - t['afii57670'] = 0x05D6; - t['afii57671'] = 0x05D7; - t['afii57672'] = 0x05D8; - t['afii57673'] = 0x05D9; - t['afii57674'] = 0x05DA; - t['afii57675'] = 0x05DB; - t['afii57676'] = 0x05DC; - t['afii57677'] = 0x05DD; - t['afii57678'] = 0x05DE; - t['afii57679'] = 0x05DF; - t['afii57680'] = 0x05E0; - t['afii57681'] = 0x05E1; - t['afii57682'] = 0x05E2; - t['afii57683'] = 0x05E3; - t['afii57684'] = 0x05E4; - t['afii57685'] = 0x05E5; - t['afii57686'] = 0x05E6; - t['afii57687'] = 0x05E7; - t['afii57688'] = 0x05E8; - t['afii57689'] = 0x05E9; - t['afii57690'] = 0x05EA; - t['afii57694'] = 0xFB2A; - t['afii57695'] = 0xFB2B; - t['afii57700'] = 0xFB4B; - t['afii57705'] = 0xFB1F; - t['afii57716'] = 0x05F0; - t['afii57717'] = 0x05F1; - t['afii57718'] = 0x05F2; - t['afii57723'] = 0xFB35; - t['afii57793'] = 0x05B4; - t['afii57794'] = 0x05B5; - t['afii57795'] = 0x05B6; - t['afii57796'] = 0x05BB; - t['afii57797'] = 0x05B8; - t['afii57798'] = 0x05B7; - t['afii57799'] = 0x05B0; - t['afii57800'] = 0x05B2; - t['afii57801'] = 0x05B1; - t['afii57802'] = 0x05B3; - t['afii57803'] = 0x05C2; - t['afii57804'] = 0x05C1; - t['afii57806'] = 0x05B9; - t['afii57807'] = 0x05BC; - t['afii57839'] = 0x05BD; - t['afii57841'] = 0x05BF; - t['afii57842'] = 0x05C0; - t['afii57929'] = 0x02BC; - t['afii61248'] = 0x2105; - t['afii61289'] = 0x2113; - t['afii61352'] = 0x2116; - t['afii61573'] = 0x202C; - t['afii61574'] = 0x202D; - t['afii61575'] = 0x202E; - t['afii61664'] = 0x200C; - t['afii63167'] = 0x066D; - t['afii64937'] = 0x02BD; - t['agrave'] = 0x00E0; - t['agujarati'] = 0x0A85; - t['agurmukhi'] = 0x0A05; - t['ahiragana'] = 0x3042; - t['ahookabove'] = 0x1EA3; - t['aibengali'] = 0x0990; - t['aibopomofo'] = 0x311E; - t['aideva'] = 0x0910; - t['aiecyrillic'] = 0x04D5; - t['aigujarati'] = 0x0A90; - t['aigurmukhi'] = 0x0A10; - t['aimatragurmukhi'] = 0x0A48; - t['ainarabic'] = 0x0639; - t['ainfinalarabic'] = 0xFECA; - t['aininitialarabic'] = 0xFECB; - t['ainmedialarabic'] = 0xFECC; - t['ainvertedbreve'] = 0x0203; - t['aivowelsignbengali'] = 0x09C8; - t['aivowelsigndeva'] = 0x0948; - t['aivowelsigngujarati'] = 0x0AC8; - t['akatakana'] = 0x30A2; - t['akatakanahalfwidth'] = 0xFF71; - t['akorean'] = 0x314F; - t['alef'] = 0x05D0; - t['alefarabic'] = 0x0627; - t['alefdageshhebrew'] = 0xFB30; - t['aleffinalarabic'] = 0xFE8E; - t['alefhamzaabovearabic'] = 0x0623; - t['alefhamzaabovefinalarabic'] = 0xFE84; - t['alefhamzabelowarabic'] = 0x0625; - t['alefhamzabelowfinalarabic'] = 0xFE88; - t['alefhebrew'] = 0x05D0; - t['aleflamedhebrew'] = 0xFB4F; - t['alefmaddaabovearabic'] = 0x0622; - t['alefmaddaabovefinalarabic'] = 0xFE82; - t['alefmaksuraarabic'] = 0x0649; - t['alefmaksurafinalarabic'] = 0xFEF0; - t['alefmaksurainitialarabic'] = 0xFEF3; - t['alefmaksuramedialarabic'] = 0xFEF4; - t['alefpatahhebrew'] = 0xFB2E; - t['alefqamatshebrew'] = 0xFB2F; - t['aleph'] = 0x2135; - t['allequal'] = 0x224C; - t['alpha'] = 0x03B1; - t['alphatonos'] = 0x03AC; - t['amacron'] = 0x0101; - t['amonospace'] = 0xFF41; - t['ampersand'] = 0x0026; - t['ampersandmonospace'] = 0xFF06; - t['ampersandsmall'] = 0xF726; - t['amsquare'] = 0x33C2; - t['anbopomofo'] = 0x3122; - t['angbopomofo'] = 0x3124; - t['angbracketleft'] = 0x3008; - t['angbracketright'] = 0x3009; - t['angkhankhuthai'] = 0x0E5A; - t['angle'] = 0x2220; - t['anglebracketleft'] = 0x3008; - t['anglebracketleftvertical'] = 0xFE3F; - t['anglebracketright'] = 0x3009; - t['anglebracketrightvertical'] = 0xFE40; - t['angleleft'] = 0x2329; - t['angleright'] = 0x232A; - t['angstrom'] = 0x212B; - t['anoteleia'] = 0x0387; - t['anudattadeva'] = 0x0952; - t['anusvarabengali'] = 0x0982; - t['anusvaradeva'] = 0x0902; - t['anusvaragujarati'] = 0x0A82; - t['aogonek'] = 0x0105; - t['apaatosquare'] = 0x3300; - t['aparen'] = 0x249C; - t['apostrophearmenian'] = 0x055A; - t['apostrophemod'] = 0x02BC; - t['apple'] = 0xF8FF; - t['approaches'] = 0x2250; - t['approxequal'] = 0x2248; - t['approxequalorimage'] = 0x2252; - t['approximatelyequal'] = 0x2245; - t['araeaekorean'] = 0x318E; - t['araeakorean'] = 0x318D; - t['arc'] = 0x2312; - t['arighthalfring'] = 0x1E9A; - t['aring'] = 0x00E5; - t['aringacute'] = 0x01FB; - t['aringbelow'] = 0x1E01; - t['arrowboth'] = 0x2194; - t['arrowdashdown'] = 0x21E3; - t['arrowdashleft'] = 0x21E0; - t['arrowdashright'] = 0x21E2; - t['arrowdashup'] = 0x21E1; - t['arrowdblboth'] = 0x21D4; - t['arrowdbldown'] = 0x21D3; - t['arrowdblleft'] = 0x21D0; - t['arrowdblright'] = 0x21D2; - t['arrowdblup'] = 0x21D1; - t['arrowdown'] = 0x2193; - t['arrowdownleft'] = 0x2199; - t['arrowdownright'] = 0x2198; - t['arrowdownwhite'] = 0x21E9; - t['arrowheaddownmod'] = 0x02C5; - t['arrowheadleftmod'] = 0x02C2; - t['arrowheadrightmod'] = 0x02C3; - t['arrowheadupmod'] = 0x02C4; - t['arrowhorizex'] = 0xF8E7; - t['arrowleft'] = 0x2190; - t['arrowleftdbl'] = 0x21D0; - t['arrowleftdblstroke'] = 0x21CD; - t['arrowleftoverright'] = 0x21C6; - t['arrowleftwhite'] = 0x21E6; - t['arrowright'] = 0x2192; - t['arrowrightdblstroke'] = 0x21CF; - t['arrowrightheavy'] = 0x279E; - t['arrowrightoverleft'] = 0x21C4; - t['arrowrightwhite'] = 0x21E8; - t['arrowtableft'] = 0x21E4; - t['arrowtabright'] = 0x21E5; - t['arrowup'] = 0x2191; - t['arrowupdn'] = 0x2195; - t['arrowupdnbse'] = 0x21A8; - t['arrowupdownbase'] = 0x21A8; - t['arrowupleft'] = 0x2196; - t['arrowupleftofdown'] = 0x21C5; - t['arrowupright'] = 0x2197; - t['arrowupwhite'] = 0x21E7; - t['arrowvertex'] = 0xF8E6; - t['asciicircum'] = 0x005E; - t['asciicircummonospace'] = 0xFF3E; - t['asciitilde'] = 0x007E; - t['asciitildemonospace'] = 0xFF5E; - t['ascript'] = 0x0251; - t['ascriptturned'] = 0x0252; - t['asmallhiragana'] = 0x3041; - t['asmallkatakana'] = 0x30A1; - t['asmallkatakanahalfwidth'] = 0xFF67; - t['asterisk'] = 0x002A; - t['asteriskaltonearabic'] = 0x066D; - t['asteriskarabic'] = 0x066D; - t['asteriskmath'] = 0x2217; - t['asteriskmonospace'] = 0xFF0A; - t['asterisksmall'] = 0xFE61; - t['asterism'] = 0x2042; - t['asuperior'] = 0xF6E9; - t['asymptoticallyequal'] = 0x2243; - t['at'] = 0x0040; - t['atilde'] = 0x00E3; - t['atmonospace'] = 0xFF20; - t['atsmall'] = 0xFE6B; - t['aturned'] = 0x0250; - t['aubengali'] = 0x0994; - t['aubopomofo'] = 0x3120; - t['audeva'] = 0x0914; - t['augujarati'] = 0x0A94; - t['augurmukhi'] = 0x0A14; - t['aulengthmarkbengali'] = 0x09D7; - t['aumatragurmukhi'] = 0x0A4C; - t['auvowelsignbengali'] = 0x09CC; - t['auvowelsigndeva'] = 0x094C; - t['auvowelsigngujarati'] = 0x0ACC; - t['avagrahadeva'] = 0x093D; - t['aybarmenian'] = 0x0561; - t['ayin'] = 0x05E2; - t['ayinaltonehebrew'] = 0xFB20; - t['ayinhebrew'] = 0x05E2; - t['b'] = 0x0062; - t['babengali'] = 0x09AC; - t['backslash'] = 0x005C; - t['backslashmonospace'] = 0xFF3C; - t['badeva'] = 0x092C; - t['bagujarati'] = 0x0AAC; - t['bagurmukhi'] = 0x0A2C; - t['bahiragana'] = 0x3070; - t['bahtthai'] = 0x0E3F; - t['bakatakana'] = 0x30D0; - t['bar'] = 0x007C; - t['barmonospace'] = 0xFF5C; - t['bbopomofo'] = 0x3105; - t['bcircle'] = 0x24D1; - t['bdotaccent'] = 0x1E03; - t['bdotbelow'] = 0x1E05; - t['beamedsixteenthnotes'] = 0x266C; - t['because'] = 0x2235; - t['becyrillic'] = 0x0431; - t['beharabic'] = 0x0628; - t['behfinalarabic'] = 0xFE90; - t['behinitialarabic'] = 0xFE91; - t['behiragana'] = 0x3079; - t['behmedialarabic'] = 0xFE92; - t['behmeeminitialarabic'] = 0xFC9F; - t['behmeemisolatedarabic'] = 0xFC08; - t['behnoonfinalarabic'] = 0xFC6D; - t['bekatakana'] = 0x30D9; - t['benarmenian'] = 0x0562; - t['bet'] = 0x05D1; - t['beta'] = 0x03B2; - t['betasymbolgreek'] = 0x03D0; - t['betdagesh'] = 0xFB31; - t['betdageshhebrew'] = 0xFB31; - t['bethebrew'] = 0x05D1; - t['betrafehebrew'] = 0xFB4C; - t['bhabengali'] = 0x09AD; - t['bhadeva'] = 0x092D; - t['bhagujarati'] = 0x0AAD; - t['bhagurmukhi'] = 0x0A2D; - t['bhook'] = 0x0253; - t['bihiragana'] = 0x3073; - t['bikatakana'] = 0x30D3; - t['bilabialclick'] = 0x0298; - t['bindigurmukhi'] = 0x0A02; - t['birusquare'] = 0x3331; - t['blackcircle'] = 0x25CF; - t['blackdiamond'] = 0x25C6; - t['blackdownpointingtriangle'] = 0x25BC; - t['blackleftpointingpointer'] = 0x25C4; - t['blackleftpointingtriangle'] = 0x25C0; - t['blacklenticularbracketleft'] = 0x3010; - t['blacklenticularbracketleftvertical'] = 0xFE3B; - t['blacklenticularbracketright'] = 0x3011; - t['blacklenticularbracketrightvertical'] = 0xFE3C; - t['blacklowerlefttriangle'] = 0x25E3; - t['blacklowerrighttriangle'] = 0x25E2; - t['blackrectangle'] = 0x25AC; - t['blackrightpointingpointer'] = 0x25BA; - t['blackrightpointingtriangle'] = 0x25B6; - t['blacksmallsquare'] = 0x25AA; - t['blacksmilingface'] = 0x263B; - t['blacksquare'] = 0x25A0; - t['blackstar'] = 0x2605; - t['blackupperlefttriangle'] = 0x25E4; - t['blackupperrighttriangle'] = 0x25E5; - t['blackuppointingsmalltriangle'] = 0x25B4; - t['blackuppointingtriangle'] = 0x25B2; - t['blank'] = 0x2423; - t['blinebelow'] = 0x1E07; - t['block'] = 0x2588; - t['bmonospace'] = 0xFF42; - t['bobaimaithai'] = 0x0E1A; - t['bohiragana'] = 0x307C; - t['bokatakana'] = 0x30DC; - t['bparen'] = 0x249D; - t['bqsquare'] = 0x33C3; - t['braceex'] = 0xF8F4; - t['braceleft'] = 0x007B; - t['braceleftbt'] = 0xF8F3; - t['braceleftmid'] = 0xF8F2; - t['braceleftmonospace'] = 0xFF5B; - t['braceleftsmall'] = 0xFE5B; - t['bracelefttp'] = 0xF8F1; - t['braceleftvertical'] = 0xFE37; - t['braceright'] = 0x007D; - t['bracerightbt'] = 0xF8FE; - t['bracerightmid'] = 0xF8FD; - t['bracerightmonospace'] = 0xFF5D; - t['bracerightsmall'] = 0xFE5C; - t['bracerighttp'] = 0xF8FC; - t['bracerightvertical'] = 0xFE38; - t['bracketleft'] = 0x005B; - t['bracketleftbt'] = 0xF8F0; - t['bracketleftex'] = 0xF8EF; - t['bracketleftmonospace'] = 0xFF3B; - t['bracketlefttp'] = 0xF8EE; - t['bracketright'] = 0x005D; - t['bracketrightbt'] = 0xF8FB; - t['bracketrightex'] = 0xF8FA; - t['bracketrightmonospace'] = 0xFF3D; - t['bracketrighttp'] = 0xF8F9; - t['breve'] = 0x02D8; - t['brevebelowcmb'] = 0x032E; - t['brevecmb'] = 0x0306; - t['breveinvertedbelowcmb'] = 0x032F; - t['breveinvertedcmb'] = 0x0311; - t['breveinverteddoublecmb'] = 0x0361; - t['bridgebelowcmb'] = 0x032A; - t['bridgeinvertedbelowcmb'] = 0x033A; - t['brokenbar'] = 0x00A6; - t['bstroke'] = 0x0180; - t['bsuperior'] = 0xF6EA; - t['btopbar'] = 0x0183; - t['buhiragana'] = 0x3076; - t['bukatakana'] = 0x30D6; - t['bullet'] = 0x2022; - t['bulletinverse'] = 0x25D8; - t['bulletoperator'] = 0x2219; - t['bullseye'] = 0x25CE; - t['c'] = 0x0063; - t['caarmenian'] = 0x056E; - t['cabengali'] = 0x099A; - t['cacute'] = 0x0107; - t['cadeva'] = 0x091A; - t['cagujarati'] = 0x0A9A; - t['cagurmukhi'] = 0x0A1A; - t['calsquare'] = 0x3388; - t['candrabindubengali'] = 0x0981; - t['candrabinducmb'] = 0x0310; - t['candrabindudeva'] = 0x0901; - t['candrabindugujarati'] = 0x0A81; - t['capslock'] = 0x21EA; - t['careof'] = 0x2105; - t['caron'] = 0x02C7; - t['caronbelowcmb'] = 0x032C; - t['caroncmb'] = 0x030C; - t['carriagereturn'] = 0x21B5; - t['cbopomofo'] = 0x3118; - t['ccaron'] = 0x010D; - t['ccedilla'] = 0x00E7; - t['ccedillaacute'] = 0x1E09; - t['ccircle'] = 0x24D2; - t['ccircumflex'] = 0x0109; - t['ccurl'] = 0x0255; - t['cdot'] = 0x010B; - t['cdotaccent'] = 0x010B; - t['cdsquare'] = 0x33C5; - t['cedilla'] = 0x00B8; - t['cedillacmb'] = 0x0327; - t['cent'] = 0x00A2; - t['centigrade'] = 0x2103; - t['centinferior'] = 0xF6DF; - t['centmonospace'] = 0xFFE0; - t['centoldstyle'] = 0xF7A2; - t['centsuperior'] = 0xF6E0; - t['chaarmenian'] = 0x0579; - t['chabengali'] = 0x099B; - t['chadeva'] = 0x091B; - t['chagujarati'] = 0x0A9B; - t['chagurmukhi'] = 0x0A1B; - t['chbopomofo'] = 0x3114; - t['cheabkhasiancyrillic'] = 0x04BD; - t['checkmark'] = 0x2713; - t['checyrillic'] = 0x0447; - t['chedescenderabkhasiancyrillic'] = 0x04BF; - t['chedescendercyrillic'] = 0x04B7; - t['chedieresiscyrillic'] = 0x04F5; - t['cheharmenian'] = 0x0573; - t['chekhakassiancyrillic'] = 0x04CC; - t['cheverticalstrokecyrillic'] = 0x04B9; - t['chi'] = 0x03C7; - t['chieuchacirclekorean'] = 0x3277; - t['chieuchaparenkorean'] = 0x3217; - t['chieuchcirclekorean'] = 0x3269; - t['chieuchkorean'] = 0x314A; - t['chieuchparenkorean'] = 0x3209; - t['chochangthai'] = 0x0E0A; - t['chochanthai'] = 0x0E08; - t['chochingthai'] = 0x0E09; - t['chochoethai'] = 0x0E0C; - t['chook'] = 0x0188; - t['cieucacirclekorean'] = 0x3276; - t['cieucaparenkorean'] = 0x3216; - t['cieuccirclekorean'] = 0x3268; - t['cieuckorean'] = 0x3148; - t['cieucparenkorean'] = 0x3208; - t['cieucuparenkorean'] = 0x321C; - t['circle'] = 0x25CB; - t['circlecopyrt'] = 0x00A9; - t['circlemultiply'] = 0x2297; - t['circleot'] = 0x2299; - t['circleplus'] = 0x2295; - t['circlepostalmark'] = 0x3036; - t['circlewithlefthalfblack'] = 0x25D0; - t['circlewithrighthalfblack'] = 0x25D1; - t['circumflex'] = 0x02C6; - t['circumflexbelowcmb'] = 0x032D; - t['circumflexcmb'] = 0x0302; - t['clear'] = 0x2327; - t['clickalveolar'] = 0x01C2; - t['clickdental'] = 0x01C0; - t['clicklateral'] = 0x01C1; - t['clickretroflex'] = 0x01C3; - t['club'] = 0x2663; - t['clubsuitblack'] = 0x2663; - t['clubsuitwhite'] = 0x2667; - t['cmcubedsquare'] = 0x33A4; - t['cmonospace'] = 0xFF43; - t['cmsquaredsquare'] = 0x33A0; - t['coarmenian'] = 0x0581; - t['colon'] = 0x003A; - t['colonmonetary'] = 0x20A1; - t['colonmonospace'] = 0xFF1A; - t['colonsign'] = 0x20A1; - t['colonsmall'] = 0xFE55; - t['colontriangularhalfmod'] = 0x02D1; - t['colontriangularmod'] = 0x02D0; - t['comma'] = 0x002C; - t['commaabovecmb'] = 0x0313; - t['commaaboverightcmb'] = 0x0315; - t['commaaccent'] = 0xF6C3; - t['commaarabic'] = 0x060C; - t['commaarmenian'] = 0x055D; - t['commainferior'] = 0xF6E1; - t['commamonospace'] = 0xFF0C; - t['commareversedabovecmb'] = 0x0314; - t['commareversedmod'] = 0x02BD; - t['commasmall'] = 0xFE50; - t['commasuperior'] = 0xF6E2; - t['commaturnedabovecmb'] = 0x0312; - t['commaturnedmod'] = 0x02BB; - t['compass'] = 0x263C; - t['congruent'] = 0x2245; - t['contourintegral'] = 0x222E; - t['control'] = 0x2303; - t['controlACK'] = 0x0006; - t['controlBEL'] = 0x0007; - t['controlBS'] = 0x0008; - t['controlCAN'] = 0x0018; - t['controlCR'] = 0x000D; - t['controlDC1'] = 0x0011; - t['controlDC2'] = 0x0012; - t['controlDC3'] = 0x0013; - t['controlDC4'] = 0x0014; - t['controlDEL'] = 0x007F; - t['controlDLE'] = 0x0010; - t['controlEM'] = 0x0019; - t['controlENQ'] = 0x0005; - t['controlEOT'] = 0x0004; - t['controlESC'] = 0x001B; - t['controlETB'] = 0x0017; - t['controlETX'] = 0x0003; - t['controlFF'] = 0x000C; - t['controlFS'] = 0x001C; - t['controlGS'] = 0x001D; - t['controlHT'] = 0x0009; - t['controlLF'] = 0x000A; - t['controlNAK'] = 0x0015; - t['controlNULL'] = 0x0000; - t['controlRS'] = 0x001E; - t['controlSI'] = 0x000F; - t['controlSO'] = 0x000E; - t['controlSOT'] = 0x0002; - t['controlSTX'] = 0x0001; - t['controlSUB'] = 0x001A; - t['controlSYN'] = 0x0016; - t['controlUS'] = 0x001F; - t['controlVT'] = 0x000B; - t['copyright'] = 0x00A9; - t['copyrightsans'] = 0xF8E9; - t['copyrightserif'] = 0xF6D9; - t['cornerbracketleft'] = 0x300C; - t['cornerbracketlefthalfwidth'] = 0xFF62; - t['cornerbracketleftvertical'] = 0xFE41; - t['cornerbracketright'] = 0x300D; - t['cornerbracketrighthalfwidth'] = 0xFF63; - t['cornerbracketrightvertical'] = 0xFE42; - t['corporationsquare'] = 0x337F; - t['cosquare'] = 0x33C7; - t['coverkgsquare'] = 0x33C6; - t['cparen'] = 0x249E; - t['cruzeiro'] = 0x20A2; - t['cstretched'] = 0x0297; - t['curlyand'] = 0x22CF; - t['curlyor'] = 0x22CE; - t['currency'] = 0x00A4; - t['cyrBreve'] = 0xF6D1; - t['cyrFlex'] = 0xF6D2; - t['cyrbreve'] = 0xF6D4; - t['cyrflex'] = 0xF6D5; - t['d'] = 0x0064; - t['daarmenian'] = 0x0564; - t['dabengali'] = 0x09A6; - t['dadarabic'] = 0x0636; - t['dadeva'] = 0x0926; - t['dadfinalarabic'] = 0xFEBE; - t['dadinitialarabic'] = 0xFEBF; - t['dadmedialarabic'] = 0xFEC0; - t['dagesh'] = 0x05BC; - t['dageshhebrew'] = 0x05BC; - t['dagger'] = 0x2020; - t['daggerdbl'] = 0x2021; - t['dagujarati'] = 0x0AA6; - t['dagurmukhi'] = 0x0A26; - t['dahiragana'] = 0x3060; - t['dakatakana'] = 0x30C0; - t['dalarabic'] = 0x062F; - t['dalet'] = 0x05D3; - t['daletdagesh'] = 0xFB33; - t['daletdageshhebrew'] = 0xFB33; - t['dalethebrew'] = 0x05D3; - t['dalfinalarabic'] = 0xFEAA; - t['dammaarabic'] = 0x064F; - t['dammalowarabic'] = 0x064F; - t['dammatanaltonearabic'] = 0x064C; - t['dammatanarabic'] = 0x064C; - t['danda'] = 0x0964; - t['dargahebrew'] = 0x05A7; - t['dargalefthebrew'] = 0x05A7; - t['dasiapneumatacyrilliccmb'] = 0x0485; - t['dblGrave'] = 0xF6D3; - t['dblanglebracketleft'] = 0x300A; - t['dblanglebracketleftvertical'] = 0xFE3D; - t['dblanglebracketright'] = 0x300B; - t['dblanglebracketrightvertical'] = 0xFE3E; - t['dblarchinvertedbelowcmb'] = 0x032B; - t['dblarrowleft'] = 0x21D4; - t['dblarrowright'] = 0x21D2; - t['dbldanda'] = 0x0965; - t['dblgrave'] = 0xF6D6; - t['dblgravecmb'] = 0x030F; - t['dblintegral'] = 0x222C; - t['dbllowline'] = 0x2017; - t['dbllowlinecmb'] = 0x0333; - t['dbloverlinecmb'] = 0x033F; - t['dblprimemod'] = 0x02BA; - t['dblverticalbar'] = 0x2016; - t['dblverticallineabovecmb'] = 0x030E; - t['dbopomofo'] = 0x3109; - t['dbsquare'] = 0x33C8; - t['dcaron'] = 0x010F; - t['dcedilla'] = 0x1E11; - t['dcircle'] = 0x24D3; - t['dcircumflexbelow'] = 0x1E13; - t['dcroat'] = 0x0111; - t['ddabengali'] = 0x09A1; - t['ddadeva'] = 0x0921; - t['ddagujarati'] = 0x0AA1; - t['ddagurmukhi'] = 0x0A21; - t['ddalarabic'] = 0x0688; - t['ddalfinalarabic'] = 0xFB89; - t['dddhadeva'] = 0x095C; - t['ddhabengali'] = 0x09A2; - t['ddhadeva'] = 0x0922; - t['ddhagujarati'] = 0x0AA2; - t['ddhagurmukhi'] = 0x0A22; - t['ddotaccent'] = 0x1E0B; - t['ddotbelow'] = 0x1E0D; - t['decimalseparatorarabic'] = 0x066B; - t['decimalseparatorpersian'] = 0x066B; - t['decyrillic'] = 0x0434; - t['degree'] = 0x00B0; - t['dehihebrew'] = 0x05AD; - t['dehiragana'] = 0x3067; - t['deicoptic'] = 0x03EF; - t['dekatakana'] = 0x30C7; - t['deleteleft'] = 0x232B; - t['deleteright'] = 0x2326; - t['delta'] = 0x03B4; - t['deltaturned'] = 0x018D; - t['denominatorminusonenumeratorbengali'] = 0x09F8; - t['dezh'] = 0x02A4; - t['dhabengali'] = 0x09A7; - t['dhadeva'] = 0x0927; - t['dhagujarati'] = 0x0AA7; - t['dhagurmukhi'] = 0x0A27; - t['dhook'] = 0x0257; - t['dialytikatonos'] = 0x0385; - t['dialytikatonoscmb'] = 0x0344; - t['diamond'] = 0x2666; - t['diamondsuitwhite'] = 0x2662; - t['dieresis'] = 0x00A8; - t['dieresisacute'] = 0xF6D7; - t['dieresisbelowcmb'] = 0x0324; - t['dieresiscmb'] = 0x0308; - t['dieresisgrave'] = 0xF6D8; - t['dieresistonos'] = 0x0385; - t['dihiragana'] = 0x3062; - t['dikatakana'] = 0x30C2; - t['dittomark'] = 0x3003; - t['divide'] = 0x00F7; - t['divides'] = 0x2223; - t['divisionslash'] = 0x2215; - t['djecyrillic'] = 0x0452; - t['dkshade'] = 0x2593; - t['dlinebelow'] = 0x1E0F; - t['dlsquare'] = 0x3397; - t['dmacron'] = 0x0111; - t['dmonospace'] = 0xFF44; - t['dnblock'] = 0x2584; - t['dochadathai'] = 0x0E0E; - t['dodekthai'] = 0x0E14; - t['dohiragana'] = 0x3069; - t['dokatakana'] = 0x30C9; - t['dollar'] = 0x0024; - t['dollarinferior'] = 0xF6E3; - t['dollarmonospace'] = 0xFF04; - t['dollaroldstyle'] = 0xF724; - t['dollarsmall'] = 0xFE69; - t['dollarsuperior'] = 0xF6E4; - t['dong'] = 0x20AB; - t['dorusquare'] = 0x3326; - t['dotaccent'] = 0x02D9; - t['dotaccentcmb'] = 0x0307; - t['dotbelowcmb'] = 0x0323; - t['dotbelowcomb'] = 0x0323; - t['dotkatakana'] = 0x30FB; - t['dotlessi'] = 0x0131; - t['dotlessj'] = 0xF6BE; - t['dotlessjstrokehook'] = 0x0284; - t['dotmath'] = 0x22C5; - t['dottedcircle'] = 0x25CC; - t['doubleyodpatah'] = 0xFB1F; - t['doubleyodpatahhebrew'] = 0xFB1F; - t['downtackbelowcmb'] = 0x031E; - t['downtackmod'] = 0x02D5; - t['dparen'] = 0x249F; - t['dsuperior'] = 0xF6EB; - t['dtail'] = 0x0256; - t['dtopbar'] = 0x018C; - t['duhiragana'] = 0x3065; - t['dukatakana'] = 0x30C5; - t['dz'] = 0x01F3; - t['dzaltone'] = 0x02A3; - t['dzcaron'] = 0x01C6; - t['dzcurl'] = 0x02A5; - t['dzeabkhasiancyrillic'] = 0x04E1; - t['dzecyrillic'] = 0x0455; - t['dzhecyrillic'] = 0x045F; - t['e'] = 0x0065; - t['eacute'] = 0x00E9; - t['earth'] = 0x2641; - t['ebengali'] = 0x098F; - t['ebopomofo'] = 0x311C; - t['ebreve'] = 0x0115; - t['ecandradeva'] = 0x090D; - t['ecandragujarati'] = 0x0A8D; - t['ecandravowelsigndeva'] = 0x0945; - t['ecandravowelsigngujarati'] = 0x0AC5; - t['ecaron'] = 0x011B; - t['ecedillabreve'] = 0x1E1D; - t['echarmenian'] = 0x0565; - t['echyiwnarmenian'] = 0x0587; - t['ecircle'] = 0x24D4; - t['ecircumflex'] = 0x00EA; - t['ecircumflexacute'] = 0x1EBF; - t['ecircumflexbelow'] = 0x1E19; - t['ecircumflexdotbelow'] = 0x1EC7; - t['ecircumflexgrave'] = 0x1EC1; - t['ecircumflexhookabove'] = 0x1EC3; - t['ecircumflextilde'] = 0x1EC5; - t['ecyrillic'] = 0x0454; - t['edblgrave'] = 0x0205; - t['edeva'] = 0x090F; - t['edieresis'] = 0x00EB; - t['edot'] = 0x0117; - t['edotaccent'] = 0x0117; - t['edotbelow'] = 0x1EB9; - t['eegurmukhi'] = 0x0A0F; - t['eematragurmukhi'] = 0x0A47; - t['efcyrillic'] = 0x0444; - t['egrave'] = 0x00E8; - t['egujarati'] = 0x0A8F; - t['eharmenian'] = 0x0567; - t['ehbopomofo'] = 0x311D; - t['ehiragana'] = 0x3048; - t['ehookabove'] = 0x1EBB; - t['eibopomofo'] = 0x311F; - t['eight'] = 0x0038; - t['eightarabic'] = 0x0668; - t['eightbengali'] = 0x09EE; - t['eightcircle'] = 0x2467; - t['eightcircleinversesansserif'] = 0x2791; - t['eightdeva'] = 0x096E; - t['eighteencircle'] = 0x2471; - t['eighteenparen'] = 0x2485; - t['eighteenperiod'] = 0x2499; - t['eightgujarati'] = 0x0AEE; - t['eightgurmukhi'] = 0x0A6E; - t['eighthackarabic'] = 0x0668; - t['eighthangzhou'] = 0x3028; - t['eighthnotebeamed'] = 0x266B; - t['eightideographicparen'] = 0x3227; - t['eightinferior'] = 0x2088; - t['eightmonospace'] = 0xFF18; - t['eightoldstyle'] = 0xF738; - t['eightparen'] = 0x247B; - t['eightperiod'] = 0x248F; - t['eightpersian'] = 0x06F8; - t['eightroman'] = 0x2177; - t['eightsuperior'] = 0x2078; - t['eightthai'] = 0x0E58; - t['einvertedbreve'] = 0x0207; - t['eiotifiedcyrillic'] = 0x0465; - t['ekatakana'] = 0x30A8; - t['ekatakanahalfwidth'] = 0xFF74; - t['ekonkargurmukhi'] = 0x0A74; - t['ekorean'] = 0x3154; - t['elcyrillic'] = 0x043B; - t['element'] = 0x2208; - t['elevencircle'] = 0x246A; - t['elevenparen'] = 0x247E; - t['elevenperiod'] = 0x2492; - t['elevenroman'] = 0x217A; - t['ellipsis'] = 0x2026; - t['ellipsisvertical'] = 0x22EE; - t['emacron'] = 0x0113; - t['emacronacute'] = 0x1E17; - t['emacrongrave'] = 0x1E15; - t['emcyrillic'] = 0x043C; - t['emdash'] = 0x2014; - t['emdashvertical'] = 0xFE31; - t['emonospace'] = 0xFF45; - t['emphasismarkarmenian'] = 0x055B; - t['emptyset'] = 0x2205; - t['enbopomofo'] = 0x3123; - t['encyrillic'] = 0x043D; - t['endash'] = 0x2013; - t['endashvertical'] = 0xFE32; - t['endescendercyrillic'] = 0x04A3; - t['eng'] = 0x014B; - t['engbopomofo'] = 0x3125; - t['enghecyrillic'] = 0x04A5; - t['enhookcyrillic'] = 0x04C8; - t['enspace'] = 0x2002; - t['eogonek'] = 0x0119; - t['eokorean'] = 0x3153; - t['eopen'] = 0x025B; - t['eopenclosed'] = 0x029A; - t['eopenreversed'] = 0x025C; - t['eopenreversedclosed'] = 0x025E; - t['eopenreversedhook'] = 0x025D; - t['eparen'] = 0x24A0; - t['epsilon'] = 0x03B5; - t['epsilontonos'] = 0x03AD; - t['equal'] = 0x003D; - t['equalmonospace'] = 0xFF1D; - t['equalsmall'] = 0xFE66; - t['equalsuperior'] = 0x207C; - t['equivalence'] = 0x2261; - t['erbopomofo'] = 0x3126; - t['ercyrillic'] = 0x0440; - t['ereversed'] = 0x0258; - t['ereversedcyrillic'] = 0x044D; - t['escyrillic'] = 0x0441; - t['esdescendercyrillic'] = 0x04AB; - t['esh'] = 0x0283; - t['eshcurl'] = 0x0286; - t['eshortdeva'] = 0x090E; - t['eshortvowelsigndeva'] = 0x0946; - t['eshreversedloop'] = 0x01AA; - t['eshsquatreversed'] = 0x0285; - t['esmallhiragana'] = 0x3047; - t['esmallkatakana'] = 0x30A7; - t['esmallkatakanahalfwidth'] = 0xFF6A; - t['estimated'] = 0x212E; - t['esuperior'] = 0xF6EC; - t['eta'] = 0x03B7; - t['etarmenian'] = 0x0568; - t['etatonos'] = 0x03AE; - t['eth'] = 0x00F0; - t['etilde'] = 0x1EBD; - t['etildebelow'] = 0x1E1B; - t['etnahtafoukhhebrew'] = 0x0591; - t['etnahtafoukhlefthebrew'] = 0x0591; - t['etnahtahebrew'] = 0x0591; - t['etnahtalefthebrew'] = 0x0591; - t['eturned'] = 0x01DD; - t['eukorean'] = 0x3161; - t['euro'] = 0x20AC; - t['evowelsignbengali'] = 0x09C7; - t['evowelsigndeva'] = 0x0947; - t['evowelsigngujarati'] = 0x0AC7; - t['exclam'] = 0x0021; - t['exclamarmenian'] = 0x055C; - t['exclamdbl'] = 0x203C; - t['exclamdown'] = 0x00A1; - t['exclamdownsmall'] = 0xF7A1; - t['exclammonospace'] = 0xFF01; - t['exclamsmall'] = 0xF721; - t['existential'] = 0x2203; - t['ezh'] = 0x0292; - t['ezhcaron'] = 0x01EF; - t['ezhcurl'] = 0x0293; - t['ezhreversed'] = 0x01B9; - t['ezhtail'] = 0x01BA; - t['f'] = 0x0066; - t['fadeva'] = 0x095E; - t['fagurmukhi'] = 0x0A5E; - t['fahrenheit'] = 0x2109; - t['fathaarabic'] = 0x064E; - t['fathalowarabic'] = 0x064E; - t['fathatanarabic'] = 0x064B; - t['fbopomofo'] = 0x3108; - t['fcircle'] = 0x24D5; - t['fdotaccent'] = 0x1E1F; - t['feharabic'] = 0x0641; - t['feharmenian'] = 0x0586; - t['fehfinalarabic'] = 0xFED2; - t['fehinitialarabic'] = 0xFED3; - t['fehmedialarabic'] = 0xFED4; - t['feicoptic'] = 0x03E5; - t['female'] = 0x2640; - t['ff'] = 0xFB00; - t['ffi'] = 0xFB03; - t['ffl'] = 0xFB04; - t['fi'] = 0xFB01; - t['fifteencircle'] = 0x246E; - t['fifteenparen'] = 0x2482; - t['fifteenperiod'] = 0x2496; - t['figuredash'] = 0x2012; - t['filledbox'] = 0x25A0; - t['filledrect'] = 0x25AC; - t['finalkaf'] = 0x05DA; - t['finalkafdagesh'] = 0xFB3A; - t['finalkafdageshhebrew'] = 0xFB3A; - t['finalkafhebrew'] = 0x05DA; - t['finalmem'] = 0x05DD; - t['finalmemhebrew'] = 0x05DD; - t['finalnun'] = 0x05DF; - t['finalnunhebrew'] = 0x05DF; - t['finalpe'] = 0x05E3; - t['finalpehebrew'] = 0x05E3; - t['finaltsadi'] = 0x05E5; - t['finaltsadihebrew'] = 0x05E5; - t['firsttonechinese'] = 0x02C9; - t['fisheye'] = 0x25C9; - t['fitacyrillic'] = 0x0473; - t['five'] = 0x0035; - t['fivearabic'] = 0x0665; - t['fivebengali'] = 0x09EB; - t['fivecircle'] = 0x2464; - t['fivecircleinversesansserif'] = 0x278E; - t['fivedeva'] = 0x096B; - t['fiveeighths'] = 0x215D; - t['fivegujarati'] = 0x0AEB; - t['fivegurmukhi'] = 0x0A6B; - t['fivehackarabic'] = 0x0665; - t['fivehangzhou'] = 0x3025; - t['fiveideographicparen'] = 0x3224; - t['fiveinferior'] = 0x2085; - t['fivemonospace'] = 0xFF15; - t['fiveoldstyle'] = 0xF735; - t['fiveparen'] = 0x2478; - t['fiveperiod'] = 0x248C; - t['fivepersian'] = 0x06F5; - t['fiveroman'] = 0x2174; - t['fivesuperior'] = 0x2075; - t['fivethai'] = 0x0E55; - t['fl'] = 0xFB02; - t['florin'] = 0x0192; - t['fmonospace'] = 0xFF46; - t['fmsquare'] = 0x3399; - t['fofanthai'] = 0x0E1F; - t['fofathai'] = 0x0E1D; - t['fongmanthai'] = 0x0E4F; - t['forall'] = 0x2200; - t['four'] = 0x0034; - t['fourarabic'] = 0x0664; - t['fourbengali'] = 0x09EA; - t['fourcircle'] = 0x2463; - t['fourcircleinversesansserif'] = 0x278D; - t['fourdeva'] = 0x096A; - t['fourgujarati'] = 0x0AEA; - t['fourgurmukhi'] = 0x0A6A; - t['fourhackarabic'] = 0x0664; - t['fourhangzhou'] = 0x3024; - t['fourideographicparen'] = 0x3223; - t['fourinferior'] = 0x2084; - t['fourmonospace'] = 0xFF14; - t['fournumeratorbengali'] = 0x09F7; - t['fouroldstyle'] = 0xF734; - t['fourparen'] = 0x2477; - t['fourperiod'] = 0x248B; - t['fourpersian'] = 0x06F4; - t['fourroman'] = 0x2173; - t['foursuperior'] = 0x2074; - t['fourteencircle'] = 0x246D; - t['fourteenparen'] = 0x2481; - t['fourteenperiod'] = 0x2495; - t['fourthai'] = 0x0E54; - t['fourthtonechinese'] = 0x02CB; - t['fparen'] = 0x24A1; - t['fraction'] = 0x2044; - t['franc'] = 0x20A3; - t['g'] = 0x0067; - t['gabengali'] = 0x0997; - t['gacute'] = 0x01F5; - t['gadeva'] = 0x0917; - t['gafarabic'] = 0x06AF; - t['gaffinalarabic'] = 0xFB93; - t['gafinitialarabic'] = 0xFB94; - t['gafmedialarabic'] = 0xFB95; - t['gagujarati'] = 0x0A97; - t['gagurmukhi'] = 0x0A17; - t['gahiragana'] = 0x304C; - t['gakatakana'] = 0x30AC; - t['gamma'] = 0x03B3; - t['gammalatinsmall'] = 0x0263; - t['gammasuperior'] = 0x02E0; - t['gangiacoptic'] = 0x03EB; - t['gbopomofo'] = 0x310D; - t['gbreve'] = 0x011F; - t['gcaron'] = 0x01E7; - t['gcedilla'] = 0x0123; - t['gcircle'] = 0x24D6; - t['gcircumflex'] = 0x011D; - t['gcommaaccent'] = 0x0123; - t['gdot'] = 0x0121; - t['gdotaccent'] = 0x0121; - t['gecyrillic'] = 0x0433; - t['gehiragana'] = 0x3052; - t['gekatakana'] = 0x30B2; - t['geometricallyequal'] = 0x2251; - t['gereshaccenthebrew'] = 0x059C; - t['gereshhebrew'] = 0x05F3; - t['gereshmuqdamhebrew'] = 0x059D; - t['germandbls'] = 0x00DF; - t['gershayimaccenthebrew'] = 0x059E; - t['gershayimhebrew'] = 0x05F4; - t['getamark'] = 0x3013; - t['ghabengali'] = 0x0998; - t['ghadarmenian'] = 0x0572; - t['ghadeva'] = 0x0918; - t['ghagujarati'] = 0x0A98; - t['ghagurmukhi'] = 0x0A18; - t['ghainarabic'] = 0x063A; - t['ghainfinalarabic'] = 0xFECE; - t['ghaininitialarabic'] = 0xFECF; - t['ghainmedialarabic'] = 0xFED0; - t['ghemiddlehookcyrillic'] = 0x0495; - t['ghestrokecyrillic'] = 0x0493; - t['gheupturncyrillic'] = 0x0491; - t['ghhadeva'] = 0x095A; - t['ghhagurmukhi'] = 0x0A5A; - t['ghook'] = 0x0260; - t['ghzsquare'] = 0x3393; - t['gihiragana'] = 0x304E; - t['gikatakana'] = 0x30AE; - t['gimarmenian'] = 0x0563; - t['gimel'] = 0x05D2; - t['gimeldagesh'] = 0xFB32; - t['gimeldageshhebrew'] = 0xFB32; - t['gimelhebrew'] = 0x05D2; - t['gjecyrillic'] = 0x0453; - t['glottalinvertedstroke'] = 0x01BE; - t['glottalstop'] = 0x0294; - t['glottalstopinverted'] = 0x0296; - t['glottalstopmod'] = 0x02C0; - t['glottalstopreversed'] = 0x0295; - t['glottalstopreversedmod'] = 0x02C1; - t['glottalstopreversedsuperior'] = 0x02E4; - t['glottalstopstroke'] = 0x02A1; - t['glottalstopstrokereversed'] = 0x02A2; - t['gmacron'] = 0x1E21; - t['gmonospace'] = 0xFF47; - t['gohiragana'] = 0x3054; - t['gokatakana'] = 0x30B4; - t['gparen'] = 0x24A2; - t['gpasquare'] = 0x33AC; - t['gradient'] = 0x2207; - t['grave'] = 0x0060; - t['gravebelowcmb'] = 0x0316; - t['gravecmb'] = 0x0300; - t['gravecomb'] = 0x0300; - t['gravedeva'] = 0x0953; - t['gravelowmod'] = 0x02CE; - t['gravemonospace'] = 0xFF40; - t['gravetonecmb'] = 0x0340; - t['greater'] = 0x003E; - t['greaterequal'] = 0x2265; - t['greaterequalorless'] = 0x22DB; - t['greatermonospace'] = 0xFF1E; - t['greaterorequivalent'] = 0x2273; - t['greaterorless'] = 0x2277; - t['greateroverequal'] = 0x2267; - t['greatersmall'] = 0xFE65; - t['gscript'] = 0x0261; - t['gstroke'] = 0x01E5; - t['guhiragana'] = 0x3050; - t['guillemotleft'] = 0x00AB; - t['guillemotright'] = 0x00BB; - t['guilsinglleft'] = 0x2039; - t['guilsinglright'] = 0x203A; - t['gukatakana'] = 0x30B0; - t['guramusquare'] = 0x3318; - t['gysquare'] = 0x33C9; - t['h'] = 0x0068; - t['haabkhasiancyrillic'] = 0x04A9; - t['haaltonearabic'] = 0x06C1; - t['habengali'] = 0x09B9; - t['hadescendercyrillic'] = 0x04B3; - t['hadeva'] = 0x0939; - t['hagujarati'] = 0x0AB9; - t['hagurmukhi'] = 0x0A39; - t['haharabic'] = 0x062D; - t['hahfinalarabic'] = 0xFEA2; - t['hahinitialarabic'] = 0xFEA3; - t['hahiragana'] = 0x306F; - t['hahmedialarabic'] = 0xFEA4; - t['haitusquare'] = 0x332A; - t['hakatakana'] = 0x30CF; - t['hakatakanahalfwidth'] = 0xFF8A; - t['halantgurmukhi'] = 0x0A4D; - t['hamzaarabic'] = 0x0621; - t['hamzalowarabic'] = 0x0621; - t['hangulfiller'] = 0x3164; - t['hardsigncyrillic'] = 0x044A; - t['harpoonleftbarbup'] = 0x21BC; - t['harpoonrightbarbup'] = 0x21C0; - t['hasquare'] = 0x33CA; - t['hatafpatah'] = 0x05B2; - t['hatafpatah16'] = 0x05B2; - t['hatafpatah23'] = 0x05B2; - t['hatafpatah2f'] = 0x05B2; - t['hatafpatahhebrew'] = 0x05B2; - t['hatafpatahnarrowhebrew'] = 0x05B2; - t['hatafpatahquarterhebrew'] = 0x05B2; - t['hatafpatahwidehebrew'] = 0x05B2; - t['hatafqamats'] = 0x05B3; - t['hatafqamats1b'] = 0x05B3; - t['hatafqamats28'] = 0x05B3; - t['hatafqamats34'] = 0x05B3; - t['hatafqamatshebrew'] = 0x05B3; - t['hatafqamatsnarrowhebrew'] = 0x05B3; - t['hatafqamatsquarterhebrew'] = 0x05B3; - t['hatafqamatswidehebrew'] = 0x05B3; - t['hatafsegol'] = 0x05B1; - t['hatafsegol17'] = 0x05B1; - t['hatafsegol24'] = 0x05B1; - t['hatafsegol30'] = 0x05B1; - t['hatafsegolhebrew'] = 0x05B1; - t['hatafsegolnarrowhebrew'] = 0x05B1; - t['hatafsegolquarterhebrew'] = 0x05B1; - t['hatafsegolwidehebrew'] = 0x05B1; - t['hbar'] = 0x0127; - t['hbopomofo'] = 0x310F; - t['hbrevebelow'] = 0x1E2B; - t['hcedilla'] = 0x1E29; - t['hcircle'] = 0x24D7; - t['hcircumflex'] = 0x0125; - t['hdieresis'] = 0x1E27; - t['hdotaccent'] = 0x1E23; - t['hdotbelow'] = 0x1E25; - t['he'] = 0x05D4; - t['heart'] = 0x2665; - t['heartsuitblack'] = 0x2665; - t['heartsuitwhite'] = 0x2661; - t['hedagesh'] = 0xFB34; - t['hedageshhebrew'] = 0xFB34; - t['hehaltonearabic'] = 0x06C1; - t['heharabic'] = 0x0647; - t['hehebrew'] = 0x05D4; - t['hehfinalaltonearabic'] = 0xFBA7; - t['hehfinalalttwoarabic'] = 0xFEEA; - t['hehfinalarabic'] = 0xFEEA; - t['hehhamzaabovefinalarabic'] = 0xFBA5; - t['hehhamzaaboveisolatedarabic'] = 0xFBA4; - t['hehinitialaltonearabic'] = 0xFBA8; - t['hehinitialarabic'] = 0xFEEB; - t['hehiragana'] = 0x3078; - t['hehmedialaltonearabic'] = 0xFBA9; - t['hehmedialarabic'] = 0xFEEC; - t['heiseierasquare'] = 0x337B; - t['hekatakana'] = 0x30D8; - t['hekatakanahalfwidth'] = 0xFF8D; - t['hekutaarusquare'] = 0x3336; - t['henghook'] = 0x0267; - t['herutusquare'] = 0x3339; - t['het'] = 0x05D7; - t['hethebrew'] = 0x05D7; - t['hhook'] = 0x0266; - t['hhooksuperior'] = 0x02B1; - t['hieuhacirclekorean'] = 0x327B; - t['hieuhaparenkorean'] = 0x321B; - t['hieuhcirclekorean'] = 0x326D; - t['hieuhkorean'] = 0x314E; - t['hieuhparenkorean'] = 0x320D; - t['hihiragana'] = 0x3072; - t['hikatakana'] = 0x30D2; - t['hikatakanahalfwidth'] = 0xFF8B; - t['hiriq'] = 0x05B4; - t['hiriq14'] = 0x05B4; - t['hiriq21'] = 0x05B4; - t['hiriq2d'] = 0x05B4; - t['hiriqhebrew'] = 0x05B4; - t['hiriqnarrowhebrew'] = 0x05B4; - t['hiriqquarterhebrew'] = 0x05B4; - t['hiriqwidehebrew'] = 0x05B4; - t['hlinebelow'] = 0x1E96; - t['hmonospace'] = 0xFF48; - t['hoarmenian'] = 0x0570; - t['hohipthai'] = 0x0E2B; - t['hohiragana'] = 0x307B; - t['hokatakana'] = 0x30DB; - t['hokatakanahalfwidth'] = 0xFF8E; - t['holam'] = 0x05B9; - t['holam19'] = 0x05B9; - t['holam26'] = 0x05B9; - t['holam32'] = 0x05B9; - t['holamhebrew'] = 0x05B9; - t['holamnarrowhebrew'] = 0x05B9; - t['holamquarterhebrew'] = 0x05B9; - t['holamwidehebrew'] = 0x05B9; - t['honokhukthai'] = 0x0E2E; - t['hookabovecomb'] = 0x0309; - t['hookcmb'] = 0x0309; - t['hookpalatalizedbelowcmb'] = 0x0321; - t['hookretroflexbelowcmb'] = 0x0322; - t['hoonsquare'] = 0x3342; - t['horicoptic'] = 0x03E9; - t['horizontalbar'] = 0x2015; - t['horncmb'] = 0x031B; - t['hotsprings'] = 0x2668; - t['house'] = 0x2302; - t['hparen'] = 0x24A3; - t['hsuperior'] = 0x02B0; - t['hturned'] = 0x0265; - t['huhiragana'] = 0x3075; - t['huiitosquare'] = 0x3333; - t['hukatakana'] = 0x30D5; - t['hukatakanahalfwidth'] = 0xFF8C; - t['hungarumlaut'] = 0x02DD; - t['hungarumlautcmb'] = 0x030B; - t['hv'] = 0x0195; - t['hyphen'] = 0x002D; - t['hypheninferior'] = 0xF6E5; - t['hyphenmonospace'] = 0xFF0D; - t['hyphensmall'] = 0xFE63; - t['hyphensuperior'] = 0xF6E6; - t['hyphentwo'] = 0x2010; - t['i'] = 0x0069; - t['iacute'] = 0x00ED; - t['iacyrillic'] = 0x044F; - t['ibengali'] = 0x0987; - t['ibopomofo'] = 0x3127; - t['ibreve'] = 0x012D; - t['icaron'] = 0x01D0; - t['icircle'] = 0x24D8; - t['icircumflex'] = 0x00EE; - t['icyrillic'] = 0x0456; - t['idblgrave'] = 0x0209; - t['ideographearthcircle'] = 0x328F; - t['ideographfirecircle'] = 0x328B; - t['ideographicallianceparen'] = 0x323F; - t['ideographiccallparen'] = 0x323A; - t['ideographiccentrecircle'] = 0x32A5; - t['ideographicclose'] = 0x3006; - t['ideographiccomma'] = 0x3001; - t['ideographiccommaleft'] = 0xFF64; - t['ideographiccongratulationparen'] = 0x3237; - t['ideographiccorrectcircle'] = 0x32A3; - t['ideographicearthparen'] = 0x322F; - t['ideographicenterpriseparen'] = 0x323D; - t['ideographicexcellentcircle'] = 0x329D; - t['ideographicfestivalparen'] = 0x3240; - t['ideographicfinancialcircle'] = 0x3296; - t['ideographicfinancialparen'] = 0x3236; - t['ideographicfireparen'] = 0x322B; - t['ideographichaveparen'] = 0x3232; - t['ideographichighcircle'] = 0x32A4; - t['ideographiciterationmark'] = 0x3005; - t['ideographiclaborcircle'] = 0x3298; - t['ideographiclaborparen'] = 0x3238; - t['ideographicleftcircle'] = 0x32A7; - t['ideographiclowcircle'] = 0x32A6; - t['ideographicmedicinecircle'] = 0x32A9; - t['ideographicmetalparen'] = 0x322E; - t['ideographicmoonparen'] = 0x322A; - t['ideographicnameparen'] = 0x3234; - t['ideographicperiod'] = 0x3002; - t['ideographicprintcircle'] = 0x329E; - t['ideographicreachparen'] = 0x3243; - t['ideographicrepresentparen'] = 0x3239; - t['ideographicresourceparen'] = 0x323E; - t['ideographicrightcircle'] = 0x32A8; - t['ideographicsecretcircle'] = 0x3299; - t['ideographicselfparen'] = 0x3242; - t['ideographicsocietyparen'] = 0x3233; - t['ideographicspace'] = 0x3000; - t['ideographicspecialparen'] = 0x3235; - t['ideographicstockparen'] = 0x3231; - t['ideographicstudyparen'] = 0x323B; - t['ideographicsunparen'] = 0x3230; - t['ideographicsuperviseparen'] = 0x323C; - t['ideographicwaterparen'] = 0x322C; - t['ideographicwoodparen'] = 0x322D; - t['ideographiczero'] = 0x3007; - t['ideographmetalcircle'] = 0x328E; - t['ideographmooncircle'] = 0x328A; - t['ideographnamecircle'] = 0x3294; - t['ideographsuncircle'] = 0x3290; - t['ideographwatercircle'] = 0x328C; - t['ideographwoodcircle'] = 0x328D; - t['ideva'] = 0x0907; - t['idieresis'] = 0x00EF; - t['idieresisacute'] = 0x1E2F; - t['idieresiscyrillic'] = 0x04E5; - t['idotbelow'] = 0x1ECB; - t['iebrevecyrillic'] = 0x04D7; - t['iecyrillic'] = 0x0435; - t['ieungacirclekorean'] = 0x3275; - t['ieungaparenkorean'] = 0x3215; - t['ieungcirclekorean'] = 0x3267; - t['ieungkorean'] = 0x3147; - t['ieungparenkorean'] = 0x3207; - t['igrave'] = 0x00EC; - t['igujarati'] = 0x0A87; - t['igurmukhi'] = 0x0A07; - t['ihiragana'] = 0x3044; - t['ihookabove'] = 0x1EC9; - t['iibengali'] = 0x0988; - t['iicyrillic'] = 0x0438; - t['iideva'] = 0x0908; - t['iigujarati'] = 0x0A88; - t['iigurmukhi'] = 0x0A08; - t['iimatragurmukhi'] = 0x0A40; - t['iinvertedbreve'] = 0x020B; - t['iishortcyrillic'] = 0x0439; - t['iivowelsignbengali'] = 0x09C0; - t['iivowelsigndeva'] = 0x0940; - t['iivowelsigngujarati'] = 0x0AC0; - t['ij'] = 0x0133; - t['ikatakana'] = 0x30A4; - t['ikatakanahalfwidth'] = 0xFF72; - t['ikorean'] = 0x3163; - t['ilde'] = 0x02DC; - t['iluyhebrew'] = 0x05AC; - t['imacron'] = 0x012B; - t['imacroncyrillic'] = 0x04E3; - t['imageorapproximatelyequal'] = 0x2253; - t['imatragurmukhi'] = 0x0A3F; - t['imonospace'] = 0xFF49; - t['increment'] = 0x2206; - t['infinity'] = 0x221E; - t['iniarmenian'] = 0x056B; - t['integral'] = 0x222B; - t['integralbottom'] = 0x2321; - t['integralbt'] = 0x2321; - t['integralex'] = 0xF8F5; - t['integraltop'] = 0x2320; - t['integraltp'] = 0x2320; - t['intersection'] = 0x2229; - t['intisquare'] = 0x3305; - t['invbullet'] = 0x25D8; - t['invcircle'] = 0x25D9; - t['invsmileface'] = 0x263B; - t['iocyrillic'] = 0x0451; - t['iogonek'] = 0x012F; - t['iota'] = 0x03B9; - t['iotadieresis'] = 0x03CA; - t['iotadieresistonos'] = 0x0390; - t['iotalatin'] = 0x0269; - t['iotatonos'] = 0x03AF; - t['iparen'] = 0x24A4; - t['irigurmukhi'] = 0x0A72; - t['ismallhiragana'] = 0x3043; - t['ismallkatakana'] = 0x30A3; - t['ismallkatakanahalfwidth'] = 0xFF68; - t['issharbengali'] = 0x09FA; - t['istroke'] = 0x0268; - t['isuperior'] = 0xF6ED; - t['iterationhiragana'] = 0x309D; - t['iterationkatakana'] = 0x30FD; - t['itilde'] = 0x0129; - t['itildebelow'] = 0x1E2D; - t['iubopomofo'] = 0x3129; - t['iucyrillic'] = 0x044E; - t['ivowelsignbengali'] = 0x09BF; - t['ivowelsigndeva'] = 0x093F; - t['ivowelsigngujarati'] = 0x0ABF; - t['izhitsacyrillic'] = 0x0475; - t['izhitsadblgravecyrillic'] = 0x0477; - t['j'] = 0x006A; - t['jaarmenian'] = 0x0571; - t['jabengali'] = 0x099C; - t['jadeva'] = 0x091C; - t['jagujarati'] = 0x0A9C; - t['jagurmukhi'] = 0x0A1C; - t['jbopomofo'] = 0x3110; - t['jcaron'] = 0x01F0; - t['jcircle'] = 0x24D9; - t['jcircumflex'] = 0x0135; - t['jcrossedtail'] = 0x029D; - t['jdotlessstroke'] = 0x025F; - t['jecyrillic'] = 0x0458; - t['jeemarabic'] = 0x062C; - t['jeemfinalarabic'] = 0xFE9E; - t['jeeminitialarabic'] = 0xFE9F; - t['jeemmedialarabic'] = 0xFEA0; - t['jeharabic'] = 0x0698; - t['jehfinalarabic'] = 0xFB8B; - t['jhabengali'] = 0x099D; - t['jhadeva'] = 0x091D; - t['jhagujarati'] = 0x0A9D; - t['jhagurmukhi'] = 0x0A1D; - t['jheharmenian'] = 0x057B; - t['jis'] = 0x3004; - t['jmonospace'] = 0xFF4A; - t['jparen'] = 0x24A5; - t['jsuperior'] = 0x02B2; - t['k'] = 0x006B; - t['kabashkircyrillic'] = 0x04A1; - t['kabengali'] = 0x0995; - t['kacute'] = 0x1E31; - t['kacyrillic'] = 0x043A; - t['kadescendercyrillic'] = 0x049B; - t['kadeva'] = 0x0915; - t['kaf'] = 0x05DB; - t['kafarabic'] = 0x0643; - t['kafdagesh'] = 0xFB3B; - t['kafdageshhebrew'] = 0xFB3B; - t['kaffinalarabic'] = 0xFEDA; - t['kafhebrew'] = 0x05DB; - t['kafinitialarabic'] = 0xFEDB; - t['kafmedialarabic'] = 0xFEDC; - t['kafrafehebrew'] = 0xFB4D; - t['kagujarati'] = 0x0A95; - t['kagurmukhi'] = 0x0A15; - t['kahiragana'] = 0x304B; - t['kahookcyrillic'] = 0x04C4; - t['kakatakana'] = 0x30AB; - t['kakatakanahalfwidth'] = 0xFF76; - t['kappa'] = 0x03BA; - t['kappasymbolgreek'] = 0x03F0; - t['kapyeounmieumkorean'] = 0x3171; - t['kapyeounphieuphkorean'] = 0x3184; - t['kapyeounpieupkorean'] = 0x3178; - t['kapyeounssangpieupkorean'] = 0x3179; - t['karoriisquare'] = 0x330D; - t['kashidaautoarabic'] = 0x0640; - t['kashidaautonosidebearingarabic'] = 0x0640; - t['kasmallkatakana'] = 0x30F5; - t['kasquare'] = 0x3384; - t['kasraarabic'] = 0x0650; - t['kasratanarabic'] = 0x064D; - t['kastrokecyrillic'] = 0x049F; - t['katahiraprolongmarkhalfwidth'] = 0xFF70; - t['kaverticalstrokecyrillic'] = 0x049D; - t['kbopomofo'] = 0x310E; - t['kcalsquare'] = 0x3389; - t['kcaron'] = 0x01E9; - t['kcedilla'] = 0x0137; - t['kcircle'] = 0x24DA; - t['kcommaaccent'] = 0x0137; - t['kdotbelow'] = 0x1E33; - t['keharmenian'] = 0x0584; - t['kehiragana'] = 0x3051; - t['kekatakana'] = 0x30B1; - t['kekatakanahalfwidth'] = 0xFF79; - t['kenarmenian'] = 0x056F; - t['kesmallkatakana'] = 0x30F6; - t['kgreenlandic'] = 0x0138; - t['khabengali'] = 0x0996; - t['khacyrillic'] = 0x0445; - t['khadeva'] = 0x0916; - t['khagujarati'] = 0x0A96; - t['khagurmukhi'] = 0x0A16; - t['khaharabic'] = 0x062E; - t['khahfinalarabic'] = 0xFEA6; - t['khahinitialarabic'] = 0xFEA7; - t['khahmedialarabic'] = 0xFEA8; - t['kheicoptic'] = 0x03E7; - t['khhadeva'] = 0x0959; - t['khhagurmukhi'] = 0x0A59; - t['khieukhacirclekorean'] = 0x3278; - t['khieukhaparenkorean'] = 0x3218; - t['khieukhcirclekorean'] = 0x326A; - t['khieukhkorean'] = 0x314B; - t['khieukhparenkorean'] = 0x320A; - t['khokhaithai'] = 0x0E02; - t['khokhonthai'] = 0x0E05; - t['khokhuatthai'] = 0x0E03; - t['khokhwaithai'] = 0x0E04; - t['khomutthai'] = 0x0E5B; - t['khook'] = 0x0199; - t['khorakhangthai'] = 0x0E06; - t['khzsquare'] = 0x3391; - t['kihiragana'] = 0x304D; - t['kikatakana'] = 0x30AD; - t['kikatakanahalfwidth'] = 0xFF77; - t['kiroguramusquare'] = 0x3315; - t['kiromeetorusquare'] = 0x3316; - t['kirosquare'] = 0x3314; - t['kiyeokacirclekorean'] = 0x326E; - t['kiyeokaparenkorean'] = 0x320E; - t['kiyeokcirclekorean'] = 0x3260; - t['kiyeokkorean'] = 0x3131; - t['kiyeokparenkorean'] = 0x3200; - t['kiyeoksioskorean'] = 0x3133; - t['kjecyrillic'] = 0x045C; - t['klinebelow'] = 0x1E35; - t['klsquare'] = 0x3398; - t['kmcubedsquare'] = 0x33A6; - t['kmonospace'] = 0xFF4B; - t['kmsquaredsquare'] = 0x33A2; - t['kohiragana'] = 0x3053; - t['kohmsquare'] = 0x33C0; - t['kokaithai'] = 0x0E01; - t['kokatakana'] = 0x30B3; - t['kokatakanahalfwidth'] = 0xFF7A; - t['kooposquare'] = 0x331E; - t['koppacyrillic'] = 0x0481; - t['koreanstandardsymbol'] = 0x327F; - t['koroniscmb'] = 0x0343; - t['kparen'] = 0x24A6; - t['kpasquare'] = 0x33AA; - t['ksicyrillic'] = 0x046F; - t['ktsquare'] = 0x33CF; - t['kturned'] = 0x029E; - t['kuhiragana'] = 0x304F; - t['kukatakana'] = 0x30AF; - t['kukatakanahalfwidth'] = 0xFF78; - t['kvsquare'] = 0x33B8; - t['kwsquare'] = 0x33BE; - t['l'] = 0x006C; - t['labengali'] = 0x09B2; - t['lacute'] = 0x013A; - t['ladeva'] = 0x0932; - t['lagujarati'] = 0x0AB2; - t['lagurmukhi'] = 0x0A32; - t['lakkhangyaothai'] = 0x0E45; - t['lamaleffinalarabic'] = 0xFEFC; - t['lamalefhamzaabovefinalarabic'] = 0xFEF8; - t['lamalefhamzaaboveisolatedarabic'] = 0xFEF7; - t['lamalefhamzabelowfinalarabic'] = 0xFEFA; - t['lamalefhamzabelowisolatedarabic'] = 0xFEF9; - t['lamalefisolatedarabic'] = 0xFEFB; - t['lamalefmaddaabovefinalarabic'] = 0xFEF6; - t['lamalefmaddaaboveisolatedarabic'] = 0xFEF5; - t['lamarabic'] = 0x0644; - t['lambda'] = 0x03BB; - t['lambdastroke'] = 0x019B; - t['lamed'] = 0x05DC; - t['lameddagesh'] = 0xFB3C; - t['lameddageshhebrew'] = 0xFB3C; - t['lamedhebrew'] = 0x05DC; - t['lamfinalarabic'] = 0xFEDE; - t['lamhahinitialarabic'] = 0xFCCA; - t['laminitialarabic'] = 0xFEDF; - t['lamjeeminitialarabic'] = 0xFCC9; - t['lamkhahinitialarabic'] = 0xFCCB; - t['lamlamhehisolatedarabic'] = 0xFDF2; - t['lammedialarabic'] = 0xFEE0; - t['lammeemhahinitialarabic'] = 0xFD88; - t['lammeeminitialarabic'] = 0xFCCC; - t['largecircle'] = 0x25EF; - t['lbar'] = 0x019A; - t['lbelt'] = 0x026C; - t['lbopomofo'] = 0x310C; - t['lcaron'] = 0x013E; - t['lcedilla'] = 0x013C; - t['lcircle'] = 0x24DB; - t['lcircumflexbelow'] = 0x1E3D; - t['lcommaaccent'] = 0x013C; - t['ldot'] = 0x0140; - t['ldotaccent'] = 0x0140; - t['ldotbelow'] = 0x1E37; - t['ldotbelowmacron'] = 0x1E39; - t['leftangleabovecmb'] = 0x031A; - t['lefttackbelowcmb'] = 0x0318; - t['less'] = 0x003C; - t['lessequal'] = 0x2264; - t['lessequalorgreater'] = 0x22DA; - t['lessmonospace'] = 0xFF1C; - t['lessorequivalent'] = 0x2272; - t['lessorgreater'] = 0x2276; - t['lessoverequal'] = 0x2266; - t['lesssmall'] = 0xFE64; - t['lezh'] = 0x026E; - t['lfblock'] = 0x258C; - t['lhookretroflex'] = 0x026D; - t['lira'] = 0x20A4; - t['liwnarmenian'] = 0x056C; - t['lj'] = 0x01C9; - t['ljecyrillic'] = 0x0459; - t['ll'] = 0xF6C0; - t['lladeva'] = 0x0933; - t['llagujarati'] = 0x0AB3; - t['llinebelow'] = 0x1E3B; - t['llladeva'] = 0x0934; - t['llvocalicbengali'] = 0x09E1; - t['llvocalicdeva'] = 0x0961; - t['llvocalicvowelsignbengali'] = 0x09E3; - t['llvocalicvowelsigndeva'] = 0x0963; - t['lmiddletilde'] = 0x026B; - t['lmonospace'] = 0xFF4C; - t['lmsquare'] = 0x33D0; - t['lochulathai'] = 0x0E2C; - t['logicaland'] = 0x2227; - t['logicalnot'] = 0x00AC; - t['logicalnotreversed'] = 0x2310; - t['logicalor'] = 0x2228; - t['lolingthai'] = 0x0E25; - t['longs'] = 0x017F; - t['lowlinecenterline'] = 0xFE4E; - t['lowlinecmb'] = 0x0332; - t['lowlinedashed'] = 0xFE4D; - t['lozenge'] = 0x25CA; - t['lparen'] = 0x24A7; - t['lslash'] = 0x0142; - t['lsquare'] = 0x2113; - t['lsuperior'] = 0xF6EE; - t['ltshade'] = 0x2591; - t['luthai'] = 0x0E26; - t['lvocalicbengali'] = 0x098C; - t['lvocalicdeva'] = 0x090C; - t['lvocalicvowelsignbengali'] = 0x09E2; - t['lvocalicvowelsigndeva'] = 0x0962; - t['lxsquare'] = 0x33D3; - t['m'] = 0x006D; - t['mabengali'] = 0x09AE; - t['macron'] = 0x00AF; - t['macronbelowcmb'] = 0x0331; - t['macroncmb'] = 0x0304; - t['macronlowmod'] = 0x02CD; - t['macronmonospace'] = 0xFFE3; - t['macute'] = 0x1E3F; - t['madeva'] = 0x092E; - t['magujarati'] = 0x0AAE; - t['magurmukhi'] = 0x0A2E; - t['mahapakhhebrew'] = 0x05A4; - t['mahapakhlefthebrew'] = 0x05A4; - t['mahiragana'] = 0x307E; - t['maichattawalowleftthai'] = 0xF895; - t['maichattawalowrightthai'] = 0xF894; - t['maichattawathai'] = 0x0E4B; - t['maichattawaupperleftthai'] = 0xF893; - t['maieklowleftthai'] = 0xF88C; - t['maieklowrightthai'] = 0xF88B; - t['maiekthai'] = 0x0E48; - t['maiekupperleftthai'] = 0xF88A; - t['maihanakatleftthai'] = 0xF884; - t['maihanakatthai'] = 0x0E31; - t['maitaikhuleftthai'] = 0xF889; - t['maitaikhuthai'] = 0x0E47; - t['maitholowleftthai'] = 0xF88F; - t['maitholowrightthai'] = 0xF88E; - t['maithothai'] = 0x0E49; - t['maithoupperleftthai'] = 0xF88D; - t['maitrilowleftthai'] = 0xF892; - t['maitrilowrightthai'] = 0xF891; - t['maitrithai'] = 0x0E4A; - t['maitriupperleftthai'] = 0xF890; - t['maiyamokthai'] = 0x0E46; - t['makatakana'] = 0x30DE; - t['makatakanahalfwidth'] = 0xFF8F; - t['male'] = 0x2642; - t['mansyonsquare'] = 0x3347; - t['maqafhebrew'] = 0x05BE; - t['mars'] = 0x2642; - t['masoracirclehebrew'] = 0x05AF; - t['masquare'] = 0x3383; - t['mbopomofo'] = 0x3107; - t['mbsquare'] = 0x33D4; - t['mcircle'] = 0x24DC; - t['mcubedsquare'] = 0x33A5; - t['mdotaccent'] = 0x1E41; - t['mdotbelow'] = 0x1E43; - t['meemarabic'] = 0x0645; - t['meemfinalarabic'] = 0xFEE2; - t['meeminitialarabic'] = 0xFEE3; - t['meemmedialarabic'] = 0xFEE4; - t['meemmeeminitialarabic'] = 0xFCD1; - t['meemmeemisolatedarabic'] = 0xFC48; - t['meetorusquare'] = 0x334D; - t['mehiragana'] = 0x3081; - t['meizierasquare'] = 0x337E; - t['mekatakana'] = 0x30E1; - t['mekatakanahalfwidth'] = 0xFF92; - t['mem'] = 0x05DE; - t['memdagesh'] = 0xFB3E; - t['memdageshhebrew'] = 0xFB3E; - t['memhebrew'] = 0x05DE; - t['menarmenian'] = 0x0574; - t['merkhahebrew'] = 0x05A5; - t['merkhakefulahebrew'] = 0x05A6; - t['merkhakefulalefthebrew'] = 0x05A6; - t['merkhalefthebrew'] = 0x05A5; - t['mhook'] = 0x0271; - t['mhzsquare'] = 0x3392; - t['middledotkatakanahalfwidth'] = 0xFF65; - t['middot'] = 0x00B7; - t['mieumacirclekorean'] = 0x3272; - t['mieumaparenkorean'] = 0x3212; - t['mieumcirclekorean'] = 0x3264; - t['mieumkorean'] = 0x3141; - t['mieumpansioskorean'] = 0x3170; - t['mieumparenkorean'] = 0x3204; - t['mieumpieupkorean'] = 0x316E; - t['mieumsioskorean'] = 0x316F; - t['mihiragana'] = 0x307F; - t['mikatakana'] = 0x30DF; - t['mikatakanahalfwidth'] = 0xFF90; - t['minus'] = 0x2212; - t['minusbelowcmb'] = 0x0320; - t['minuscircle'] = 0x2296; - t['minusmod'] = 0x02D7; - t['minusplus'] = 0x2213; - t['minute'] = 0x2032; - t['miribaarusquare'] = 0x334A; - t['mirisquare'] = 0x3349; - t['mlonglegturned'] = 0x0270; - t['mlsquare'] = 0x3396; - t['mmcubedsquare'] = 0x33A3; - t['mmonospace'] = 0xFF4D; - t['mmsquaredsquare'] = 0x339F; - t['mohiragana'] = 0x3082; - t['mohmsquare'] = 0x33C1; - t['mokatakana'] = 0x30E2; - t['mokatakanahalfwidth'] = 0xFF93; - t['molsquare'] = 0x33D6; - t['momathai'] = 0x0E21; - t['moverssquare'] = 0x33A7; - t['moverssquaredsquare'] = 0x33A8; - t['mparen'] = 0x24A8; - t['mpasquare'] = 0x33AB; - t['mssquare'] = 0x33B3; - t['msuperior'] = 0xF6EF; - t['mturned'] = 0x026F; - t['mu'] = 0x00B5; - t['mu1'] = 0x00B5; - t['muasquare'] = 0x3382; - t['muchgreater'] = 0x226B; - t['muchless'] = 0x226A; - t['mufsquare'] = 0x338C; - t['mugreek'] = 0x03BC; - t['mugsquare'] = 0x338D; - t['muhiragana'] = 0x3080; - t['mukatakana'] = 0x30E0; - t['mukatakanahalfwidth'] = 0xFF91; - t['mulsquare'] = 0x3395; - t['multiply'] = 0x00D7; - t['mumsquare'] = 0x339B; - t['munahhebrew'] = 0x05A3; - t['munahlefthebrew'] = 0x05A3; - t['musicalnote'] = 0x266A; - t['musicalnotedbl'] = 0x266B; - t['musicflatsign'] = 0x266D; - t['musicsharpsign'] = 0x266F; - t['mussquare'] = 0x33B2; - t['muvsquare'] = 0x33B6; - t['muwsquare'] = 0x33BC; - t['mvmegasquare'] = 0x33B9; - t['mvsquare'] = 0x33B7; - t['mwmegasquare'] = 0x33BF; - t['mwsquare'] = 0x33BD; - t['n'] = 0x006E; - t['nabengali'] = 0x09A8; - t['nabla'] = 0x2207; - t['nacute'] = 0x0144; - t['nadeva'] = 0x0928; - t['nagujarati'] = 0x0AA8; - t['nagurmukhi'] = 0x0A28; - t['nahiragana'] = 0x306A; - t['nakatakana'] = 0x30CA; - t['nakatakanahalfwidth'] = 0xFF85; - t['napostrophe'] = 0x0149; - t['nasquare'] = 0x3381; - t['nbopomofo'] = 0x310B; - t['nbspace'] = 0x00A0; - t['ncaron'] = 0x0148; - t['ncedilla'] = 0x0146; - t['ncircle'] = 0x24DD; - t['ncircumflexbelow'] = 0x1E4B; - t['ncommaaccent'] = 0x0146; - t['ndotaccent'] = 0x1E45; - t['ndotbelow'] = 0x1E47; - t['nehiragana'] = 0x306D; - t['nekatakana'] = 0x30CD; - t['nekatakanahalfwidth'] = 0xFF88; - t['newsheqelsign'] = 0x20AA; - t['nfsquare'] = 0x338B; - t['ngabengali'] = 0x0999; - t['ngadeva'] = 0x0919; - t['ngagujarati'] = 0x0A99; - t['ngagurmukhi'] = 0x0A19; - t['ngonguthai'] = 0x0E07; - t['nhiragana'] = 0x3093; - t['nhookleft'] = 0x0272; - t['nhookretroflex'] = 0x0273; - t['nieunacirclekorean'] = 0x326F; - t['nieunaparenkorean'] = 0x320F; - t['nieuncieuckorean'] = 0x3135; - t['nieuncirclekorean'] = 0x3261; - t['nieunhieuhkorean'] = 0x3136; - t['nieunkorean'] = 0x3134; - t['nieunpansioskorean'] = 0x3168; - t['nieunparenkorean'] = 0x3201; - t['nieunsioskorean'] = 0x3167; - t['nieuntikeutkorean'] = 0x3166; - t['nihiragana'] = 0x306B; - t['nikatakana'] = 0x30CB; - t['nikatakanahalfwidth'] = 0xFF86; - t['nikhahitleftthai'] = 0xF899; - t['nikhahitthai'] = 0x0E4D; - t['nine'] = 0x0039; - t['ninearabic'] = 0x0669; - t['ninebengali'] = 0x09EF; - t['ninecircle'] = 0x2468; - t['ninecircleinversesansserif'] = 0x2792; - t['ninedeva'] = 0x096F; - t['ninegujarati'] = 0x0AEF; - t['ninegurmukhi'] = 0x0A6F; - t['ninehackarabic'] = 0x0669; - t['ninehangzhou'] = 0x3029; - t['nineideographicparen'] = 0x3228; - t['nineinferior'] = 0x2089; - t['ninemonospace'] = 0xFF19; - t['nineoldstyle'] = 0xF739; - t['nineparen'] = 0x247C; - t['nineperiod'] = 0x2490; - t['ninepersian'] = 0x06F9; - t['nineroman'] = 0x2178; - t['ninesuperior'] = 0x2079; - t['nineteencircle'] = 0x2472; - t['nineteenparen'] = 0x2486; - t['nineteenperiod'] = 0x249A; - t['ninethai'] = 0x0E59; - t['nj'] = 0x01CC; - t['njecyrillic'] = 0x045A; - t['nkatakana'] = 0x30F3; - t['nkatakanahalfwidth'] = 0xFF9D; - t['nlegrightlong'] = 0x019E; - t['nlinebelow'] = 0x1E49; - t['nmonospace'] = 0xFF4E; - t['nmsquare'] = 0x339A; - t['nnabengali'] = 0x09A3; - t['nnadeva'] = 0x0923; - t['nnagujarati'] = 0x0AA3; - t['nnagurmukhi'] = 0x0A23; - t['nnnadeva'] = 0x0929; - t['nohiragana'] = 0x306E; - t['nokatakana'] = 0x30CE; - t['nokatakanahalfwidth'] = 0xFF89; - t['nonbreakingspace'] = 0x00A0; - t['nonenthai'] = 0x0E13; - t['nonuthai'] = 0x0E19; - t['noonarabic'] = 0x0646; - t['noonfinalarabic'] = 0xFEE6; - t['noonghunnaarabic'] = 0x06BA; - t['noonghunnafinalarabic'] = 0xFB9F; - t['nooninitialarabic'] = 0xFEE7; - t['noonjeeminitialarabic'] = 0xFCD2; - t['noonjeemisolatedarabic'] = 0xFC4B; - t['noonmedialarabic'] = 0xFEE8; - t['noonmeeminitialarabic'] = 0xFCD5; - t['noonmeemisolatedarabic'] = 0xFC4E; - t['noonnoonfinalarabic'] = 0xFC8D; - t['notcontains'] = 0x220C; - t['notelement'] = 0x2209; - t['notelementof'] = 0x2209; - t['notequal'] = 0x2260; - t['notgreater'] = 0x226F; - t['notgreaternorequal'] = 0x2271; - t['notgreaternorless'] = 0x2279; - t['notidentical'] = 0x2262; - t['notless'] = 0x226E; - t['notlessnorequal'] = 0x2270; - t['notparallel'] = 0x2226; - t['notprecedes'] = 0x2280; - t['notsubset'] = 0x2284; - t['notsucceeds'] = 0x2281; - t['notsuperset'] = 0x2285; - t['nowarmenian'] = 0x0576; - t['nparen'] = 0x24A9; - t['nssquare'] = 0x33B1; - t['nsuperior'] = 0x207F; - t['ntilde'] = 0x00F1; - t['nu'] = 0x03BD; - t['nuhiragana'] = 0x306C; - t['nukatakana'] = 0x30CC; - t['nukatakanahalfwidth'] = 0xFF87; - t['nuktabengali'] = 0x09BC; - t['nuktadeva'] = 0x093C; - t['nuktagujarati'] = 0x0ABC; - t['nuktagurmukhi'] = 0x0A3C; - t['numbersign'] = 0x0023; - t['numbersignmonospace'] = 0xFF03; - t['numbersignsmall'] = 0xFE5F; - t['numeralsigngreek'] = 0x0374; - t['numeralsignlowergreek'] = 0x0375; - t['numero'] = 0x2116; - t['nun'] = 0x05E0; - t['nundagesh'] = 0xFB40; - t['nundageshhebrew'] = 0xFB40; - t['nunhebrew'] = 0x05E0; - t['nvsquare'] = 0x33B5; - t['nwsquare'] = 0x33BB; - t['nyabengali'] = 0x099E; - t['nyadeva'] = 0x091E; - t['nyagujarati'] = 0x0A9E; - t['nyagurmukhi'] = 0x0A1E; - t['o'] = 0x006F; - t['oacute'] = 0x00F3; - t['oangthai'] = 0x0E2D; - t['obarred'] = 0x0275; - t['obarredcyrillic'] = 0x04E9; - t['obarreddieresiscyrillic'] = 0x04EB; - t['obengali'] = 0x0993; - t['obopomofo'] = 0x311B; - t['obreve'] = 0x014F; - t['ocandradeva'] = 0x0911; - t['ocandragujarati'] = 0x0A91; - t['ocandravowelsigndeva'] = 0x0949; - t['ocandravowelsigngujarati'] = 0x0AC9; - t['ocaron'] = 0x01D2; - t['ocircle'] = 0x24DE; - t['ocircumflex'] = 0x00F4; - t['ocircumflexacute'] = 0x1ED1; - t['ocircumflexdotbelow'] = 0x1ED9; - t['ocircumflexgrave'] = 0x1ED3; - t['ocircumflexhookabove'] = 0x1ED5; - t['ocircumflextilde'] = 0x1ED7; - t['ocyrillic'] = 0x043E; - t['odblacute'] = 0x0151; - t['odblgrave'] = 0x020D; - t['odeva'] = 0x0913; - t['odieresis'] = 0x00F6; - t['odieresiscyrillic'] = 0x04E7; - t['odotbelow'] = 0x1ECD; - t['oe'] = 0x0153; - t['oekorean'] = 0x315A; - t['ogonek'] = 0x02DB; - t['ogonekcmb'] = 0x0328; - t['ograve'] = 0x00F2; - t['ogujarati'] = 0x0A93; - t['oharmenian'] = 0x0585; - t['ohiragana'] = 0x304A; - t['ohookabove'] = 0x1ECF; - t['ohorn'] = 0x01A1; - t['ohornacute'] = 0x1EDB; - t['ohorndotbelow'] = 0x1EE3; - t['ohorngrave'] = 0x1EDD; - t['ohornhookabove'] = 0x1EDF; - t['ohorntilde'] = 0x1EE1; - t['ohungarumlaut'] = 0x0151; - t['oi'] = 0x01A3; - t['oinvertedbreve'] = 0x020F; - t['okatakana'] = 0x30AA; - t['okatakanahalfwidth'] = 0xFF75; - t['okorean'] = 0x3157; - t['olehebrew'] = 0x05AB; - t['omacron'] = 0x014D; - t['omacronacute'] = 0x1E53; - t['omacrongrave'] = 0x1E51; - t['omdeva'] = 0x0950; - t['omega'] = 0x03C9; - t['omega1'] = 0x03D6; - t['omegacyrillic'] = 0x0461; - t['omegalatinclosed'] = 0x0277; - t['omegaroundcyrillic'] = 0x047B; - t['omegatitlocyrillic'] = 0x047D; - t['omegatonos'] = 0x03CE; - t['omgujarati'] = 0x0AD0; - t['omicron'] = 0x03BF; - t['omicrontonos'] = 0x03CC; - t['omonospace'] = 0xFF4F; - t['one'] = 0x0031; - t['onearabic'] = 0x0661; - t['onebengali'] = 0x09E7; - t['onecircle'] = 0x2460; - t['onecircleinversesansserif'] = 0x278A; - t['onedeva'] = 0x0967; - t['onedotenleader'] = 0x2024; - t['oneeighth'] = 0x215B; - t['onefitted'] = 0xF6DC; - t['onegujarati'] = 0x0AE7; - t['onegurmukhi'] = 0x0A67; - t['onehackarabic'] = 0x0661; - t['onehalf'] = 0x00BD; - t['onehangzhou'] = 0x3021; - t['oneideographicparen'] = 0x3220; - t['oneinferior'] = 0x2081; - t['onemonospace'] = 0xFF11; - t['onenumeratorbengali'] = 0x09F4; - t['oneoldstyle'] = 0xF731; - t['oneparen'] = 0x2474; - t['oneperiod'] = 0x2488; - t['onepersian'] = 0x06F1; - t['onequarter'] = 0x00BC; - t['oneroman'] = 0x2170; - t['onesuperior'] = 0x00B9; - t['onethai'] = 0x0E51; - t['onethird'] = 0x2153; - t['oogonek'] = 0x01EB; - t['oogonekmacron'] = 0x01ED; - t['oogurmukhi'] = 0x0A13; - t['oomatragurmukhi'] = 0x0A4B; - t['oopen'] = 0x0254; - t['oparen'] = 0x24AA; - t['openbullet'] = 0x25E6; - t['option'] = 0x2325; - t['ordfeminine'] = 0x00AA; - t['ordmasculine'] = 0x00BA; - t['orthogonal'] = 0x221F; - t['oshortdeva'] = 0x0912; - t['oshortvowelsigndeva'] = 0x094A; - t['oslash'] = 0x00F8; - t['oslashacute'] = 0x01FF; - t['osmallhiragana'] = 0x3049; - t['osmallkatakana'] = 0x30A9; - t['osmallkatakanahalfwidth'] = 0xFF6B; - t['ostrokeacute'] = 0x01FF; - t['osuperior'] = 0xF6F0; - t['otcyrillic'] = 0x047F; - t['otilde'] = 0x00F5; - t['otildeacute'] = 0x1E4D; - t['otildedieresis'] = 0x1E4F; - t['oubopomofo'] = 0x3121; - t['overline'] = 0x203E; - t['overlinecenterline'] = 0xFE4A; - t['overlinecmb'] = 0x0305; - t['overlinedashed'] = 0xFE49; - t['overlinedblwavy'] = 0xFE4C; - t['overlinewavy'] = 0xFE4B; - t['overscore'] = 0x00AF; - t['ovowelsignbengali'] = 0x09CB; - t['ovowelsigndeva'] = 0x094B; - t['ovowelsigngujarati'] = 0x0ACB; - t['p'] = 0x0070; - t['paampssquare'] = 0x3380; - t['paasentosquare'] = 0x332B; - t['pabengali'] = 0x09AA; - t['pacute'] = 0x1E55; - t['padeva'] = 0x092A; - t['pagedown'] = 0x21DF; - t['pageup'] = 0x21DE; - t['pagujarati'] = 0x0AAA; - t['pagurmukhi'] = 0x0A2A; - t['pahiragana'] = 0x3071; - t['paiyannoithai'] = 0x0E2F; - t['pakatakana'] = 0x30D1; - t['palatalizationcyrilliccmb'] = 0x0484; - t['palochkacyrillic'] = 0x04C0; - t['pansioskorean'] = 0x317F; - t['paragraph'] = 0x00B6; - t['parallel'] = 0x2225; - t['parenleft'] = 0x0028; - t['parenleftaltonearabic'] = 0xFD3E; - t['parenleftbt'] = 0xF8ED; - t['parenleftex'] = 0xF8EC; - t['parenleftinferior'] = 0x208D; - t['parenleftmonospace'] = 0xFF08; - t['parenleftsmall'] = 0xFE59; - t['parenleftsuperior'] = 0x207D; - t['parenlefttp'] = 0xF8EB; - t['parenleftvertical'] = 0xFE35; - t['parenright'] = 0x0029; - t['parenrightaltonearabic'] = 0xFD3F; - t['parenrightbt'] = 0xF8F8; - t['parenrightex'] = 0xF8F7; - t['parenrightinferior'] = 0x208E; - t['parenrightmonospace'] = 0xFF09; - t['parenrightsmall'] = 0xFE5A; - t['parenrightsuperior'] = 0x207E; - t['parenrighttp'] = 0xF8F6; - t['parenrightvertical'] = 0xFE36; - t['partialdiff'] = 0x2202; - t['paseqhebrew'] = 0x05C0; - t['pashtahebrew'] = 0x0599; - t['pasquare'] = 0x33A9; - t['patah'] = 0x05B7; - t['patah11'] = 0x05B7; - t['patah1d'] = 0x05B7; - t['patah2a'] = 0x05B7; - t['patahhebrew'] = 0x05B7; - t['patahnarrowhebrew'] = 0x05B7; - t['patahquarterhebrew'] = 0x05B7; - t['patahwidehebrew'] = 0x05B7; - t['pazerhebrew'] = 0x05A1; - t['pbopomofo'] = 0x3106; - t['pcircle'] = 0x24DF; - t['pdotaccent'] = 0x1E57; - t['pe'] = 0x05E4; - t['pecyrillic'] = 0x043F; - t['pedagesh'] = 0xFB44; - t['pedageshhebrew'] = 0xFB44; - t['peezisquare'] = 0x333B; - t['pefinaldageshhebrew'] = 0xFB43; - t['peharabic'] = 0x067E; - t['peharmenian'] = 0x057A; - t['pehebrew'] = 0x05E4; - t['pehfinalarabic'] = 0xFB57; - t['pehinitialarabic'] = 0xFB58; - t['pehiragana'] = 0x307A; - t['pehmedialarabic'] = 0xFB59; - t['pekatakana'] = 0x30DA; - t['pemiddlehookcyrillic'] = 0x04A7; - t['perafehebrew'] = 0xFB4E; - t['percent'] = 0x0025; - t['percentarabic'] = 0x066A; - t['percentmonospace'] = 0xFF05; - t['percentsmall'] = 0xFE6A; - t['period'] = 0x002E; - t['periodarmenian'] = 0x0589; - t['periodcentered'] = 0x00B7; - t['periodhalfwidth'] = 0xFF61; - t['periodinferior'] = 0xF6E7; - t['periodmonospace'] = 0xFF0E; - t['periodsmall'] = 0xFE52; - t['periodsuperior'] = 0xF6E8; - t['perispomenigreekcmb'] = 0x0342; - t['perpendicular'] = 0x22A5; - t['perthousand'] = 0x2030; - t['peseta'] = 0x20A7; - t['pfsquare'] = 0x338A; - t['phabengali'] = 0x09AB; - t['phadeva'] = 0x092B; - t['phagujarati'] = 0x0AAB; - t['phagurmukhi'] = 0x0A2B; - t['phi'] = 0x03C6; - t['phi1'] = 0x03D5; - t['phieuphacirclekorean'] = 0x327A; - t['phieuphaparenkorean'] = 0x321A; - t['phieuphcirclekorean'] = 0x326C; - t['phieuphkorean'] = 0x314D; - t['phieuphparenkorean'] = 0x320C; - t['philatin'] = 0x0278; - t['phinthuthai'] = 0x0E3A; - t['phisymbolgreek'] = 0x03D5; - t['phook'] = 0x01A5; - t['phophanthai'] = 0x0E1E; - t['phophungthai'] = 0x0E1C; - t['phosamphaothai'] = 0x0E20; - t['pi'] = 0x03C0; - t['pieupacirclekorean'] = 0x3273; - t['pieupaparenkorean'] = 0x3213; - t['pieupcieuckorean'] = 0x3176; - t['pieupcirclekorean'] = 0x3265; - t['pieupkiyeokkorean'] = 0x3172; - t['pieupkorean'] = 0x3142; - t['pieupparenkorean'] = 0x3205; - t['pieupsioskiyeokkorean'] = 0x3174; - t['pieupsioskorean'] = 0x3144; - t['pieupsiostikeutkorean'] = 0x3175; - t['pieupthieuthkorean'] = 0x3177; - t['pieuptikeutkorean'] = 0x3173; - t['pihiragana'] = 0x3074; - t['pikatakana'] = 0x30D4; - t['pisymbolgreek'] = 0x03D6; - t['piwrarmenian'] = 0x0583; - t['plus'] = 0x002B; - t['plusbelowcmb'] = 0x031F; - t['pluscircle'] = 0x2295; - t['plusminus'] = 0x00B1; - t['plusmod'] = 0x02D6; - t['plusmonospace'] = 0xFF0B; - t['plussmall'] = 0xFE62; - t['plussuperior'] = 0x207A; - t['pmonospace'] = 0xFF50; - t['pmsquare'] = 0x33D8; - t['pohiragana'] = 0x307D; - t['pointingindexdownwhite'] = 0x261F; - t['pointingindexleftwhite'] = 0x261C; - t['pointingindexrightwhite'] = 0x261E; - t['pointingindexupwhite'] = 0x261D; - t['pokatakana'] = 0x30DD; - t['poplathai'] = 0x0E1B; - t['postalmark'] = 0x3012; - t['postalmarkface'] = 0x3020; - t['pparen'] = 0x24AB; - t['precedes'] = 0x227A; - t['prescription'] = 0x211E; - t['primemod'] = 0x02B9; - t['primereversed'] = 0x2035; - t['product'] = 0x220F; - t['projective'] = 0x2305; - t['prolongedkana'] = 0x30FC; - t['propellor'] = 0x2318; - t['propersubset'] = 0x2282; - t['propersuperset'] = 0x2283; - t['proportion'] = 0x2237; - t['proportional'] = 0x221D; - t['psi'] = 0x03C8; - t['psicyrillic'] = 0x0471; - t['psilipneumatacyrilliccmb'] = 0x0486; - t['pssquare'] = 0x33B0; - t['puhiragana'] = 0x3077; - t['pukatakana'] = 0x30D7; - t['pvsquare'] = 0x33B4; - t['pwsquare'] = 0x33BA; - t['q'] = 0x0071; - t['qadeva'] = 0x0958; - t['qadmahebrew'] = 0x05A8; - t['qafarabic'] = 0x0642; - t['qaffinalarabic'] = 0xFED6; - t['qafinitialarabic'] = 0xFED7; - t['qafmedialarabic'] = 0xFED8; - t['qamats'] = 0x05B8; - t['qamats10'] = 0x05B8; - t['qamats1a'] = 0x05B8; - t['qamats1c'] = 0x05B8; - t['qamats27'] = 0x05B8; - t['qamats29'] = 0x05B8; - t['qamats33'] = 0x05B8; - t['qamatsde'] = 0x05B8; - t['qamatshebrew'] = 0x05B8; - t['qamatsnarrowhebrew'] = 0x05B8; - t['qamatsqatanhebrew'] = 0x05B8; - t['qamatsqatannarrowhebrew'] = 0x05B8; - t['qamatsqatanquarterhebrew'] = 0x05B8; - t['qamatsqatanwidehebrew'] = 0x05B8; - t['qamatsquarterhebrew'] = 0x05B8; - t['qamatswidehebrew'] = 0x05B8; - t['qarneyparahebrew'] = 0x059F; - t['qbopomofo'] = 0x3111; - t['qcircle'] = 0x24E0; - t['qhook'] = 0x02A0; - t['qmonospace'] = 0xFF51; - t['qof'] = 0x05E7; - t['qofdagesh'] = 0xFB47; - t['qofdageshhebrew'] = 0xFB47; - t['qofhebrew'] = 0x05E7; - t['qparen'] = 0x24AC; - t['quarternote'] = 0x2669; - t['qubuts'] = 0x05BB; - t['qubuts18'] = 0x05BB; - t['qubuts25'] = 0x05BB; - t['qubuts31'] = 0x05BB; - t['qubutshebrew'] = 0x05BB; - t['qubutsnarrowhebrew'] = 0x05BB; - t['qubutsquarterhebrew'] = 0x05BB; - t['qubutswidehebrew'] = 0x05BB; - t['question'] = 0x003F; - t['questionarabic'] = 0x061F; - t['questionarmenian'] = 0x055E; - t['questiondown'] = 0x00BF; - t['questiondownsmall'] = 0xF7BF; - t['questiongreek'] = 0x037E; - t['questionmonospace'] = 0xFF1F; - t['questionsmall'] = 0xF73F; - t['quotedbl'] = 0x0022; - t['quotedblbase'] = 0x201E; - t['quotedblleft'] = 0x201C; - t['quotedblmonospace'] = 0xFF02; - t['quotedblprime'] = 0x301E; - t['quotedblprimereversed'] = 0x301D; - t['quotedblright'] = 0x201D; - t['quoteleft'] = 0x2018; - t['quoteleftreversed'] = 0x201B; - t['quotereversed'] = 0x201B; - t['quoteright'] = 0x2019; - t['quoterightn'] = 0x0149; - t['quotesinglbase'] = 0x201A; - t['quotesingle'] = 0x0027; - t['quotesinglemonospace'] = 0xFF07; - t['r'] = 0x0072; - t['raarmenian'] = 0x057C; - t['rabengali'] = 0x09B0; - t['racute'] = 0x0155; - t['radeva'] = 0x0930; - t['radical'] = 0x221A; - t['radicalex'] = 0xF8E5; - t['radoverssquare'] = 0x33AE; - t['radoverssquaredsquare'] = 0x33AF; - t['radsquare'] = 0x33AD; - t['rafe'] = 0x05BF; - t['rafehebrew'] = 0x05BF; - t['ragujarati'] = 0x0AB0; - t['ragurmukhi'] = 0x0A30; - t['rahiragana'] = 0x3089; - t['rakatakana'] = 0x30E9; - t['rakatakanahalfwidth'] = 0xFF97; - t['ralowerdiagonalbengali'] = 0x09F1; - t['ramiddlediagonalbengali'] = 0x09F0; - t['ramshorn'] = 0x0264; - t['ratio'] = 0x2236; - t['rbopomofo'] = 0x3116; - t['rcaron'] = 0x0159; - t['rcedilla'] = 0x0157; - t['rcircle'] = 0x24E1; - t['rcommaaccent'] = 0x0157; - t['rdblgrave'] = 0x0211; - t['rdotaccent'] = 0x1E59; - t['rdotbelow'] = 0x1E5B; - t['rdotbelowmacron'] = 0x1E5D; - t['referencemark'] = 0x203B; - t['reflexsubset'] = 0x2286; - t['reflexsuperset'] = 0x2287; - t['registered'] = 0x00AE; - t['registersans'] = 0xF8E8; - t['registerserif'] = 0xF6DA; - t['reharabic'] = 0x0631; - t['reharmenian'] = 0x0580; - t['rehfinalarabic'] = 0xFEAE; - t['rehiragana'] = 0x308C; - t['rekatakana'] = 0x30EC; - t['rekatakanahalfwidth'] = 0xFF9A; - t['resh'] = 0x05E8; - t['reshdageshhebrew'] = 0xFB48; - t['reshhebrew'] = 0x05E8; - t['reversedtilde'] = 0x223D; - t['reviahebrew'] = 0x0597; - t['reviamugrashhebrew'] = 0x0597; - t['revlogicalnot'] = 0x2310; - t['rfishhook'] = 0x027E; - t['rfishhookreversed'] = 0x027F; - t['rhabengali'] = 0x09DD; - t['rhadeva'] = 0x095D; - t['rho'] = 0x03C1; - t['rhook'] = 0x027D; - t['rhookturned'] = 0x027B; - t['rhookturnedsuperior'] = 0x02B5; - t['rhosymbolgreek'] = 0x03F1; - t['rhotichookmod'] = 0x02DE; - t['rieulacirclekorean'] = 0x3271; - t['rieulaparenkorean'] = 0x3211; - t['rieulcirclekorean'] = 0x3263; - t['rieulhieuhkorean'] = 0x3140; - t['rieulkiyeokkorean'] = 0x313A; - t['rieulkiyeoksioskorean'] = 0x3169; - t['rieulkorean'] = 0x3139; - t['rieulmieumkorean'] = 0x313B; - t['rieulpansioskorean'] = 0x316C; - t['rieulparenkorean'] = 0x3203; - t['rieulphieuphkorean'] = 0x313F; - t['rieulpieupkorean'] = 0x313C; - t['rieulpieupsioskorean'] = 0x316B; - t['rieulsioskorean'] = 0x313D; - t['rieulthieuthkorean'] = 0x313E; - t['rieultikeutkorean'] = 0x316A; - t['rieulyeorinhieuhkorean'] = 0x316D; - t['rightangle'] = 0x221F; - t['righttackbelowcmb'] = 0x0319; - t['righttriangle'] = 0x22BF; - t['rihiragana'] = 0x308A; - t['rikatakana'] = 0x30EA; - t['rikatakanahalfwidth'] = 0xFF98; - t['ring'] = 0x02DA; - t['ringbelowcmb'] = 0x0325; - t['ringcmb'] = 0x030A; - t['ringhalfleft'] = 0x02BF; - t['ringhalfleftarmenian'] = 0x0559; - t['ringhalfleftbelowcmb'] = 0x031C; - t['ringhalfleftcentered'] = 0x02D3; - t['ringhalfright'] = 0x02BE; - t['ringhalfrightbelowcmb'] = 0x0339; - t['ringhalfrightcentered'] = 0x02D2; - t['rinvertedbreve'] = 0x0213; - t['rittorusquare'] = 0x3351; - t['rlinebelow'] = 0x1E5F; - t['rlongleg'] = 0x027C; - t['rlonglegturned'] = 0x027A; - t['rmonospace'] = 0xFF52; - t['rohiragana'] = 0x308D; - t['rokatakana'] = 0x30ED; - t['rokatakanahalfwidth'] = 0xFF9B; - t['roruathai'] = 0x0E23; - t['rparen'] = 0x24AD; - t['rrabengali'] = 0x09DC; - t['rradeva'] = 0x0931; - t['rragurmukhi'] = 0x0A5C; - t['rreharabic'] = 0x0691; - t['rrehfinalarabic'] = 0xFB8D; - t['rrvocalicbengali'] = 0x09E0; - t['rrvocalicdeva'] = 0x0960; - t['rrvocalicgujarati'] = 0x0AE0; - t['rrvocalicvowelsignbengali'] = 0x09C4; - t['rrvocalicvowelsigndeva'] = 0x0944; - t['rrvocalicvowelsigngujarati'] = 0x0AC4; - t['rsuperior'] = 0xF6F1; - t['rtblock'] = 0x2590; - t['rturned'] = 0x0279; - t['rturnedsuperior'] = 0x02B4; - t['ruhiragana'] = 0x308B; - t['rukatakana'] = 0x30EB; - t['rukatakanahalfwidth'] = 0xFF99; - t['rupeemarkbengali'] = 0x09F2; - t['rupeesignbengali'] = 0x09F3; - t['rupiah'] = 0xF6DD; - t['ruthai'] = 0x0E24; - t['rvocalicbengali'] = 0x098B; - t['rvocalicdeva'] = 0x090B; - t['rvocalicgujarati'] = 0x0A8B; - t['rvocalicvowelsignbengali'] = 0x09C3; - t['rvocalicvowelsigndeva'] = 0x0943; - t['rvocalicvowelsigngujarati'] = 0x0AC3; - t['s'] = 0x0073; - t['sabengali'] = 0x09B8; - t['sacute'] = 0x015B; - t['sacutedotaccent'] = 0x1E65; - t['sadarabic'] = 0x0635; - t['sadeva'] = 0x0938; - t['sadfinalarabic'] = 0xFEBA; - t['sadinitialarabic'] = 0xFEBB; - t['sadmedialarabic'] = 0xFEBC; - t['sagujarati'] = 0x0AB8; - t['sagurmukhi'] = 0x0A38; - t['sahiragana'] = 0x3055; - t['sakatakana'] = 0x30B5; - t['sakatakanahalfwidth'] = 0xFF7B; - t['sallallahoualayhewasallamarabic'] = 0xFDFA; - t['samekh'] = 0x05E1; - t['samekhdagesh'] = 0xFB41; - t['samekhdageshhebrew'] = 0xFB41; - t['samekhhebrew'] = 0x05E1; - t['saraaathai'] = 0x0E32; - t['saraaethai'] = 0x0E41; - t['saraaimaimalaithai'] = 0x0E44; - t['saraaimaimuanthai'] = 0x0E43; - t['saraamthai'] = 0x0E33; - t['saraathai'] = 0x0E30; - t['saraethai'] = 0x0E40; - t['saraiileftthai'] = 0xF886; - t['saraiithai'] = 0x0E35; - t['saraileftthai'] = 0xF885; - t['saraithai'] = 0x0E34; - t['saraothai'] = 0x0E42; - t['saraueeleftthai'] = 0xF888; - t['saraueethai'] = 0x0E37; - t['saraueleftthai'] = 0xF887; - t['sarauethai'] = 0x0E36; - t['sarauthai'] = 0x0E38; - t['sarauuthai'] = 0x0E39; - t['sbopomofo'] = 0x3119; - t['scaron'] = 0x0161; - t['scarondotaccent'] = 0x1E67; - t['scedilla'] = 0x015F; - t['schwa'] = 0x0259; - t['schwacyrillic'] = 0x04D9; - t['schwadieresiscyrillic'] = 0x04DB; - t['schwahook'] = 0x025A; - t['scircle'] = 0x24E2; - t['scircumflex'] = 0x015D; - t['scommaaccent'] = 0x0219; - t['sdotaccent'] = 0x1E61; - t['sdotbelow'] = 0x1E63; - t['sdotbelowdotaccent'] = 0x1E69; - t['seagullbelowcmb'] = 0x033C; - t['second'] = 0x2033; - t['secondtonechinese'] = 0x02CA; - t['section'] = 0x00A7; - t['seenarabic'] = 0x0633; - t['seenfinalarabic'] = 0xFEB2; - t['seeninitialarabic'] = 0xFEB3; - t['seenmedialarabic'] = 0xFEB4; - t['segol'] = 0x05B6; - t['segol13'] = 0x05B6; - t['segol1f'] = 0x05B6; - t['segol2c'] = 0x05B6; - t['segolhebrew'] = 0x05B6; - t['segolnarrowhebrew'] = 0x05B6; - t['segolquarterhebrew'] = 0x05B6; - t['segoltahebrew'] = 0x0592; - t['segolwidehebrew'] = 0x05B6; - t['seharmenian'] = 0x057D; - t['sehiragana'] = 0x305B; - t['sekatakana'] = 0x30BB; - t['sekatakanahalfwidth'] = 0xFF7E; - t['semicolon'] = 0x003B; - t['semicolonarabic'] = 0x061B; - t['semicolonmonospace'] = 0xFF1B; - t['semicolonsmall'] = 0xFE54; - t['semivoicedmarkkana'] = 0x309C; - t['semivoicedmarkkanahalfwidth'] = 0xFF9F; - t['sentisquare'] = 0x3322; - t['sentosquare'] = 0x3323; - t['seven'] = 0x0037; - t['sevenarabic'] = 0x0667; - t['sevenbengali'] = 0x09ED; - t['sevencircle'] = 0x2466; - t['sevencircleinversesansserif'] = 0x2790; - t['sevendeva'] = 0x096D; - t['seveneighths'] = 0x215E; - t['sevengujarati'] = 0x0AED; - t['sevengurmukhi'] = 0x0A6D; - t['sevenhackarabic'] = 0x0667; - t['sevenhangzhou'] = 0x3027; - t['sevenideographicparen'] = 0x3226; - t['seveninferior'] = 0x2087; - t['sevenmonospace'] = 0xFF17; - t['sevenoldstyle'] = 0xF737; - t['sevenparen'] = 0x247A; - t['sevenperiod'] = 0x248E; - t['sevenpersian'] = 0x06F7; - t['sevenroman'] = 0x2176; - t['sevensuperior'] = 0x2077; - t['seventeencircle'] = 0x2470; - t['seventeenparen'] = 0x2484; - t['seventeenperiod'] = 0x2498; - t['seventhai'] = 0x0E57; - t['sfthyphen'] = 0x00AD; - t['shaarmenian'] = 0x0577; - t['shabengali'] = 0x09B6; - t['shacyrillic'] = 0x0448; - t['shaddaarabic'] = 0x0651; - t['shaddadammaarabic'] = 0xFC61; - t['shaddadammatanarabic'] = 0xFC5E; - t['shaddafathaarabic'] = 0xFC60; - t['shaddakasraarabic'] = 0xFC62; - t['shaddakasratanarabic'] = 0xFC5F; - t['shade'] = 0x2592; - t['shadedark'] = 0x2593; - t['shadelight'] = 0x2591; - t['shademedium'] = 0x2592; - t['shadeva'] = 0x0936; - t['shagujarati'] = 0x0AB6; - t['shagurmukhi'] = 0x0A36; - t['shalshelethebrew'] = 0x0593; - t['shbopomofo'] = 0x3115; - t['shchacyrillic'] = 0x0449; - t['sheenarabic'] = 0x0634; - t['sheenfinalarabic'] = 0xFEB6; - t['sheeninitialarabic'] = 0xFEB7; - t['sheenmedialarabic'] = 0xFEB8; - t['sheicoptic'] = 0x03E3; - t['sheqel'] = 0x20AA; - t['sheqelhebrew'] = 0x20AA; - t['sheva'] = 0x05B0; - t['sheva115'] = 0x05B0; - t['sheva15'] = 0x05B0; - t['sheva22'] = 0x05B0; - t['sheva2e'] = 0x05B0; - t['shevahebrew'] = 0x05B0; - t['shevanarrowhebrew'] = 0x05B0; - t['shevaquarterhebrew'] = 0x05B0; - t['shevawidehebrew'] = 0x05B0; - t['shhacyrillic'] = 0x04BB; - t['shimacoptic'] = 0x03ED; - t['shin'] = 0x05E9; - t['shindagesh'] = 0xFB49; - t['shindageshhebrew'] = 0xFB49; - t['shindageshshindot'] = 0xFB2C; - t['shindageshshindothebrew'] = 0xFB2C; - t['shindageshsindot'] = 0xFB2D; - t['shindageshsindothebrew'] = 0xFB2D; - t['shindothebrew'] = 0x05C1; - t['shinhebrew'] = 0x05E9; - t['shinshindot'] = 0xFB2A; - t['shinshindothebrew'] = 0xFB2A; - t['shinsindot'] = 0xFB2B; - t['shinsindothebrew'] = 0xFB2B; - t['shook'] = 0x0282; - t['sigma'] = 0x03C3; - t['sigma1'] = 0x03C2; - t['sigmafinal'] = 0x03C2; - t['sigmalunatesymbolgreek'] = 0x03F2; - t['sihiragana'] = 0x3057; - t['sikatakana'] = 0x30B7; - t['sikatakanahalfwidth'] = 0xFF7C; - t['siluqhebrew'] = 0x05BD; - t['siluqlefthebrew'] = 0x05BD; - t['similar'] = 0x223C; - t['sindothebrew'] = 0x05C2; - t['siosacirclekorean'] = 0x3274; - t['siosaparenkorean'] = 0x3214; - t['sioscieuckorean'] = 0x317E; - t['sioscirclekorean'] = 0x3266; - t['sioskiyeokkorean'] = 0x317A; - t['sioskorean'] = 0x3145; - t['siosnieunkorean'] = 0x317B; - t['siosparenkorean'] = 0x3206; - t['siospieupkorean'] = 0x317D; - t['siostikeutkorean'] = 0x317C; - t['six'] = 0x0036; - t['sixarabic'] = 0x0666; - t['sixbengali'] = 0x09EC; - t['sixcircle'] = 0x2465; - t['sixcircleinversesansserif'] = 0x278F; - t['sixdeva'] = 0x096C; - t['sixgujarati'] = 0x0AEC; - t['sixgurmukhi'] = 0x0A6C; - t['sixhackarabic'] = 0x0666; - t['sixhangzhou'] = 0x3026; - t['sixideographicparen'] = 0x3225; - t['sixinferior'] = 0x2086; - t['sixmonospace'] = 0xFF16; - t['sixoldstyle'] = 0xF736; - t['sixparen'] = 0x2479; - t['sixperiod'] = 0x248D; - t['sixpersian'] = 0x06F6; - t['sixroman'] = 0x2175; - t['sixsuperior'] = 0x2076; - t['sixteencircle'] = 0x246F; - t['sixteencurrencydenominatorbengali'] = 0x09F9; - t['sixteenparen'] = 0x2483; - t['sixteenperiod'] = 0x2497; - t['sixthai'] = 0x0E56; - t['slash'] = 0x002F; - t['slashmonospace'] = 0xFF0F; - t['slong'] = 0x017F; - t['slongdotaccent'] = 0x1E9B; - t['smileface'] = 0x263A; - t['smonospace'] = 0xFF53; - t['sofpasuqhebrew'] = 0x05C3; - t['softhyphen'] = 0x00AD; - t['softsigncyrillic'] = 0x044C; - t['sohiragana'] = 0x305D; - t['sokatakana'] = 0x30BD; - t['sokatakanahalfwidth'] = 0xFF7F; - t['soliduslongoverlaycmb'] = 0x0338; - t['solidusshortoverlaycmb'] = 0x0337; - t['sorusithai'] = 0x0E29; - t['sosalathai'] = 0x0E28; - t['sosothai'] = 0x0E0B; - t['sosuathai'] = 0x0E2A; - t['space'] = 0x0020; - t['spacehackarabic'] = 0x0020; - t['spade'] = 0x2660; - t['spadesuitblack'] = 0x2660; - t['spadesuitwhite'] = 0x2664; - t['sparen'] = 0x24AE; - t['squarebelowcmb'] = 0x033B; - t['squarecc'] = 0x33C4; - t['squarecm'] = 0x339D; - t['squarediagonalcrosshatchfill'] = 0x25A9; - t['squarehorizontalfill'] = 0x25A4; - t['squarekg'] = 0x338F; - t['squarekm'] = 0x339E; - t['squarekmcapital'] = 0x33CE; - t['squareln'] = 0x33D1; - t['squarelog'] = 0x33D2; - t['squaremg'] = 0x338E; - t['squaremil'] = 0x33D5; - t['squaremm'] = 0x339C; - t['squaremsquared'] = 0x33A1; - t['squareorthogonalcrosshatchfill'] = 0x25A6; - t['squareupperlefttolowerrightfill'] = 0x25A7; - t['squareupperrighttolowerleftfill'] = 0x25A8; - t['squareverticalfill'] = 0x25A5; - t['squarewhitewithsmallblack'] = 0x25A3; - t['srsquare'] = 0x33DB; - t['ssabengali'] = 0x09B7; - t['ssadeva'] = 0x0937; - t['ssagujarati'] = 0x0AB7; - t['ssangcieuckorean'] = 0x3149; - t['ssanghieuhkorean'] = 0x3185; - t['ssangieungkorean'] = 0x3180; - t['ssangkiyeokkorean'] = 0x3132; - t['ssangnieunkorean'] = 0x3165; - t['ssangpieupkorean'] = 0x3143; - t['ssangsioskorean'] = 0x3146; - t['ssangtikeutkorean'] = 0x3138; - t['ssuperior'] = 0xF6F2; - t['sterling'] = 0x00A3; - t['sterlingmonospace'] = 0xFFE1; - t['strokelongoverlaycmb'] = 0x0336; - t['strokeshortoverlaycmb'] = 0x0335; - t['subset'] = 0x2282; - t['subsetnotequal'] = 0x228A; - t['subsetorequal'] = 0x2286; - t['succeeds'] = 0x227B; - t['suchthat'] = 0x220B; - t['suhiragana'] = 0x3059; - t['sukatakana'] = 0x30B9; - t['sukatakanahalfwidth'] = 0xFF7D; - t['sukunarabic'] = 0x0652; - t['summation'] = 0x2211; - t['sun'] = 0x263C; - t['superset'] = 0x2283; - t['supersetnotequal'] = 0x228B; - t['supersetorequal'] = 0x2287; - t['svsquare'] = 0x33DC; - t['syouwaerasquare'] = 0x337C; - t['t'] = 0x0074; - t['tabengali'] = 0x09A4; - t['tackdown'] = 0x22A4; - t['tackleft'] = 0x22A3; - t['tadeva'] = 0x0924; - t['tagujarati'] = 0x0AA4; - t['tagurmukhi'] = 0x0A24; - t['taharabic'] = 0x0637; - t['tahfinalarabic'] = 0xFEC2; - t['tahinitialarabic'] = 0xFEC3; - t['tahiragana'] = 0x305F; - t['tahmedialarabic'] = 0xFEC4; - t['taisyouerasquare'] = 0x337D; - t['takatakana'] = 0x30BF; - t['takatakanahalfwidth'] = 0xFF80; - t['tatweelarabic'] = 0x0640; - t['tau'] = 0x03C4; - t['tav'] = 0x05EA; - t['tavdages'] = 0xFB4A; - t['tavdagesh'] = 0xFB4A; - t['tavdageshhebrew'] = 0xFB4A; - t['tavhebrew'] = 0x05EA; - t['tbar'] = 0x0167; - t['tbopomofo'] = 0x310A; - t['tcaron'] = 0x0165; - t['tccurl'] = 0x02A8; - t['tcedilla'] = 0x0163; - t['tcheharabic'] = 0x0686; - t['tchehfinalarabic'] = 0xFB7B; - t['tchehinitialarabic'] = 0xFB7C; - t['tchehmedialarabic'] = 0xFB7D; - t['tcircle'] = 0x24E3; - t['tcircumflexbelow'] = 0x1E71; - t['tcommaaccent'] = 0x0163; - t['tdieresis'] = 0x1E97; - t['tdotaccent'] = 0x1E6B; - t['tdotbelow'] = 0x1E6D; - t['tecyrillic'] = 0x0442; - t['tedescendercyrillic'] = 0x04AD; - t['teharabic'] = 0x062A; - t['tehfinalarabic'] = 0xFE96; - t['tehhahinitialarabic'] = 0xFCA2; - t['tehhahisolatedarabic'] = 0xFC0C; - t['tehinitialarabic'] = 0xFE97; - t['tehiragana'] = 0x3066; - t['tehjeeminitialarabic'] = 0xFCA1; - t['tehjeemisolatedarabic'] = 0xFC0B; - t['tehmarbutaarabic'] = 0x0629; - t['tehmarbutafinalarabic'] = 0xFE94; - t['tehmedialarabic'] = 0xFE98; - t['tehmeeminitialarabic'] = 0xFCA4; - t['tehmeemisolatedarabic'] = 0xFC0E; - t['tehnoonfinalarabic'] = 0xFC73; - t['tekatakana'] = 0x30C6; - t['tekatakanahalfwidth'] = 0xFF83; - t['telephone'] = 0x2121; - t['telephoneblack'] = 0x260E; - t['telishagedolahebrew'] = 0x05A0; - t['telishaqetanahebrew'] = 0x05A9; - t['tencircle'] = 0x2469; - t['tenideographicparen'] = 0x3229; - t['tenparen'] = 0x247D; - t['tenperiod'] = 0x2491; - t['tenroman'] = 0x2179; - t['tesh'] = 0x02A7; - t['tet'] = 0x05D8; - t['tetdagesh'] = 0xFB38; - t['tetdageshhebrew'] = 0xFB38; - t['tethebrew'] = 0x05D8; - t['tetsecyrillic'] = 0x04B5; - t['tevirhebrew'] = 0x059B; - t['tevirlefthebrew'] = 0x059B; - t['thabengali'] = 0x09A5; - t['thadeva'] = 0x0925; - t['thagujarati'] = 0x0AA5; - t['thagurmukhi'] = 0x0A25; - t['thalarabic'] = 0x0630; - t['thalfinalarabic'] = 0xFEAC; - t['thanthakhatlowleftthai'] = 0xF898; - t['thanthakhatlowrightthai'] = 0xF897; - t['thanthakhatthai'] = 0x0E4C; - t['thanthakhatupperleftthai'] = 0xF896; - t['theharabic'] = 0x062B; - t['thehfinalarabic'] = 0xFE9A; - t['thehinitialarabic'] = 0xFE9B; - t['thehmedialarabic'] = 0xFE9C; - t['thereexists'] = 0x2203; - t['therefore'] = 0x2234; - t['theta'] = 0x03B8; - t['theta1'] = 0x03D1; - t['thetasymbolgreek'] = 0x03D1; - t['thieuthacirclekorean'] = 0x3279; - t['thieuthaparenkorean'] = 0x3219; - t['thieuthcirclekorean'] = 0x326B; - t['thieuthkorean'] = 0x314C; - t['thieuthparenkorean'] = 0x320B; - t['thirteencircle'] = 0x246C; - t['thirteenparen'] = 0x2480; - t['thirteenperiod'] = 0x2494; - t['thonangmonthothai'] = 0x0E11; - t['thook'] = 0x01AD; - t['thophuthaothai'] = 0x0E12; - t['thorn'] = 0x00FE; - t['thothahanthai'] = 0x0E17; - t['thothanthai'] = 0x0E10; - t['thothongthai'] = 0x0E18; - t['thothungthai'] = 0x0E16; - t['thousandcyrillic'] = 0x0482; - t['thousandsseparatorarabic'] = 0x066C; - t['thousandsseparatorpersian'] = 0x066C; - t['three'] = 0x0033; - t['threearabic'] = 0x0663; - t['threebengali'] = 0x09E9; - t['threecircle'] = 0x2462; - t['threecircleinversesansserif'] = 0x278C; - t['threedeva'] = 0x0969; - t['threeeighths'] = 0x215C; - t['threegujarati'] = 0x0AE9; - t['threegurmukhi'] = 0x0A69; - t['threehackarabic'] = 0x0663; - t['threehangzhou'] = 0x3023; - t['threeideographicparen'] = 0x3222; - t['threeinferior'] = 0x2083; - t['threemonospace'] = 0xFF13; - t['threenumeratorbengali'] = 0x09F6; - t['threeoldstyle'] = 0xF733; - t['threeparen'] = 0x2476; - t['threeperiod'] = 0x248A; - t['threepersian'] = 0x06F3; - t['threequarters'] = 0x00BE; - t['threequartersemdash'] = 0xF6DE; - t['threeroman'] = 0x2172; - t['threesuperior'] = 0x00B3; - t['threethai'] = 0x0E53; - t['thzsquare'] = 0x3394; - t['tihiragana'] = 0x3061; - t['tikatakana'] = 0x30C1; - t['tikatakanahalfwidth'] = 0xFF81; - t['tikeutacirclekorean'] = 0x3270; - t['tikeutaparenkorean'] = 0x3210; - t['tikeutcirclekorean'] = 0x3262; - t['tikeutkorean'] = 0x3137; - t['tikeutparenkorean'] = 0x3202; - t['tilde'] = 0x02DC; - t['tildebelowcmb'] = 0x0330; - t['tildecmb'] = 0x0303; - t['tildecomb'] = 0x0303; - t['tildedoublecmb'] = 0x0360; - t['tildeoperator'] = 0x223C; - t['tildeoverlaycmb'] = 0x0334; - t['tildeverticalcmb'] = 0x033E; - t['timescircle'] = 0x2297; - t['tipehahebrew'] = 0x0596; - t['tipehalefthebrew'] = 0x0596; - t['tippigurmukhi'] = 0x0A70; - t['titlocyrilliccmb'] = 0x0483; - t['tiwnarmenian'] = 0x057F; - t['tlinebelow'] = 0x1E6F; - t['tmonospace'] = 0xFF54; - t['toarmenian'] = 0x0569; - t['tohiragana'] = 0x3068; - t['tokatakana'] = 0x30C8; - t['tokatakanahalfwidth'] = 0xFF84; - t['tonebarextrahighmod'] = 0x02E5; - t['tonebarextralowmod'] = 0x02E9; - t['tonebarhighmod'] = 0x02E6; - t['tonebarlowmod'] = 0x02E8; - t['tonebarmidmod'] = 0x02E7; - t['tonefive'] = 0x01BD; - t['tonesix'] = 0x0185; - t['tonetwo'] = 0x01A8; - t['tonos'] = 0x0384; - t['tonsquare'] = 0x3327; - t['topatakthai'] = 0x0E0F; - t['tortoiseshellbracketleft'] = 0x3014; - t['tortoiseshellbracketleftsmall'] = 0xFE5D; - t['tortoiseshellbracketleftvertical'] = 0xFE39; - t['tortoiseshellbracketright'] = 0x3015; - t['tortoiseshellbracketrightsmall'] = 0xFE5E; - t['tortoiseshellbracketrightvertical'] = 0xFE3A; - t['totaothai'] = 0x0E15; - t['tpalatalhook'] = 0x01AB; - t['tparen'] = 0x24AF; - t['trademark'] = 0x2122; - t['trademarksans'] = 0xF8EA; - t['trademarkserif'] = 0xF6DB; - t['tretroflexhook'] = 0x0288; - t['triagdn'] = 0x25BC; - t['triaglf'] = 0x25C4; - t['triagrt'] = 0x25BA; - t['triagup'] = 0x25B2; - t['ts'] = 0x02A6; - t['tsadi'] = 0x05E6; - t['tsadidagesh'] = 0xFB46; - t['tsadidageshhebrew'] = 0xFB46; - t['tsadihebrew'] = 0x05E6; - t['tsecyrillic'] = 0x0446; - t['tsere'] = 0x05B5; - t['tsere12'] = 0x05B5; - t['tsere1e'] = 0x05B5; - t['tsere2b'] = 0x05B5; - t['tserehebrew'] = 0x05B5; - t['tserenarrowhebrew'] = 0x05B5; - t['tserequarterhebrew'] = 0x05B5; - t['tserewidehebrew'] = 0x05B5; - t['tshecyrillic'] = 0x045B; - t['tsuperior'] = 0xF6F3; - t['ttabengali'] = 0x099F; - t['ttadeva'] = 0x091F; - t['ttagujarati'] = 0x0A9F; - t['ttagurmukhi'] = 0x0A1F; - t['tteharabic'] = 0x0679; - t['ttehfinalarabic'] = 0xFB67; - t['ttehinitialarabic'] = 0xFB68; - t['ttehmedialarabic'] = 0xFB69; - t['tthabengali'] = 0x09A0; - t['tthadeva'] = 0x0920; - t['tthagujarati'] = 0x0AA0; - t['tthagurmukhi'] = 0x0A20; - t['tturned'] = 0x0287; - t['tuhiragana'] = 0x3064; - t['tukatakana'] = 0x30C4; - t['tukatakanahalfwidth'] = 0xFF82; - t['tusmallhiragana'] = 0x3063; - t['tusmallkatakana'] = 0x30C3; - t['tusmallkatakanahalfwidth'] = 0xFF6F; - t['twelvecircle'] = 0x246B; - t['twelveparen'] = 0x247F; - t['twelveperiod'] = 0x2493; - t['twelveroman'] = 0x217B; - t['twentycircle'] = 0x2473; - t['twentyhangzhou'] = 0x5344; - t['twentyparen'] = 0x2487; - t['twentyperiod'] = 0x249B; - t['two'] = 0x0032; - t['twoarabic'] = 0x0662; - t['twobengali'] = 0x09E8; - t['twocircle'] = 0x2461; - t['twocircleinversesansserif'] = 0x278B; - t['twodeva'] = 0x0968; - t['twodotenleader'] = 0x2025; - t['twodotleader'] = 0x2025; - t['twodotleadervertical'] = 0xFE30; - t['twogujarati'] = 0x0AE8; - t['twogurmukhi'] = 0x0A68; - t['twohackarabic'] = 0x0662; - t['twohangzhou'] = 0x3022; - t['twoideographicparen'] = 0x3221; - t['twoinferior'] = 0x2082; - t['twomonospace'] = 0xFF12; - t['twonumeratorbengali'] = 0x09F5; - t['twooldstyle'] = 0xF732; - t['twoparen'] = 0x2475; - t['twoperiod'] = 0x2489; - t['twopersian'] = 0x06F2; - t['tworoman'] = 0x2171; - t['twostroke'] = 0x01BB; - t['twosuperior'] = 0x00B2; - t['twothai'] = 0x0E52; - t['twothirds'] = 0x2154; - t['u'] = 0x0075; - t['uacute'] = 0x00FA; - t['ubar'] = 0x0289; - t['ubengali'] = 0x0989; - t['ubopomofo'] = 0x3128; - t['ubreve'] = 0x016D; - t['ucaron'] = 0x01D4; - t['ucircle'] = 0x24E4; - t['ucircumflex'] = 0x00FB; - t['ucircumflexbelow'] = 0x1E77; - t['ucyrillic'] = 0x0443; - t['udattadeva'] = 0x0951; - t['udblacute'] = 0x0171; - t['udblgrave'] = 0x0215; - t['udeva'] = 0x0909; - t['udieresis'] = 0x00FC; - t['udieresisacute'] = 0x01D8; - t['udieresisbelow'] = 0x1E73; - t['udieresiscaron'] = 0x01DA; - t['udieresiscyrillic'] = 0x04F1; - t['udieresisgrave'] = 0x01DC; - t['udieresismacron'] = 0x01D6; - t['udotbelow'] = 0x1EE5; - t['ugrave'] = 0x00F9; - t['ugujarati'] = 0x0A89; - t['ugurmukhi'] = 0x0A09; - t['uhiragana'] = 0x3046; - t['uhookabove'] = 0x1EE7; - t['uhorn'] = 0x01B0; - t['uhornacute'] = 0x1EE9; - t['uhorndotbelow'] = 0x1EF1; - t['uhorngrave'] = 0x1EEB; - t['uhornhookabove'] = 0x1EED; - t['uhorntilde'] = 0x1EEF; - t['uhungarumlaut'] = 0x0171; - t['uhungarumlautcyrillic'] = 0x04F3; - t['uinvertedbreve'] = 0x0217; - t['ukatakana'] = 0x30A6; - t['ukatakanahalfwidth'] = 0xFF73; - t['ukcyrillic'] = 0x0479; - t['ukorean'] = 0x315C; - t['umacron'] = 0x016B; - t['umacroncyrillic'] = 0x04EF; - t['umacrondieresis'] = 0x1E7B; - t['umatragurmukhi'] = 0x0A41; - t['umonospace'] = 0xFF55; - t['underscore'] = 0x005F; - t['underscoredbl'] = 0x2017; - t['underscoremonospace'] = 0xFF3F; - t['underscorevertical'] = 0xFE33; - t['underscorewavy'] = 0xFE4F; - t['union'] = 0x222A; - t['universal'] = 0x2200; - t['uogonek'] = 0x0173; - t['uparen'] = 0x24B0; - t['upblock'] = 0x2580; - t['upperdothebrew'] = 0x05C4; - t['upsilon'] = 0x03C5; - t['upsilondieresis'] = 0x03CB; - t['upsilondieresistonos'] = 0x03B0; - t['upsilonlatin'] = 0x028A; - t['upsilontonos'] = 0x03CD; - t['uptackbelowcmb'] = 0x031D; - t['uptackmod'] = 0x02D4; - t['uragurmukhi'] = 0x0A73; - t['uring'] = 0x016F; - t['ushortcyrillic'] = 0x045E; - t['usmallhiragana'] = 0x3045; - t['usmallkatakana'] = 0x30A5; - t['usmallkatakanahalfwidth'] = 0xFF69; - t['ustraightcyrillic'] = 0x04AF; - t['ustraightstrokecyrillic'] = 0x04B1; - t['utilde'] = 0x0169; - t['utildeacute'] = 0x1E79; - t['utildebelow'] = 0x1E75; - t['uubengali'] = 0x098A; - t['uudeva'] = 0x090A; - t['uugujarati'] = 0x0A8A; - t['uugurmukhi'] = 0x0A0A; - t['uumatragurmukhi'] = 0x0A42; - t['uuvowelsignbengali'] = 0x09C2; - t['uuvowelsigndeva'] = 0x0942; - t['uuvowelsigngujarati'] = 0x0AC2; - t['uvowelsignbengali'] = 0x09C1; - t['uvowelsigndeva'] = 0x0941; - t['uvowelsigngujarati'] = 0x0AC1; - t['v'] = 0x0076; - t['vadeva'] = 0x0935; - t['vagujarati'] = 0x0AB5; - t['vagurmukhi'] = 0x0A35; - t['vakatakana'] = 0x30F7; - t['vav'] = 0x05D5; - t['vavdagesh'] = 0xFB35; - t['vavdagesh65'] = 0xFB35; - t['vavdageshhebrew'] = 0xFB35; - t['vavhebrew'] = 0x05D5; - t['vavholam'] = 0xFB4B; - t['vavholamhebrew'] = 0xFB4B; - t['vavvavhebrew'] = 0x05F0; - t['vavyodhebrew'] = 0x05F1; - t['vcircle'] = 0x24E5; - t['vdotbelow'] = 0x1E7F; - t['vecyrillic'] = 0x0432; - t['veharabic'] = 0x06A4; - t['vehfinalarabic'] = 0xFB6B; - t['vehinitialarabic'] = 0xFB6C; - t['vehmedialarabic'] = 0xFB6D; - t['vekatakana'] = 0x30F9; - t['venus'] = 0x2640; - t['verticalbar'] = 0x007C; - t['verticallineabovecmb'] = 0x030D; - t['verticallinebelowcmb'] = 0x0329; - t['verticallinelowmod'] = 0x02CC; - t['verticallinemod'] = 0x02C8; - t['vewarmenian'] = 0x057E; - t['vhook'] = 0x028B; - t['vikatakana'] = 0x30F8; - t['viramabengali'] = 0x09CD; - t['viramadeva'] = 0x094D; - t['viramagujarati'] = 0x0ACD; - t['visargabengali'] = 0x0983; - t['visargadeva'] = 0x0903; - t['visargagujarati'] = 0x0A83; - t['vmonospace'] = 0xFF56; - t['voarmenian'] = 0x0578; - t['voicediterationhiragana'] = 0x309E; - t['voicediterationkatakana'] = 0x30FE; - t['voicedmarkkana'] = 0x309B; - t['voicedmarkkanahalfwidth'] = 0xFF9E; - t['vokatakana'] = 0x30FA; - t['vparen'] = 0x24B1; - t['vtilde'] = 0x1E7D; - t['vturned'] = 0x028C; - t['vuhiragana'] = 0x3094; - t['vukatakana'] = 0x30F4; - t['w'] = 0x0077; - t['wacute'] = 0x1E83; - t['waekorean'] = 0x3159; - t['wahiragana'] = 0x308F; - t['wakatakana'] = 0x30EF; - t['wakatakanahalfwidth'] = 0xFF9C; - t['wakorean'] = 0x3158; - t['wasmallhiragana'] = 0x308E; - t['wasmallkatakana'] = 0x30EE; - t['wattosquare'] = 0x3357; - t['wavedash'] = 0x301C; - t['wavyunderscorevertical'] = 0xFE34; - t['wawarabic'] = 0x0648; - t['wawfinalarabic'] = 0xFEEE; - t['wawhamzaabovearabic'] = 0x0624; - t['wawhamzaabovefinalarabic'] = 0xFE86; - t['wbsquare'] = 0x33DD; - t['wcircle'] = 0x24E6; - t['wcircumflex'] = 0x0175; - t['wdieresis'] = 0x1E85; - t['wdotaccent'] = 0x1E87; - t['wdotbelow'] = 0x1E89; - t['wehiragana'] = 0x3091; - t['weierstrass'] = 0x2118; - t['wekatakana'] = 0x30F1; - t['wekorean'] = 0x315E; - t['weokorean'] = 0x315D; - t['wgrave'] = 0x1E81; - t['whitebullet'] = 0x25E6; - t['whitecircle'] = 0x25CB; - t['whitecircleinverse'] = 0x25D9; - t['whitecornerbracketleft'] = 0x300E; - t['whitecornerbracketleftvertical'] = 0xFE43; - t['whitecornerbracketright'] = 0x300F; - t['whitecornerbracketrightvertical'] = 0xFE44; - t['whitediamond'] = 0x25C7; - t['whitediamondcontainingblacksmalldiamond'] = 0x25C8; - t['whitedownpointingsmalltriangle'] = 0x25BF; - t['whitedownpointingtriangle'] = 0x25BD; - t['whiteleftpointingsmalltriangle'] = 0x25C3; - t['whiteleftpointingtriangle'] = 0x25C1; - t['whitelenticularbracketleft'] = 0x3016; - t['whitelenticularbracketright'] = 0x3017; - t['whiterightpointingsmalltriangle'] = 0x25B9; - t['whiterightpointingtriangle'] = 0x25B7; - t['whitesmallsquare'] = 0x25AB; - t['whitesmilingface'] = 0x263A; - t['whitesquare'] = 0x25A1; - t['whitestar'] = 0x2606; - t['whitetelephone'] = 0x260F; - t['whitetortoiseshellbracketleft'] = 0x3018; - t['whitetortoiseshellbracketright'] = 0x3019; - t['whiteuppointingsmalltriangle'] = 0x25B5; - t['whiteuppointingtriangle'] = 0x25B3; - t['wihiragana'] = 0x3090; - t['wikatakana'] = 0x30F0; - t['wikorean'] = 0x315F; - t['wmonospace'] = 0xFF57; - t['wohiragana'] = 0x3092; - t['wokatakana'] = 0x30F2; - t['wokatakanahalfwidth'] = 0xFF66; - t['won'] = 0x20A9; - t['wonmonospace'] = 0xFFE6; - t['wowaenthai'] = 0x0E27; - t['wparen'] = 0x24B2; - t['wring'] = 0x1E98; - t['wsuperior'] = 0x02B7; - t['wturned'] = 0x028D; - t['wynn'] = 0x01BF; - t['x'] = 0x0078; - t['xabovecmb'] = 0x033D; - t['xbopomofo'] = 0x3112; - t['xcircle'] = 0x24E7; - t['xdieresis'] = 0x1E8D; - t['xdotaccent'] = 0x1E8B; - t['xeharmenian'] = 0x056D; - t['xi'] = 0x03BE; - t['xmonospace'] = 0xFF58; - t['xparen'] = 0x24B3; - t['xsuperior'] = 0x02E3; - t['y'] = 0x0079; - t['yaadosquare'] = 0x334E; - t['yabengali'] = 0x09AF; - t['yacute'] = 0x00FD; - t['yadeva'] = 0x092F; - t['yaekorean'] = 0x3152; - t['yagujarati'] = 0x0AAF; - t['yagurmukhi'] = 0x0A2F; - t['yahiragana'] = 0x3084; - t['yakatakana'] = 0x30E4; - t['yakatakanahalfwidth'] = 0xFF94; - t['yakorean'] = 0x3151; - t['yamakkanthai'] = 0x0E4E; - t['yasmallhiragana'] = 0x3083; - t['yasmallkatakana'] = 0x30E3; - t['yasmallkatakanahalfwidth'] = 0xFF6C; - t['yatcyrillic'] = 0x0463; - t['ycircle'] = 0x24E8; - t['ycircumflex'] = 0x0177; - t['ydieresis'] = 0x00FF; - t['ydotaccent'] = 0x1E8F; - t['ydotbelow'] = 0x1EF5; - t['yeharabic'] = 0x064A; - t['yehbarreearabic'] = 0x06D2; - t['yehbarreefinalarabic'] = 0xFBAF; - t['yehfinalarabic'] = 0xFEF2; - t['yehhamzaabovearabic'] = 0x0626; - t['yehhamzaabovefinalarabic'] = 0xFE8A; - t['yehhamzaaboveinitialarabic'] = 0xFE8B; - t['yehhamzaabovemedialarabic'] = 0xFE8C; - t['yehinitialarabic'] = 0xFEF3; - t['yehmedialarabic'] = 0xFEF4; - t['yehmeeminitialarabic'] = 0xFCDD; - t['yehmeemisolatedarabic'] = 0xFC58; - t['yehnoonfinalarabic'] = 0xFC94; - t['yehthreedotsbelowarabic'] = 0x06D1; - t['yekorean'] = 0x3156; - t['yen'] = 0x00A5; - t['yenmonospace'] = 0xFFE5; - t['yeokorean'] = 0x3155; - t['yeorinhieuhkorean'] = 0x3186; - t['yerahbenyomohebrew'] = 0x05AA; - t['yerahbenyomolefthebrew'] = 0x05AA; - t['yericyrillic'] = 0x044B; - t['yerudieresiscyrillic'] = 0x04F9; - t['yesieungkorean'] = 0x3181; - t['yesieungpansioskorean'] = 0x3183; - t['yesieungsioskorean'] = 0x3182; - t['yetivhebrew'] = 0x059A; - t['ygrave'] = 0x1EF3; - t['yhook'] = 0x01B4; - t['yhookabove'] = 0x1EF7; - t['yiarmenian'] = 0x0575; - t['yicyrillic'] = 0x0457; - t['yikorean'] = 0x3162; - t['yinyang'] = 0x262F; - t['yiwnarmenian'] = 0x0582; - t['ymonospace'] = 0xFF59; - t['yod'] = 0x05D9; - t['yoddagesh'] = 0xFB39; - t['yoddageshhebrew'] = 0xFB39; - t['yodhebrew'] = 0x05D9; - t['yodyodhebrew'] = 0x05F2; - t['yodyodpatahhebrew'] = 0xFB1F; - t['yohiragana'] = 0x3088; - t['yoikorean'] = 0x3189; - t['yokatakana'] = 0x30E8; - t['yokatakanahalfwidth'] = 0xFF96; - t['yokorean'] = 0x315B; - t['yosmallhiragana'] = 0x3087; - t['yosmallkatakana'] = 0x30E7; - t['yosmallkatakanahalfwidth'] = 0xFF6E; - t['yotgreek'] = 0x03F3; - t['yoyaekorean'] = 0x3188; - t['yoyakorean'] = 0x3187; - t['yoyakthai'] = 0x0E22; - t['yoyingthai'] = 0x0E0D; - t['yparen'] = 0x24B4; - t['ypogegrammeni'] = 0x037A; - t['ypogegrammenigreekcmb'] = 0x0345; - t['yr'] = 0x01A6; - t['yring'] = 0x1E99; - t['ysuperior'] = 0x02B8; - t['ytilde'] = 0x1EF9; - t['yturned'] = 0x028E; - t['yuhiragana'] = 0x3086; - t['yuikorean'] = 0x318C; - t['yukatakana'] = 0x30E6; - t['yukatakanahalfwidth'] = 0xFF95; - t['yukorean'] = 0x3160; - t['yusbigcyrillic'] = 0x046B; - t['yusbigiotifiedcyrillic'] = 0x046D; - t['yuslittlecyrillic'] = 0x0467; - t['yuslittleiotifiedcyrillic'] = 0x0469; - t['yusmallhiragana'] = 0x3085; - t['yusmallkatakana'] = 0x30E5; - t['yusmallkatakanahalfwidth'] = 0xFF6D; - t['yuyekorean'] = 0x318B; - t['yuyeokorean'] = 0x318A; - t['yyabengali'] = 0x09DF; - t['yyadeva'] = 0x095F; - t['z'] = 0x007A; - t['zaarmenian'] = 0x0566; - t['zacute'] = 0x017A; - t['zadeva'] = 0x095B; - t['zagurmukhi'] = 0x0A5B; - t['zaharabic'] = 0x0638; - t['zahfinalarabic'] = 0xFEC6; - t['zahinitialarabic'] = 0xFEC7; - t['zahiragana'] = 0x3056; - t['zahmedialarabic'] = 0xFEC8; - t['zainarabic'] = 0x0632; - t['zainfinalarabic'] = 0xFEB0; - t['zakatakana'] = 0x30B6; - t['zaqefgadolhebrew'] = 0x0595; - t['zaqefqatanhebrew'] = 0x0594; - t['zarqahebrew'] = 0x0598; - t['zayin'] = 0x05D6; - t['zayindagesh'] = 0xFB36; - t['zayindageshhebrew'] = 0xFB36; - t['zayinhebrew'] = 0x05D6; - t['zbopomofo'] = 0x3117; - t['zcaron'] = 0x017E; - t['zcircle'] = 0x24E9; - t['zcircumflex'] = 0x1E91; - t['zcurl'] = 0x0291; - t['zdot'] = 0x017C; - t['zdotaccent'] = 0x017C; - t['zdotbelow'] = 0x1E93; - t['zecyrillic'] = 0x0437; - t['zedescendercyrillic'] = 0x0499; - t['zedieresiscyrillic'] = 0x04DF; - t['zehiragana'] = 0x305C; - t['zekatakana'] = 0x30BC; - t['zero'] = 0x0030; - t['zeroarabic'] = 0x0660; - t['zerobengali'] = 0x09E6; - t['zerodeva'] = 0x0966; - t['zerogujarati'] = 0x0AE6; - t['zerogurmukhi'] = 0x0A66; - t['zerohackarabic'] = 0x0660; - t['zeroinferior'] = 0x2080; - t['zeromonospace'] = 0xFF10; - t['zerooldstyle'] = 0xF730; - t['zeropersian'] = 0x06F0; - t['zerosuperior'] = 0x2070; - t['zerothai'] = 0x0E50; - t['zerowidthjoiner'] = 0xFEFF; - t['zerowidthnonjoiner'] = 0x200C; - t['zerowidthspace'] = 0x200B; - t['zeta'] = 0x03B6; - t['zhbopomofo'] = 0x3113; - t['zhearmenian'] = 0x056A; - t['zhebrevecyrillic'] = 0x04C2; - t['zhecyrillic'] = 0x0436; - t['zhedescendercyrillic'] = 0x0497; - t['zhedieresiscyrillic'] = 0x04DD; - t['zihiragana'] = 0x3058; - t['zikatakana'] = 0x30B8; - t['zinorhebrew'] = 0x05AE; - t['zlinebelow'] = 0x1E95; - t['zmonospace'] = 0xFF5A; - t['zohiragana'] = 0x305E; - t['zokatakana'] = 0x30BE; - t['zparen'] = 0x24B5; - t['zretroflexhook'] = 0x0290; - t['zstroke'] = 0x01B6; - t['zuhiragana'] = 0x305A; - t['zukatakana'] = 0x30BA; - t['.notdef'] = 0x0000; - t['angbracketleftbig'] = 0x2329; - t['angbracketleftBig'] = 0x2329; - t['angbracketleftbigg'] = 0x2329; - t['angbracketleftBigg'] = 0x2329; - t['angbracketrightBig'] = 0x232A; - t['angbracketrightbig'] = 0x232A; - t['angbracketrightBigg'] = 0x232A; - t['angbracketrightbigg'] = 0x232A; - t['arrowhookleft'] = 0x21AA; - t['arrowhookright'] = 0x21A9; - t['arrowlefttophalf'] = 0x21BC; - t['arrowleftbothalf'] = 0x21BD; - t['arrownortheast'] = 0x2197; - t['arrownorthwest'] = 0x2196; - t['arrowrighttophalf'] = 0x21C0; - t['arrowrightbothalf'] = 0x21C1; - t['arrowsoutheast'] = 0x2198; - t['arrowsouthwest'] = 0x2199; - t['backslashbig'] = 0x2216; - t['backslashBig'] = 0x2216; - t['backslashBigg'] = 0x2216; - t['backslashbigg'] = 0x2216; - t['bardbl'] = 0x2016; - t['bracehtipdownleft'] = 0xFE37; - t['bracehtipdownright'] = 0xFE37; - t['bracehtipupleft'] = 0xFE38; - t['bracehtipupright'] = 0xFE38; - t['braceleftBig'] = 0x007B; - t['braceleftbig'] = 0x007B; - t['braceleftbigg'] = 0x007B; - t['braceleftBigg'] = 0x007B; - t['bracerightBig'] = 0x007D; - t['bracerightbig'] = 0x007D; - t['bracerightbigg'] = 0x007D; - t['bracerightBigg'] = 0x007D; - t['bracketleftbig'] = 0x005B; - t['bracketleftBig'] = 0x005B; - t['bracketleftbigg'] = 0x005B; - t['bracketleftBigg'] = 0x005B; - t['bracketrightBig'] = 0x005D; - t['bracketrightbig'] = 0x005D; - t['bracketrightbigg'] = 0x005D; - t['bracketrightBigg'] = 0x005D; - t['ceilingleftbig'] = 0x2308; - t['ceilingleftBig'] = 0x2308; - t['ceilingleftBigg'] = 0x2308; - t['ceilingleftbigg'] = 0x2308; - t['ceilingrightbig'] = 0x2309; - t['ceilingrightBig'] = 0x2309; - t['ceilingrightbigg'] = 0x2309; - t['ceilingrightBigg'] = 0x2309; - t['circledotdisplay'] = 0x2299; - t['circledottext'] = 0x2299; - t['circlemultiplydisplay'] = 0x2297; - t['circlemultiplytext'] = 0x2297; - t['circleplusdisplay'] = 0x2295; - t['circleplustext'] = 0x2295; - t['contintegraldisplay'] = 0x222E; - t['contintegraltext'] = 0x222E; - t['coproductdisplay'] = 0x2210; - t['coproducttext'] = 0x2210; - t['floorleftBig'] = 0x230A; - t['floorleftbig'] = 0x230A; - t['floorleftbigg'] = 0x230A; - t['floorleftBigg'] = 0x230A; - t['floorrightbig'] = 0x230B; - t['floorrightBig'] = 0x230B; - t['floorrightBigg'] = 0x230B; - t['floorrightbigg'] = 0x230B; - t['hatwide'] = 0x0302; - t['hatwider'] = 0x0302; - t['hatwidest'] = 0x0302; - t['intercal'] = 0x1D40; - t['integraldisplay'] = 0x222B; - t['integraltext'] = 0x222B; - t['intersectiondisplay'] = 0x22C2; - t['intersectiontext'] = 0x22C2; - t['logicalanddisplay'] = 0x2227; - t['logicalandtext'] = 0x2227; - t['logicalordisplay'] = 0x2228; - t['logicalortext'] = 0x2228; - t['parenleftBig'] = 0x0028; - t['parenleftbig'] = 0x0028; - t['parenleftBigg'] = 0x0028; - t['parenleftbigg'] = 0x0028; - t['parenrightBig'] = 0x0029; - t['parenrightbig'] = 0x0029; - t['parenrightBigg'] = 0x0029; - t['parenrightbigg'] = 0x0029; - t['prime'] = 0x2032; - t['productdisplay'] = 0x220F; - t['producttext'] = 0x220F; - t['radicalbig'] = 0x221A; - t['radicalBig'] = 0x221A; - t['radicalBigg'] = 0x221A; - t['radicalbigg'] = 0x221A; - t['radicalbt'] = 0x221A; - t['radicaltp'] = 0x221A; - t['radicalvertex'] = 0x221A; - t['slashbig'] = 0x002F; - t['slashBig'] = 0x002F; - t['slashBigg'] = 0x002F; - t['slashbigg'] = 0x002F; - t['summationdisplay'] = 0x2211; - t['summationtext'] = 0x2211; - t['tildewide'] = 0x02DC; - t['tildewider'] = 0x02DC; - t['tildewidest'] = 0x02DC; - t['uniondisplay'] = 0x22C3; - t['unionmultidisplay'] = 0x228E; - t['unionmultitext'] = 0x228E; - t['unionsqdisplay'] = 0x2294; - t['unionsqtext'] = 0x2294; - t['uniontext'] = 0x22C3; - t['vextenddouble'] = 0x2225; - t['vextendsingle'] = 0x2223; +"use strict"; +__w_pdfjs_require__.r(__webpack_exports__); +/* harmony export */ __w_pdfjs_require__.d(__webpack_exports__, { +/* harmony export */ "getDingbatsGlyphsUnicode": () => (/* binding */ getDingbatsGlyphsUnicode), +/* harmony export */ "getGlyphsUnicode": () => (/* binding */ getGlyphsUnicode) +/* harmony export */ }); +/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(131); + +const getGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function () { + return [ + "A", + 0x0041, + "AE", + 0x00c6, + "AEacute", + 0x01fc, + "AEmacron", + 0x01e2, + "AEsmall", + 0xf7e6, + "Aacute", + 0x00c1, + "Aacutesmall", + 0xf7e1, + "Abreve", + 0x0102, + "Abreveacute", + 0x1eae, + "Abrevecyrillic", + 0x04d0, + "Abrevedotbelow", + 0x1eb6, + "Abrevegrave", + 0x1eb0, + "Abrevehookabove", + 0x1eb2, + "Abrevetilde", + 0x1eb4, + "Acaron", + 0x01cd, + "Acircle", + 0x24b6, + "Acircumflex", + 0x00c2, + "Acircumflexacute", + 0x1ea4, + "Acircumflexdotbelow", + 0x1eac, + "Acircumflexgrave", + 0x1ea6, + "Acircumflexhookabove", + 0x1ea8, + "Acircumflexsmall", + 0xf7e2, + "Acircumflextilde", + 0x1eaa, + "Acute", + 0xf6c9, + "Acutesmall", + 0xf7b4, + "Acyrillic", + 0x0410, + "Adblgrave", + 0x0200, + "Adieresis", + 0x00c4, + "Adieresiscyrillic", + 0x04d2, + "Adieresismacron", + 0x01de, + "Adieresissmall", + 0xf7e4, + "Adotbelow", + 0x1ea0, + "Adotmacron", + 0x01e0, + "Agrave", + 0x00c0, + "Agravesmall", + 0xf7e0, + "Ahookabove", + 0x1ea2, + "Aiecyrillic", + 0x04d4, + "Ainvertedbreve", + 0x0202, + "Alpha", + 0x0391, + "Alphatonos", + 0x0386, + "Amacron", + 0x0100, + "Amonospace", + 0xff21, + "Aogonek", + 0x0104, + "Aring", + 0x00c5, + "Aringacute", + 0x01fa, + "Aringbelow", + 0x1e00, + "Aringsmall", + 0xf7e5, + "Asmall", + 0xf761, + "Atilde", + 0x00c3, + "Atildesmall", + 0xf7e3, + "Aybarmenian", + 0x0531, + "B", + 0x0042, + "Bcircle", + 0x24b7, + "Bdotaccent", + 0x1e02, + "Bdotbelow", + 0x1e04, + "Becyrillic", + 0x0411, + "Benarmenian", + 0x0532, + "Beta", + 0x0392, + "Bhook", + 0x0181, + "Blinebelow", + 0x1e06, + "Bmonospace", + 0xff22, + "Brevesmall", + 0xf6f4, + "Bsmall", + 0xf762, + "Btopbar", + 0x0182, + "C", + 0x0043, + "Caarmenian", + 0x053e, + "Cacute", + 0x0106, + "Caron", + 0xf6ca, + "Caronsmall", + 0xf6f5, + "Ccaron", + 0x010c, + "Ccedilla", + 0x00c7, + "Ccedillaacute", + 0x1e08, + "Ccedillasmall", + 0xf7e7, + "Ccircle", + 0x24b8, + "Ccircumflex", + 0x0108, + "Cdot", + 0x010a, + "Cdotaccent", + 0x010a, + "Cedillasmall", + 0xf7b8, + "Chaarmenian", + 0x0549, + "Cheabkhasiancyrillic", + 0x04bc, + "Checyrillic", + 0x0427, + "Chedescenderabkhasiancyrillic", + 0x04be, + "Chedescendercyrillic", + 0x04b6, + "Chedieresiscyrillic", + 0x04f4, + "Cheharmenian", + 0x0543, + "Chekhakassiancyrillic", + 0x04cb, + "Cheverticalstrokecyrillic", + 0x04b8, + "Chi", + 0x03a7, + "Chook", + 0x0187, + "Circumflexsmall", + 0xf6f6, + "Cmonospace", + 0xff23, + "Coarmenian", + 0x0551, + "Csmall", + 0xf763, + "D", + 0x0044, + "DZ", + 0x01f1, + "DZcaron", + 0x01c4, + "Daarmenian", + 0x0534, + "Dafrican", + 0x0189, + "Dcaron", + 0x010e, + "Dcedilla", + 0x1e10, + "Dcircle", + 0x24b9, + "Dcircumflexbelow", + 0x1e12, + "Dcroat", + 0x0110, + "Ddotaccent", + 0x1e0a, + "Ddotbelow", + 0x1e0c, + "Decyrillic", + 0x0414, + "Deicoptic", + 0x03ee, + "Delta", + 0x2206, + "Deltagreek", + 0x0394, + "Dhook", + 0x018a, + "Dieresis", + 0xf6cb, + "DieresisAcute", + 0xf6cc, + "DieresisGrave", + 0xf6cd, + "Dieresissmall", + 0xf7a8, + "Digammagreek", + 0x03dc, + "Djecyrillic", + 0x0402, + "Dlinebelow", + 0x1e0e, + "Dmonospace", + 0xff24, + "Dotaccentsmall", + 0xf6f7, + "Dslash", + 0x0110, + "Dsmall", + 0xf764, + "Dtopbar", + 0x018b, + "Dz", + 0x01f2, + "Dzcaron", + 0x01c5, + "Dzeabkhasiancyrillic", + 0x04e0, + "Dzecyrillic", + 0x0405, + "Dzhecyrillic", + 0x040f, + "E", + 0x0045, + "Eacute", + 0x00c9, + "Eacutesmall", + 0xf7e9, + "Ebreve", + 0x0114, + "Ecaron", + 0x011a, + "Ecedillabreve", + 0x1e1c, + "Echarmenian", + 0x0535, + "Ecircle", + 0x24ba, + "Ecircumflex", + 0x00ca, + "Ecircumflexacute", + 0x1ebe, + "Ecircumflexbelow", + 0x1e18, + "Ecircumflexdotbelow", + 0x1ec6, + "Ecircumflexgrave", + 0x1ec0, + "Ecircumflexhookabove", + 0x1ec2, + "Ecircumflexsmall", + 0xf7ea, + "Ecircumflextilde", + 0x1ec4, + "Ecyrillic", + 0x0404, + "Edblgrave", + 0x0204, + "Edieresis", + 0x00cb, + "Edieresissmall", + 0xf7eb, + "Edot", + 0x0116, + "Edotaccent", + 0x0116, + "Edotbelow", + 0x1eb8, + "Efcyrillic", + 0x0424, + "Egrave", + 0x00c8, + "Egravesmall", + 0xf7e8, + "Eharmenian", + 0x0537, + "Ehookabove", + 0x1eba, + "Eightroman", + 0x2167, + "Einvertedbreve", + 0x0206, + "Eiotifiedcyrillic", + 0x0464, + "Elcyrillic", + 0x041b, + "Elevenroman", + 0x216a, + "Emacron", + 0x0112, + "Emacronacute", + 0x1e16, + "Emacrongrave", + 0x1e14, + "Emcyrillic", + 0x041c, + "Emonospace", + 0xff25, + "Encyrillic", + 0x041d, + "Endescendercyrillic", + 0x04a2, + "Eng", + 0x014a, + "Enghecyrillic", + 0x04a4, + "Enhookcyrillic", + 0x04c7, + "Eogonek", + 0x0118, + "Eopen", + 0x0190, + "Epsilon", + 0x0395, + "Epsilontonos", + 0x0388, + "Ercyrillic", + 0x0420, + "Ereversed", + 0x018e, + "Ereversedcyrillic", + 0x042d, + "Escyrillic", + 0x0421, + "Esdescendercyrillic", + 0x04aa, + "Esh", + 0x01a9, + "Esmall", + 0xf765, + "Eta", + 0x0397, + "Etarmenian", + 0x0538, + "Etatonos", + 0x0389, + "Eth", + 0x00d0, + "Ethsmall", + 0xf7f0, + "Etilde", + 0x1ebc, + "Etildebelow", + 0x1e1a, + "Euro", + 0x20ac, + "Ezh", + 0x01b7, + "Ezhcaron", + 0x01ee, + "Ezhreversed", + 0x01b8, + "F", + 0x0046, + "Fcircle", + 0x24bb, + "Fdotaccent", + 0x1e1e, + "Feharmenian", + 0x0556, + "Feicoptic", + 0x03e4, + "Fhook", + 0x0191, + "Fitacyrillic", + 0x0472, + "Fiveroman", + 0x2164, + "Fmonospace", + 0xff26, + "Fourroman", + 0x2163, + "Fsmall", + 0xf766, + "G", + 0x0047, + "GBsquare", + 0x3387, + "Gacute", + 0x01f4, + "Gamma", + 0x0393, + "Gammaafrican", + 0x0194, + "Gangiacoptic", + 0x03ea, + "Gbreve", + 0x011e, + "Gcaron", + 0x01e6, + "Gcedilla", + 0x0122, + "Gcircle", + 0x24bc, + "Gcircumflex", + 0x011c, + "Gcommaaccent", + 0x0122, + "Gdot", + 0x0120, + "Gdotaccent", + 0x0120, + "Gecyrillic", + 0x0413, + "Ghadarmenian", + 0x0542, + "Ghemiddlehookcyrillic", + 0x0494, + "Ghestrokecyrillic", + 0x0492, + "Gheupturncyrillic", + 0x0490, + "Ghook", + 0x0193, + "Gimarmenian", + 0x0533, + "Gjecyrillic", + 0x0403, + "Gmacron", + 0x1e20, + "Gmonospace", + 0xff27, + "Grave", + 0xf6ce, + "Gravesmall", + 0xf760, + "Gsmall", + 0xf767, + "Gsmallhook", + 0x029b, + "Gstroke", + 0x01e4, + "H", + 0x0048, + "H18533", + 0x25cf, + "H18543", + 0x25aa, + "H18551", + 0x25ab, + "H22073", + 0x25a1, + "HPsquare", + 0x33cb, + "Haabkhasiancyrillic", + 0x04a8, + "Hadescendercyrillic", + 0x04b2, + "Hardsigncyrillic", + 0x042a, + "Hbar", + 0x0126, + "Hbrevebelow", + 0x1e2a, + "Hcedilla", + 0x1e28, + "Hcircle", + 0x24bd, + "Hcircumflex", + 0x0124, + "Hdieresis", + 0x1e26, + "Hdotaccent", + 0x1e22, + "Hdotbelow", + 0x1e24, + "Hmonospace", + 0xff28, + "Hoarmenian", + 0x0540, + "Horicoptic", + 0x03e8, + "Hsmall", + 0xf768, + "Hungarumlaut", + 0xf6cf, + "Hungarumlautsmall", + 0xf6f8, + "Hzsquare", + 0x3390, + "I", + 0x0049, + "IAcyrillic", + 0x042f, + "IJ", + 0x0132, + "IUcyrillic", + 0x042e, + "Iacute", + 0x00cd, + "Iacutesmall", + 0xf7ed, + "Ibreve", + 0x012c, + "Icaron", + 0x01cf, + "Icircle", + 0x24be, + "Icircumflex", + 0x00ce, + "Icircumflexsmall", + 0xf7ee, + "Icyrillic", + 0x0406, + "Idblgrave", + 0x0208, + "Idieresis", + 0x00cf, + "Idieresisacute", + 0x1e2e, + "Idieresiscyrillic", + 0x04e4, + "Idieresissmall", + 0xf7ef, + "Idot", + 0x0130, + "Idotaccent", + 0x0130, + "Idotbelow", + 0x1eca, + "Iebrevecyrillic", + 0x04d6, + "Iecyrillic", + 0x0415, + "Ifraktur", + 0x2111, + "Igrave", + 0x00cc, + "Igravesmall", + 0xf7ec, + "Ihookabove", + 0x1ec8, + "Iicyrillic", + 0x0418, + "Iinvertedbreve", + 0x020a, + "Iishortcyrillic", + 0x0419, + "Imacron", + 0x012a, + "Imacroncyrillic", + 0x04e2, + "Imonospace", + 0xff29, + "Iniarmenian", + 0x053b, + "Iocyrillic", + 0x0401, + "Iogonek", + 0x012e, + "Iota", + 0x0399, + "Iotaafrican", + 0x0196, + "Iotadieresis", + 0x03aa, + "Iotatonos", + 0x038a, + "Ismall", + 0xf769, + "Istroke", + 0x0197, + "Itilde", + 0x0128, + "Itildebelow", + 0x1e2c, + "Izhitsacyrillic", + 0x0474, + "Izhitsadblgravecyrillic", + 0x0476, + "J", + 0x004a, + "Jaarmenian", + 0x0541, + "Jcircle", + 0x24bf, + "Jcircumflex", + 0x0134, + "Jecyrillic", + 0x0408, + "Jheharmenian", + 0x054b, + "Jmonospace", + 0xff2a, + "Jsmall", + 0xf76a, + "K", + 0x004b, + "KBsquare", + 0x3385, + "KKsquare", + 0x33cd, + "Kabashkircyrillic", + 0x04a0, + "Kacute", + 0x1e30, + "Kacyrillic", + 0x041a, + "Kadescendercyrillic", + 0x049a, + "Kahookcyrillic", + 0x04c3, + "Kappa", + 0x039a, + "Kastrokecyrillic", + 0x049e, + "Kaverticalstrokecyrillic", + 0x049c, + "Kcaron", + 0x01e8, + "Kcedilla", + 0x0136, + "Kcircle", + 0x24c0, + "Kcommaaccent", + 0x0136, + "Kdotbelow", + 0x1e32, + "Keharmenian", + 0x0554, + "Kenarmenian", + 0x053f, + "Khacyrillic", + 0x0425, + "Kheicoptic", + 0x03e6, + "Khook", + 0x0198, + "Kjecyrillic", + 0x040c, + "Klinebelow", + 0x1e34, + "Kmonospace", + 0xff2b, + "Koppacyrillic", + 0x0480, + "Koppagreek", + 0x03de, + "Ksicyrillic", + 0x046e, + "Ksmall", + 0xf76b, + "L", + 0x004c, + "LJ", + 0x01c7, + "LL", + 0xf6bf, + "Lacute", + 0x0139, + "Lambda", + 0x039b, + "Lcaron", + 0x013d, + "Lcedilla", + 0x013b, + "Lcircle", + 0x24c1, + "Lcircumflexbelow", + 0x1e3c, + "Lcommaaccent", + 0x013b, + "Ldot", + 0x013f, + "Ldotaccent", + 0x013f, + "Ldotbelow", + 0x1e36, + "Ldotbelowmacron", + 0x1e38, + "Liwnarmenian", + 0x053c, + "Lj", + 0x01c8, + "Ljecyrillic", + 0x0409, + "Llinebelow", + 0x1e3a, + "Lmonospace", + 0xff2c, + "Lslash", + 0x0141, + "Lslashsmall", + 0xf6f9, + "Lsmall", + 0xf76c, + "M", + 0x004d, + "MBsquare", + 0x3386, + "Macron", + 0xf6d0, + "Macronsmall", + 0xf7af, + "Macute", + 0x1e3e, + "Mcircle", + 0x24c2, + "Mdotaccent", + 0x1e40, + "Mdotbelow", + 0x1e42, + "Menarmenian", + 0x0544, + "Mmonospace", + 0xff2d, + "Msmall", + 0xf76d, + "Mturned", + 0x019c, + "Mu", + 0x039c, + "N", + 0x004e, + "NJ", + 0x01ca, + "Nacute", + 0x0143, + "Ncaron", + 0x0147, + "Ncedilla", + 0x0145, + "Ncircle", + 0x24c3, + "Ncircumflexbelow", + 0x1e4a, + "Ncommaaccent", + 0x0145, + "Ndotaccent", + 0x1e44, + "Ndotbelow", + 0x1e46, + "Nhookleft", + 0x019d, + "Nineroman", + 0x2168, + "Nj", + 0x01cb, + "Njecyrillic", + 0x040a, + "Nlinebelow", + 0x1e48, + "Nmonospace", + 0xff2e, + "Nowarmenian", + 0x0546, + "Nsmall", + 0xf76e, + "Ntilde", + 0x00d1, + "Ntildesmall", + 0xf7f1, + "Nu", + 0x039d, + "O", + 0x004f, + "OE", + 0x0152, + "OEsmall", + 0xf6fa, + "Oacute", + 0x00d3, + "Oacutesmall", + 0xf7f3, + "Obarredcyrillic", + 0x04e8, + "Obarreddieresiscyrillic", + 0x04ea, + "Obreve", + 0x014e, + "Ocaron", + 0x01d1, + "Ocenteredtilde", + 0x019f, + "Ocircle", + 0x24c4, + "Ocircumflex", + 0x00d4, + "Ocircumflexacute", + 0x1ed0, + "Ocircumflexdotbelow", + 0x1ed8, + "Ocircumflexgrave", + 0x1ed2, + "Ocircumflexhookabove", + 0x1ed4, + "Ocircumflexsmall", + 0xf7f4, + "Ocircumflextilde", + 0x1ed6, + "Ocyrillic", + 0x041e, + "Odblacute", + 0x0150, + "Odblgrave", + 0x020c, + "Odieresis", + 0x00d6, + "Odieresiscyrillic", + 0x04e6, + "Odieresissmall", + 0xf7f6, + "Odotbelow", + 0x1ecc, + "Ogoneksmall", + 0xf6fb, + "Ograve", + 0x00d2, + "Ogravesmall", + 0xf7f2, + "Oharmenian", + 0x0555, + "Ohm", + 0x2126, + "Ohookabove", + 0x1ece, + "Ohorn", + 0x01a0, + "Ohornacute", + 0x1eda, + "Ohorndotbelow", + 0x1ee2, + "Ohorngrave", + 0x1edc, + "Ohornhookabove", + 0x1ede, + "Ohorntilde", + 0x1ee0, + "Ohungarumlaut", + 0x0150, + "Oi", + 0x01a2, + "Oinvertedbreve", + 0x020e, + "Omacron", + 0x014c, + "Omacronacute", + 0x1e52, + "Omacrongrave", + 0x1e50, + "Omega", + 0x2126, + "Omegacyrillic", + 0x0460, + "Omegagreek", + 0x03a9, + "Omegaroundcyrillic", + 0x047a, + "Omegatitlocyrillic", + 0x047c, + "Omegatonos", + 0x038f, + "Omicron", + 0x039f, + "Omicrontonos", + 0x038c, + "Omonospace", + 0xff2f, + "Oneroman", + 0x2160, + "Oogonek", + 0x01ea, + "Oogonekmacron", + 0x01ec, + "Oopen", + 0x0186, + "Oslash", + 0x00d8, + "Oslashacute", + 0x01fe, + "Oslashsmall", + 0xf7f8, + "Osmall", + 0xf76f, + "Ostrokeacute", + 0x01fe, + "Otcyrillic", + 0x047e, + "Otilde", + 0x00d5, + "Otildeacute", + 0x1e4c, + "Otildedieresis", + 0x1e4e, + "Otildesmall", + 0xf7f5, + "P", + 0x0050, + "Pacute", + 0x1e54, + "Pcircle", + 0x24c5, + "Pdotaccent", + 0x1e56, + "Pecyrillic", + 0x041f, + "Peharmenian", + 0x054a, + "Pemiddlehookcyrillic", + 0x04a6, + "Phi", + 0x03a6, + "Phook", + 0x01a4, + "Pi", + 0x03a0, + "Piwrarmenian", + 0x0553, + "Pmonospace", + 0xff30, + "Psi", + 0x03a8, + "Psicyrillic", + 0x0470, + "Psmall", + 0xf770, + "Q", + 0x0051, + "Qcircle", + 0x24c6, + "Qmonospace", + 0xff31, + "Qsmall", + 0xf771, + "R", + 0x0052, + "Raarmenian", + 0x054c, + "Racute", + 0x0154, + "Rcaron", + 0x0158, + "Rcedilla", + 0x0156, + "Rcircle", + 0x24c7, + "Rcommaaccent", + 0x0156, + "Rdblgrave", + 0x0210, + "Rdotaccent", + 0x1e58, + "Rdotbelow", + 0x1e5a, + "Rdotbelowmacron", + 0x1e5c, + "Reharmenian", + 0x0550, + "Rfraktur", + 0x211c, + "Rho", + 0x03a1, + "Ringsmall", + 0xf6fc, + "Rinvertedbreve", + 0x0212, + "Rlinebelow", + 0x1e5e, + "Rmonospace", + 0xff32, + "Rsmall", + 0xf772, + "Rsmallinverted", + 0x0281, + "Rsmallinvertedsuperior", + 0x02b6, + "S", + 0x0053, + "SF010000", + 0x250c, + "SF020000", + 0x2514, + "SF030000", + 0x2510, + "SF040000", + 0x2518, + "SF050000", + 0x253c, + "SF060000", + 0x252c, + "SF070000", + 0x2534, + "SF080000", + 0x251c, + "SF090000", + 0x2524, + "SF100000", + 0x2500, + "SF110000", + 0x2502, + "SF190000", + 0x2561, + "SF200000", + 0x2562, + "SF210000", + 0x2556, + "SF220000", + 0x2555, + "SF230000", + 0x2563, + "SF240000", + 0x2551, + "SF250000", + 0x2557, + "SF260000", + 0x255d, + "SF270000", + 0x255c, + "SF280000", + 0x255b, + "SF360000", + 0x255e, + "SF370000", + 0x255f, + "SF380000", + 0x255a, + "SF390000", + 0x2554, + "SF400000", + 0x2569, + "SF410000", + 0x2566, + "SF420000", + 0x2560, + "SF430000", + 0x2550, + "SF440000", + 0x256c, + "SF450000", + 0x2567, + "SF460000", + 0x2568, + "SF470000", + 0x2564, + "SF480000", + 0x2565, + "SF490000", + 0x2559, + "SF500000", + 0x2558, + "SF510000", + 0x2552, + "SF520000", + 0x2553, + "SF530000", + 0x256b, + "SF540000", + 0x256a, + "Sacute", + 0x015a, + "Sacutedotaccent", + 0x1e64, + "Sampigreek", + 0x03e0, + "Scaron", + 0x0160, + "Scarondotaccent", + 0x1e66, + "Scaronsmall", + 0xf6fd, + "Scedilla", + 0x015e, + "Schwa", + 0x018f, + "Schwacyrillic", + 0x04d8, + "Schwadieresiscyrillic", + 0x04da, + "Scircle", + 0x24c8, + "Scircumflex", + 0x015c, + "Scommaaccent", + 0x0218, + "Sdotaccent", + 0x1e60, + "Sdotbelow", + 0x1e62, + "Sdotbelowdotaccent", + 0x1e68, + "Seharmenian", + 0x054d, + "Sevenroman", + 0x2166, + "Shaarmenian", + 0x0547, + "Shacyrillic", + 0x0428, + "Shchacyrillic", + 0x0429, + "Sheicoptic", + 0x03e2, + "Shhacyrillic", + 0x04ba, + "Shimacoptic", + 0x03ec, + "Sigma", + 0x03a3, + "Sixroman", + 0x2165, + "Smonospace", + 0xff33, + "Softsigncyrillic", + 0x042c, + "Ssmall", + 0xf773, + "Stigmagreek", + 0x03da, + "T", + 0x0054, + "Tau", + 0x03a4, + "Tbar", + 0x0166, + "Tcaron", + 0x0164, + "Tcedilla", + 0x0162, + "Tcircle", + 0x24c9, + "Tcircumflexbelow", + 0x1e70, + "Tcommaaccent", + 0x0162, + "Tdotaccent", + 0x1e6a, + "Tdotbelow", + 0x1e6c, + "Tecyrillic", + 0x0422, + "Tedescendercyrillic", + 0x04ac, + "Tenroman", + 0x2169, + "Tetsecyrillic", + 0x04b4, + "Theta", + 0x0398, + "Thook", + 0x01ac, + "Thorn", + 0x00de, + "Thornsmall", + 0xf7fe, + "Threeroman", + 0x2162, + "Tildesmall", + 0xf6fe, + "Tiwnarmenian", + 0x054f, + "Tlinebelow", + 0x1e6e, + "Tmonospace", + 0xff34, + "Toarmenian", + 0x0539, + "Tonefive", + 0x01bc, + "Tonesix", + 0x0184, + "Tonetwo", + 0x01a7, + "Tretroflexhook", + 0x01ae, + "Tsecyrillic", + 0x0426, + "Tshecyrillic", + 0x040b, + "Tsmall", + 0xf774, + "Twelveroman", + 0x216b, + "Tworoman", + 0x2161, + "U", + 0x0055, + "Uacute", + 0x00da, + "Uacutesmall", + 0xf7fa, + "Ubreve", + 0x016c, + "Ucaron", + 0x01d3, + "Ucircle", + 0x24ca, + "Ucircumflex", + 0x00db, + "Ucircumflexbelow", + 0x1e76, + "Ucircumflexsmall", + 0xf7fb, + "Ucyrillic", + 0x0423, + "Udblacute", + 0x0170, + "Udblgrave", + 0x0214, + "Udieresis", + 0x00dc, + "Udieresisacute", + 0x01d7, + "Udieresisbelow", + 0x1e72, + "Udieresiscaron", + 0x01d9, + "Udieresiscyrillic", + 0x04f0, + "Udieresisgrave", + 0x01db, + "Udieresismacron", + 0x01d5, + "Udieresissmall", + 0xf7fc, + "Udotbelow", + 0x1ee4, + "Ugrave", + 0x00d9, + "Ugravesmall", + 0xf7f9, + "Uhookabove", + 0x1ee6, + "Uhorn", + 0x01af, + "Uhornacute", + 0x1ee8, + "Uhorndotbelow", + 0x1ef0, + "Uhorngrave", + 0x1eea, + "Uhornhookabove", + 0x1eec, + "Uhorntilde", + 0x1eee, + "Uhungarumlaut", + 0x0170, + "Uhungarumlautcyrillic", + 0x04f2, + "Uinvertedbreve", + 0x0216, + "Ukcyrillic", + 0x0478, + "Umacron", + 0x016a, + "Umacroncyrillic", + 0x04ee, + "Umacrondieresis", + 0x1e7a, + "Umonospace", + 0xff35, + "Uogonek", + 0x0172, + "Upsilon", + 0x03a5, + "Upsilon1", + 0x03d2, + "Upsilonacutehooksymbolgreek", + 0x03d3, + "Upsilonafrican", + 0x01b1, + "Upsilondieresis", + 0x03ab, + "Upsilondieresishooksymbolgreek", + 0x03d4, + "Upsilonhooksymbol", + 0x03d2, + "Upsilontonos", + 0x038e, + "Uring", + 0x016e, + "Ushortcyrillic", + 0x040e, + "Usmall", + 0xf775, + "Ustraightcyrillic", + 0x04ae, + "Ustraightstrokecyrillic", + 0x04b0, + "Utilde", + 0x0168, + "Utildeacute", + 0x1e78, + "Utildebelow", + 0x1e74, + "V", + 0x0056, + "Vcircle", + 0x24cb, + "Vdotbelow", + 0x1e7e, + "Vecyrillic", + 0x0412, + "Vewarmenian", + 0x054e, + "Vhook", + 0x01b2, + "Vmonospace", + 0xff36, + "Voarmenian", + 0x0548, + "Vsmall", + 0xf776, + "Vtilde", + 0x1e7c, + "W", + 0x0057, + "Wacute", + 0x1e82, + "Wcircle", + 0x24cc, + "Wcircumflex", + 0x0174, + "Wdieresis", + 0x1e84, + "Wdotaccent", + 0x1e86, + "Wdotbelow", + 0x1e88, + "Wgrave", + 0x1e80, + "Wmonospace", + 0xff37, + "Wsmall", + 0xf777, + "X", + 0x0058, + "Xcircle", + 0x24cd, + "Xdieresis", + 0x1e8c, + "Xdotaccent", + 0x1e8a, + "Xeharmenian", + 0x053d, + "Xi", + 0x039e, + "Xmonospace", + 0xff38, + "Xsmall", + 0xf778, + "Y", + 0x0059, + "Yacute", + 0x00dd, + "Yacutesmall", + 0xf7fd, + "Yatcyrillic", + 0x0462, + "Ycircle", + 0x24ce, + "Ycircumflex", + 0x0176, + "Ydieresis", + 0x0178, + "Ydieresissmall", + 0xf7ff, + "Ydotaccent", + 0x1e8e, + "Ydotbelow", + 0x1ef4, + "Yericyrillic", + 0x042b, + "Yerudieresiscyrillic", + 0x04f8, + "Ygrave", + 0x1ef2, + "Yhook", + 0x01b3, + "Yhookabove", + 0x1ef6, + "Yiarmenian", + 0x0545, + "Yicyrillic", + 0x0407, + "Yiwnarmenian", + 0x0552, + "Ymonospace", + 0xff39, + "Ysmall", + 0xf779, + "Ytilde", + 0x1ef8, + "Yusbigcyrillic", + 0x046a, + "Yusbigiotifiedcyrillic", + 0x046c, + "Yuslittlecyrillic", + 0x0466, + "Yuslittleiotifiedcyrillic", + 0x0468, + "Z", + 0x005a, + "Zaarmenian", + 0x0536, + "Zacute", + 0x0179, + "Zcaron", + 0x017d, + "Zcaronsmall", + 0xf6ff, + "Zcircle", + 0x24cf, + "Zcircumflex", + 0x1e90, + "Zdot", + 0x017b, + "Zdotaccent", + 0x017b, + "Zdotbelow", + 0x1e92, + "Zecyrillic", + 0x0417, + "Zedescendercyrillic", + 0x0498, + "Zedieresiscyrillic", + 0x04de, + "Zeta", + 0x0396, + "Zhearmenian", + 0x053a, + "Zhebrevecyrillic", + 0x04c1, + "Zhecyrillic", + 0x0416, + "Zhedescendercyrillic", + 0x0496, + "Zhedieresiscyrillic", + 0x04dc, + "Zlinebelow", + 0x1e94, + "Zmonospace", + 0xff3a, + "Zsmall", + 0xf77a, + "Zstroke", + 0x01b5, + "a", + 0x0061, + "aabengali", + 0x0986, + "aacute", + 0x00e1, + "aadeva", + 0x0906, + "aagujarati", + 0x0a86, + "aagurmukhi", + 0x0a06, + "aamatragurmukhi", + 0x0a3e, + "aarusquare", + 0x3303, + "aavowelsignbengali", + 0x09be, + "aavowelsigndeva", + 0x093e, + "aavowelsigngujarati", + 0x0abe, + "abbreviationmarkarmenian", + 0x055f, + "abbreviationsigndeva", + 0x0970, + "abengali", + 0x0985, + "abopomofo", + 0x311a, + "abreve", + 0x0103, + "abreveacute", + 0x1eaf, + "abrevecyrillic", + 0x04d1, + "abrevedotbelow", + 0x1eb7, + "abrevegrave", + 0x1eb1, + "abrevehookabove", + 0x1eb3, + "abrevetilde", + 0x1eb5, + "acaron", + 0x01ce, + "acircle", + 0x24d0, + "acircumflex", + 0x00e2, + "acircumflexacute", + 0x1ea5, + "acircumflexdotbelow", + 0x1ead, + "acircumflexgrave", + 0x1ea7, + "acircumflexhookabove", + 0x1ea9, + "acircumflextilde", + 0x1eab, + "acute", + 0x00b4, + "acutebelowcmb", + 0x0317, + "acutecmb", + 0x0301, + "acutecomb", + 0x0301, + "acutedeva", + 0x0954, + "acutelowmod", + 0x02cf, + "acutetonecmb", + 0x0341, + "acyrillic", + 0x0430, + "adblgrave", + 0x0201, + "addakgurmukhi", + 0x0a71, + "adeva", + 0x0905, + "adieresis", + 0x00e4, + "adieresiscyrillic", + 0x04d3, + "adieresismacron", + 0x01df, + "adotbelow", + 0x1ea1, + "adotmacron", + 0x01e1, + "ae", + 0x00e6, + "aeacute", + 0x01fd, + "aekorean", + 0x3150, + "aemacron", + 0x01e3, + "afii00208", + 0x2015, + "afii08941", + 0x20a4, + "afii10017", + 0x0410, + "afii10018", + 0x0411, + "afii10019", + 0x0412, + "afii10020", + 0x0413, + "afii10021", + 0x0414, + "afii10022", + 0x0415, + "afii10023", + 0x0401, + "afii10024", + 0x0416, + "afii10025", + 0x0417, + "afii10026", + 0x0418, + "afii10027", + 0x0419, + "afii10028", + 0x041a, + "afii10029", + 0x041b, + "afii10030", + 0x041c, + "afii10031", + 0x041d, + "afii10032", + 0x041e, + "afii10033", + 0x041f, + "afii10034", + 0x0420, + "afii10035", + 0x0421, + "afii10036", + 0x0422, + "afii10037", + 0x0423, + "afii10038", + 0x0424, + "afii10039", + 0x0425, + "afii10040", + 0x0426, + "afii10041", + 0x0427, + "afii10042", + 0x0428, + "afii10043", + 0x0429, + "afii10044", + 0x042a, + "afii10045", + 0x042b, + "afii10046", + 0x042c, + "afii10047", + 0x042d, + "afii10048", + 0x042e, + "afii10049", + 0x042f, + "afii10050", + 0x0490, + "afii10051", + 0x0402, + "afii10052", + 0x0403, + "afii10053", + 0x0404, + "afii10054", + 0x0405, + "afii10055", + 0x0406, + "afii10056", + 0x0407, + "afii10057", + 0x0408, + "afii10058", + 0x0409, + "afii10059", + 0x040a, + "afii10060", + 0x040b, + "afii10061", + 0x040c, + "afii10062", + 0x040e, + "afii10063", + 0xf6c4, + "afii10064", + 0xf6c5, + "afii10065", + 0x0430, + "afii10066", + 0x0431, + "afii10067", + 0x0432, + "afii10068", + 0x0433, + "afii10069", + 0x0434, + "afii10070", + 0x0435, + "afii10071", + 0x0451, + "afii10072", + 0x0436, + "afii10073", + 0x0437, + "afii10074", + 0x0438, + "afii10075", + 0x0439, + "afii10076", + 0x043a, + "afii10077", + 0x043b, + "afii10078", + 0x043c, + "afii10079", + 0x043d, + "afii10080", + 0x043e, + "afii10081", + 0x043f, + "afii10082", + 0x0440, + "afii10083", + 0x0441, + "afii10084", + 0x0442, + "afii10085", + 0x0443, + "afii10086", + 0x0444, + "afii10087", + 0x0445, + "afii10088", + 0x0446, + "afii10089", + 0x0447, + "afii10090", + 0x0448, + "afii10091", + 0x0449, + "afii10092", + 0x044a, + "afii10093", + 0x044b, + "afii10094", + 0x044c, + "afii10095", + 0x044d, + "afii10096", + 0x044e, + "afii10097", + 0x044f, + "afii10098", + 0x0491, + "afii10099", + 0x0452, + "afii10100", + 0x0453, + "afii10101", + 0x0454, + "afii10102", + 0x0455, + "afii10103", + 0x0456, + "afii10104", + 0x0457, + "afii10105", + 0x0458, + "afii10106", + 0x0459, + "afii10107", + 0x045a, + "afii10108", + 0x045b, + "afii10109", + 0x045c, + "afii10110", + 0x045e, + "afii10145", + 0x040f, + "afii10146", + 0x0462, + "afii10147", + 0x0472, + "afii10148", + 0x0474, + "afii10192", + 0xf6c6, + "afii10193", + 0x045f, + "afii10194", + 0x0463, + "afii10195", + 0x0473, + "afii10196", + 0x0475, + "afii10831", + 0xf6c7, + "afii10832", + 0xf6c8, + "afii10846", + 0x04d9, + "afii299", + 0x200e, + "afii300", + 0x200f, + "afii301", + 0x200d, + "afii57381", + 0x066a, + "afii57388", + 0x060c, + "afii57392", + 0x0660, + "afii57393", + 0x0661, + "afii57394", + 0x0662, + "afii57395", + 0x0663, + "afii57396", + 0x0664, + "afii57397", + 0x0665, + "afii57398", + 0x0666, + "afii57399", + 0x0667, + "afii57400", + 0x0668, + "afii57401", + 0x0669, + "afii57403", + 0x061b, + "afii57407", + 0x061f, + "afii57409", + 0x0621, + "afii57410", + 0x0622, + "afii57411", + 0x0623, + "afii57412", + 0x0624, + "afii57413", + 0x0625, + "afii57414", + 0x0626, + "afii57415", + 0x0627, + "afii57416", + 0x0628, + "afii57417", + 0x0629, + "afii57418", + 0x062a, + "afii57419", + 0x062b, + "afii57420", + 0x062c, + "afii57421", + 0x062d, + "afii57422", + 0x062e, + "afii57423", + 0x062f, + "afii57424", + 0x0630, + "afii57425", + 0x0631, + "afii57426", + 0x0632, + "afii57427", + 0x0633, + "afii57428", + 0x0634, + "afii57429", + 0x0635, + "afii57430", + 0x0636, + "afii57431", + 0x0637, + "afii57432", + 0x0638, + "afii57433", + 0x0639, + "afii57434", + 0x063a, + "afii57440", + 0x0640, + "afii57441", + 0x0641, + "afii57442", + 0x0642, + "afii57443", + 0x0643, + "afii57444", + 0x0644, + "afii57445", + 0x0645, + "afii57446", + 0x0646, + "afii57448", + 0x0648, + "afii57449", + 0x0649, + "afii57450", + 0x064a, + "afii57451", + 0x064b, + "afii57452", + 0x064c, + "afii57453", + 0x064d, + "afii57454", + 0x064e, + "afii57455", + 0x064f, + "afii57456", + 0x0650, + "afii57457", + 0x0651, + "afii57458", + 0x0652, + "afii57470", + 0x0647, + "afii57505", + 0x06a4, + "afii57506", + 0x067e, + "afii57507", + 0x0686, + "afii57508", + 0x0698, + "afii57509", + 0x06af, + "afii57511", + 0x0679, + "afii57512", + 0x0688, + "afii57513", + 0x0691, + "afii57514", + 0x06ba, + "afii57519", + 0x06d2, + "afii57534", + 0x06d5, + "afii57636", + 0x20aa, + "afii57645", + 0x05be, + "afii57658", + 0x05c3, + "afii57664", + 0x05d0, + "afii57665", + 0x05d1, + "afii57666", + 0x05d2, + "afii57667", + 0x05d3, + "afii57668", + 0x05d4, + "afii57669", + 0x05d5, + "afii57670", + 0x05d6, + "afii57671", + 0x05d7, + "afii57672", + 0x05d8, + "afii57673", + 0x05d9, + "afii57674", + 0x05da, + "afii57675", + 0x05db, + "afii57676", + 0x05dc, + "afii57677", + 0x05dd, + "afii57678", + 0x05de, + "afii57679", + 0x05df, + "afii57680", + 0x05e0, + "afii57681", + 0x05e1, + "afii57682", + 0x05e2, + "afii57683", + 0x05e3, + "afii57684", + 0x05e4, + "afii57685", + 0x05e5, + "afii57686", + 0x05e6, + "afii57687", + 0x05e7, + "afii57688", + 0x05e8, + "afii57689", + 0x05e9, + "afii57690", + 0x05ea, + "afii57694", + 0xfb2a, + "afii57695", + 0xfb2b, + "afii57700", + 0xfb4b, + "afii57705", + 0xfb1f, + "afii57716", + 0x05f0, + "afii57717", + 0x05f1, + "afii57718", + 0x05f2, + "afii57723", + 0xfb35, + "afii57793", + 0x05b4, + "afii57794", + 0x05b5, + "afii57795", + 0x05b6, + "afii57796", + 0x05bb, + "afii57797", + 0x05b8, + "afii57798", + 0x05b7, + "afii57799", + 0x05b0, + "afii57800", + 0x05b2, + "afii57801", + 0x05b1, + "afii57802", + 0x05b3, + "afii57803", + 0x05c2, + "afii57804", + 0x05c1, + "afii57806", + 0x05b9, + "afii57807", + 0x05bc, + "afii57839", + 0x05bd, + "afii57841", + 0x05bf, + "afii57842", + 0x05c0, + "afii57929", + 0x02bc, + "afii61248", + 0x2105, + "afii61289", + 0x2113, + "afii61352", + 0x2116, + "afii61573", + 0x202c, + "afii61574", + 0x202d, + "afii61575", + 0x202e, + "afii61664", + 0x200c, + "afii63167", + 0x066d, + "afii64937", + 0x02bd, + "agrave", + 0x00e0, + "agujarati", + 0x0a85, + "agurmukhi", + 0x0a05, + "ahiragana", + 0x3042, + "ahookabove", + 0x1ea3, + "aibengali", + 0x0990, + "aibopomofo", + 0x311e, + "aideva", + 0x0910, + "aiecyrillic", + 0x04d5, + "aigujarati", + 0x0a90, + "aigurmukhi", + 0x0a10, + "aimatragurmukhi", + 0x0a48, + "ainarabic", + 0x0639, + "ainfinalarabic", + 0xfeca, + "aininitialarabic", + 0xfecb, + "ainmedialarabic", + 0xfecc, + "ainvertedbreve", + 0x0203, + "aivowelsignbengali", + 0x09c8, + "aivowelsigndeva", + 0x0948, + "aivowelsigngujarati", + 0x0ac8, + "akatakana", + 0x30a2, + "akatakanahalfwidth", + 0xff71, + "akorean", + 0x314f, + "alef", + 0x05d0, + "alefarabic", + 0x0627, + "alefdageshhebrew", + 0xfb30, + "aleffinalarabic", + 0xfe8e, + "alefhamzaabovearabic", + 0x0623, + "alefhamzaabovefinalarabic", + 0xfe84, + "alefhamzabelowarabic", + 0x0625, + "alefhamzabelowfinalarabic", + 0xfe88, + "alefhebrew", + 0x05d0, + "aleflamedhebrew", + 0xfb4f, + "alefmaddaabovearabic", + 0x0622, + "alefmaddaabovefinalarabic", + 0xfe82, + "alefmaksuraarabic", + 0x0649, + "alefmaksurafinalarabic", + 0xfef0, + "alefmaksurainitialarabic", + 0xfef3, + "alefmaksuramedialarabic", + 0xfef4, + "alefpatahhebrew", + 0xfb2e, + "alefqamatshebrew", + 0xfb2f, + "aleph", + 0x2135, + "allequal", + 0x224c, + "alpha", + 0x03b1, + "alphatonos", + 0x03ac, + "amacron", + 0x0101, + "amonospace", + 0xff41, + "ampersand", + 0x0026, + "ampersandmonospace", + 0xff06, + "ampersandsmall", + 0xf726, + "amsquare", + 0x33c2, + "anbopomofo", + 0x3122, + "angbopomofo", + 0x3124, + "angbracketleft", + 0x3008, + "angbracketright", + 0x3009, + "angkhankhuthai", + 0x0e5a, + "angle", + 0x2220, + "anglebracketleft", + 0x3008, + "anglebracketleftvertical", + 0xfe3f, + "anglebracketright", + 0x3009, + "anglebracketrightvertical", + 0xfe40, + "angleleft", + 0x2329, + "angleright", + 0x232a, + "angstrom", + 0x212b, + "anoteleia", + 0x0387, + "anudattadeva", + 0x0952, + "anusvarabengali", + 0x0982, + "anusvaradeva", + 0x0902, + "anusvaragujarati", + 0x0a82, + "aogonek", + 0x0105, + "apaatosquare", + 0x3300, + "aparen", + 0x249c, + "apostrophearmenian", + 0x055a, + "apostrophemod", + 0x02bc, + "apple", + 0xf8ff, + "approaches", + 0x2250, + "approxequal", + 0x2248, + "approxequalorimage", + 0x2252, + "approximatelyequal", + 0x2245, + "araeaekorean", + 0x318e, + "araeakorean", + 0x318d, + "arc", + 0x2312, + "arighthalfring", + 0x1e9a, + "aring", + 0x00e5, + "aringacute", + 0x01fb, + "aringbelow", + 0x1e01, + "arrowboth", + 0x2194, + "arrowdashdown", + 0x21e3, + "arrowdashleft", + 0x21e0, + "arrowdashright", + 0x21e2, + "arrowdashup", + 0x21e1, + "arrowdblboth", + 0x21d4, + "arrowdbldown", + 0x21d3, + "arrowdblleft", + 0x21d0, + "arrowdblright", + 0x21d2, + "arrowdblup", + 0x21d1, + "arrowdown", + 0x2193, + "arrowdownleft", + 0x2199, + "arrowdownright", + 0x2198, + "arrowdownwhite", + 0x21e9, + "arrowheaddownmod", + 0x02c5, + "arrowheadleftmod", + 0x02c2, + "arrowheadrightmod", + 0x02c3, + "arrowheadupmod", + 0x02c4, + "arrowhorizex", + 0xf8e7, + "arrowleft", + 0x2190, + "arrowleftdbl", + 0x21d0, + "arrowleftdblstroke", + 0x21cd, + "arrowleftoverright", + 0x21c6, + "arrowleftwhite", + 0x21e6, + "arrowright", + 0x2192, + "arrowrightdblstroke", + 0x21cf, + "arrowrightheavy", + 0x279e, + "arrowrightoverleft", + 0x21c4, + "arrowrightwhite", + 0x21e8, + "arrowtableft", + 0x21e4, + "arrowtabright", + 0x21e5, + "arrowup", + 0x2191, + "arrowupdn", + 0x2195, + "arrowupdnbse", + 0x21a8, + "arrowupdownbase", + 0x21a8, + "arrowupleft", + 0x2196, + "arrowupleftofdown", + 0x21c5, + "arrowupright", + 0x2197, + "arrowupwhite", + 0x21e7, + "arrowvertex", + 0xf8e6, + "asciicircum", + 0x005e, + "asciicircummonospace", + 0xff3e, + "asciitilde", + 0x007e, + "asciitildemonospace", + 0xff5e, + "ascript", + 0x0251, + "ascriptturned", + 0x0252, + "asmallhiragana", + 0x3041, + "asmallkatakana", + 0x30a1, + "asmallkatakanahalfwidth", + 0xff67, + "asterisk", + 0x002a, + "asteriskaltonearabic", + 0x066d, + "asteriskarabic", + 0x066d, + "asteriskmath", + 0x2217, + "asteriskmonospace", + 0xff0a, + "asterisksmall", + 0xfe61, + "asterism", + 0x2042, + "asuperior", + 0xf6e9, + "asymptoticallyequal", + 0x2243, + "at", + 0x0040, + "atilde", + 0x00e3, + "atmonospace", + 0xff20, + "atsmall", + 0xfe6b, + "aturned", + 0x0250, + "aubengali", + 0x0994, + "aubopomofo", + 0x3120, + "audeva", + 0x0914, + "augujarati", + 0x0a94, + "augurmukhi", + 0x0a14, + "aulengthmarkbengali", + 0x09d7, + "aumatragurmukhi", + 0x0a4c, + "auvowelsignbengali", + 0x09cc, + "auvowelsigndeva", + 0x094c, + "auvowelsigngujarati", + 0x0acc, + "avagrahadeva", + 0x093d, + "aybarmenian", + 0x0561, + "ayin", + 0x05e2, + "ayinaltonehebrew", + 0xfb20, + "ayinhebrew", + 0x05e2, + "b", + 0x0062, + "babengali", + 0x09ac, + "backslash", + 0x005c, + "backslashmonospace", + 0xff3c, + "badeva", + 0x092c, + "bagujarati", + 0x0aac, + "bagurmukhi", + 0x0a2c, + "bahiragana", + 0x3070, + "bahtthai", + 0x0e3f, + "bakatakana", + 0x30d0, + "bar", + 0x007c, + "barmonospace", + 0xff5c, + "bbopomofo", + 0x3105, + "bcircle", + 0x24d1, + "bdotaccent", + 0x1e03, + "bdotbelow", + 0x1e05, + "beamedsixteenthnotes", + 0x266c, + "because", + 0x2235, + "becyrillic", + 0x0431, + "beharabic", + 0x0628, + "behfinalarabic", + 0xfe90, + "behinitialarabic", + 0xfe91, + "behiragana", + 0x3079, + "behmedialarabic", + 0xfe92, + "behmeeminitialarabic", + 0xfc9f, + "behmeemisolatedarabic", + 0xfc08, + "behnoonfinalarabic", + 0xfc6d, + "bekatakana", + 0x30d9, + "benarmenian", + 0x0562, + "bet", + 0x05d1, + "beta", + 0x03b2, + "betasymbolgreek", + 0x03d0, + "betdagesh", + 0xfb31, + "betdageshhebrew", + 0xfb31, + "bethebrew", + 0x05d1, + "betrafehebrew", + 0xfb4c, + "bhabengali", + 0x09ad, + "bhadeva", + 0x092d, + "bhagujarati", + 0x0aad, + "bhagurmukhi", + 0x0a2d, + "bhook", + 0x0253, + "bihiragana", + 0x3073, + "bikatakana", + 0x30d3, + "bilabialclick", + 0x0298, + "bindigurmukhi", + 0x0a02, + "birusquare", + 0x3331, + "blackcircle", + 0x25cf, + "blackdiamond", + 0x25c6, + "blackdownpointingtriangle", + 0x25bc, + "blackleftpointingpointer", + 0x25c4, + "blackleftpointingtriangle", + 0x25c0, + "blacklenticularbracketleft", + 0x3010, + "blacklenticularbracketleftvertical", + 0xfe3b, + "blacklenticularbracketright", + 0x3011, + "blacklenticularbracketrightvertical", + 0xfe3c, + "blacklowerlefttriangle", + 0x25e3, + "blacklowerrighttriangle", + 0x25e2, + "blackrectangle", + 0x25ac, + "blackrightpointingpointer", + 0x25ba, + "blackrightpointingtriangle", + 0x25b6, + "blacksmallsquare", + 0x25aa, + "blacksmilingface", + 0x263b, + "blacksquare", + 0x25a0, + "blackstar", + 0x2605, + "blackupperlefttriangle", + 0x25e4, + "blackupperrighttriangle", + 0x25e5, + "blackuppointingsmalltriangle", + 0x25b4, + "blackuppointingtriangle", + 0x25b2, + "blank", + 0x2423, + "blinebelow", + 0x1e07, + "block", + 0x2588, + "bmonospace", + 0xff42, + "bobaimaithai", + 0x0e1a, + "bohiragana", + 0x307c, + "bokatakana", + 0x30dc, + "bparen", + 0x249d, + "bqsquare", + 0x33c3, + "braceex", + 0xf8f4, + "braceleft", + 0x007b, + "braceleftbt", + 0xf8f3, + "braceleftmid", + 0xf8f2, + "braceleftmonospace", + 0xff5b, + "braceleftsmall", + 0xfe5b, + "bracelefttp", + 0xf8f1, + "braceleftvertical", + 0xfe37, + "braceright", + 0x007d, + "bracerightbt", + 0xf8fe, + "bracerightmid", + 0xf8fd, + "bracerightmonospace", + 0xff5d, + "bracerightsmall", + 0xfe5c, + "bracerighttp", + 0xf8fc, + "bracerightvertical", + 0xfe38, + "bracketleft", + 0x005b, + "bracketleftbt", + 0xf8f0, + "bracketleftex", + 0xf8ef, + "bracketleftmonospace", + 0xff3b, + "bracketlefttp", + 0xf8ee, + "bracketright", + 0x005d, + "bracketrightbt", + 0xf8fb, + "bracketrightex", + 0xf8fa, + "bracketrightmonospace", + 0xff3d, + "bracketrighttp", + 0xf8f9, + "breve", + 0x02d8, + "brevebelowcmb", + 0x032e, + "brevecmb", + 0x0306, + "breveinvertedbelowcmb", + 0x032f, + "breveinvertedcmb", + 0x0311, + "breveinverteddoublecmb", + 0x0361, + "bridgebelowcmb", + 0x032a, + "bridgeinvertedbelowcmb", + 0x033a, + "brokenbar", + 0x00a6, + "bstroke", + 0x0180, + "bsuperior", + 0xf6ea, + "btopbar", + 0x0183, + "buhiragana", + 0x3076, + "bukatakana", + 0x30d6, + "bullet", + 0x2022, + "bulletinverse", + 0x25d8, + "bulletoperator", + 0x2219, + "bullseye", + 0x25ce, + "c", + 0x0063, + "caarmenian", + 0x056e, + "cabengali", + 0x099a, + "cacute", + 0x0107, + "cadeva", + 0x091a, + "cagujarati", + 0x0a9a, + "cagurmukhi", + 0x0a1a, + "calsquare", + 0x3388, + "candrabindubengali", + 0x0981, + "candrabinducmb", + 0x0310, + "candrabindudeva", + 0x0901, + "candrabindugujarati", + 0x0a81, + "capslock", + 0x21ea, + "careof", + 0x2105, + "caron", + 0x02c7, + "caronbelowcmb", + 0x032c, + "caroncmb", + 0x030c, + "carriagereturn", + 0x21b5, + "cbopomofo", + 0x3118, + "ccaron", + 0x010d, + "ccedilla", + 0x00e7, + "ccedillaacute", + 0x1e09, + "ccircle", + 0x24d2, + "ccircumflex", + 0x0109, + "ccurl", + 0x0255, + "cdot", + 0x010b, + "cdotaccent", + 0x010b, + "cdsquare", + 0x33c5, + "cedilla", + 0x00b8, + "cedillacmb", + 0x0327, + "cent", + 0x00a2, + "centigrade", + 0x2103, + "centinferior", + 0xf6df, + "centmonospace", + 0xffe0, + "centoldstyle", + 0xf7a2, + "centsuperior", + 0xf6e0, + "chaarmenian", + 0x0579, + "chabengali", + 0x099b, + "chadeva", + 0x091b, + "chagujarati", + 0x0a9b, + "chagurmukhi", + 0x0a1b, + "chbopomofo", + 0x3114, + "cheabkhasiancyrillic", + 0x04bd, + "checkmark", + 0x2713, + "checyrillic", + 0x0447, + "chedescenderabkhasiancyrillic", + 0x04bf, + "chedescendercyrillic", + 0x04b7, + "chedieresiscyrillic", + 0x04f5, + "cheharmenian", + 0x0573, + "chekhakassiancyrillic", + 0x04cc, + "cheverticalstrokecyrillic", + 0x04b9, + "chi", + 0x03c7, + "chieuchacirclekorean", + 0x3277, + "chieuchaparenkorean", + 0x3217, + "chieuchcirclekorean", + 0x3269, + "chieuchkorean", + 0x314a, + "chieuchparenkorean", + 0x3209, + "chochangthai", + 0x0e0a, + "chochanthai", + 0x0e08, + "chochingthai", + 0x0e09, + "chochoethai", + 0x0e0c, + "chook", + 0x0188, + "cieucacirclekorean", + 0x3276, + "cieucaparenkorean", + 0x3216, + "cieuccirclekorean", + 0x3268, + "cieuckorean", + 0x3148, + "cieucparenkorean", + 0x3208, + "cieucuparenkorean", + 0x321c, + "circle", + 0x25cb, + "circlecopyrt", + 0x00a9, + "circlemultiply", + 0x2297, + "circleot", + 0x2299, + "circleplus", + 0x2295, + "circlepostalmark", + 0x3036, + "circlewithlefthalfblack", + 0x25d0, + "circlewithrighthalfblack", + 0x25d1, + "circumflex", + 0x02c6, + "circumflexbelowcmb", + 0x032d, + "circumflexcmb", + 0x0302, + "clear", + 0x2327, + "clickalveolar", + 0x01c2, + "clickdental", + 0x01c0, + "clicklateral", + 0x01c1, + "clickretroflex", + 0x01c3, + "club", + 0x2663, + "clubsuitblack", + 0x2663, + "clubsuitwhite", + 0x2667, + "cmcubedsquare", + 0x33a4, + "cmonospace", + 0xff43, + "cmsquaredsquare", + 0x33a0, + "coarmenian", + 0x0581, + "colon", + 0x003a, + "colonmonetary", + 0x20a1, + "colonmonospace", + 0xff1a, + "colonsign", + 0x20a1, + "colonsmall", + 0xfe55, + "colontriangularhalfmod", + 0x02d1, + "colontriangularmod", + 0x02d0, + "comma", + 0x002c, + "commaabovecmb", + 0x0313, + "commaaboverightcmb", + 0x0315, + "commaaccent", + 0xf6c3, + "commaarabic", + 0x060c, + "commaarmenian", + 0x055d, + "commainferior", + 0xf6e1, + "commamonospace", + 0xff0c, + "commareversedabovecmb", + 0x0314, + "commareversedmod", + 0x02bd, + "commasmall", + 0xfe50, + "commasuperior", + 0xf6e2, + "commaturnedabovecmb", + 0x0312, + "commaturnedmod", + 0x02bb, + "compass", + 0x263c, + "congruent", + 0x2245, + "contourintegral", + 0x222e, + "control", + 0x2303, + "controlACK", + 0x0006, + "controlBEL", + 0x0007, + "controlBS", + 0x0008, + "controlCAN", + 0x0018, + "controlCR", + 0x000d, + "controlDC1", + 0x0011, + "controlDC2", + 0x0012, + "controlDC3", + 0x0013, + "controlDC4", + 0x0014, + "controlDEL", + 0x007f, + "controlDLE", + 0x0010, + "controlEM", + 0x0019, + "controlENQ", + 0x0005, + "controlEOT", + 0x0004, + "controlESC", + 0x001b, + "controlETB", + 0x0017, + "controlETX", + 0x0003, + "controlFF", + 0x000c, + "controlFS", + 0x001c, + "controlGS", + 0x001d, + "controlHT", + 0x0009, + "controlLF", + 0x000a, + "controlNAK", + 0x0015, + "controlNULL", + 0x0000, + "controlRS", + 0x001e, + "controlSI", + 0x000f, + "controlSO", + 0x000e, + "controlSOT", + 0x0002, + "controlSTX", + 0x0001, + "controlSUB", + 0x001a, + "controlSYN", + 0x0016, + "controlUS", + 0x001f, + "controlVT", + 0x000b, + "copyright", + 0x00a9, + "copyrightsans", + 0xf8e9, + "copyrightserif", + 0xf6d9, + "cornerbracketleft", + 0x300c, + "cornerbracketlefthalfwidth", + 0xff62, + "cornerbracketleftvertical", + 0xfe41, + "cornerbracketright", + 0x300d, + "cornerbracketrighthalfwidth", + 0xff63, + "cornerbracketrightvertical", + 0xfe42, + "corporationsquare", + 0x337f, + "cosquare", + 0x33c7, + "coverkgsquare", + 0x33c6, + "cparen", + 0x249e, + "cruzeiro", + 0x20a2, + "cstretched", + 0x0297, + "curlyand", + 0x22cf, + "curlyor", + 0x22ce, + "currency", + 0x00a4, + "cyrBreve", + 0xf6d1, + "cyrFlex", + 0xf6d2, + "cyrbreve", + 0xf6d4, + "cyrflex", + 0xf6d5, + "d", + 0x0064, + "daarmenian", + 0x0564, + "dabengali", + 0x09a6, + "dadarabic", + 0x0636, + "dadeva", + 0x0926, + "dadfinalarabic", + 0xfebe, + "dadinitialarabic", + 0xfebf, + "dadmedialarabic", + 0xfec0, + "dagesh", + 0x05bc, + "dageshhebrew", + 0x05bc, + "dagger", + 0x2020, + "daggerdbl", + 0x2021, + "dagujarati", + 0x0aa6, + "dagurmukhi", + 0x0a26, + "dahiragana", + 0x3060, + "dakatakana", + 0x30c0, + "dalarabic", + 0x062f, + "dalet", + 0x05d3, + "daletdagesh", + 0xfb33, + "daletdageshhebrew", + 0xfb33, + "dalethebrew", + 0x05d3, + "dalfinalarabic", + 0xfeaa, + "dammaarabic", + 0x064f, + "dammalowarabic", + 0x064f, + "dammatanaltonearabic", + 0x064c, + "dammatanarabic", + 0x064c, + "danda", + 0x0964, + "dargahebrew", + 0x05a7, + "dargalefthebrew", + 0x05a7, + "dasiapneumatacyrilliccmb", + 0x0485, + "dblGrave", + 0xf6d3, + "dblanglebracketleft", + 0x300a, + "dblanglebracketleftvertical", + 0xfe3d, + "dblanglebracketright", + 0x300b, + "dblanglebracketrightvertical", + 0xfe3e, + "dblarchinvertedbelowcmb", + 0x032b, + "dblarrowleft", + 0x21d4, + "dblarrowright", + 0x21d2, + "dbldanda", + 0x0965, + "dblgrave", + 0xf6d6, + "dblgravecmb", + 0x030f, + "dblintegral", + 0x222c, + "dbllowline", + 0x2017, + "dbllowlinecmb", + 0x0333, + "dbloverlinecmb", + 0x033f, + "dblprimemod", + 0x02ba, + "dblverticalbar", + 0x2016, + "dblverticallineabovecmb", + 0x030e, + "dbopomofo", + 0x3109, + "dbsquare", + 0x33c8, + "dcaron", + 0x010f, + "dcedilla", + 0x1e11, + "dcircle", + 0x24d3, + "dcircumflexbelow", + 0x1e13, + "dcroat", + 0x0111, + "ddabengali", + 0x09a1, + "ddadeva", + 0x0921, + "ddagujarati", + 0x0aa1, + "ddagurmukhi", + 0x0a21, + "ddalarabic", + 0x0688, + "ddalfinalarabic", + 0xfb89, + "dddhadeva", + 0x095c, + "ddhabengali", + 0x09a2, + "ddhadeva", + 0x0922, + "ddhagujarati", + 0x0aa2, + "ddhagurmukhi", + 0x0a22, + "ddotaccent", + 0x1e0b, + "ddotbelow", + 0x1e0d, + "decimalseparatorarabic", + 0x066b, + "decimalseparatorpersian", + 0x066b, + "decyrillic", + 0x0434, + "degree", + 0x00b0, + "dehihebrew", + 0x05ad, + "dehiragana", + 0x3067, + "deicoptic", + 0x03ef, + "dekatakana", + 0x30c7, + "deleteleft", + 0x232b, + "deleteright", + 0x2326, + "delta", + 0x03b4, + "deltaturned", + 0x018d, + "denominatorminusonenumeratorbengali", + 0x09f8, + "dezh", + 0x02a4, + "dhabengali", + 0x09a7, + "dhadeva", + 0x0927, + "dhagujarati", + 0x0aa7, + "dhagurmukhi", + 0x0a27, + "dhook", + 0x0257, + "dialytikatonos", + 0x0385, + "dialytikatonoscmb", + 0x0344, + "diamond", + 0x2666, + "diamondsuitwhite", + 0x2662, + "dieresis", + 0x00a8, + "dieresisacute", + 0xf6d7, + "dieresisbelowcmb", + 0x0324, + "dieresiscmb", + 0x0308, + "dieresisgrave", + 0xf6d8, + "dieresistonos", + 0x0385, + "dihiragana", + 0x3062, + "dikatakana", + 0x30c2, + "dittomark", + 0x3003, + "divide", + 0x00f7, + "divides", + 0x2223, + "divisionslash", + 0x2215, + "djecyrillic", + 0x0452, + "dkshade", + 0x2593, + "dlinebelow", + 0x1e0f, + "dlsquare", + 0x3397, + "dmacron", + 0x0111, + "dmonospace", + 0xff44, + "dnblock", + 0x2584, + "dochadathai", + 0x0e0e, + "dodekthai", + 0x0e14, + "dohiragana", + 0x3069, + "dokatakana", + 0x30c9, + "dollar", + 0x0024, + "dollarinferior", + 0xf6e3, + "dollarmonospace", + 0xff04, + "dollaroldstyle", + 0xf724, + "dollarsmall", + 0xfe69, + "dollarsuperior", + 0xf6e4, + "dong", + 0x20ab, + "dorusquare", + 0x3326, + "dotaccent", + 0x02d9, + "dotaccentcmb", + 0x0307, + "dotbelowcmb", + 0x0323, + "dotbelowcomb", + 0x0323, + "dotkatakana", + 0x30fb, + "dotlessi", + 0x0131, + "dotlessj", + 0xf6be, + "dotlessjstrokehook", + 0x0284, + "dotmath", + 0x22c5, + "dottedcircle", + 0x25cc, + "doubleyodpatah", + 0xfb1f, + "doubleyodpatahhebrew", + 0xfb1f, + "downtackbelowcmb", + 0x031e, + "downtackmod", + 0x02d5, + "dparen", + 0x249f, + "dsuperior", + 0xf6eb, + "dtail", + 0x0256, + "dtopbar", + 0x018c, + "duhiragana", + 0x3065, + "dukatakana", + 0x30c5, + "dz", + 0x01f3, + "dzaltone", + 0x02a3, + "dzcaron", + 0x01c6, + "dzcurl", + 0x02a5, + "dzeabkhasiancyrillic", + 0x04e1, + "dzecyrillic", + 0x0455, + "dzhecyrillic", + 0x045f, + "e", + 0x0065, + "eacute", + 0x00e9, + "earth", + 0x2641, + "ebengali", + 0x098f, + "ebopomofo", + 0x311c, + "ebreve", + 0x0115, + "ecandradeva", + 0x090d, + "ecandragujarati", + 0x0a8d, + "ecandravowelsigndeva", + 0x0945, + "ecandravowelsigngujarati", + 0x0ac5, + "ecaron", + 0x011b, + "ecedillabreve", + 0x1e1d, + "echarmenian", + 0x0565, + "echyiwnarmenian", + 0x0587, + "ecircle", + 0x24d4, + "ecircumflex", + 0x00ea, + "ecircumflexacute", + 0x1ebf, + "ecircumflexbelow", + 0x1e19, + "ecircumflexdotbelow", + 0x1ec7, + "ecircumflexgrave", + 0x1ec1, + "ecircumflexhookabove", + 0x1ec3, + "ecircumflextilde", + 0x1ec5, + "ecyrillic", + 0x0454, + "edblgrave", + 0x0205, + "edeva", + 0x090f, + "edieresis", + 0x00eb, + "edot", + 0x0117, + "edotaccent", + 0x0117, + "edotbelow", + 0x1eb9, + "eegurmukhi", + 0x0a0f, + "eematragurmukhi", + 0x0a47, + "efcyrillic", + 0x0444, + "egrave", + 0x00e8, + "egujarati", + 0x0a8f, + "eharmenian", + 0x0567, + "ehbopomofo", + 0x311d, + "ehiragana", + 0x3048, + "ehookabove", + 0x1ebb, + "eibopomofo", + 0x311f, + "eight", + 0x0038, + "eightarabic", + 0x0668, + "eightbengali", + 0x09ee, + "eightcircle", + 0x2467, + "eightcircleinversesansserif", + 0x2791, + "eightdeva", + 0x096e, + "eighteencircle", + 0x2471, + "eighteenparen", + 0x2485, + "eighteenperiod", + 0x2499, + "eightgujarati", + 0x0aee, + "eightgurmukhi", + 0x0a6e, + "eighthackarabic", + 0x0668, + "eighthangzhou", + 0x3028, + "eighthnotebeamed", + 0x266b, + "eightideographicparen", + 0x3227, + "eightinferior", + 0x2088, + "eightmonospace", + 0xff18, + "eightoldstyle", + 0xf738, + "eightparen", + 0x247b, + "eightperiod", + 0x248f, + "eightpersian", + 0x06f8, + "eightroman", + 0x2177, + "eightsuperior", + 0x2078, + "eightthai", + 0x0e58, + "einvertedbreve", + 0x0207, + "eiotifiedcyrillic", + 0x0465, + "ekatakana", + 0x30a8, + "ekatakanahalfwidth", + 0xff74, + "ekonkargurmukhi", + 0x0a74, + "ekorean", + 0x3154, + "elcyrillic", + 0x043b, + "element", + 0x2208, + "elevencircle", + 0x246a, + "elevenparen", + 0x247e, + "elevenperiod", + 0x2492, + "elevenroman", + 0x217a, + "ellipsis", + 0x2026, + "ellipsisvertical", + 0x22ee, + "emacron", + 0x0113, + "emacronacute", + 0x1e17, + "emacrongrave", + 0x1e15, + "emcyrillic", + 0x043c, + "emdash", + 0x2014, + "emdashvertical", + 0xfe31, + "emonospace", + 0xff45, + "emphasismarkarmenian", + 0x055b, + "emptyset", + 0x2205, + "enbopomofo", + 0x3123, + "encyrillic", + 0x043d, + "endash", + 0x2013, + "endashvertical", + 0xfe32, + "endescendercyrillic", + 0x04a3, + "eng", + 0x014b, + "engbopomofo", + 0x3125, + "enghecyrillic", + 0x04a5, + "enhookcyrillic", + 0x04c8, + "enspace", + 0x2002, + "eogonek", + 0x0119, + "eokorean", + 0x3153, + "eopen", + 0x025b, + "eopenclosed", + 0x029a, + "eopenreversed", + 0x025c, + "eopenreversedclosed", + 0x025e, + "eopenreversedhook", + 0x025d, + "eparen", + 0x24a0, + "epsilon", + 0x03b5, + "epsilontonos", + 0x03ad, + "equal", + 0x003d, + "equalmonospace", + 0xff1d, + "equalsmall", + 0xfe66, + "equalsuperior", + 0x207c, + "equivalence", + 0x2261, + "erbopomofo", + 0x3126, + "ercyrillic", + 0x0440, + "ereversed", + 0x0258, + "ereversedcyrillic", + 0x044d, + "escyrillic", + 0x0441, + "esdescendercyrillic", + 0x04ab, + "esh", + 0x0283, + "eshcurl", + 0x0286, + "eshortdeva", + 0x090e, + "eshortvowelsigndeva", + 0x0946, + "eshreversedloop", + 0x01aa, + "eshsquatreversed", + 0x0285, + "esmallhiragana", + 0x3047, + "esmallkatakana", + 0x30a7, + "esmallkatakanahalfwidth", + 0xff6a, + "estimated", + 0x212e, + "esuperior", + 0xf6ec, + "eta", + 0x03b7, + "etarmenian", + 0x0568, + "etatonos", + 0x03ae, + "eth", + 0x00f0, + "etilde", + 0x1ebd, + "etildebelow", + 0x1e1b, + "etnahtafoukhhebrew", + 0x0591, + "etnahtafoukhlefthebrew", + 0x0591, + "etnahtahebrew", + 0x0591, + "etnahtalefthebrew", + 0x0591, + "eturned", + 0x01dd, + "eukorean", + 0x3161, + "euro", + 0x20ac, + "evowelsignbengali", + 0x09c7, + "evowelsigndeva", + 0x0947, + "evowelsigngujarati", + 0x0ac7, + "exclam", + 0x0021, + "exclamarmenian", + 0x055c, + "exclamdbl", + 0x203c, + "exclamdown", + 0x00a1, + "exclamdownsmall", + 0xf7a1, + "exclammonospace", + 0xff01, + "exclamsmall", + 0xf721, + "existential", + 0x2203, + "ezh", + 0x0292, + "ezhcaron", + 0x01ef, + "ezhcurl", + 0x0293, + "ezhreversed", + 0x01b9, + "ezhtail", + 0x01ba, + "f", + 0x0066, + "fadeva", + 0x095e, + "fagurmukhi", + 0x0a5e, + "fahrenheit", + 0x2109, + "fathaarabic", + 0x064e, + "fathalowarabic", + 0x064e, + "fathatanarabic", + 0x064b, + "fbopomofo", + 0x3108, + "fcircle", + 0x24d5, + "fdotaccent", + 0x1e1f, + "feharabic", + 0x0641, + "feharmenian", + 0x0586, + "fehfinalarabic", + 0xfed2, + "fehinitialarabic", + 0xfed3, + "fehmedialarabic", + 0xfed4, + "feicoptic", + 0x03e5, + "female", + 0x2640, + "ff", + 0xfb00, + "f_f", + 0xfb00, + "ffi", + 0xfb03, + "ffl", + 0xfb04, + "fi", + 0xfb01, + "fifteencircle", + 0x246e, + "fifteenparen", + 0x2482, + "fifteenperiod", + 0x2496, + "figuredash", + 0x2012, + "filledbox", + 0x25a0, + "filledrect", + 0x25ac, + "finalkaf", + 0x05da, + "finalkafdagesh", + 0xfb3a, + "finalkafdageshhebrew", + 0xfb3a, + "finalkafhebrew", + 0x05da, + "finalmem", + 0x05dd, + "finalmemhebrew", + 0x05dd, + "finalnun", + 0x05df, + "finalnunhebrew", + 0x05df, + "finalpe", + 0x05e3, + "finalpehebrew", + 0x05e3, + "finaltsadi", + 0x05e5, + "finaltsadihebrew", + 0x05e5, + "firsttonechinese", + 0x02c9, + "fisheye", + 0x25c9, + "fitacyrillic", + 0x0473, + "five", + 0x0035, + "fivearabic", + 0x0665, + "fivebengali", + 0x09eb, + "fivecircle", + 0x2464, + "fivecircleinversesansserif", + 0x278e, + "fivedeva", + 0x096b, + "fiveeighths", + 0x215d, + "fivegujarati", + 0x0aeb, + "fivegurmukhi", + 0x0a6b, + "fivehackarabic", + 0x0665, + "fivehangzhou", + 0x3025, + "fiveideographicparen", + 0x3224, + "fiveinferior", + 0x2085, + "fivemonospace", + 0xff15, + "fiveoldstyle", + 0xf735, + "fiveparen", + 0x2478, + "fiveperiod", + 0x248c, + "fivepersian", + 0x06f5, + "fiveroman", + 0x2174, + "fivesuperior", + 0x2075, + "fivethai", + 0x0e55, + "fl", + 0xfb02, + "florin", + 0x0192, + "fmonospace", + 0xff46, + "fmsquare", + 0x3399, + "fofanthai", + 0x0e1f, + "fofathai", + 0x0e1d, + "fongmanthai", + 0x0e4f, + "forall", + 0x2200, + "four", + 0x0034, + "fourarabic", + 0x0664, + "fourbengali", + 0x09ea, + "fourcircle", + 0x2463, + "fourcircleinversesansserif", + 0x278d, + "fourdeva", + 0x096a, + "fourgujarati", + 0x0aea, + "fourgurmukhi", + 0x0a6a, + "fourhackarabic", + 0x0664, + "fourhangzhou", + 0x3024, + "fourideographicparen", + 0x3223, + "fourinferior", + 0x2084, + "fourmonospace", + 0xff14, + "fournumeratorbengali", + 0x09f7, + "fouroldstyle", + 0xf734, + "fourparen", + 0x2477, + "fourperiod", + 0x248b, + "fourpersian", + 0x06f4, + "fourroman", + 0x2173, + "foursuperior", + 0x2074, + "fourteencircle", + 0x246d, + "fourteenparen", + 0x2481, + "fourteenperiod", + 0x2495, + "fourthai", + 0x0e54, + "fourthtonechinese", + 0x02cb, + "fparen", + 0x24a1, + "fraction", + 0x2044, + "franc", + 0x20a3, + "g", + 0x0067, + "gabengali", + 0x0997, + "gacute", + 0x01f5, + "gadeva", + 0x0917, + "gafarabic", + 0x06af, + "gaffinalarabic", + 0xfb93, + "gafinitialarabic", + 0xfb94, + "gafmedialarabic", + 0xfb95, + "gagujarati", + 0x0a97, + "gagurmukhi", + 0x0a17, + "gahiragana", + 0x304c, + "gakatakana", + 0x30ac, + "gamma", + 0x03b3, + "gammalatinsmall", + 0x0263, + "gammasuperior", + 0x02e0, + "gangiacoptic", + 0x03eb, + "gbopomofo", + 0x310d, + "gbreve", + 0x011f, + "gcaron", + 0x01e7, + "gcedilla", + 0x0123, + "gcircle", + 0x24d6, + "gcircumflex", + 0x011d, + "gcommaaccent", + 0x0123, + "gdot", + 0x0121, + "gdotaccent", + 0x0121, + "gecyrillic", + 0x0433, + "gehiragana", + 0x3052, + "gekatakana", + 0x30b2, + "geometricallyequal", + 0x2251, + "gereshaccenthebrew", + 0x059c, + "gereshhebrew", + 0x05f3, + "gereshmuqdamhebrew", + 0x059d, + "germandbls", + 0x00df, + "gershayimaccenthebrew", + 0x059e, + "gershayimhebrew", + 0x05f4, + "getamark", + 0x3013, + "ghabengali", + 0x0998, + "ghadarmenian", + 0x0572, + "ghadeva", + 0x0918, + "ghagujarati", + 0x0a98, + "ghagurmukhi", + 0x0a18, + "ghainarabic", + 0x063a, + "ghainfinalarabic", + 0xfece, + "ghaininitialarabic", + 0xfecf, + "ghainmedialarabic", + 0xfed0, + "ghemiddlehookcyrillic", + 0x0495, + "ghestrokecyrillic", + 0x0493, + "gheupturncyrillic", + 0x0491, + "ghhadeva", + 0x095a, + "ghhagurmukhi", + 0x0a5a, + "ghook", + 0x0260, + "ghzsquare", + 0x3393, + "gihiragana", + 0x304e, + "gikatakana", + 0x30ae, + "gimarmenian", + 0x0563, + "gimel", + 0x05d2, + "gimeldagesh", + 0xfb32, + "gimeldageshhebrew", + 0xfb32, + "gimelhebrew", + 0x05d2, + "gjecyrillic", + 0x0453, + "glottalinvertedstroke", + 0x01be, + "glottalstop", + 0x0294, + "glottalstopinverted", + 0x0296, + "glottalstopmod", + 0x02c0, + "glottalstopreversed", + 0x0295, + "glottalstopreversedmod", + 0x02c1, + "glottalstopreversedsuperior", + 0x02e4, + "glottalstopstroke", + 0x02a1, + "glottalstopstrokereversed", + 0x02a2, + "gmacron", + 0x1e21, + "gmonospace", + 0xff47, + "gohiragana", + 0x3054, + "gokatakana", + 0x30b4, + "gparen", + 0x24a2, + "gpasquare", + 0x33ac, + "gradient", + 0x2207, + "grave", + 0x0060, + "gravebelowcmb", + 0x0316, + "gravecmb", + 0x0300, + "gravecomb", + 0x0300, + "gravedeva", + 0x0953, + "gravelowmod", + 0x02ce, + "gravemonospace", + 0xff40, + "gravetonecmb", + 0x0340, + "greater", + 0x003e, + "greaterequal", + 0x2265, + "greaterequalorless", + 0x22db, + "greatermonospace", + 0xff1e, + "greaterorequivalent", + 0x2273, + "greaterorless", + 0x2277, + "greateroverequal", + 0x2267, + "greatersmall", + 0xfe65, + "gscript", + 0x0261, + "gstroke", + 0x01e5, + "guhiragana", + 0x3050, + "guillemotleft", + 0x00ab, + "guillemotright", + 0x00bb, + "guilsinglleft", + 0x2039, + "guilsinglright", + 0x203a, + "gukatakana", + 0x30b0, + "guramusquare", + 0x3318, + "gysquare", + 0x33c9, + "h", + 0x0068, + "haabkhasiancyrillic", + 0x04a9, + "haaltonearabic", + 0x06c1, + "habengali", + 0x09b9, + "hadescendercyrillic", + 0x04b3, + "hadeva", + 0x0939, + "hagujarati", + 0x0ab9, + "hagurmukhi", + 0x0a39, + "haharabic", + 0x062d, + "hahfinalarabic", + 0xfea2, + "hahinitialarabic", + 0xfea3, + "hahiragana", + 0x306f, + "hahmedialarabic", + 0xfea4, + "haitusquare", + 0x332a, + "hakatakana", + 0x30cf, + "hakatakanahalfwidth", + 0xff8a, + "halantgurmukhi", + 0x0a4d, + "hamzaarabic", + 0x0621, + "hamzalowarabic", + 0x0621, + "hangulfiller", + 0x3164, + "hardsigncyrillic", + 0x044a, + "harpoonleftbarbup", + 0x21bc, + "harpoonrightbarbup", + 0x21c0, + "hasquare", + 0x33ca, + "hatafpatah", + 0x05b2, + "hatafpatah16", + 0x05b2, + "hatafpatah23", + 0x05b2, + "hatafpatah2f", + 0x05b2, + "hatafpatahhebrew", + 0x05b2, + "hatafpatahnarrowhebrew", + 0x05b2, + "hatafpatahquarterhebrew", + 0x05b2, + "hatafpatahwidehebrew", + 0x05b2, + "hatafqamats", + 0x05b3, + "hatafqamats1b", + 0x05b3, + "hatafqamats28", + 0x05b3, + "hatafqamats34", + 0x05b3, + "hatafqamatshebrew", + 0x05b3, + "hatafqamatsnarrowhebrew", + 0x05b3, + "hatafqamatsquarterhebrew", + 0x05b3, + "hatafqamatswidehebrew", + 0x05b3, + "hatafsegol", + 0x05b1, + "hatafsegol17", + 0x05b1, + "hatafsegol24", + 0x05b1, + "hatafsegol30", + 0x05b1, + "hatafsegolhebrew", + 0x05b1, + "hatafsegolnarrowhebrew", + 0x05b1, + "hatafsegolquarterhebrew", + 0x05b1, + "hatafsegolwidehebrew", + 0x05b1, + "hbar", + 0x0127, + "hbopomofo", + 0x310f, + "hbrevebelow", + 0x1e2b, + "hcedilla", + 0x1e29, + "hcircle", + 0x24d7, + "hcircumflex", + 0x0125, + "hdieresis", + 0x1e27, + "hdotaccent", + 0x1e23, + "hdotbelow", + 0x1e25, + "he", + 0x05d4, + "heart", + 0x2665, + "heartsuitblack", + 0x2665, + "heartsuitwhite", + 0x2661, + "hedagesh", + 0xfb34, + "hedageshhebrew", + 0xfb34, + "hehaltonearabic", + 0x06c1, + "heharabic", + 0x0647, + "hehebrew", + 0x05d4, + "hehfinalaltonearabic", + 0xfba7, + "hehfinalalttwoarabic", + 0xfeea, + "hehfinalarabic", + 0xfeea, + "hehhamzaabovefinalarabic", + 0xfba5, + "hehhamzaaboveisolatedarabic", + 0xfba4, + "hehinitialaltonearabic", + 0xfba8, + "hehinitialarabic", + 0xfeeb, + "hehiragana", + 0x3078, + "hehmedialaltonearabic", + 0xfba9, + "hehmedialarabic", + 0xfeec, + "heiseierasquare", + 0x337b, + "hekatakana", + 0x30d8, + "hekatakanahalfwidth", + 0xff8d, + "hekutaarusquare", + 0x3336, + "henghook", + 0x0267, + "herutusquare", + 0x3339, + "het", + 0x05d7, + "hethebrew", + 0x05d7, + "hhook", + 0x0266, + "hhooksuperior", + 0x02b1, + "hieuhacirclekorean", + 0x327b, + "hieuhaparenkorean", + 0x321b, + "hieuhcirclekorean", + 0x326d, + "hieuhkorean", + 0x314e, + "hieuhparenkorean", + 0x320d, + "hihiragana", + 0x3072, + "hikatakana", + 0x30d2, + "hikatakanahalfwidth", + 0xff8b, + "hiriq", + 0x05b4, + "hiriq14", + 0x05b4, + "hiriq21", + 0x05b4, + "hiriq2d", + 0x05b4, + "hiriqhebrew", + 0x05b4, + "hiriqnarrowhebrew", + 0x05b4, + "hiriqquarterhebrew", + 0x05b4, + "hiriqwidehebrew", + 0x05b4, + "hlinebelow", + 0x1e96, + "hmonospace", + 0xff48, + "hoarmenian", + 0x0570, + "hohipthai", + 0x0e2b, + "hohiragana", + 0x307b, + "hokatakana", + 0x30db, + "hokatakanahalfwidth", + 0xff8e, + "holam", + 0x05b9, + "holam19", + 0x05b9, + "holam26", + 0x05b9, + "holam32", + 0x05b9, + "holamhebrew", + 0x05b9, + "holamnarrowhebrew", + 0x05b9, + "holamquarterhebrew", + 0x05b9, + "holamwidehebrew", + 0x05b9, + "honokhukthai", + 0x0e2e, + "hookabovecomb", + 0x0309, + "hookcmb", + 0x0309, + "hookpalatalizedbelowcmb", + 0x0321, + "hookretroflexbelowcmb", + 0x0322, + "hoonsquare", + 0x3342, + "horicoptic", + 0x03e9, + "horizontalbar", + 0x2015, + "horncmb", + 0x031b, + "hotsprings", + 0x2668, + "house", + 0x2302, + "hparen", + 0x24a3, + "hsuperior", + 0x02b0, + "hturned", + 0x0265, + "huhiragana", + 0x3075, + "huiitosquare", + 0x3333, + "hukatakana", + 0x30d5, + "hukatakanahalfwidth", + 0xff8c, + "hungarumlaut", + 0x02dd, + "hungarumlautcmb", + 0x030b, + "hv", + 0x0195, + "hyphen", + 0x002d, + "hypheninferior", + 0xf6e5, + "hyphenmonospace", + 0xff0d, + "hyphensmall", + 0xfe63, + "hyphensuperior", + 0xf6e6, + "hyphentwo", + 0x2010, + "i", + 0x0069, + "iacute", + 0x00ed, + "iacyrillic", + 0x044f, + "ibengali", + 0x0987, + "ibopomofo", + 0x3127, + "ibreve", + 0x012d, + "icaron", + 0x01d0, + "icircle", + 0x24d8, + "icircumflex", + 0x00ee, + "icyrillic", + 0x0456, + "idblgrave", + 0x0209, + "ideographearthcircle", + 0x328f, + "ideographfirecircle", + 0x328b, + "ideographicallianceparen", + 0x323f, + "ideographiccallparen", + 0x323a, + "ideographiccentrecircle", + 0x32a5, + "ideographicclose", + 0x3006, + "ideographiccomma", + 0x3001, + "ideographiccommaleft", + 0xff64, + "ideographiccongratulationparen", + 0x3237, + "ideographiccorrectcircle", + 0x32a3, + "ideographicearthparen", + 0x322f, + "ideographicenterpriseparen", + 0x323d, + "ideographicexcellentcircle", + 0x329d, + "ideographicfestivalparen", + 0x3240, + "ideographicfinancialcircle", + 0x3296, + "ideographicfinancialparen", + 0x3236, + "ideographicfireparen", + 0x322b, + "ideographichaveparen", + 0x3232, + "ideographichighcircle", + 0x32a4, + "ideographiciterationmark", + 0x3005, + "ideographiclaborcircle", + 0x3298, + "ideographiclaborparen", + 0x3238, + "ideographicleftcircle", + 0x32a7, + "ideographiclowcircle", + 0x32a6, + "ideographicmedicinecircle", + 0x32a9, + "ideographicmetalparen", + 0x322e, + "ideographicmoonparen", + 0x322a, + "ideographicnameparen", + 0x3234, + "ideographicperiod", + 0x3002, + "ideographicprintcircle", + 0x329e, + "ideographicreachparen", + 0x3243, + "ideographicrepresentparen", + 0x3239, + "ideographicresourceparen", + 0x323e, + "ideographicrightcircle", + 0x32a8, + "ideographicsecretcircle", + 0x3299, + "ideographicselfparen", + 0x3242, + "ideographicsocietyparen", + 0x3233, + "ideographicspace", + 0x3000, + "ideographicspecialparen", + 0x3235, + "ideographicstockparen", + 0x3231, + "ideographicstudyparen", + 0x323b, + "ideographicsunparen", + 0x3230, + "ideographicsuperviseparen", + 0x323c, + "ideographicwaterparen", + 0x322c, + "ideographicwoodparen", + 0x322d, + "ideographiczero", + 0x3007, + "ideographmetalcircle", + 0x328e, + "ideographmooncircle", + 0x328a, + "ideographnamecircle", + 0x3294, + "ideographsuncircle", + 0x3290, + "ideographwatercircle", + 0x328c, + "ideographwoodcircle", + 0x328d, + "ideva", + 0x0907, + "idieresis", + 0x00ef, + "idieresisacute", + 0x1e2f, + "idieresiscyrillic", + 0x04e5, + "idotbelow", + 0x1ecb, + "iebrevecyrillic", + 0x04d7, + "iecyrillic", + 0x0435, + "ieungacirclekorean", + 0x3275, + "ieungaparenkorean", + 0x3215, + "ieungcirclekorean", + 0x3267, + "ieungkorean", + 0x3147, + "ieungparenkorean", + 0x3207, + "igrave", + 0x00ec, + "igujarati", + 0x0a87, + "igurmukhi", + 0x0a07, + "ihiragana", + 0x3044, + "ihookabove", + 0x1ec9, + "iibengali", + 0x0988, + "iicyrillic", + 0x0438, + "iideva", + 0x0908, + "iigujarati", + 0x0a88, + "iigurmukhi", + 0x0a08, + "iimatragurmukhi", + 0x0a40, + "iinvertedbreve", + 0x020b, + "iishortcyrillic", + 0x0439, + "iivowelsignbengali", + 0x09c0, + "iivowelsigndeva", + 0x0940, + "iivowelsigngujarati", + 0x0ac0, + "ij", + 0x0133, + "ikatakana", + 0x30a4, + "ikatakanahalfwidth", + 0xff72, + "ikorean", + 0x3163, + "ilde", + 0x02dc, + "iluyhebrew", + 0x05ac, + "imacron", + 0x012b, + "imacroncyrillic", + 0x04e3, + "imageorapproximatelyequal", + 0x2253, + "imatragurmukhi", + 0x0a3f, + "imonospace", + 0xff49, + "increment", + 0x2206, + "infinity", + 0x221e, + "iniarmenian", + 0x056b, + "integral", + 0x222b, + "integralbottom", + 0x2321, + "integralbt", + 0x2321, + "integralex", + 0xf8f5, + "integraltop", + 0x2320, + "integraltp", + 0x2320, + "intersection", + 0x2229, + "intisquare", + 0x3305, + "invbullet", + 0x25d8, + "invcircle", + 0x25d9, + "invsmileface", + 0x263b, + "iocyrillic", + 0x0451, + "iogonek", + 0x012f, + "iota", + 0x03b9, + "iotadieresis", + 0x03ca, + "iotadieresistonos", + 0x0390, + "iotalatin", + 0x0269, + "iotatonos", + 0x03af, + "iparen", + 0x24a4, + "irigurmukhi", + 0x0a72, + "ismallhiragana", + 0x3043, + "ismallkatakana", + 0x30a3, + "ismallkatakanahalfwidth", + 0xff68, + "issharbengali", + 0x09fa, + "istroke", + 0x0268, + "isuperior", + 0xf6ed, + "iterationhiragana", + 0x309d, + "iterationkatakana", + 0x30fd, + "itilde", + 0x0129, + "itildebelow", + 0x1e2d, + "iubopomofo", + 0x3129, + "iucyrillic", + 0x044e, + "ivowelsignbengali", + 0x09bf, + "ivowelsigndeva", + 0x093f, + "ivowelsigngujarati", + 0x0abf, + "izhitsacyrillic", + 0x0475, + "izhitsadblgravecyrillic", + 0x0477, + "j", + 0x006a, + "jaarmenian", + 0x0571, + "jabengali", + 0x099c, + "jadeva", + 0x091c, + "jagujarati", + 0x0a9c, + "jagurmukhi", + 0x0a1c, + "jbopomofo", + 0x3110, + "jcaron", + 0x01f0, + "jcircle", + 0x24d9, + "jcircumflex", + 0x0135, + "jcrossedtail", + 0x029d, + "jdotlessstroke", + 0x025f, + "jecyrillic", + 0x0458, + "jeemarabic", + 0x062c, + "jeemfinalarabic", + 0xfe9e, + "jeeminitialarabic", + 0xfe9f, + "jeemmedialarabic", + 0xfea0, + "jeharabic", + 0x0698, + "jehfinalarabic", + 0xfb8b, + "jhabengali", + 0x099d, + "jhadeva", + 0x091d, + "jhagujarati", + 0x0a9d, + "jhagurmukhi", + 0x0a1d, + "jheharmenian", + 0x057b, + "jis", + 0x3004, + "jmonospace", + 0xff4a, + "jparen", + 0x24a5, + "jsuperior", + 0x02b2, + "k", + 0x006b, + "kabashkircyrillic", + 0x04a1, + "kabengali", + 0x0995, + "kacute", + 0x1e31, + "kacyrillic", + 0x043a, + "kadescendercyrillic", + 0x049b, + "kadeva", + 0x0915, + "kaf", + 0x05db, + "kafarabic", + 0x0643, + "kafdagesh", + 0xfb3b, + "kafdageshhebrew", + 0xfb3b, + "kaffinalarabic", + 0xfeda, + "kafhebrew", + 0x05db, + "kafinitialarabic", + 0xfedb, + "kafmedialarabic", + 0xfedc, + "kafrafehebrew", + 0xfb4d, + "kagujarati", + 0x0a95, + "kagurmukhi", + 0x0a15, + "kahiragana", + 0x304b, + "kahookcyrillic", + 0x04c4, + "kakatakana", + 0x30ab, + "kakatakanahalfwidth", + 0xff76, + "kappa", + 0x03ba, + "kappasymbolgreek", + 0x03f0, + "kapyeounmieumkorean", + 0x3171, + "kapyeounphieuphkorean", + 0x3184, + "kapyeounpieupkorean", + 0x3178, + "kapyeounssangpieupkorean", + 0x3179, + "karoriisquare", + 0x330d, + "kashidaautoarabic", + 0x0640, + "kashidaautonosidebearingarabic", + 0x0640, + "kasmallkatakana", + 0x30f5, + "kasquare", + 0x3384, + "kasraarabic", + 0x0650, + "kasratanarabic", + 0x064d, + "kastrokecyrillic", + 0x049f, + "katahiraprolongmarkhalfwidth", + 0xff70, + "kaverticalstrokecyrillic", + 0x049d, + "kbopomofo", + 0x310e, + "kcalsquare", + 0x3389, + "kcaron", + 0x01e9, + "kcedilla", + 0x0137, + "kcircle", + 0x24da, + "kcommaaccent", + 0x0137, + "kdotbelow", + 0x1e33, + "keharmenian", + 0x0584, + "kehiragana", + 0x3051, + "kekatakana", + 0x30b1, + "kekatakanahalfwidth", + 0xff79, + "kenarmenian", + 0x056f, + "kesmallkatakana", + 0x30f6, + "kgreenlandic", + 0x0138, + "khabengali", + 0x0996, + "khacyrillic", + 0x0445, + "khadeva", + 0x0916, + "khagujarati", + 0x0a96, + "khagurmukhi", + 0x0a16, + "khaharabic", + 0x062e, + "khahfinalarabic", + 0xfea6, + "khahinitialarabic", + 0xfea7, + "khahmedialarabic", + 0xfea8, + "kheicoptic", + 0x03e7, + "khhadeva", + 0x0959, + "khhagurmukhi", + 0x0a59, + "khieukhacirclekorean", + 0x3278, + "khieukhaparenkorean", + 0x3218, + "khieukhcirclekorean", + 0x326a, + "khieukhkorean", + 0x314b, + "khieukhparenkorean", + 0x320a, + "khokhaithai", + 0x0e02, + "khokhonthai", + 0x0e05, + "khokhuatthai", + 0x0e03, + "khokhwaithai", + 0x0e04, + "khomutthai", + 0x0e5b, + "khook", + 0x0199, + "khorakhangthai", + 0x0e06, + "khzsquare", + 0x3391, + "kihiragana", + 0x304d, + "kikatakana", + 0x30ad, + "kikatakanahalfwidth", + 0xff77, + "kiroguramusquare", + 0x3315, + "kiromeetorusquare", + 0x3316, + "kirosquare", + 0x3314, + "kiyeokacirclekorean", + 0x326e, + "kiyeokaparenkorean", + 0x320e, + "kiyeokcirclekorean", + 0x3260, + "kiyeokkorean", + 0x3131, + "kiyeokparenkorean", + 0x3200, + "kiyeoksioskorean", + 0x3133, + "kjecyrillic", + 0x045c, + "klinebelow", + 0x1e35, + "klsquare", + 0x3398, + "kmcubedsquare", + 0x33a6, + "kmonospace", + 0xff4b, + "kmsquaredsquare", + 0x33a2, + "kohiragana", + 0x3053, + "kohmsquare", + 0x33c0, + "kokaithai", + 0x0e01, + "kokatakana", + 0x30b3, + "kokatakanahalfwidth", + 0xff7a, + "kooposquare", + 0x331e, + "koppacyrillic", + 0x0481, + "koreanstandardsymbol", + 0x327f, + "koroniscmb", + 0x0343, + "kparen", + 0x24a6, + "kpasquare", + 0x33aa, + "ksicyrillic", + 0x046f, + "ktsquare", + 0x33cf, + "kturned", + 0x029e, + "kuhiragana", + 0x304f, + "kukatakana", + 0x30af, + "kukatakanahalfwidth", + 0xff78, + "kvsquare", + 0x33b8, + "kwsquare", + 0x33be, + "l", + 0x006c, + "labengali", + 0x09b2, + "lacute", + 0x013a, + "ladeva", + 0x0932, + "lagujarati", + 0x0ab2, + "lagurmukhi", + 0x0a32, + "lakkhangyaothai", + 0x0e45, + "lamaleffinalarabic", + 0xfefc, + "lamalefhamzaabovefinalarabic", + 0xfef8, + "lamalefhamzaaboveisolatedarabic", + 0xfef7, + "lamalefhamzabelowfinalarabic", + 0xfefa, + "lamalefhamzabelowisolatedarabic", + 0xfef9, + "lamalefisolatedarabic", + 0xfefb, + "lamalefmaddaabovefinalarabic", + 0xfef6, + "lamalefmaddaaboveisolatedarabic", + 0xfef5, + "lamarabic", + 0x0644, + "lambda", + 0x03bb, + "lambdastroke", + 0x019b, + "lamed", + 0x05dc, + "lameddagesh", + 0xfb3c, + "lameddageshhebrew", + 0xfb3c, + "lamedhebrew", + 0x05dc, + "lamfinalarabic", + 0xfede, + "lamhahinitialarabic", + 0xfcca, + "laminitialarabic", + 0xfedf, + "lamjeeminitialarabic", + 0xfcc9, + "lamkhahinitialarabic", + 0xfccb, + "lamlamhehisolatedarabic", + 0xfdf2, + "lammedialarabic", + 0xfee0, + "lammeemhahinitialarabic", + 0xfd88, + "lammeeminitialarabic", + 0xfccc, + "largecircle", + 0x25ef, + "lbar", + 0x019a, + "lbelt", + 0x026c, + "lbopomofo", + 0x310c, + "lcaron", + 0x013e, + "lcedilla", + 0x013c, + "lcircle", + 0x24db, + "lcircumflexbelow", + 0x1e3d, + "lcommaaccent", + 0x013c, + "ldot", + 0x0140, + "ldotaccent", + 0x0140, + "ldotbelow", + 0x1e37, + "ldotbelowmacron", + 0x1e39, + "leftangleabovecmb", + 0x031a, + "lefttackbelowcmb", + 0x0318, + "less", + 0x003c, + "lessequal", + 0x2264, + "lessequalorgreater", + 0x22da, + "lessmonospace", + 0xff1c, + "lessorequivalent", + 0x2272, + "lessorgreater", + 0x2276, + "lessoverequal", + 0x2266, + "lesssmall", + 0xfe64, + "lezh", + 0x026e, + "lfblock", + 0x258c, + "lhookretroflex", + 0x026d, + "lira", + 0x20a4, + "liwnarmenian", + 0x056c, + "lj", + 0x01c9, + "ljecyrillic", + 0x0459, + "ll", + 0xf6c0, + "lladeva", + 0x0933, + "llagujarati", + 0x0ab3, + "llinebelow", + 0x1e3b, + "llladeva", + 0x0934, + "llvocalicbengali", + 0x09e1, + "llvocalicdeva", + 0x0961, + "llvocalicvowelsignbengali", + 0x09e3, + "llvocalicvowelsigndeva", + 0x0963, + "lmiddletilde", + 0x026b, + "lmonospace", + 0xff4c, + "lmsquare", + 0x33d0, + "lochulathai", + 0x0e2c, + "logicaland", + 0x2227, + "logicalnot", + 0x00ac, + "logicalnotreversed", + 0x2310, + "logicalor", + 0x2228, + "lolingthai", + 0x0e25, + "longs", + 0x017f, + "lowlinecenterline", + 0xfe4e, + "lowlinecmb", + 0x0332, + "lowlinedashed", + 0xfe4d, + "lozenge", + 0x25ca, + "lparen", + 0x24a7, + "lslash", + 0x0142, + "lsquare", + 0x2113, + "lsuperior", + 0xf6ee, + "ltshade", + 0x2591, + "luthai", + 0x0e26, + "lvocalicbengali", + 0x098c, + "lvocalicdeva", + 0x090c, + "lvocalicvowelsignbengali", + 0x09e2, + "lvocalicvowelsigndeva", + 0x0962, + "lxsquare", + 0x33d3, + "m", + 0x006d, + "mabengali", + 0x09ae, + "macron", + 0x00af, + "macronbelowcmb", + 0x0331, + "macroncmb", + 0x0304, + "macronlowmod", + 0x02cd, + "macronmonospace", + 0xffe3, + "macute", + 0x1e3f, + "madeva", + 0x092e, + "magujarati", + 0x0aae, + "magurmukhi", + 0x0a2e, + "mahapakhhebrew", + 0x05a4, + "mahapakhlefthebrew", + 0x05a4, + "mahiragana", + 0x307e, + "maichattawalowleftthai", + 0xf895, + "maichattawalowrightthai", + 0xf894, + "maichattawathai", + 0x0e4b, + "maichattawaupperleftthai", + 0xf893, + "maieklowleftthai", + 0xf88c, + "maieklowrightthai", + 0xf88b, + "maiekthai", + 0x0e48, + "maiekupperleftthai", + 0xf88a, + "maihanakatleftthai", + 0xf884, + "maihanakatthai", + 0x0e31, + "maitaikhuleftthai", + 0xf889, + "maitaikhuthai", + 0x0e47, + "maitholowleftthai", + 0xf88f, + "maitholowrightthai", + 0xf88e, + "maithothai", + 0x0e49, + "maithoupperleftthai", + 0xf88d, + "maitrilowleftthai", + 0xf892, + "maitrilowrightthai", + 0xf891, + "maitrithai", + 0x0e4a, + "maitriupperleftthai", + 0xf890, + "maiyamokthai", + 0x0e46, + "makatakana", + 0x30de, + "makatakanahalfwidth", + 0xff8f, + "male", + 0x2642, + "mansyonsquare", + 0x3347, + "maqafhebrew", + 0x05be, + "mars", + 0x2642, + "masoracirclehebrew", + 0x05af, + "masquare", + 0x3383, + "mbopomofo", + 0x3107, + "mbsquare", + 0x33d4, + "mcircle", + 0x24dc, + "mcubedsquare", + 0x33a5, + "mdotaccent", + 0x1e41, + "mdotbelow", + 0x1e43, + "meemarabic", + 0x0645, + "meemfinalarabic", + 0xfee2, + "meeminitialarabic", + 0xfee3, + "meemmedialarabic", + 0xfee4, + "meemmeeminitialarabic", + 0xfcd1, + "meemmeemisolatedarabic", + 0xfc48, + "meetorusquare", + 0x334d, + "mehiragana", + 0x3081, + "meizierasquare", + 0x337e, + "mekatakana", + 0x30e1, + "mekatakanahalfwidth", + 0xff92, + "mem", + 0x05de, + "memdagesh", + 0xfb3e, + "memdageshhebrew", + 0xfb3e, + "memhebrew", + 0x05de, + "menarmenian", + 0x0574, + "merkhahebrew", + 0x05a5, + "merkhakefulahebrew", + 0x05a6, + "merkhakefulalefthebrew", + 0x05a6, + "merkhalefthebrew", + 0x05a5, + "mhook", + 0x0271, + "mhzsquare", + 0x3392, + "middledotkatakanahalfwidth", + 0xff65, + "middot", + 0x00b7, + "mieumacirclekorean", + 0x3272, + "mieumaparenkorean", + 0x3212, + "mieumcirclekorean", + 0x3264, + "mieumkorean", + 0x3141, + "mieumpansioskorean", + 0x3170, + "mieumparenkorean", + 0x3204, + "mieumpieupkorean", + 0x316e, + "mieumsioskorean", + 0x316f, + "mihiragana", + 0x307f, + "mikatakana", + 0x30df, + "mikatakanahalfwidth", + 0xff90, + "minus", + 0x2212, + "minusbelowcmb", + 0x0320, + "minuscircle", + 0x2296, + "minusmod", + 0x02d7, + "minusplus", + 0x2213, + "minute", + 0x2032, + "miribaarusquare", + 0x334a, + "mirisquare", + 0x3349, + "mlonglegturned", + 0x0270, + "mlsquare", + 0x3396, + "mmcubedsquare", + 0x33a3, + "mmonospace", + 0xff4d, + "mmsquaredsquare", + 0x339f, + "mohiragana", + 0x3082, + "mohmsquare", + 0x33c1, + "mokatakana", + 0x30e2, + "mokatakanahalfwidth", + 0xff93, + "molsquare", + 0x33d6, + "momathai", + 0x0e21, + "moverssquare", + 0x33a7, + "moverssquaredsquare", + 0x33a8, + "mparen", + 0x24a8, + "mpasquare", + 0x33ab, + "mssquare", + 0x33b3, + "msuperior", + 0xf6ef, + "mturned", + 0x026f, + "mu", + 0x00b5, + "mu1", + 0x00b5, + "muasquare", + 0x3382, + "muchgreater", + 0x226b, + "muchless", + 0x226a, + "mufsquare", + 0x338c, + "mugreek", + 0x03bc, + "mugsquare", + 0x338d, + "muhiragana", + 0x3080, + "mukatakana", + 0x30e0, + "mukatakanahalfwidth", + 0xff91, + "mulsquare", + 0x3395, + "multiply", + 0x00d7, + "mumsquare", + 0x339b, + "munahhebrew", + 0x05a3, + "munahlefthebrew", + 0x05a3, + "musicalnote", + 0x266a, + "musicalnotedbl", + 0x266b, + "musicflatsign", + 0x266d, + "musicsharpsign", + 0x266f, + "mussquare", + 0x33b2, + "muvsquare", + 0x33b6, + "muwsquare", + 0x33bc, + "mvmegasquare", + 0x33b9, + "mvsquare", + 0x33b7, + "mwmegasquare", + 0x33bf, + "mwsquare", + 0x33bd, + "n", + 0x006e, + "nabengali", + 0x09a8, + "nabla", + 0x2207, + "nacute", + 0x0144, + "nadeva", + 0x0928, + "nagujarati", + 0x0aa8, + "nagurmukhi", + 0x0a28, + "nahiragana", + 0x306a, + "nakatakana", + 0x30ca, + "nakatakanahalfwidth", + 0xff85, + "napostrophe", + 0x0149, + "nasquare", + 0x3381, + "nbopomofo", + 0x310b, + "nbspace", + 0x00a0, + "ncaron", + 0x0148, + "ncedilla", + 0x0146, + "ncircle", + 0x24dd, + "ncircumflexbelow", + 0x1e4b, + "ncommaaccent", + 0x0146, + "ndotaccent", + 0x1e45, + "ndotbelow", + 0x1e47, + "nehiragana", + 0x306d, + "nekatakana", + 0x30cd, + "nekatakanahalfwidth", + 0xff88, + "newsheqelsign", + 0x20aa, + "nfsquare", + 0x338b, + "ngabengali", + 0x0999, + "ngadeva", + 0x0919, + "ngagujarati", + 0x0a99, + "ngagurmukhi", + 0x0a19, + "ngonguthai", + 0x0e07, + "nhiragana", + 0x3093, + "nhookleft", + 0x0272, + "nhookretroflex", + 0x0273, + "nieunacirclekorean", + 0x326f, + "nieunaparenkorean", + 0x320f, + "nieuncieuckorean", + 0x3135, + "nieuncirclekorean", + 0x3261, + "nieunhieuhkorean", + 0x3136, + "nieunkorean", + 0x3134, + "nieunpansioskorean", + 0x3168, + "nieunparenkorean", + 0x3201, + "nieunsioskorean", + 0x3167, + "nieuntikeutkorean", + 0x3166, + "nihiragana", + 0x306b, + "nikatakana", + 0x30cb, + "nikatakanahalfwidth", + 0xff86, + "nikhahitleftthai", + 0xf899, + "nikhahitthai", + 0x0e4d, + "nine", + 0x0039, + "ninearabic", + 0x0669, + "ninebengali", + 0x09ef, + "ninecircle", + 0x2468, + "ninecircleinversesansserif", + 0x2792, + "ninedeva", + 0x096f, + "ninegujarati", + 0x0aef, + "ninegurmukhi", + 0x0a6f, + "ninehackarabic", + 0x0669, + "ninehangzhou", + 0x3029, + "nineideographicparen", + 0x3228, + "nineinferior", + 0x2089, + "ninemonospace", + 0xff19, + "nineoldstyle", + 0xf739, + "nineparen", + 0x247c, + "nineperiod", + 0x2490, + "ninepersian", + 0x06f9, + "nineroman", + 0x2178, + "ninesuperior", + 0x2079, + "nineteencircle", + 0x2472, + "nineteenparen", + 0x2486, + "nineteenperiod", + 0x249a, + "ninethai", + 0x0e59, + "nj", + 0x01cc, + "njecyrillic", + 0x045a, + "nkatakana", + 0x30f3, + "nkatakanahalfwidth", + 0xff9d, + "nlegrightlong", + 0x019e, + "nlinebelow", + 0x1e49, + "nmonospace", + 0xff4e, + "nmsquare", + 0x339a, + "nnabengali", + 0x09a3, + "nnadeva", + 0x0923, + "nnagujarati", + 0x0aa3, + "nnagurmukhi", + 0x0a23, + "nnnadeva", + 0x0929, + "nohiragana", + 0x306e, + "nokatakana", + 0x30ce, + "nokatakanahalfwidth", + 0xff89, + "nonbreakingspace", + 0x00a0, + "nonenthai", + 0x0e13, + "nonuthai", + 0x0e19, + "noonarabic", + 0x0646, + "noonfinalarabic", + 0xfee6, + "noonghunnaarabic", + 0x06ba, + "noonghunnafinalarabic", + 0xfb9f, + "nooninitialarabic", + 0xfee7, + "noonjeeminitialarabic", + 0xfcd2, + "noonjeemisolatedarabic", + 0xfc4b, + "noonmedialarabic", + 0xfee8, + "noonmeeminitialarabic", + 0xfcd5, + "noonmeemisolatedarabic", + 0xfc4e, + "noonnoonfinalarabic", + 0xfc8d, + "notcontains", + 0x220c, + "notelement", + 0x2209, + "notelementof", + 0x2209, + "notequal", + 0x2260, + "notgreater", + 0x226f, + "notgreaternorequal", + 0x2271, + "notgreaternorless", + 0x2279, + "notidentical", + 0x2262, + "notless", + 0x226e, + "notlessnorequal", + 0x2270, + "notparallel", + 0x2226, + "notprecedes", + 0x2280, + "notsubset", + 0x2284, + "notsucceeds", + 0x2281, + "notsuperset", + 0x2285, + "nowarmenian", + 0x0576, + "nparen", + 0x24a9, + "nssquare", + 0x33b1, + "nsuperior", + 0x207f, + "ntilde", + 0x00f1, + "nu", + 0x03bd, + "nuhiragana", + 0x306c, + "nukatakana", + 0x30cc, + "nukatakanahalfwidth", + 0xff87, + "nuktabengali", + 0x09bc, + "nuktadeva", + 0x093c, + "nuktagujarati", + 0x0abc, + "nuktagurmukhi", + 0x0a3c, + "numbersign", + 0x0023, + "numbersignmonospace", + 0xff03, + "numbersignsmall", + 0xfe5f, + "numeralsigngreek", + 0x0374, + "numeralsignlowergreek", + 0x0375, + "numero", + 0x2116, + "nun", + 0x05e0, + "nundagesh", + 0xfb40, + "nundageshhebrew", + 0xfb40, + "nunhebrew", + 0x05e0, + "nvsquare", + 0x33b5, + "nwsquare", + 0x33bb, + "nyabengali", + 0x099e, + "nyadeva", + 0x091e, + "nyagujarati", + 0x0a9e, + "nyagurmukhi", + 0x0a1e, + "o", + 0x006f, + "oacute", + 0x00f3, + "oangthai", + 0x0e2d, + "obarred", + 0x0275, + "obarredcyrillic", + 0x04e9, + "obarreddieresiscyrillic", + 0x04eb, + "obengali", + 0x0993, + "obopomofo", + 0x311b, + "obreve", + 0x014f, + "ocandradeva", + 0x0911, + "ocandragujarati", + 0x0a91, + "ocandravowelsigndeva", + 0x0949, + "ocandravowelsigngujarati", + 0x0ac9, + "ocaron", + 0x01d2, + "ocircle", + 0x24de, + "ocircumflex", + 0x00f4, + "ocircumflexacute", + 0x1ed1, + "ocircumflexdotbelow", + 0x1ed9, + "ocircumflexgrave", + 0x1ed3, + "ocircumflexhookabove", + 0x1ed5, + "ocircumflextilde", + 0x1ed7, + "ocyrillic", + 0x043e, + "odblacute", + 0x0151, + "odblgrave", + 0x020d, + "odeva", + 0x0913, + "odieresis", + 0x00f6, + "odieresiscyrillic", + 0x04e7, + "odotbelow", + 0x1ecd, + "oe", + 0x0153, + "oekorean", + 0x315a, + "ogonek", + 0x02db, + "ogonekcmb", + 0x0328, + "ograve", + 0x00f2, + "ogujarati", + 0x0a93, + "oharmenian", + 0x0585, + "ohiragana", + 0x304a, + "ohookabove", + 0x1ecf, + "ohorn", + 0x01a1, + "ohornacute", + 0x1edb, + "ohorndotbelow", + 0x1ee3, + "ohorngrave", + 0x1edd, + "ohornhookabove", + 0x1edf, + "ohorntilde", + 0x1ee1, + "ohungarumlaut", + 0x0151, + "oi", + 0x01a3, + "oinvertedbreve", + 0x020f, + "okatakana", + 0x30aa, + "okatakanahalfwidth", + 0xff75, + "okorean", + 0x3157, + "olehebrew", + 0x05ab, + "omacron", + 0x014d, + "omacronacute", + 0x1e53, + "omacrongrave", + 0x1e51, + "omdeva", + 0x0950, + "omega", + 0x03c9, + "omega1", + 0x03d6, + "omegacyrillic", + 0x0461, + "omegalatinclosed", + 0x0277, + "omegaroundcyrillic", + 0x047b, + "omegatitlocyrillic", + 0x047d, + "omegatonos", + 0x03ce, + "omgujarati", + 0x0ad0, + "omicron", + 0x03bf, + "omicrontonos", + 0x03cc, + "omonospace", + 0xff4f, + "one", + 0x0031, + "onearabic", + 0x0661, + "onebengali", + 0x09e7, + "onecircle", + 0x2460, + "onecircleinversesansserif", + 0x278a, + "onedeva", + 0x0967, + "onedotenleader", + 0x2024, + "oneeighth", + 0x215b, + "onefitted", + 0xf6dc, + "onegujarati", + 0x0ae7, + "onegurmukhi", + 0x0a67, + "onehackarabic", + 0x0661, + "onehalf", + 0x00bd, + "onehangzhou", + 0x3021, + "oneideographicparen", + 0x3220, + "oneinferior", + 0x2081, + "onemonospace", + 0xff11, + "onenumeratorbengali", + 0x09f4, + "oneoldstyle", + 0xf731, + "oneparen", + 0x2474, + "oneperiod", + 0x2488, + "onepersian", + 0x06f1, + "onequarter", + 0x00bc, + "oneroman", + 0x2170, + "onesuperior", + 0x00b9, + "onethai", + 0x0e51, + "onethird", + 0x2153, + "oogonek", + 0x01eb, + "oogonekmacron", + 0x01ed, + "oogurmukhi", + 0x0a13, + "oomatragurmukhi", + 0x0a4b, + "oopen", + 0x0254, + "oparen", + 0x24aa, + "openbullet", + 0x25e6, + "option", + 0x2325, + "ordfeminine", + 0x00aa, + "ordmasculine", + 0x00ba, + "orthogonal", + 0x221f, + "oshortdeva", + 0x0912, + "oshortvowelsigndeva", + 0x094a, + "oslash", + 0x00f8, + "oslashacute", + 0x01ff, + "osmallhiragana", + 0x3049, + "osmallkatakana", + 0x30a9, + "osmallkatakanahalfwidth", + 0xff6b, + "ostrokeacute", + 0x01ff, + "osuperior", + 0xf6f0, + "otcyrillic", + 0x047f, + "otilde", + 0x00f5, + "otildeacute", + 0x1e4d, + "otildedieresis", + 0x1e4f, + "oubopomofo", + 0x3121, + "overline", + 0x203e, + "overlinecenterline", + 0xfe4a, + "overlinecmb", + 0x0305, + "overlinedashed", + 0xfe49, + "overlinedblwavy", + 0xfe4c, + "overlinewavy", + 0xfe4b, + "overscore", + 0x00af, + "ovowelsignbengali", + 0x09cb, + "ovowelsigndeva", + 0x094b, + "ovowelsigngujarati", + 0x0acb, + "p", + 0x0070, + "paampssquare", + 0x3380, + "paasentosquare", + 0x332b, + "pabengali", + 0x09aa, + "pacute", + 0x1e55, + "padeva", + 0x092a, + "pagedown", + 0x21df, + "pageup", + 0x21de, + "pagujarati", + 0x0aaa, + "pagurmukhi", + 0x0a2a, + "pahiragana", + 0x3071, + "paiyannoithai", + 0x0e2f, + "pakatakana", + 0x30d1, + "palatalizationcyrilliccmb", + 0x0484, + "palochkacyrillic", + 0x04c0, + "pansioskorean", + 0x317f, + "paragraph", + 0x00b6, + "parallel", + 0x2225, + "parenleft", + 0x0028, + "parenleftaltonearabic", + 0xfd3e, + "parenleftbt", + 0xf8ed, + "parenleftex", + 0xf8ec, + "parenleftinferior", + 0x208d, + "parenleftmonospace", + 0xff08, + "parenleftsmall", + 0xfe59, + "parenleftsuperior", + 0x207d, + "parenlefttp", + 0xf8eb, + "parenleftvertical", + 0xfe35, + "parenright", + 0x0029, + "parenrightaltonearabic", + 0xfd3f, + "parenrightbt", + 0xf8f8, + "parenrightex", + 0xf8f7, + "parenrightinferior", + 0x208e, + "parenrightmonospace", + 0xff09, + "parenrightsmall", + 0xfe5a, + "parenrightsuperior", + 0x207e, + "parenrighttp", + 0xf8f6, + "parenrightvertical", + 0xfe36, + "partialdiff", + 0x2202, + "paseqhebrew", + 0x05c0, + "pashtahebrew", + 0x0599, + "pasquare", + 0x33a9, + "patah", + 0x05b7, + "patah11", + 0x05b7, + "patah1d", + 0x05b7, + "patah2a", + 0x05b7, + "patahhebrew", + 0x05b7, + "patahnarrowhebrew", + 0x05b7, + "patahquarterhebrew", + 0x05b7, + "patahwidehebrew", + 0x05b7, + "pazerhebrew", + 0x05a1, + "pbopomofo", + 0x3106, + "pcircle", + 0x24df, + "pdotaccent", + 0x1e57, + "pe", + 0x05e4, + "pecyrillic", + 0x043f, + "pedagesh", + 0xfb44, + "pedageshhebrew", + 0xfb44, + "peezisquare", + 0x333b, + "pefinaldageshhebrew", + 0xfb43, + "peharabic", + 0x067e, + "peharmenian", + 0x057a, + "pehebrew", + 0x05e4, + "pehfinalarabic", + 0xfb57, + "pehinitialarabic", + 0xfb58, + "pehiragana", + 0x307a, + "pehmedialarabic", + 0xfb59, + "pekatakana", + 0x30da, + "pemiddlehookcyrillic", + 0x04a7, + "perafehebrew", + 0xfb4e, + "percent", + 0x0025, + "percentarabic", + 0x066a, + "percentmonospace", + 0xff05, + "percentsmall", + 0xfe6a, + "period", + 0x002e, + "periodarmenian", + 0x0589, + "periodcentered", + 0x00b7, + "periodhalfwidth", + 0xff61, + "periodinferior", + 0xf6e7, + "periodmonospace", + 0xff0e, + "periodsmall", + 0xfe52, + "periodsuperior", + 0xf6e8, + "perispomenigreekcmb", + 0x0342, + "perpendicular", + 0x22a5, + "perthousand", + 0x2030, + "peseta", + 0x20a7, + "pfsquare", + 0x338a, + "phabengali", + 0x09ab, + "phadeva", + 0x092b, + "phagujarati", + 0x0aab, + "phagurmukhi", + 0x0a2b, + "phi", + 0x03c6, + "phi1", + 0x03d5, + "phieuphacirclekorean", + 0x327a, + "phieuphaparenkorean", + 0x321a, + "phieuphcirclekorean", + 0x326c, + "phieuphkorean", + 0x314d, + "phieuphparenkorean", + 0x320c, + "philatin", + 0x0278, + "phinthuthai", + 0x0e3a, + "phisymbolgreek", + 0x03d5, + "phook", + 0x01a5, + "phophanthai", + 0x0e1e, + "phophungthai", + 0x0e1c, + "phosamphaothai", + 0x0e20, + "pi", + 0x03c0, + "pieupacirclekorean", + 0x3273, + "pieupaparenkorean", + 0x3213, + "pieupcieuckorean", + 0x3176, + "pieupcirclekorean", + 0x3265, + "pieupkiyeokkorean", + 0x3172, + "pieupkorean", + 0x3142, + "pieupparenkorean", + 0x3205, + "pieupsioskiyeokkorean", + 0x3174, + "pieupsioskorean", + 0x3144, + "pieupsiostikeutkorean", + 0x3175, + "pieupthieuthkorean", + 0x3177, + "pieuptikeutkorean", + 0x3173, + "pihiragana", + 0x3074, + "pikatakana", + 0x30d4, + "pisymbolgreek", + 0x03d6, + "piwrarmenian", + 0x0583, + "plus", + 0x002b, + "plusbelowcmb", + 0x031f, + "pluscircle", + 0x2295, + "plusminus", + 0x00b1, + "plusmod", + 0x02d6, + "plusmonospace", + 0xff0b, + "plussmall", + 0xfe62, + "plussuperior", + 0x207a, + "pmonospace", + 0xff50, + "pmsquare", + 0x33d8, + "pohiragana", + 0x307d, + "pointingindexdownwhite", + 0x261f, + "pointingindexleftwhite", + 0x261c, + "pointingindexrightwhite", + 0x261e, + "pointingindexupwhite", + 0x261d, + "pokatakana", + 0x30dd, + "poplathai", + 0x0e1b, + "postalmark", + 0x3012, + "postalmarkface", + 0x3020, + "pparen", + 0x24ab, + "precedes", + 0x227a, + "prescription", + 0x211e, + "primemod", + 0x02b9, + "primereversed", + 0x2035, + "product", + 0x220f, + "projective", + 0x2305, + "prolongedkana", + 0x30fc, + "propellor", + 0x2318, + "propersubset", + 0x2282, + "propersuperset", + 0x2283, + "proportion", + 0x2237, + "proportional", + 0x221d, + "psi", + 0x03c8, + "psicyrillic", + 0x0471, + "psilipneumatacyrilliccmb", + 0x0486, + "pssquare", + 0x33b0, + "puhiragana", + 0x3077, + "pukatakana", + 0x30d7, + "pvsquare", + 0x33b4, + "pwsquare", + 0x33ba, + "q", + 0x0071, + "qadeva", + 0x0958, + "qadmahebrew", + 0x05a8, + "qafarabic", + 0x0642, + "qaffinalarabic", + 0xfed6, + "qafinitialarabic", + 0xfed7, + "qafmedialarabic", + 0xfed8, + "qamats", + 0x05b8, + "qamats10", + 0x05b8, + "qamats1a", + 0x05b8, + "qamats1c", + 0x05b8, + "qamats27", + 0x05b8, + "qamats29", + 0x05b8, + "qamats33", + 0x05b8, + "qamatsde", + 0x05b8, + "qamatshebrew", + 0x05b8, + "qamatsnarrowhebrew", + 0x05b8, + "qamatsqatanhebrew", + 0x05b8, + "qamatsqatannarrowhebrew", + 0x05b8, + "qamatsqatanquarterhebrew", + 0x05b8, + "qamatsqatanwidehebrew", + 0x05b8, + "qamatsquarterhebrew", + 0x05b8, + "qamatswidehebrew", + 0x05b8, + "qarneyparahebrew", + 0x059f, + "qbopomofo", + 0x3111, + "qcircle", + 0x24e0, + "qhook", + 0x02a0, + "qmonospace", + 0xff51, + "qof", + 0x05e7, + "qofdagesh", + 0xfb47, + "qofdageshhebrew", + 0xfb47, + "qofhebrew", + 0x05e7, + "qparen", + 0x24ac, + "quarternote", + 0x2669, + "qubuts", + 0x05bb, + "qubuts18", + 0x05bb, + "qubuts25", + 0x05bb, + "qubuts31", + 0x05bb, + "qubutshebrew", + 0x05bb, + "qubutsnarrowhebrew", + 0x05bb, + "qubutsquarterhebrew", + 0x05bb, + "qubutswidehebrew", + 0x05bb, + "question", + 0x003f, + "questionarabic", + 0x061f, + "questionarmenian", + 0x055e, + "questiondown", + 0x00bf, + "questiondownsmall", + 0xf7bf, + "questiongreek", + 0x037e, + "questionmonospace", + 0xff1f, + "questionsmall", + 0xf73f, + "quotedbl", + 0x0022, + "quotedblbase", + 0x201e, + "quotedblleft", + 0x201c, + "quotedblmonospace", + 0xff02, + "quotedblprime", + 0x301e, + "quotedblprimereversed", + 0x301d, + "quotedblright", + 0x201d, + "quoteleft", + 0x2018, + "quoteleftreversed", + 0x201b, + "quotereversed", + 0x201b, + "quoteright", + 0x2019, + "quoterightn", + 0x0149, + "quotesinglbase", + 0x201a, + "quotesingle", + 0x0027, + "quotesinglemonospace", + 0xff07, + "r", + 0x0072, + "raarmenian", + 0x057c, + "rabengali", + 0x09b0, + "racute", + 0x0155, + "radeva", + 0x0930, + "radical", + 0x221a, + "radicalex", + 0xf8e5, + "radoverssquare", + 0x33ae, + "radoverssquaredsquare", + 0x33af, + "radsquare", + 0x33ad, + "rafe", + 0x05bf, + "rafehebrew", + 0x05bf, + "ragujarati", + 0x0ab0, + "ragurmukhi", + 0x0a30, + "rahiragana", + 0x3089, + "rakatakana", + 0x30e9, + "rakatakanahalfwidth", + 0xff97, + "ralowerdiagonalbengali", + 0x09f1, + "ramiddlediagonalbengali", + 0x09f0, + "ramshorn", + 0x0264, + "ratio", + 0x2236, + "rbopomofo", + 0x3116, + "rcaron", + 0x0159, + "rcedilla", + 0x0157, + "rcircle", + 0x24e1, + "rcommaaccent", + 0x0157, + "rdblgrave", + 0x0211, + "rdotaccent", + 0x1e59, + "rdotbelow", + 0x1e5b, + "rdotbelowmacron", + 0x1e5d, + "referencemark", + 0x203b, + "reflexsubset", + 0x2286, + "reflexsuperset", + 0x2287, + "registered", + 0x00ae, + "registersans", + 0xf8e8, + "registerserif", + 0xf6da, + "reharabic", + 0x0631, + "reharmenian", + 0x0580, + "rehfinalarabic", + 0xfeae, + "rehiragana", + 0x308c, + "rekatakana", + 0x30ec, + "rekatakanahalfwidth", + 0xff9a, + "resh", + 0x05e8, + "reshdageshhebrew", + 0xfb48, + "reshhebrew", + 0x05e8, + "reversedtilde", + 0x223d, + "reviahebrew", + 0x0597, + "reviamugrashhebrew", + 0x0597, + "revlogicalnot", + 0x2310, + "rfishhook", + 0x027e, + "rfishhookreversed", + 0x027f, + "rhabengali", + 0x09dd, + "rhadeva", + 0x095d, + "rho", + 0x03c1, + "rhook", + 0x027d, + "rhookturned", + 0x027b, + "rhookturnedsuperior", + 0x02b5, + "rhosymbolgreek", + 0x03f1, + "rhotichookmod", + 0x02de, + "rieulacirclekorean", + 0x3271, + "rieulaparenkorean", + 0x3211, + "rieulcirclekorean", + 0x3263, + "rieulhieuhkorean", + 0x3140, + "rieulkiyeokkorean", + 0x313a, + "rieulkiyeoksioskorean", + 0x3169, + "rieulkorean", + 0x3139, + "rieulmieumkorean", + 0x313b, + "rieulpansioskorean", + 0x316c, + "rieulparenkorean", + 0x3203, + "rieulphieuphkorean", + 0x313f, + "rieulpieupkorean", + 0x313c, + "rieulpieupsioskorean", + 0x316b, + "rieulsioskorean", + 0x313d, + "rieulthieuthkorean", + 0x313e, + "rieultikeutkorean", + 0x316a, + "rieulyeorinhieuhkorean", + 0x316d, + "rightangle", + 0x221f, + "righttackbelowcmb", + 0x0319, + "righttriangle", + 0x22bf, + "rihiragana", + 0x308a, + "rikatakana", + 0x30ea, + "rikatakanahalfwidth", + 0xff98, + "ring", + 0x02da, + "ringbelowcmb", + 0x0325, + "ringcmb", + 0x030a, + "ringhalfleft", + 0x02bf, + "ringhalfleftarmenian", + 0x0559, + "ringhalfleftbelowcmb", + 0x031c, + "ringhalfleftcentered", + 0x02d3, + "ringhalfright", + 0x02be, + "ringhalfrightbelowcmb", + 0x0339, + "ringhalfrightcentered", + 0x02d2, + "rinvertedbreve", + 0x0213, + "rittorusquare", + 0x3351, + "rlinebelow", + 0x1e5f, + "rlongleg", + 0x027c, + "rlonglegturned", + 0x027a, + "rmonospace", + 0xff52, + "rohiragana", + 0x308d, + "rokatakana", + 0x30ed, + "rokatakanahalfwidth", + 0xff9b, + "roruathai", + 0x0e23, + "rparen", + 0x24ad, + "rrabengali", + 0x09dc, + "rradeva", + 0x0931, + "rragurmukhi", + 0x0a5c, + "rreharabic", + 0x0691, + "rrehfinalarabic", + 0xfb8d, + "rrvocalicbengali", + 0x09e0, + "rrvocalicdeva", + 0x0960, + "rrvocalicgujarati", + 0x0ae0, + "rrvocalicvowelsignbengali", + 0x09c4, + "rrvocalicvowelsigndeva", + 0x0944, + "rrvocalicvowelsigngujarati", + 0x0ac4, + "rsuperior", + 0xf6f1, + "rtblock", + 0x2590, + "rturned", + 0x0279, + "rturnedsuperior", + 0x02b4, + "ruhiragana", + 0x308b, + "rukatakana", + 0x30eb, + "rukatakanahalfwidth", + 0xff99, + "rupeemarkbengali", + 0x09f2, + "rupeesignbengali", + 0x09f3, + "rupiah", + 0xf6dd, + "ruthai", + 0x0e24, + "rvocalicbengali", + 0x098b, + "rvocalicdeva", + 0x090b, + "rvocalicgujarati", + 0x0a8b, + "rvocalicvowelsignbengali", + 0x09c3, + "rvocalicvowelsigndeva", + 0x0943, + "rvocalicvowelsigngujarati", + 0x0ac3, + "s", + 0x0073, + "sabengali", + 0x09b8, + "sacute", + 0x015b, + "sacutedotaccent", + 0x1e65, + "sadarabic", + 0x0635, + "sadeva", + 0x0938, + "sadfinalarabic", + 0xfeba, + "sadinitialarabic", + 0xfebb, + "sadmedialarabic", + 0xfebc, + "sagujarati", + 0x0ab8, + "sagurmukhi", + 0x0a38, + "sahiragana", + 0x3055, + "sakatakana", + 0x30b5, + "sakatakanahalfwidth", + 0xff7b, + "sallallahoualayhewasallamarabic", + 0xfdfa, + "samekh", + 0x05e1, + "samekhdagesh", + 0xfb41, + "samekhdageshhebrew", + 0xfb41, + "samekhhebrew", + 0x05e1, + "saraaathai", + 0x0e32, + "saraaethai", + 0x0e41, + "saraaimaimalaithai", + 0x0e44, + "saraaimaimuanthai", + 0x0e43, + "saraamthai", + 0x0e33, + "saraathai", + 0x0e30, + "saraethai", + 0x0e40, + "saraiileftthai", + 0xf886, + "saraiithai", + 0x0e35, + "saraileftthai", + 0xf885, + "saraithai", + 0x0e34, + "saraothai", + 0x0e42, + "saraueeleftthai", + 0xf888, + "saraueethai", + 0x0e37, + "saraueleftthai", + 0xf887, + "sarauethai", + 0x0e36, + "sarauthai", + 0x0e38, + "sarauuthai", + 0x0e39, + "sbopomofo", + 0x3119, + "scaron", + 0x0161, + "scarondotaccent", + 0x1e67, + "scedilla", + 0x015f, + "schwa", + 0x0259, + "schwacyrillic", + 0x04d9, + "schwadieresiscyrillic", + 0x04db, + "schwahook", + 0x025a, + "scircle", + 0x24e2, + "scircumflex", + 0x015d, + "scommaaccent", + 0x0219, + "sdotaccent", + 0x1e61, + "sdotbelow", + 0x1e63, + "sdotbelowdotaccent", + 0x1e69, + "seagullbelowcmb", + 0x033c, + "second", + 0x2033, + "secondtonechinese", + 0x02ca, + "section", + 0x00a7, + "seenarabic", + 0x0633, + "seenfinalarabic", + 0xfeb2, + "seeninitialarabic", + 0xfeb3, + "seenmedialarabic", + 0xfeb4, + "segol", + 0x05b6, + "segol13", + 0x05b6, + "segol1f", + 0x05b6, + "segol2c", + 0x05b6, + "segolhebrew", + 0x05b6, + "segolnarrowhebrew", + 0x05b6, + "segolquarterhebrew", + 0x05b6, + "segoltahebrew", + 0x0592, + "segolwidehebrew", + 0x05b6, + "seharmenian", + 0x057d, + "sehiragana", + 0x305b, + "sekatakana", + 0x30bb, + "sekatakanahalfwidth", + 0xff7e, + "semicolon", + 0x003b, + "semicolonarabic", + 0x061b, + "semicolonmonospace", + 0xff1b, + "semicolonsmall", + 0xfe54, + "semivoicedmarkkana", + 0x309c, + "semivoicedmarkkanahalfwidth", + 0xff9f, + "sentisquare", + 0x3322, + "sentosquare", + 0x3323, + "seven", + 0x0037, + "sevenarabic", + 0x0667, + "sevenbengali", + 0x09ed, + "sevencircle", + 0x2466, + "sevencircleinversesansserif", + 0x2790, + "sevendeva", + 0x096d, + "seveneighths", + 0x215e, + "sevengujarati", + 0x0aed, + "sevengurmukhi", + 0x0a6d, + "sevenhackarabic", + 0x0667, + "sevenhangzhou", + 0x3027, + "sevenideographicparen", + 0x3226, + "seveninferior", + 0x2087, + "sevenmonospace", + 0xff17, + "sevenoldstyle", + 0xf737, + "sevenparen", + 0x247a, + "sevenperiod", + 0x248e, + "sevenpersian", + 0x06f7, + "sevenroman", + 0x2176, + "sevensuperior", + 0x2077, + "seventeencircle", + 0x2470, + "seventeenparen", + 0x2484, + "seventeenperiod", + 0x2498, + "seventhai", + 0x0e57, + "sfthyphen", + 0x00ad, + "shaarmenian", + 0x0577, + "shabengali", + 0x09b6, + "shacyrillic", + 0x0448, + "shaddaarabic", + 0x0651, + "shaddadammaarabic", + 0xfc61, + "shaddadammatanarabic", + 0xfc5e, + "shaddafathaarabic", + 0xfc60, + "shaddakasraarabic", + 0xfc62, + "shaddakasratanarabic", + 0xfc5f, + "shade", + 0x2592, + "shadedark", + 0x2593, + "shadelight", + 0x2591, + "shademedium", + 0x2592, + "shadeva", + 0x0936, + "shagujarati", + 0x0ab6, + "shagurmukhi", + 0x0a36, + "shalshelethebrew", + 0x0593, + "shbopomofo", + 0x3115, + "shchacyrillic", + 0x0449, + "sheenarabic", + 0x0634, + "sheenfinalarabic", + 0xfeb6, + "sheeninitialarabic", + 0xfeb7, + "sheenmedialarabic", + 0xfeb8, + "sheicoptic", + 0x03e3, + "sheqel", + 0x20aa, + "sheqelhebrew", + 0x20aa, + "sheva", + 0x05b0, + "sheva115", + 0x05b0, + "sheva15", + 0x05b0, + "sheva22", + 0x05b0, + "sheva2e", + 0x05b0, + "shevahebrew", + 0x05b0, + "shevanarrowhebrew", + 0x05b0, + "shevaquarterhebrew", + 0x05b0, + "shevawidehebrew", + 0x05b0, + "shhacyrillic", + 0x04bb, + "shimacoptic", + 0x03ed, + "shin", + 0x05e9, + "shindagesh", + 0xfb49, + "shindageshhebrew", + 0xfb49, + "shindageshshindot", + 0xfb2c, + "shindageshshindothebrew", + 0xfb2c, + "shindageshsindot", + 0xfb2d, + "shindageshsindothebrew", + 0xfb2d, + "shindothebrew", + 0x05c1, + "shinhebrew", + 0x05e9, + "shinshindot", + 0xfb2a, + "shinshindothebrew", + 0xfb2a, + "shinsindot", + 0xfb2b, + "shinsindothebrew", + 0xfb2b, + "shook", + 0x0282, + "sigma", + 0x03c3, + "sigma1", + 0x03c2, + "sigmafinal", + 0x03c2, + "sigmalunatesymbolgreek", + 0x03f2, + "sihiragana", + 0x3057, + "sikatakana", + 0x30b7, + "sikatakanahalfwidth", + 0xff7c, + "siluqhebrew", + 0x05bd, + "siluqlefthebrew", + 0x05bd, + "similar", + 0x223c, + "sindothebrew", + 0x05c2, + "siosacirclekorean", + 0x3274, + "siosaparenkorean", + 0x3214, + "sioscieuckorean", + 0x317e, + "sioscirclekorean", + 0x3266, + "sioskiyeokkorean", + 0x317a, + "sioskorean", + 0x3145, + "siosnieunkorean", + 0x317b, + "siosparenkorean", + 0x3206, + "siospieupkorean", + 0x317d, + "siostikeutkorean", + 0x317c, + "six", + 0x0036, + "sixarabic", + 0x0666, + "sixbengali", + 0x09ec, + "sixcircle", + 0x2465, + "sixcircleinversesansserif", + 0x278f, + "sixdeva", + 0x096c, + "sixgujarati", + 0x0aec, + "sixgurmukhi", + 0x0a6c, + "sixhackarabic", + 0x0666, + "sixhangzhou", + 0x3026, + "sixideographicparen", + 0x3225, + "sixinferior", + 0x2086, + "sixmonospace", + 0xff16, + "sixoldstyle", + 0xf736, + "sixparen", + 0x2479, + "sixperiod", + 0x248d, + "sixpersian", + 0x06f6, + "sixroman", + 0x2175, + "sixsuperior", + 0x2076, + "sixteencircle", + 0x246f, + "sixteencurrencydenominatorbengali", + 0x09f9, + "sixteenparen", + 0x2483, + "sixteenperiod", + 0x2497, + "sixthai", + 0x0e56, + "slash", + 0x002f, + "slashmonospace", + 0xff0f, + "slong", + 0x017f, + "slongdotaccent", + 0x1e9b, + "smileface", + 0x263a, + "smonospace", + 0xff53, + "sofpasuqhebrew", + 0x05c3, + "softhyphen", + 0x00ad, + "softsigncyrillic", + 0x044c, + "sohiragana", + 0x305d, + "sokatakana", + 0x30bd, + "sokatakanahalfwidth", + 0xff7f, + "soliduslongoverlaycmb", + 0x0338, + "solidusshortoverlaycmb", + 0x0337, + "sorusithai", + 0x0e29, + "sosalathai", + 0x0e28, + "sosothai", + 0x0e0b, + "sosuathai", + 0x0e2a, + "space", + 0x0020, + "spacehackarabic", + 0x0020, + "spade", + 0x2660, + "spadesuitblack", + 0x2660, + "spadesuitwhite", + 0x2664, + "sparen", + 0x24ae, + "squarebelowcmb", + 0x033b, + "squarecc", + 0x33c4, + "squarecm", + 0x339d, + "squarediagonalcrosshatchfill", + 0x25a9, + "squarehorizontalfill", + 0x25a4, + "squarekg", + 0x338f, + "squarekm", + 0x339e, + "squarekmcapital", + 0x33ce, + "squareln", + 0x33d1, + "squarelog", + 0x33d2, + "squaremg", + 0x338e, + "squaremil", + 0x33d5, + "squaremm", + 0x339c, + "squaremsquared", + 0x33a1, + "squareorthogonalcrosshatchfill", + 0x25a6, + "squareupperlefttolowerrightfill", + 0x25a7, + "squareupperrighttolowerleftfill", + 0x25a8, + "squareverticalfill", + 0x25a5, + "squarewhitewithsmallblack", + 0x25a3, + "srsquare", + 0x33db, + "ssabengali", + 0x09b7, + "ssadeva", + 0x0937, + "ssagujarati", + 0x0ab7, + "ssangcieuckorean", + 0x3149, + "ssanghieuhkorean", + 0x3185, + "ssangieungkorean", + 0x3180, + "ssangkiyeokkorean", + 0x3132, + "ssangnieunkorean", + 0x3165, + "ssangpieupkorean", + 0x3143, + "ssangsioskorean", + 0x3146, + "ssangtikeutkorean", + 0x3138, + "ssuperior", + 0xf6f2, + "sterling", + 0x00a3, + "sterlingmonospace", + 0xffe1, + "strokelongoverlaycmb", + 0x0336, + "strokeshortoverlaycmb", + 0x0335, + "subset", + 0x2282, + "subsetnotequal", + 0x228a, + "subsetorequal", + 0x2286, + "succeeds", + 0x227b, + "suchthat", + 0x220b, + "suhiragana", + 0x3059, + "sukatakana", + 0x30b9, + "sukatakanahalfwidth", + 0xff7d, + "sukunarabic", + 0x0652, + "summation", + 0x2211, + "sun", + 0x263c, + "superset", + 0x2283, + "supersetnotequal", + 0x228b, + "supersetorequal", + 0x2287, + "svsquare", + 0x33dc, + "syouwaerasquare", + 0x337c, + "t", + 0x0074, + "tabengali", + 0x09a4, + "tackdown", + 0x22a4, + "tackleft", + 0x22a3, + "tadeva", + 0x0924, + "tagujarati", + 0x0aa4, + "tagurmukhi", + 0x0a24, + "taharabic", + 0x0637, + "tahfinalarabic", + 0xfec2, + "tahinitialarabic", + 0xfec3, + "tahiragana", + 0x305f, + "tahmedialarabic", + 0xfec4, + "taisyouerasquare", + 0x337d, + "takatakana", + 0x30bf, + "takatakanahalfwidth", + 0xff80, + "tatweelarabic", + 0x0640, + "tau", + 0x03c4, + "tav", + 0x05ea, + "tavdages", + 0xfb4a, + "tavdagesh", + 0xfb4a, + "tavdageshhebrew", + 0xfb4a, + "tavhebrew", + 0x05ea, + "tbar", + 0x0167, + "tbopomofo", + 0x310a, + "tcaron", + 0x0165, + "tccurl", + 0x02a8, + "tcedilla", + 0x0163, + "tcheharabic", + 0x0686, + "tchehfinalarabic", + 0xfb7b, + "tchehinitialarabic", + 0xfb7c, + "tchehmedialarabic", + 0xfb7d, + "tcircle", + 0x24e3, + "tcircumflexbelow", + 0x1e71, + "tcommaaccent", + 0x0163, + "tdieresis", + 0x1e97, + "tdotaccent", + 0x1e6b, + "tdotbelow", + 0x1e6d, + "tecyrillic", + 0x0442, + "tedescendercyrillic", + 0x04ad, + "teharabic", + 0x062a, + "tehfinalarabic", + 0xfe96, + "tehhahinitialarabic", + 0xfca2, + "tehhahisolatedarabic", + 0xfc0c, + "tehinitialarabic", + 0xfe97, + "tehiragana", + 0x3066, + "tehjeeminitialarabic", + 0xfca1, + "tehjeemisolatedarabic", + 0xfc0b, + "tehmarbutaarabic", + 0x0629, + "tehmarbutafinalarabic", + 0xfe94, + "tehmedialarabic", + 0xfe98, + "tehmeeminitialarabic", + 0xfca4, + "tehmeemisolatedarabic", + 0xfc0e, + "tehnoonfinalarabic", + 0xfc73, + "tekatakana", + 0x30c6, + "tekatakanahalfwidth", + 0xff83, + "telephone", + 0x2121, + "telephoneblack", + 0x260e, + "telishagedolahebrew", + 0x05a0, + "telishaqetanahebrew", + 0x05a9, + "tencircle", + 0x2469, + "tenideographicparen", + 0x3229, + "tenparen", + 0x247d, + "tenperiod", + 0x2491, + "tenroman", + 0x2179, + "tesh", + 0x02a7, + "tet", + 0x05d8, + "tetdagesh", + 0xfb38, + "tetdageshhebrew", + 0xfb38, + "tethebrew", + 0x05d8, + "tetsecyrillic", + 0x04b5, + "tevirhebrew", + 0x059b, + "tevirlefthebrew", + 0x059b, + "thabengali", + 0x09a5, + "thadeva", + 0x0925, + "thagujarati", + 0x0aa5, + "thagurmukhi", + 0x0a25, + "thalarabic", + 0x0630, + "thalfinalarabic", + 0xfeac, + "thanthakhatlowleftthai", + 0xf898, + "thanthakhatlowrightthai", + 0xf897, + "thanthakhatthai", + 0x0e4c, + "thanthakhatupperleftthai", + 0xf896, + "theharabic", + 0x062b, + "thehfinalarabic", + 0xfe9a, + "thehinitialarabic", + 0xfe9b, + "thehmedialarabic", + 0xfe9c, + "thereexists", + 0x2203, + "therefore", + 0x2234, + "theta", + 0x03b8, + "theta1", + 0x03d1, + "thetasymbolgreek", + 0x03d1, + "thieuthacirclekorean", + 0x3279, + "thieuthaparenkorean", + 0x3219, + "thieuthcirclekorean", + 0x326b, + "thieuthkorean", + 0x314c, + "thieuthparenkorean", + 0x320b, + "thirteencircle", + 0x246c, + "thirteenparen", + 0x2480, + "thirteenperiod", + 0x2494, + "thonangmonthothai", + 0x0e11, + "thook", + 0x01ad, + "thophuthaothai", + 0x0e12, + "thorn", + 0x00fe, + "thothahanthai", + 0x0e17, + "thothanthai", + 0x0e10, + "thothongthai", + 0x0e18, + "thothungthai", + 0x0e16, + "thousandcyrillic", + 0x0482, + "thousandsseparatorarabic", + 0x066c, + "thousandsseparatorpersian", + 0x066c, + "three", + 0x0033, + "threearabic", + 0x0663, + "threebengali", + 0x09e9, + "threecircle", + 0x2462, + "threecircleinversesansserif", + 0x278c, + "threedeva", + 0x0969, + "threeeighths", + 0x215c, + "threegujarati", + 0x0ae9, + "threegurmukhi", + 0x0a69, + "threehackarabic", + 0x0663, + "threehangzhou", + 0x3023, + "threeideographicparen", + 0x3222, + "threeinferior", + 0x2083, + "threemonospace", + 0xff13, + "threenumeratorbengali", + 0x09f6, + "threeoldstyle", + 0xf733, + "threeparen", + 0x2476, + "threeperiod", + 0x248a, + "threepersian", + 0x06f3, + "threequarters", + 0x00be, + "threequartersemdash", + 0xf6de, + "threeroman", + 0x2172, + "threesuperior", + 0x00b3, + "threethai", + 0x0e53, + "thzsquare", + 0x3394, + "tihiragana", + 0x3061, + "tikatakana", + 0x30c1, + "tikatakanahalfwidth", + 0xff81, + "tikeutacirclekorean", + 0x3270, + "tikeutaparenkorean", + 0x3210, + "tikeutcirclekorean", + 0x3262, + "tikeutkorean", + 0x3137, + "tikeutparenkorean", + 0x3202, + "tilde", + 0x02dc, + "tildebelowcmb", + 0x0330, + "tildecmb", + 0x0303, + "tildecomb", + 0x0303, + "tildedoublecmb", + 0x0360, + "tildeoperator", + 0x223c, + "tildeoverlaycmb", + 0x0334, + "tildeverticalcmb", + 0x033e, + "timescircle", + 0x2297, + "tipehahebrew", + 0x0596, + "tipehalefthebrew", + 0x0596, + "tippigurmukhi", + 0x0a70, + "titlocyrilliccmb", + 0x0483, + "tiwnarmenian", + 0x057f, + "tlinebelow", + 0x1e6f, + "tmonospace", + 0xff54, + "toarmenian", + 0x0569, + "tohiragana", + 0x3068, + "tokatakana", + 0x30c8, + "tokatakanahalfwidth", + 0xff84, + "tonebarextrahighmod", + 0x02e5, + "tonebarextralowmod", + 0x02e9, + "tonebarhighmod", + 0x02e6, + "tonebarlowmod", + 0x02e8, + "tonebarmidmod", + 0x02e7, + "tonefive", + 0x01bd, + "tonesix", + 0x0185, + "tonetwo", + 0x01a8, + "tonos", + 0x0384, + "tonsquare", + 0x3327, + "topatakthai", + 0x0e0f, + "tortoiseshellbracketleft", + 0x3014, + "tortoiseshellbracketleftsmall", + 0xfe5d, + "tortoiseshellbracketleftvertical", + 0xfe39, + "tortoiseshellbracketright", + 0x3015, + "tortoiseshellbracketrightsmall", + 0xfe5e, + "tortoiseshellbracketrightvertical", + 0xfe3a, + "totaothai", + 0x0e15, + "tpalatalhook", + 0x01ab, + "tparen", + 0x24af, + "trademark", + 0x2122, + "trademarksans", + 0xf8ea, + "trademarkserif", + 0xf6db, + "tretroflexhook", + 0x0288, + "triagdn", + 0x25bc, + "triaglf", + 0x25c4, + "triagrt", + 0x25ba, + "triagup", + 0x25b2, + "ts", + 0x02a6, + "tsadi", + 0x05e6, + "tsadidagesh", + 0xfb46, + "tsadidageshhebrew", + 0xfb46, + "tsadihebrew", + 0x05e6, + "tsecyrillic", + 0x0446, + "tsere", + 0x05b5, + "tsere12", + 0x05b5, + "tsere1e", + 0x05b5, + "tsere2b", + 0x05b5, + "tserehebrew", + 0x05b5, + "tserenarrowhebrew", + 0x05b5, + "tserequarterhebrew", + 0x05b5, + "tserewidehebrew", + 0x05b5, + "tshecyrillic", + 0x045b, + "tsuperior", + 0xf6f3, + "ttabengali", + 0x099f, + "ttadeva", + 0x091f, + "ttagujarati", + 0x0a9f, + "ttagurmukhi", + 0x0a1f, + "tteharabic", + 0x0679, + "ttehfinalarabic", + 0xfb67, + "ttehinitialarabic", + 0xfb68, + "ttehmedialarabic", + 0xfb69, + "tthabengali", + 0x09a0, + "tthadeva", + 0x0920, + "tthagujarati", + 0x0aa0, + "tthagurmukhi", + 0x0a20, + "tturned", + 0x0287, + "tuhiragana", + 0x3064, + "tukatakana", + 0x30c4, + "tukatakanahalfwidth", + 0xff82, + "tusmallhiragana", + 0x3063, + "tusmallkatakana", + 0x30c3, + "tusmallkatakanahalfwidth", + 0xff6f, + "twelvecircle", + 0x246b, + "twelveparen", + 0x247f, + "twelveperiod", + 0x2493, + "twelveroman", + 0x217b, + "twentycircle", + 0x2473, + "twentyhangzhou", + 0x5344, + "twentyparen", + 0x2487, + "twentyperiod", + 0x249b, + "two", + 0x0032, + "twoarabic", + 0x0662, + "twobengali", + 0x09e8, + "twocircle", + 0x2461, + "twocircleinversesansserif", + 0x278b, + "twodeva", + 0x0968, + "twodotenleader", + 0x2025, + "twodotleader", + 0x2025, + "twodotleadervertical", + 0xfe30, + "twogujarati", + 0x0ae8, + "twogurmukhi", + 0x0a68, + "twohackarabic", + 0x0662, + "twohangzhou", + 0x3022, + "twoideographicparen", + 0x3221, + "twoinferior", + 0x2082, + "twomonospace", + 0xff12, + "twonumeratorbengali", + 0x09f5, + "twooldstyle", + 0xf732, + "twoparen", + 0x2475, + "twoperiod", + 0x2489, + "twopersian", + 0x06f2, + "tworoman", + 0x2171, + "twostroke", + 0x01bb, + "twosuperior", + 0x00b2, + "twothai", + 0x0e52, + "twothirds", + 0x2154, + "u", + 0x0075, + "uacute", + 0x00fa, + "ubar", + 0x0289, + "ubengali", + 0x0989, + "ubopomofo", + 0x3128, + "ubreve", + 0x016d, + "ucaron", + 0x01d4, + "ucircle", + 0x24e4, + "ucircumflex", + 0x00fb, + "ucircumflexbelow", + 0x1e77, + "ucyrillic", + 0x0443, + "udattadeva", + 0x0951, + "udblacute", + 0x0171, + "udblgrave", + 0x0215, + "udeva", + 0x0909, + "udieresis", + 0x00fc, + "udieresisacute", + 0x01d8, + "udieresisbelow", + 0x1e73, + "udieresiscaron", + 0x01da, + "udieresiscyrillic", + 0x04f1, + "udieresisgrave", + 0x01dc, + "udieresismacron", + 0x01d6, + "udotbelow", + 0x1ee5, + "ugrave", + 0x00f9, + "ugujarati", + 0x0a89, + "ugurmukhi", + 0x0a09, + "uhiragana", + 0x3046, + "uhookabove", + 0x1ee7, + "uhorn", + 0x01b0, + "uhornacute", + 0x1ee9, + "uhorndotbelow", + 0x1ef1, + "uhorngrave", + 0x1eeb, + "uhornhookabove", + 0x1eed, + "uhorntilde", + 0x1eef, + "uhungarumlaut", + 0x0171, + "uhungarumlautcyrillic", + 0x04f3, + "uinvertedbreve", + 0x0217, + "ukatakana", + 0x30a6, + "ukatakanahalfwidth", + 0xff73, + "ukcyrillic", + 0x0479, + "ukorean", + 0x315c, + "umacron", + 0x016b, + "umacroncyrillic", + 0x04ef, + "umacrondieresis", + 0x1e7b, + "umatragurmukhi", + 0x0a41, + "umonospace", + 0xff55, + "underscore", + 0x005f, + "underscoredbl", + 0x2017, + "underscoremonospace", + 0xff3f, + "underscorevertical", + 0xfe33, + "underscorewavy", + 0xfe4f, + "union", + 0x222a, + "universal", + 0x2200, + "uogonek", + 0x0173, + "uparen", + 0x24b0, + "upblock", + 0x2580, + "upperdothebrew", + 0x05c4, + "upsilon", + 0x03c5, + "upsilondieresis", + 0x03cb, + "upsilondieresistonos", + 0x03b0, + "upsilonlatin", + 0x028a, + "upsilontonos", + 0x03cd, + "uptackbelowcmb", + 0x031d, + "uptackmod", + 0x02d4, + "uragurmukhi", + 0x0a73, + "uring", + 0x016f, + "ushortcyrillic", + 0x045e, + "usmallhiragana", + 0x3045, + "usmallkatakana", + 0x30a5, + "usmallkatakanahalfwidth", + 0xff69, + "ustraightcyrillic", + 0x04af, + "ustraightstrokecyrillic", + 0x04b1, + "utilde", + 0x0169, + "utildeacute", + 0x1e79, + "utildebelow", + 0x1e75, + "uubengali", + 0x098a, + "uudeva", + 0x090a, + "uugujarati", + 0x0a8a, + "uugurmukhi", + 0x0a0a, + "uumatragurmukhi", + 0x0a42, + "uuvowelsignbengali", + 0x09c2, + "uuvowelsigndeva", + 0x0942, + "uuvowelsigngujarati", + 0x0ac2, + "uvowelsignbengali", + 0x09c1, + "uvowelsigndeva", + 0x0941, + "uvowelsigngujarati", + 0x0ac1, + "v", + 0x0076, + "vadeva", + 0x0935, + "vagujarati", + 0x0ab5, + "vagurmukhi", + 0x0a35, + "vakatakana", + 0x30f7, + "vav", + 0x05d5, + "vavdagesh", + 0xfb35, + "vavdagesh65", + 0xfb35, + "vavdageshhebrew", + 0xfb35, + "vavhebrew", + 0x05d5, + "vavholam", + 0xfb4b, + "vavholamhebrew", + 0xfb4b, + "vavvavhebrew", + 0x05f0, + "vavyodhebrew", + 0x05f1, + "vcircle", + 0x24e5, + "vdotbelow", + 0x1e7f, + "vecyrillic", + 0x0432, + "veharabic", + 0x06a4, + "vehfinalarabic", + 0xfb6b, + "vehinitialarabic", + 0xfb6c, + "vehmedialarabic", + 0xfb6d, + "vekatakana", + 0x30f9, + "venus", + 0x2640, + "verticalbar", + 0x007c, + "verticallineabovecmb", + 0x030d, + "verticallinebelowcmb", + 0x0329, + "verticallinelowmod", + 0x02cc, + "verticallinemod", + 0x02c8, + "vewarmenian", + 0x057e, + "vhook", + 0x028b, + "vikatakana", + 0x30f8, + "viramabengali", + 0x09cd, + "viramadeva", + 0x094d, + "viramagujarati", + 0x0acd, + "visargabengali", + 0x0983, + "visargadeva", + 0x0903, + "visargagujarati", + 0x0a83, + "vmonospace", + 0xff56, + "voarmenian", + 0x0578, + "voicediterationhiragana", + 0x309e, + "voicediterationkatakana", + 0x30fe, + "voicedmarkkana", + 0x309b, + "voicedmarkkanahalfwidth", + 0xff9e, + "vokatakana", + 0x30fa, + "vparen", + 0x24b1, + "vtilde", + 0x1e7d, + "vturned", + 0x028c, + "vuhiragana", + 0x3094, + "vukatakana", + 0x30f4, + "w", + 0x0077, + "wacute", + 0x1e83, + "waekorean", + 0x3159, + "wahiragana", + 0x308f, + "wakatakana", + 0x30ef, + "wakatakanahalfwidth", + 0xff9c, + "wakorean", + 0x3158, + "wasmallhiragana", + 0x308e, + "wasmallkatakana", + 0x30ee, + "wattosquare", + 0x3357, + "wavedash", + 0x301c, + "wavyunderscorevertical", + 0xfe34, + "wawarabic", + 0x0648, + "wawfinalarabic", + 0xfeee, + "wawhamzaabovearabic", + 0x0624, + "wawhamzaabovefinalarabic", + 0xfe86, + "wbsquare", + 0x33dd, + "wcircle", + 0x24e6, + "wcircumflex", + 0x0175, + "wdieresis", + 0x1e85, + "wdotaccent", + 0x1e87, + "wdotbelow", + 0x1e89, + "wehiragana", + 0x3091, + "weierstrass", + 0x2118, + "wekatakana", + 0x30f1, + "wekorean", + 0x315e, + "weokorean", + 0x315d, + "wgrave", + 0x1e81, + "whitebullet", + 0x25e6, + "whitecircle", + 0x25cb, + "whitecircleinverse", + 0x25d9, + "whitecornerbracketleft", + 0x300e, + "whitecornerbracketleftvertical", + 0xfe43, + "whitecornerbracketright", + 0x300f, + "whitecornerbracketrightvertical", + 0xfe44, + "whitediamond", + 0x25c7, + "whitediamondcontainingblacksmalldiamond", + 0x25c8, + "whitedownpointingsmalltriangle", + 0x25bf, + "whitedownpointingtriangle", + 0x25bd, + "whiteleftpointingsmalltriangle", + 0x25c3, + "whiteleftpointingtriangle", + 0x25c1, + "whitelenticularbracketleft", + 0x3016, + "whitelenticularbracketright", + 0x3017, + "whiterightpointingsmalltriangle", + 0x25b9, + "whiterightpointingtriangle", + 0x25b7, + "whitesmallsquare", + 0x25ab, + "whitesmilingface", + 0x263a, + "whitesquare", + 0x25a1, + "whitestar", + 0x2606, + "whitetelephone", + 0x260f, + "whitetortoiseshellbracketleft", + 0x3018, + "whitetortoiseshellbracketright", + 0x3019, + "whiteuppointingsmalltriangle", + 0x25b5, + "whiteuppointingtriangle", + 0x25b3, + "wihiragana", + 0x3090, + "wikatakana", + 0x30f0, + "wikorean", + 0x315f, + "wmonospace", + 0xff57, + "wohiragana", + 0x3092, + "wokatakana", + 0x30f2, + "wokatakanahalfwidth", + 0xff66, + "won", + 0x20a9, + "wonmonospace", + 0xffe6, + "wowaenthai", + 0x0e27, + "wparen", + 0x24b2, + "wring", + 0x1e98, + "wsuperior", + 0x02b7, + "wturned", + 0x028d, + "wynn", + 0x01bf, + "x", + 0x0078, + "xabovecmb", + 0x033d, + "xbopomofo", + 0x3112, + "xcircle", + 0x24e7, + "xdieresis", + 0x1e8d, + "xdotaccent", + 0x1e8b, + "xeharmenian", + 0x056d, + "xi", + 0x03be, + "xmonospace", + 0xff58, + "xparen", + 0x24b3, + "xsuperior", + 0x02e3, + "y", + 0x0079, + "yaadosquare", + 0x334e, + "yabengali", + 0x09af, + "yacute", + 0x00fd, + "yadeva", + 0x092f, + "yaekorean", + 0x3152, + "yagujarati", + 0x0aaf, + "yagurmukhi", + 0x0a2f, + "yahiragana", + 0x3084, + "yakatakana", + 0x30e4, + "yakatakanahalfwidth", + 0xff94, + "yakorean", + 0x3151, + "yamakkanthai", + 0x0e4e, + "yasmallhiragana", + 0x3083, + "yasmallkatakana", + 0x30e3, + "yasmallkatakanahalfwidth", + 0xff6c, + "yatcyrillic", + 0x0463, + "ycircle", + 0x24e8, + "ycircumflex", + 0x0177, + "ydieresis", + 0x00ff, + "ydotaccent", + 0x1e8f, + "ydotbelow", + 0x1ef5, + "yeharabic", + 0x064a, + "yehbarreearabic", + 0x06d2, + "yehbarreefinalarabic", + 0xfbaf, + "yehfinalarabic", + 0xfef2, + "yehhamzaabovearabic", + 0x0626, + "yehhamzaabovefinalarabic", + 0xfe8a, + "yehhamzaaboveinitialarabic", + 0xfe8b, + "yehhamzaabovemedialarabic", + 0xfe8c, + "yehinitialarabic", + 0xfef3, + "yehmedialarabic", + 0xfef4, + "yehmeeminitialarabic", + 0xfcdd, + "yehmeemisolatedarabic", + 0xfc58, + "yehnoonfinalarabic", + 0xfc94, + "yehthreedotsbelowarabic", + 0x06d1, + "yekorean", + 0x3156, + "yen", + 0x00a5, + "yenmonospace", + 0xffe5, + "yeokorean", + 0x3155, + "yeorinhieuhkorean", + 0x3186, + "yerahbenyomohebrew", + 0x05aa, + "yerahbenyomolefthebrew", + 0x05aa, + "yericyrillic", + 0x044b, + "yerudieresiscyrillic", + 0x04f9, + "yesieungkorean", + 0x3181, + "yesieungpansioskorean", + 0x3183, + "yesieungsioskorean", + 0x3182, + "yetivhebrew", + 0x059a, + "ygrave", + 0x1ef3, + "yhook", + 0x01b4, + "yhookabove", + 0x1ef7, + "yiarmenian", + 0x0575, + "yicyrillic", + 0x0457, + "yikorean", + 0x3162, + "yinyang", + 0x262f, + "yiwnarmenian", + 0x0582, + "ymonospace", + 0xff59, + "yod", + 0x05d9, + "yoddagesh", + 0xfb39, + "yoddageshhebrew", + 0xfb39, + "yodhebrew", + 0x05d9, + "yodyodhebrew", + 0x05f2, + "yodyodpatahhebrew", + 0xfb1f, + "yohiragana", + 0x3088, + "yoikorean", + 0x3189, + "yokatakana", + 0x30e8, + "yokatakanahalfwidth", + 0xff96, + "yokorean", + 0x315b, + "yosmallhiragana", + 0x3087, + "yosmallkatakana", + 0x30e7, + "yosmallkatakanahalfwidth", + 0xff6e, + "yotgreek", + 0x03f3, + "yoyaekorean", + 0x3188, + "yoyakorean", + 0x3187, + "yoyakthai", + 0x0e22, + "yoyingthai", + 0x0e0d, + "yparen", + 0x24b4, + "ypogegrammeni", + 0x037a, + "ypogegrammenigreekcmb", + 0x0345, + "yr", + 0x01a6, + "yring", + 0x1e99, + "ysuperior", + 0x02b8, + "ytilde", + 0x1ef9, + "yturned", + 0x028e, + "yuhiragana", + 0x3086, + "yuikorean", + 0x318c, + "yukatakana", + 0x30e6, + "yukatakanahalfwidth", + 0xff95, + "yukorean", + 0x3160, + "yusbigcyrillic", + 0x046b, + "yusbigiotifiedcyrillic", + 0x046d, + "yuslittlecyrillic", + 0x0467, + "yuslittleiotifiedcyrillic", + 0x0469, + "yusmallhiragana", + 0x3085, + "yusmallkatakana", + 0x30e5, + "yusmallkatakanahalfwidth", + 0xff6d, + "yuyekorean", + 0x318b, + "yuyeokorean", + 0x318a, + "yyabengali", + 0x09df, + "yyadeva", + 0x095f, + "z", + 0x007a, + "zaarmenian", + 0x0566, + "zacute", + 0x017a, + "zadeva", + 0x095b, + "zagurmukhi", + 0x0a5b, + "zaharabic", + 0x0638, + "zahfinalarabic", + 0xfec6, + "zahinitialarabic", + 0xfec7, + "zahiragana", + 0x3056, + "zahmedialarabic", + 0xfec8, + "zainarabic", + 0x0632, + "zainfinalarabic", + 0xfeb0, + "zakatakana", + 0x30b6, + "zaqefgadolhebrew", + 0x0595, + "zaqefqatanhebrew", + 0x0594, + "zarqahebrew", + 0x0598, + "zayin", + 0x05d6, + "zayindagesh", + 0xfb36, + "zayindageshhebrew", + 0xfb36, + "zayinhebrew", + 0x05d6, + "zbopomofo", + 0x3117, + "zcaron", + 0x017e, + "zcircle", + 0x24e9, + "zcircumflex", + 0x1e91, + "zcurl", + 0x0291, + "zdot", + 0x017c, + "zdotaccent", + 0x017c, + "zdotbelow", + 0x1e93, + "zecyrillic", + 0x0437, + "zedescendercyrillic", + 0x0499, + "zedieresiscyrillic", + 0x04df, + "zehiragana", + 0x305c, + "zekatakana", + 0x30bc, + "zero", + 0x0030, + "zeroarabic", + 0x0660, + "zerobengali", + 0x09e6, + "zerodeva", + 0x0966, + "zerogujarati", + 0x0ae6, + "zerogurmukhi", + 0x0a66, + "zerohackarabic", + 0x0660, + "zeroinferior", + 0x2080, + "zeromonospace", + 0xff10, + "zerooldstyle", + 0xf730, + "zeropersian", + 0x06f0, + "zerosuperior", + 0x2070, + "zerothai", + 0x0e50, + "zerowidthjoiner", + 0xfeff, + "zerowidthnonjoiner", + 0x200c, + "zerowidthspace", + 0x200b, + "zeta", + 0x03b6, + "zhbopomofo", + 0x3113, + "zhearmenian", + 0x056a, + "zhebrevecyrillic", + 0x04c2, + "zhecyrillic", + 0x0436, + "zhedescendercyrillic", + 0x0497, + "zhedieresiscyrillic", + 0x04dd, + "zihiragana", + 0x3058, + "zikatakana", + 0x30b8, + "zinorhebrew", + 0x05ae, + "zlinebelow", + 0x1e95, + "zmonospace", + 0xff5a, + "zohiragana", + 0x305e, + "zokatakana", + 0x30be, + "zparen", + 0x24b5, + "zretroflexhook", + 0x0290, + "zstroke", + 0x01b6, + "zuhiragana", + 0x305a, + "zukatakana", + 0x30ba, + ".notdef", + 0x0000, + "angbracketleftbig", + 0x2329, + "angbracketleftBig", + 0x2329, + "angbracketleftbigg", + 0x2329, + "angbracketleftBigg", + 0x2329, + "angbracketrightBig", + 0x232a, + "angbracketrightbig", + 0x232a, + "angbracketrightBigg", + 0x232a, + "angbracketrightbigg", + 0x232a, + "arrowhookleft", + 0x21aa, + "arrowhookright", + 0x21a9, + "arrowlefttophalf", + 0x21bc, + "arrowleftbothalf", + 0x21bd, + "arrownortheast", + 0x2197, + "arrownorthwest", + 0x2196, + "arrowrighttophalf", + 0x21c0, + "arrowrightbothalf", + 0x21c1, + "arrowsoutheast", + 0x2198, + "arrowsouthwest", + 0x2199, + "backslashbig", + 0x2216, + "backslashBig", + 0x2216, + "backslashBigg", + 0x2216, + "backslashbigg", + 0x2216, + "bardbl", + 0x2016, + "bracehtipdownleft", + 0xfe37, + "bracehtipdownright", + 0xfe37, + "bracehtipupleft", + 0xfe38, + "bracehtipupright", + 0xfe38, + "braceleftBig", + 0x007b, + "braceleftbig", + 0x007b, + "braceleftbigg", + 0x007b, + "braceleftBigg", + 0x007b, + "bracerightBig", + 0x007d, + "bracerightbig", + 0x007d, + "bracerightbigg", + 0x007d, + "bracerightBigg", + 0x007d, + "bracketleftbig", + 0x005b, + "bracketleftBig", + 0x005b, + "bracketleftbigg", + 0x005b, + "bracketleftBigg", + 0x005b, + "bracketrightBig", + 0x005d, + "bracketrightbig", + 0x005d, + "bracketrightbigg", + 0x005d, + "bracketrightBigg", + 0x005d, + "ceilingleftbig", + 0x2308, + "ceilingleftBig", + 0x2308, + "ceilingleftBigg", + 0x2308, + "ceilingleftbigg", + 0x2308, + "ceilingrightbig", + 0x2309, + "ceilingrightBig", + 0x2309, + "ceilingrightbigg", + 0x2309, + "ceilingrightBigg", + 0x2309, + "circledotdisplay", + 0x2299, + "circledottext", + 0x2299, + "circlemultiplydisplay", + 0x2297, + "circlemultiplytext", + 0x2297, + "circleplusdisplay", + 0x2295, + "circleplustext", + 0x2295, + "contintegraldisplay", + 0x222e, + "contintegraltext", + 0x222e, + "coproductdisplay", + 0x2210, + "coproducttext", + 0x2210, + "floorleftBig", + 0x230a, + "floorleftbig", + 0x230a, + "floorleftbigg", + 0x230a, + "floorleftBigg", + 0x230a, + "floorrightbig", + 0x230b, + "floorrightBig", + 0x230b, + "floorrightBigg", + 0x230b, + "floorrightbigg", + 0x230b, + "hatwide", + 0x0302, + "hatwider", + 0x0302, + "hatwidest", + 0x0302, + "intercal", + 0x1d40, + "integraldisplay", + 0x222b, + "integraltext", + 0x222b, + "intersectiondisplay", + 0x22c2, + "intersectiontext", + 0x22c2, + "logicalanddisplay", + 0x2227, + "logicalandtext", + 0x2227, + "logicalordisplay", + 0x2228, + "logicalortext", + 0x2228, + "parenleftBig", + 0x0028, + "parenleftbig", + 0x0028, + "parenleftBigg", + 0x0028, + "parenleftbigg", + 0x0028, + "parenrightBig", + 0x0029, + "parenrightbig", + 0x0029, + "parenrightBigg", + 0x0029, + "parenrightbigg", + 0x0029, + "prime", + 0x2032, + "productdisplay", + 0x220f, + "producttext", + 0x220f, + "radicalbig", + 0x221a, + "radicalBig", + 0x221a, + "radicalBigg", + 0x221a, + "radicalbigg", + 0x221a, + "radicalbt", + 0x221a, + "radicaltp", + 0x221a, + "radicalvertex", + 0x221a, + "slashbig", + 0x002f, + "slashBig", + 0x002f, + "slashBigg", + 0x002f, + "slashbigg", + 0x002f, + "summationdisplay", + 0x2211, + "summationtext", + 0x2211, + "tildewide", + 0x02dc, + "tildewider", + 0x02dc, + "tildewidest", + 0x02dc, + "uniondisplay", + 0x22c3, + "unionmultidisplay", + 0x228e, + "unionmultitext", + 0x228e, + "unionsqdisplay", + 0x2294, + "unionsqtext", + 0x2294, + "uniontext", + 0x22c3, + "vextenddouble", + 0x2225, + "vextendsingle", + 0x2223 + ]; }); -var getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) { - t['space'] = 0x0020; - t['a1'] = 0x2701; - t['a2'] = 0x2702; - t['a202'] = 0x2703; - t['a3'] = 0x2704; - t['a4'] = 0x260E; - t['a5'] = 0x2706; - t['a119'] = 0x2707; - t['a118'] = 0x2708; - t['a117'] = 0x2709; - t['a11'] = 0x261B; - t['a12'] = 0x261E; - t['a13'] = 0x270C; - t['a14'] = 0x270D; - t['a15'] = 0x270E; - t['a16'] = 0x270F; - t['a105'] = 0x2710; - t['a17'] = 0x2711; - t['a18'] = 0x2712; - t['a19'] = 0x2713; - t['a20'] = 0x2714; - t['a21'] = 0x2715; - t['a22'] = 0x2716; - t['a23'] = 0x2717; - t['a24'] = 0x2718; - t['a25'] = 0x2719; - t['a26'] = 0x271A; - t['a27'] = 0x271B; - t['a28'] = 0x271C; - t['a6'] = 0x271D; - t['a7'] = 0x271E; - t['a8'] = 0x271F; - t['a9'] = 0x2720; - t['a10'] = 0x2721; - t['a29'] = 0x2722; - t['a30'] = 0x2723; - t['a31'] = 0x2724; - t['a32'] = 0x2725; - t['a33'] = 0x2726; - t['a34'] = 0x2727; - t['a35'] = 0x2605; - t['a36'] = 0x2729; - t['a37'] = 0x272A; - t['a38'] = 0x272B; - t['a39'] = 0x272C; - t['a40'] = 0x272D; - t['a41'] = 0x272E; - t['a42'] = 0x272F; - t['a43'] = 0x2730; - t['a44'] = 0x2731; - t['a45'] = 0x2732; - t['a46'] = 0x2733; - t['a47'] = 0x2734; - t['a48'] = 0x2735; - t['a49'] = 0x2736; - t['a50'] = 0x2737; - t['a51'] = 0x2738; - t['a52'] = 0x2739; - t['a53'] = 0x273A; - t['a54'] = 0x273B; - t['a55'] = 0x273C; - t['a56'] = 0x273D; - t['a57'] = 0x273E; - t['a58'] = 0x273F; - t['a59'] = 0x2740; - t['a60'] = 0x2741; - t['a61'] = 0x2742; - t['a62'] = 0x2743; - t['a63'] = 0x2744; - t['a64'] = 0x2745; - t['a65'] = 0x2746; - t['a66'] = 0x2747; - t['a67'] = 0x2748; - t['a68'] = 0x2749; - t['a69'] = 0x274A; - t['a70'] = 0x274B; - t['a71'] = 0x25CF; - t['a72'] = 0x274D; - t['a73'] = 0x25A0; - t['a74'] = 0x274F; - t['a203'] = 0x2750; - t['a75'] = 0x2751; - t['a204'] = 0x2752; - t['a76'] = 0x25B2; - t['a77'] = 0x25BC; - t['a78'] = 0x25C6; - t['a79'] = 0x2756; - t['a81'] = 0x25D7; - t['a82'] = 0x2758; - t['a83'] = 0x2759; - t['a84'] = 0x275A; - t['a97'] = 0x275B; - t['a98'] = 0x275C; - t['a99'] = 0x275D; - t['a100'] = 0x275E; - t['a101'] = 0x2761; - t['a102'] = 0x2762; - t['a103'] = 0x2763; - t['a104'] = 0x2764; - t['a106'] = 0x2765; - t['a107'] = 0x2766; - t['a108'] = 0x2767; - t['a112'] = 0x2663; - t['a111'] = 0x2666; - t['a110'] = 0x2665; - t['a109'] = 0x2660; - t['a120'] = 0x2460; - t['a121'] = 0x2461; - t['a122'] = 0x2462; - t['a123'] = 0x2463; - t['a124'] = 0x2464; - t['a125'] = 0x2465; - t['a126'] = 0x2466; - t['a127'] = 0x2467; - t['a128'] = 0x2468; - t['a129'] = 0x2469; - t['a130'] = 0x2776; - t['a131'] = 0x2777; - t['a132'] = 0x2778; - t['a133'] = 0x2779; - t['a134'] = 0x277A; - t['a135'] = 0x277B; - t['a136'] = 0x277C; - t['a137'] = 0x277D; - t['a138'] = 0x277E; - t['a139'] = 0x277F; - t['a140'] = 0x2780; - t['a141'] = 0x2781; - t['a142'] = 0x2782; - t['a143'] = 0x2783; - t['a144'] = 0x2784; - t['a145'] = 0x2785; - t['a146'] = 0x2786; - t['a147'] = 0x2787; - t['a148'] = 0x2788; - t['a149'] = 0x2789; - t['a150'] = 0x278A; - t['a151'] = 0x278B; - t['a152'] = 0x278C; - t['a153'] = 0x278D; - t['a154'] = 0x278E; - t['a155'] = 0x278F; - t['a156'] = 0x2790; - t['a157'] = 0x2791; - t['a158'] = 0x2792; - t['a159'] = 0x2793; - t['a160'] = 0x2794; - t['a161'] = 0x2192; - t['a163'] = 0x2194; - t['a164'] = 0x2195; - t['a196'] = 0x2798; - t['a165'] = 0x2799; - t['a192'] = 0x279A; - t['a166'] = 0x279B; - t['a167'] = 0x279C; - t['a168'] = 0x279D; - t['a169'] = 0x279E; - t['a170'] = 0x279F; - t['a171'] = 0x27A0; - t['a172'] = 0x27A1; - t['a173'] = 0x27A2; - t['a162'] = 0x27A3; - t['a174'] = 0x27A4; - t['a175'] = 0x27A5; - t['a176'] = 0x27A6; - t['a177'] = 0x27A7; - t['a178'] = 0x27A8; - t['a179'] = 0x27A9; - t['a193'] = 0x27AA; - t['a180'] = 0x27AB; - t['a199'] = 0x27AC; - t['a181'] = 0x27AD; - t['a200'] = 0x27AE; - t['a182'] = 0x27AF; - t['a201'] = 0x27B1; - t['a183'] = 0x27B2; - t['a184'] = 0x27B3; - t['a197'] = 0x27B4; - t['a185'] = 0x27B5; - t['a194'] = 0x27B6; - t['a198'] = 0x27B7; - t['a186'] = 0x27B8; - t['a195'] = 0x27B9; - t['a187'] = 0x27BA; - t['a188'] = 0x27BB; - t['a189'] = 0x27BC; - t['a190'] = 0x27BD; - t['a191'] = 0x27BE; - t['a89'] = 0x2768; - t['a90'] = 0x2769; - t['a93'] = 0x276A; - t['a94'] = 0x276B; - t['a91'] = 0x276C; - t['a92'] = 0x276D; - t['a205'] = 0x276E; - t['a85'] = 0x276F; - t['a206'] = 0x2770; - t['a86'] = 0x2771; - t['a87'] = 0x2772; - t['a88'] = 0x2773; - t['a95'] = 0x2774; - t['a96'] = 0x2775; - t['.notdef'] = 0x0000; +const getDingbatsGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function () { + return [ + "space", + 0x0020, + "a1", + 0x2701, + "a2", + 0x2702, + "a202", + 0x2703, + "a3", + 0x2704, + "a4", + 0x260e, + "a5", + 0x2706, + "a119", + 0x2707, + "a118", + 0x2708, + "a117", + 0x2709, + "a11", + 0x261b, + "a12", + 0x261e, + "a13", + 0x270c, + "a14", + 0x270d, + "a15", + 0x270e, + "a16", + 0x270f, + "a105", + 0x2710, + "a17", + 0x2711, + "a18", + 0x2712, + "a19", + 0x2713, + "a20", + 0x2714, + "a21", + 0x2715, + "a22", + 0x2716, + "a23", + 0x2717, + "a24", + 0x2718, + "a25", + 0x2719, + "a26", + 0x271a, + "a27", + 0x271b, + "a28", + 0x271c, + "a6", + 0x271d, + "a7", + 0x271e, + "a8", + 0x271f, + "a9", + 0x2720, + "a10", + 0x2721, + "a29", + 0x2722, + "a30", + 0x2723, + "a31", + 0x2724, + "a32", + 0x2725, + "a33", + 0x2726, + "a34", + 0x2727, + "a35", + 0x2605, + "a36", + 0x2729, + "a37", + 0x272a, + "a38", + 0x272b, + "a39", + 0x272c, + "a40", + 0x272d, + "a41", + 0x272e, + "a42", + 0x272f, + "a43", + 0x2730, + "a44", + 0x2731, + "a45", + 0x2732, + "a46", + 0x2733, + "a47", + 0x2734, + "a48", + 0x2735, + "a49", + 0x2736, + "a50", + 0x2737, + "a51", + 0x2738, + "a52", + 0x2739, + "a53", + 0x273a, + "a54", + 0x273b, + "a55", + 0x273c, + "a56", + 0x273d, + "a57", + 0x273e, + "a58", + 0x273f, + "a59", + 0x2740, + "a60", + 0x2741, + "a61", + 0x2742, + "a62", + 0x2743, + "a63", + 0x2744, + "a64", + 0x2745, + "a65", + 0x2746, + "a66", + 0x2747, + "a67", + 0x2748, + "a68", + 0x2749, + "a69", + 0x274a, + "a70", + 0x274b, + "a71", + 0x25cf, + "a72", + 0x274d, + "a73", + 0x25a0, + "a74", + 0x274f, + "a203", + 0x2750, + "a75", + 0x2751, + "a204", + 0x2752, + "a76", + 0x25b2, + "a77", + 0x25bc, + "a78", + 0x25c6, + "a79", + 0x2756, + "a81", + 0x25d7, + "a82", + 0x2758, + "a83", + 0x2759, + "a84", + 0x275a, + "a97", + 0x275b, + "a98", + 0x275c, + "a99", + 0x275d, + "a100", + 0x275e, + "a101", + 0x2761, + "a102", + 0x2762, + "a103", + 0x2763, + "a104", + 0x2764, + "a106", + 0x2765, + "a107", + 0x2766, + "a108", + 0x2767, + "a112", + 0x2663, + "a111", + 0x2666, + "a110", + 0x2665, + "a109", + 0x2660, + "a120", + 0x2460, + "a121", + 0x2461, + "a122", + 0x2462, + "a123", + 0x2463, + "a124", + 0x2464, + "a125", + 0x2465, + "a126", + 0x2466, + "a127", + 0x2467, + "a128", + 0x2468, + "a129", + 0x2469, + "a130", + 0x2776, + "a131", + 0x2777, + "a132", + 0x2778, + "a133", + 0x2779, + "a134", + 0x277a, + "a135", + 0x277b, + "a136", + 0x277c, + "a137", + 0x277d, + "a138", + 0x277e, + "a139", + 0x277f, + "a140", + 0x2780, + "a141", + 0x2781, + "a142", + 0x2782, + "a143", + 0x2783, + "a144", + 0x2784, + "a145", + 0x2785, + "a146", + 0x2786, + "a147", + 0x2787, + "a148", + 0x2788, + "a149", + 0x2789, + "a150", + 0x278a, + "a151", + 0x278b, + "a152", + 0x278c, + "a153", + 0x278d, + "a154", + 0x278e, + "a155", + 0x278f, + "a156", + 0x2790, + "a157", + 0x2791, + "a158", + 0x2792, + "a159", + 0x2793, + "a160", + 0x2794, + "a161", + 0x2192, + "a163", + 0x2194, + "a164", + 0x2195, + "a196", + 0x2798, + "a165", + 0x2799, + "a192", + 0x279a, + "a166", + 0x279b, + "a167", + 0x279c, + "a168", + 0x279d, + "a169", + 0x279e, + "a170", + 0x279f, + "a171", + 0x27a0, + "a172", + 0x27a1, + "a173", + 0x27a2, + "a162", + 0x27a3, + "a174", + 0x27a4, + "a175", + 0x27a5, + "a176", + 0x27a6, + "a177", + 0x27a7, + "a178", + 0x27a8, + "a179", + 0x27a9, + "a193", + 0x27aa, + "a180", + 0x27ab, + "a199", + 0x27ac, + "a181", + 0x27ad, + "a200", + 0x27ae, + "a182", + 0x27af, + "a201", + 0x27b1, + "a183", + 0x27b2, + "a184", + 0x27b3, + "a197", + 0x27b4, + "a185", + 0x27b5, + "a194", + 0x27b6, + "a198", + 0x27b7, + "a186", + 0x27b8, + "a195", + 0x27b9, + "a187", + 0x27ba, + "a188", + 0x27bb, + "a189", + 0x27bc, + "a190", + 0x27bd, + "a191", + 0x27be, + "a89", + 0x2768, + "a90", + 0x2769, + "a93", + 0x276a, + "a94", + 0x276b, + "a91", + 0x276c, + "a92", + 0x276d, + "a205", + 0x276e, + "a85", + 0x276f, + "a206", + 0x2770, + "a86", + 0x2771, + "a87", + 0x2772, + "a88", + 0x2773, + "a95", + 0x2774, + "a96", + 0x2775, + ".notdef", + 0x0000 + ]; }); -exports.getGlyphsUnicode = getGlyphsUnicode; -exports.getDingbatsGlyphsUnicode = getDingbatsGlyphsUnicode; + /***/ }), -/* 179 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 165 */ +/***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => { + +"use strict"; +__w_pdfjs_require__.r(__webpack_exports__); +/* harmony export */ __w_pdfjs_require__.d(__webpack_exports__, { +/* harmony export */ "clearUnicodeCaches": () => (/* binding */ clearUnicodeCaches), +/* harmony export */ "getCharUnicodeCategory": () => (/* binding */ getCharUnicodeCategory), +/* harmony export */ "getNormalizedUnicodes": () => (/* binding */ getNormalizedUnicodes), +/* harmony export */ "getUnicodeForGlyph": () => (/* binding */ getUnicodeForGlyph), +/* harmony export */ "getUnicodeRangeFor": () => (/* binding */ getUnicodeRangeFor), +/* harmony export */ "mapSpecialUnicodeValues": () => (/* binding */ mapSpecialUnicodeValues), +/* harmony export */ "reverseIfRtl": () => (/* binding */ reverseIfRtl) +/* harmony export */ }); +/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(131); + +const getSpecialPUASymbols = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getLookupTableFactory)(function (t) { + t[63721] = 0x00a9; + t[63193] = 0x00a9; + t[63720] = 0x00ae; + t[63194] = 0x00ae; + t[63722] = 0x2122; + t[63195] = 0x2122; + t[63729] = 0x23a7; + t[63730] = 0x23a8; + t[63731] = 0x23a9; + t[63740] = 0x23ab; + t[63741] = 0x23ac; + t[63742] = 0x23ad; + t[63726] = 0x23a1; + t[63727] = 0x23a2; + t[63728] = 0x23a3; + t[63737] = 0x23a4; + t[63738] = 0x23a5; + t[63739] = 0x23a6; + t[63723] = 0x239b; + t[63724] = 0x239c; + t[63725] = 0x239d; + t[63734] = 0x239e; + t[63735] = 0x239f; + t[63736] = 0x23a0; +}); +function mapSpecialUnicodeValues(code) { + if (code >= 0xfff0 && code <= 0xffff) { + return 0; + } else if (code >= 0xf600 && code <= 0xf8ff) { + return getSpecialPUASymbols()[code] || code; + } else if (code === 0x00ad) { + return 0x002d; + } + return code; +} +function getUnicodeForGlyph(name, glyphsUnicodeMap) { + let unicode = glyphsUnicodeMap[name]; + if (unicode !== undefined) { + return unicode; + } + if (!name) { + return -1; + } + if (name[0] === "u") { + const nameLen = name.length; + let hexStr; + if (nameLen === 7 && name[1] === "n" && name[2] === "i") { + hexStr = name.substring(3); + } else if (nameLen >= 5 && nameLen <= 7) { + hexStr = name.substring(1); + } else { + return -1; + } + if (hexStr === hexStr.toUpperCase()) { + unicode = parseInt(hexStr, 16); + if (unicode >= 0) { + return unicode; + } + } + } + return -1; +} +const UnicodeRanges = [ + { + begin: 0x0000, + end: 0x007f + }, + { + begin: 0x0080, + end: 0x00ff + }, + { + begin: 0x0100, + end: 0x017f + }, + { + begin: 0x0180, + end: 0x024f + }, + { + begin: 0x0250, + end: 0x02af + }, + { + begin: 0x02b0, + end: 0x02ff + }, + { + begin: 0x0300, + end: 0x036f + }, + { + begin: 0x0370, + end: 0x03ff + }, + { + begin: 0x2c80, + end: 0x2cff + }, + { + begin: 0x0400, + end: 0x04ff + }, + { + begin: 0x0530, + end: 0x058f + }, + { + begin: 0x0590, + end: 0x05ff + }, + { + begin: 0xa500, + end: 0xa63f + }, + { + begin: 0x0600, + end: 0x06ff + }, + { + begin: 0x07c0, + end: 0x07ff + }, + { + begin: 0x0900, + end: 0x097f + }, + { + begin: 0x0980, + end: 0x09ff + }, + { + begin: 0x0a00, + end: 0x0a7f + }, + { + begin: 0x0a80, + end: 0x0aff + }, + { + begin: 0x0b00, + end: 0x0b7f + }, + { + begin: 0x0b80, + end: 0x0bff + }, + { + begin: 0x0c00, + end: 0x0c7f + }, + { + begin: 0x0c80, + end: 0x0cff + }, + { + begin: 0x0d00, + end: 0x0d7f + }, + { + begin: 0x0e00, + end: 0x0e7f + }, + { + begin: 0x0e80, + end: 0x0eff + }, + { + begin: 0x10a0, + end: 0x10ff + }, + { + begin: 0x1b00, + end: 0x1b7f + }, + { + begin: 0x1100, + end: 0x11ff + }, + { + begin: 0x1e00, + end: 0x1eff + }, + { + begin: 0x1f00, + end: 0x1fff + }, + { + begin: 0x2000, + end: 0x206f + }, + { + begin: 0x2070, + end: 0x209f + }, + { + begin: 0x20a0, + end: 0x20cf + }, + { + begin: 0x20d0, + end: 0x20ff + }, + { + begin: 0x2100, + end: 0x214f + }, + { + begin: 0x2150, + end: 0x218f + }, + { + begin: 0x2190, + end: 0x21ff + }, + { + begin: 0x2200, + end: 0x22ff + }, + { + begin: 0x2300, + end: 0x23ff + }, + { + begin: 0x2400, + end: 0x243f + }, + { + begin: 0x2440, + end: 0x245f + }, + { + begin: 0x2460, + end: 0x24ff + }, + { + begin: 0x2500, + end: 0x257f + }, + { + begin: 0x2580, + end: 0x259f + }, + { + begin: 0x25a0, + end: 0x25ff + }, + { + begin: 0x2600, + end: 0x26ff + }, + { + begin: 0x2700, + end: 0x27bf + }, + { + begin: 0x3000, + end: 0x303f + }, + { + begin: 0x3040, + end: 0x309f + }, + { + begin: 0x30a0, + end: 0x30ff + }, + { + begin: 0x3100, + end: 0x312f + }, + { + begin: 0x3130, + end: 0x318f + }, + { + begin: 0xa840, + end: 0xa87f + }, + { + begin: 0x3200, + end: 0x32ff + }, + { + begin: 0x3300, + end: 0x33ff + }, + { + begin: 0xac00, + end: 0xd7af + }, + { + begin: 0xd800, + end: 0xdfff + }, + { + begin: 0x10900, + end: 0x1091f + }, + { + begin: 0x4e00, + end: 0x9fff + }, + { + begin: 0xe000, + end: 0xf8ff + }, + { + begin: 0x31c0, + end: 0x31ef + }, + { + begin: 0xfb00, + end: 0xfb4f + }, + { + begin: 0xfb50, + end: 0xfdff + }, + { + begin: 0xfe20, + end: 0xfe2f + }, + { + begin: 0xfe10, + end: 0xfe1f + }, + { + begin: 0xfe50, + end: 0xfe6f + }, + { + begin: 0xfe70, + end: 0xfeff + }, + { + begin: 0xff00, + end: 0xffef + }, + { + begin: 0xfff0, + end: 0xffff + }, + { + begin: 0x0f00, + end: 0x0fff + }, + { + begin: 0x0700, + end: 0x074f + }, + { + begin: 0x0780, + end: 0x07bf + }, + { + begin: 0x0d80, + end: 0x0dff + }, + { + begin: 0x1000, + end: 0x109f + }, + { + begin: 0x1200, + end: 0x137f + }, + { + begin: 0x13a0, + end: 0x13ff + }, + { + begin: 0x1400, + end: 0x167f + }, + { + begin: 0x1680, + end: 0x169f + }, + { + begin: 0x16a0, + end: 0x16ff + }, + { + begin: 0x1780, + end: 0x17ff + }, + { + begin: 0x1800, + end: 0x18af + }, + { + begin: 0x2800, + end: 0x28ff + }, + { + begin: 0xa000, + end: 0xa48f + }, + { + begin: 0x1700, + end: 0x171f + }, + { + begin: 0x10300, + end: 0x1032f + }, + { + begin: 0x10330, + end: 0x1034f + }, + { + begin: 0x10400, + end: 0x1044f + }, + { + begin: 0x1d000, + end: 0x1d0ff + }, + { + begin: 0x1d400, + end: 0x1d7ff + }, + { + begin: 0xff000, + end: 0xffffd + }, + { + begin: 0xfe00, + end: 0xfe0f + }, + { + begin: 0xe0000, + end: 0xe007f + }, + { + begin: 0x1900, + end: 0x194f + }, + { + begin: 0x1950, + end: 0x197f + }, + { + begin: 0x1980, + end: 0x19df + }, + { + begin: 0x1a00, + end: 0x1a1f + }, + { + begin: 0x2c00, + end: 0x2c5f + }, + { + begin: 0x2d30, + end: 0x2d7f + }, + { + begin: 0x4dc0, + end: 0x4dff + }, + { + begin: 0xa800, + end: 0xa82f + }, + { + begin: 0x10000, + end: 0x1007f + }, + { + begin: 0x10140, + end: 0x1018f + }, + { + begin: 0x10380, + end: 0x1039f + }, + { + begin: 0x103a0, + end: 0x103df + }, + { + begin: 0x10450, + end: 0x1047f + }, + { + begin: 0x10480, + end: 0x104af + }, + { + begin: 0x10800, + end: 0x1083f + }, + { + begin: 0x10a00, + end: 0x10a5f + }, + { + begin: 0x1d300, + end: 0x1d35f + }, + { + begin: 0x12000, + end: 0x123ff + }, + { + begin: 0x1d360, + end: 0x1d37f + }, + { + begin: 0x1b80, + end: 0x1bbf + }, + { + begin: 0x1c00, + end: 0x1c4f + }, + { + begin: 0x1c50, + end: 0x1c7f + }, + { + begin: 0xa880, + end: 0xa8df + }, + { + begin: 0xa900, + end: 0xa92f + }, + { + begin: 0xa930, + end: 0xa95f + }, + { + begin: 0xaa00, + end: 0xaa5f + }, + { + begin: 0x10190, + end: 0x101cf + }, + { + begin: 0x101d0, + end: 0x101ff + }, + { + begin: 0x102a0, + end: 0x102df + }, + { + begin: 0x1f030, + end: 0x1f09f + } +]; +function getUnicodeRangeFor(value) { + for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) { + const range = UnicodeRanges[i]; + if (value >= range.begin && value < range.end) { + return i; + } + } + return -1; +} +function isRTLRangeFor(value) { + let range = UnicodeRanges[13]; + if (value >= range.begin && value < range.end) { + return true; + } + range = UnicodeRanges[11]; + if (value >= range.begin && value < range.end) { + return true; + } + return false; +} +const getNormalizedUnicodes = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function () { + return [ + "\u00A8", + "\u0020\u0308", + "\u00AF", + "\u0020\u0304", + "\u00B4", + "\u0020\u0301", + "\u00B5", + "\u03BC", + "\u00B8", + "\u0020\u0327", + "\u0132", + "\u0049\u004A", + "\u0133", + "\u0069\u006A", + "\u013F", + "\u004C\u00B7", + "\u0140", + "\u006C\u00B7", + "\u0149", + "\u02BC\u006E", + "\u017F", + "\u0073", + "\u01C4", + "\u0044\u017D", + "\u01C5", + "\u0044\u017E", + "\u01C6", + "\u0064\u017E", + "\u01C7", + "\u004C\u004A", + "\u01C8", + "\u004C\u006A", + "\u01C9", + "\u006C\u006A", + "\u01CA", + "\u004E\u004A", + "\u01CB", + "\u004E\u006A", + "\u01CC", + "\u006E\u006A", + "\u01F1", + "\u0044\u005A", + "\u01F2", + "\u0044\u007A", + "\u01F3", + "\u0064\u007A", + "\u02D8", + "\u0020\u0306", + "\u02D9", + "\u0020\u0307", + "\u02DA", + "\u0020\u030A", + "\u02DB", + "\u0020\u0328", + "\u02DC", + "\u0020\u0303", + "\u02DD", + "\u0020\u030B", + "\u037A", + "\u0020\u0345", + "\u0384", + "\u0020\u0301", + "\u03D0", + "\u03B2", + "\u03D1", + "\u03B8", + "\u03D2", + "\u03A5", + "\u03D5", + "\u03C6", + "\u03D6", + "\u03C0", + "\u03F0", + "\u03BA", + "\u03F1", + "\u03C1", + "\u03F2", + "\u03C2", + "\u03F4", + "\u0398", + "\u03F5", + "\u03B5", + "\u03F9", + "\u03A3", + "\u0587", + "\u0565\u0582", + "\u0675", + "\u0627\u0674", + "\u0676", + "\u0648\u0674", + "\u0677", + "\u06C7\u0674", + "\u0678", + "\u064A\u0674", + "\u0E33", + "\u0E4D\u0E32", + "\u0EB3", + "\u0ECD\u0EB2", + "\u0EDC", + "\u0EAB\u0E99", + "\u0EDD", + "\u0EAB\u0EA1", + "\u0F77", + "\u0FB2\u0F81", + "\u0F79", + "\u0FB3\u0F81", + "\u1E9A", + "\u0061\u02BE", + "\u1FBD", + "\u0020\u0313", + "\u1FBF", + "\u0020\u0313", + "\u1FC0", + "\u0020\u0342", + "\u1FFE", + "\u0020\u0314", + "\u2002", + "\u0020", + "\u2003", + "\u0020", + "\u2004", + "\u0020", + "\u2005", + "\u0020", + "\u2006", + "\u0020", + "\u2008", + "\u0020", + "\u2009", + "\u0020", + "\u200A", + "\u0020", + "\u2017", + "\u0020\u0333", + "\u2024", + "\u002E", + "\u2025", + "\u002E\u002E", + "\u2026", + "\u002E\u002E\u002E", + "\u2033", + "\u2032\u2032", + "\u2034", + "\u2032\u2032\u2032", + "\u2036", + "\u2035\u2035", + "\u2037", + "\u2035\u2035\u2035", + "\u203C", + "\u0021\u0021", + "\u203E", + "\u0020\u0305", + "\u2047", + "\u003F\u003F", + "\u2048", + "\u003F\u0021", + "\u2049", + "\u0021\u003F", + "\u2057", + "\u2032\u2032\u2032\u2032", + "\u205F", + "\u0020", + "\u20A8", + "\u0052\u0073", + "\u2100", + "\u0061\u002F\u0063", + "\u2101", + "\u0061\u002F\u0073", + "\u2103", + "\u00B0\u0043", + "\u2105", + "\u0063\u002F\u006F", + "\u2106", + "\u0063\u002F\u0075", + "\u2107", + "\u0190", + "\u2109", + "\u00B0\u0046", + "\u2116", + "\u004E\u006F", + "\u2121", + "\u0054\u0045\u004C", + "\u2135", + "\u05D0", + "\u2136", + "\u05D1", + "\u2137", + "\u05D2", + "\u2138", + "\u05D3", + "\u213B", + "\u0046\u0041\u0058", + "\u2160", + "\u0049", + "\u2161", + "\u0049\u0049", + "\u2162", + "\u0049\u0049\u0049", + "\u2163", + "\u0049\u0056", + "\u2164", + "\u0056", + "\u2165", + "\u0056\u0049", + "\u2166", + "\u0056\u0049\u0049", + "\u2167", + "\u0056\u0049\u0049\u0049", + "\u2168", + "\u0049\u0058", + "\u2169", + "\u0058", + "\u216A", + "\u0058\u0049", + "\u216B", + "\u0058\u0049\u0049", + "\u216C", + "\u004C", + "\u216D", + "\u0043", + "\u216E", + "\u0044", + "\u216F", + "\u004D", + "\u2170", + "\u0069", + "\u2171", + "\u0069\u0069", + "\u2172", + "\u0069\u0069\u0069", + "\u2173", + "\u0069\u0076", + "\u2174", + "\u0076", + "\u2175", + "\u0076\u0069", + "\u2176", + "\u0076\u0069\u0069", + "\u2177", + "\u0076\u0069\u0069\u0069", + "\u2178", + "\u0069\u0078", + "\u2179", + "\u0078", + "\u217A", + "\u0078\u0069", + "\u217B", + "\u0078\u0069\u0069", + "\u217C", + "\u006C", + "\u217D", + "\u0063", + "\u217E", + "\u0064", + "\u217F", + "\u006D", + "\u222C", + "\u222B\u222B", + "\u222D", + "\u222B\u222B\u222B", + "\u222F", + "\u222E\u222E", + "\u2230", + "\u222E\u222E\u222E", + "\u2474", + "\u0028\u0031\u0029", + "\u2475", + "\u0028\u0032\u0029", + "\u2476", + "\u0028\u0033\u0029", + "\u2477", + "\u0028\u0034\u0029", + "\u2478", + "\u0028\u0035\u0029", + "\u2479", + "\u0028\u0036\u0029", + "\u247A", + "\u0028\u0037\u0029", + "\u247B", + "\u0028\u0038\u0029", + "\u247C", + "\u0028\u0039\u0029", + "\u247D", + "\u0028\u0031\u0030\u0029", + "\u247E", + "\u0028\u0031\u0031\u0029", + "\u247F", + "\u0028\u0031\u0032\u0029", + "\u2480", + "\u0028\u0031\u0033\u0029", + "\u2481", + "\u0028\u0031\u0034\u0029", + "\u2482", + "\u0028\u0031\u0035\u0029", + "\u2483", + "\u0028\u0031\u0036\u0029", + "\u2484", + "\u0028\u0031\u0037\u0029", + "\u2485", + "\u0028\u0031\u0038\u0029", + "\u2486", + "\u0028\u0031\u0039\u0029", + "\u2487", + "\u0028\u0032\u0030\u0029", + "\u2488", + "\u0031\u002E", + "\u2489", + "\u0032\u002E", + "\u248A", + "\u0033\u002E", + "\u248B", + "\u0034\u002E", + "\u248C", + "\u0035\u002E", + "\u248D", + "\u0036\u002E", + "\u248E", + "\u0037\u002E", + "\u248F", + "\u0038\u002E", + "\u2490", + "\u0039\u002E", + "\u2491", + "\u0031\u0030\u002E", + "\u2492", + "\u0031\u0031\u002E", + "\u2493", + "\u0031\u0032\u002E", + "\u2494", + "\u0031\u0033\u002E", + "\u2495", + "\u0031\u0034\u002E", + "\u2496", + "\u0031\u0035\u002E", + "\u2497", + "\u0031\u0036\u002E", + "\u2498", + "\u0031\u0037\u002E", + "\u2499", + "\u0031\u0038\u002E", + "\u249A", + "\u0031\u0039\u002E", + "\u249B", + "\u0032\u0030\u002E", + "\u249C", + "\u0028\u0061\u0029", + "\u249D", + "\u0028\u0062\u0029", + "\u249E", + "\u0028\u0063\u0029", + "\u249F", + "\u0028\u0064\u0029", + "\u24A0", + "\u0028\u0065\u0029", + "\u24A1", + "\u0028\u0066\u0029", + "\u24A2", + "\u0028\u0067\u0029", + "\u24A3", + "\u0028\u0068\u0029", + "\u24A4", + "\u0028\u0069\u0029", + "\u24A5", + "\u0028\u006A\u0029", + "\u24A6", + "\u0028\u006B\u0029", + "\u24A7", + "\u0028\u006C\u0029", + "\u24A8", + "\u0028\u006D\u0029", + "\u24A9", + "\u0028\u006E\u0029", + "\u24AA", + "\u0028\u006F\u0029", + "\u24AB", + "\u0028\u0070\u0029", + "\u24AC", + "\u0028\u0071\u0029", + "\u24AD", + "\u0028\u0072\u0029", + "\u24AE", + "\u0028\u0073\u0029", + "\u24AF", + "\u0028\u0074\u0029", + "\u24B0", + "\u0028\u0075\u0029", + "\u24B1", + "\u0028\u0076\u0029", + "\u24B2", + "\u0028\u0077\u0029", + "\u24B3", + "\u0028\u0078\u0029", + "\u24B4", + "\u0028\u0079\u0029", + "\u24B5", + "\u0028\u007A\u0029", + "\u2A0C", + "\u222B\u222B\u222B\u222B", + "\u2A74", + "\u003A\u003A\u003D", + "\u2A75", + "\u003D\u003D", + "\u2A76", + "\u003D\u003D\u003D", + "\u2E9F", + "\u6BCD", + "\u2EF3", + "\u9F9F", + "\u2F00", + "\u4E00", + "\u2F01", + "\u4E28", + "\u2F02", + "\u4E36", + "\u2F03", + "\u4E3F", + "\u2F04", + "\u4E59", + "\u2F05", + "\u4E85", + "\u2F06", + "\u4E8C", + "\u2F07", + "\u4EA0", + "\u2F08", + "\u4EBA", + "\u2F09", + "\u513F", + "\u2F0A", + "\u5165", + "\u2F0B", + "\u516B", + "\u2F0C", + "\u5182", + "\u2F0D", + "\u5196", + "\u2F0E", + "\u51AB", + "\u2F0F", + "\u51E0", + "\u2F10", + "\u51F5", + "\u2F11", + "\u5200", + "\u2F12", + "\u529B", + "\u2F13", + "\u52F9", + "\u2F14", + "\u5315", + "\u2F15", + "\u531A", + "\u2F16", + "\u5338", + "\u2F17", + "\u5341", + "\u2F18", + "\u535C", + "\u2F19", + "\u5369", + "\u2F1A", + "\u5382", + "\u2F1B", + "\u53B6", + "\u2F1C", + "\u53C8", + "\u2F1D", + "\u53E3", + "\u2F1E", + "\u56D7", + "\u2F1F", + "\u571F", + "\u2F20", + "\u58EB", + "\u2F21", + "\u5902", + "\u2F22", + "\u590A", + "\u2F23", + "\u5915", + "\u2F24", + "\u5927", + "\u2F25", + "\u5973", + "\u2F26", + "\u5B50", + "\u2F27", + "\u5B80", + "\u2F28", + "\u5BF8", + "\u2F29", + "\u5C0F", + "\u2F2A", + "\u5C22", + "\u2F2B", + "\u5C38", + "\u2F2C", + "\u5C6E", + "\u2F2D", + "\u5C71", + "\u2F2E", + "\u5DDB", + "\u2F2F", + "\u5DE5", + "\u2F30", + "\u5DF1", + "\u2F31", + "\u5DFE", + "\u2F32", + "\u5E72", + "\u2F33", + "\u5E7A", + "\u2F34", + "\u5E7F", + "\u2F35", + "\u5EF4", + "\u2F36", + "\u5EFE", + "\u2F37", + "\u5F0B", + "\u2F38", + "\u5F13", + "\u2F39", + "\u5F50", + "\u2F3A", + "\u5F61", + "\u2F3B", + "\u5F73", + "\u2F3C", + "\u5FC3", + "\u2F3D", + "\u6208", + "\u2F3E", + "\u6236", + "\u2F3F", + "\u624B", + "\u2F40", + "\u652F", + "\u2F41", + "\u6534", + "\u2F42", + "\u6587", + "\u2F43", + "\u6597", + "\u2F44", + "\u65A4", + "\u2F45", + "\u65B9", + "\u2F46", + "\u65E0", + "\u2F47", + "\u65E5", + "\u2F48", + "\u66F0", + "\u2F49", + "\u6708", + "\u2F4A", + "\u6728", + "\u2F4B", + "\u6B20", + "\u2F4C", + "\u6B62", + "\u2F4D", + "\u6B79", + "\u2F4E", + "\u6BB3", + "\u2F4F", + "\u6BCB", + "\u2F50", + "\u6BD4", + "\u2F51", + "\u6BDB", + "\u2F52", + "\u6C0F", + "\u2F53", + "\u6C14", + "\u2F54", + "\u6C34", + "\u2F55", + "\u706B", + "\u2F56", + "\u722A", + "\u2F57", + "\u7236", + "\u2F58", + "\u723B", + "\u2F59", + "\u723F", + "\u2F5A", + "\u7247", + "\u2F5B", + "\u7259", + "\u2F5C", + "\u725B", + "\u2F5D", + "\u72AC", + "\u2F5E", + "\u7384", + "\u2F5F", + "\u7389", + "\u2F60", + "\u74DC", + "\u2F61", + "\u74E6", + "\u2F62", + "\u7518", + "\u2F63", + "\u751F", + "\u2F64", + "\u7528", + "\u2F65", + "\u7530", + "\u2F66", + "\u758B", + "\u2F67", + "\u7592", + "\u2F68", + "\u7676", + "\u2F69", + "\u767D", + "\u2F6A", + "\u76AE", + "\u2F6B", + "\u76BF", + "\u2F6C", + "\u76EE", + "\u2F6D", + "\u77DB", + "\u2F6E", + "\u77E2", + "\u2F6F", + "\u77F3", + "\u2F70", + "\u793A", + "\u2F71", + "\u79B8", + "\u2F72", + "\u79BE", + "\u2F73", + "\u7A74", + "\u2F74", + "\u7ACB", + "\u2F75", + "\u7AF9", + "\u2F76", + "\u7C73", + "\u2F77", + "\u7CF8", + "\u2F78", + "\u7F36", + "\u2F79", + "\u7F51", + "\u2F7A", + "\u7F8A", + "\u2F7B", + "\u7FBD", + "\u2F7C", + "\u8001", + "\u2F7D", + "\u800C", + "\u2F7E", + "\u8012", + "\u2F7F", + "\u8033", + "\u2F80", + "\u807F", + "\u2F81", + "\u8089", + "\u2F82", + "\u81E3", + "\u2F83", + "\u81EA", + "\u2F84", + "\u81F3", + "\u2F85", + "\u81FC", + "\u2F86", + "\u820C", + "\u2F87", + "\u821B", + "\u2F88", + "\u821F", + "\u2F89", + "\u826E", + "\u2F8A", + "\u8272", + "\u2F8B", + "\u8278", + "\u2F8C", + "\u864D", + "\u2F8D", + "\u866B", + "\u2F8E", + "\u8840", + "\u2F8F", + "\u884C", + "\u2F90", + "\u8863", + "\u2F91", + "\u897E", + "\u2F92", + "\u898B", + "\u2F93", + "\u89D2", + "\u2F94", + "\u8A00", + "\u2F95", + "\u8C37", + "\u2F96", + "\u8C46", + "\u2F97", + "\u8C55", + "\u2F98", + "\u8C78", + "\u2F99", + "\u8C9D", + "\u2F9A", + "\u8D64", + "\u2F9B", + "\u8D70", + "\u2F9C", + "\u8DB3", + "\u2F9D", + "\u8EAB", + "\u2F9E", + "\u8ECA", + "\u2F9F", + "\u8F9B", + "\u2FA0", + "\u8FB0", + "\u2FA1", + "\u8FB5", + "\u2FA2", + "\u9091", + "\u2FA3", + "\u9149", + "\u2FA4", + "\u91C6", + "\u2FA5", + "\u91CC", + "\u2FA6", + "\u91D1", + "\u2FA7", + "\u9577", + "\u2FA8", + "\u9580", + "\u2FA9", + "\u961C", + "\u2FAA", + "\u96B6", + "\u2FAB", + "\u96B9", + "\u2FAC", + "\u96E8", + "\u2FAD", + "\u9751", + "\u2FAE", + "\u975E", + "\u2FAF", + "\u9762", + "\u2FB0", + "\u9769", + "\u2FB1", + "\u97CB", + "\u2FB2", + "\u97ED", + "\u2FB3", + "\u97F3", + "\u2FB4", + "\u9801", + "\u2FB5", + "\u98A8", + "\u2FB6", + "\u98DB", + "\u2FB7", + "\u98DF", + "\u2FB8", + "\u9996", + "\u2FB9", + "\u9999", + "\u2FBA", + "\u99AC", + "\u2FBB", + "\u9AA8", + "\u2FBC", + "\u9AD8", + "\u2FBD", + "\u9ADF", + "\u2FBE", + "\u9B25", + "\u2FBF", + "\u9B2F", + "\u2FC0", + "\u9B32", + "\u2FC1", + "\u9B3C", + "\u2FC2", + "\u9B5A", + "\u2FC3", + "\u9CE5", + "\u2FC4", + "\u9E75", + "\u2FC5", + "\u9E7F", + "\u2FC6", + "\u9EA5", + "\u2FC7", + "\u9EBB", + "\u2FC8", + "\u9EC3", + "\u2FC9", + "\u9ECD", + "\u2FCA", + "\u9ED1", + "\u2FCB", + "\u9EF9", + "\u2FCC", + "\u9EFD", + "\u2FCD", + "\u9F0E", + "\u2FCE", + "\u9F13", + "\u2FCF", + "\u9F20", + "\u2FD0", + "\u9F3B", + "\u2FD1", + "\u9F4A", + "\u2FD2", + "\u9F52", + "\u2FD3", + "\u9F8D", + "\u2FD4", + "\u9F9C", + "\u2FD5", + "\u9FA0", + "\u3036", + "\u3012", + "\u3038", + "\u5341", + "\u3039", + "\u5344", + "\u303A", + "\u5345", + "\u309B", + "\u0020\u3099", + "\u309C", + "\u0020\u309A", + "\u3131", + "\u1100", + "\u3132", + "\u1101", + "\u3133", + "\u11AA", + "\u3134", + "\u1102", + "\u3135", + "\u11AC", + "\u3136", + "\u11AD", + "\u3137", + "\u1103", + "\u3138", + "\u1104", + "\u3139", + "\u1105", + "\u313A", + "\u11B0", + "\u313B", + "\u11B1", + "\u313C", + "\u11B2", + "\u313D", + "\u11B3", + "\u313E", + "\u11B4", + "\u313F", + "\u11B5", + "\u3140", + "\u111A", + "\u3141", + "\u1106", + "\u3142", + "\u1107", + "\u3143", + "\u1108", + "\u3144", + "\u1121", + "\u3145", + "\u1109", + "\u3146", + "\u110A", + "\u3147", + "\u110B", + "\u3148", + "\u110C", + "\u3149", + "\u110D", + "\u314A", + "\u110E", + "\u314B", + "\u110F", + "\u314C", + "\u1110", + "\u314D", + "\u1111", + "\u314E", + "\u1112", + "\u314F", + "\u1161", + "\u3150", + "\u1162", + "\u3151", + "\u1163", + "\u3152", + "\u1164", + "\u3153", + "\u1165", + "\u3154", + "\u1166", + "\u3155", + "\u1167", + "\u3156", + "\u1168", + "\u3157", + "\u1169", + "\u3158", + "\u116A", + "\u3159", + "\u116B", + "\u315A", + "\u116C", + "\u315B", + "\u116D", + "\u315C", + "\u116E", + "\u315D", + "\u116F", + "\u315E", + "\u1170", + "\u315F", + "\u1171", + "\u3160", + "\u1172", + "\u3161", + "\u1173", + "\u3162", + "\u1174", + "\u3163", + "\u1175", + "\u3164", + "\u1160", + "\u3165", + "\u1114", + "\u3166", + "\u1115", + "\u3167", + "\u11C7", + "\u3168", + "\u11C8", + "\u3169", + "\u11CC", + "\u316A", + "\u11CE", + "\u316B", + "\u11D3", + "\u316C", + "\u11D7", + "\u316D", + "\u11D9", + "\u316E", + "\u111C", + "\u316F", + "\u11DD", + "\u3170", + "\u11DF", + "\u3171", + "\u111D", + "\u3172", + "\u111E", + "\u3173", + "\u1120", + "\u3174", + "\u1122", + "\u3175", + "\u1123", + "\u3176", + "\u1127", + "\u3177", + "\u1129", + "\u3178", + "\u112B", + "\u3179", + "\u112C", + "\u317A", + "\u112D", + "\u317B", + "\u112E", + "\u317C", + "\u112F", + "\u317D", + "\u1132", + "\u317E", + "\u1136", + "\u317F", + "\u1140", + "\u3180", + "\u1147", + "\u3181", + "\u114C", + "\u3182", + "\u11F1", + "\u3183", + "\u11F2", + "\u3184", + "\u1157", + "\u3185", + "\u1158", + "\u3186", + "\u1159", + "\u3187", + "\u1184", + "\u3188", + "\u1185", + "\u3189", + "\u1188", + "\u318A", + "\u1191", + "\u318B", + "\u1192", + "\u318C", + "\u1194", + "\u318D", + "\u119E", + "\u318E", + "\u11A1", + "\u3200", + "\u0028\u1100\u0029", + "\u3201", + "\u0028\u1102\u0029", + "\u3202", + "\u0028\u1103\u0029", + "\u3203", + "\u0028\u1105\u0029", + "\u3204", + "\u0028\u1106\u0029", + "\u3205", + "\u0028\u1107\u0029", + "\u3206", + "\u0028\u1109\u0029", + "\u3207", + "\u0028\u110B\u0029", + "\u3208", + "\u0028\u110C\u0029", + "\u3209", + "\u0028\u110E\u0029", + "\u320A", + "\u0028\u110F\u0029", + "\u320B", + "\u0028\u1110\u0029", + "\u320C", + "\u0028\u1111\u0029", + "\u320D", + "\u0028\u1112\u0029", + "\u320E", + "\u0028\u1100\u1161\u0029", + "\u320F", + "\u0028\u1102\u1161\u0029", + "\u3210", + "\u0028\u1103\u1161\u0029", + "\u3211", + "\u0028\u1105\u1161\u0029", + "\u3212", + "\u0028\u1106\u1161\u0029", + "\u3213", + "\u0028\u1107\u1161\u0029", + "\u3214", + "\u0028\u1109\u1161\u0029", + "\u3215", + "\u0028\u110B\u1161\u0029", + "\u3216", + "\u0028\u110C\u1161\u0029", + "\u3217", + "\u0028\u110E\u1161\u0029", + "\u3218", + "\u0028\u110F\u1161\u0029", + "\u3219", + "\u0028\u1110\u1161\u0029", + "\u321A", + "\u0028\u1111\u1161\u0029", + "\u321B", + "\u0028\u1112\u1161\u0029", + "\u321C", + "\u0028\u110C\u116E\u0029", + "\u321D", + "\u0028\u110B\u1169\u110C\u1165\u11AB\u0029", + "\u321E", + "\u0028\u110B\u1169\u1112\u116E\u0029", + "\u3220", + "\u0028\u4E00\u0029", + "\u3221", + "\u0028\u4E8C\u0029", + "\u3222", + "\u0028\u4E09\u0029", + "\u3223", + "\u0028\u56DB\u0029", + "\u3224", + "\u0028\u4E94\u0029", + "\u3225", + "\u0028\u516D\u0029", + "\u3226", + "\u0028\u4E03\u0029", + "\u3227", + "\u0028\u516B\u0029", + "\u3228", + "\u0028\u4E5D\u0029", + "\u3229", + "\u0028\u5341\u0029", + "\u322A", + "\u0028\u6708\u0029", + "\u322B", + "\u0028\u706B\u0029", + "\u322C", + "\u0028\u6C34\u0029", + "\u322D", + "\u0028\u6728\u0029", + "\u322E", + "\u0028\u91D1\u0029", + "\u322F", + "\u0028\u571F\u0029", + "\u3230", + "\u0028\u65E5\u0029", + "\u3231", + "\u0028\u682A\u0029", + "\u3232", + "\u0028\u6709\u0029", + "\u3233", + "\u0028\u793E\u0029", + "\u3234", + "\u0028\u540D\u0029", + "\u3235", + "\u0028\u7279\u0029", + "\u3236", + "\u0028\u8CA1\u0029", + "\u3237", + "\u0028\u795D\u0029", + "\u3238", + "\u0028\u52B4\u0029", + "\u3239", + "\u0028\u4EE3\u0029", + "\u323A", + "\u0028\u547C\u0029", + "\u323B", + "\u0028\u5B66\u0029", + "\u323C", + "\u0028\u76E3\u0029", + "\u323D", + "\u0028\u4F01\u0029", + "\u323E", + "\u0028\u8CC7\u0029", + "\u323F", + "\u0028\u5354\u0029", + "\u3240", + "\u0028\u796D\u0029", + "\u3241", + "\u0028\u4F11\u0029", + "\u3242", + "\u0028\u81EA\u0029", + "\u3243", + "\u0028\u81F3\u0029", + "\u32C0", + "\u0031\u6708", + "\u32C1", + "\u0032\u6708", + "\u32C2", + "\u0033\u6708", + "\u32C3", + "\u0034\u6708", + "\u32C4", + "\u0035\u6708", + "\u32C5", + "\u0036\u6708", + "\u32C6", + "\u0037\u6708", + "\u32C7", + "\u0038\u6708", + "\u32C8", + "\u0039\u6708", + "\u32C9", + "\u0031\u0030\u6708", + "\u32CA", + "\u0031\u0031\u6708", + "\u32CB", + "\u0031\u0032\u6708", + "\u3358", + "\u0030\u70B9", + "\u3359", + "\u0031\u70B9", + "\u335A", + "\u0032\u70B9", + "\u335B", + "\u0033\u70B9", + "\u335C", + "\u0034\u70B9", + "\u335D", + "\u0035\u70B9", + "\u335E", + "\u0036\u70B9", + "\u335F", + "\u0037\u70B9", + "\u3360", + "\u0038\u70B9", + "\u3361", + "\u0039\u70B9", + "\u3362", + "\u0031\u0030\u70B9", + "\u3363", + "\u0031\u0031\u70B9", + "\u3364", + "\u0031\u0032\u70B9", + "\u3365", + "\u0031\u0033\u70B9", + "\u3366", + "\u0031\u0034\u70B9", + "\u3367", + "\u0031\u0035\u70B9", + "\u3368", + "\u0031\u0036\u70B9", + "\u3369", + "\u0031\u0037\u70B9", + "\u336A", + "\u0031\u0038\u70B9", + "\u336B", + "\u0031\u0039\u70B9", + "\u336C", + "\u0032\u0030\u70B9", + "\u336D", + "\u0032\u0031\u70B9", + "\u336E", + "\u0032\u0032\u70B9", + "\u336F", + "\u0032\u0033\u70B9", + "\u3370", + "\u0032\u0034\u70B9", + "\u33E0", + "\u0031\u65E5", + "\u33E1", + "\u0032\u65E5", + "\u33E2", + "\u0033\u65E5", + "\u33E3", + "\u0034\u65E5", + "\u33E4", + "\u0035\u65E5", + "\u33E5", + "\u0036\u65E5", + "\u33E6", + "\u0037\u65E5", + "\u33E7", + "\u0038\u65E5", + "\u33E8", + "\u0039\u65E5", + "\u33E9", + "\u0031\u0030\u65E5", + "\u33EA", + "\u0031\u0031\u65E5", + "\u33EB", + "\u0031\u0032\u65E5", + "\u33EC", + "\u0031\u0033\u65E5", + "\u33ED", + "\u0031\u0034\u65E5", + "\u33EE", + "\u0031\u0035\u65E5", + "\u33EF", + "\u0031\u0036\u65E5", + "\u33F0", + "\u0031\u0037\u65E5", + "\u33F1", + "\u0031\u0038\u65E5", + "\u33F2", + "\u0031\u0039\u65E5", + "\u33F3", + "\u0032\u0030\u65E5", + "\u33F4", + "\u0032\u0031\u65E5", + "\u33F5", + "\u0032\u0032\u65E5", + "\u33F6", + "\u0032\u0033\u65E5", + "\u33F7", + "\u0032\u0034\u65E5", + "\u33F8", + "\u0032\u0035\u65E5", + "\u33F9", + "\u0032\u0036\u65E5", + "\u33FA", + "\u0032\u0037\u65E5", + "\u33FB", + "\u0032\u0038\u65E5", + "\u33FC", + "\u0032\u0039\u65E5", + "\u33FD", + "\u0033\u0030\u65E5", + "\u33FE", + "\u0033\u0031\u65E5", + "\uFB00", + "\u0066\u0066", + "\uFB01", + "\u0066\u0069", + "\uFB02", + "\u0066\u006C", + "\uFB03", + "\u0066\u0066\u0069", + "\uFB04", + "\u0066\u0066\u006C", + "\uFB05", + "\u017F\u0074", + "\uFB06", + "\u0073\u0074", + "\uFB13", + "\u0574\u0576", + "\uFB14", + "\u0574\u0565", + "\uFB15", + "\u0574\u056B", + "\uFB16", + "\u057E\u0576", + "\uFB17", + "\u0574\u056D", + "\uFB4F", + "\u05D0\u05DC", + "\uFB50", + "\u0671", + "\uFB51", + "\u0671", + "\uFB52", + "\u067B", + "\uFB53", + "\u067B", + "\uFB54", + "\u067B", + "\uFB55", + "\u067B", + "\uFB56", + "\u067E", + "\uFB57", + "\u067E", + "\uFB58", + "\u067E", + "\uFB59", + "\u067E", + "\uFB5A", + "\u0680", + "\uFB5B", + "\u0680", + "\uFB5C", + "\u0680", + "\uFB5D", + "\u0680", + "\uFB5E", + "\u067A", + "\uFB5F", + "\u067A", + "\uFB60", + "\u067A", + "\uFB61", + "\u067A", + "\uFB62", + "\u067F", + "\uFB63", + "\u067F", + "\uFB64", + "\u067F", + "\uFB65", + "\u067F", + "\uFB66", + "\u0679", + "\uFB67", + "\u0679", + "\uFB68", + "\u0679", + "\uFB69", + "\u0679", + "\uFB6A", + "\u06A4", + "\uFB6B", + "\u06A4", + "\uFB6C", + "\u06A4", + "\uFB6D", + "\u06A4", + "\uFB6E", + "\u06A6", + "\uFB6F", + "\u06A6", + "\uFB70", + "\u06A6", + "\uFB71", + "\u06A6", + "\uFB72", + "\u0684", + "\uFB73", + "\u0684", + "\uFB74", + "\u0684", + "\uFB75", + "\u0684", + "\uFB76", + "\u0683", + "\uFB77", + "\u0683", + "\uFB78", + "\u0683", + "\uFB79", + "\u0683", + "\uFB7A", + "\u0686", + "\uFB7B", + "\u0686", + "\uFB7C", + "\u0686", + "\uFB7D", + "\u0686", + "\uFB7E", + "\u0687", + "\uFB7F", + "\u0687", + "\uFB80", + "\u0687", + "\uFB81", + "\u0687", + "\uFB82", + "\u068D", + "\uFB83", + "\u068D", + "\uFB84", + "\u068C", + "\uFB85", + "\u068C", + "\uFB86", + "\u068E", + "\uFB87", + "\u068E", + "\uFB88", + "\u0688", + "\uFB89", + "\u0688", + "\uFB8A", + "\u0698", + "\uFB8B", + "\u0698", + "\uFB8C", + "\u0691", + "\uFB8D", + "\u0691", + "\uFB8E", + "\u06A9", + "\uFB8F", + "\u06A9", + "\uFB90", + "\u06A9", + "\uFB91", + "\u06A9", + "\uFB92", + "\u06AF", + "\uFB93", + "\u06AF", + "\uFB94", + "\u06AF", + "\uFB95", + "\u06AF", + "\uFB96", + "\u06B3", + "\uFB97", + "\u06B3", + "\uFB98", + "\u06B3", + "\uFB99", + "\u06B3", + "\uFB9A", + "\u06B1", + "\uFB9B", + "\u06B1", + "\uFB9C", + "\u06B1", + "\uFB9D", + "\u06B1", + "\uFB9E", + "\u06BA", + "\uFB9F", + "\u06BA", + "\uFBA0", + "\u06BB", + "\uFBA1", + "\u06BB", + "\uFBA2", + "\u06BB", + "\uFBA3", + "\u06BB", + "\uFBA4", + "\u06C0", + "\uFBA5", + "\u06C0", + "\uFBA6", + "\u06C1", + "\uFBA7", + "\u06C1", + "\uFBA8", + "\u06C1", + "\uFBA9", + "\u06C1", + "\uFBAA", + "\u06BE", + "\uFBAB", + "\u06BE", + "\uFBAC", + "\u06BE", + "\uFBAD", + "\u06BE", + "\uFBAE", + "\u06D2", + "\uFBAF", + "\u06D2", + "\uFBB0", + "\u06D3", + "\uFBB1", + "\u06D3", + "\uFBD3", + "\u06AD", + "\uFBD4", + "\u06AD", + "\uFBD5", + "\u06AD", + "\uFBD6", + "\u06AD", + "\uFBD7", + "\u06C7", + "\uFBD8", + "\u06C7", + "\uFBD9", + "\u06C6", + "\uFBDA", + "\u06C6", + "\uFBDB", + "\u06C8", + "\uFBDC", + "\u06C8", + "\uFBDD", + "\u0677", + "\uFBDE", + "\u06CB", + "\uFBDF", + "\u06CB", + "\uFBE0", + "\u06C5", + "\uFBE1", + "\u06C5", + "\uFBE2", + "\u06C9", + "\uFBE3", + "\u06C9", + "\uFBE4", + "\u06D0", + "\uFBE5", + "\u06D0", + "\uFBE6", + "\u06D0", + "\uFBE7", + "\u06D0", + "\uFBE8", + "\u0649", + "\uFBE9", + "\u0649", + "\uFBEA", + "\u0626\u0627", + "\uFBEB", + "\u0626\u0627", + "\uFBEC", + "\u0626\u06D5", + "\uFBED", + "\u0626\u06D5", + "\uFBEE", + "\u0626\u0648", + "\uFBEF", + "\u0626\u0648", + "\uFBF0", + "\u0626\u06C7", + "\uFBF1", + "\u0626\u06C7", + "\uFBF2", + "\u0626\u06C6", + "\uFBF3", + "\u0626\u06C6", + "\uFBF4", + "\u0626\u06C8", + "\uFBF5", + "\u0626\u06C8", + "\uFBF6", + "\u0626\u06D0", + "\uFBF7", + "\u0626\u06D0", + "\uFBF8", + "\u0626\u06D0", + "\uFBF9", + "\u0626\u0649", + "\uFBFA", + "\u0626\u0649", + "\uFBFB", + "\u0626\u0649", + "\uFBFC", + "\u06CC", + "\uFBFD", + "\u06CC", + "\uFBFE", + "\u06CC", + "\uFBFF", + "\u06CC", + "\uFC00", + "\u0626\u062C", + "\uFC01", + "\u0626\u062D", + "\uFC02", + "\u0626\u0645", + "\uFC03", + "\u0626\u0649", + "\uFC04", + "\u0626\u064A", + "\uFC05", + "\u0628\u062C", + "\uFC06", + "\u0628\u062D", + "\uFC07", + "\u0628\u062E", + "\uFC08", + "\u0628\u0645", + "\uFC09", + "\u0628\u0649", + "\uFC0A", + "\u0628\u064A", + "\uFC0B", + "\u062A\u062C", + "\uFC0C", + "\u062A\u062D", + "\uFC0D", + "\u062A\u062E", + "\uFC0E", + "\u062A\u0645", + "\uFC0F", + "\u062A\u0649", + "\uFC10", + "\u062A\u064A", + "\uFC11", + "\u062B\u062C", + "\uFC12", + "\u062B\u0645", + "\uFC13", + "\u062B\u0649", + "\uFC14", + "\u062B\u064A", + "\uFC15", + "\u062C\u062D", + "\uFC16", + "\u062C\u0645", + "\uFC17", + "\u062D\u062C", + "\uFC18", + "\u062D\u0645", + "\uFC19", + "\u062E\u062C", + "\uFC1A", + "\u062E\u062D", + "\uFC1B", + "\u062E\u0645", + "\uFC1C", + "\u0633\u062C", + "\uFC1D", + "\u0633\u062D", + "\uFC1E", + "\u0633\u062E", + "\uFC1F", + "\u0633\u0645", + "\uFC20", + "\u0635\u062D", + "\uFC21", + "\u0635\u0645", + "\uFC22", + "\u0636\u062C", + "\uFC23", + "\u0636\u062D", + "\uFC24", + "\u0636\u062E", + "\uFC25", + "\u0636\u0645", + "\uFC26", + "\u0637\u062D", + "\uFC27", + "\u0637\u0645", + "\uFC28", + "\u0638\u0645", + "\uFC29", + "\u0639\u062C", + "\uFC2A", + "\u0639\u0645", + "\uFC2B", + "\u063A\u062C", + "\uFC2C", + "\u063A\u0645", + "\uFC2D", + "\u0641\u062C", + "\uFC2E", + "\u0641\u062D", + "\uFC2F", + "\u0641\u062E", + "\uFC30", + "\u0641\u0645", + "\uFC31", + "\u0641\u0649", + "\uFC32", + "\u0641\u064A", + "\uFC33", + "\u0642\u062D", + "\uFC34", + "\u0642\u0645", + "\uFC35", + "\u0642\u0649", + "\uFC36", + "\u0642\u064A", + "\uFC37", + "\u0643\u0627", + "\uFC38", + "\u0643\u062C", + "\uFC39", + "\u0643\u062D", + "\uFC3A", + "\u0643\u062E", + "\uFC3B", + "\u0643\u0644", + "\uFC3C", + "\u0643\u0645", + "\uFC3D", + "\u0643\u0649", + "\uFC3E", + "\u0643\u064A", + "\uFC3F", + "\u0644\u062C", + "\uFC40", + "\u0644\u062D", + "\uFC41", + "\u0644\u062E", + "\uFC42", + "\u0644\u0645", + "\uFC43", + "\u0644\u0649", + "\uFC44", + "\u0644\u064A", + "\uFC45", + "\u0645\u062C", + "\uFC46", + "\u0645\u062D", + "\uFC47", + "\u0645\u062E", + "\uFC48", + "\u0645\u0645", + "\uFC49", + "\u0645\u0649", + "\uFC4A", + "\u0645\u064A", + "\uFC4B", + "\u0646\u062C", + "\uFC4C", + "\u0646\u062D", + "\uFC4D", + "\u0646\u062E", + "\uFC4E", + "\u0646\u0645", + "\uFC4F", + "\u0646\u0649", + "\uFC50", + "\u0646\u064A", + "\uFC51", + "\u0647\u062C", + "\uFC52", + "\u0647\u0645", + "\uFC53", + "\u0647\u0649", + "\uFC54", + "\u0647\u064A", + "\uFC55", + "\u064A\u062C", + "\uFC56", + "\u064A\u062D", + "\uFC57", + "\u064A\u062E", + "\uFC58", + "\u064A\u0645", + "\uFC59", + "\u064A\u0649", + "\uFC5A", + "\u064A\u064A", + "\uFC5B", + "\u0630\u0670", + "\uFC5C", + "\u0631\u0670", + "\uFC5D", + "\u0649\u0670", + "\uFC5E", + "\u0020\u064C\u0651", + "\uFC5F", + "\u0020\u064D\u0651", + "\uFC60", + "\u0020\u064E\u0651", + "\uFC61", + "\u0020\u064F\u0651", + "\uFC62", + "\u0020\u0650\u0651", + "\uFC63", + "\u0020\u0651\u0670", + "\uFC64", + "\u0626\u0631", + "\uFC65", + "\u0626\u0632", + "\uFC66", + "\u0626\u0645", + "\uFC67", + "\u0626\u0646", + "\uFC68", + "\u0626\u0649", + "\uFC69", + "\u0626\u064A", + "\uFC6A", + "\u0628\u0631", + "\uFC6B", + "\u0628\u0632", + "\uFC6C", + "\u0628\u0645", + "\uFC6D", + "\u0628\u0646", + "\uFC6E", + "\u0628\u0649", + "\uFC6F", + "\u0628\u064A", + "\uFC70", + "\u062A\u0631", + "\uFC71", + "\u062A\u0632", + "\uFC72", + "\u062A\u0645", + "\uFC73", + "\u062A\u0646", + "\uFC74", + "\u062A\u0649", + "\uFC75", + "\u062A\u064A", + "\uFC76", + "\u062B\u0631", + "\uFC77", + "\u062B\u0632", + "\uFC78", + "\u062B\u0645", + "\uFC79", + "\u062B\u0646", + "\uFC7A", + "\u062B\u0649", + "\uFC7B", + "\u062B\u064A", + "\uFC7C", + "\u0641\u0649", + "\uFC7D", + "\u0641\u064A", + "\uFC7E", + "\u0642\u0649", + "\uFC7F", + "\u0642\u064A", + "\uFC80", + "\u0643\u0627", + "\uFC81", + "\u0643\u0644", + "\uFC82", + "\u0643\u0645", + "\uFC83", + "\u0643\u0649", + "\uFC84", + "\u0643\u064A", + "\uFC85", + "\u0644\u0645", + "\uFC86", + "\u0644\u0649", + "\uFC87", + "\u0644\u064A", + "\uFC88", + "\u0645\u0627", + "\uFC89", + "\u0645\u0645", + "\uFC8A", + "\u0646\u0631", + "\uFC8B", + "\u0646\u0632", + "\uFC8C", + "\u0646\u0645", + "\uFC8D", + "\u0646\u0646", + "\uFC8E", + "\u0646\u0649", + "\uFC8F", + "\u0646\u064A", + "\uFC90", + "\u0649\u0670", + "\uFC91", + "\u064A\u0631", + "\uFC92", + "\u064A\u0632", + "\uFC93", + "\u064A\u0645", + "\uFC94", + "\u064A\u0646", + "\uFC95", + "\u064A\u0649", + "\uFC96", + "\u064A\u064A", + "\uFC97", + "\u0626\u062C", + "\uFC98", + "\u0626\u062D", + "\uFC99", + "\u0626\u062E", + "\uFC9A", + "\u0626\u0645", + "\uFC9B", + "\u0626\u0647", + "\uFC9C", + "\u0628\u062C", + "\uFC9D", + "\u0628\u062D", + "\uFC9E", + "\u0628\u062E", + "\uFC9F", + "\u0628\u0645", + "\uFCA0", + "\u0628\u0647", + "\uFCA1", + "\u062A\u062C", + "\uFCA2", + "\u062A\u062D", + "\uFCA3", + "\u062A\u062E", + "\uFCA4", + "\u062A\u0645", + "\uFCA5", + "\u062A\u0647", + "\uFCA6", + "\u062B\u0645", + "\uFCA7", + "\u062C\u062D", + "\uFCA8", + "\u062C\u0645", + "\uFCA9", + "\u062D\u062C", + "\uFCAA", + "\u062D\u0645", + "\uFCAB", + "\u062E\u062C", + "\uFCAC", + "\u062E\u0645", + "\uFCAD", + "\u0633\u062C", + "\uFCAE", + "\u0633\u062D", + "\uFCAF", + "\u0633\u062E", + "\uFCB0", + "\u0633\u0645", + "\uFCB1", + "\u0635\u062D", + "\uFCB2", + "\u0635\u062E", + "\uFCB3", + "\u0635\u0645", + "\uFCB4", + "\u0636\u062C", + "\uFCB5", + "\u0636\u062D", + "\uFCB6", + "\u0636\u062E", + "\uFCB7", + "\u0636\u0645", + "\uFCB8", + "\u0637\u062D", + "\uFCB9", + "\u0638\u0645", + "\uFCBA", + "\u0639\u062C", + "\uFCBB", + "\u0639\u0645", + "\uFCBC", + "\u063A\u062C", + "\uFCBD", + "\u063A\u0645", + "\uFCBE", + "\u0641\u062C", + "\uFCBF", + "\u0641\u062D", + "\uFCC0", + "\u0641\u062E", + "\uFCC1", + "\u0641\u0645", + "\uFCC2", + "\u0642\u062D", + "\uFCC3", + "\u0642\u0645", + "\uFCC4", + "\u0643\u062C", + "\uFCC5", + "\u0643\u062D", + "\uFCC6", + "\u0643\u062E", + "\uFCC7", + "\u0643\u0644", + "\uFCC8", + "\u0643\u0645", + "\uFCC9", + "\u0644\u062C", + "\uFCCA", + "\u0644\u062D", + "\uFCCB", + "\u0644\u062E", + "\uFCCC", + "\u0644\u0645", + "\uFCCD", + "\u0644\u0647", + "\uFCCE", + "\u0645\u062C", + "\uFCCF", + "\u0645\u062D", + "\uFCD0", + "\u0645\u062E", + "\uFCD1", + "\u0645\u0645", + "\uFCD2", + "\u0646\u062C", + "\uFCD3", + "\u0646\u062D", + "\uFCD4", + "\u0646\u062E", + "\uFCD5", + "\u0646\u0645", + "\uFCD6", + "\u0646\u0647", + "\uFCD7", + "\u0647\u062C", + "\uFCD8", + "\u0647\u0645", + "\uFCD9", + "\u0647\u0670", + "\uFCDA", + "\u064A\u062C", + "\uFCDB", + "\u064A\u062D", + "\uFCDC", + "\u064A\u062E", + "\uFCDD", + "\u064A\u0645", + "\uFCDE", + "\u064A\u0647", + "\uFCDF", + "\u0626\u0645", + "\uFCE0", + "\u0626\u0647", + "\uFCE1", + "\u0628\u0645", + "\uFCE2", + "\u0628\u0647", + "\uFCE3", + "\u062A\u0645", + "\uFCE4", + "\u062A\u0647", + "\uFCE5", + "\u062B\u0645", + "\uFCE6", + "\u062B\u0647", + "\uFCE7", + "\u0633\u0645", + "\uFCE8", + "\u0633\u0647", + "\uFCE9", + "\u0634\u0645", + "\uFCEA", + "\u0634\u0647", + "\uFCEB", + "\u0643\u0644", + "\uFCEC", + "\u0643\u0645", + "\uFCED", + "\u0644\u0645", + "\uFCEE", + "\u0646\u0645", + "\uFCEF", + "\u0646\u0647", + "\uFCF0", + "\u064A\u0645", + "\uFCF1", + "\u064A\u0647", + "\uFCF2", + "\u0640\u064E\u0651", + "\uFCF3", + "\u0640\u064F\u0651", + "\uFCF4", + "\u0640\u0650\u0651", + "\uFCF5", + "\u0637\u0649", + "\uFCF6", + "\u0637\u064A", + "\uFCF7", + "\u0639\u0649", + "\uFCF8", + "\u0639\u064A", + "\uFCF9", + "\u063A\u0649", + "\uFCFA", + "\u063A\u064A", + "\uFCFB", + "\u0633\u0649", + "\uFCFC", + "\u0633\u064A", + "\uFCFD", + "\u0634\u0649", + "\uFCFE", + "\u0634\u064A", + "\uFCFF", + "\u062D\u0649", + "\uFD00", + "\u062D\u064A", + "\uFD01", + "\u062C\u0649", + "\uFD02", + "\u062C\u064A", + "\uFD03", + "\u062E\u0649", + "\uFD04", + "\u062E\u064A", + "\uFD05", + "\u0635\u0649", + "\uFD06", + "\u0635\u064A", + "\uFD07", + "\u0636\u0649", + "\uFD08", + "\u0636\u064A", + "\uFD09", + "\u0634\u062C", + "\uFD0A", + "\u0634\u062D", + "\uFD0B", + "\u0634\u062E", + "\uFD0C", + "\u0634\u0645", + "\uFD0D", + "\u0634\u0631", + "\uFD0E", + "\u0633\u0631", + "\uFD0F", + "\u0635\u0631", + "\uFD10", + "\u0636\u0631", + "\uFD11", + "\u0637\u0649", + "\uFD12", + "\u0637\u064A", + "\uFD13", + "\u0639\u0649", + "\uFD14", + "\u0639\u064A", + "\uFD15", + "\u063A\u0649", + "\uFD16", + "\u063A\u064A", + "\uFD17", + "\u0633\u0649", + "\uFD18", + "\u0633\u064A", + "\uFD19", + "\u0634\u0649", + "\uFD1A", + "\u0634\u064A", + "\uFD1B", + "\u062D\u0649", + "\uFD1C", + "\u062D\u064A", + "\uFD1D", + "\u062C\u0649", + "\uFD1E", + "\u062C\u064A", + "\uFD1F", + "\u062E\u0649", + "\uFD20", + "\u062E\u064A", + "\uFD21", + "\u0635\u0649", + "\uFD22", + "\u0635\u064A", + "\uFD23", + "\u0636\u0649", + "\uFD24", + "\u0636\u064A", + "\uFD25", + "\u0634\u062C", + "\uFD26", + "\u0634\u062D", + "\uFD27", + "\u0634\u062E", + "\uFD28", + "\u0634\u0645", + "\uFD29", + "\u0634\u0631", + "\uFD2A", + "\u0633\u0631", + "\uFD2B", + "\u0635\u0631", + "\uFD2C", + "\u0636\u0631", + "\uFD2D", + "\u0634\u062C", + "\uFD2E", + "\u0634\u062D", + "\uFD2F", + "\u0634\u062E", + "\uFD30", + "\u0634\u0645", + "\uFD31", + "\u0633\u0647", + "\uFD32", + "\u0634\u0647", + "\uFD33", + "\u0637\u0645", + "\uFD34", + "\u0633\u062C", + "\uFD35", + "\u0633\u062D", + "\uFD36", + "\u0633\u062E", + "\uFD37", + "\u0634\u062C", + "\uFD38", + "\u0634\u062D", + "\uFD39", + "\u0634\u062E", + "\uFD3A", + "\u0637\u0645", + "\uFD3B", + "\u0638\u0645", + "\uFD3C", + "\u0627\u064B", + "\uFD3D", + "\u0627\u064B", + "\uFD50", + "\u062A\u062C\u0645", + "\uFD51", + "\u062A\u062D\u062C", + "\uFD52", + "\u062A\u062D\u062C", + "\uFD53", + "\u062A\u062D\u0645", + "\uFD54", + "\u062A\u062E\u0645", + "\uFD55", + "\u062A\u0645\u062C", + "\uFD56", + "\u062A\u0645\u062D", + "\uFD57", + "\u062A\u0645\u062E", + "\uFD58", + "\u062C\u0645\u062D", + "\uFD59", + "\u062C\u0645\u062D", + "\uFD5A", + "\u062D\u0645\u064A", + "\uFD5B", + "\u062D\u0645\u0649", + "\uFD5C", + "\u0633\u062D\u062C", + "\uFD5D", + "\u0633\u062C\u062D", + "\uFD5E", + "\u0633\u062C\u0649", + "\uFD5F", + "\u0633\u0645\u062D", + "\uFD60", + "\u0633\u0645\u062D", + "\uFD61", + "\u0633\u0645\u062C", + "\uFD62", + "\u0633\u0645\u0645", + "\uFD63", + "\u0633\u0645\u0645", + "\uFD64", + "\u0635\u062D\u062D", + "\uFD65", + "\u0635\u062D\u062D", + "\uFD66", + "\u0635\u0645\u0645", + "\uFD67", + "\u0634\u062D\u0645", + "\uFD68", + "\u0634\u062D\u0645", + "\uFD69", + "\u0634\u062C\u064A", + "\uFD6A", + "\u0634\u0645\u062E", + "\uFD6B", + "\u0634\u0645\u062E", + "\uFD6C", + "\u0634\u0645\u0645", + "\uFD6D", + "\u0634\u0645\u0645", + "\uFD6E", + "\u0636\u062D\u0649", + "\uFD6F", + "\u0636\u062E\u0645", + "\uFD70", + "\u0636\u062E\u0645", + "\uFD71", + "\u0637\u0645\u062D", + "\uFD72", + "\u0637\u0645\u062D", + "\uFD73", + "\u0637\u0645\u0645", + "\uFD74", + "\u0637\u0645\u064A", + "\uFD75", + "\u0639\u062C\u0645", + "\uFD76", + "\u0639\u0645\u0645", + "\uFD77", + "\u0639\u0645\u0645", + "\uFD78", + "\u0639\u0645\u0649", + "\uFD79", + "\u063A\u0645\u0645", + "\uFD7A", + "\u063A\u0645\u064A", + "\uFD7B", + "\u063A\u0645\u0649", + "\uFD7C", + "\u0641\u062E\u0645", + "\uFD7D", + "\u0641\u062E\u0645", + "\uFD7E", + "\u0642\u0645\u062D", + "\uFD7F", + "\u0642\u0645\u0645", + "\uFD80", + "\u0644\u062D\u0645", + "\uFD81", + "\u0644\u062D\u064A", + "\uFD82", + "\u0644\u062D\u0649", + "\uFD83", + "\u0644\u062C\u062C", + "\uFD84", + "\u0644\u062C\u062C", + "\uFD85", + "\u0644\u062E\u0645", + "\uFD86", + "\u0644\u062E\u0645", + "\uFD87", + "\u0644\u0645\u062D", + "\uFD88", + "\u0644\u0645\u062D", + "\uFD89", + "\u0645\u062D\u062C", + "\uFD8A", + "\u0645\u062D\u0645", + "\uFD8B", + "\u0645\u062D\u064A", + "\uFD8C", + "\u0645\u062C\u062D", + "\uFD8D", + "\u0645\u062C\u0645", + "\uFD8E", + "\u0645\u062E\u062C", + "\uFD8F", + "\u0645\u062E\u0645", + "\uFD92", + "\u0645\u062C\u062E", + "\uFD93", + "\u0647\u0645\u062C", + "\uFD94", + "\u0647\u0645\u0645", + "\uFD95", + "\u0646\u062D\u0645", + "\uFD96", + "\u0646\u062D\u0649", + "\uFD97", + "\u0646\u062C\u0645", + "\uFD98", + "\u0646\u062C\u0645", + "\uFD99", + "\u0646\u062C\u0649", + "\uFD9A", + "\u0646\u0645\u064A", + "\uFD9B", + "\u0646\u0645\u0649", + "\uFD9C", + "\u064A\u0645\u0645", + "\uFD9D", + "\u064A\u0645\u0645", + "\uFD9E", + "\u0628\u062E\u064A", + "\uFD9F", + "\u062A\u062C\u064A", + "\uFDA0", + "\u062A\u062C\u0649", + "\uFDA1", + "\u062A\u062E\u064A", + "\uFDA2", + "\u062A\u062E\u0649", + "\uFDA3", + "\u062A\u0645\u064A", + "\uFDA4", + "\u062A\u0645\u0649", + "\uFDA5", + "\u062C\u0645\u064A", + "\uFDA6", + "\u062C\u062D\u0649", + "\uFDA7", + "\u062C\u0645\u0649", + "\uFDA8", + "\u0633\u062E\u0649", + "\uFDA9", + "\u0635\u062D\u064A", + "\uFDAA", + "\u0634\u062D\u064A", + "\uFDAB", + "\u0636\u062D\u064A", + "\uFDAC", + "\u0644\u062C\u064A", + "\uFDAD", + "\u0644\u0645\u064A", + "\uFDAE", + "\u064A\u062D\u064A", + "\uFDAF", + "\u064A\u062C\u064A", + "\uFDB0", + "\u064A\u0645\u064A", + "\uFDB1", + "\u0645\u0645\u064A", + "\uFDB2", + "\u0642\u0645\u064A", + "\uFDB3", + "\u0646\u062D\u064A", + "\uFDB4", + "\u0642\u0645\u062D", + "\uFDB5", + "\u0644\u062D\u0645", + "\uFDB6", + "\u0639\u0645\u064A", + "\uFDB7", + "\u0643\u0645\u064A", + "\uFDB8", + "\u0646\u062C\u062D", + "\uFDB9", + "\u0645\u062E\u064A", + "\uFDBA", + "\u0644\u062C\u0645", + "\uFDBB", + "\u0643\u0645\u0645", + "\uFDBC", + "\u0644\u062C\u0645", + "\uFDBD", + "\u0646\u062C\u062D", + "\uFDBE", + "\u062C\u062D\u064A", + "\uFDBF", + "\u062D\u062C\u064A", + "\uFDC0", + "\u0645\u062C\u064A", + "\uFDC1", + "\u0641\u0645\u064A", + "\uFDC2", + "\u0628\u062D\u064A", + "\uFDC3", + "\u0643\u0645\u0645", + "\uFDC4", + "\u0639\u062C\u0645", + "\uFDC5", + "\u0635\u0645\u0645", + "\uFDC6", + "\u0633\u062E\u064A", + "\uFDC7", + "\u0646\u062C\u064A", + "\uFE49", + "\u203E", + "\uFE4A", + "\u203E", + "\uFE4B", + "\u203E", + "\uFE4C", + "\u203E", + "\uFE4D", + "\u005F", + "\uFE4E", + "\u005F", + "\uFE4F", + "\u005F", + "\uFE80", + "\u0621", + "\uFE81", + "\u0622", + "\uFE82", + "\u0622", + "\uFE83", + "\u0623", + "\uFE84", + "\u0623", + "\uFE85", + "\u0624", + "\uFE86", + "\u0624", + "\uFE87", + "\u0625", + "\uFE88", + "\u0625", + "\uFE89", + "\u0626", + "\uFE8A", + "\u0626", + "\uFE8B", + "\u0626", + "\uFE8C", + "\u0626", + "\uFE8D", + "\u0627", + "\uFE8E", + "\u0627", + "\uFE8F", + "\u0628", + "\uFE90", + "\u0628", + "\uFE91", + "\u0628", + "\uFE92", + "\u0628", + "\uFE93", + "\u0629", + "\uFE94", + "\u0629", + "\uFE95", + "\u062A", + "\uFE96", + "\u062A", + "\uFE97", + "\u062A", + "\uFE98", + "\u062A", + "\uFE99", + "\u062B", + "\uFE9A", + "\u062B", + "\uFE9B", + "\u062B", + "\uFE9C", + "\u062B", + "\uFE9D", + "\u062C", + "\uFE9E", + "\u062C", + "\uFE9F", + "\u062C", + "\uFEA0", + "\u062C", + "\uFEA1", + "\u062D", + "\uFEA2", + "\u062D", + "\uFEA3", + "\u062D", + "\uFEA4", + "\u062D", + "\uFEA5", + "\u062E", + "\uFEA6", + "\u062E", + "\uFEA7", + "\u062E", + "\uFEA8", + "\u062E", + "\uFEA9", + "\u062F", + "\uFEAA", + "\u062F", + "\uFEAB", + "\u0630", + "\uFEAC", + "\u0630", + "\uFEAD", + "\u0631", + "\uFEAE", + "\u0631", + "\uFEAF", + "\u0632", + "\uFEB0", + "\u0632", + "\uFEB1", + "\u0633", + "\uFEB2", + "\u0633", + "\uFEB3", + "\u0633", + "\uFEB4", + "\u0633", + "\uFEB5", + "\u0634", + "\uFEB6", + "\u0634", + "\uFEB7", + "\u0634", + "\uFEB8", + "\u0634", + "\uFEB9", + "\u0635", + "\uFEBA", + "\u0635", + "\uFEBB", + "\u0635", + "\uFEBC", + "\u0635", + "\uFEBD", + "\u0636", + "\uFEBE", + "\u0636", + "\uFEBF", + "\u0636", + "\uFEC0", + "\u0636", + "\uFEC1", + "\u0637", + "\uFEC2", + "\u0637", + "\uFEC3", + "\u0637", + "\uFEC4", + "\u0637", + "\uFEC5", + "\u0638", + "\uFEC6", + "\u0638", + "\uFEC7", + "\u0638", + "\uFEC8", + "\u0638", + "\uFEC9", + "\u0639", + "\uFECA", + "\u0639", + "\uFECB", + "\u0639", + "\uFECC", + "\u0639", + "\uFECD", + "\u063A", + "\uFECE", + "\u063A", + "\uFECF", + "\u063A", + "\uFED0", + "\u063A", + "\uFED1", + "\u0641", + "\uFED2", + "\u0641", + "\uFED3", + "\u0641", + "\uFED4", + "\u0641", + "\uFED5", + "\u0642", + "\uFED6", + "\u0642", + "\uFED7", + "\u0642", + "\uFED8", + "\u0642", + "\uFED9", + "\u0643", + "\uFEDA", + "\u0643", + "\uFEDB", + "\u0643", + "\uFEDC", + "\u0643", + "\uFEDD", + "\u0644", + "\uFEDE", + "\u0644", + "\uFEDF", + "\u0644", + "\uFEE0", + "\u0644", + "\uFEE1", + "\u0645", + "\uFEE2", + "\u0645", + "\uFEE3", + "\u0645", + "\uFEE4", + "\u0645", + "\uFEE5", + "\u0646", + "\uFEE6", + "\u0646", + "\uFEE7", + "\u0646", + "\uFEE8", + "\u0646", + "\uFEE9", + "\u0647", + "\uFEEA", + "\u0647", + "\uFEEB", + "\u0647", + "\uFEEC", + "\u0647", + "\uFEED", + "\u0648", + "\uFEEE", + "\u0648", + "\uFEEF", + "\u0649", + "\uFEF0", + "\u0649", + "\uFEF1", + "\u064A", + "\uFEF2", + "\u064A", + "\uFEF3", + "\u064A", + "\uFEF4", + "\u064A", + "\uFEF5", + "\u0644\u0622", + "\uFEF6", + "\u0644\u0622", + "\uFEF7", + "\u0644\u0623", + "\uFEF8", + "\u0644\u0623", + "\uFEF9", + "\u0644\u0625", + "\uFEFA", + "\u0644\u0625", + "\uFEFB", + "\u0644\u0627", + "\uFEFC", + "\u0644\u0627" + ]; +}); +function reverseIfRtl(chars) { + const charsLength = chars.length; + if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) { + return chars; + } + const buf = []; + for (let ii = charsLength - 1; ii >= 0; ii--) { + buf.push(chars[ii]); + } + return buf.join(""); +} +const SpecialCharRegExp = new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$", "u"); +const CategoryCache = new Map(); +function getCharUnicodeCategory(char) { + const cachedCategory = CategoryCache.get(char); + if (cachedCategory) { + return cachedCategory; + } + const groups = char.match(SpecialCharRegExp); + const category = { + isWhitespace: !!(groups && groups[1]), + isZeroWidthDiacritic: !!(groups && groups[2]), + isInvisibleFormatMark: !!(groups && groups[3]) + }; + CategoryCache.set(char, category); + return category; +} +function clearUnicodeCaches() { + CategoryCache.clear(); +} + + +/***/ }), +/* 166 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.getSupplementalGlyphMapForCalibri = exports.getSupplementalGlyphMapForArialBlack = exports.getGlyphMapForStandardFonts = exports.getSymbolsFonts = exports.getSerifFonts = exports.getNonStdFontMap = exports.getStdFontMap = void 0; +})); +exports.getSerifFonts = exports.getNonStdFontMap = exports.getGlyphMapForStandardFonts = exports.getFontNameToFileMap = void 0; +exports.getStandardFontName = getStandardFontName; +exports.getSymbolsFonts = exports.getSupplementalGlyphMapForCalibri = exports.getSupplementalGlyphMapForArialBlack = exports.getStdFontMap = void 0; -var _core_utils = __w_pdfjs_require__(154); +var _core_utils = __w_pdfjs_require__(131); -var getStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) { - t['ArialNarrow'] = 'Helvetica'; - t['ArialNarrow-Bold'] = 'Helvetica-Bold'; - t['ArialNarrow-BoldItalic'] = 'Helvetica-BoldOblique'; - t['ArialNarrow-Italic'] = 'Helvetica-Oblique'; - t['ArialBlack'] = 'Helvetica'; - t['ArialBlack-Bold'] = 'Helvetica-Bold'; - t['ArialBlack-BoldItalic'] = 'Helvetica-BoldOblique'; - t['ArialBlack-Italic'] = 'Helvetica-Oblique'; - t['Arial-Black'] = 'Helvetica'; - t['Arial-Black-Bold'] = 'Helvetica-Bold'; - t['Arial-Black-BoldItalic'] = 'Helvetica-BoldOblique'; - t['Arial-Black-Italic'] = 'Helvetica-Oblique'; - t['Arial'] = 'Helvetica'; - t['Arial-Bold'] = 'Helvetica-Bold'; - t['Arial-BoldItalic'] = 'Helvetica-BoldOblique'; - t['Arial-Italic'] = 'Helvetica-Oblique'; - t['Arial-BoldItalicMT'] = 'Helvetica-BoldOblique'; - t['Arial-BoldMT'] = 'Helvetica-Bold'; - t['Arial-ItalicMT'] = 'Helvetica-Oblique'; - t['ArialMT'] = 'Helvetica'; - t['Courier-Bold'] = 'Courier-Bold'; - t['Courier-BoldItalic'] = 'Courier-BoldOblique'; - t['Courier-Italic'] = 'Courier-Oblique'; - t['CourierNew'] = 'Courier'; - t['CourierNew-Bold'] = 'Courier-Bold'; - t['CourierNew-BoldItalic'] = 'Courier-BoldOblique'; - t['CourierNew-Italic'] = 'Courier-Oblique'; - t['CourierNewPS-BoldItalicMT'] = 'Courier-BoldOblique'; - t['CourierNewPS-BoldMT'] = 'Courier-Bold'; - t['CourierNewPS-ItalicMT'] = 'Courier-Oblique'; - t['CourierNewPSMT'] = 'Courier'; - t['Helvetica'] = 'Helvetica'; - t['Helvetica-Bold'] = 'Helvetica-Bold'; - t['Helvetica-BoldItalic'] = 'Helvetica-BoldOblique'; - t['Helvetica-BoldOblique'] = 'Helvetica-BoldOblique'; - t['Helvetica-Italic'] = 'Helvetica-Oblique'; - t['Helvetica-Oblique'] = 'Helvetica-Oblique'; - t['SegoeUISymbol'] = 'Helvetica'; - t['Symbol-Bold'] = 'Symbol'; - t['Symbol-BoldItalic'] = 'Symbol'; - t['Symbol-Italic'] = 'Symbol'; - t['TimesNewRoman'] = 'Times-Roman'; - t['TimesNewRoman-Bold'] = 'Times-Bold'; - t['TimesNewRoman-BoldItalic'] = 'Times-BoldItalic'; - t['TimesNewRoman-Italic'] = 'Times-Italic'; - t['TimesNewRomanPS'] = 'Times-Roman'; - t['TimesNewRomanPS-Bold'] = 'Times-Bold'; - t['TimesNewRomanPS-BoldItalic'] = 'Times-BoldItalic'; - t['TimesNewRomanPS-BoldItalicMT'] = 'Times-BoldItalic'; - t['TimesNewRomanPS-BoldMT'] = 'Times-Bold'; - t['TimesNewRomanPS-Italic'] = 'Times-Italic'; - t['TimesNewRomanPS-ItalicMT'] = 'Times-Italic'; - t['TimesNewRomanPSMT'] = 'Times-Roman'; - t['TimesNewRomanPSMT-Bold'] = 'Times-Bold'; - t['TimesNewRomanPSMT-BoldItalic'] = 'Times-BoldItalic'; - t['TimesNewRomanPSMT-Italic'] = 'Times-Italic'; +var _fonts_utils = __w_pdfjs_require__(163); + +const getStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) { + t["Times-Roman"] = "Times-Roman"; + t.Helvetica = "Helvetica"; + t.Courier = "Courier"; + t.Symbol = "Symbol"; + t["Times-Bold"] = "Times-Bold"; + t["Helvetica-Bold"] = "Helvetica-Bold"; + t["Courier-Bold"] = "Courier-Bold"; + t.ZapfDingbats = "ZapfDingbats"; + t["Times-Italic"] = "Times-Italic"; + t["Helvetica-Oblique"] = "Helvetica-Oblique"; + t["Courier-Oblique"] = "Courier-Oblique"; + t["Times-BoldItalic"] = "Times-BoldItalic"; + t["Helvetica-BoldOblique"] = "Helvetica-BoldOblique"; + t["Courier-BoldOblique"] = "Courier-BoldOblique"; + t.ArialNarrow = "Helvetica"; + t["ArialNarrow-Bold"] = "Helvetica-Bold"; + t["ArialNarrow-BoldItalic"] = "Helvetica-BoldOblique"; + t["ArialNarrow-Italic"] = "Helvetica-Oblique"; + t.ArialBlack = "Helvetica"; + t["ArialBlack-Bold"] = "Helvetica-Bold"; + t["ArialBlack-BoldItalic"] = "Helvetica-BoldOblique"; + t["ArialBlack-Italic"] = "Helvetica-Oblique"; + t["Arial-Black"] = "Helvetica"; + t["Arial-Black-Bold"] = "Helvetica-Bold"; + t["Arial-Black-BoldItalic"] = "Helvetica-BoldOblique"; + t["Arial-Black-Italic"] = "Helvetica-Oblique"; + t.Arial = "Helvetica"; + t["Arial-Bold"] = "Helvetica-Bold"; + t["Arial-BoldItalic"] = "Helvetica-BoldOblique"; + t["Arial-Italic"] = "Helvetica-Oblique"; + t.ArialMT = "Helvetica"; + t["Arial-BoldItalicMT"] = "Helvetica-BoldOblique"; + t["Arial-BoldMT"] = "Helvetica-Bold"; + t["Arial-ItalicMT"] = "Helvetica-Oblique"; + t.ArialUnicodeMS = "Helvetica"; + t["ArialUnicodeMS-Bold"] = "Helvetica-Bold"; + t["ArialUnicodeMS-BoldItalic"] = "Helvetica-BoldOblique"; + t["ArialUnicodeMS-Italic"] = "Helvetica-Oblique"; + t["Courier-BoldItalic"] = "Courier-BoldOblique"; + t["Courier-Italic"] = "Courier-Oblique"; + t.CourierNew = "Courier"; + t["CourierNew-Bold"] = "Courier-Bold"; + t["CourierNew-BoldItalic"] = "Courier-BoldOblique"; + t["CourierNew-Italic"] = "Courier-Oblique"; + t["CourierNewPS-BoldItalicMT"] = "Courier-BoldOblique"; + t["CourierNewPS-BoldMT"] = "Courier-Bold"; + t["CourierNewPS-ItalicMT"] = "Courier-Oblique"; + t.CourierNewPSMT = "Courier"; + t["Helvetica-BoldItalic"] = "Helvetica-BoldOblique"; + t["Helvetica-Italic"] = "Helvetica-Oblique"; + t["Symbol-Bold"] = "Symbol"; + t["Symbol-BoldItalic"] = "Symbol"; + t["Symbol-Italic"] = "Symbol"; + t.TimesNewRoman = "Times-Roman"; + t["TimesNewRoman-Bold"] = "Times-Bold"; + t["TimesNewRoman-BoldItalic"] = "Times-BoldItalic"; + t["TimesNewRoman-Italic"] = "Times-Italic"; + t.TimesNewRomanPS = "Times-Roman"; + t["TimesNewRomanPS-Bold"] = "Times-Bold"; + t["TimesNewRomanPS-BoldItalic"] = "Times-BoldItalic"; + t["TimesNewRomanPS-BoldItalicMT"] = "Times-BoldItalic"; + t["TimesNewRomanPS-BoldMT"] = "Times-Bold"; + t["TimesNewRomanPS-Italic"] = "Times-Italic"; + t["TimesNewRomanPS-ItalicMT"] = "Times-Italic"; + t.TimesNewRomanPSMT = "Times-Roman"; + t["TimesNewRomanPSMT-Bold"] = "Times-Bold"; + t["TimesNewRomanPSMT-BoldItalic"] = "Times-BoldItalic"; + t["TimesNewRomanPSMT-Italic"] = "Times-Italic"; }); exports.getStdFontMap = getStdFontMap; -var getNonStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) { - t['Calibri'] = 'Helvetica'; - t['Calibri-Bold'] = 'Helvetica-Bold'; - t['Calibri-BoldItalic'] = 'Helvetica-BoldOblique'; - t['Calibri-Italic'] = 'Helvetica-Oblique'; - t['CenturyGothic'] = 'Helvetica'; - t['CenturyGothic-Bold'] = 'Helvetica-Bold'; - t['CenturyGothic-BoldItalic'] = 'Helvetica-BoldOblique'; - t['CenturyGothic-Italic'] = 'Helvetica-Oblique'; - t['ComicSansMS'] = 'Comic Sans MS'; - t['ComicSansMS-Bold'] = 'Comic Sans MS-Bold'; - t['ComicSansMS-BoldItalic'] = 'Comic Sans MS-BoldItalic'; - t['ComicSansMS-Italic'] = 'Comic Sans MS-Italic'; - t['LucidaConsole'] = 'Courier'; - t['LucidaConsole-Bold'] = 'Courier-Bold'; - t['LucidaConsole-BoldItalic'] = 'Courier-BoldOblique'; - t['LucidaConsole-Italic'] = 'Courier-Oblique'; - t['LucidaSans-Demi'] = 'Helvetica-Bold'; - t['MS-Gothic'] = 'MS Gothic'; - t['MS-Gothic-Bold'] = 'MS Gothic-Bold'; - t['MS-Gothic-BoldItalic'] = 'MS Gothic-BoldItalic'; - t['MS-Gothic-Italic'] = 'MS Gothic-Italic'; - t['MS-Mincho'] = 'MS Mincho'; - t['MS-Mincho-Bold'] = 'MS Mincho-Bold'; - t['MS-Mincho-BoldItalic'] = 'MS Mincho-BoldItalic'; - t['MS-Mincho-Italic'] = 'MS Mincho-Italic'; - t['MS-PGothic'] = 'MS PGothic'; - t['MS-PGothic-Bold'] = 'MS PGothic-Bold'; - t['MS-PGothic-BoldItalic'] = 'MS PGothic-BoldItalic'; - t['MS-PGothic-Italic'] = 'MS PGothic-Italic'; - t['MS-PMincho'] = 'MS PMincho'; - t['MS-PMincho-Bold'] = 'MS PMincho-Bold'; - t['MS-PMincho-BoldItalic'] = 'MS PMincho-BoldItalic'; - t['MS-PMincho-Italic'] = 'MS PMincho-Italic'; - t['NuptialScript'] = 'Times-Italic'; - t['Wingdings'] = 'ZapfDingbats'; +const getFontNameToFileMap = (0, _core_utils.getLookupTableFactory)(function (t) { + t.Courier = "FoxitFixed.pfb"; + t["Courier-Bold"] = "FoxitFixedBold.pfb"; + t["Courier-BoldOblique"] = "FoxitFixedBoldItalic.pfb"; + t["Courier-Oblique"] = "FoxitFixedItalic.pfb"; + t.Helvetica = "FoxitSans.pfb"; + t["Helvetica-Bold"] = "FoxitSansBold.pfb"; + t["Helvetica-BoldOblique"] = "FoxitSansBoldItalic.pfb"; + t["Helvetica-Oblique"] = "FoxitSansItalic.pfb"; + t["Times-Roman"] = "FoxitSerif.pfb"; + t["Times-Bold"] = "FoxitSerifBold.pfb"; + t["Times-BoldItalic"] = "FoxitSerifBoldItalic.pfb"; + t["Times-Italic"] = "FoxitSerifItalic.pfb"; + t.Symbol = "FoxitSymbol.pfb"; + t.ZapfDingbats = "FoxitDingbats.pfb"; + t["LiberationSans-Regular"] = "LiberationSans-Regular.ttf"; + t["LiberationSans-Bold"] = "LiberationSans-Bold.ttf"; + t["LiberationSans-Italic"] = "LiberationSans-Italic.ttf"; + t["LiberationSans-BoldItalic"] = "LiberationSans-BoldItalic.ttf"; +}); +exports.getFontNameToFileMap = getFontNameToFileMap; +const getNonStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) { + t.Calibri = "Helvetica"; + t["Calibri-Bold"] = "Helvetica-Bold"; + t["Calibri-BoldItalic"] = "Helvetica-BoldOblique"; + t["Calibri-Italic"] = "Helvetica-Oblique"; + t.CenturyGothic = "Helvetica"; + t["CenturyGothic-Bold"] = "Helvetica-Bold"; + t["CenturyGothic-BoldItalic"] = "Helvetica-BoldOblique"; + t["CenturyGothic-Italic"] = "Helvetica-Oblique"; + t.ComicSansMS = "Comic Sans MS"; + t["ComicSansMS-Bold"] = "Comic Sans MS-Bold"; + t["ComicSansMS-BoldItalic"] = "Comic Sans MS-BoldItalic"; + t["ComicSansMS-Italic"] = "Comic Sans MS-Italic"; + t["ItcSymbol-Bold"] = "Helvetica-Bold"; + t["ItcSymbol-BoldItalic"] = "Helvetica-BoldOblique"; + t["ItcSymbol-Book"] = "Helvetica"; + t["ItcSymbol-BookItalic"] = "Helvetica-Oblique"; + t["ItcSymbol-Medium"] = "Helvetica"; + t["ItcSymbol-MediumItalic"] = "Helvetica-Oblique"; + t.LucidaConsole = "Courier"; + t["LucidaConsole-Bold"] = "Courier-Bold"; + t["LucidaConsole-BoldItalic"] = "Courier-BoldOblique"; + t["LucidaConsole-Italic"] = "Courier-Oblique"; + t["LucidaSans-Demi"] = "Helvetica-Bold"; + t["MS-Gothic"] = "MS Gothic"; + t["MS-Gothic-Bold"] = "MS Gothic-Bold"; + t["MS-Gothic-BoldItalic"] = "MS Gothic-BoldItalic"; + t["MS-Gothic-Italic"] = "MS Gothic-Italic"; + t["MS-Mincho"] = "MS Mincho"; + t["MS-Mincho-Bold"] = "MS Mincho-Bold"; + t["MS-Mincho-BoldItalic"] = "MS Mincho-BoldItalic"; + t["MS-Mincho-Italic"] = "MS Mincho-Italic"; + t["MS-PGothic"] = "MS PGothic"; + t["MS-PGothic-Bold"] = "MS PGothic-Bold"; + t["MS-PGothic-BoldItalic"] = "MS PGothic-BoldItalic"; + t["MS-PGothic-Italic"] = "MS PGothic-Italic"; + t["MS-PMincho"] = "MS PMincho"; + t["MS-PMincho-Bold"] = "MS PMincho-Bold"; + t["MS-PMincho-BoldItalic"] = "MS PMincho-BoldItalic"; + t["MS-PMincho-Italic"] = "MS PMincho-Italic"; + t.NuptialScript = "Times-Italic"; + t.SegoeUISymbol = "Helvetica"; + t.Wingdings = "ZapfDingbats"; + t["Wingdings-Regular"] = "ZapfDingbats"; }); exports.getNonStdFontMap = getNonStdFontMap; -var getSerifFonts = (0, _core_utils.getLookupTableFactory)(function (t) { - t['Adobe Jenson'] = true; - t['Adobe Text'] = true; - t['Albertus'] = true; - t['Aldus'] = true; - t['Alexandria'] = true; - t['Algerian'] = true; - t['American Typewriter'] = true; - t['Antiqua'] = true; - t['Apex'] = true; - t['Arno'] = true; - t['Aster'] = true; - t['Aurora'] = true; - t['Baskerville'] = true; - t['Bell'] = true; - t['Bembo'] = true; - t['Bembo Schoolbook'] = true; - t['Benguiat'] = true; - t['Berkeley Old Style'] = true; - t['Bernhard Modern'] = true; - t['Berthold City'] = true; - t['Bodoni'] = true; - t['Bauer Bodoni'] = true; - t['Book Antiqua'] = true; - t['Bookman'] = true; - t['Bordeaux Roman'] = true; - t['Californian FB'] = true; - t['Calisto'] = true; - t['Calvert'] = true; - t['Capitals'] = true; - t['Cambria'] = true; - t['Cartier'] = true; - t['Caslon'] = true; - t['Catull'] = true; - t['Centaur'] = true; - t['Century Old Style'] = true; - t['Century Schoolbook'] = true; - t['Chaparral'] = true; - t['Charis SIL'] = true; - t['Cheltenham'] = true; - t['Cholla Slab'] = true; - t['Clarendon'] = true; - t['Clearface'] = true; - t['Cochin'] = true; - t['Colonna'] = true; - t['Computer Modern'] = true; - t['Concrete Roman'] = true; - t['Constantia'] = true; - t['Cooper Black'] = true; - t['Corona'] = true; - t['Ecotype'] = true; - t['Egyptienne'] = true; - t['Elephant'] = true; - t['Excelsior'] = true; - t['Fairfield'] = true; - t['FF Scala'] = true; - t['Folkard'] = true; - t['Footlight'] = true; - t['FreeSerif'] = true; - t['Friz Quadrata'] = true; - t['Garamond'] = true; - t['Gentium'] = true; - t['Georgia'] = true; - t['Gloucester'] = true; - t['Goudy Old Style'] = true; - t['Goudy Schoolbook'] = true; - t['Goudy Pro Font'] = true; - t['Granjon'] = true; - t['Guardian Egyptian'] = true; - t['Heather'] = true; - t['Hercules'] = true; - t['High Tower Text'] = true; - t['Hiroshige'] = true; - t['Hoefler Text'] = true; - t['Humana Serif'] = true; - t['Imprint'] = true; - t['Ionic No. 5'] = true; - t['Janson'] = true; - t['Joanna'] = true; - t['Korinna'] = true; - t['Lexicon'] = true; - t['Liberation Serif'] = true; - t['Linux Libertine'] = true; - t['Literaturnaya'] = true; - t['Lucida'] = true; - t['Lucida Bright'] = true; - t['Melior'] = true; - t['Memphis'] = true; - t['Miller'] = true; - t['Minion'] = true; - t['Modern'] = true; - t['Mona Lisa'] = true; - t['Mrs Eaves'] = true; - t['MS Serif'] = true; - t['Museo Slab'] = true; - t['New York'] = true; - t['Nimbus Roman'] = true; - t['NPS Rawlinson Roadway'] = true; - t['NuptialScript'] = true; - t['Palatino'] = true; - t['Perpetua'] = true; - t['Plantin'] = true; - t['Plantin Schoolbook'] = true; - t['Playbill'] = true; - t['Poor Richard'] = true; - t['Rawlinson Roadway'] = true; - t['Renault'] = true; - t['Requiem'] = true; - t['Rockwell'] = true; - t['Roman'] = true; - t['Rotis Serif'] = true; - t['Sabon'] = true; - t['Scala'] = true; - t['Seagull'] = true; - t['Sistina'] = true; - t['Souvenir'] = true; - t['STIX'] = true; - t['Stone Informal'] = true; - t['Stone Serif'] = true; - t['Sylfaen'] = true; - t['Times'] = true; - t['Trajan'] = true; - t['Trinité'] = true; - t['Trump Mediaeval'] = true; - t['Utopia'] = true; - t['Vale Type'] = true; - t['Bitstream Vera'] = true; - t['Vera Serif'] = true; - t['Versailles'] = true; - t['Wanted'] = true; - t['Weiss'] = true; - t['Wide Latin'] = true; - t['Windsor'] = true; - t['XITS'] = true; +const getSerifFonts = (0, _core_utils.getLookupTableFactory)(function (t) { + t["Adobe Jenson"] = true; + t["Adobe Text"] = true; + t.Albertus = true; + t.Aldus = true; + t.Alexandria = true; + t.Algerian = true; + t["American Typewriter"] = true; + t.Antiqua = true; + t.Apex = true; + t.Arno = true; + t.Aster = true; + t.Aurora = true; + t.Baskerville = true; + t.Bell = true; + t.Bembo = true; + t["Bembo Schoolbook"] = true; + t.Benguiat = true; + t["Berkeley Old Style"] = true; + t["Bernhard Modern"] = true; + t["Berthold City"] = true; + t.Bodoni = true; + t["Bauer Bodoni"] = true; + t["Book Antiqua"] = true; + t.Bookman = true; + t["Bordeaux Roman"] = true; + t["Californian FB"] = true; + t.Calisto = true; + t.Calvert = true; + t.Capitals = true; + t.Cambria = true; + t.Cartier = true; + t.Caslon = true; + t.Catull = true; + t.Centaur = true; + t["Century Old Style"] = true; + t["Century Schoolbook"] = true; + t.Chaparral = true; + t["Charis SIL"] = true; + t.Cheltenham = true; + t["Cholla Slab"] = true; + t.Clarendon = true; + t.Clearface = true; + t.Cochin = true; + t.Colonna = true; + t["Computer Modern"] = true; + t["Concrete Roman"] = true; + t.Constantia = true; + t["Cooper Black"] = true; + t.Corona = true; + t.Ecotype = true; + t.Egyptienne = true; + t.Elephant = true; + t.Excelsior = true; + t.Fairfield = true; + t["FF Scala"] = true; + t.Folkard = true; + t.Footlight = true; + t.FreeSerif = true; + t["Friz Quadrata"] = true; + t.Garamond = true; + t.Gentium = true; + t.Georgia = true; + t.Gloucester = true; + t["Goudy Old Style"] = true; + t["Goudy Schoolbook"] = true; + t["Goudy Pro Font"] = true; + t.Granjon = true; + t["Guardian Egyptian"] = true; + t.Heather = true; + t.Hercules = true; + t["High Tower Text"] = true; + t.Hiroshige = true; + t["Hoefler Text"] = true; + t["Humana Serif"] = true; + t.Imprint = true; + t["Ionic No. 5"] = true; + t.Janson = true; + t.Joanna = true; + t.Korinna = true; + t.Lexicon = true; + t.LiberationSerif = true; + t["Liberation Serif"] = true; + t["Linux Libertine"] = true; + t.Literaturnaya = true; + t.Lucida = true; + t["Lucida Bright"] = true; + t.Melior = true; + t.Memphis = true; + t.Miller = true; + t.Minion = true; + t.Modern = true; + t["Mona Lisa"] = true; + t["Mrs Eaves"] = true; + t["MS Serif"] = true; + t["Museo Slab"] = true; + t["New York"] = true; + t["Nimbus Roman"] = true; + t["NPS Rawlinson Roadway"] = true; + t.NuptialScript = true; + t.Palatino = true; + t.Perpetua = true; + t.Plantin = true; + t["Plantin Schoolbook"] = true; + t.Playbill = true; + t["Poor Richard"] = true; + t["Rawlinson Roadway"] = true; + t.Renault = true; + t.Requiem = true; + t.Rockwell = true; + t.Roman = true; + t["Rotis Serif"] = true; + t.Sabon = true; + t.Scala = true; + t.Seagull = true; + t.Sistina = true; + t.Souvenir = true; + t.STIX = true; + t["Stone Informal"] = true; + t["Stone Serif"] = true; + t.Sylfaen = true; + t.Times = true; + t.Trajan = true; + t["Trinité"] = true; + t["Trump Mediaeval"] = true; + t.Utopia = true; + t["Vale Type"] = true; + t["Bitstream Vera"] = true; + t["Vera Serif"] = true; + t.Versailles = true; + t.Wanted = true; + t.Weiss = true; + t["Wide Latin"] = true; + t.Windsor = true; + t.XITS = true; }); exports.getSerifFonts = getSerifFonts; -var getSymbolsFonts = (0, _core_utils.getLookupTableFactory)(function (t) { - t['Dingbats'] = true; - t['Symbol'] = true; - t['ZapfDingbats'] = true; +const getSymbolsFonts = (0, _core_utils.getLookupTableFactory)(function (t) { + t.Dingbats = true; + t.Symbol = true; + t.ZapfDingbats = true; }); exports.getSymbolsFonts = getSymbolsFonts; -var getGlyphMapForStandardFonts = (0, _core_utils.getLookupTableFactory)(function (t) { +const getGlyphMapForStandardFonts = (0, _core_utils.getLookupTableFactory)(function (t) { t[2] = 10; t[3] = 32; t[4] = 33; @@ -44698,12 +46415,17 @@ var getGlyphMapForStandardFonts = (0, _core_utils.getLookupTableFactory)(functio t[169] = 171; t[170] = 187; t[171] = 8230; + t[200] = 193; + t[203] = 205; t[210] = 218; t[223] = 711; t[224] = 321; t[225] = 322; + t[226] = 352; t[227] = 353; + t[228] = 381; t[229] = 382; + t[233] = 221; t[234] = 253; t[252] = 263; t[253] = 268; @@ -44713,11 +46435,13 @@ var getGlyphMapForStandardFonts = (0, _core_utils.getLookupTableFactory)(functio t[261] = 261; t[265] = 280; t[266] = 281; + t[267] = 282; t[268] = 283; t[269] = 313; t[275] = 323; t[276] = 324; t[278] = 328; + t[283] = 344; t[284] = 345; t[285] = 346; t[286] = 347; @@ -44737,6 +46461,33 @@ var getGlyphMapForStandardFonts = (0, _core_utils.getLookupTableFactory)(functio t[337] = 9552; t[493] = 1039; t[494] = 1040; + t[672] = 1488; + t[673] = 1489; + t[674] = 1490; + t[675] = 1491; + t[676] = 1492; + t[677] = 1493; + t[678] = 1494; + t[679] = 1495; + t[680] = 1496; + t[681] = 1497; + t[682] = 1498; + t[683] = 1499; + t[684] = 1500; + t[685] = 1501; + t[686] = 1502; + t[687] = 1503; + t[688] = 1504; + t[689] = 1505; + t[690] = 1506; + t[691] = 1507; + t[692] = 1508; + t[693] = 1509; + t[694] = 1510; + t[695] = 1511; + t[696] = 1512; + t[697] = 1513; + t[698] = 1514; t[705] = 1524; t[706] = 8362; t[710] = 64288; @@ -44924,23 +46675,28 @@ var getGlyphMapForStandardFonts = (0, _core_utils.getLookupTableFactory)(functio t[3416] = 8377; }); exports.getGlyphMapForStandardFonts = getGlyphMapForStandardFonts; -var getSupplementalGlyphMapForArialBlack = (0, _core_utils.getLookupTableFactory)(function (t) { +const getSupplementalGlyphMapForArialBlack = (0, _core_utils.getLookupTableFactory)(function (t) { t[227] = 322; t[264] = 261; t[291] = 346; }); exports.getSupplementalGlyphMapForArialBlack = getSupplementalGlyphMapForArialBlack; -var getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)(function (t) { +const getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)(function (t) { t[1] = 32; t[4] = 65; + t[6] = 193; t[17] = 66; t[18] = 67; + t[21] = 268; t[24] = 68; t[28] = 69; + t[30] = 201; + t[32] = 282; t[38] = 70; t[39] = 71; t[44] = 72; t[47] = 73; + t[49] = 205; t[58] = 74; t[60] = 75; t[62] = 76; @@ -44950,26 +46706,35 @@ var getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)(f t[87] = 80; t[89] = 81; t[90] = 82; + t[92] = 344; t[94] = 83; + t[97] = 352; t[100] = 84; t[104] = 85; t[115] = 86; t[116] = 87; t[121] = 88; t[122] = 89; + t[124] = 221; t[127] = 90; + t[129] = 381; t[258] = 97; + t[260] = 225; t[268] = 261; t[271] = 98; t[272] = 99; t[273] = 263; + t[275] = 269; t[282] = 100; t[286] = 101; + t[288] = 233; + t[290] = 283; t[295] = 281; t[296] = 102; t[336] = 103; t[346] = 104; t[349] = 105; + t[351] = 237; t[361] = 106; t[364] = 107; t[367] = 108; @@ -44981,15 +46746,19 @@ var getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)(f t[393] = 112; t[395] = 113; t[396] = 114; + t[398] = 345; t[400] = 115; t[401] = 347; + t[403] = 353; t[410] = 116; t[437] = 117; t[448] = 118; t[449] = 119; t[454] = 120; t[455] = 121; + t[457] = 253; t[460] = 122; + t[462] = 382; t[463] = 380; t[853] = 44; t[855] = 58; @@ -45018,2661 +46787,720 @@ var getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)(f }); exports.getSupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri; -/***/ }), -/* 180 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -var getLookupTableFactory = __w_pdfjs_require__(154).getLookupTableFactory; -var getSpecialPUASymbols = getLookupTableFactory(function (t) { - t[63721] = 0x00A9; - t[63193] = 0x00A9; - t[63720] = 0x00AE; - t[63194] = 0x00AE; - t[63722] = 0x2122; - t[63195] = 0x2122; - t[63729] = 0x23A7; - t[63730] = 0x23A8; - t[63731] = 0x23A9; - t[63740] = 0x23AB; - t[63741] = 0x23AC; - t[63742] = 0x23AD; - t[63726] = 0x23A1; - t[63727] = 0x23A2; - t[63728] = 0x23A3; - t[63737] = 0x23A4; - t[63738] = 0x23A5; - t[63739] = 0x23A6; - t[63723] = 0x239B; - t[63724] = 0x239C; - t[63725] = 0x239D; - t[63734] = 0x239E; - t[63735] = 0x239F; - t[63736] = 0x23A0; -}); -function mapSpecialUnicodeValues(code) { - if (code >= 0xFFF0 && code <= 0xFFFF) { - return 0; - } else if (code >= 0xF600 && code <= 0xF8FF) { - return getSpecialPUASymbols()[code] || code; - } else if (code === 0x00AD) { - return 0x002D; - } - return code; +function getStandardFontName(name) { + const fontName = (0, _fonts_utils.normalizeFontName)(name); + const stdFontMap = getStdFontMap(); + return stdFontMap[fontName]; } -function getUnicodeForGlyph(name, glyphsUnicodeMap) { - var unicode = glyphsUnicodeMap[name]; - if (unicode !== undefined) { - return unicode; - } - if (!name) { - return -1; - } - if (name[0] === 'u') { - var nameLen = name.length, hexStr; - if (nameLen === 7 && name[1] === 'n' && name[2] === 'i') { - hexStr = name.substring(3); - } else if (nameLen >= 5 && nameLen <= 7) { - hexStr = name.substring(1); - } else { - return -1; - } - if (hexStr === hexStr.toUpperCase()) { - unicode = parseInt(hexStr, 16); - if (unicode >= 0) { - return unicode; - } - } - } - return -1; -} -var UnicodeRanges = [ - { - 'begin': 0x0000, - 'end': 0x007F - }, - { - 'begin': 0x0080, - 'end': 0x00FF - }, - { - 'begin': 0x0100, - 'end': 0x017F - }, - { - 'begin': 0x0180, - 'end': 0x024F - }, - { - 'begin': 0x0250, - 'end': 0x02AF - }, - { - 'begin': 0x02B0, - 'end': 0x02FF - }, - { - 'begin': 0x0300, - 'end': 0x036F - }, - { - 'begin': 0x0370, - 'end': 0x03FF - }, - { - 'begin': 0x2C80, - 'end': 0x2CFF - }, - { - 'begin': 0x0400, - 'end': 0x04FF - }, - { - 'begin': 0x0530, - 'end': 0x058F - }, - { - 'begin': 0x0590, - 'end': 0x05FF - }, - { - 'begin': 0xA500, - 'end': 0xA63F - }, - { - 'begin': 0x0600, - 'end': 0x06FF - }, - { - 'begin': 0x07C0, - 'end': 0x07FF - }, - { - 'begin': 0x0900, - 'end': 0x097F - }, - { - 'begin': 0x0980, - 'end': 0x09FF - }, - { - 'begin': 0x0A00, - 'end': 0x0A7F - }, - { - 'begin': 0x0A80, - 'end': 0x0AFF - }, - { - 'begin': 0x0B00, - 'end': 0x0B7F - }, - { - 'begin': 0x0B80, - 'end': 0x0BFF - }, - { - 'begin': 0x0C00, - 'end': 0x0C7F - }, - { - 'begin': 0x0C80, - 'end': 0x0CFF - }, - { - 'begin': 0x0D00, - 'end': 0x0D7F - }, - { - 'begin': 0x0E00, - 'end': 0x0E7F - }, - { - 'begin': 0x0E80, - 'end': 0x0EFF - }, - { - 'begin': 0x10A0, - 'end': 0x10FF - }, - { - 'begin': 0x1B00, - 'end': 0x1B7F - }, - { - 'begin': 0x1100, - 'end': 0x11FF - }, - { - 'begin': 0x1E00, - 'end': 0x1EFF - }, - { - 'begin': 0x1F00, - 'end': 0x1FFF - }, - { - 'begin': 0x2000, - 'end': 0x206F - }, - { - 'begin': 0x2070, - 'end': 0x209F - }, - { - 'begin': 0x20A0, - 'end': 0x20CF - }, - { - 'begin': 0x20D0, - 'end': 0x20FF - }, - { - 'begin': 0x2100, - 'end': 0x214F - }, - { - 'begin': 0x2150, - 'end': 0x218F - }, - { - 'begin': 0x2190, - 'end': 0x21FF - }, - { - 'begin': 0x2200, - 'end': 0x22FF - }, - { - 'begin': 0x2300, - 'end': 0x23FF - }, - { - 'begin': 0x2400, - 'end': 0x243F - }, - { - 'begin': 0x2440, - 'end': 0x245F - }, - { - 'begin': 0x2460, - 'end': 0x24FF - }, - { - 'begin': 0x2500, - 'end': 0x257F - }, - { - 'begin': 0x2580, - 'end': 0x259F - }, - { - 'begin': 0x25A0, - 'end': 0x25FF - }, - { - 'begin': 0x2600, - 'end': 0x26FF - }, - { - 'begin': 0x2700, - 'end': 0x27BF - }, - { - 'begin': 0x3000, - 'end': 0x303F - }, - { - 'begin': 0x3040, - 'end': 0x309F - }, - { - 'begin': 0x30A0, - 'end': 0x30FF - }, - { - 'begin': 0x3100, - 'end': 0x312F - }, - { - 'begin': 0x3130, - 'end': 0x318F - }, - { - 'begin': 0xA840, - 'end': 0xA87F - }, - { - 'begin': 0x3200, - 'end': 0x32FF - }, - { - 'begin': 0x3300, - 'end': 0x33FF - }, - { - 'begin': 0xAC00, - 'end': 0xD7AF - }, - { - 'begin': 0xD800, - 'end': 0xDFFF - }, - { - 'begin': 0x10900, - 'end': 0x1091F - }, - { - 'begin': 0x4E00, - 'end': 0x9FFF - }, - { - 'begin': 0xE000, - 'end': 0xF8FF - }, - { - 'begin': 0x31C0, - 'end': 0x31EF - }, - { - 'begin': 0xFB00, - 'end': 0xFB4F - }, - { - 'begin': 0xFB50, - 'end': 0xFDFF - }, - { - 'begin': 0xFE20, - 'end': 0xFE2F - }, - { - 'begin': 0xFE10, - 'end': 0xFE1F - }, - { - 'begin': 0xFE50, - 'end': 0xFE6F - }, - { - 'begin': 0xFE70, - 'end': 0xFEFF - }, - { - 'begin': 0xFF00, - 'end': 0xFFEF - }, - { - 'begin': 0xFFF0, - 'end': 0xFFFF - }, - { - 'begin': 0x0F00, - 'end': 0x0FFF - }, - { - 'begin': 0x0700, - 'end': 0x074F - }, - { - 'begin': 0x0780, - 'end': 0x07BF - }, - { - 'begin': 0x0D80, - 'end': 0x0DFF - }, - { - 'begin': 0x1000, - 'end': 0x109F - }, - { - 'begin': 0x1200, - 'end': 0x137F - }, - { - 'begin': 0x13A0, - 'end': 0x13FF - }, - { - 'begin': 0x1400, - 'end': 0x167F - }, - { - 'begin': 0x1680, - 'end': 0x169F - }, - { - 'begin': 0x16A0, - 'end': 0x16FF - }, - { - 'begin': 0x1780, - 'end': 0x17FF - }, - { - 'begin': 0x1800, - 'end': 0x18AF - }, - { - 'begin': 0x2800, - 'end': 0x28FF - }, - { - 'begin': 0xA000, - 'end': 0xA48F - }, - { - 'begin': 0x1700, - 'end': 0x171F - }, - { - 'begin': 0x10300, - 'end': 0x1032F - }, - { - 'begin': 0x10330, - 'end': 0x1034F - }, - { - 'begin': 0x10400, - 'end': 0x1044F - }, - { - 'begin': 0x1D000, - 'end': 0x1D0FF - }, - { - 'begin': 0x1D400, - 'end': 0x1D7FF - }, - { - 'begin': 0xFF000, - 'end': 0xFFFFD - }, - { - 'begin': 0xFE00, - 'end': 0xFE0F - }, - { - 'begin': 0xE0000, - 'end': 0xE007F - }, - { - 'begin': 0x1900, - 'end': 0x194F - }, - { - 'begin': 0x1950, - 'end': 0x197F - }, - { - 'begin': 0x1980, - 'end': 0x19DF - }, - { - 'begin': 0x1A00, - 'end': 0x1A1F - }, - { - 'begin': 0x2C00, - 'end': 0x2C5F - }, - { - 'begin': 0x2D30, - 'end': 0x2D7F - }, - { - 'begin': 0x4DC0, - 'end': 0x4DFF - }, - { - 'begin': 0xA800, - 'end': 0xA82F - }, - { - 'begin': 0x10000, - 'end': 0x1007F - }, - { - 'begin': 0x10140, - 'end': 0x1018F - }, - { - 'begin': 0x10380, - 'end': 0x1039F - }, - { - 'begin': 0x103A0, - 'end': 0x103DF - }, - { - 'begin': 0x10450, - 'end': 0x1047F - }, - { - 'begin': 0x10480, - 'end': 0x104AF - }, - { - 'begin': 0x10800, - 'end': 0x1083F - }, - { - 'begin': 0x10A00, - 'end': 0x10A5F - }, - { - 'begin': 0x1D300, - 'end': 0x1D35F - }, - { - 'begin': 0x12000, - 'end': 0x123FF - }, - { - 'begin': 0x1D360, - 'end': 0x1D37F - }, - { - 'begin': 0x1B80, - 'end': 0x1BBF - }, - { - 'begin': 0x1C00, - 'end': 0x1C4F - }, - { - 'begin': 0x1C50, - 'end': 0x1C7F - }, - { - 'begin': 0xA880, - 'end': 0xA8DF - }, - { - 'begin': 0xA900, - 'end': 0xA92F - }, - { - 'begin': 0xA930, - 'end': 0xA95F - }, - { - 'begin': 0xAA00, - 'end': 0xAA5F - }, - { - 'begin': 0x10190, - 'end': 0x101CF - }, - { - 'begin': 0x101D0, - 'end': 0x101FF - }, - { - 'begin': 0x102A0, - 'end': 0x102DF - }, - { - 'begin': 0x1F030, - 'end': 0x1F09F - } -]; -function getUnicodeRangeFor(value) { - for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) { - var range = UnicodeRanges[i]; - if (value >= range.begin && value < range.end) { - return i; - } - } - return -1; -} -function isRTLRangeFor(value) { - var range = UnicodeRanges[13]; - if (value >= range.begin && value < range.end) { - return true; - } - range = UnicodeRanges[11]; - if (value >= range.begin && value < range.end) { - return true; - } - return false; -} -var getNormalizedUnicodes = getLookupTableFactory(function (t) { - t['\u00A8'] = '\u0020\u0308'; - t['\u00AF'] = '\u0020\u0304'; - t['\u00B4'] = '\u0020\u0301'; - t['\u00B5'] = '\u03BC'; - t['\u00B8'] = '\u0020\u0327'; - t['\u0132'] = '\u0049\u004A'; - t['\u0133'] = '\u0069\u006A'; - t['\u013F'] = '\u004C\u00B7'; - t['\u0140'] = '\u006C\u00B7'; - t['\u0149'] = '\u02BC\u006E'; - t['\u017F'] = '\u0073'; - t['\u01C4'] = '\u0044\u017D'; - t['\u01C5'] = '\u0044\u017E'; - t['\u01C6'] = '\u0064\u017E'; - t['\u01C7'] = '\u004C\u004A'; - t['\u01C8'] = '\u004C\u006A'; - t['\u01C9'] = '\u006C\u006A'; - t['\u01CA'] = '\u004E\u004A'; - t['\u01CB'] = '\u004E\u006A'; - t['\u01CC'] = '\u006E\u006A'; - t['\u01F1'] = '\u0044\u005A'; - t['\u01F2'] = '\u0044\u007A'; - t['\u01F3'] = '\u0064\u007A'; - t['\u02D8'] = '\u0020\u0306'; - t['\u02D9'] = '\u0020\u0307'; - t['\u02DA'] = '\u0020\u030A'; - t['\u02DB'] = '\u0020\u0328'; - t['\u02DC'] = '\u0020\u0303'; - t['\u02DD'] = '\u0020\u030B'; - t['\u037A'] = '\u0020\u0345'; - t['\u0384'] = '\u0020\u0301'; - t['\u03D0'] = '\u03B2'; - t['\u03D1'] = '\u03B8'; - t['\u03D2'] = '\u03A5'; - t['\u03D5'] = '\u03C6'; - t['\u03D6'] = '\u03C0'; - t['\u03F0'] = '\u03BA'; - t['\u03F1'] = '\u03C1'; - t['\u03F2'] = '\u03C2'; - t['\u03F4'] = '\u0398'; - t['\u03F5'] = '\u03B5'; - t['\u03F9'] = '\u03A3'; - t['\u0587'] = '\u0565\u0582'; - t['\u0675'] = '\u0627\u0674'; - t['\u0676'] = '\u0648\u0674'; - t['\u0677'] = '\u06C7\u0674'; - t['\u0678'] = '\u064A\u0674'; - t['\u0E33'] = '\u0E4D\u0E32'; - t['\u0EB3'] = '\u0ECD\u0EB2'; - t['\u0EDC'] = '\u0EAB\u0E99'; - t['\u0EDD'] = '\u0EAB\u0EA1'; - t['\u0F77'] = '\u0FB2\u0F81'; - t['\u0F79'] = '\u0FB3\u0F81'; - t['\u1E9A'] = '\u0061\u02BE'; - t['\u1FBD'] = '\u0020\u0313'; - t['\u1FBF'] = '\u0020\u0313'; - t['\u1FC0'] = '\u0020\u0342'; - t['\u1FFE'] = '\u0020\u0314'; - t['\u2002'] = '\u0020'; - t['\u2003'] = '\u0020'; - t['\u2004'] = '\u0020'; - t['\u2005'] = '\u0020'; - t['\u2006'] = '\u0020'; - t['\u2008'] = '\u0020'; - t['\u2009'] = '\u0020'; - t['\u200A'] = '\u0020'; - t['\u2017'] = '\u0020\u0333'; - t['\u2024'] = '\u002E'; - t['\u2025'] = '\u002E\u002E'; - t['\u2026'] = '\u002E\u002E\u002E'; - t['\u2033'] = '\u2032\u2032'; - t['\u2034'] = '\u2032\u2032\u2032'; - t['\u2036'] = '\u2035\u2035'; - t['\u2037'] = '\u2035\u2035\u2035'; - t['\u203C'] = '\u0021\u0021'; - t['\u203E'] = '\u0020\u0305'; - t['\u2047'] = '\u003F\u003F'; - t['\u2048'] = '\u003F\u0021'; - t['\u2049'] = '\u0021\u003F'; - t['\u2057'] = '\u2032\u2032\u2032\u2032'; - t['\u205F'] = '\u0020'; - t['\u20A8'] = '\u0052\u0073'; - t['\u2100'] = '\u0061\u002F\u0063'; - t['\u2101'] = '\u0061\u002F\u0073'; - t['\u2103'] = '\u00B0\u0043'; - t['\u2105'] = '\u0063\u002F\u006F'; - t['\u2106'] = '\u0063\u002F\u0075'; - t['\u2107'] = '\u0190'; - t['\u2109'] = '\u00B0\u0046'; - t['\u2116'] = '\u004E\u006F'; - t['\u2121'] = '\u0054\u0045\u004C'; - t['\u2135'] = '\u05D0'; - t['\u2136'] = '\u05D1'; - t['\u2137'] = '\u05D2'; - t['\u2138'] = '\u05D3'; - t['\u213B'] = '\u0046\u0041\u0058'; - t['\u2160'] = '\u0049'; - t['\u2161'] = '\u0049\u0049'; - t['\u2162'] = '\u0049\u0049\u0049'; - t['\u2163'] = '\u0049\u0056'; - t['\u2164'] = '\u0056'; - t['\u2165'] = '\u0056\u0049'; - t['\u2166'] = '\u0056\u0049\u0049'; - t['\u2167'] = '\u0056\u0049\u0049\u0049'; - t['\u2168'] = '\u0049\u0058'; - t['\u2169'] = '\u0058'; - t['\u216A'] = '\u0058\u0049'; - t['\u216B'] = '\u0058\u0049\u0049'; - t['\u216C'] = '\u004C'; - t['\u216D'] = '\u0043'; - t['\u216E'] = '\u0044'; - t['\u216F'] = '\u004D'; - t['\u2170'] = '\u0069'; - t['\u2171'] = '\u0069\u0069'; - t['\u2172'] = '\u0069\u0069\u0069'; - t['\u2173'] = '\u0069\u0076'; - t['\u2174'] = '\u0076'; - t['\u2175'] = '\u0076\u0069'; - t['\u2176'] = '\u0076\u0069\u0069'; - t['\u2177'] = '\u0076\u0069\u0069\u0069'; - t['\u2178'] = '\u0069\u0078'; - t['\u2179'] = '\u0078'; - t['\u217A'] = '\u0078\u0069'; - t['\u217B'] = '\u0078\u0069\u0069'; - t['\u217C'] = '\u006C'; - t['\u217D'] = '\u0063'; - t['\u217E'] = '\u0064'; - t['\u217F'] = '\u006D'; - t['\u222C'] = '\u222B\u222B'; - t['\u222D'] = '\u222B\u222B\u222B'; - t['\u222F'] = '\u222E\u222E'; - t['\u2230'] = '\u222E\u222E\u222E'; - t['\u2474'] = '\u0028\u0031\u0029'; - t['\u2475'] = '\u0028\u0032\u0029'; - t['\u2476'] = '\u0028\u0033\u0029'; - t['\u2477'] = '\u0028\u0034\u0029'; - t['\u2478'] = '\u0028\u0035\u0029'; - t['\u2479'] = '\u0028\u0036\u0029'; - t['\u247A'] = '\u0028\u0037\u0029'; - t['\u247B'] = '\u0028\u0038\u0029'; - t['\u247C'] = '\u0028\u0039\u0029'; - t['\u247D'] = '\u0028\u0031\u0030\u0029'; - t['\u247E'] = '\u0028\u0031\u0031\u0029'; - t['\u247F'] = '\u0028\u0031\u0032\u0029'; - t['\u2480'] = '\u0028\u0031\u0033\u0029'; - t['\u2481'] = '\u0028\u0031\u0034\u0029'; - t['\u2482'] = '\u0028\u0031\u0035\u0029'; - t['\u2483'] = '\u0028\u0031\u0036\u0029'; - t['\u2484'] = '\u0028\u0031\u0037\u0029'; - t['\u2485'] = '\u0028\u0031\u0038\u0029'; - t['\u2486'] = '\u0028\u0031\u0039\u0029'; - t['\u2487'] = '\u0028\u0032\u0030\u0029'; - t['\u2488'] = '\u0031\u002E'; - t['\u2489'] = '\u0032\u002E'; - t['\u248A'] = '\u0033\u002E'; - t['\u248B'] = '\u0034\u002E'; - t['\u248C'] = '\u0035\u002E'; - t['\u248D'] = '\u0036\u002E'; - t['\u248E'] = '\u0037\u002E'; - t['\u248F'] = '\u0038\u002E'; - t['\u2490'] = '\u0039\u002E'; - t['\u2491'] = '\u0031\u0030\u002E'; - t['\u2492'] = '\u0031\u0031\u002E'; - t['\u2493'] = '\u0031\u0032\u002E'; - t['\u2494'] = '\u0031\u0033\u002E'; - t['\u2495'] = '\u0031\u0034\u002E'; - t['\u2496'] = '\u0031\u0035\u002E'; - t['\u2497'] = '\u0031\u0036\u002E'; - t['\u2498'] = '\u0031\u0037\u002E'; - t['\u2499'] = '\u0031\u0038\u002E'; - t['\u249A'] = '\u0031\u0039\u002E'; - t['\u249B'] = '\u0032\u0030\u002E'; - t['\u249C'] = '\u0028\u0061\u0029'; - t['\u249D'] = '\u0028\u0062\u0029'; - t['\u249E'] = '\u0028\u0063\u0029'; - t['\u249F'] = '\u0028\u0064\u0029'; - t['\u24A0'] = '\u0028\u0065\u0029'; - t['\u24A1'] = '\u0028\u0066\u0029'; - t['\u24A2'] = '\u0028\u0067\u0029'; - t['\u24A3'] = '\u0028\u0068\u0029'; - t['\u24A4'] = '\u0028\u0069\u0029'; - t['\u24A5'] = '\u0028\u006A\u0029'; - t['\u24A6'] = '\u0028\u006B\u0029'; - t['\u24A7'] = '\u0028\u006C\u0029'; - t['\u24A8'] = '\u0028\u006D\u0029'; - t['\u24A9'] = '\u0028\u006E\u0029'; - t['\u24AA'] = '\u0028\u006F\u0029'; - t['\u24AB'] = '\u0028\u0070\u0029'; - t['\u24AC'] = '\u0028\u0071\u0029'; - t['\u24AD'] = '\u0028\u0072\u0029'; - t['\u24AE'] = '\u0028\u0073\u0029'; - t['\u24AF'] = '\u0028\u0074\u0029'; - t['\u24B0'] = '\u0028\u0075\u0029'; - t['\u24B1'] = '\u0028\u0076\u0029'; - t['\u24B2'] = '\u0028\u0077\u0029'; - t['\u24B3'] = '\u0028\u0078\u0029'; - t['\u24B4'] = '\u0028\u0079\u0029'; - t['\u24B5'] = '\u0028\u007A\u0029'; - t['\u2A0C'] = '\u222B\u222B\u222B\u222B'; - t['\u2A74'] = '\u003A\u003A\u003D'; - t['\u2A75'] = '\u003D\u003D'; - t['\u2A76'] = '\u003D\u003D\u003D'; - t['\u2E9F'] = '\u6BCD'; - t['\u2EF3'] = '\u9F9F'; - t['\u2F00'] = '\u4E00'; - t['\u2F01'] = '\u4E28'; - t['\u2F02'] = '\u4E36'; - t['\u2F03'] = '\u4E3F'; - t['\u2F04'] = '\u4E59'; - t['\u2F05'] = '\u4E85'; - t['\u2F06'] = '\u4E8C'; - t['\u2F07'] = '\u4EA0'; - t['\u2F08'] = '\u4EBA'; - t['\u2F09'] = '\u513F'; - t['\u2F0A'] = '\u5165'; - t['\u2F0B'] = '\u516B'; - t['\u2F0C'] = '\u5182'; - t['\u2F0D'] = '\u5196'; - t['\u2F0E'] = '\u51AB'; - t['\u2F0F'] = '\u51E0'; - t['\u2F10'] = '\u51F5'; - t['\u2F11'] = '\u5200'; - t['\u2F12'] = '\u529B'; - t['\u2F13'] = '\u52F9'; - t['\u2F14'] = '\u5315'; - t['\u2F15'] = '\u531A'; - t['\u2F16'] = '\u5338'; - t['\u2F17'] = '\u5341'; - t['\u2F18'] = '\u535C'; - t['\u2F19'] = '\u5369'; - t['\u2F1A'] = '\u5382'; - t['\u2F1B'] = '\u53B6'; - t['\u2F1C'] = '\u53C8'; - t['\u2F1D'] = '\u53E3'; - t['\u2F1E'] = '\u56D7'; - t['\u2F1F'] = '\u571F'; - t['\u2F20'] = '\u58EB'; - t['\u2F21'] = '\u5902'; - t['\u2F22'] = '\u590A'; - t['\u2F23'] = '\u5915'; - t['\u2F24'] = '\u5927'; - t['\u2F25'] = '\u5973'; - t['\u2F26'] = '\u5B50'; - t['\u2F27'] = '\u5B80'; - t['\u2F28'] = '\u5BF8'; - t['\u2F29'] = '\u5C0F'; - t['\u2F2A'] = '\u5C22'; - t['\u2F2B'] = '\u5C38'; - t['\u2F2C'] = '\u5C6E'; - t['\u2F2D'] = '\u5C71'; - t['\u2F2E'] = '\u5DDB'; - t['\u2F2F'] = '\u5DE5'; - t['\u2F30'] = '\u5DF1'; - t['\u2F31'] = '\u5DFE'; - t['\u2F32'] = '\u5E72'; - t['\u2F33'] = '\u5E7A'; - t['\u2F34'] = '\u5E7F'; - t['\u2F35'] = '\u5EF4'; - t['\u2F36'] = '\u5EFE'; - t['\u2F37'] = '\u5F0B'; - t['\u2F38'] = '\u5F13'; - t['\u2F39'] = '\u5F50'; - t['\u2F3A'] = '\u5F61'; - t['\u2F3B'] = '\u5F73'; - t['\u2F3C'] = '\u5FC3'; - t['\u2F3D'] = '\u6208'; - t['\u2F3E'] = '\u6236'; - t['\u2F3F'] = '\u624B'; - t['\u2F40'] = '\u652F'; - t['\u2F41'] = '\u6534'; - t['\u2F42'] = '\u6587'; - t['\u2F43'] = '\u6597'; - t['\u2F44'] = '\u65A4'; - t['\u2F45'] = '\u65B9'; - t['\u2F46'] = '\u65E0'; - t['\u2F47'] = '\u65E5'; - t['\u2F48'] = '\u66F0'; - t['\u2F49'] = '\u6708'; - t['\u2F4A'] = '\u6728'; - t['\u2F4B'] = '\u6B20'; - t['\u2F4C'] = '\u6B62'; - t['\u2F4D'] = '\u6B79'; - t['\u2F4E'] = '\u6BB3'; - t['\u2F4F'] = '\u6BCB'; - t['\u2F50'] = '\u6BD4'; - t['\u2F51'] = '\u6BDB'; - t['\u2F52'] = '\u6C0F'; - t['\u2F53'] = '\u6C14'; - t['\u2F54'] = '\u6C34'; - t['\u2F55'] = '\u706B'; - t['\u2F56'] = '\u722A'; - t['\u2F57'] = '\u7236'; - t['\u2F58'] = '\u723B'; - t['\u2F59'] = '\u723F'; - t['\u2F5A'] = '\u7247'; - t['\u2F5B'] = '\u7259'; - t['\u2F5C'] = '\u725B'; - t['\u2F5D'] = '\u72AC'; - t['\u2F5E'] = '\u7384'; - t['\u2F5F'] = '\u7389'; - t['\u2F60'] = '\u74DC'; - t['\u2F61'] = '\u74E6'; - t['\u2F62'] = '\u7518'; - t['\u2F63'] = '\u751F'; - t['\u2F64'] = '\u7528'; - t['\u2F65'] = '\u7530'; - t['\u2F66'] = '\u758B'; - t['\u2F67'] = '\u7592'; - t['\u2F68'] = '\u7676'; - t['\u2F69'] = '\u767D'; - t['\u2F6A'] = '\u76AE'; - t['\u2F6B'] = '\u76BF'; - t['\u2F6C'] = '\u76EE'; - t['\u2F6D'] = '\u77DB'; - t['\u2F6E'] = '\u77E2'; - t['\u2F6F'] = '\u77F3'; - t['\u2F70'] = '\u793A'; - t['\u2F71'] = '\u79B8'; - t['\u2F72'] = '\u79BE'; - t['\u2F73'] = '\u7A74'; - t['\u2F74'] = '\u7ACB'; - t['\u2F75'] = '\u7AF9'; - t['\u2F76'] = '\u7C73'; - t['\u2F77'] = '\u7CF8'; - t['\u2F78'] = '\u7F36'; - t['\u2F79'] = '\u7F51'; - t['\u2F7A'] = '\u7F8A'; - t['\u2F7B'] = '\u7FBD'; - t['\u2F7C'] = '\u8001'; - t['\u2F7D'] = '\u800C'; - t['\u2F7E'] = '\u8012'; - t['\u2F7F'] = '\u8033'; - t['\u2F80'] = '\u807F'; - t['\u2F81'] = '\u8089'; - t['\u2F82'] = '\u81E3'; - t['\u2F83'] = '\u81EA'; - t['\u2F84'] = '\u81F3'; - t['\u2F85'] = '\u81FC'; - t['\u2F86'] = '\u820C'; - t['\u2F87'] = '\u821B'; - t['\u2F88'] = '\u821F'; - t['\u2F89'] = '\u826E'; - t['\u2F8A'] = '\u8272'; - t['\u2F8B'] = '\u8278'; - t['\u2F8C'] = '\u864D'; - t['\u2F8D'] = '\u866B'; - t['\u2F8E'] = '\u8840'; - t['\u2F8F'] = '\u884C'; - t['\u2F90'] = '\u8863'; - t['\u2F91'] = '\u897E'; - t['\u2F92'] = '\u898B'; - t['\u2F93'] = '\u89D2'; - t['\u2F94'] = '\u8A00'; - t['\u2F95'] = '\u8C37'; - t['\u2F96'] = '\u8C46'; - t['\u2F97'] = '\u8C55'; - t['\u2F98'] = '\u8C78'; - t['\u2F99'] = '\u8C9D'; - t['\u2F9A'] = '\u8D64'; - t['\u2F9B'] = '\u8D70'; - t['\u2F9C'] = '\u8DB3'; - t['\u2F9D'] = '\u8EAB'; - t['\u2F9E'] = '\u8ECA'; - t['\u2F9F'] = '\u8F9B'; - t['\u2FA0'] = '\u8FB0'; - t['\u2FA1'] = '\u8FB5'; - t['\u2FA2'] = '\u9091'; - t['\u2FA3'] = '\u9149'; - t['\u2FA4'] = '\u91C6'; - t['\u2FA5'] = '\u91CC'; - t['\u2FA6'] = '\u91D1'; - t['\u2FA7'] = '\u9577'; - t['\u2FA8'] = '\u9580'; - t['\u2FA9'] = '\u961C'; - t['\u2FAA'] = '\u96B6'; - t['\u2FAB'] = '\u96B9'; - t['\u2FAC'] = '\u96E8'; - t['\u2FAD'] = '\u9751'; - t['\u2FAE'] = '\u975E'; - t['\u2FAF'] = '\u9762'; - t['\u2FB0'] = '\u9769'; - t['\u2FB1'] = '\u97CB'; - t['\u2FB2'] = '\u97ED'; - t['\u2FB3'] = '\u97F3'; - t['\u2FB4'] = '\u9801'; - t['\u2FB5'] = '\u98A8'; - t['\u2FB6'] = '\u98DB'; - t['\u2FB7'] = '\u98DF'; - t['\u2FB8'] = '\u9996'; - t['\u2FB9'] = '\u9999'; - t['\u2FBA'] = '\u99AC'; - t['\u2FBB'] = '\u9AA8'; - t['\u2FBC'] = '\u9AD8'; - t['\u2FBD'] = '\u9ADF'; - t['\u2FBE'] = '\u9B25'; - t['\u2FBF'] = '\u9B2F'; - t['\u2FC0'] = '\u9B32'; - t['\u2FC1'] = '\u9B3C'; - t['\u2FC2'] = '\u9B5A'; - t['\u2FC3'] = '\u9CE5'; - t['\u2FC4'] = '\u9E75'; - t['\u2FC5'] = '\u9E7F'; - t['\u2FC6'] = '\u9EA5'; - t['\u2FC7'] = '\u9EBB'; - t['\u2FC8'] = '\u9EC3'; - t['\u2FC9'] = '\u9ECD'; - t['\u2FCA'] = '\u9ED1'; - t['\u2FCB'] = '\u9EF9'; - t['\u2FCC'] = '\u9EFD'; - t['\u2FCD'] = '\u9F0E'; - t['\u2FCE'] = '\u9F13'; - t['\u2FCF'] = '\u9F20'; - t['\u2FD0'] = '\u9F3B'; - t['\u2FD1'] = '\u9F4A'; - t['\u2FD2'] = '\u9F52'; - t['\u2FD3'] = '\u9F8D'; - t['\u2FD4'] = '\u9F9C'; - t['\u2FD5'] = '\u9FA0'; - t['\u3036'] = '\u3012'; - t['\u3038'] = '\u5341'; - t['\u3039'] = '\u5344'; - t['\u303A'] = '\u5345'; - t['\u309B'] = '\u0020\u3099'; - t['\u309C'] = '\u0020\u309A'; - t['\u3131'] = '\u1100'; - t['\u3132'] = '\u1101'; - t['\u3133'] = '\u11AA'; - t['\u3134'] = '\u1102'; - t['\u3135'] = '\u11AC'; - t['\u3136'] = '\u11AD'; - t['\u3137'] = '\u1103'; - t['\u3138'] = '\u1104'; - t['\u3139'] = '\u1105'; - t['\u313A'] = '\u11B0'; - t['\u313B'] = '\u11B1'; - t['\u313C'] = '\u11B2'; - t['\u313D'] = '\u11B3'; - t['\u313E'] = '\u11B4'; - t['\u313F'] = '\u11B5'; - t['\u3140'] = '\u111A'; - t['\u3141'] = '\u1106'; - t['\u3142'] = '\u1107'; - t['\u3143'] = '\u1108'; - t['\u3144'] = '\u1121'; - t['\u3145'] = '\u1109'; - t['\u3146'] = '\u110A'; - t['\u3147'] = '\u110B'; - t['\u3148'] = '\u110C'; - t['\u3149'] = '\u110D'; - t['\u314A'] = '\u110E'; - t['\u314B'] = '\u110F'; - t['\u314C'] = '\u1110'; - t['\u314D'] = '\u1111'; - t['\u314E'] = '\u1112'; - t['\u314F'] = '\u1161'; - t['\u3150'] = '\u1162'; - t['\u3151'] = '\u1163'; - t['\u3152'] = '\u1164'; - t['\u3153'] = '\u1165'; - t['\u3154'] = '\u1166'; - t['\u3155'] = '\u1167'; - t['\u3156'] = '\u1168'; - t['\u3157'] = '\u1169'; - t['\u3158'] = '\u116A'; - t['\u3159'] = '\u116B'; - t['\u315A'] = '\u116C'; - t['\u315B'] = '\u116D'; - t['\u315C'] = '\u116E'; - t['\u315D'] = '\u116F'; - t['\u315E'] = '\u1170'; - t['\u315F'] = '\u1171'; - t['\u3160'] = '\u1172'; - t['\u3161'] = '\u1173'; - t['\u3162'] = '\u1174'; - t['\u3163'] = '\u1175'; - t['\u3164'] = '\u1160'; - t['\u3165'] = '\u1114'; - t['\u3166'] = '\u1115'; - t['\u3167'] = '\u11C7'; - t['\u3168'] = '\u11C8'; - t['\u3169'] = '\u11CC'; - t['\u316A'] = '\u11CE'; - t['\u316B'] = '\u11D3'; - t['\u316C'] = '\u11D7'; - t['\u316D'] = '\u11D9'; - t['\u316E'] = '\u111C'; - t['\u316F'] = '\u11DD'; - t['\u3170'] = '\u11DF'; - t['\u3171'] = '\u111D'; - t['\u3172'] = '\u111E'; - t['\u3173'] = '\u1120'; - t['\u3174'] = '\u1122'; - t['\u3175'] = '\u1123'; - t['\u3176'] = '\u1127'; - t['\u3177'] = '\u1129'; - t['\u3178'] = '\u112B'; - t['\u3179'] = '\u112C'; - t['\u317A'] = '\u112D'; - t['\u317B'] = '\u112E'; - t['\u317C'] = '\u112F'; - t['\u317D'] = '\u1132'; - t['\u317E'] = '\u1136'; - t['\u317F'] = '\u1140'; - t['\u3180'] = '\u1147'; - t['\u3181'] = '\u114C'; - t['\u3182'] = '\u11F1'; - t['\u3183'] = '\u11F2'; - t['\u3184'] = '\u1157'; - t['\u3185'] = '\u1158'; - t['\u3186'] = '\u1159'; - t['\u3187'] = '\u1184'; - t['\u3188'] = '\u1185'; - t['\u3189'] = '\u1188'; - t['\u318A'] = '\u1191'; - t['\u318B'] = '\u1192'; - t['\u318C'] = '\u1194'; - t['\u318D'] = '\u119E'; - t['\u318E'] = '\u11A1'; - t['\u3200'] = '\u0028\u1100\u0029'; - t['\u3201'] = '\u0028\u1102\u0029'; - t['\u3202'] = '\u0028\u1103\u0029'; - t['\u3203'] = '\u0028\u1105\u0029'; - t['\u3204'] = '\u0028\u1106\u0029'; - t['\u3205'] = '\u0028\u1107\u0029'; - t['\u3206'] = '\u0028\u1109\u0029'; - t['\u3207'] = '\u0028\u110B\u0029'; - t['\u3208'] = '\u0028\u110C\u0029'; - t['\u3209'] = '\u0028\u110E\u0029'; - t['\u320A'] = '\u0028\u110F\u0029'; - t['\u320B'] = '\u0028\u1110\u0029'; - t['\u320C'] = '\u0028\u1111\u0029'; - t['\u320D'] = '\u0028\u1112\u0029'; - t['\u320E'] = '\u0028\u1100\u1161\u0029'; - t['\u320F'] = '\u0028\u1102\u1161\u0029'; - t['\u3210'] = '\u0028\u1103\u1161\u0029'; - t['\u3211'] = '\u0028\u1105\u1161\u0029'; - t['\u3212'] = '\u0028\u1106\u1161\u0029'; - t['\u3213'] = '\u0028\u1107\u1161\u0029'; - t['\u3214'] = '\u0028\u1109\u1161\u0029'; - t['\u3215'] = '\u0028\u110B\u1161\u0029'; - t['\u3216'] = '\u0028\u110C\u1161\u0029'; - t['\u3217'] = '\u0028\u110E\u1161\u0029'; - t['\u3218'] = '\u0028\u110F\u1161\u0029'; - t['\u3219'] = '\u0028\u1110\u1161\u0029'; - t['\u321A'] = '\u0028\u1111\u1161\u0029'; - t['\u321B'] = '\u0028\u1112\u1161\u0029'; - t['\u321C'] = '\u0028\u110C\u116E\u0029'; - t['\u321D'] = '\u0028\u110B\u1169\u110C\u1165\u11AB\u0029'; - t['\u321E'] = '\u0028\u110B\u1169\u1112\u116E\u0029'; - t['\u3220'] = '\u0028\u4E00\u0029'; - t['\u3221'] = '\u0028\u4E8C\u0029'; - t['\u3222'] = '\u0028\u4E09\u0029'; - t['\u3223'] = '\u0028\u56DB\u0029'; - t['\u3224'] = '\u0028\u4E94\u0029'; - t['\u3225'] = '\u0028\u516D\u0029'; - t['\u3226'] = '\u0028\u4E03\u0029'; - t['\u3227'] = '\u0028\u516B\u0029'; - t['\u3228'] = '\u0028\u4E5D\u0029'; - t['\u3229'] = '\u0028\u5341\u0029'; - t['\u322A'] = '\u0028\u6708\u0029'; - t['\u322B'] = '\u0028\u706B\u0029'; - t['\u322C'] = '\u0028\u6C34\u0029'; - t['\u322D'] = '\u0028\u6728\u0029'; - t['\u322E'] = '\u0028\u91D1\u0029'; - t['\u322F'] = '\u0028\u571F\u0029'; - t['\u3230'] = '\u0028\u65E5\u0029'; - t['\u3231'] = '\u0028\u682A\u0029'; - t['\u3232'] = '\u0028\u6709\u0029'; - t['\u3233'] = '\u0028\u793E\u0029'; - t['\u3234'] = '\u0028\u540D\u0029'; - t['\u3235'] = '\u0028\u7279\u0029'; - t['\u3236'] = '\u0028\u8CA1\u0029'; - t['\u3237'] = '\u0028\u795D\u0029'; - t['\u3238'] = '\u0028\u52B4\u0029'; - t['\u3239'] = '\u0028\u4EE3\u0029'; - t['\u323A'] = '\u0028\u547C\u0029'; - t['\u323B'] = '\u0028\u5B66\u0029'; - t['\u323C'] = '\u0028\u76E3\u0029'; - t['\u323D'] = '\u0028\u4F01\u0029'; - t['\u323E'] = '\u0028\u8CC7\u0029'; - t['\u323F'] = '\u0028\u5354\u0029'; - t['\u3240'] = '\u0028\u796D\u0029'; - t['\u3241'] = '\u0028\u4F11\u0029'; - t['\u3242'] = '\u0028\u81EA\u0029'; - t['\u3243'] = '\u0028\u81F3\u0029'; - t['\u32C0'] = '\u0031\u6708'; - t['\u32C1'] = '\u0032\u6708'; - t['\u32C2'] = '\u0033\u6708'; - t['\u32C3'] = '\u0034\u6708'; - t['\u32C4'] = '\u0035\u6708'; - t['\u32C5'] = '\u0036\u6708'; - t['\u32C6'] = '\u0037\u6708'; - t['\u32C7'] = '\u0038\u6708'; - t['\u32C8'] = '\u0039\u6708'; - t['\u32C9'] = '\u0031\u0030\u6708'; - t['\u32CA'] = '\u0031\u0031\u6708'; - t['\u32CB'] = '\u0031\u0032\u6708'; - t['\u3358'] = '\u0030\u70B9'; - t['\u3359'] = '\u0031\u70B9'; - t['\u335A'] = '\u0032\u70B9'; - t['\u335B'] = '\u0033\u70B9'; - t['\u335C'] = '\u0034\u70B9'; - t['\u335D'] = '\u0035\u70B9'; - t['\u335E'] = '\u0036\u70B9'; - t['\u335F'] = '\u0037\u70B9'; - t['\u3360'] = '\u0038\u70B9'; - t['\u3361'] = '\u0039\u70B9'; - t['\u3362'] = '\u0031\u0030\u70B9'; - t['\u3363'] = '\u0031\u0031\u70B9'; - t['\u3364'] = '\u0031\u0032\u70B9'; - t['\u3365'] = '\u0031\u0033\u70B9'; - t['\u3366'] = '\u0031\u0034\u70B9'; - t['\u3367'] = '\u0031\u0035\u70B9'; - t['\u3368'] = '\u0031\u0036\u70B9'; - t['\u3369'] = '\u0031\u0037\u70B9'; - t['\u336A'] = '\u0031\u0038\u70B9'; - t['\u336B'] = '\u0031\u0039\u70B9'; - t['\u336C'] = '\u0032\u0030\u70B9'; - t['\u336D'] = '\u0032\u0031\u70B9'; - t['\u336E'] = '\u0032\u0032\u70B9'; - t['\u336F'] = '\u0032\u0033\u70B9'; - t['\u3370'] = '\u0032\u0034\u70B9'; - t['\u33E0'] = '\u0031\u65E5'; - t['\u33E1'] = '\u0032\u65E5'; - t['\u33E2'] = '\u0033\u65E5'; - t['\u33E3'] = '\u0034\u65E5'; - t['\u33E4'] = '\u0035\u65E5'; - t['\u33E5'] = '\u0036\u65E5'; - t['\u33E6'] = '\u0037\u65E5'; - t['\u33E7'] = '\u0038\u65E5'; - t['\u33E8'] = '\u0039\u65E5'; - t['\u33E9'] = '\u0031\u0030\u65E5'; - t['\u33EA'] = '\u0031\u0031\u65E5'; - t['\u33EB'] = '\u0031\u0032\u65E5'; - t['\u33EC'] = '\u0031\u0033\u65E5'; - t['\u33ED'] = '\u0031\u0034\u65E5'; - t['\u33EE'] = '\u0031\u0035\u65E5'; - t['\u33EF'] = '\u0031\u0036\u65E5'; - t['\u33F0'] = '\u0031\u0037\u65E5'; - t['\u33F1'] = '\u0031\u0038\u65E5'; - t['\u33F2'] = '\u0031\u0039\u65E5'; - t['\u33F3'] = '\u0032\u0030\u65E5'; - t['\u33F4'] = '\u0032\u0031\u65E5'; - t['\u33F5'] = '\u0032\u0032\u65E5'; - t['\u33F6'] = '\u0032\u0033\u65E5'; - t['\u33F7'] = '\u0032\u0034\u65E5'; - t['\u33F8'] = '\u0032\u0035\u65E5'; - t['\u33F9'] = '\u0032\u0036\u65E5'; - t['\u33FA'] = '\u0032\u0037\u65E5'; - t['\u33FB'] = '\u0032\u0038\u65E5'; - t['\u33FC'] = '\u0032\u0039\u65E5'; - t['\u33FD'] = '\u0033\u0030\u65E5'; - t['\u33FE'] = '\u0033\u0031\u65E5'; - t['\uFB00'] = '\u0066\u0066'; - t['\uFB01'] = '\u0066\u0069'; - t['\uFB02'] = '\u0066\u006C'; - t['\uFB03'] = '\u0066\u0066\u0069'; - t['\uFB04'] = '\u0066\u0066\u006C'; - t['\uFB05'] = '\u017F\u0074'; - t['\uFB06'] = '\u0073\u0074'; - t['\uFB13'] = '\u0574\u0576'; - t['\uFB14'] = '\u0574\u0565'; - t['\uFB15'] = '\u0574\u056B'; - t['\uFB16'] = '\u057E\u0576'; - t['\uFB17'] = '\u0574\u056D'; - t['\uFB4F'] = '\u05D0\u05DC'; - t['\uFB50'] = '\u0671'; - t['\uFB51'] = '\u0671'; - t['\uFB52'] = '\u067B'; - t['\uFB53'] = '\u067B'; - t['\uFB54'] = '\u067B'; - t['\uFB55'] = '\u067B'; - t['\uFB56'] = '\u067E'; - t['\uFB57'] = '\u067E'; - t['\uFB58'] = '\u067E'; - t['\uFB59'] = '\u067E'; - t['\uFB5A'] = '\u0680'; - t['\uFB5B'] = '\u0680'; - t['\uFB5C'] = '\u0680'; - t['\uFB5D'] = '\u0680'; - t['\uFB5E'] = '\u067A'; - t['\uFB5F'] = '\u067A'; - t['\uFB60'] = '\u067A'; - t['\uFB61'] = '\u067A'; - t['\uFB62'] = '\u067F'; - t['\uFB63'] = '\u067F'; - t['\uFB64'] = '\u067F'; - t['\uFB65'] = '\u067F'; - t['\uFB66'] = '\u0679'; - t['\uFB67'] = '\u0679'; - t['\uFB68'] = '\u0679'; - t['\uFB69'] = '\u0679'; - t['\uFB6A'] = '\u06A4'; - t['\uFB6B'] = '\u06A4'; - t['\uFB6C'] = '\u06A4'; - t['\uFB6D'] = '\u06A4'; - t['\uFB6E'] = '\u06A6'; - t['\uFB6F'] = '\u06A6'; - t['\uFB70'] = '\u06A6'; - t['\uFB71'] = '\u06A6'; - t['\uFB72'] = '\u0684'; - t['\uFB73'] = '\u0684'; - t['\uFB74'] = '\u0684'; - t['\uFB75'] = '\u0684'; - t['\uFB76'] = '\u0683'; - t['\uFB77'] = '\u0683'; - t['\uFB78'] = '\u0683'; - t['\uFB79'] = '\u0683'; - t['\uFB7A'] = '\u0686'; - t['\uFB7B'] = '\u0686'; - t['\uFB7C'] = '\u0686'; - t['\uFB7D'] = '\u0686'; - t['\uFB7E'] = '\u0687'; - t['\uFB7F'] = '\u0687'; - t['\uFB80'] = '\u0687'; - t['\uFB81'] = '\u0687'; - t['\uFB82'] = '\u068D'; - t['\uFB83'] = '\u068D'; - t['\uFB84'] = '\u068C'; - t['\uFB85'] = '\u068C'; - t['\uFB86'] = '\u068E'; - t['\uFB87'] = '\u068E'; - t['\uFB88'] = '\u0688'; - t['\uFB89'] = '\u0688'; - t['\uFB8A'] = '\u0698'; - t['\uFB8B'] = '\u0698'; - t['\uFB8C'] = '\u0691'; - t['\uFB8D'] = '\u0691'; - t['\uFB8E'] = '\u06A9'; - t['\uFB8F'] = '\u06A9'; - t['\uFB90'] = '\u06A9'; - t['\uFB91'] = '\u06A9'; - t['\uFB92'] = '\u06AF'; - t['\uFB93'] = '\u06AF'; - t['\uFB94'] = '\u06AF'; - t['\uFB95'] = '\u06AF'; - t['\uFB96'] = '\u06B3'; - t['\uFB97'] = '\u06B3'; - t['\uFB98'] = '\u06B3'; - t['\uFB99'] = '\u06B3'; - t['\uFB9A'] = '\u06B1'; - t['\uFB9B'] = '\u06B1'; - t['\uFB9C'] = '\u06B1'; - t['\uFB9D'] = '\u06B1'; - t['\uFB9E'] = '\u06BA'; - t['\uFB9F'] = '\u06BA'; - t['\uFBA0'] = '\u06BB'; - t['\uFBA1'] = '\u06BB'; - t['\uFBA2'] = '\u06BB'; - t['\uFBA3'] = '\u06BB'; - t['\uFBA4'] = '\u06C0'; - t['\uFBA5'] = '\u06C0'; - t['\uFBA6'] = '\u06C1'; - t['\uFBA7'] = '\u06C1'; - t['\uFBA8'] = '\u06C1'; - t['\uFBA9'] = '\u06C1'; - t['\uFBAA'] = '\u06BE'; - t['\uFBAB'] = '\u06BE'; - t['\uFBAC'] = '\u06BE'; - t['\uFBAD'] = '\u06BE'; - t['\uFBAE'] = '\u06D2'; - t['\uFBAF'] = '\u06D2'; - t['\uFBB0'] = '\u06D3'; - t['\uFBB1'] = '\u06D3'; - t['\uFBD3'] = '\u06AD'; - t['\uFBD4'] = '\u06AD'; - t['\uFBD5'] = '\u06AD'; - t['\uFBD6'] = '\u06AD'; - t['\uFBD7'] = '\u06C7'; - t['\uFBD8'] = '\u06C7'; - t['\uFBD9'] = '\u06C6'; - t['\uFBDA'] = '\u06C6'; - t['\uFBDB'] = '\u06C8'; - t['\uFBDC'] = '\u06C8'; - t['\uFBDD'] = '\u0677'; - t['\uFBDE'] = '\u06CB'; - t['\uFBDF'] = '\u06CB'; - t['\uFBE0'] = '\u06C5'; - t['\uFBE1'] = '\u06C5'; - t['\uFBE2'] = '\u06C9'; - t['\uFBE3'] = '\u06C9'; - t['\uFBE4'] = '\u06D0'; - t['\uFBE5'] = '\u06D0'; - t['\uFBE6'] = '\u06D0'; - t['\uFBE7'] = '\u06D0'; - t['\uFBE8'] = '\u0649'; - t['\uFBE9'] = '\u0649'; - t['\uFBEA'] = '\u0626\u0627'; - t['\uFBEB'] = '\u0626\u0627'; - t['\uFBEC'] = '\u0626\u06D5'; - t['\uFBED'] = '\u0626\u06D5'; - t['\uFBEE'] = '\u0626\u0648'; - t['\uFBEF'] = '\u0626\u0648'; - t['\uFBF0'] = '\u0626\u06C7'; - t['\uFBF1'] = '\u0626\u06C7'; - t['\uFBF2'] = '\u0626\u06C6'; - t['\uFBF3'] = '\u0626\u06C6'; - t['\uFBF4'] = '\u0626\u06C8'; - t['\uFBF5'] = '\u0626\u06C8'; - t['\uFBF6'] = '\u0626\u06D0'; - t['\uFBF7'] = '\u0626\u06D0'; - t['\uFBF8'] = '\u0626\u06D0'; - t['\uFBF9'] = '\u0626\u0649'; - t['\uFBFA'] = '\u0626\u0649'; - t['\uFBFB'] = '\u0626\u0649'; - t['\uFBFC'] = '\u06CC'; - t['\uFBFD'] = '\u06CC'; - t['\uFBFE'] = '\u06CC'; - t['\uFBFF'] = '\u06CC'; - t['\uFC00'] = '\u0626\u062C'; - t['\uFC01'] = '\u0626\u062D'; - t['\uFC02'] = '\u0626\u0645'; - t['\uFC03'] = '\u0626\u0649'; - t['\uFC04'] = '\u0626\u064A'; - t['\uFC05'] = '\u0628\u062C'; - t['\uFC06'] = '\u0628\u062D'; - t['\uFC07'] = '\u0628\u062E'; - t['\uFC08'] = '\u0628\u0645'; - t['\uFC09'] = '\u0628\u0649'; - t['\uFC0A'] = '\u0628\u064A'; - t['\uFC0B'] = '\u062A\u062C'; - t['\uFC0C'] = '\u062A\u062D'; - t['\uFC0D'] = '\u062A\u062E'; - t['\uFC0E'] = '\u062A\u0645'; - t['\uFC0F'] = '\u062A\u0649'; - t['\uFC10'] = '\u062A\u064A'; - t['\uFC11'] = '\u062B\u062C'; - t['\uFC12'] = '\u062B\u0645'; - t['\uFC13'] = '\u062B\u0649'; - t['\uFC14'] = '\u062B\u064A'; - t['\uFC15'] = '\u062C\u062D'; - t['\uFC16'] = '\u062C\u0645'; - t['\uFC17'] = '\u062D\u062C'; - t['\uFC18'] = '\u062D\u0645'; - t['\uFC19'] = '\u062E\u062C'; - t['\uFC1A'] = '\u062E\u062D'; - t['\uFC1B'] = '\u062E\u0645'; - t['\uFC1C'] = '\u0633\u062C'; - t['\uFC1D'] = '\u0633\u062D'; - t['\uFC1E'] = '\u0633\u062E'; - t['\uFC1F'] = '\u0633\u0645'; - t['\uFC20'] = '\u0635\u062D'; - t['\uFC21'] = '\u0635\u0645'; - t['\uFC22'] = '\u0636\u062C'; - t['\uFC23'] = '\u0636\u062D'; - t['\uFC24'] = '\u0636\u062E'; - t['\uFC25'] = '\u0636\u0645'; - t['\uFC26'] = '\u0637\u062D'; - t['\uFC27'] = '\u0637\u0645'; - t['\uFC28'] = '\u0638\u0645'; - t['\uFC29'] = '\u0639\u062C'; - t['\uFC2A'] = '\u0639\u0645'; - t['\uFC2B'] = '\u063A\u062C'; - t['\uFC2C'] = '\u063A\u0645'; - t['\uFC2D'] = '\u0641\u062C'; - t['\uFC2E'] = '\u0641\u062D'; - t['\uFC2F'] = '\u0641\u062E'; - t['\uFC30'] = '\u0641\u0645'; - t['\uFC31'] = '\u0641\u0649'; - t['\uFC32'] = '\u0641\u064A'; - t['\uFC33'] = '\u0642\u062D'; - t['\uFC34'] = '\u0642\u0645'; - t['\uFC35'] = '\u0642\u0649'; - t['\uFC36'] = '\u0642\u064A'; - t['\uFC37'] = '\u0643\u0627'; - t['\uFC38'] = '\u0643\u062C'; - t['\uFC39'] = '\u0643\u062D'; - t['\uFC3A'] = '\u0643\u062E'; - t['\uFC3B'] = '\u0643\u0644'; - t['\uFC3C'] = '\u0643\u0645'; - t['\uFC3D'] = '\u0643\u0649'; - t['\uFC3E'] = '\u0643\u064A'; - t['\uFC3F'] = '\u0644\u062C'; - t['\uFC40'] = '\u0644\u062D'; - t['\uFC41'] = '\u0644\u062E'; - t['\uFC42'] = '\u0644\u0645'; - t['\uFC43'] = '\u0644\u0649'; - t['\uFC44'] = '\u0644\u064A'; - t['\uFC45'] = '\u0645\u062C'; - t['\uFC46'] = '\u0645\u062D'; - t['\uFC47'] = '\u0645\u062E'; - t['\uFC48'] = '\u0645\u0645'; - t['\uFC49'] = '\u0645\u0649'; - t['\uFC4A'] = '\u0645\u064A'; - t['\uFC4B'] = '\u0646\u062C'; - t['\uFC4C'] = '\u0646\u062D'; - t['\uFC4D'] = '\u0646\u062E'; - t['\uFC4E'] = '\u0646\u0645'; - t['\uFC4F'] = '\u0646\u0649'; - t['\uFC50'] = '\u0646\u064A'; - t['\uFC51'] = '\u0647\u062C'; - t['\uFC52'] = '\u0647\u0645'; - t['\uFC53'] = '\u0647\u0649'; - t['\uFC54'] = '\u0647\u064A'; - t['\uFC55'] = '\u064A\u062C'; - t['\uFC56'] = '\u064A\u062D'; - t['\uFC57'] = '\u064A\u062E'; - t['\uFC58'] = '\u064A\u0645'; - t['\uFC59'] = '\u064A\u0649'; - t['\uFC5A'] = '\u064A\u064A'; - t['\uFC5B'] = '\u0630\u0670'; - t['\uFC5C'] = '\u0631\u0670'; - t['\uFC5D'] = '\u0649\u0670'; - t['\uFC5E'] = '\u0020\u064C\u0651'; - t['\uFC5F'] = '\u0020\u064D\u0651'; - t['\uFC60'] = '\u0020\u064E\u0651'; - t['\uFC61'] = '\u0020\u064F\u0651'; - t['\uFC62'] = '\u0020\u0650\u0651'; - t['\uFC63'] = '\u0020\u0651\u0670'; - t['\uFC64'] = '\u0626\u0631'; - t['\uFC65'] = '\u0626\u0632'; - t['\uFC66'] = '\u0626\u0645'; - t['\uFC67'] = '\u0626\u0646'; - t['\uFC68'] = '\u0626\u0649'; - t['\uFC69'] = '\u0626\u064A'; - t['\uFC6A'] = '\u0628\u0631'; - t['\uFC6B'] = '\u0628\u0632'; - t['\uFC6C'] = '\u0628\u0645'; - t['\uFC6D'] = '\u0628\u0646'; - t['\uFC6E'] = '\u0628\u0649'; - t['\uFC6F'] = '\u0628\u064A'; - t['\uFC70'] = '\u062A\u0631'; - t['\uFC71'] = '\u062A\u0632'; - t['\uFC72'] = '\u062A\u0645'; - t['\uFC73'] = '\u062A\u0646'; - t['\uFC74'] = '\u062A\u0649'; - t['\uFC75'] = '\u062A\u064A'; - t['\uFC76'] = '\u062B\u0631'; - t['\uFC77'] = '\u062B\u0632'; - t['\uFC78'] = '\u062B\u0645'; - t['\uFC79'] = '\u062B\u0646'; - t['\uFC7A'] = '\u062B\u0649'; - t['\uFC7B'] = '\u062B\u064A'; - t['\uFC7C'] = '\u0641\u0649'; - t['\uFC7D'] = '\u0641\u064A'; - t['\uFC7E'] = '\u0642\u0649'; - t['\uFC7F'] = '\u0642\u064A'; - t['\uFC80'] = '\u0643\u0627'; - t['\uFC81'] = '\u0643\u0644'; - t['\uFC82'] = '\u0643\u0645'; - t['\uFC83'] = '\u0643\u0649'; - t['\uFC84'] = '\u0643\u064A'; - t['\uFC85'] = '\u0644\u0645'; - t['\uFC86'] = '\u0644\u0649'; - t['\uFC87'] = '\u0644\u064A'; - t['\uFC88'] = '\u0645\u0627'; - t['\uFC89'] = '\u0645\u0645'; - t['\uFC8A'] = '\u0646\u0631'; - t['\uFC8B'] = '\u0646\u0632'; - t['\uFC8C'] = '\u0646\u0645'; - t['\uFC8D'] = '\u0646\u0646'; - t['\uFC8E'] = '\u0646\u0649'; - t['\uFC8F'] = '\u0646\u064A'; - t['\uFC90'] = '\u0649\u0670'; - t['\uFC91'] = '\u064A\u0631'; - t['\uFC92'] = '\u064A\u0632'; - t['\uFC93'] = '\u064A\u0645'; - t['\uFC94'] = '\u064A\u0646'; - t['\uFC95'] = '\u064A\u0649'; - t['\uFC96'] = '\u064A\u064A'; - t['\uFC97'] = '\u0626\u062C'; - t['\uFC98'] = '\u0626\u062D'; - t['\uFC99'] = '\u0626\u062E'; - t['\uFC9A'] = '\u0626\u0645'; - t['\uFC9B'] = '\u0626\u0647'; - t['\uFC9C'] = '\u0628\u062C'; - t['\uFC9D'] = '\u0628\u062D'; - t['\uFC9E'] = '\u0628\u062E'; - t['\uFC9F'] = '\u0628\u0645'; - t['\uFCA0'] = '\u0628\u0647'; - t['\uFCA1'] = '\u062A\u062C'; - t['\uFCA2'] = '\u062A\u062D'; - t['\uFCA3'] = '\u062A\u062E'; - t['\uFCA4'] = '\u062A\u0645'; - t['\uFCA5'] = '\u062A\u0647'; - t['\uFCA6'] = '\u062B\u0645'; - t['\uFCA7'] = '\u062C\u062D'; - t['\uFCA8'] = '\u062C\u0645'; - t['\uFCA9'] = '\u062D\u062C'; - t['\uFCAA'] = '\u062D\u0645'; - t['\uFCAB'] = '\u062E\u062C'; - t['\uFCAC'] = '\u062E\u0645'; - t['\uFCAD'] = '\u0633\u062C'; - t['\uFCAE'] = '\u0633\u062D'; - t['\uFCAF'] = '\u0633\u062E'; - t['\uFCB0'] = '\u0633\u0645'; - t['\uFCB1'] = '\u0635\u062D'; - t['\uFCB2'] = '\u0635\u062E'; - t['\uFCB3'] = '\u0635\u0645'; - t['\uFCB4'] = '\u0636\u062C'; - t['\uFCB5'] = '\u0636\u062D'; - t['\uFCB6'] = '\u0636\u062E'; - t['\uFCB7'] = '\u0636\u0645'; - t['\uFCB8'] = '\u0637\u062D'; - t['\uFCB9'] = '\u0638\u0645'; - t['\uFCBA'] = '\u0639\u062C'; - t['\uFCBB'] = '\u0639\u0645'; - t['\uFCBC'] = '\u063A\u062C'; - t['\uFCBD'] = '\u063A\u0645'; - t['\uFCBE'] = '\u0641\u062C'; - t['\uFCBF'] = '\u0641\u062D'; - t['\uFCC0'] = '\u0641\u062E'; - t['\uFCC1'] = '\u0641\u0645'; - t['\uFCC2'] = '\u0642\u062D'; - t['\uFCC3'] = '\u0642\u0645'; - t['\uFCC4'] = '\u0643\u062C'; - t['\uFCC5'] = '\u0643\u062D'; - t['\uFCC6'] = '\u0643\u062E'; - t['\uFCC7'] = '\u0643\u0644'; - t['\uFCC8'] = '\u0643\u0645'; - t['\uFCC9'] = '\u0644\u062C'; - t['\uFCCA'] = '\u0644\u062D'; - t['\uFCCB'] = '\u0644\u062E'; - t['\uFCCC'] = '\u0644\u0645'; - t['\uFCCD'] = '\u0644\u0647'; - t['\uFCCE'] = '\u0645\u062C'; - t['\uFCCF'] = '\u0645\u062D'; - t['\uFCD0'] = '\u0645\u062E'; - t['\uFCD1'] = '\u0645\u0645'; - t['\uFCD2'] = '\u0646\u062C'; - t['\uFCD3'] = '\u0646\u062D'; - t['\uFCD4'] = '\u0646\u062E'; - t['\uFCD5'] = '\u0646\u0645'; - t['\uFCD6'] = '\u0646\u0647'; - t['\uFCD7'] = '\u0647\u062C'; - t['\uFCD8'] = '\u0647\u0645'; - t['\uFCD9'] = '\u0647\u0670'; - t['\uFCDA'] = '\u064A\u062C'; - t['\uFCDB'] = '\u064A\u062D'; - t['\uFCDC'] = '\u064A\u062E'; - t['\uFCDD'] = '\u064A\u0645'; - t['\uFCDE'] = '\u064A\u0647'; - t['\uFCDF'] = '\u0626\u0645'; - t['\uFCE0'] = '\u0626\u0647'; - t['\uFCE1'] = '\u0628\u0645'; - t['\uFCE2'] = '\u0628\u0647'; - t['\uFCE3'] = '\u062A\u0645'; - t['\uFCE4'] = '\u062A\u0647'; - t['\uFCE5'] = '\u062B\u0645'; - t['\uFCE6'] = '\u062B\u0647'; - t['\uFCE7'] = '\u0633\u0645'; - t['\uFCE8'] = '\u0633\u0647'; - t['\uFCE9'] = '\u0634\u0645'; - t['\uFCEA'] = '\u0634\u0647'; - t['\uFCEB'] = '\u0643\u0644'; - t['\uFCEC'] = '\u0643\u0645'; - t['\uFCED'] = '\u0644\u0645'; - t['\uFCEE'] = '\u0646\u0645'; - t['\uFCEF'] = '\u0646\u0647'; - t['\uFCF0'] = '\u064A\u0645'; - t['\uFCF1'] = '\u064A\u0647'; - t['\uFCF2'] = '\u0640\u064E\u0651'; - t['\uFCF3'] = '\u0640\u064F\u0651'; - t['\uFCF4'] = '\u0640\u0650\u0651'; - t['\uFCF5'] = '\u0637\u0649'; - t['\uFCF6'] = '\u0637\u064A'; - t['\uFCF7'] = '\u0639\u0649'; - t['\uFCF8'] = '\u0639\u064A'; - t['\uFCF9'] = '\u063A\u0649'; - t['\uFCFA'] = '\u063A\u064A'; - t['\uFCFB'] = '\u0633\u0649'; - t['\uFCFC'] = '\u0633\u064A'; - t['\uFCFD'] = '\u0634\u0649'; - t['\uFCFE'] = '\u0634\u064A'; - t['\uFCFF'] = '\u062D\u0649'; - t['\uFD00'] = '\u062D\u064A'; - t['\uFD01'] = '\u062C\u0649'; - t['\uFD02'] = '\u062C\u064A'; - t['\uFD03'] = '\u062E\u0649'; - t['\uFD04'] = '\u062E\u064A'; - t['\uFD05'] = '\u0635\u0649'; - t['\uFD06'] = '\u0635\u064A'; - t['\uFD07'] = '\u0636\u0649'; - t['\uFD08'] = '\u0636\u064A'; - t['\uFD09'] = '\u0634\u062C'; - t['\uFD0A'] = '\u0634\u062D'; - t['\uFD0B'] = '\u0634\u062E'; - t['\uFD0C'] = '\u0634\u0645'; - t['\uFD0D'] = '\u0634\u0631'; - t['\uFD0E'] = '\u0633\u0631'; - t['\uFD0F'] = '\u0635\u0631'; - t['\uFD10'] = '\u0636\u0631'; - t['\uFD11'] = '\u0637\u0649'; - t['\uFD12'] = '\u0637\u064A'; - t['\uFD13'] = '\u0639\u0649'; - t['\uFD14'] = '\u0639\u064A'; - t['\uFD15'] = '\u063A\u0649'; - t['\uFD16'] = '\u063A\u064A'; - t['\uFD17'] = '\u0633\u0649'; - t['\uFD18'] = '\u0633\u064A'; - t['\uFD19'] = '\u0634\u0649'; - t['\uFD1A'] = '\u0634\u064A'; - t['\uFD1B'] = '\u062D\u0649'; - t['\uFD1C'] = '\u062D\u064A'; - t['\uFD1D'] = '\u062C\u0649'; - t['\uFD1E'] = '\u062C\u064A'; - t['\uFD1F'] = '\u062E\u0649'; - t['\uFD20'] = '\u062E\u064A'; - t['\uFD21'] = '\u0635\u0649'; - t['\uFD22'] = '\u0635\u064A'; - t['\uFD23'] = '\u0636\u0649'; - t['\uFD24'] = '\u0636\u064A'; - t['\uFD25'] = '\u0634\u062C'; - t['\uFD26'] = '\u0634\u062D'; - t['\uFD27'] = '\u0634\u062E'; - t['\uFD28'] = '\u0634\u0645'; - t['\uFD29'] = '\u0634\u0631'; - t['\uFD2A'] = '\u0633\u0631'; - t['\uFD2B'] = '\u0635\u0631'; - t['\uFD2C'] = '\u0636\u0631'; - t['\uFD2D'] = '\u0634\u062C'; - t['\uFD2E'] = '\u0634\u062D'; - t['\uFD2F'] = '\u0634\u062E'; - t['\uFD30'] = '\u0634\u0645'; - t['\uFD31'] = '\u0633\u0647'; - t['\uFD32'] = '\u0634\u0647'; - t['\uFD33'] = '\u0637\u0645'; - t['\uFD34'] = '\u0633\u062C'; - t['\uFD35'] = '\u0633\u062D'; - t['\uFD36'] = '\u0633\u062E'; - t['\uFD37'] = '\u0634\u062C'; - t['\uFD38'] = '\u0634\u062D'; - t['\uFD39'] = '\u0634\u062E'; - t['\uFD3A'] = '\u0637\u0645'; - t['\uFD3B'] = '\u0638\u0645'; - t['\uFD3C'] = '\u0627\u064B'; - t['\uFD3D'] = '\u0627\u064B'; - t['\uFD50'] = '\u062A\u062C\u0645'; - t['\uFD51'] = '\u062A\u062D\u062C'; - t['\uFD52'] = '\u062A\u062D\u062C'; - t['\uFD53'] = '\u062A\u062D\u0645'; - t['\uFD54'] = '\u062A\u062E\u0645'; - t['\uFD55'] = '\u062A\u0645\u062C'; - t['\uFD56'] = '\u062A\u0645\u062D'; - t['\uFD57'] = '\u062A\u0645\u062E'; - t['\uFD58'] = '\u062C\u0645\u062D'; - t['\uFD59'] = '\u062C\u0645\u062D'; - t['\uFD5A'] = '\u062D\u0645\u064A'; - t['\uFD5B'] = '\u062D\u0645\u0649'; - t['\uFD5C'] = '\u0633\u062D\u062C'; - t['\uFD5D'] = '\u0633\u062C\u062D'; - t['\uFD5E'] = '\u0633\u062C\u0649'; - t['\uFD5F'] = '\u0633\u0645\u062D'; - t['\uFD60'] = '\u0633\u0645\u062D'; - t['\uFD61'] = '\u0633\u0645\u062C'; - t['\uFD62'] = '\u0633\u0645\u0645'; - t['\uFD63'] = '\u0633\u0645\u0645'; - t['\uFD64'] = '\u0635\u062D\u062D'; - t['\uFD65'] = '\u0635\u062D\u062D'; - t['\uFD66'] = '\u0635\u0645\u0645'; - t['\uFD67'] = '\u0634\u062D\u0645'; - t['\uFD68'] = '\u0634\u062D\u0645'; - t['\uFD69'] = '\u0634\u062C\u064A'; - t['\uFD6A'] = '\u0634\u0645\u062E'; - t['\uFD6B'] = '\u0634\u0645\u062E'; - t['\uFD6C'] = '\u0634\u0645\u0645'; - t['\uFD6D'] = '\u0634\u0645\u0645'; - t['\uFD6E'] = '\u0636\u062D\u0649'; - t['\uFD6F'] = '\u0636\u062E\u0645'; - t['\uFD70'] = '\u0636\u062E\u0645'; - t['\uFD71'] = '\u0637\u0645\u062D'; - t['\uFD72'] = '\u0637\u0645\u062D'; - t['\uFD73'] = '\u0637\u0645\u0645'; - t['\uFD74'] = '\u0637\u0645\u064A'; - t['\uFD75'] = '\u0639\u062C\u0645'; - t['\uFD76'] = '\u0639\u0645\u0645'; - t['\uFD77'] = '\u0639\u0645\u0645'; - t['\uFD78'] = '\u0639\u0645\u0649'; - t['\uFD79'] = '\u063A\u0645\u0645'; - t['\uFD7A'] = '\u063A\u0645\u064A'; - t['\uFD7B'] = '\u063A\u0645\u0649'; - t['\uFD7C'] = '\u0641\u062E\u0645'; - t['\uFD7D'] = '\u0641\u062E\u0645'; - t['\uFD7E'] = '\u0642\u0645\u062D'; - t['\uFD7F'] = '\u0642\u0645\u0645'; - t['\uFD80'] = '\u0644\u062D\u0645'; - t['\uFD81'] = '\u0644\u062D\u064A'; - t['\uFD82'] = '\u0644\u062D\u0649'; - t['\uFD83'] = '\u0644\u062C\u062C'; - t['\uFD84'] = '\u0644\u062C\u062C'; - t['\uFD85'] = '\u0644\u062E\u0645'; - t['\uFD86'] = '\u0644\u062E\u0645'; - t['\uFD87'] = '\u0644\u0645\u062D'; - t['\uFD88'] = '\u0644\u0645\u062D'; - t['\uFD89'] = '\u0645\u062D\u062C'; - t['\uFD8A'] = '\u0645\u062D\u0645'; - t['\uFD8B'] = '\u0645\u062D\u064A'; - t['\uFD8C'] = '\u0645\u062C\u062D'; - t['\uFD8D'] = '\u0645\u062C\u0645'; - t['\uFD8E'] = '\u0645\u062E\u062C'; - t['\uFD8F'] = '\u0645\u062E\u0645'; - t['\uFD92'] = '\u0645\u062C\u062E'; - t['\uFD93'] = '\u0647\u0645\u062C'; - t['\uFD94'] = '\u0647\u0645\u0645'; - t['\uFD95'] = '\u0646\u062D\u0645'; - t['\uFD96'] = '\u0646\u062D\u0649'; - t['\uFD97'] = '\u0646\u062C\u0645'; - t['\uFD98'] = '\u0646\u062C\u0645'; - t['\uFD99'] = '\u0646\u062C\u0649'; - t['\uFD9A'] = '\u0646\u0645\u064A'; - t['\uFD9B'] = '\u0646\u0645\u0649'; - t['\uFD9C'] = '\u064A\u0645\u0645'; - t['\uFD9D'] = '\u064A\u0645\u0645'; - t['\uFD9E'] = '\u0628\u062E\u064A'; - t['\uFD9F'] = '\u062A\u062C\u064A'; - t['\uFDA0'] = '\u062A\u062C\u0649'; - t['\uFDA1'] = '\u062A\u062E\u064A'; - t['\uFDA2'] = '\u062A\u062E\u0649'; - t['\uFDA3'] = '\u062A\u0645\u064A'; - t['\uFDA4'] = '\u062A\u0645\u0649'; - t['\uFDA5'] = '\u062C\u0645\u064A'; - t['\uFDA6'] = '\u062C\u062D\u0649'; - t['\uFDA7'] = '\u062C\u0645\u0649'; - t['\uFDA8'] = '\u0633\u062E\u0649'; - t['\uFDA9'] = '\u0635\u062D\u064A'; - t['\uFDAA'] = '\u0634\u062D\u064A'; - t['\uFDAB'] = '\u0636\u062D\u064A'; - t['\uFDAC'] = '\u0644\u062C\u064A'; - t['\uFDAD'] = '\u0644\u0645\u064A'; - t['\uFDAE'] = '\u064A\u062D\u064A'; - t['\uFDAF'] = '\u064A\u062C\u064A'; - t['\uFDB0'] = '\u064A\u0645\u064A'; - t['\uFDB1'] = '\u0645\u0645\u064A'; - t['\uFDB2'] = '\u0642\u0645\u064A'; - t['\uFDB3'] = '\u0646\u062D\u064A'; - t['\uFDB4'] = '\u0642\u0645\u062D'; - t['\uFDB5'] = '\u0644\u062D\u0645'; - t['\uFDB6'] = '\u0639\u0645\u064A'; - t['\uFDB7'] = '\u0643\u0645\u064A'; - t['\uFDB8'] = '\u0646\u062C\u062D'; - t['\uFDB9'] = '\u0645\u062E\u064A'; - t['\uFDBA'] = '\u0644\u062C\u0645'; - t['\uFDBB'] = '\u0643\u0645\u0645'; - t['\uFDBC'] = '\u0644\u062C\u0645'; - t['\uFDBD'] = '\u0646\u062C\u062D'; - t['\uFDBE'] = '\u062C\u062D\u064A'; - t['\uFDBF'] = '\u062D\u062C\u064A'; - t['\uFDC0'] = '\u0645\u062C\u064A'; - t['\uFDC1'] = '\u0641\u0645\u064A'; - t['\uFDC2'] = '\u0628\u062D\u064A'; - t['\uFDC3'] = '\u0643\u0645\u0645'; - t['\uFDC4'] = '\u0639\u062C\u0645'; - t['\uFDC5'] = '\u0635\u0645\u0645'; - t['\uFDC6'] = '\u0633\u062E\u064A'; - t['\uFDC7'] = '\u0646\u062C\u064A'; - t['\uFE49'] = '\u203E'; - t['\uFE4A'] = '\u203E'; - t['\uFE4B'] = '\u203E'; - t['\uFE4C'] = '\u203E'; - t['\uFE4D'] = '\u005F'; - t['\uFE4E'] = '\u005F'; - t['\uFE4F'] = '\u005F'; - t['\uFE80'] = '\u0621'; - t['\uFE81'] = '\u0622'; - t['\uFE82'] = '\u0622'; - t['\uFE83'] = '\u0623'; - t['\uFE84'] = '\u0623'; - t['\uFE85'] = '\u0624'; - t['\uFE86'] = '\u0624'; - t['\uFE87'] = '\u0625'; - t['\uFE88'] = '\u0625'; - t['\uFE89'] = '\u0626'; - t['\uFE8A'] = '\u0626'; - t['\uFE8B'] = '\u0626'; - t['\uFE8C'] = '\u0626'; - t['\uFE8D'] = '\u0627'; - t['\uFE8E'] = '\u0627'; - t['\uFE8F'] = '\u0628'; - t['\uFE90'] = '\u0628'; - t['\uFE91'] = '\u0628'; - t['\uFE92'] = '\u0628'; - t['\uFE93'] = '\u0629'; - t['\uFE94'] = '\u0629'; - t['\uFE95'] = '\u062A'; - t['\uFE96'] = '\u062A'; - t['\uFE97'] = '\u062A'; - t['\uFE98'] = '\u062A'; - t['\uFE99'] = '\u062B'; - t['\uFE9A'] = '\u062B'; - t['\uFE9B'] = '\u062B'; - t['\uFE9C'] = '\u062B'; - t['\uFE9D'] = '\u062C'; - t['\uFE9E'] = '\u062C'; - t['\uFE9F'] = '\u062C'; - t['\uFEA0'] = '\u062C'; - t['\uFEA1'] = '\u062D'; - t['\uFEA2'] = '\u062D'; - t['\uFEA3'] = '\u062D'; - t['\uFEA4'] = '\u062D'; - t['\uFEA5'] = '\u062E'; - t['\uFEA6'] = '\u062E'; - t['\uFEA7'] = '\u062E'; - t['\uFEA8'] = '\u062E'; - t['\uFEA9'] = '\u062F'; - t['\uFEAA'] = '\u062F'; - t['\uFEAB'] = '\u0630'; - t['\uFEAC'] = '\u0630'; - t['\uFEAD'] = '\u0631'; - t['\uFEAE'] = '\u0631'; - t['\uFEAF'] = '\u0632'; - t['\uFEB0'] = '\u0632'; - t['\uFEB1'] = '\u0633'; - t['\uFEB2'] = '\u0633'; - t['\uFEB3'] = '\u0633'; - t['\uFEB4'] = '\u0633'; - t['\uFEB5'] = '\u0634'; - t['\uFEB6'] = '\u0634'; - t['\uFEB7'] = '\u0634'; - t['\uFEB8'] = '\u0634'; - t['\uFEB9'] = '\u0635'; - t['\uFEBA'] = '\u0635'; - t['\uFEBB'] = '\u0635'; - t['\uFEBC'] = '\u0635'; - t['\uFEBD'] = '\u0636'; - t['\uFEBE'] = '\u0636'; - t['\uFEBF'] = '\u0636'; - t['\uFEC0'] = '\u0636'; - t['\uFEC1'] = '\u0637'; - t['\uFEC2'] = '\u0637'; - t['\uFEC3'] = '\u0637'; - t['\uFEC4'] = '\u0637'; - t['\uFEC5'] = '\u0638'; - t['\uFEC6'] = '\u0638'; - t['\uFEC7'] = '\u0638'; - t['\uFEC8'] = '\u0638'; - t['\uFEC9'] = '\u0639'; - t['\uFECA'] = '\u0639'; - t['\uFECB'] = '\u0639'; - t['\uFECC'] = '\u0639'; - t['\uFECD'] = '\u063A'; - t['\uFECE'] = '\u063A'; - t['\uFECF'] = '\u063A'; - t['\uFED0'] = '\u063A'; - t['\uFED1'] = '\u0641'; - t['\uFED2'] = '\u0641'; - t['\uFED3'] = '\u0641'; - t['\uFED4'] = '\u0641'; - t['\uFED5'] = '\u0642'; - t['\uFED6'] = '\u0642'; - t['\uFED7'] = '\u0642'; - t['\uFED8'] = '\u0642'; - t['\uFED9'] = '\u0643'; - t['\uFEDA'] = '\u0643'; - t['\uFEDB'] = '\u0643'; - t['\uFEDC'] = '\u0643'; - t['\uFEDD'] = '\u0644'; - t['\uFEDE'] = '\u0644'; - t['\uFEDF'] = '\u0644'; - t['\uFEE0'] = '\u0644'; - t['\uFEE1'] = '\u0645'; - t['\uFEE2'] = '\u0645'; - t['\uFEE3'] = '\u0645'; - t['\uFEE4'] = '\u0645'; - t['\uFEE5'] = '\u0646'; - t['\uFEE6'] = '\u0646'; - t['\uFEE7'] = '\u0646'; - t['\uFEE8'] = '\u0646'; - t['\uFEE9'] = '\u0647'; - t['\uFEEA'] = '\u0647'; - t['\uFEEB'] = '\u0647'; - t['\uFEEC'] = '\u0647'; - t['\uFEED'] = '\u0648'; - t['\uFEEE'] = '\u0648'; - t['\uFEEF'] = '\u0649'; - t['\uFEF0'] = '\u0649'; - t['\uFEF1'] = '\u064A'; - t['\uFEF2'] = '\u064A'; - t['\uFEF3'] = '\u064A'; - t['\uFEF4'] = '\u064A'; - t['\uFEF5'] = '\u0644\u0622'; - t['\uFEF6'] = '\u0644\u0622'; - t['\uFEF7'] = '\u0644\u0623'; - t['\uFEF8'] = '\u0644\u0623'; - t['\uFEF9'] = '\u0644\u0625'; - t['\uFEFA'] = '\u0644\u0625'; - t['\uFEFB'] = '\u0644\u0627'; - t['\uFEFC'] = '\u0644\u0627'; -}); -function reverseIfRtl(chars) { - var charsLength = chars.length; - if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) { - return chars; - } - var s = ''; - for (var ii = charsLength - 1; ii >= 0; ii--) { - s += chars[ii]; - } - return s; -} -exports.mapSpecialUnicodeValues = mapSpecialUnicodeValues; -exports.reverseIfRtl = reverseIfRtl; -exports.getUnicodeRangeFor = getUnicodeRangeFor; -exports.getNormalizedUnicodes = getNormalizedUnicodes; -exports.getUnicodeForGlyph = getUnicodeForGlyph; /***/ }), -/* 181 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 167 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); +exports.ToUnicodeMap = exports.IdentityToUnicodeMap = void 0; + +var _util = __w_pdfjs_require__(2); + +class ToUnicodeMap { + constructor() { + let cmap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + this._map = cmap; + } + + get length() { + return this._map.length; + } + + forEach(callback) { + for (const charCode in this._map) { + callback(charCode, this._map[charCode].charCodeAt(0)); + } + } + + has(i) { + return this._map[i] !== undefined; + } + + get(i) { + return this._map[i]; + } + + charCodeOf(value) { + const map = this._map; + + if (map.length <= 0x10000) { + return map.indexOf(value); + } + + for (const charCode in map) { + if (map[charCode] === value) { + return charCode | 0; + } + } + + return -1; + } + + amend(map) { + for (const charCode in map) { + this._map[charCode] = map[charCode]; + } + } + +} + +exports.ToUnicodeMap = ToUnicodeMap; + +class IdentityToUnicodeMap { + constructor(firstChar, lastChar) { + this.firstChar = firstChar; + this.lastChar = lastChar; + } + + get length() { + return this.lastChar + 1 - this.firstChar; + } + + forEach(callback) { + for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) { + callback(i, i); + } + } + + has(i) { + return this.firstChar <= i && i <= this.lastChar; + } + + get(i) { + if (this.firstChar <= i && i <= this.lastChar) { + return String.fromCharCode(i); + } + + return undefined; + } + + charCodeOf(v) { + return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar ? v : -1; + } + + amend(map) { + (0, _util.unreachable)("Should not call amend()"); + } + +} + +exports.IdentityToUnicodeMap = IdentityToUnicodeMap; + +/***/ }), +/* 168 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CFFFont = void 0; + +var _cff_parser = __w_pdfjs_require__(160); + +var _fonts_utils = __w_pdfjs_require__(163); + +var _util = __w_pdfjs_require__(2); + +class CFFFont { + constructor(file, properties) { + this.properties = properties; + const parser = new _cff_parser.CFFParser(file, properties, _fonts_utils.SEAC_ANALYSIS_ENABLED); + this.cff = parser.parse(); + this.cff.duplicateFirstGlyph(); + const compiler = new _cff_parser.CFFCompiler(this.cff); + this.seacs = this.cff.seacs; + + try { + this.data = compiler.compile(); + } catch (e) { + (0, _util.warn)("Failed to compile font " + properties.loadedName); + this.data = file; + } + + this._createBuiltInEncoding(); + } + + get numGlyphs() { + return this.cff.charStrings.count; + } + + getCharset() { + return this.cff.charset.charset; + } + + getGlyphMapping() { + const cff = this.cff; + const properties = this.properties; + const charsets = cff.charset.charset; + let charCodeToGlyphId; + let glyphId; + + if (properties.composite) { + charCodeToGlyphId = Object.create(null); + let charCode; + + if (cff.isCIDFont) { + for (glyphId = 0; glyphId < charsets.length; glyphId++) { + const cid = charsets[glyphId]; + charCode = properties.cMap.charCodeOf(cid); + charCodeToGlyphId[charCode] = glyphId; + } + } else { + for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) { + charCode = properties.cMap.charCodeOf(glyphId); + charCodeToGlyphId[charCode] = glyphId; + } + } + + return charCodeToGlyphId; + } + + let encoding = cff.encoding ? cff.encoding.encoding : null; + + if (properties.isInternalFont) { + encoding = properties.defaultEncoding; + } + + charCodeToGlyphId = (0, _fonts_utils.type1FontGlyphMapping)(properties, encoding, charsets); + return charCodeToGlyphId; + } + + hasGlyphId(id) { + return this.cff.hasGlyphId(id); + } + + _createBuiltInEncoding() { + const { + charset, + encoding + } = this.cff; + + if (!charset || !encoding) { + return; + } + + const charsets = charset.charset, + encodings = encoding.encoding; + const map = []; + + for (const charCode in encodings) { + const glyphId = encodings[charCode]; + + if (glyphId >= 0) { + const glyphName = charsets[glyphId]; + + if (glyphName) { + map[charCode] = glyphName; + } + } + } + + if (map.length > 0) { + this.properties.builtInEncoding = map; + } + } + +} + +exports.CFFFont = CFFFont; + +/***/ }), +/* 169 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); exports.FontRendererFactory = void 0; -var _util = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(2); -var _cff_parser = __w_pdfjs_require__(175); +var _cff_parser = __w_pdfjs_require__(160); -var _glyphlist = __w_pdfjs_require__(178); +var _glyphlist = __w_pdfjs_require__(164); -var _encodings = __w_pdfjs_require__(177); +var _encodings = __w_pdfjs_require__(162); -var _stream = __w_pdfjs_require__(158); +var _stream = __w_pdfjs_require__(135); -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } +function getUint32(data, offset) { + return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0; +} -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } +function getUint16(data, offset) { + return data[offset] << 8 | data[offset + 1]; +} -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } +function getInt16(data, offset) { + return (data[offset] << 24 | data[offset + 1] << 16) >> 16; +} -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } +function getInt8(data, offset) { + return data[offset] << 24 >> 24; +} -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } +function getFloat214(data, offset) { + return getInt16(data, offset) / 16384; +} -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } +function getSubroutineBias(subrs) { + const numSubrs = subrs.length; + let bias = 32768; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var FontRendererFactory = function FontRendererFactoryClosure() { - function getLong(data, offset) { - return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]; + if (numSubrs < 1240) { + bias = 107; + } else if (numSubrs < 33900) { + bias = 1131; } - function getUshort(data, offset) { - return data[offset] << 8 | data[offset + 1]; - } + return bias; +} - function parseCmap(data, start, end) { - var offset = getUshort(data, start + 2) === 1 ? getLong(data, start + 8) : getLong(data, start + 16); - var format = getUshort(data, start + offset); - var ranges, p, i; +function parseCmap(data, start, end) { + const offset = getUint16(data, start + 2) === 1 ? getUint32(data, start + 8) : getUint32(data, start + 16); + const format = getUint16(data, start + offset); + let ranges, p, i; - if (format === 4) { - getUshort(data, start + offset + 2); - var segCount = getUshort(data, start + offset + 6) >> 1; - p = start + offset + 14; - ranges = []; + if (format === 4) { + getUint16(data, start + offset + 2); + const segCount = getUint16(data, start + offset + 6) >> 1; + p = start + offset + 14; + ranges = []; - for (i = 0; i < segCount; i++, p += 2) { - ranges[i] = { - end: getUshort(data, p) - }; - } - - p += 2; - - for (i = 0; i < segCount; i++, p += 2) { - ranges[i].start = getUshort(data, p); - } - - for (i = 0; i < segCount; i++, p += 2) { - ranges[i].idDelta = getUshort(data, p); - } - - for (i = 0; i < segCount; i++, p += 2) { - var idOffset = getUshort(data, p); - - if (idOffset === 0) { - continue; - } - - ranges[i].ids = []; - - for (var j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) { - ranges[i].ids[j] = getUshort(data, p + idOffset); - idOffset += 2; - } - } - - return ranges; - } else if (format === 12) { - getLong(data, start + offset + 4); - var groups = getLong(data, start + offset + 12); - p = start + offset + 16; - ranges = []; - - for (i = 0; i < groups; i++) { - ranges.push({ - start: getLong(data, p), - end: getLong(data, p + 4), - idDelta: getLong(data, p + 8) - getLong(data, p) - }); - p += 12; - } - - return ranges; + for (i = 0; i < segCount; i++, p += 2) { + ranges[i] = { + end: getUint16(data, p) + }; } - throw new _util.FormatError("unsupported cmap: ".concat(format)); + p += 2; + + for (i = 0; i < segCount; i++, p += 2) { + ranges[i].start = getUint16(data, p); + } + + for (i = 0; i < segCount; i++, p += 2) { + ranges[i].idDelta = getUint16(data, p); + } + + for (i = 0; i < segCount; i++, p += 2) { + let idOffset = getUint16(data, p); + + if (idOffset === 0) { + continue; + } + + ranges[i].ids = []; + + for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) { + ranges[i].ids[j] = getUint16(data, p + idOffset); + idOffset += 2; + } + } + + return ranges; + } else if (format === 12) { + const groups = getUint32(data, start + offset + 12); + p = start + offset + 16; + ranges = []; + + for (i = 0; i < groups; i++) { + start = getUint32(data, p); + ranges.push({ + start, + end: getUint32(data, p + 4), + idDelta: getUint32(data, p + 8) - start + }); + p += 12; + } + + return ranges; } - function parseCff(data, start, end, seacAnalysisEnabled) { - var properties = {}; - var parser = new _cff_parser.CFFParser(new _stream.Stream(data, start, end - start), properties, seacAnalysisEnabled); - var cff = parser.parse(); - return { - glyphs: cff.charStrings.objects, - subrs: cff.topDict.privateDict && cff.topDict.privateDict.subrsIndex && cff.topDict.privateDict.subrsIndex.objects, - gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects, - isCFFCIDFont: cff.isCIDFont, - fdSelect: cff.fdSelect, - fdArray: cff.fdArray - }; + throw new _util.FormatError(`unsupported cmap: ${format}`); +} + +function parseCff(data, start, end, seacAnalysisEnabled) { + const properties = {}; + const parser = new _cff_parser.CFFParser(new _stream.Stream(data, start, end - start), properties, seacAnalysisEnabled); + const cff = parser.parse(); + return { + glyphs: cff.charStrings.objects, + subrs: cff.topDict.privateDict && cff.topDict.privateDict.subrsIndex && cff.topDict.privateDict.subrsIndex.objects, + gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects, + isCFFCIDFont: cff.isCIDFont, + fdSelect: cff.fdSelect, + fdArray: cff.fdArray + }; +} + +function parseGlyfTable(glyf, loca, isGlyphLocationsLong) { + let itemSize, itemDecode; + + if (isGlyphLocationsLong) { + itemSize = 4; + itemDecode = getUint32; + } else { + itemSize = 2; + + itemDecode = (data, offset) => 2 * getUint16(data, offset); } - function parseGlyfTable(glyf, loca, isGlyphLocationsLong) { - var itemSize, itemDecode; + const glyphs = []; + let startOffset = itemDecode(loca, 0); - if (isGlyphLocationsLong) { - itemSize = 4; + for (let j = itemSize; j < loca.length; j += itemSize) { + const endOffset = itemDecode(loca, j); + glyphs.push(glyf.subarray(startOffset, endOffset)); + startOffset = endOffset; + } - itemDecode = function fontItemDecodeLong(data, offset) { - return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]; - }; + return glyphs; +} + +function lookupCmap(ranges, unicode) { + const code = unicode.codePointAt(0); + let gid = 0, + l = 0, + r = ranges.length - 1; + + while (l < r) { + const c = l + r + 1 >> 1; + + if (code < ranges[c].start) { + r = c - 1; } else { - itemSize = 2; - - itemDecode = function fontItemDecode(data, offset) { - return data[offset] << 9 | data[offset + 1] << 1; - }; + l = c; } - - var glyphs = []; - var startOffset = itemDecode(loca, 0); - - for (var j = itemSize; j < loca.length; j += itemSize) { - var endOffset = itemDecode(loca, j); - glyphs.push(glyf.subarray(startOffset, endOffset)); - startOffset = endOffset; - } - - return glyphs; } - function lookupCmap(ranges, unicode) { - var code = unicode.codePointAt(0), - gid = 0; - var l = 0, - r = ranges.length - 1; - - while (l < r) { - var c = l + r + 1 >> 1; - - if (code < ranges[c].start) { - r = c - 1; - } else { - l = c; - } - } - - if (ranges[l].start <= code && code <= ranges[l].end) { - gid = ranges[l].idDelta + (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code) & 0xFFFF; - } - - return { - charCode: code, - glyphId: gid - }; + if (ranges[l].start <= code && code <= ranges[l].end) { + gid = ranges[l].idDelta + (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code) & 0xffff; } - function compileGlyf(code, cmds, font) { - function moveTo(x, y) { - cmds.push({ - cmd: 'moveTo', - args: [x, y] - }); - } + return { + charCode: code, + glyphId: gid + }; +} - function lineTo(x, y) { - cmds.push({ - cmd: 'lineTo', - args: [x, y] - }); - } +function compileGlyf(code, cmds, font) { + function moveTo(x, y) { + cmds.push({ + cmd: "moveTo", + args: [x, y] + }); + } - function quadraticCurveTo(xa, ya, x, y) { - cmds.push({ - cmd: 'quadraticCurveTo', - args: [xa, ya, x, y] - }); - } + function lineTo(x, y) { + cmds.push({ + cmd: "lineTo", + args: [x, y] + }); + } - var i = 0; - var numberOfContours = (code[i] << 24 | code[i + 1] << 16) >> 16; - var flags; - var x = 0, - y = 0; - i += 10; + function quadraticCurveTo(xa, ya, x, y) { + cmds.push({ + cmd: "quadraticCurveTo", + args: [xa, ya, x, y] + }); + } + + let i = 0; + const numberOfContours = getInt16(code, i); + let flags; + let x = 0, + y = 0; + i += 10; + + if (numberOfContours < 0) { + do { + flags = getUint16(code, i); + const glyphIndex = getUint16(code, i + 2); + i += 4; + let arg1, arg2; + + if (flags & 0x01) { + if (flags & 0x02) { + arg1 = getInt16(code, i); + arg2 = getInt16(code, i + 2); + } else { + arg1 = getUint16(code, i); + arg2 = getUint16(code, i + 2); + } - if (numberOfContours < 0) { - do { - flags = code[i] << 8 | code[i + 1]; - var glyphIndex = code[i + 2] << 8 | code[i + 3]; i += 4; - var arg1, arg2; - - if (flags & 0x01) { - arg1 = (code[i] << 24 | code[i + 1] << 16) >> 16; - arg2 = (code[i + 2] << 24 | code[i + 3] << 16) >> 16; - i += 4; + } else { + if (flags & 0x02) { + arg1 = getInt8(code, i++); + arg2 = getInt8(code, i++); } else { arg1 = code[i++]; arg2 = code[i++]; } + } - if (flags & 0x02) { - x = arg1; - y = arg2; - } else { - x = 0; - y = 0; - } + if (flags & 0x02) { + x = arg1; + y = arg2; + } else { + x = 0; + y = 0; + } - var scaleX = 1, - scaleY = 1, - scale01 = 0, - scale10 = 0; + let scaleX = 1, + scaleY = 1, + scale01 = 0, + scale10 = 0; - if (flags & 0x08) { - scaleX = scaleY = (code[i] << 24 | code[i + 1] << 16) / 1073741824; - i += 2; - } else if (flags & 0x40) { - scaleX = (code[i] << 24 | code[i + 1] << 16) / 1073741824; - scaleY = (code[i + 2] << 24 | code[i + 3] << 16) / 1073741824; - i += 4; - } else if (flags & 0x80) { - scaleX = (code[i] << 24 | code[i + 1] << 16) / 1073741824; - scale01 = (code[i + 2] << 24 | code[i + 3] << 16) / 1073741824; - scale10 = (code[i + 4] << 24 | code[i + 5] << 16) / 1073741824; - scaleY = (code[i + 6] << 24 | code[i + 7] << 16) / 1073741824; - i += 8; - } - - var subglyph = font.glyphs[glyphIndex]; - - if (subglyph) { - cmds.push({ - cmd: 'save' - }); - cmds.push({ - cmd: 'transform', - args: [scaleX, scale01, scale10, scaleY, x, y] - }); - compileGlyf(subglyph, cmds, font); - cmds.push({ - cmd: 'restore' - }); - } - } while (flags & 0x20); - } else { - var endPtsOfContours = []; - var j, jj; - - for (j = 0; j < numberOfContours; j++) { - endPtsOfContours.push(code[i] << 8 | code[i + 1]); + if (flags & 0x08) { + scaleX = scaleY = getFloat214(code, i); i += 2; + } else if (flags & 0x40) { + scaleX = getFloat214(code, i); + scaleY = getFloat214(code, i + 2); + i += 4; + } else if (flags & 0x80) { + scaleX = getFloat214(code, i); + scale01 = getFloat214(code, i + 2); + scale10 = getFloat214(code, i + 4); + scaleY = getFloat214(code, i + 6); + i += 8; } - var instructionLength = code[i] << 8 | code[i + 1]; - i += 2 + instructionLength; - var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1; - var points = []; + const subglyph = font.glyphs[glyphIndex]; - while (points.length < numberOfPoints) { - flags = code[i++]; - var repeat = 1; + if (subglyph) { + cmds.push({ + cmd: "save" + }, { + cmd: "transform", + args: [scaleX, scale01, scale10, scaleY, x, y] + }); - if (flags & 0x08) { - repeat += code[i++]; - } + if (!(flags & 0x02)) {} - while (repeat-- > 0) { - points.push({ - flags: flags - }); - } + compileGlyf(subglyph, cmds, font); + cmds.push({ + cmd: "restore" + }); + } + } while (flags & 0x20); + } else { + const endPtsOfContours = []; + let j, jj; + + for (j = 0; j < numberOfContours; j++) { + endPtsOfContours.push(getUint16(code, i)); + i += 2; + } + + const instructionLength = getUint16(code, i); + i += 2 + instructionLength; + const numberOfPoints = endPtsOfContours.at(-1) + 1; + const points = []; + + while (points.length < numberOfPoints) { + flags = code[i++]; + let repeat = 1; + + if (flags & 0x08) { + repeat += code[i++]; } - for (j = 0; j < numberOfPoints; j++) { - switch (points[j].flags & 0x12) { - case 0x00: - x += (code[i] << 24 | code[i + 1] << 16) >> 16; - i += 2; - break; + while (repeat-- > 0) { + points.push({ + flags + }); + } + } - case 0x02: - x -= code[i++]; - break; + for (j = 0; j < numberOfPoints; j++) { + switch (points[j].flags & 0x12) { + case 0x00: + x += getInt16(code, i); + i += 2; + break; - case 0x12: - x += code[i++]; - break; - } + case 0x02: + x -= code[i++]; + break; - points[j].x = x; + case 0x12: + x += code[i++]; + break; } - for (j = 0; j < numberOfPoints; j++) { - switch (points[j].flags & 0x24) { - case 0x00: - y += (code[i] << 24 | code[i + 1] << 16) >> 16; - i += 2; - break; + points[j].x = x; + } - case 0x04: - y -= code[i++]; - break; + for (j = 0; j < numberOfPoints; j++) { + switch (points[j].flags & 0x24) { + case 0x00: + y += getInt16(code, i); + i += 2; + break; - case 0x24: - y += code[i++]; - break; - } + case 0x04: + y -= code[i++]; + break; - points[j].y = y; + case 0x24: + y += code[i++]; + break; } - var startPoint = 0; + points[j].y = y; + } - for (i = 0; i < numberOfContours; i++) { - var endPoint = endPtsOfContours[i]; - var contour = points.slice(startPoint, endPoint + 1); + let startPoint = 0; - if (contour[0].flags & 1) { - contour.push(contour[0]); - } else if (contour[contour.length - 1].flags & 1) { - contour.unshift(contour[contour.length - 1]); + for (i = 0; i < numberOfContours; i++) { + const endPoint = endPtsOfContours[i]; + const contour = points.slice(startPoint, endPoint + 1); + + if (contour[0].flags & 1) { + contour.push(contour[0]); + } else if (contour.at(-1).flags & 1) { + contour.unshift(contour.at(-1)); + } else { + const p = { + flags: 1, + x: (contour[0].x + contour.at(-1).x) / 2, + y: (contour[0].y + contour.at(-1).y) / 2 + }; + contour.unshift(p); + contour.push(p); + } + + moveTo(contour[0].x, contour[0].y); + + for (j = 1, jj = contour.length; j < jj; j++) { + if (contour[j].flags & 1) { + lineTo(contour[j].x, contour[j].y); + } else if (contour[j + 1].flags & 1) { + quadraticCurveTo(contour[j].x, contour[j].y, contour[j + 1].x, contour[j + 1].y); + j++; } else { - var p = { - flags: 1, - x: (contour[0].x + contour[contour.length - 1].x) / 2, - y: (contour[0].y + contour[contour.length - 1].y) / 2 - }; - contour.unshift(p); - contour.push(p); + quadraticCurveTo(contour[j].x, contour[j].y, (contour[j].x + contour[j + 1].x) / 2, (contour[j].y + contour[j + 1].y) / 2); } - - moveTo(contour[0].x, contour[0].y); - - for (j = 1, jj = contour.length; j < jj; j++) { - if (contour[j].flags & 1) { - lineTo(contour[j].x, contour[j].y); - } else if (contour[j + 1].flags & 1) { - quadraticCurveTo(contour[j].x, contour[j].y, contour[j + 1].x, contour[j + 1].y); - j++; - } else { - quadraticCurveTo(contour[j].x, contour[j].y, (contour[j].x + contour[j + 1].x) / 2, (contour[j].y + contour[j + 1].y) / 2); - } - } - - startPoint = endPoint + 1; } + + startPoint = endPoint + 1; } } +} - function compileCharString(code, cmds, font, glyphId) { - var stack = []; - var x = 0, - y = 0; - var stems = 0; +function compileCharString(charStringCode, cmds, font, glyphId) { + function moveTo(x, y) { + cmds.push({ + cmd: "moveTo", + args: [x, y] + }); + } - function moveTo(x, y) { - cmds.push({ - cmd: 'moveTo', - args: [x, y] - }); - } + function lineTo(x, y) { + cmds.push({ + cmd: "lineTo", + args: [x, y] + }); + } - function lineTo(x, y) { - cmds.push({ - cmd: 'lineTo', - args: [x, y] - }); - } + function bezierCurveTo(x1, y1, x2, y2, x, y) { + cmds.push({ + cmd: "bezierCurveTo", + args: [x1, y1, x2, y2, x, y] + }); + } - function bezierCurveTo(x1, y1, x2, y2, x, y) { - cmds.push({ - cmd: 'bezierCurveTo', - args: [x1, y1, x2, y2, x, y] - }); - } + const stack = []; + let x = 0, + y = 0; + let stems = 0; - function parse(code) { - var i = 0; + function parse(code) { + let i = 0; - while (i < code.length) { - var stackClean = false; - var v = code[i++]; - var xa, xb, ya, yb, y1, y2, y3, n, subrCode; + while (i < code.length) { + let stackClean = false; + let v = code[i++]; + let xa, xb, ya, yb, y1, y2, y3, n, subrCode; - switch (v) { - case 1: - stems += stack.length >> 1; - stackClean = true; - break; + switch (v) { + case 1: + stems += stack.length >> 1; + stackClean = true; + break; - case 3: - stems += stack.length >> 1; - stackClean = true; - break; + case 3: + stems += stack.length >> 1; + stackClean = true; + break; - case 4: - y += stack.pop(); - moveTo(x, y); - stackClean = true; - break; - - case 5: - while (stack.length > 0) { - x += stack.shift(); - y += stack.shift(); - lineTo(x, y); - } - - break; - - case 6: - while (stack.length > 0) { - x += stack.shift(); - lineTo(x, y); - - if (stack.length === 0) { - break; - } - - y += stack.shift(); - lineTo(x, y); - } - - break; - - case 7: - while (stack.length > 0) { - y += stack.shift(); - lineTo(x, y); - - if (stack.length === 0) { - break; - } - - x += stack.shift(); - lineTo(x, y); - } - - break; - - case 8: - while (stack.length > 0) { - xa = x + stack.shift(); - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - - break; - - case 10: - n = stack.pop(); - subrCode = null; - - if (font.isCFFCIDFont) { - var fdIndex = font.fdSelect.getFDIndex(glyphId); - - if (fdIndex >= 0 && fdIndex < font.fdArray.length) { - var fontDict = font.fdArray[fdIndex], - subrs = void 0; - - if (fontDict.privateDict && fontDict.privateDict.subrsIndex) { - subrs = fontDict.privateDict.subrsIndex.objects; - } - - if (subrs) { - var numSubrs = subrs.length; - n += numSubrs < 1240 ? 107 : numSubrs < 33900 ? 1131 : 32768; - subrCode = subrs[n]; - } - } else { - (0, _util.warn)('Invalid fd index for glyph index.'); - } - } else { - subrCode = font.subrs[n + font.subrsBias]; - } - - if (subrCode) { - parse(subrCode); - } - - break; - - case 11: - return; - - case 12: - v = code[i++]; - - switch (v) { - case 34: - xa = x + stack.shift(); - xb = xa + stack.shift(); - y1 = y + stack.shift(); - x = xb + stack.shift(); - bezierCurveTo(xa, y, xb, y1, x, y1); - xa = x + stack.shift(); - xb = xa + stack.shift(); - x = xb + stack.shift(); - bezierCurveTo(xa, y1, xb, y, x, y); - break; - - case 35: - xa = x + stack.shift(); - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - xa = x + stack.shift(); - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - stack.pop(); - break; - - case 36: - xa = x + stack.shift(); - y1 = y + stack.shift(); - xb = xa + stack.shift(); - y2 = y1 + stack.shift(); - x = xb + stack.shift(); - bezierCurveTo(xa, y1, xb, y2, x, y2); - xa = x + stack.shift(); - xb = xa + stack.shift(); - y3 = y2 + stack.shift(); - x = xb + stack.shift(); - bezierCurveTo(xa, y2, xb, y3, x, y); - break; - - case 37: - var x0 = x, - y0 = y; - xa = x + stack.shift(); - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - xa = x + stack.shift(); - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb; - y = yb; - - if (Math.abs(x - x0) > Math.abs(y - y0)) { - x += stack.shift(); - } else { - y += stack.shift(); - } - - bezierCurveTo(xa, ya, xb, yb, x, y); - break; - - default: - throw new _util.FormatError("unknown operator: 12 ".concat(v)); - } - - break; - - case 14: - if (stack.length >= 4) { - var achar = stack.pop(); - var bchar = stack.pop(); - y = stack.pop(); - x = stack.pop(); - cmds.push({ - cmd: 'save' - }); - cmds.push({ - cmd: 'translate', - args: [x, y] - }); - var cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[achar]])); - compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId); - cmds.push({ - cmd: 'restore' - }); - cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[bchar]])); - compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId); - } - - return; - - case 18: - stems += stack.length >> 1; - stackClean = true; - break; - - case 19: - stems += stack.length >> 1; - i += stems + 7 >> 3; - stackClean = true; - break; - - case 20: - stems += stack.length >> 1; - i += stems + 7 >> 3; - stackClean = true; - break; - - case 21: - y += stack.pop(); - x += stack.pop(); - moveTo(x, y); - stackClean = true; - break; - - case 22: - x += stack.pop(); - moveTo(x, y); - stackClean = true; - break; - - case 23: - stems += stack.length >> 1; - stackClean = true; - break; - - case 24: - while (stack.length > 2) { - xa = x + stack.shift(); - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - } + case 4: + y += stack.pop(); + moveTo(x, y); + stackClean = true; + break; + case 5: + while (stack.length > 0) { x += stack.shift(); y += stack.shift(); lineTo(x, y); - break; + } - case 25: - while (stack.length > 6) { - x += stack.shift(); - y += stack.shift(); - lineTo(x, y); + break; + + case 6: + while (stack.length > 0) { + x += stack.shift(); + lineTo(x, y); + + if (stack.length === 0) { + break; } + y += stack.shift(); + lineTo(x, y); + } + + break; + + case 7: + while (stack.length > 0) { + y += stack.shift(); + lineTo(x, y); + + if (stack.length === 0) { + break; + } + + x += stack.shift(); + lineTo(x, y); + } + + break; + + case 8: + while (stack.length > 0) { xa = x + stack.shift(); ya = y + stack.shift(); xb = xa + stack.shift(); @@ -47680,370 +47508,4764 @@ var FontRendererFactory = function FontRendererFactoryClosure() { x = xb + stack.shift(); y = yb + stack.shift(); bezierCurveTo(xa, ya, xb, yb, x, y); - break; + } - case 26: - if (stack.length % 2) { - x += stack.shift(); + break; + + case 10: + n = stack.pop(); + subrCode = null; + + if (font.isCFFCIDFont) { + const fdIndex = font.fdSelect.getFDIndex(glyphId); + + if (fdIndex >= 0 && fdIndex < font.fdArray.length) { + const fontDict = font.fdArray[fdIndex]; + let subrs; + + if (fontDict.privateDict && fontDict.privateDict.subrsIndex) { + subrs = fontDict.privateDict.subrsIndex.objects; + } + + if (subrs) { + n += getSubroutineBias(subrs); + subrCode = subrs[n]; + } + } else { + (0, _util.warn)("Invalid fd index for glyph index."); } + } else { + subrCode = font.subrs[n + font.subrsBias]; + } - while (stack.length > 0) { - xa = x; + if (subrCode) { + parse(subrCode); + } + + break; + + case 11: + return; + + case 12: + v = code[i++]; + + switch (v) { + case 34: + xa = x + stack.shift(); + xb = xa + stack.shift(); + y1 = y + stack.shift(); + x = xb + stack.shift(); + bezierCurveTo(xa, y, xb, y1, x, y1); + xa = x + stack.shift(); + xb = xa + stack.shift(); + x = xb + stack.shift(); + bezierCurveTo(xa, y1, xb, y, x, y); + break; + + case 35: + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + stack.pop(); + break; + + case 36: + xa = x + stack.shift(); + y1 = y + stack.shift(); + xb = xa + stack.shift(); + y2 = y1 + stack.shift(); + x = xb + stack.shift(); + bezierCurveTo(xa, y1, xb, y2, x, y2); + xa = x + stack.shift(); + xb = xa + stack.shift(); + y3 = y2 + stack.shift(); + x = xb + stack.shift(); + bezierCurveTo(xa, y2, xb, y3, x, y); + break; + + case 37: + const x0 = x, + y0 = y; + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + xa = x + stack.shift(); ya = y + stack.shift(); xb = xa + stack.shift(); yb = ya + stack.shift(); x = xb; - y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - - break; - - case 27: - if (stack.length % 2) { - y += stack.shift(); - } - - while (stack.length > 0) { - xa = x + stack.shift(); - ya = y; - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); y = yb; - bezierCurveTo(xa, ya, xb, yb, x, y); - } - break; - - case 28: - stack.push((code[i] << 24 | code[i + 1] << 16) >> 16); - i += 2; - break; - - case 29: - n = stack.pop() + font.gsubrsBias; - subrCode = font.gsubrs[n]; - - if (subrCode) { - parse(subrCode); - } - - break; - - case 30: - while (stack.length > 0) { - xa = x; - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + (stack.length === 1 ? stack.shift() : 0); - bezierCurveTo(xa, ya, xb, yb, x, y); - - if (stack.length === 0) { - break; + if (Math.abs(x - x0) > Math.abs(y - y0)) { + x += stack.shift(); + } else { + y += stack.shift(); } - xa = x + stack.shift(); - ya = y; - xb = xa + stack.shift(); - yb = ya + stack.shift(); - y = yb + stack.shift(); - x = xb + (stack.length === 1 ? stack.shift() : 0); bezierCurveTo(xa, ya, xb, yb, x, y); + break; + + default: + throw new _util.FormatError(`unknown operator: 12 ${v}`); + } + + break; + + case 14: + if (stack.length >= 4) { + const achar = stack.pop(); + const bchar = stack.pop(); + y = stack.pop(); + x = stack.pop(); + cmds.push({ + cmd: "save" + }, { + cmd: "translate", + args: [x, y] + }); + let cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[achar]])); + compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId); + cmds.push({ + cmd: "restore" + }); + cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[bchar]])); + compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId); + } + + return; + + case 18: + stems += stack.length >> 1; + stackClean = true; + break; + + case 19: + stems += stack.length >> 1; + i += stems + 7 >> 3; + stackClean = true; + break; + + case 20: + stems += stack.length >> 1; + i += stems + 7 >> 3; + stackClean = true; + break; + + case 21: + y += stack.pop(); + x += stack.pop(); + moveTo(x, y); + stackClean = true; + break; + + case 22: + x += stack.pop(); + moveTo(x, y); + stackClean = true; + break; + + case 23: + stems += stack.length >> 1; + stackClean = true; + break; + + case 24: + while (stack.length > 2) { + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + + x += stack.shift(); + y += stack.shift(); + lineTo(x, y); + break; + + case 25: + while (stack.length > 6) { + x += stack.shift(); + y += stack.shift(); + lineTo(x, y); + } + + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + break; + + case 26: + if (stack.length % 2) { + x += stack.shift(); + } + + while (stack.length > 0) { + xa = x; + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb; + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + + break; + + case 27: + if (stack.length % 2) { + y += stack.shift(); + } + + while (stack.length > 0) { + xa = x + stack.shift(); + ya = y; + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb; + bezierCurveTo(xa, ya, xb, yb, x, y); + } + + break; + + case 28: + stack.push((code[i] << 24 | code[i + 1] << 16) >> 16); + i += 2; + break; + + case 29: + n = stack.pop() + font.gsubrsBias; + subrCode = font.gsubrs[n]; + + if (subrCode) { + parse(subrCode); + } + + break; + + case 30: + while (stack.length > 0) { + xa = x; + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + (stack.length === 1 ? stack.shift() : 0); + bezierCurveTo(xa, ya, xb, yb, x, y); + + if (stack.length === 0) { + break; } - break; + xa = x + stack.shift(); + ya = y; + xb = xa + stack.shift(); + yb = ya + stack.shift(); + y = yb + stack.shift(); + x = xb + (stack.length === 1 ? stack.shift() : 0); + bezierCurveTo(xa, ya, xb, yb, x, y); + } - case 31: - while (stack.length > 0) { - xa = x + stack.shift(); - ya = y; - xb = xa + stack.shift(); - yb = ya + stack.shift(); - y = yb + stack.shift(); - x = xb + (stack.length === 1 ? stack.shift() : 0); - bezierCurveTo(xa, ya, xb, yb, x, y); + break; - if (stack.length === 0) { - break; - } + case 31: + while (stack.length > 0) { + xa = x + stack.shift(); + ya = y; + xb = xa + stack.shift(); + yb = ya + stack.shift(); + y = yb + stack.shift(); + x = xb + (stack.length === 1 ? stack.shift() : 0); + bezierCurveTo(xa, ya, xb, yb, x, y); - xa = x; - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + (stack.length === 1 ? stack.shift() : 0); - bezierCurveTo(xa, ya, xb, yb, x, y); + if (stack.length === 0) { + break; } - break; + xa = x; + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + (stack.length === 1 ? stack.shift() : 0); + bezierCurveTo(xa, ya, xb, yb, x, y); + } - default: - if (v < 32) { - throw new _util.FormatError("unknown operator: ".concat(v)); - } + break; - if (v < 247) { - stack.push(v - 139); - } else if (v < 251) { - stack.push((v - 247) * 256 + code[i++] + 108); - } else if (v < 255) { - stack.push(-(v - 251) * 256 - code[i++] - 108); - } else { - stack.push((code[i] << 24 | code[i + 1] << 16 | code[i + 2] << 8 | code[i + 3]) / 65536); - i += 4; - } + default: + if (v < 32) { + throw new _util.FormatError(`unknown operator: ${v}`); + } - break; - } + if (v < 247) { + stack.push(v - 139); + } else if (v < 251) { + stack.push((v - 247) * 256 + code[i++] + 108); + } else if (v < 255) { + stack.push(-(v - 251) * 256 - code[i++] - 108); + } else { + stack.push((code[i] << 24 | code[i + 1] << 16 | code[i + 2] << 8 | code[i + 3]) / 65536); + i += 4; + } - if (stackClean) { - stack.length = 0; - } + break; + } + + if (stackClean) { + stack.length = 0; } } - - parse(code); } - var NOOP = []; + parse(charStringCode); +} - var CompiledFont = - /*#__PURE__*/ - function () { - function CompiledFont(fontMatrix) { - _classCallCheck(this, CompiledFont); +const NOOP = []; - if (this.constructor === CompiledFont) { - (0, _util.unreachable)('Cannot initialize CompiledFont.'); - } - - this.fontMatrix = fontMatrix; - this.compiledGlyphs = Object.create(null); - this.compiledCharCodeToGlyphId = Object.create(null); +class CompiledFont { + constructor(fontMatrix) { + if (this.constructor === CompiledFont) { + (0, _util.unreachable)("Cannot initialize CompiledFont."); } - _createClass(CompiledFont, [{ - key: "getPathJs", - value: function getPathJs(unicode) { - var cmap = lookupCmap(this.cmap, unicode); - var fn = this.compiledGlyphs[cmap.glyphId]; + this.fontMatrix = fontMatrix; + this.compiledGlyphs = Object.create(null); + this.compiledCharCodeToGlyphId = Object.create(null); + } - if (!fn) { - fn = this.compileGlyph(this.glyphs[cmap.glyphId], cmap.glyphId); - this.compiledGlyphs[cmap.glyphId] = fn; + getPathJs(unicode) { + const { + charCode, + glyphId + } = lookupCmap(this.cmap, unicode); + let fn = this.compiledGlyphs[glyphId]; + + if (!fn) { + try { + fn = this.compileGlyph(this.glyphs[glyphId], glyphId); + this.compiledGlyphs[glyphId] = fn; + } catch (ex) { + this.compiledGlyphs[glyphId] = NOOP; + + if (this.compiledCharCodeToGlyphId[charCode] === undefined) { + this.compiledCharCodeToGlyphId[charCode] = glyphId; } - if (this.compiledCharCodeToGlyphId[cmap.charCode] === undefined) { - this.compiledCharCodeToGlyphId[cmap.charCode] = cmap.glyphId; - } - - return fn; + throw ex; } + } + + if (this.compiledCharCodeToGlyphId[charCode] === undefined) { + this.compiledCharCodeToGlyphId[charCode] = glyphId; + } + + return fn; + } + + compileGlyph(code, glyphId) { + if (!code || code.length === 0 || code[0] === 14) { + return NOOP; + } + + let fontMatrix = this.fontMatrix; + + if (this.isCFFCIDFont) { + const fdIndex = this.fdSelect.getFDIndex(glyphId); + + if (fdIndex >= 0 && fdIndex < this.fdArray.length) { + const fontDict = this.fdArray[fdIndex]; + fontMatrix = fontDict.getByName("FontMatrix") || _util.FONT_IDENTITY_MATRIX; + } else { + (0, _util.warn)("Invalid fd index for glyph index."); + } + } + + const cmds = [{ + cmd: "save" }, { - key: "compileGlyph", - value: function compileGlyph(code, glyphId) { - if (!code || code.length === 0 || code[0] === 14) { - return NOOP; - } - - var fontMatrix = this.fontMatrix; - - if (this.isCFFCIDFont) { - var fdIndex = this.fdSelect.getFDIndex(glyphId); - - if (fdIndex >= 0 && fdIndex < this.fdArray.length) { - var fontDict = this.fdArray[fdIndex]; - fontMatrix = fontDict.getByName('FontMatrix') || _util.FONT_IDENTITY_MATRIX; - } else { - (0, _util.warn)('Invalid fd index for glyph index.'); - } - } - - var cmds = []; - cmds.push({ - cmd: 'save' - }); - cmds.push({ - cmd: 'transform', - args: fontMatrix.slice() - }); - cmds.push({ - cmd: 'scale', - args: ['size', '-size'] - }); - this.compileGlyphImpl(code, cmds, glyphId); - cmds.push({ - cmd: 'restore' - }); - return cmds; - } + cmd: "transform", + args: fontMatrix.slice() }, { - key: "compileGlyphImpl", - value: function compileGlyphImpl() { - (0, _util.unreachable)('Children classes should implement this.'); + cmd: "scale", + args: ["size", "-size"] + }]; + this.compileGlyphImpl(code, cmds, glyphId); + cmds.push({ + cmd: "restore" + }); + return cmds; + } + + compileGlyphImpl() { + (0, _util.unreachable)("Children classes should implement this."); + } + + hasBuiltPath(unicode) { + const { + charCode, + glyphId + } = lookupCmap(this.cmap, unicode); + return this.compiledGlyphs[glyphId] !== undefined && this.compiledCharCodeToGlyphId[charCode] !== undefined; + } + +} + +class TrueTypeCompiled extends CompiledFont { + constructor(glyphs, cmap, fontMatrix) { + super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]); + this.glyphs = glyphs; + this.cmap = cmap; + } + + compileGlyphImpl(code, cmds) { + compileGlyf(code, cmds, this); + } + +} + +class Type2Compiled extends CompiledFont { + constructor(cffInfo, cmap, fontMatrix, glyphNameMap) { + super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]); + this.glyphs = cffInfo.glyphs; + this.gsubrs = cffInfo.gsubrs || []; + this.subrs = cffInfo.subrs || []; + this.cmap = cmap; + this.glyphNameMap = glyphNameMap || (0, _glyphlist.getGlyphsUnicode)(); + this.gsubrsBias = getSubroutineBias(this.gsubrs); + this.subrsBias = getSubroutineBias(this.subrs); + this.isCFFCIDFont = cffInfo.isCFFCIDFont; + this.fdSelect = cffInfo.fdSelect; + this.fdArray = cffInfo.fdArray; + } + + compileGlyphImpl(code, cmds, glyphId) { + compileCharString(code, cmds, this, glyphId); + } + +} + +class FontRendererFactory { + static create(font, seacAnalysisEnabled) { + const data = new Uint8Array(font.data); + let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm; + const numTables = getUint16(data, 4); + + for (let i = 0, p = 12; i < numTables; i++, p += 16) { + const tag = (0, _util.bytesToString)(data.subarray(p, p + 4)); + const offset = getUint32(data, p + 8); + const length = getUint32(data, p + 12); + + switch (tag) { + case "cmap": + cmap = parseCmap(data, offset, offset + length); + break; + + case "glyf": + glyf = data.subarray(offset, offset + length); + break; + + case "loca": + loca = data.subarray(offset, offset + length); + break; + + case "head": + unitsPerEm = getUint16(data, offset + 18); + indexToLocFormat = getUint16(data, offset + 50); + break; + + case "CFF ": + cff = parseCff(data, offset, offset + length, seacAnalysisEnabled); + break; } - }, { - key: "hasBuiltPath", - value: function hasBuiltPath(unicode) { - var cmap = lookupCmap(this.cmap, unicode); - return this.compiledGlyphs[cmap.glyphId] !== undefined && this.compiledCharCodeToGlyphId[cmap.charCode] !== undefined; - } - }]); - - return CompiledFont; - }(); - - var TrueTypeCompiled = - /*#__PURE__*/ - function (_CompiledFont) { - _inherits(TrueTypeCompiled, _CompiledFont); - - function TrueTypeCompiled(glyphs, cmap, fontMatrix) { - var _this; - - _classCallCheck(this, TrueTypeCompiled); - - _this = _possibleConstructorReturn(this, _getPrototypeOf(TrueTypeCompiled).call(this, fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0])); - _this.glyphs = glyphs; - _this.cmap = cmap; - return _this; } - _createClass(TrueTypeCompiled, [{ - key: "compileGlyphImpl", - value: function compileGlyphImpl(code, cmds) { - compileGlyf(code, cmds, this); - } - }]); - - return TrueTypeCompiled; - }(CompiledFont); - - var Type2Compiled = - /*#__PURE__*/ - function (_CompiledFont2) { - _inherits(Type2Compiled, _CompiledFont2); - - function Type2Compiled(cffInfo, cmap, fontMatrix, glyphNameMap) { - var _this2; - - _classCallCheck(this, Type2Compiled); - - _this2 = _possibleConstructorReturn(this, _getPrototypeOf(Type2Compiled).call(this, fontMatrix || [0.001, 0, 0, 0.001, 0, 0])); - _this2.glyphs = cffInfo.glyphs; - _this2.gsubrs = cffInfo.gsubrs || []; - _this2.subrs = cffInfo.subrs || []; - _this2.cmap = cmap; - _this2.glyphNameMap = glyphNameMap || (0, _glyphlist.getGlyphsUnicode)(); - _this2.gsubrsBias = _this2.gsubrs.length < 1240 ? 107 : _this2.gsubrs.length < 33900 ? 1131 : 32768; - _this2.subrsBias = _this2.subrs.length < 1240 ? 107 : _this2.subrs.length < 33900 ? 1131 : 32768; - _this2.isCFFCIDFont = cffInfo.isCFFCIDFont; - _this2.fdSelect = cffInfo.fdSelect; - _this2.fdArray = cffInfo.fdArray; - return _this2; + if (glyf) { + const fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0]; + return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix); } - _createClass(Type2Compiled, [{ - key: "compileGlyphImpl", - value: function compileGlyphImpl(code, cmds, glyphId) { - compileCharString(code, cmds, this, glyphId); - } - }]); + return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap); + } - return Type2Compiled; - }(CompiledFont); - - return { - create: function FontRendererFactory_create(font, seacAnalysisEnabled) { - var data = new Uint8Array(font.data); - var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm; - var numTables = getUshort(data, 4); - - for (var i = 0, p = 12; i < numTables; i++, p += 16) { - var tag = (0, _util.bytesToString)(data.subarray(p, p + 4)); - var offset = getLong(data, p + 8); - var length = getLong(data, p + 12); - - switch (tag) { - case 'cmap': - cmap = parseCmap(data, offset, offset + length); - break; - - case 'glyf': - glyf = data.subarray(offset, offset + length); - break; - - case 'loca': - loca = data.subarray(offset, offset + length); - break; - - case 'head': - unitsPerEm = getUshort(data, offset + 18); - indexToLocFormat = getUshort(data, offset + 50); - break; - - case 'CFF ': - cff = parseCff(data, offset, offset + length, seacAnalysisEnabled); - break; - } - } - - if (glyf) { - var fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0]; - return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix); - } - - return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap); - } - }; -}(); +} exports.FontRendererFactory = FontRendererFactory; /***/ }), -/* 182 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 170 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true +})); +exports.getMetrics = exports.getFontBasicMetrics = void 0; + +var _core_utils = __w_pdfjs_require__(131); + +const getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) { + t.Courier = 600; + t["Courier-Bold"] = 600; + t["Courier-BoldOblique"] = 600; + t["Courier-Oblique"] = 600; + t.Helvetica = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 278; + t.exclam = 278; + t.quotedbl = 355; + t.numbersign = 556; + t.dollar = 556; + t.percent = 889; + t.ampersand = 667; + t.quoteright = 222; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 389; + t.plus = 584; + t.comma = 278; + t.hyphen = 333; + t.period = 278; + t.slash = 278; + t.zero = 556; + t.one = 556; + t.two = 556; + t.three = 556; + t.four = 556; + t.five = 556; + t.six = 556; + t.seven = 556; + t.eight = 556; + t.nine = 556; + t.colon = 278; + t.semicolon = 278; + t.less = 584; + t.equal = 584; + t.greater = 584; + t.question = 556; + t.at = 1015; + t.A = 667; + t.B = 667; + t.C = 722; + t.D = 722; + t.E = 667; + t.F = 611; + t.G = 778; + t.H = 722; + t.I = 278; + t.J = 500; + t.K = 667; + t.L = 556; + t.M = 833; + t.N = 722; + t.O = 778; + t.P = 667; + t.Q = 778; + t.R = 722; + t.S = 667; + t.T = 611; + t.U = 722; + t.V = 667; + t.W = 944; + t.X = 667; + t.Y = 667; + t.Z = 611; + t.bracketleft = 278; + t.backslash = 278; + t.bracketright = 278; + t.asciicircum = 469; + t.underscore = 556; + t.quoteleft = 222; + t.a = 556; + t.b = 556; + t.c = 500; + t.d = 556; + t.e = 556; + t.f = 278; + t.g = 556; + t.h = 556; + t.i = 222; + t.j = 222; + t.k = 500; + t.l = 222; + t.m = 833; + t.n = 556; + t.o = 556; + t.p = 556; + t.q = 556; + t.r = 333; + t.s = 500; + t.t = 278; + t.u = 556; + t.v = 500; + t.w = 722; + t.x = 500; + t.y = 500; + t.z = 500; + t.braceleft = 334; + t.bar = 260; + t.braceright = 334; + t.asciitilde = 584; + t.exclamdown = 333; + t.cent = 556; + t.sterling = 556; + t.fraction = 167; + t.yen = 556; + t.florin = 556; + t.section = 556; + t.currency = 556; + t.quotesingle = 191; + t.quotedblleft = 333; + t.guillemotleft = 556; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 500; + t.fl = 500; + t.endash = 556; + t.dagger = 556; + t.daggerdbl = 556; + t.periodcentered = 278; + t.paragraph = 537; + t.bullet = 350; + t.quotesinglbase = 222; + t.quotedblbase = 333; + t.quotedblright = 333; + t.guillemotright = 556; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 611; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 1000; + t.ordfeminine = 370; + t.Lslash = 556; + t.Oslash = 778; + t.OE = 1000; + t.ordmasculine = 365; + t.ae = 889; + t.dotlessi = 278; + t.lslash = 222; + t.oslash = 611; + t.oe = 944; + t.germandbls = 611; + t.Idieresis = 278; + t.eacute = 556; + t.abreve = 556; + t.uhungarumlaut = 556; + t.ecaron = 556; + t.Ydieresis = 667; + t.divide = 584; + t.Yacute = 667; + t.Acircumflex = 667; + t.aacute = 556; + t.Ucircumflex = 722; + t.yacute = 500; + t.scommaaccent = 500; + t.ecircumflex = 556; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 556; + t.Uacute = 722; + t.uogonek = 556; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 737; + t.Emacron = 667; + t.ccaron = 500; + t.aring = 556; + t.Ncommaaccent = 722; + t.lacute = 222; + t.agrave = 556; + t.Tcommaaccent = 611; + t.Cacute = 722; + t.atilde = 556; + t.Edotaccent = 667; + t.scaron = 500; + t.scedilla = 500; + t.iacute = 278; + t.lozenge = 471; + t.Rcaron = 722; + t.Gcommaaccent = 778; + t.ucircumflex = 556; + t.acircumflex = 556; + t.Amacron = 667; + t.rcaron = 333; + t.ccedilla = 500; + t.Zdotaccent = 611; + t.Thorn = 667; + t.Omacron = 778; + t.Racute = 722; + t.Sacute = 667; + t.dcaron = 643; + t.Umacron = 722; + t.uring = 556; + t.threesuperior = 333; + t.Ograve = 778; + t.Agrave = 667; + t.Abreve = 667; + t.multiply = 584; + t.uacute = 556; + t.Tcaron = 611; + t.partialdiff = 476; + t.ydieresis = 500; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 556; + t.edieresis = 556; + t.cacute = 500; + t.nacute = 556; + t.umacron = 556; + t.Ncaron = 722; + t.Iacute = 278; + t.plusminus = 584; + t.brokenbar = 260; + t.registered = 737; + t.Gbreve = 778; + t.Idotaccent = 278; + t.summation = 600; + t.Egrave = 667; + t.racute = 333; + t.omacron = 556; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 722; + t.lcommaaccent = 222; + t.tcaron = 317; + t.eogonek = 556; + t.Uogonek = 722; + t.Aacute = 667; + t.Adieresis = 667; + t.egrave = 556; + t.zacute = 500; + t.iogonek = 222; + t.Oacute = 778; + t.oacute = 556; + t.amacron = 556; + t.sacute = 500; + t.idieresis = 278; + t.Ocircumflex = 778; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 556; + t.twosuperior = 333; + t.Odieresis = 778; + t.mu = 556; + t.igrave = 278; + t.ohungarumlaut = 556; + t.Eogonek = 667; + t.dcroat = 556; + t.threequarters = 834; + t.Scedilla = 667; + t.lcaron = 299; + t.Kcommaaccent = 667; + t.Lacute = 556; + t.trademark = 1000; + t.edotaccent = 556; + t.Igrave = 278; + t.Imacron = 278; + t.Lcaron = 556; + t.onehalf = 834; + t.lessequal = 549; + t.ocircumflex = 556; + t.ntilde = 556; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 556; + t.gbreve = 556; + t.onequarter = 834; + t.Scaron = 667; + t.Scommaaccent = 667; + t.Ohungarumlaut = 778; + t.degree = 400; + t.ograve = 556; + t.Ccaron = 722; + t.ugrave = 556; + t.radical = 453; + t.Dcaron = 722; + t.rcommaaccent = 333; + t.Ntilde = 722; + t.otilde = 556; + t.Rcommaaccent = 722; + t.Lcommaaccent = 556; + t.Atilde = 667; + t.Aogonek = 667; + t.Aring = 667; + t.Otilde = 778; + t.zdotaccent = 500; + t.Ecaron = 667; + t.Iogonek = 278; + t.kcommaaccent = 500; + t.minus = 584; + t.Icircumflex = 278; + t.ncaron = 556; + t.tcommaaccent = 278; + t.logicalnot = 584; + t.odieresis = 556; + t.udieresis = 556; + t.notequal = 549; + t.gcommaaccent = 556; + t.eth = 556; + t.zcaron = 500; + t.ncommaaccent = 556; + t.onesuperior = 333; + t.imacron = 278; + t.Euro = 556; + }); + t["Helvetica-Bold"] = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 278; + t.exclam = 333; + t.quotedbl = 474; + t.numbersign = 556; + t.dollar = 556; + t.percent = 889; + t.ampersand = 722; + t.quoteright = 278; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 389; + t.plus = 584; + t.comma = 278; + t.hyphen = 333; + t.period = 278; + t.slash = 278; + t.zero = 556; + t.one = 556; + t.two = 556; + t.three = 556; + t.four = 556; + t.five = 556; + t.six = 556; + t.seven = 556; + t.eight = 556; + t.nine = 556; + t.colon = 333; + t.semicolon = 333; + t.less = 584; + t.equal = 584; + t.greater = 584; + t.question = 611; + t.at = 975; + t.A = 722; + t.B = 722; + t.C = 722; + t.D = 722; + t.E = 667; + t.F = 611; + t.G = 778; + t.H = 722; + t.I = 278; + t.J = 556; + t.K = 722; + t.L = 611; + t.M = 833; + t.N = 722; + t.O = 778; + t.P = 667; + t.Q = 778; + t.R = 722; + t.S = 667; + t.T = 611; + t.U = 722; + t.V = 667; + t.W = 944; + t.X = 667; + t.Y = 667; + t.Z = 611; + t.bracketleft = 333; + t.backslash = 278; + t.bracketright = 333; + t.asciicircum = 584; + t.underscore = 556; + t.quoteleft = 278; + t.a = 556; + t.b = 611; + t.c = 556; + t.d = 611; + t.e = 556; + t.f = 333; + t.g = 611; + t.h = 611; + t.i = 278; + t.j = 278; + t.k = 556; + t.l = 278; + t.m = 889; + t.n = 611; + t.o = 611; + t.p = 611; + t.q = 611; + t.r = 389; + t.s = 556; + t.t = 333; + t.u = 611; + t.v = 556; + t.w = 778; + t.x = 556; + t.y = 556; + t.z = 500; + t.braceleft = 389; + t.bar = 280; + t.braceright = 389; + t.asciitilde = 584; + t.exclamdown = 333; + t.cent = 556; + t.sterling = 556; + t.fraction = 167; + t.yen = 556; + t.florin = 556; + t.section = 556; + t.currency = 556; + t.quotesingle = 238; + t.quotedblleft = 500; + t.guillemotleft = 556; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 611; + t.fl = 611; + t.endash = 556; + t.dagger = 556; + t.daggerdbl = 556; + t.periodcentered = 278; + t.paragraph = 556; + t.bullet = 350; + t.quotesinglbase = 278; + t.quotedblbase = 500; + t.quotedblright = 500; + t.guillemotright = 556; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 611; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 1000; + t.ordfeminine = 370; + t.Lslash = 611; + t.Oslash = 778; + t.OE = 1000; + t.ordmasculine = 365; + t.ae = 889; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 611; + t.oe = 944; + t.germandbls = 611; + t.Idieresis = 278; + t.eacute = 556; + t.abreve = 556; + t.uhungarumlaut = 611; + t.ecaron = 556; + t.Ydieresis = 667; + t.divide = 584; + t.Yacute = 667; + t.Acircumflex = 722; + t.aacute = 556; + t.Ucircumflex = 722; + t.yacute = 556; + t.scommaaccent = 556; + t.ecircumflex = 556; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 556; + t.Uacute = 722; + t.uogonek = 611; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 737; + t.Emacron = 667; + t.ccaron = 556; + t.aring = 556; + t.Ncommaaccent = 722; + t.lacute = 278; + t.agrave = 556; + t.Tcommaaccent = 611; + t.Cacute = 722; + t.atilde = 556; + t.Edotaccent = 667; + t.scaron = 556; + t.scedilla = 556; + t.iacute = 278; + t.lozenge = 494; + t.Rcaron = 722; + t.Gcommaaccent = 778; + t.ucircumflex = 611; + t.acircumflex = 556; + t.Amacron = 722; + t.rcaron = 389; + t.ccedilla = 556; + t.Zdotaccent = 611; + t.Thorn = 667; + t.Omacron = 778; + t.Racute = 722; + t.Sacute = 667; + t.dcaron = 743; + t.Umacron = 722; + t.uring = 611; + t.threesuperior = 333; + t.Ograve = 778; + t.Agrave = 722; + t.Abreve = 722; + t.multiply = 584; + t.uacute = 611; + t.Tcaron = 611; + t.partialdiff = 494; + t.ydieresis = 556; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 556; + t.edieresis = 556; + t.cacute = 556; + t.nacute = 611; + t.umacron = 611; + t.Ncaron = 722; + t.Iacute = 278; + t.plusminus = 584; + t.brokenbar = 280; + t.registered = 737; + t.Gbreve = 778; + t.Idotaccent = 278; + t.summation = 600; + t.Egrave = 667; + t.racute = 389; + t.omacron = 611; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 722; + t.lcommaaccent = 278; + t.tcaron = 389; + t.eogonek = 556; + t.Uogonek = 722; + t.Aacute = 722; + t.Adieresis = 722; + t.egrave = 556; + t.zacute = 500; + t.iogonek = 278; + t.Oacute = 778; + t.oacute = 611; + t.amacron = 556; + t.sacute = 556; + t.idieresis = 278; + t.Ocircumflex = 778; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 611; + t.twosuperior = 333; + t.Odieresis = 778; + t.mu = 611; + t.igrave = 278; + t.ohungarumlaut = 611; + t.Eogonek = 667; + t.dcroat = 611; + t.threequarters = 834; + t.Scedilla = 667; + t.lcaron = 400; + t.Kcommaaccent = 722; + t.Lacute = 611; + t.trademark = 1000; + t.edotaccent = 556; + t.Igrave = 278; + t.Imacron = 278; + t.Lcaron = 611; + t.onehalf = 834; + t.lessequal = 549; + t.ocircumflex = 611; + t.ntilde = 611; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 556; + t.gbreve = 611; + t.onequarter = 834; + t.Scaron = 667; + t.Scommaaccent = 667; + t.Ohungarumlaut = 778; + t.degree = 400; + t.ograve = 611; + t.Ccaron = 722; + t.ugrave = 611; + t.radical = 549; + t.Dcaron = 722; + t.rcommaaccent = 389; + t.Ntilde = 722; + t.otilde = 611; + t.Rcommaaccent = 722; + t.Lcommaaccent = 611; + t.Atilde = 722; + t.Aogonek = 722; + t.Aring = 722; + t.Otilde = 778; + t.zdotaccent = 500; + t.Ecaron = 667; + t.Iogonek = 278; + t.kcommaaccent = 556; + t.minus = 584; + t.Icircumflex = 278; + t.ncaron = 611; + t.tcommaaccent = 333; + t.logicalnot = 584; + t.odieresis = 611; + t.udieresis = 611; + t.notequal = 549; + t.gcommaaccent = 611; + t.eth = 611; + t.zcaron = 500; + t.ncommaaccent = 611; + t.onesuperior = 333; + t.imacron = 278; + t.Euro = 556; + }); + t["Helvetica-BoldOblique"] = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 278; + t.exclam = 333; + t.quotedbl = 474; + t.numbersign = 556; + t.dollar = 556; + t.percent = 889; + t.ampersand = 722; + t.quoteright = 278; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 389; + t.plus = 584; + t.comma = 278; + t.hyphen = 333; + t.period = 278; + t.slash = 278; + t.zero = 556; + t.one = 556; + t.two = 556; + t.three = 556; + t.four = 556; + t.five = 556; + t.six = 556; + t.seven = 556; + t.eight = 556; + t.nine = 556; + t.colon = 333; + t.semicolon = 333; + t.less = 584; + t.equal = 584; + t.greater = 584; + t.question = 611; + t.at = 975; + t.A = 722; + t.B = 722; + t.C = 722; + t.D = 722; + t.E = 667; + t.F = 611; + t.G = 778; + t.H = 722; + t.I = 278; + t.J = 556; + t.K = 722; + t.L = 611; + t.M = 833; + t.N = 722; + t.O = 778; + t.P = 667; + t.Q = 778; + t.R = 722; + t.S = 667; + t.T = 611; + t.U = 722; + t.V = 667; + t.W = 944; + t.X = 667; + t.Y = 667; + t.Z = 611; + t.bracketleft = 333; + t.backslash = 278; + t.bracketright = 333; + t.asciicircum = 584; + t.underscore = 556; + t.quoteleft = 278; + t.a = 556; + t.b = 611; + t.c = 556; + t.d = 611; + t.e = 556; + t.f = 333; + t.g = 611; + t.h = 611; + t.i = 278; + t.j = 278; + t.k = 556; + t.l = 278; + t.m = 889; + t.n = 611; + t.o = 611; + t.p = 611; + t.q = 611; + t.r = 389; + t.s = 556; + t.t = 333; + t.u = 611; + t.v = 556; + t.w = 778; + t.x = 556; + t.y = 556; + t.z = 500; + t.braceleft = 389; + t.bar = 280; + t.braceright = 389; + t.asciitilde = 584; + t.exclamdown = 333; + t.cent = 556; + t.sterling = 556; + t.fraction = 167; + t.yen = 556; + t.florin = 556; + t.section = 556; + t.currency = 556; + t.quotesingle = 238; + t.quotedblleft = 500; + t.guillemotleft = 556; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 611; + t.fl = 611; + t.endash = 556; + t.dagger = 556; + t.daggerdbl = 556; + t.periodcentered = 278; + t.paragraph = 556; + t.bullet = 350; + t.quotesinglbase = 278; + t.quotedblbase = 500; + t.quotedblright = 500; + t.guillemotright = 556; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 611; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 1000; + t.ordfeminine = 370; + t.Lslash = 611; + t.Oslash = 778; + t.OE = 1000; + t.ordmasculine = 365; + t.ae = 889; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 611; + t.oe = 944; + t.germandbls = 611; + t.Idieresis = 278; + t.eacute = 556; + t.abreve = 556; + t.uhungarumlaut = 611; + t.ecaron = 556; + t.Ydieresis = 667; + t.divide = 584; + t.Yacute = 667; + t.Acircumflex = 722; + t.aacute = 556; + t.Ucircumflex = 722; + t.yacute = 556; + t.scommaaccent = 556; + t.ecircumflex = 556; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 556; + t.Uacute = 722; + t.uogonek = 611; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 737; + t.Emacron = 667; + t.ccaron = 556; + t.aring = 556; + t.Ncommaaccent = 722; + t.lacute = 278; + t.agrave = 556; + t.Tcommaaccent = 611; + t.Cacute = 722; + t.atilde = 556; + t.Edotaccent = 667; + t.scaron = 556; + t.scedilla = 556; + t.iacute = 278; + t.lozenge = 494; + t.Rcaron = 722; + t.Gcommaaccent = 778; + t.ucircumflex = 611; + t.acircumflex = 556; + t.Amacron = 722; + t.rcaron = 389; + t.ccedilla = 556; + t.Zdotaccent = 611; + t.Thorn = 667; + t.Omacron = 778; + t.Racute = 722; + t.Sacute = 667; + t.dcaron = 743; + t.Umacron = 722; + t.uring = 611; + t.threesuperior = 333; + t.Ograve = 778; + t.Agrave = 722; + t.Abreve = 722; + t.multiply = 584; + t.uacute = 611; + t.Tcaron = 611; + t.partialdiff = 494; + t.ydieresis = 556; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 556; + t.edieresis = 556; + t.cacute = 556; + t.nacute = 611; + t.umacron = 611; + t.Ncaron = 722; + t.Iacute = 278; + t.plusminus = 584; + t.brokenbar = 280; + t.registered = 737; + t.Gbreve = 778; + t.Idotaccent = 278; + t.summation = 600; + t.Egrave = 667; + t.racute = 389; + t.omacron = 611; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 722; + t.lcommaaccent = 278; + t.tcaron = 389; + t.eogonek = 556; + t.Uogonek = 722; + t.Aacute = 722; + t.Adieresis = 722; + t.egrave = 556; + t.zacute = 500; + t.iogonek = 278; + t.Oacute = 778; + t.oacute = 611; + t.amacron = 556; + t.sacute = 556; + t.idieresis = 278; + t.Ocircumflex = 778; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 611; + t.twosuperior = 333; + t.Odieresis = 778; + t.mu = 611; + t.igrave = 278; + t.ohungarumlaut = 611; + t.Eogonek = 667; + t.dcroat = 611; + t.threequarters = 834; + t.Scedilla = 667; + t.lcaron = 400; + t.Kcommaaccent = 722; + t.Lacute = 611; + t.trademark = 1000; + t.edotaccent = 556; + t.Igrave = 278; + t.Imacron = 278; + t.Lcaron = 611; + t.onehalf = 834; + t.lessequal = 549; + t.ocircumflex = 611; + t.ntilde = 611; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 556; + t.gbreve = 611; + t.onequarter = 834; + t.Scaron = 667; + t.Scommaaccent = 667; + t.Ohungarumlaut = 778; + t.degree = 400; + t.ograve = 611; + t.Ccaron = 722; + t.ugrave = 611; + t.radical = 549; + t.Dcaron = 722; + t.rcommaaccent = 389; + t.Ntilde = 722; + t.otilde = 611; + t.Rcommaaccent = 722; + t.Lcommaaccent = 611; + t.Atilde = 722; + t.Aogonek = 722; + t.Aring = 722; + t.Otilde = 778; + t.zdotaccent = 500; + t.Ecaron = 667; + t.Iogonek = 278; + t.kcommaaccent = 556; + t.minus = 584; + t.Icircumflex = 278; + t.ncaron = 611; + t.tcommaaccent = 333; + t.logicalnot = 584; + t.odieresis = 611; + t.udieresis = 611; + t.notequal = 549; + t.gcommaaccent = 611; + t.eth = 611; + t.zcaron = 500; + t.ncommaaccent = 611; + t.onesuperior = 333; + t.imacron = 278; + t.Euro = 556; + }); + t["Helvetica-Oblique"] = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 278; + t.exclam = 278; + t.quotedbl = 355; + t.numbersign = 556; + t.dollar = 556; + t.percent = 889; + t.ampersand = 667; + t.quoteright = 222; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 389; + t.plus = 584; + t.comma = 278; + t.hyphen = 333; + t.period = 278; + t.slash = 278; + t.zero = 556; + t.one = 556; + t.two = 556; + t.three = 556; + t.four = 556; + t.five = 556; + t.six = 556; + t.seven = 556; + t.eight = 556; + t.nine = 556; + t.colon = 278; + t.semicolon = 278; + t.less = 584; + t.equal = 584; + t.greater = 584; + t.question = 556; + t.at = 1015; + t.A = 667; + t.B = 667; + t.C = 722; + t.D = 722; + t.E = 667; + t.F = 611; + t.G = 778; + t.H = 722; + t.I = 278; + t.J = 500; + t.K = 667; + t.L = 556; + t.M = 833; + t.N = 722; + t.O = 778; + t.P = 667; + t.Q = 778; + t.R = 722; + t.S = 667; + t.T = 611; + t.U = 722; + t.V = 667; + t.W = 944; + t.X = 667; + t.Y = 667; + t.Z = 611; + t.bracketleft = 278; + t.backslash = 278; + t.bracketright = 278; + t.asciicircum = 469; + t.underscore = 556; + t.quoteleft = 222; + t.a = 556; + t.b = 556; + t.c = 500; + t.d = 556; + t.e = 556; + t.f = 278; + t.g = 556; + t.h = 556; + t.i = 222; + t.j = 222; + t.k = 500; + t.l = 222; + t.m = 833; + t.n = 556; + t.o = 556; + t.p = 556; + t.q = 556; + t.r = 333; + t.s = 500; + t.t = 278; + t.u = 556; + t.v = 500; + t.w = 722; + t.x = 500; + t.y = 500; + t.z = 500; + t.braceleft = 334; + t.bar = 260; + t.braceright = 334; + t.asciitilde = 584; + t.exclamdown = 333; + t.cent = 556; + t.sterling = 556; + t.fraction = 167; + t.yen = 556; + t.florin = 556; + t.section = 556; + t.currency = 556; + t.quotesingle = 191; + t.quotedblleft = 333; + t.guillemotleft = 556; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 500; + t.fl = 500; + t.endash = 556; + t.dagger = 556; + t.daggerdbl = 556; + t.periodcentered = 278; + t.paragraph = 537; + t.bullet = 350; + t.quotesinglbase = 222; + t.quotedblbase = 333; + t.quotedblright = 333; + t.guillemotright = 556; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 611; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 1000; + t.ordfeminine = 370; + t.Lslash = 556; + t.Oslash = 778; + t.OE = 1000; + t.ordmasculine = 365; + t.ae = 889; + t.dotlessi = 278; + t.lslash = 222; + t.oslash = 611; + t.oe = 944; + t.germandbls = 611; + t.Idieresis = 278; + t.eacute = 556; + t.abreve = 556; + t.uhungarumlaut = 556; + t.ecaron = 556; + t.Ydieresis = 667; + t.divide = 584; + t.Yacute = 667; + t.Acircumflex = 667; + t.aacute = 556; + t.Ucircumflex = 722; + t.yacute = 500; + t.scommaaccent = 500; + t.ecircumflex = 556; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 556; + t.Uacute = 722; + t.uogonek = 556; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 737; + t.Emacron = 667; + t.ccaron = 500; + t.aring = 556; + t.Ncommaaccent = 722; + t.lacute = 222; + t.agrave = 556; + t.Tcommaaccent = 611; + t.Cacute = 722; + t.atilde = 556; + t.Edotaccent = 667; + t.scaron = 500; + t.scedilla = 500; + t.iacute = 278; + t.lozenge = 471; + t.Rcaron = 722; + t.Gcommaaccent = 778; + t.ucircumflex = 556; + t.acircumflex = 556; + t.Amacron = 667; + t.rcaron = 333; + t.ccedilla = 500; + t.Zdotaccent = 611; + t.Thorn = 667; + t.Omacron = 778; + t.Racute = 722; + t.Sacute = 667; + t.dcaron = 643; + t.Umacron = 722; + t.uring = 556; + t.threesuperior = 333; + t.Ograve = 778; + t.Agrave = 667; + t.Abreve = 667; + t.multiply = 584; + t.uacute = 556; + t.Tcaron = 611; + t.partialdiff = 476; + t.ydieresis = 500; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 556; + t.edieresis = 556; + t.cacute = 500; + t.nacute = 556; + t.umacron = 556; + t.Ncaron = 722; + t.Iacute = 278; + t.plusminus = 584; + t.brokenbar = 260; + t.registered = 737; + t.Gbreve = 778; + t.Idotaccent = 278; + t.summation = 600; + t.Egrave = 667; + t.racute = 333; + t.omacron = 556; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 722; + t.lcommaaccent = 222; + t.tcaron = 317; + t.eogonek = 556; + t.Uogonek = 722; + t.Aacute = 667; + t.Adieresis = 667; + t.egrave = 556; + t.zacute = 500; + t.iogonek = 222; + t.Oacute = 778; + t.oacute = 556; + t.amacron = 556; + t.sacute = 500; + t.idieresis = 278; + t.Ocircumflex = 778; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 556; + t.twosuperior = 333; + t.Odieresis = 778; + t.mu = 556; + t.igrave = 278; + t.ohungarumlaut = 556; + t.Eogonek = 667; + t.dcroat = 556; + t.threequarters = 834; + t.Scedilla = 667; + t.lcaron = 299; + t.Kcommaaccent = 667; + t.Lacute = 556; + t.trademark = 1000; + t.edotaccent = 556; + t.Igrave = 278; + t.Imacron = 278; + t.Lcaron = 556; + t.onehalf = 834; + t.lessequal = 549; + t.ocircumflex = 556; + t.ntilde = 556; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 556; + t.gbreve = 556; + t.onequarter = 834; + t.Scaron = 667; + t.Scommaaccent = 667; + t.Ohungarumlaut = 778; + t.degree = 400; + t.ograve = 556; + t.Ccaron = 722; + t.ugrave = 556; + t.radical = 453; + t.Dcaron = 722; + t.rcommaaccent = 333; + t.Ntilde = 722; + t.otilde = 556; + t.Rcommaaccent = 722; + t.Lcommaaccent = 556; + t.Atilde = 667; + t.Aogonek = 667; + t.Aring = 667; + t.Otilde = 778; + t.zdotaccent = 500; + t.Ecaron = 667; + t.Iogonek = 278; + t.kcommaaccent = 500; + t.minus = 584; + t.Icircumflex = 278; + t.ncaron = 556; + t.tcommaaccent = 278; + t.logicalnot = 584; + t.odieresis = 556; + t.udieresis = 556; + t.notequal = 549; + t.gcommaaccent = 556; + t.eth = 556; + t.zcaron = 500; + t.ncommaaccent = 556; + t.onesuperior = 333; + t.imacron = 278; + t.Euro = 556; + }); + t.Symbol = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 250; + t.exclam = 333; + t.universal = 713; + t.numbersign = 500; + t.existential = 549; + t.percent = 833; + t.ampersand = 778; + t.suchthat = 439; + t.parenleft = 333; + t.parenright = 333; + t.asteriskmath = 500; + t.plus = 549; + t.comma = 250; + t.minus = 549; + t.period = 250; + t.slash = 278; + t.zero = 500; + t.one = 500; + t.two = 500; + t.three = 500; + t.four = 500; + t.five = 500; + t.six = 500; + t.seven = 500; + t.eight = 500; + t.nine = 500; + t.colon = 278; + t.semicolon = 278; + t.less = 549; + t.equal = 549; + t.greater = 549; + t.question = 444; + t.congruent = 549; + t.Alpha = 722; + t.Beta = 667; + t.Chi = 722; + t.Delta = 612; + t.Epsilon = 611; + t.Phi = 763; + t.Gamma = 603; + t.Eta = 722; + t.Iota = 333; + t.theta1 = 631; + t.Kappa = 722; + t.Lambda = 686; + t.Mu = 889; + t.Nu = 722; + t.Omicron = 722; + t.Pi = 768; + t.Theta = 741; + t.Rho = 556; + t.Sigma = 592; + t.Tau = 611; + t.Upsilon = 690; + t.sigma1 = 439; + t.Omega = 768; + t.Xi = 645; + t.Psi = 795; + t.Zeta = 611; + t.bracketleft = 333; + t.therefore = 863; + t.bracketright = 333; + t.perpendicular = 658; + t.underscore = 500; + t.radicalex = 500; + t.alpha = 631; + t.beta = 549; + t.chi = 549; + t.delta = 494; + t.epsilon = 439; + t.phi = 521; + t.gamma = 411; + t.eta = 603; + t.iota = 329; + t.phi1 = 603; + t.kappa = 549; + t.lambda = 549; + t.mu = 576; + t.nu = 521; + t.omicron = 549; + t.pi = 549; + t.theta = 521; + t.rho = 549; + t.sigma = 603; + t.tau = 439; + t.upsilon = 576; + t.omega1 = 713; + t.omega = 686; + t.xi = 493; + t.psi = 686; + t.zeta = 494; + t.braceleft = 480; + t.bar = 200; + t.braceright = 480; + t.similar = 549; + t.Euro = 750; + t.Upsilon1 = 620; + t.minute = 247; + t.lessequal = 549; + t.fraction = 167; + t.infinity = 713; + t.florin = 500; + t.club = 753; + t.diamond = 753; + t.heart = 753; + t.spade = 753; + t.arrowboth = 1042; + t.arrowleft = 987; + t.arrowup = 603; + t.arrowright = 987; + t.arrowdown = 603; + t.degree = 400; + t.plusminus = 549; + t.second = 411; + t.greaterequal = 549; + t.multiply = 549; + t.proportional = 713; + t.partialdiff = 494; + t.bullet = 460; + t.divide = 549; + t.notequal = 549; + t.equivalence = 549; + t.approxequal = 549; + t.ellipsis = 1000; + t.arrowvertex = 603; + t.arrowhorizex = 1000; + t.carriagereturn = 658; + t.aleph = 823; + t.Ifraktur = 686; + t.Rfraktur = 795; + t.weierstrass = 987; + t.circlemultiply = 768; + t.circleplus = 768; + t.emptyset = 823; + t.intersection = 768; + t.union = 768; + t.propersuperset = 713; + t.reflexsuperset = 713; + t.notsubset = 713; + t.propersubset = 713; + t.reflexsubset = 713; + t.element = 713; + t.notelement = 713; + t.angle = 768; + t.gradient = 713; + t.registerserif = 790; + t.copyrightserif = 790; + t.trademarkserif = 890; + t.product = 823; + t.radical = 549; + t.dotmath = 250; + t.logicalnot = 713; + t.logicaland = 603; + t.logicalor = 603; + t.arrowdblboth = 1042; + t.arrowdblleft = 987; + t.arrowdblup = 603; + t.arrowdblright = 987; + t.arrowdbldown = 603; + t.lozenge = 494; + t.angleleft = 329; + t.registersans = 790; + t.copyrightsans = 790; + t.trademarksans = 786; + t.summation = 713; + t.parenlefttp = 384; + t.parenleftex = 384; + t.parenleftbt = 384; + t.bracketlefttp = 384; + t.bracketleftex = 384; + t.bracketleftbt = 384; + t.bracelefttp = 494; + t.braceleftmid = 494; + t.braceleftbt = 494; + t.braceex = 494; + t.angleright = 329; + t.integral = 274; + t.integraltp = 686; + t.integralex = 686; + t.integralbt = 686; + t.parenrighttp = 384; + t.parenrightex = 384; + t.parenrightbt = 384; + t.bracketrighttp = 384; + t.bracketrightex = 384; + t.bracketrightbt = 384; + t.bracerighttp = 494; + t.bracerightmid = 494; + t.bracerightbt = 494; + t.apple = 790; + }); + t["Times-Roman"] = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 250; + t.exclam = 333; + t.quotedbl = 408; + t.numbersign = 500; + t.dollar = 500; + t.percent = 833; + t.ampersand = 778; + t.quoteright = 333; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 500; + t.plus = 564; + t.comma = 250; + t.hyphen = 333; + t.period = 250; + t.slash = 278; + t.zero = 500; + t.one = 500; + t.two = 500; + t.three = 500; + t.four = 500; + t.five = 500; + t.six = 500; + t.seven = 500; + t.eight = 500; + t.nine = 500; + t.colon = 278; + t.semicolon = 278; + t.less = 564; + t.equal = 564; + t.greater = 564; + t.question = 444; + t.at = 921; + t.A = 722; + t.B = 667; + t.C = 667; + t.D = 722; + t.E = 611; + t.F = 556; + t.G = 722; + t.H = 722; + t.I = 333; + t.J = 389; + t.K = 722; + t.L = 611; + t.M = 889; + t.N = 722; + t.O = 722; + t.P = 556; + t.Q = 722; + t.R = 667; + t.S = 556; + t.T = 611; + t.U = 722; + t.V = 722; + t.W = 944; + t.X = 722; + t.Y = 722; + t.Z = 611; + t.bracketleft = 333; + t.backslash = 278; + t.bracketright = 333; + t.asciicircum = 469; + t.underscore = 500; + t.quoteleft = 333; + t.a = 444; + t.b = 500; + t.c = 444; + t.d = 500; + t.e = 444; + t.f = 333; + t.g = 500; + t.h = 500; + t.i = 278; + t.j = 278; + t.k = 500; + t.l = 278; + t.m = 778; + t.n = 500; + t.o = 500; + t.p = 500; + t.q = 500; + t.r = 333; + t.s = 389; + t.t = 278; + t.u = 500; + t.v = 500; + t.w = 722; + t.x = 500; + t.y = 500; + t.z = 444; + t.braceleft = 480; + t.bar = 200; + t.braceright = 480; + t.asciitilde = 541; + t.exclamdown = 333; + t.cent = 500; + t.sterling = 500; + t.fraction = 167; + t.yen = 500; + t.florin = 500; + t.section = 500; + t.currency = 500; + t.quotesingle = 180; + t.quotedblleft = 444; + t.guillemotleft = 500; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 556; + t.fl = 556; + t.endash = 500; + t.dagger = 500; + t.daggerdbl = 500; + t.periodcentered = 250; + t.paragraph = 453; + t.bullet = 350; + t.quotesinglbase = 333; + t.quotedblbase = 444; + t.quotedblright = 444; + t.guillemotright = 500; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 444; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 889; + t.ordfeminine = 276; + t.Lslash = 611; + t.Oslash = 722; + t.OE = 889; + t.ordmasculine = 310; + t.ae = 667; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 500; + t.oe = 722; + t.germandbls = 500; + t.Idieresis = 333; + t.eacute = 444; + t.abreve = 444; + t.uhungarumlaut = 500; + t.ecaron = 444; + t.Ydieresis = 722; + t.divide = 564; + t.Yacute = 722; + t.Acircumflex = 722; + t.aacute = 444; + t.Ucircumflex = 722; + t.yacute = 500; + t.scommaaccent = 389; + t.ecircumflex = 444; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 444; + t.Uacute = 722; + t.uogonek = 500; + t.Edieresis = 611; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 760; + t.Emacron = 611; + t.ccaron = 444; + t.aring = 444; + t.Ncommaaccent = 722; + t.lacute = 278; + t.agrave = 444; + t.Tcommaaccent = 611; + t.Cacute = 667; + t.atilde = 444; + t.Edotaccent = 611; + t.scaron = 389; + t.scedilla = 389; + t.iacute = 278; + t.lozenge = 471; + t.Rcaron = 667; + t.Gcommaaccent = 722; + t.ucircumflex = 500; + t.acircumflex = 444; + t.Amacron = 722; + t.rcaron = 333; + t.ccedilla = 444; + t.Zdotaccent = 611; + t.Thorn = 556; + t.Omacron = 722; + t.Racute = 667; + t.Sacute = 556; + t.dcaron = 588; + t.Umacron = 722; + t.uring = 500; + t.threesuperior = 300; + t.Ograve = 722; + t.Agrave = 722; + t.Abreve = 722; + t.multiply = 564; + t.uacute = 500; + t.Tcaron = 611; + t.partialdiff = 476; + t.ydieresis = 500; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 611; + t.adieresis = 444; + t.edieresis = 444; + t.cacute = 444; + t.nacute = 500; + t.umacron = 500; + t.Ncaron = 722; + t.Iacute = 333; + t.plusminus = 564; + t.brokenbar = 200; + t.registered = 760; + t.Gbreve = 722; + t.Idotaccent = 333; + t.summation = 600; + t.Egrave = 611; + t.racute = 333; + t.omacron = 500; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 667; + t.lcommaaccent = 278; + t.tcaron = 326; + t.eogonek = 444; + t.Uogonek = 722; + t.Aacute = 722; + t.Adieresis = 722; + t.egrave = 444; + t.zacute = 444; + t.iogonek = 278; + t.Oacute = 722; + t.oacute = 500; + t.amacron = 444; + t.sacute = 389; + t.idieresis = 278; + t.Ocircumflex = 722; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 500; + t.twosuperior = 300; + t.Odieresis = 722; + t.mu = 500; + t.igrave = 278; + t.ohungarumlaut = 500; + t.Eogonek = 611; + t.dcroat = 500; + t.threequarters = 750; + t.Scedilla = 556; + t.lcaron = 344; + t.Kcommaaccent = 722; + t.Lacute = 611; + t.trademark = 980; + t.edotaccent = 444; + t.Igrave = 333; + t.Imacron = 333; + t.Lcaron = 611; + t.onehalf = 750; + t.lessequal = 549; + t.ocircumflex = 500; + t.ntilde = 500; + t.Uhungarumlaut = 722; + t.Eacute = 611; + t.emacron = 444; + t.gbreve = 500; + t.onequarter = 750; + t.Scaron = 556; + t.Scommaaccent = 556; + t.Ohungarumlaut = 722; + t.degree = 400; + t.ograve = 500; + t.Ccaron = 667; + t.ugrave = 500; + t.radical = 453; + t.Dcaron = 722; + t.rcommaaccent = 333; + t.Ntilde = 722; + t.otilde = 500; + t.Rcommaaccent = 667; + t.Lcommaaccent = 611; + t.Atilde = 722; + t.Aogonek = 722; + t.Aring = 722; + t.Otilde = 722; + t.zdotaccent = 444; + t.Ecaron = 611; + t.Iogonek = 333; + t.kcommaaccent = 500; + t.minus = 564; + t.Icircumflex = 333; + t.ncaron = 500; + t.tcommaaccent = 278; + t.logicalnot = 564; + t.odieresis = 500; + t.udieresis = 500; + t.notequal = 549; + t.gcommaaccent = 500; + t.eth = 500; + t.zcaron = 444; + t.ncommaaccent = 500; + t.onesuperior = 300; + t.imacron = 278; + t.Euro = 500; + }); + t["Times-Bold"] = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 250; + t.exclam = 333; + t.quotedbl = 555; + t.numbersign = 500; + t.dollar = 500; + t.percent = 1000; + t.ampersand = 833; + t.quoteright = 333; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 500; + t.plus = 570; + t.comma = 250; + t.hyphen = 333; + t.period = 250; + t.slash = 278; + t.zero = 500; + t.one = 500; + t.two = 500; + t.three = 500; + t.four = 500; + t.five = 500; + t.six = 500; + t.seven = 500; + t.eight = 500; + t.nine = 500; + t.colon = 333; + t.semicolon = 333; + t.less = 570; + t.equal = 570; + t.greater = 570; + t.question = 500; + t.at = 930; + t.A = 722; + t.B = 667; + t.C = 722; + t.D = 722; + t.E = 667; + t.F = 611; + t.G = 778; + t.H = 778; + t.I = 389; + t.J = 500; + t.K = 778; + t.L = 667; + t.M = 944; + t.N = 722; + t.O = 778; + t.P = 611; + t.Q = 778; + t.R = 722; + t.S = 556; + t.T = 667; + t.U = 722; + t.V = 722; + t.W = 1000; + t.X = 722; + t.Y = 722; + t.Z = 667; + t.bracketleft = 333; + t.backslash = 278; + t.bracketright = 333; + t.asciicircum = 581; + t.underscore = 500; + t.quoteleft = 333; + t.a = 500; + t.b = 556; + t.c = 444; + t.d = 556; + t.e = 444; + t.f = 333; + t.g = 500; + t.h = 556; + t.i = 278; + t.j = 333; + t.k = 556; + t.l = 278; + t.m = 833; + t.n = 556; + t.o = 500; + t.p = 556; + t.q = 556; + t.r = 444; + t.s = 389; + t.t = 333; + t.u = 556; + t.v = 500; + t.w = 722; + t.x = 500; + t.y = 500; + t.z = 444; + t.braceleft = 394; + t.bar = 220; + t.braceright = 394; + t.asciitilde = 520; + t.exclamdown = 333; + t.cent = 500; + t.sterling = 500; + t.fraction = 167; + t.yen = 500; + t.florin = 500; + t.section = 500; + t.currency = 500; + t.quotesingle = 278; + t.quotedblleft = 500; + t.guillemotleft = 500; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 556; + t.fl = 556; + t.endash = 500; + t.dagger = 500; + t.daggerdbl = 500; + t.periodcentered = 250; + t.paragraph = 540; + t.bullet = 350; + t.quotesinglbase = 333; + t.quotedblbase = 500; + t.quotedblright = 500; + t.guillemotright = 500; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 500; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 1000; + t.ordfeminine = 300; + t.Lslash = 667; + t.Oslash = 778; + t.OE = 1000; + t.ordmasculine = 330; + t.ae = 722; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 500; + t.oe = 722; + t.germandbls = 556; + t.Idieresis = 389; + t.eacute = 444; + t.abreve = 500; + t.uhungarumlaut = 556; + t.ecaron = 444; + t.Ydieresis = 722; + t.divide = 570; + t.Yacute = 722; + t.Acircumflex = 722; + t.aacute = 500; + t.Ucircumflex = 722; + t.yacute = 500; + t.scommaaccent = 389; + t.ecircumflex = 444; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 500; + t.Uacute = 722; + t.uogonek = 556; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 747; + t.Emacron = 667; + t.ccaron = 444; + t.aring = 500; + t.Ncommaaccent = 722; + t.lacute = 278; + t.agrave = 500; + t.Tcommaaccent = 667; + t.Cacute = 722; + t.atilde = 500; + t.Edotaccent = 667; + t.scaron = 389; + t.scedilla = 389; + t.iacute = 278; + t.lozenge = 494; + t.Rcaron = 722; + t.Gcommaaccent = 778; + t.ucircumflex = 556; + t.acircumflex = 500; + t.Amacron = 722; + t.rcaron = 444; + t.ccedilla = 444; + t.Zdotaccent = 667; + t.Thorn = 611; + t.Omacron = 778; + t.Racute = 722; + t.Sacute = 556; + t.dcaron = 672; + t.Umacron = 722; + t.uring = 556; + t.threesuperior = 300; + t.Ograve = 778; + t.Agrave = 722; + t.Abreve = 722; + t.multiply = 570; + t.uacute = 556; + t.Tcaron = 667; + t.partialdiff = 494; + t.ydieresis = 500; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 500; + t.edieresis = 444; + t.cacute = 444; + t.nacute = 556; + t.umacron = 556; + t.Ncaron = 722; + t.Iacute = 389; + t.plusminus = 570; + t.brokenbar = 220; + t.registered = 747; + t.Gbreve = 778; + t.Idotaccent = 389; + t.summation = 600; + t.Egrave = 667; + t.racute = 444; + t.omacron = 500; + t.Zacute = 667; + t.Zcaron = 667; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 722; + t.lcommaaccent = 278; + t.tcaron = 416; + t.eogonek = 444; + t.Uogonek = 722; + t.Aacute = 722; + t.Adieresis = 722; + t.egrave = 444; + t.zacute = 444; + t.iogonek = 278; + t.Oacute = 778; + t.oacute = 500; + t.amacron = 500; + t.sacute = 389; + t.idieresis = 278; + t.Ocircumflex = 778; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 556; + t.twosuperior = 300; + t.Odieresis = 778; + t.mu = 556; + t.igrave = 278; + t.ohungarumlaut = 500; + t.Eogonek = 667; + t.dcroat = 556; + t.threequarters = 750; + t.Scedilla = 556; + t.lcaron = 394; + t.Kcommaaccent = 778; + t.Lacute = 667; + t.trademark = 1000; + t.edotaccent = 444; + t.Igrave = 389; + t.Imacron = 389; + t.Lcaron = 667; + t.onehalf = 750; + t.lessequal = 549; + t.ocircumflex = 500; + t.ntilde = 556; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 444; + t.gbreve = 500; + t.onequarter = 750; + t.Scaron = 556; + t.Scommaaccent = 556; + t.Ohungarumlaut = 778; + t.degree = 400; + t.ograve = 500; + t.Ccaron = 722; + t.ugrave = 556; + t.radical = 549; + t.Dcaron = 722; + t.rcommaaccent = 444; + t.Ntilde = 722; + t.otilde = 500; + t.Rcommaaccent = 722; + t.Lcommaaccent = 667; + t.Atilde = 722; + t.Aogonek = 722; + t.Aring = 722; + t.Otilde = 778; + t.zdotaccent = 444; + t.Ecaron = 667; + t.Iogonek = 389; + t.kcommaaccent = 556; + t.minus = 570; + t.Icircumflex = 389; + t.ncaron = 556; + t.tcommaaccent = 333; + t.logicalnot = 570; + t.odieresis = 500; + t.udieresis = 556; + t.notequal = 549; + t.gcommaaccent = 500; + t.eth = 500; + t.zcaron = 444; + t.ncommaaccent = 556; + t.onesuperior = 300; + t.imacron = 278; + t.Euro = 500; + }); + t["Times-BoldItalic"] = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 250; + t.exclam = 389; + t.quotedbl = 555; + t.numbersign = 500; + t.dollar = 500; + t.percent = 833; + t.ampersand = 778; + t.quoteright = 333; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 500; + t.plus = 570; + t.comma = 250; + t.hyphen = 333; + t.period = 250; + t.slash = 278; + t.zero = 500; + t.one = 500; + t.two = 500; + t.three = 500; + t.four = 500; + t.five = 500; + t.six = 500; + t.seven = 500; + t.eight = 500; + t.nine = 500; + t.colon = 333; + t.semicolon = 333; + t.less = 570; + t.equal = 570; + t.greater = 570; + t.question = 500; + t.at = 832; + t.A = 667; + t.B = 667; + t.C = 667; + t.D = 722; + t.E = 667; + t.F = 667; + t.G = 722; + t.H = 778; + t.I = 389; + t.J = 500; + t.K = 667; + t.L = 611; + t.M = 889; + t.N = 722; + t.O = 722; + t.P = 611; + t.Q = 722; + t.R = 667; + t.S = 556; + t.T = 611; + t.U = 722; + t.V = 667; + t.W = 889; + t.X = 667; + t.Y = 611; + t.Z = 611; + t.bracketleft = 333; + t.backslash = 278; + t.bracketright = 333; + t.asciicircum = 570; + t.underscore = 500; + t.quoteleft = 333; + t.a = 500; + t.b = 500; + t.c = 444; + t.d = 500; + t.e = 444; + t.f = 333; + t.g = 500; + t.h = 556; + t.i = 278; + t.j = 278; + t.k = 500; + t.l = 278; + t.m = 778; + t.n = 556; + t.o = 500; + t.p = 500; + t.q = 500; + t.r = 389; + t.s = 389; + t.t = 278; + t.u = 556; + t.v = 444; + t.w = 667; + t.x = 500; + t.y = 444; + t.z = 389; + t.braceleft = 348; + t.bar = 220; + t.braceright = 348; + t.asciitilde = 570; + t.exclamdown = 389; + t.cent = 500; + t.sterling = 500; + t.fraction = 167; + t.yen = 500; + t.florin = 500; + t.section = 500; + t.currency = 500; + t.quotesingle = 278; + t.quotedblleft = 500; + t.guillemotleft = 500; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 556; + t.fl = 556; + t.endash = 500; + t.dagger = 500; + t.daggerdbl = 500; + t.periodcentered = 250; + t.paragraph = 500; + t.bullet = 350; + t.quotesinglbase = 333; + t.quotedblbase = 500; + t.quotedblright = 500; + t.guillemotright = 500; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 500; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 944; + t.ordfeminine = 266; + t.Lslash = 611; + t.Oslash = 722; + t.OE = 944; + t.ordmasculine = 300; + t.ae = 722; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 500; + t.oe = 722; + t.germandbls = 500; + t.Idieresis = 389; + t.eacute = 444; + t.abreve = 500; + t.uhungarumlaut = 556; + t.ecaron = 444; + t.Ydieresis = 611; + t.divide = 570; + t.Yacute = 611; + t.Acircumflex = 667; + t.aacute = 500; + t.Ucircumflex = 722; + t.yacute = 444; + t.scommaaccent = 389; + t.ecircumflex = 444; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 500; + t.Uacute = 722; + t.uogonek = 556; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 747; + t.Emacron = 667; + t.ccaron = 444; + t.aring = 500; + t.Ncommaaccent = 722; + t.lacute = 278; + t.agrave = 500; + t.Tcommaaccent = 611; + t.Cacute = 667; + t.atilde = 500; + t.Edotaccent = 667; + t.scaron = 389; + t.scedilla = 389; + t.iacute = 278; + t.lozenge = 494; + t.Rcaron = 667; + t.Gcommaaccent = 722; + t.ucircumflex = 556; + t.acircumflex = 500; + t.Amacron = 667; + t.rcaron = 389; + t.ccedilla = 444; + t.Zdotaccent = 611; + t.Thorn = 611; + t.Omacron = 722; + t.Racute = 667; + t.Sacute = 556; + t.dcaron = 608; + t.Umacron = 722; + t.uring = 556; + t.threesuperior = 300; + t.Ograve = 722; + t.Agrave = 667; + t.Abreve = 667; + t.multiply = 570; + t.uacute = 556; + t.Tcaron = 611; + t.partialdiff = 494; + t.ydieresis = 444; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 500; + t.edieresis = 444; + t.cacute = 444; + t.nacute = 556; + t.umacron = 556; + t.Ncaron = 722; + t.Iacute = 389; + t.plusminus = 570; + t.brokenbar = 220; + t.registered = 747; + t.Gbreve = 722; + t.Idotaccent = 389; + t.summation = 600; + t.Egrave = 667; + t.racute = 389; + t.omacron = 500; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 667; + t.lcommaaccent = 278; + t.tcaron = 366; + t.eogonek = 444; + t.Uogonek = 722; + t.Aacute = 667; + t.Adieresis = 667; + t.egrave = 444; + t.zacute = 389; + t.iogonek = 278; + t.Oacute = 722; + t.oacute = 500; + t.amacron = 500; + t.sacute = 389; + t.idieresis = 278; + t.Ocircumflex = 722; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 500; + t.twosuperior = 300; + t.Odieresis = 722; + t.mu = 576; + t.igrave = 278; + t.ohungarumlaut = 500; + t.Eogonek = 667; + t.dcroat = 500; + t.threequarters = 750; + t.Scedilla = 556; + t.lcaron = 382; + t.Kcommaaccent = 667; + t.Lacute = 611; + t.trademark = 1000; + t.edotaccent = 444; + t.Igrave = 389; + t.Imacron = 389; + t.Lcaron = 611; + t.onehalf = 750; + t.lessequal = 549; + t.ocircumflex = 500; + t.ntilde = 556; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 444; + t.gbreve = 500; + t.onequarter = 750; + t.Scaron = 556; + t.Scommaaccent = 556; + t.Ohungarumlaut = 722; + t.degree = 400; + t.ograve = 500; + t.Ccaron = 667; + t.ugrave = 556; + t.radical = 549; + t.Dcaron = 722; + t.rcommaaccent = 389; + t.Ntilde = 722; + t.otilde = 500; + t.Rcommaaccent = 667; + t.Lcommaaccent = 611; + t.Atilde = 667; + t.Aogonek = 667; + t.Aring = 667; + t.Otilde = 722; + t.zdotaccent = 389; + t.Ecaron = 667; + t.Iogonek = 389; + t.kcommaaccent = 500; + t.minus = 606; + t.Icircumflex = 389; + t.ncaron = 556; + t.tcommaaccent = 278; + t.logicalnot = 606; + t.odieresis = 500; + t.udieresis = 556; + t.notequal = 549; + t.gcommaaccent = 500; + t.eth = 500; + t.zcaron = 389; + t.ncommaaccent = 556; + t.onesuperior = 300; + t.imacron = 278; + t.Euro = 500; + }); + t["Times-Italic"] = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 250; + t.exclam = 333; + t.quotedbl = 420; + t.numbersign = 500; + t.dollar = 500; + t.percent = 833; + t.ampersand = 778; + t.quoteright = 333; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 500; + t.plus = 675; + t.comma = 250; + t.hyphen = 333; + t.period = 250; + t.slash = 278; + t.zero = 500; + t.one = 500; + t.two = 500; + t.three = 500; + t.four = 500; + t.five = 500; + t.six = 500; + t.seven = 500; + t.eight = 500; + t.nine = 500; + t.colon = 333; + t.semicolon = 333; + t.less = 675; + t.equal = 675; + t.greater = 675; + t.question = 500; + t.at = 920; + t.A = 611; + t.B = 611; + t.C = 667; + t.D = 722; + t.E = 611; + t.F = 611; + t.G = 722; + t.H = 722; + t.I = 333; + t.J = 444; + t.K = 667; + t.L = 556; + t.M = 833; + t.N = 667; + t.O = 722; + t.P = 611; + t.Q = 722; + t.R = 611; + t.S = 500; + t.T = 556; + t.U = 722; + t.V = 611; + t.W = 833; + t.X = 611; + t.Y = 556; + t.Z = 556; + t.bracketleft = 389; + t.backslash = 278; + t.bracketright = 389; + t.asciicircum = 422; + t.underscore = 500; + t.quoteleft = 333; + t.a = 500; + t.b = 500; + t.c = 444; + t.d = 500; + t.e = 444; + t.f = 278; + t.g = 500; + t.h = 500; + t.i = 278; + t.j = 278; + t.k = 444; + t.l = 278; + t.m = 722; + t.n = 500; + t.o = 500; + t.p = 500; + t.q = 500; + t.r = 389; + t.s = 389; + t.t = 278; + t.u = 500; + t.v = 444; + t.w = 667; + t.x = 444; + t.y = 444; + t.z = 389; + t.braceleft = 400; + t.bar = 275; + t.braceright = 400; + t.asciitilde = 541; + t.exclamdown = 389; + t.cent = 500; + t.sterling = 500; + t.fraction = 167; + t.yen = 500; + t.florin = 500; + t.section = 500; + t.currency = 500; + t.quotesingle = 214; + t.quotedblleft = 556; + t.guillemotleft = 500; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 500; + t.fl = 500; + t.endash = 500; + t.dagger = 500; + t.daggerdbl = 500; + t.periodcentered = 250; + t.paragraph = 523; + t.bullet = 350; + t.quotesinglbase = 333; + t.quotedblbase = 556; + t.quotedblright = 556; + t.guillemotright = 500; + t.ellipsis = 889; + t.perthousand = 1000; + t.questiondown = 500; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 889; + t.AE = 889; + t.ordfeminine = 276; + t.Lslash = 556; + t.Oslash = 722; + t.OE = 944; + t.ordmasculine = 310; + t.ae = 667; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 500; + t.oe = 667; + t.germandbls = 500; + t.Idieresis = 333; + t.eacute = 444; + t.abreve = 500; + t.uhungarumlaut = 500; + t.ecaron = 444; + t.Ydieresis = 556; + t.divide = 675; + t.Yacute = 556; + t.Acircumflex = 611; + t.aacute = 500; + t.Ucircumflex = 722; + t.yacute = 444; + t.scommaaccent = 389; + t.ecircumflex = 444; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 500; + t.Uacute = 722; + t.uogonek = 500; + t.Edieresis = 611; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 760; + t.Emacron = 611; + t.ccaron = 444; + t.aring = 500; + t.Ncommaaccent = 667; + t.lacute = 278; + t.agrave = 500; + t.Tcommaaccent = 556; + t.Cacute = 667; + t.atilde = 500; + t.Edotaccent = 611; + t.scaron = 389; + t.scedilla = 389; + t.iacute = 278; + t.lozenge = 471; + t.Rcaron = 611; + t.Gcommaaccent = 722; + t.ucircumflex = 500; + t.acircumflex = 500; + t.Amacron = 611; + t.rcaron = 389; + t.ccedilla = 444; + t.Zdotaccent = 556; + t.Thorn = 611; + t.Omacron = 722; + t.Racute = 611; + t.Sacute = 500; + t.dcaron = 544; + t.Umacron = 722; + t.uring = 500; + t.threesuperior = 300; + t.Ograve = 722; + t.Agrave = 611; + t.Abreve = 611; + t.multiply = 675; + t.uacute = 500; + t.Tcaron = 556; + t.partialdiff = 476; + t.ydieresis = 444; + t.Nacute = 667; + t.icircumflex = 278; + t.Ecircumflex = 611; + t.adieresis = 500; + t.edieresis = 444; + t.cacute = 444; + t.nacute = 500; + t.umacron = 500; + t.Ncaron = 667; + t.Iacute = 333; + t.plusminus = 675; + t.brokenbar = 275; + t.registered = 760; + t.Gbreve = 722; + t.Idotaccent = 333; + t.summation = 600; + t.Egrave = 611; + t.racute = 389; + t.omacron = 500; + t.Zacute = 556; + t.Zcaron = 556; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 667; + t.lcommaaccent = 278; + t.tcaron = 300; + t.eogonek = 444; + t.Uogonek = 722; + t.Aacute = 611; + t.Adieresis = 611; + t.egrave = 444; + t.zacute = 389; + t.iogonek = 278; + t.Oacute = 722; + t.oacute = 500; + t.amacron = 500; + t.sacute = 389; + t.idieresis = 278; + t.Ocircumflex = 722; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 500; + t.twosuperior = 300; + t.Odieresis = 722; + t.mu = 500; + t.igrave = 278; + t.ohungarumlaut = 500; + t.Eogonek = 611; + t.dcroat = 500; + t.threequarters = 750; + t.Scedilla = 500; + t.lcaron = 300; + t.Kcommaaccent = 667; + t.Lacute = 556; + t.trademark = 980; + t.edotaccent = 444; + t.Igrave = 333; + t.Imacron = 333; + t.Lcaron = 611; + t.onehalf = 750; + t.lessequal = 549; + t.ocircumflex = 500; + t.ntilde = 500; + t.Uhungarumlaut = 722; + t.Eacute = 611; + t.emacron = 444; + t.gbreve = 500; + t.onequarter = 750; + t.Scaron = 500; + t.Scommaaccent = 500; + t.Ohungarumlaut = 722; + t.degree = 400; + t.ograve = 500; + t.Ccaron = 667; + t.ugrave = 500; + t.radical = 453; + t.Dcaron = 722; + t.rcommaaccent = 389; + t.Ntilde = 667; + t.otilde = 500; + t.Rcommaaccent = 611; + t.Lcommaaccent = 556; + t.Atilde = 611; + t.Aogonek = 611; + t.Aring = 611; + t.Otilde = 722; + t.zdotaccent = 389; + t.Ecaron = 611; + t.Iogonek = 333; + t.kcommaaccent = 444; + t.minus = 675; + t.Icircumflex = 333; + t.ncaron = 500; + t.tcommaaccent = 278; + t.logicalnot = 675; + t.odieresis = 500; + t.udieresis = 500; + t.notequal = 549; + t.gcommaaccent = 500; + t.eth = 500; + t.zcaron = 389; + t.ncommaaccent = 500; + t.onesuperior = 300; + t.imacron = 278; + t.Euro = 500; + }); + t.ZapfDingbats = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 278; + t.a1 = 974; + t.a2 = 961; + t.a202 = 974; + t.a3 = 980; + t.a4 = 719; + t.a5 = 789; + t.a119 = 790; + t.a118 = 791; + t.a117 = 690; + t.a11 = 960; + t.a12 = 939; + t.a13 = 549; + t.a14 = 855; + t.a15 = 911; + t.a16 = 933; + t.a105 = 911; + t.a17 = 945; + t.a18 = 974; + t.a19 = 755; + t.a20 = 846; + t.a21 = 762; + t.a22 = 761; + t.a23 = 571; + t.a24 = 677; + t.a25 = 763; + t.a26 = 760; + t.a27 = 759; + t.a28 = 754; + t.a6 = 494; + t.a7 = 552; + t.a8 = 537; + t.a9 = 577; + t.a10 = 692; + t.a29 = 786; + t.a30 = 788; + t.a31 = 788; + t.a32 = 790; + t.a33 = 793; + t.a34 = 794; + t.a35 = 816; + t.a36 = 823; + t.a37 = 789; + t.a38 = 841; + t.a39 = 823; + t.a40 = 833; + t.a41 = 816; + t.a42 = 831; + t.a43 = 923; + t.a44 = 744; + t.a45 = 723; + t.a46 = 749; + t.a47 = 790; + t.a48 = 792; + t.a49 = 695; + t.a50 = 776; + t.a51 = 768; + t.a52 = 792; + t.a53 = 759; + t.a54 = 707; + t.a55 = 708; + t.a56 = 682; + t.a57 = 701; + t.a58 = 826; + t.a59 = 815; + t.a60 = 789; + t.a61 = 789; + t.a62 = 707; + t.a63 = 687; + t.a64 = 696; + t.a65 = 689; + t.a66 = 786; + t.a67 = 787; + t.a68 = 713; + t.a69 = 791; + t.a70 = 785; + t.a71 = 791; + t.a72 = 873; + t.a73 = 761; + t.a74 = 762; + t.a203 = 762; + t.a75 = 759; + t.a204 = 759; + t.a76 = 892; + t.a77 = 892; + t.a78 = 788; + t.a79 = 784; + t.a81 = 438; + t.a82 = 138; + t.a83 = 277; + t.a84 = 415; + t.a97 = 392; + t.a98 = 392; + t.a99 = 668; + t.a100 = 668; + t.a89 = 390; + t.a90 = 390; + t.a93 = 317; + t.a94 = 317; + t.a91 = 276; + t.a92 = 276; + t.a205 = 509; + t.a85 = 509; + t.a206 = 410; + t.a86 = 410; + t.a87 = 234; + t.a88 = 234; + t.a95 = 334; + t.a96 = 334; + t.a101 = 732; + t.a102 = 544; + t.a103 = 544; + t.a104 = 910; + t.a106 = 667; + t.a107 = 760; + t.a108 = 760; + t.a112 = 776; + t.a111 = 595; + t.a110 = 694; + t.a109 = 626; + t.a120 = 788; + t.a121 = 788; + t.a122 = 788; + t.a123 = 788; + t.a124 = 788; + t.a125 = 788; + t.a126 = 788; + t.a127 = 788; + t.a128 = 788; + t.a129 = 788; + t.a130 = 788; + t.a131 = 788; + t.a132 = 788; + t.a133 = 788; + t.a134 = 788; + t.a135 = 788; + t.a136 = 788; + t.a137 = 788; + t.a138 = 788; + t.a139 = 788; + t.a140 = 788; + t.a141 = 788; + t.a142 = 788; + t.a143 = 788; + t.a144 = 788; + t.a145 = 788; + t.a146 = 788; + t.a147 = 788; + t.a148 = 788; + t.a149 = 788; + t.a150 = 788; + t.a151 = 788; + t.a152 = 788; + t.a153 = 788; + t.a154 = 788; + t.a155 = 788; + t.a156 = 788; + t.a157 = 788; + t.a158 = 788; + t.a159 = 788; + t.a160 = 894; + t.a161 = 838; + t.a163 = 1016; + t.a164 = 458; + t.a196 = 748; + t.a165 = 924; + t.a192 = 748; + t.a166 = 918; + t.a167 = 927; + t.a168 = 928; + t.a169 = 928; + t.a170 = 834; + t.a171 = 873; + t.a172 = 828; + t.a173 = 924; + t.a162 = 924; + t.a174 = 917; + t.a175 = 930; + t.a176 = 931; + t.a177 = 463; + t.a178 = 883; + t.a179 = 836; + t.a193 = 836; + t.a180 = 867; + t.a199 = 867; + t.a181 = 696; + t.a200 = 696; + t.a182 = 874; + t.a201 = 874; + t.a183 = 760; + t.a184 = 946; + t.a197 = 771; + t.a185 = 865; + t.a194 = 771; + t.a198 = 888; + t.a186 = 967; + t.a195 = 888; + t.a187 = 831; + t.a188 = 873; + t.a189 = 927; + t.a190 = 970; + t.a191 = 918; + }); }); +exports.getMetrics = getMetrics; +const getFontBasicMetrics = (0, _core_utils.getLookupTableFactory)(function (t) { + t.Courier = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: -426 + }; + t["Courier-Bold"] = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: 439 + }; + t["Courier-Oblique"] = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: 426 + }; + t["Courier-BoldOblique"] = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: 426 + }; + t.Helvetica = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 523 + }; + t["Helvetica-Bold"] = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 532 + }; + t["Helvetica-Oblique"] = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 523 + }; + t["Helvetica-BoldOblique"] = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 532 + }; + t["Times-Roman"] = { + ascent: 683, + descent: -217, + capHeight: 662, + xHeight: 450 + }; + t["Times-Bold"] = { + ascent: 683, + descent: -217, + capHeight: 676, + xHeight: 461 + }; + t["Times-Italic"] = { + ascent: 683, + descent: -217, + capHeight: 653, + xHeight: 441 + }; + t["Times-BoldItalic"] = { + ascent: 683, + descent: -217, + capHeight: 669, + xHeight: 462 + }; + t.Symbol = { + ascent: Math.NaN, + descent: Math.NaN, + capHeight: Math.NaN, + xHeight: Math.NaN + }; + t.ZapfDingbats = { + ascent: Math.NaN, + descent: Math.NaN, + capHeight: Math.NaN, + xHeight: Math.NaN + }; +}); +exports.getFontBasicMetrics = getFontBasicMetrics; + +/***/ }), +/* 171 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GlyfTable = void 0; +const ON_CURVE_POINT = 1 << 0; +const X_SHORT_VECTOR = 1 << 1; +const Y_SHORT_VECTOR = 1 << 2; +const REPEAT_FLAG = 1 << 3; +const X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4; +const Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5; +const OVERLAP_SIMPLE = 1 << 6; +const ARG_1_AND_2_ARE_WORDS = 1 << 0; +const ARGS_ARE_XY_VALUES = 1 << 1; +const WE_HAVE_A_SCALE = 1 << 3; +const MORE_COMPONENTS = 1 << 5; +const WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6; +const WE_HAVE_A_TWO_BY_TWO = 1 << 7; +const WE_HAVE_INSTRUCTIONS = 1 << 8; + +class GlyfTable { + constructor(_ref) { + let { + glyfTable, + isGlyphLocationsLong, + locaTable, + numGlyphs + } = _ref; + this.glyphs = []; + const loca = new DataView(locaTable.buffer, locaTable.byteOffset, locaTable.byteLength); + const glyf = new DataView(glyfTable.buffer, glyfTable.byteOffset, glyfTable.byteLength); + const offsetSize = isGlyphLocationsLong ? 4 : 2; + let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0); + let pos = 0; + + for (let i = 0; i < numGlyphs; i++) { + pos += offsetSize; + const next = isGlyphLocationsLong ? loca.getUint32(pos) : 2 * loca.getUint16(pos); + + if (next === prev) { + this.glyphs.push(new Glyph({})); + continue; + } + + const glyph = Glyph.parse(prev, glyf); + this.glyphs.push(glyph); + prev = next; + } + } + + getSize() { + return this.glyphs.reduce((a, g) => { + const size = g.getSize(); + return a + (size + 3 & ~3); + }, 0); + } + + write() { + const totalSize = this.getSize(); + const glyfTable = new DataView(new ArrayBuffer(totalSize)); + const isLocationLong = totalSize > 0x1fffe; + const offsetSize = isLocationLong ? 4 : 2; + const locaTable = new DataView(new ArrayBuffer((this.glyphs.length + 1) * offsetSize)); + + if (isLocationLong) { + locaTable.setUint32(0, 0); + } else { + locaTable.setUint16(0, 0); + } + + let pos = 0; + let locaIndex = 0; + + for (const glyph of this.glyphs) { + pos += glyph.write(pos, glyfTable); + pos = pos + 3 & ~3; + locaIndex += offsetSize; + + if (isLocationLong) { + locaTable.setUint32(locaIndex, pos); + } else { + locaTable.setUint16(locaIndex, pos >> 1); + } + } + + return { + isLocationLong, + loca: new Uint8Array(locaTable.buffer), + glyf: new Uint8Array(glyfTable.buffer) + }; + } + + scale(factors) { + for (let i = 0, ii = this.glyphs.length; i < ii; i++) { + this.glyphs[i].scale(factors[i]); + } + } + +} + +exports.GlyfTable = GlyfTable; + +class Glyph { + constructor(_ref2) { + let { + header = null, + simple = null, + composites = null + } = _ref2; + this.header = header; + this.simple = simple; + this.composites = composites; + } + + static parse(pos, glyf) { + const [read, header] = GlyphHeader.parse(pos, glyf); + pos += read; + + if (header.numberOfContours < 0) { + const composites = []; + + while (true) { + const [n, composite] = CompositeGlyph.parse(pos, glyf); + pos += n; + composites.push(composite); + + if (!(composite.flags & MORE_COMPONENTS)) { + break; + } + } + + return new Glyph({ + header, + composites + }); + } + + const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours); + return new Glyph({ + header, + simple + }); + } + + getSize() { + if (!this.header) { + return 0; + } + + const size = this.simple ? this.simple.getSize() : this.composites.reduce((a, c) => a + c.getSize(), 0); + return this.header.getSize() + size; + } + + write(pos, buf) { + if (!this.header) { + return 0; + } + + const spos = pos; + pos += this.header.write(pos, buf); + + if (this.simple) { + pos += this.simple.write(pos, buf); + } else { + for (const composite of this.composites) { + pos += composite.write(pos, buf); + } + } + + return pos - spos; + } + + scale(factor) { + if (!this.header) { + return; + } + + const xMiddle = (this.header.xMin + this.header.xMax) / 2; + this.header.scale(xMiddle, factor); + + if (this.simple) { + this.simple.scale(xMiddle, factor); + } else { + for (const composite of this.composites) { + composite.scale(xMiddle, factor); + } + } + } + +} + +class GlyphHeader { + constructor(_ref3) { + let { + numberOfContours, + xMin, + yMin, + xMax, + yMax + } = _ref3; + this.numberOfContours = numberOfContours; + this.xMin = xMin; + this.yMin = yMin; + this.xMax = xMax; + this.yMax = yMax; + } + + static parse(pos, glyf) { + return [10, new GlyphHeader({ + numberOfContours: glyf.getInt16(pos), + xMin: glyf.getInt16(pos + 2), + yMin: glyf.getInt16(pos + 4), + xMax: glyf.getInt16(pos + 6), + yMax: glyf.getInt16(pos + 8) + })]; + } + + getSize() { + return 10; + } + + write(pos, buf) { + buf.setInt16(pos, this.numberOfContours); + buf.setInt16(pos + 2, this.xMin); + buf.setInt16(pos + 4, this.yMin); + buf.setInt16(pos + 6, this.xMax); + buf.setInt16(pos + 8, this.yMax); + return 10; + } + + scale(x, factor) { + this.xMin = Math.round(x + (this.xMin - x) * factor); + this.xMax = Math.round(x + (this.xMax - x) * factor); + } + +} + +class Contour { + constructor(_ref4) { + let { + flags, + xCoordinates, + yCoordinates + } = _ref4; + this.xCoordinates = xCoordinates; + this.yCoordinates = yCoordinates; + this.flags = flags; + } + +} + +class SimpleGlyph { + constructor(_ref5) { + let { + contours, + instructions + } = _ref5; + this.contours = contours; + this.instructions = instructions; + } + + static parse(pos, glyf, numberOfContours) { + const endPtsOfContours = []; + + for (let i = 0; i < numberOfContours; i++) { + const endPt = glyf.getUint16(pos); + pos += 2; + endPtsOfContours.push(endPt); + } + + const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1; + const instructionLength = glyf.getUint16(pos); + pos += 2; + const instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength); + pos += instructionLength; + const flags = []; + + for (let i = 0; i < numberOfPt; pos++, i++) { + let flag = glyf.getUint8(pos); + flags.push(flag); + + if (flag & REPEAT_FLAG) { + const count = glyf.getUint8(++pos); + flag ^= REPEAT_FLAG; + + for (let m = 0; m < count; m++) { + flags.push(flag); + } + + i += count; + } + } + + const allXCoordinates = []; + let xCoordinates = []; + let yCoordinates = []; + let pointFlags = []; + const contours = []; + let endPtsOfContoursIndex = 0; + let lastCoordinate = 0; + + for (let i = 0; i < numberOfPt; i++) { + const flag = flags[i]; + + if (flag & X_SHORT_VECTOR) { + const x = glyf.getUint8(pos++); + lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x; + xCoordinates.push(lastCoordinate); + } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) { + xCoordinates.push(lastCoordinate); + } else { + lastCoordinate += glyf.getInt16(pos); + pos += 2; + xCoordinates.push(lastCoordinate); + } + + if (endPtsOfContours[endPtsOfContoursIndex] === i) { + endPtsOfContoursIndex++; + allXCoordinates.push(xCoordinates); + xCoordinates = []; + } + } + + lastCoordinate = 0; + endPtsOfContoursIndex = 0; + + for (let i = 0; i < numberOfPt; i++) { + const flag = flags[i]; + + if (flag & Y_SHORT_VECTOR) { + const y = glyf.getUint8(pos++); + lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y; + yCoordinates.push(lastCoordinate); + } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) { + yCoordinates.push(lastCoordinate); + } else { + lastCoordinate += glyf.getInt16(pos); + pos += 2; + yCoordinates.push(lastCoordinate); + } + + pointFlags.push(flag & ON_CURVE_POINT | flag & OVERLAP_SIMPLE); + + if (endPtsOfContours[endPtsOfContoursIndex] === i) { + xCoordinates = allXCoordinates[endPtsOfContoursIndex]; + endPtsOfContoursIndex++; + contours.push(new Contour({ + flags: pointFlags, + xCoordinates, + yCoordinates + })); + yCoordinates = []; + pointFlags = []; + } + } + + return new SimpleGlyph({ + contours, + instructions + }); + } + + getSize() { + let size = this.contours.length * 2 + 2 + this.instructions.length; + let lastX = 0; + let lastY = 0; + + for (const contour of this.contours) { + size += contour.flags.length; + + for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) { + const x = contour.xCoordinates[i]; + const y = contour.yCoordinates[i]; + let abs = Math.abs(x - lastX); + + if (abs > 255) { + size += 2; + } else if (abs > 0) { + size += 1; + } + + lastX = x; + abs = Math.abs(y - lastY); + + if (abs > 255) { + size += 2; + } else if (abs > 0) { + size += 1; + } + + lastY = y; + } + } + + return size; + } + + write(pos, buf) { + const spos = pos; + const xCoordinates = []; + const yCoordinates = []; + const flags = []; + let lastX = 0; + let lastY = 0; + + for (const contour of this.contours) { + for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) { + let flag = contour.flags[i]; + const x = contour.xCoordinates[i]; + let delta = x - lastX; + + if (delta === 0) { + flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR; + xCoordinates.push(0); + } else { + const abs = Math.abs(delta); + + if (abs <= 255) { + flag |= delta >= 0 ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR : X_SHORT_VECTOR; + xCoordinates.push(abs); + } else { + xCoordinates.push(delta); + } + } + + lastX = x; + const y = contour.yCoordinates[i]; + delta = y - lastY; + + if (delta === 0) { + flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR; + yCoordinates.push(0); + } else { + const abs = Math.abs(delta); + + if (abs <= 255) { + flag |= delta >= 0 ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR : Y_SHORT_VECTOR; + yCoordinates.push(abs); + } else { + yCoordinates.push(delta); + } + } + + lastY = y; + flags.push(flag); + } + + buf.setUint16(pos, xCoordinates.length - 1); + pos += 2; + } + + buf.setUint16(pos, this.instructions.length); + pos += 2; + + if (this.instructions.length) { + new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos); + pos += this.instructions.length; + } + + for (const flag of flags) { + buf.setUint8(pos++, flag); + } + + for (let i = 0, ii = xCoordinates.length; i < ii; i++) { + const x = xCoordinates[i]; + const flag = flags[i]; + + if (flag & X_SHORT_VECTOR) { + buf.setUint8(pos++, x); + } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) { + buf.setInt16(pos, x); + pos += 2; + } + } + + for (let i = 0, ii = yCoordinates.length; i < ii; i++) { + const y = yCoordinates[i]; + const flag = flags[i]; + + if (flag & Y_SHORT_VECTOR) { + buf.setUint8(pos++, y); + } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) { + buf.setInt16(pos, y); + pos += 2; + } + } + + return pos - spos; + } + + scale(x, factor) { + for (const contour of this.contours) { + if (contour.xCoordinates.length === 0) { + continue; + } + + for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) { + contour.xCoordinates[i] = Math.round(x + (contour.xCoordinates[i] - x) * factor); + } + } + } + +} + +class CompositeGlyph { + constructor(_ref6) { + let { + flags, + glyphIndex, + argument1, + argument2, + transf, + instructions + } = _ref6; + this.flags = flags; + this.glyphIndex = glyphIndex; + this.argument1 = argument1; + this.argument2 = argument2; + this.transf = transf; + this.instructions = instructions; + } + + static parse(pos, glyf) { + const spos = pos; + const transf = []; + let flags = glyf.getUint16(pos); + const glyphIndex = glyf.getUint16(pos + 2); + pos += 4; + let argument1, argument2; + + if (flags & ARG_1_AND_2_ARE_WORDS) { + if (flags & ARGS_ARE_XY_VALUES) { + argument1 = glyf.getInt16(pos); + argument2 = glyf.getInt16(pos + 2); + } else { + argument1 = glyf.getUint16(pos); + argument2 = glyf.getUint16(pos + 2); + } + + pos += 4; + flags ^= ARG_1_AND_2_ARE_WORDS; + } else { + if (flags & ARGS_ARE_XY_VALUES) { + argument1 = glyf.getInt8(pos); + argument2 = glyf.getInt8(pos + 1); + } else { + argument1 = glyf.getUint8(pos); + argument2 = glyf.getUint8(pos + 1); + } + + pos += 2; + } + + if (flags & WE_HAVE_A_SCALE) { + transf.push(glyf.getUint16(pos)); + pos += 2; + } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) { + transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2)); + pos += 4; + } else if (flags & WE_HAVE_A_TWO_BY_TWO) { + transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2), glyf.getUint16(pos + 4), glyf.getUint16(pos + 6)); + pos += 8; + } + + let instructions = null; + + if (flags & WE_HAVE_INSTRUCTIONS) { + const instructionLength = glyf.getUint16(pos); + pos += 2; + instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength); + pos += instructionLength; + } + + return [pos - spos, new CompositeGlyph({ + flags, + glyphIndex, + argument1, + argument2, + transf, + instructions + })]; + } + + getSize() { + let size = 2 + 2 + this.transf.length * 2; + + if (this.flags & WE_HAVE_INSTRUCTIONS) { + size += 2 + this.instructions.length; + } + + size += 2; + + if (this.flags & 2) { + if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) { + size += 2; + } + } else { + if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) { + size += 2; + } + } + + return size; + } + + write(pos, buf) { + const spos = pos; + + if (this.flags & ARGS_ARE_XY_VALUES) { + if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) { + this.flags |= ARG_1_AND_2_ARE_WORDS; + } + } else { + if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) { + this.flags |= ARG_1_AND_2_ARE_WORDS; + } + } + + buf.setUint16(pos, this.flags); + buf.setUint16(pos + 2, this.glyphIndex); + pos += 4; + + if (this.flags & ARG_1_AND_2_ARE_WORDS) { + if (this.flags & ARGS_ARE_XY_VALUES) { + buf.setInt16(pos, this.argument1); + buf.setInt16(pos + 2, this.argument2); + } else { + buf.setUint16(pos, this.argument1); + buf.setUint16(pos + 2, this.argument2); + } + + pos += 4; + } else { + buf.setUint8(pos, this.argument1); + buf.setUint8(pos + 1, this.argument2); + pos += 2; + } + + if (this.flags & WE_HAVE_INSTRUCTIONS) { + buf.setUint16(pos, this.instructions.length); + pos += 2; + + if (this.instructions.length) { + new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos); + pos += this.instructions.length; + } + } + + return pos - spos; + } + + scale(x, factor) {} + +} + +/***/ }), +/* 172 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OpenTypeFileBuilder = void 0; + +var _core_utils = __w_pdfjs_require__(131); + +var _util = __w_pdfjs_require__(2); + +function writeInt16(dest, offset, num) { + dest[offset] = num >> 8 & 0xff; + dest[offset + 1] = num & 0xff; +} + +function writeInt32(dest, offset, num) { + dest[offset] = num >> 24 & 0xff; + dest[offset + 1] = num >> 16 & 0xff; + dest[offset + 2] = num >> 8 & 0xff; + dest[offset + 3] = num & 0xff; +} + +function writeData(dest, offset, data) { + if (data instanceof Uint8Array) { + dest.set(data, offset); + } else if (typeof data === "string") { + for (let i = 0, ii = data.length; i < ii; i++) { + dest[offset++] = data.charCodeAt(i) & 0xff; + } + } else { + for (let i = 0, ii = data.length; i < ii; i++) { + dest[offset++] = data[i] & 0xff; + } + } +} + +const OTF_HEADER_SIZE = 12; +const OTF_TABLE_ENTRY_SIZE = 16; + +class OpenTypeFileBuilder { + constructor(sfnt) { + this.sfnt = sfnt; + this.tables = Object.create(null); + } + + static getSearchParams(entriesCount, entrySize) { + let maxPower2 = 1, + log2 = 0; + + while ((maxPower2 ^ entriesCount) > maxPower2) { + maxPower2 <<= 1; + log2++; + } + + const searchRange = maxPower2 * entrySize; + return { + range: searchRange, + entry: log2, + rangeShift: entrySize * entriesCount - searchRange + }; + } + + toArray() { + let sfnt = this.sfnt; + const tables = this.tables; + const tablesNames = Object.keys(tables); + tablesNames.sort(); + const numTables = tablesNames.length; + let i, j, jj, table, tableName; + let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE; + const tableOffsets = [offset]; + + for (i = 0; i < numTables; i++) { + table = tables[tablesNames[i]]; + const paddedLength = (table.length + 3 & ~3) >>> 0; + offset += paddedLength; + tableOffsets.push(offset); + } + + const file = new Uint8Array(offset); + + for (i = 0; i < numTables; i++) { + table = tables[tablesNames[i]]; + writeData(file, tableOffsets[i], table); + } + + if (sfnt === "true") { + sfnt = (0, _util.string32)(0x00010000); + } + + file[0] = sfnt.charCodeAt(0) & 0xff; + file[1] = sfnt.charCodeAt(1) & 0xff; + file[2] = sfnt.charCodeAt(2) & 0xff; + file[3] = sfnt.charCodeAt(3) & 0xff; + writeInt16(file, 4, numTables); + const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16); + writeInt16(file, 6, searchParams.range); + writeInt16(file, 8, searchParams.entry); + writeInt16(file, 10, searchParams.rangeShift); + offset = OTF_HEADER_SIZE; + + for (i = 0; i < numTables; i++) { + tableName = tablesNames[i]; + file[offset] = tableName.charCodeAt(0) & 0xff; + file[offset + 1] = tableName.charCodeAt(1) & 0xff; + file[offset + 2] = tableName.charCodeAt(2) & 0xff; + file[offset + 3] = tableName.charCodeAt(3) & 0xff; + let checksum = 0; + + for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) { + const quad = (0, _core_utils.readUint32)(file, j); + checksum = checksum + quad >>> 0; + } + + writeInt32(file, offset + 4, checksum); + writeInt32(file, offset + 8, tableOffsets[i]); + writeInt32(file, offset + 12, tables[tableName].length); + offset += OTF_TABLE_ENTRY_SIZE; + } + + return file; + } + + addTable(tag, data) { + if (tag in this.tables) { + throw new Error("Table " + tag + " already exists"); + } + + this.tables[tag] = data; + } + +} + +exports.OpenTypeFileBuilder = OpenTypeFileBuilder; + +/***/ }), +/* 173 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Type1Font = void 0; + +var _cff_parser = __w_pdfjs_require__(160); + +var _fonts_utils = __w_pdfjs_require__(163); + +var _core_utils = __w_pdfjs_require__(131); + +var _stream = __w_pdfjs_require__(135); + +var _type1_parser = __w_pdfjs_require__(174); + +var _util = __w_pdfjs_require__(2); + +function findBlock(streamBytes, signature, startIndex) { + const streamBytesLength = streamBytes.length; + const signatureLength = signature.length; + const scanLength = streamBytesLength - signatureLength; + let i = startIndex, + found = false; + + while (i < scanLength) { + let j = 0; + + while (j < signatureLength && streamBytes[i + j] === signature[j]) { + j++; + } + + if (j >= signatureLength) { + i += j; + + while (i < streamBytesLength && (0, _core_utils.isWhiteSpace)(streamBytes[i])) { + i++; + } + + found = true; + break; + } + + i++; + } + + return { + found, + length: i + }; +} + +function getHeaderBlock(stream, suggestedLength) { + const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63]; + const streamStartPos = stream.pos; + let headerBytes, headerBytesLength, block; + + try { + headerBytes = stream.getBytes(suggestedLength); + headerBytesLength = headerBytes.length; + } catch (ex) {} + + if (headerBytesLength === suggestedLength) { + block = findBlock(headerBytes, EEXEC_SIGNATURE, suggestedLength - 2 * EEXEC_SIGNATURE.length); + + if (block.found && block.length === suggestedLength) { + return { + stream: new _stream.Stream(headerBytes), + length: suggestedLength + }; + } + } + + (0, _util.warn)('Invalid "Length1" property in Type1 font -- trying to recover.'); + stream.pos = streamStartPos; + const SCAN_BLOCK_LENGTH = 2048; + let actualLength; + + while (true) { + const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH); + block = findBlock(scanBytes, EEXEC_SIGNATURE, 0); + + if (block.length === 0) { + break; + } + + stream.pos += block.length; + + if (block.found) { + actualLength = stream.pos - streamStartPos; + break; + } + } + + stream.pos = streamStartPos; + + if (actualLength) { + return { + stream: new _stream.Stream(stream.getBytes(actualLength)), + length: actualLength + }; + } + + (0, _util.warn)('Unable to recover "Length1" property in Type1 font -- using as is.'); + return { + stream: new _stream.Stream(stream.getBytes(suggestedLength)), + length: suggestedLength + }; +} + +function getEexecBlock(stream, suggestedLength) { + const eexecBytes = stream.getBytes(); + return { + stream: new _stream.Stream(eexecBytes), + length: eexecBytes.length + }; +} + +class Type1Font { + constructor(name, file, properties) { + const PFB_HEADER_SIZE = 6; + let headerBlockLength = properties.length1; + let eexecBlockLength = properties.length2; + let pfbHeader = file.peekBytes(PFB_HEADER_SIZE); + const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01; + + if (pfbHeaderPresent) { + file.skip(PFB_HEADER_SIZE); + headerBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2]; + } + + const headerBlock = getHeaderBlock(file, headerBlockLength); + const headerBlockParser = new _type1_parser.Type1Parser(headerBlock.stream, false, _fonts_utils.SEAC_ANALYSIS_ENABLED); + headerBlockParser.extractFontHeader(properties); + + if (pfbHeaderPresent) { + pfbHeader = file.getBytes(PFB_HEADER_SIZE); + eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2]; + } + + const eexecBlock = getEexecBlock(file, eexecBlockLength); + const eexecBlockParser = new _type1_parser.Type1Parser(eexecBlock.stream, true, _fonts_utils.SEAC_ANALYSIS_ENABLED); + const data = eexecBlockParser.extractFontProgram(properties); + + for (const key in data.properties) { + properties[key] = data.properties[key]; + } + + const charstrings = data.charstrings; + const type2Charstrings = this.getType2Charstrings(charstrings); + const subrs = this.getType2Subrs(data.subrs); + this.charstrings = charstrings; + this.data = this.wrap(name, type2Charstrings, this.charstrings, subrs, properties); + this.seacs = this.getSeacs(data.charstrings); + } + + get numGlyphs() { + return this.charstrings.length + 1; + } + + getCharset() { + const charset = [".notdef"]; + + for (const { + glyphName + } of this.charstrings) { + charset.push(glyphName); + } + + return charset; + } + + getGlyphMapping(properties) { + const charstrings = this.charstrings; + + if (properties.composite) { + const charCodeToGlyphId = Object.create(null); + + for (let glyphId = 0, charstringsLen = charstrings.length; glyphId < charstringsLen; glyphId++) { + const charCode = properties.cMap.charCodeOf(glyphId); + charCodeToGlyphId[charCode] = glyphId + 1; + } + + return charCodeToGlyphId; + } + + const glyphNames = [".notdef"]; + let builtInEncoding, glyphId; + + for (glyphId = 0; glyphId < charstrings.length; glyphId++) { + glyphNames.push(charstrings[glyphId].glyphName); + } + + const encoding = properties.builtInEncoding; + + if (encoding) { + builtInEncoding = Object.create(null); + + for (const charCode in encoding) { + glyphId = glyphNames.indexOf(encoding[charCode]); + + if (glyphId >= 0) { + builtInEncoding[charCode] = glyphId; + } + } + } + + return (0, _fonts_utils.type1FontGlyphMapping)(properties, builtInEncoding, glyphNames); + } + + hasGlyphId(id) { + if (id < 0 || id >= this.numGlyphs) { + return false; + } + + if (id === 0) { + return true; + } + + const glyph = this.charstrings[id - 1]; + return glyph.charstring.length > 0; + } + + getSeacs(charstrings) { + const seacMap = []; + + for (let i = 0, ii = charstrings.length; i < ii; i++) { + const charstring = charstrings[i]; + + if (charstring.seac) { + seacMap[i + 1] = charstring.seac; + } + } + + return seacMap; + } + + getType2Charstrings(type1Charstrings) { + const type2Charstrings = []; + + for (let i = 0, ii = type1Charstrings.length; i < ii; i++) { + type2Charstrings.push(type1Charstrings[i].charstring); + } + + return type2Charstrings; + } + + getType2Subrs(type1Subrs) { + let bias = 0; + const count = type1Subrs.length; + + if (count < 1133) { + bias = 107; + } else if (count < 33769) { + bias = 1131; + } else { + bias = 32768; + } + + const type2Subrs = []; + let i; + + for (i = 0; i < bias; i++) { + type2Subrs.push([0x0b]); + } + + for (i = 0; i < count; i++) { + type2Subrs.push(type1Subrs[i]); + } + + return type2Subrs; + } + + wrap(name, glyphs, charstrings, subrs, properties) { + const cff = new _cff_parser.CFF(); + cff.header = new _cff_parser.CFFHeader(1, 0, 4, 4); + cff.names = [name]; + const topDict = new _cff_parser.CFFTopDict(); + topDict.setByName("version", 391); + topDict.setByName("Notice", 392); + topDict.setByName("FullName", 393); + topDict.setByName("FamilyName", 394); + topDict.setByName("Weight", 395); + topDict.setByName("Encoding", null); + topDict.setByName("FontMatrix", properties.fontMatrix); + topDict.setByName("FontBBox", properties.bbox); + topDict.setByName("charset", null); + topDict.setByName("CharStrings", null); + topDict.setByName("Private", null); + cff.topDict = topDict; + const strings = new _cff_parser.CFFStrings(); + strings.add("Version 0.11"); + strings.add("See original notice"); + strings.add(name); + strings.add(name); + strings.add("Medium"); + cff.strings = strings; + cff.globalSubrIndex = new _cff_parser.CFFIndex(); + const count = glyphs.length; + const charsetArray = [".notdef"]; + let i, ii; + + for (i = 0; i < count; i++) { + const glyphName = charstrings[i].glyphName; + + const index = _cff_parser.CFFStandardStrings.indexOf(glyphName); + + if (index === -1) { + strings.add(glyphName); + } + + charsetArray.push(glyphName); + } + + cff.charset = new _cff_parser.CFFCharset(false, 0, charsetArray); + const charStringsIndex = new _cff_parser.CFFIndex(); + charStringsIndex.add([0x8b, 0x0e]); + + for (i = 0; i < count; i++) { + charStringsIndex.add(glyphs[i]); + } + + cff.charStrings = charStringsIndex; + const privateDict = new _cff_parser.CFFPrivateDict(); + privateDict.setByName("Subrs", null); + const fields = ["BlueValues", "OtherBlues", "FamilyBlues", "FamilyOtherBlues", "StemSnapH", "StemSnapV", "BlueShift", "BlueFuzz", "BlueScale", "LanguageGroup", "ExpansionFactor", "ForceBold", "StdHW", "StdVW"]; + + for (i = 0, ii = fields.length; i < ii; i++) { + const field = fields[i]; + + if (!(field in properties.privateData)) { + continue; + } + + const value = properties.privateData[field]; + + if (Array.isArray(value)) { + for (let j = value.length - 1; j > 0; j--) { + value[j] -= value[j - 1]; + } + } + + privateDict.setByName(field, value); + } + + cff.topDict.privateDict = privateDict; + const subrIndex = new _cff_parser.CFFIndex(); + + for (i = 0, ii = subrs.length; i < ii; i++) { + subrIndex.add(subrs[i]); + } + + privateDict.subrsIndex = subrIndex; + const compiler = new _cff_parser.CFFCompiler(cff); + return compiler.compile(); + } + +} + +exports.Type1Font = Type1Font; + +/***/ }), +/* 174 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); exports.Type1Parser = void 0; -var _util = __w_pdfjs_require__(5); +var _encodings = __w_pdfjs_require__(162); -var _encodings = __w_pdfjs_require__(177); +var _core_utils = __w_pdfjs_require__(131); -var _stream = __w_pdfjs_require__(158); +var _stream = __w_pdfjs_require__(135); -var HINTING_ENABLED = false; +var _util = __w_pdfjs_require__(2); -var Type1CharString = function Type1CharStringClosure() { - var COMMAND_MAP = { - 'hstem': [1], - 'vstem': [3], - 'vmoveto': [4], - 'rlineto': [5], - 'hlineto': [6], - 'vlineto': [7], - 'rrcurveto': [8], - 'callsubr': [10], - 'flex': [12, 35], - 'drop': [12, 18], - 'endchar': [14], - 'rmoveto': [21], - 'hmoveto': [22], - 'vhcurveto': [30], - 'hvcurveto': [31] - }; +const HINTING_ENABLED = false; +const COMMAND_MAP = { + hstem: [1], + vstem: [3], + vmoveto: [4], + rlineto: [5], + hlineto: [6], + vlineto: [7], + rrcurveto: [8], + callsubr: [10], + flex: [12, 35], + drop: [12, 18], + endchar: [14], + rmoveto: [21], + hmoveto: [22], + vhcurveto: [30], + hvcurveto: [31] +}; - function Type1CharString() { +class Type1CharString { + constructor() { this.width = 0; this.lsb = 0; this.flexing = false; @@ -48051,358 +52273,359 @@ var Type1CharString = function Type1CharStringClosure() { this.stack = []; } - Type1CharString.prototype = { - convert: function Type1CharString_convert(encoded, subrs, seacAnalysisEnabled) { - var count = encoded.length; - var error = false; - var wx, sbx, subrNumber; + convert(encoded, subrs, seacAnalysisEnabled) { + const count = encoded.length; + let error = false; + let wx, sbx, subrNumber; - for (var i = 0; i < count; i++) { - var value = encoded[i]; + for (let i = 0; i < count; i++) { + let value = encoded[i]; - if (value < 32) { - if (value === 12) { - value = (value << 8) + encoded[++i]; - } + if (value < 32) { + if (value === 12) { + value = (value << 8) + encoded[++i]; + } - switch (value) { - case 1: - if (!HINTING_ENABLED) { - this.stack = []; - break; - } - - error = this.executeCommand(2, COMMAND_MAP.hstem); - break; - - case 3: - if (!HINTING_ENABLED) { - this.stack = []; - break; - } - - error = this.executeCommand(2, COMMAND_MAP.vstem); - break; - - case 4: - if (this.flexing) { - if (this.stack.length < 1) { - error = true; - break; - } - - var dy = this.stack.pop(); - this.stack.push(0, dy); - break; - } - - error = this.executeCommand(1, COMMAND_MAP.vmoveto); - break; - - case 5: - error = this.executeCommand(2, COMMAND_MAP.rlineto); - break; - - case 6: - error = this.executeCommand(1, COMMAND_MAP.hlineto); - break; - - case 7: - error = this.executeCommand(1, COMMAND_MAP.vlineto); - break; - - case 8: - error = this.executeCommand(6, COMMAND_MAP.rrcurveto); - break; - - case 9: + switch (value) { + case 1: + if (!HINTING_ENABLED) { this.stack = []; break; + } - case 10: + error = this.executeCommand(2, COMMAND_MAP.hstem); + break; + + case 3: + if (!HINTING_ENABLED) { + this.stack = []; + break; + } + + error = this.executeCommand(2, COMMAND_MAP.vstem); + break; + + case 4: + if (this.flexing) { if (this.stack.length < 1) { error = true; break; } - subrNumber = this.stack.pop(); - - if (!subrs[subrNumber]) { - error = true; - break; - } - - error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled); + const dy = this.stack.pop(); + this.stack.push(0, dy); break; + } - case 11: - return error; - - case 13: - if (this.stack.length < 2) { - error = true; - break; - } - - wx = this.stack.pop(); - sbx = this.stack.pop(); - this.lsb = sbx; - this.width = wx; - this.stack.push(wx, sbx); - error = this.executeCommand(2, COMMAND_MAP.hmoveto); - break; - - case 14: - this.output.push(COMMAND_MAP.endchar[0]); - break; - - case 21: - if (this.flexing) { - break; - } - - error = this.executeCommand(2, COMMAND_MAP.rmoveto); - break; - - case 22: - if (this.flexing) { - this.stack.push(0); - break; - } - - error = this.executeCommand(1, COMMAND_MAP.hmoveto); - break; - - case 30: - error = this.executeCommand(4, COMMAND_MAP.vhcurveto); - break; - - case 31: - error = this.executeCommand(4, COMMAND_MAP.hvcurveto); - break; - - case (12 << 8) + 0: - this.stack = []; - break; - - case (12 << 8) + 1: - if (!HINTING_ENABLED) { - this.stack = []; - break; - } - - error = this.executeCommand(2, COMMAND_MAP.vstem); - break; - - case (12 << 8) + 2: - if (!HINTING_ENABLED) { - this.stack = []; - break; - } - - error = this.executeCommand(2, COMMAND_MAP.hstem); - break; - - case (12 << 8) + 6: - if (seacAnalysisEnabled) { - this.seac = this.stack.splice(-4, 4); - error = this.executeCommand(0, COMMAND_MAP.endchar); - } else { - error = this.executeCommand(4, COMMAND_MAP.endchar); - } - - break; - - case (12 << 8) + 7: - if (this.stack.length < 4) { - error = true; - break; - } - - this.stack.pop(); - wx = this.stack.pop(); - var sby = this.stack.pop(); - sbx = this.stack.pop(); - this.lsb = sbx; - this.width = wx; - this.stack.push(wx, sbx, sby); - error = this.executeCommand(3, COMMAND_MAP.rmoveto); - break; - - case (12 << 8) + 12: - if (this.stack.length < 2) { - error = true; - break; - } - - var num2 = this.stack.pop(); - var num1 = this.stack.pop(); - this.stack.push(num1 / num2); - break; - - case (12 << 8) + 16: - if (this.stack.length < 2) { - error = true; - break; - } - - subrNumber = this.stack.pop(); - var numArgs = this.stack.pop(); - - if (subrNumber === 0 && numArgs === 3) { - var flexArgs = this.stack.splice(this.stack.length - 17, 17); - this.stack.push(flexArgs[2] + flexArgs[0], flexArgs[3] + flexArgs[1], flexArgs[4], flexArgs[5], flexArgs[6], flexArgs[7], flexArgs[8], flexArgs[9], flexArgs[10], flexArgs[11], flexArgs[12], flexArgs[13], flexArgs[14]); - error = this.executeCommand(13, COMMAND_MAP.flex, true); - this.flexing = false; - this.stack.push(flexArgs[15], flexArgs[16]); - } else if (subrNumber === 1 && numArgs === 0) { - this.flexing = true; - } - - break; - - case (12 << 8) + 17: - break; - - case (12 << 8) + 33: - this.stack = []; - break; - - default: - (0, _util.warn)('Unknown type 1 charstring command of "' + value + '"'); - break; - } - - if (error) { + error = this.executeCommand(1, COMMAND_MAP.vmoveto); break; - } - continue; - } else if (value <= 246) { - value = value - 139; - } else if (value <= 250) { - value = (value - 247) * 256 + encoded[++i] + 108; - } else if (value <= 254) { - value = -((value - 251) * 256) - encoded[++i] - 108; - } else { - value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0; + case 5: + error = this.executeCommand(2, COMMAND_MAP.rlineto); + break; + + case 6: + error = this.executeCommand(1, COMMAND_MAP.hlineto); + break; + + case 7: + error = this.executeCommand(1, COMMAND_MAP.vlineto); + break; + + case 8: + error = this.executeCommand(6, COMMAND_MAP.rrcurveto); + break; + + case 9: + this.stack = []; + break; + + case 10: + if (this.stack.length < 1) { + error = true; + break; + } + + subrNumber = this.stack.pop(); + + if (!subrs[subrNumber]) { + error = true; + break; + } + + error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled); + break; + + case 11: + return error; + + case 13: + if (this.stack.length < 2) { + error = true; + break; + } + + wx = this.stack.pop(); + sbx = this.stack.pop(); + this.lsb = sbx; + this.width = wx; + this.stack.push(wx, sbx); + error = this.executeCommand(2, COMMAND_MAP.hmoveto); + break; + + case 14: + this.output.push(COMMAND_MAP.endchar[0]); + break; + + case 21: + if (this.flexing) { + break; + } + + error = this.executeCommand(2, COMMAND_MAP.rmoveto); + break; + + case 22: + if (this.flexing) { + this.stack.push(0); + break; + } + + error = this.executeCommand(1, COMMAND_MAP.hmoveto); + break; + + case 30: + error = this.executeCommand(4, COMMAND_MAP.vhcurveto); + break; + + case 31: + error = this.executeCommand(4, COMMAND_MAP.hvcurveto); + break; + + case (12 << 8) + 0: + this.stack = []; + break; + + case (12 << 8) + 1: + if (!HINTING_ENABLED) { + this.stack = []; + break; + } + + error = this.executeCommand(2, COMMAND_MAP.vstem); + break; + + case (12 << 8) + 2: + if (!HINTING_ENABLED) { + this.stack = []; + break; + } + + error = this.executeCommand(2, COMMAND_MAP.hstem); + break; + + case (12 << 8) + 6: + if (seacAnalysisEnabled) { + const asb = this.stack.at(-5); + this.seac = this.stack.splice(-4, 4); + this.seac[0] += this.lsb - asb; + error = this.executeCommand(0, COMMAND_MAP.endchar); + } else { + error = this.executeCommand(4, COMMAND_MAP.endchar); + } + + break; + + case (12 << 8) + 7: + if (this.stack.length < 4) { + error = true; + break; + } + + this.stack.pop(); + wx = this.stack.pop(); + const sby = this.stack.pop(); + sbx = this.stack.pop(); + this.lsb = sbx; + this.width = wx; + this.stack.push(wx, sbx, sby); + error = this.executeCommand(3, COMMAND_MAP.rmoveto); + break; + + case (12 << 8) + 12: + if (this.stack.length < 2) { + error = true; + break; + } + + const num2 = this.stack.pop(); + const num1 = this.stack.pop(); + this.stack.push(num1 / num2); + break; + + case (12 << 8) + 16: + if (this.stack.length < 2) { + error = true; + break; + } + + subrNumber = this.stack.pop(); + const numArgs = this.stack.pop(); + + if (subrNumber === 0 && numArgs === 3) { + const flexArgs = this.stack.splice(this.stack.length - 17, 17); + this.stack.push(flexArgs[2] + flexArgs[0], flexArgs[3] + flexArgs[1], flexArgs[4], flexArgs[5], flexArgs[6], flexArgs[7], flexArgs[8], flexArgs[9], flexArgs[10], flexArgs[11], flexArgs[12], flexArgs[13], flexArgs[14]); + error = this.executeCommand(13, COMMAND_MAP.flex, true); + this.flexing = false; + this.stack.push(flexArgs[15], flexArgs[16]); + } else if (subrNumber === 1 && numArgs === 0) { + this.flexing = true; + } + + break; + + case (12 << 8) + 17: + break; + + case (12 << 8) + 33: + this.stack = []; + break; + + default: + (0, _util.warn)('Unknown type 1 charstring command of "' + value + '"'); + break; } - this.stack.push(value); - } - - return error; - }, - executeCommand: function executeCommand(howManyArgs, command, keepStack) { - var stackLength = this.stack.length; - - if (howManyArgs > stackLength) { - return true; - } - - var start = stackLength - howManyArgs; - - for (var i = start; i < stackLength; i++) { - var value = this.stack[i]; - - if (Number.isInteger(value)) { - this.output.push(28, value >> 8 & 0xff, value & 0xff); - } else { - value = 65536 * value | 0; - this.output.push(255, value >> 24 & 0xFF, value >> 16 & 0xFF, value >> 8 & 0xFF, value & 0xFF); + if (error) { + break; } - } - this.output.push.apply(this.output, command); - - if (keepStack) { - this.stack.splice(start, howManyArgs); + continue; + } else if (value <= 246) { + value -= 139; + } else if (value <= 250) { + value = (value - 247) * 256 + encoded[++i] + 108; + } else if (value <= 254) { + value = -((value - 251) * 256) - encoded[++i] - 108; } else { - this.stack.length = 0; + value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0; } - return false; + this.stack.push(value); } - }; - return Type1CharString; -}(); -var Type1Parser = function Type1ParserClosure() { - var EEXEC_ENCRYPT_KEY = 55665; - var CHAR_STRS_ENCRYPT_KEY = 4330; - - function isHexDigit(code) { - return code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102; + return error; } - function decrypt(data, key, discardNumber) { - if (discardNumber >= data.length) { - return new Uint8Array(0); + executeCommand(howManyArgs, command, keepStack) { + const stackLength = this.stack.length; + + if (howManyArgs > stackLength) { + return true; } - var r = key | 0, - c1 = 52845, - c2 = 22719, - i, - j; + const start = stackLength - howManyArgs; - for (i = 0; i < discardNumber; i++) { - r = (data[i] + r) * c1 + c2 & (1 << 16) - 1; + for (let i = start; i < stackLength; i++) { + let value = this.stack[i]; + + if (Number.isInteger(value)) { + this.output.push(28, value >> 8 & 0xff, value & 0xff); + } else { + value = 65536 * value | 0; + this.output.push(255, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); + } } - var count = data.length - discardNumber; - var decrypted = new Uint8Array(count); + this.output.push(...command); - for (i = discardNumber, j = 0; j < count; i++, j++) { - var value = data[i]; - decrypted[j] = value ^ r >> 8; + if (keepStack) { + this.stack.splice(start, howManyArgs); + } else { + this.stack.length = 0; + } + + return false; + } + +} + +const EEXEC_ENCRYPT_KEY = 55665; +const CHAR_STRS_ENCRYPT_KEY = 4330; + +function isHexDigit(code) { + return code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102; +} + +function decrypt(data, key, discardNumber) { + if (discardNumber >= data.length) { + return new Uint8Array(0); + } + + const c1 = 52845, + c2 = 22719; + let r = key | 0, + i, + j; + + for (i = 0; i < discardNumber; i++) { + r = (data[i] + r) * c1 + c2 & (1 << 16) - 1; + } + + const count = data.length - discardNumber; + const decrypted = new Uint8Array(count); + + for (i = discardNumber, j = 0; j < count; i++, j++) { + const value = data[i]; + decrypted[j] = value ^ r >> 8; + r = (value + r) * c1 + c2 & (1 << 16) - 1; + } + + return decrypted; +} + +function decryptAscii(data, key, discardNumber) { + const c1 = 52845, + c2 = 22719; + let r = key | 0; + const count = data.length, + maybeLength = count >>> 1; + const decrypted = new Uint8Array(maybeLength); + let i, j; + + for (i = 0, j = 0; i < count; i++) { + const digit1 = data[i]; + + if (!isHexDigit(digit1)) { + continue; + } + + i++; + let digit2; + + while (i < count && !isHexDigit(digit2 = data[i])) { + i++; + } + + if (i < count) { + const value = parseInt(String.fromCharCode(digit1, digit2), 16); + decrypted[j++] = value ^ r >> 8; r = (value + r) * c1 + c2 & (1 << 16) - 1; } - - return decrypted; } - function decryptAscii(data, key, discardNumber) { - var r = key | 0, - c1 = 52845, - c2 = 22719; - var count = data.length, - maybeLength = count >>> 1; - var decrypted = new Uint8Array(maybeLength); - var i, j; + return decrypted.slice(discardNumber, j); +} - for (i = 0, j = 0; i < count; i++) { - var digit1 = data[i]; +function isSpecial(c) { + return c === 0x2f || c === 0x5b || c === 0x5d || c === 0x7b || c === 0x7d || c === 0x28 || c === 0x29; +} - if (!isHexDigit(digit1)) { - continue; - } - - i++; - var digit2; - - while (i < count && !isHexDigit(digit2 = data[i])) { - i++; - } - - if (i < count) { - var value = parseInt(String.fromCharCode(digit1, digit2), 16); - decrypted[j++] = value ^ r >> 8; - r = (value + r) * c1 + c2 & (1 << 16) - 1; - } - } - - return Array.prototype.slice.call(decrypted, discardNumber, j); - } - - function isSpecial(c) { - return c === 0x2F || c === 0x5B || c === 0x5D || c === 0x7B || c === 0x7D || c === 0x28 || c === 0x29; - } - - function Type1Parser(stream, encrypted, seacAnalysisEnabled) { +class Type1Parser { + constructor(stream, encrypted, seacAnalysisEnabled) { if (encrypted) { - var data = stream.getBytes(); - var isBinary = !(isHexDigit(data[0]) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3])); + const data = stream.getBytes(); + const isBinary = !((isHexDigit(data[0]) || (0, _core_utils.isWhiteSpace)(data[0])) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]) && isHexDigit(data[4]) && isHexDigit(data[5]) && isHexDigit(data[6]) && isHexDigit(data[7])); stream = new _stream.Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)); } @@ -48411,314 +52634,342 @@ var Type1Parser = function Type1ParserClosure() { this.nextChar(); } - Type1Parser.prototype = { - readNumberArray: function Type1Parser_readNumberArray() { - this.getToken(); - var array = []; + readNumberArray() { + this.getToken(); + const array = []; - while (true) { - var token = this.getToken(); + while (true) { + const token = this.getToken(); - if (token === null || token === ']' || token === '}') { - break; + if (token === null || token === "]" || token === "}") { + break; + } + + array.push(parseFloat(token || 0)); + } + + return array; + } + + readNumber() { + const token = this.getToken(); + return parseFloat(token || 0); + } + + readInt() { + const token = this.getToken(); + return parseInt(token || 0, 10) | 0; + } + + readBoolean() { + const token = this.getToken(); + return token === "true" ? 1 : 0; + } + + nextChar() { + return this.currentChar = this.stream.getByte(); + } + + prevChar() { + this.stream.skip(-2); + return this.currentChar = this.stream.getByte(); + } + + getToken() { + let comment = false; + let ch = this.currentChar; + + while (true) { + if (ch === -1) { + return null; + } + + if (comment) { + if (ch === 0x0a || ch === 0x0d) { + comment = false; } - - array.push(parseFloat(token || 0)); + } else if (ch === 0x25) { + comment = true; + } else if (!(0, _core_utils.isWhiteSpace)(ch)) { + break; } - return array; - }, - readNumber: function Type1Parser_readNumber() { - var token = this.getToken(); - return parseFloat(token || 0); - }, - readInt: function Type1Parser_readInt() { - var token = this.getToken(); - return parseInt(token || 0, 10) | 0; - }, - readBoolean: function Type1Parser_readBoolean() { - var token = this.getToken(); - return token === 'true' ? 1 : 0; - }, - nextChar: function Type1_nextChar() { - return this.currentChar = this.stream.getByte(); - }, - getToken: function Type1Parser_getToken() { - var comment = false; - var ch = this.currentChar; + ch = this.nextChar(); + } - while (true) { - if (ch === -1) { - return null; - } + if (isSpecial(ch)) { + this.nextChar(); + return String.fromCharCode(ch); + } - if (comment) { - if (ch === 0x0A || ch === 0x0D) { - comment = false; - } - } else if (ch === 0x25) { - comment = true; - } else if (!(0, _util.isSpace)(ch)) { - break; - } + let token = ""; - ch = this.nextChar(); - } + do { + token += String.fromCharCode(ch); + ch = this.nextChar(); + } while (ch >= 0 && !(0, _core_utils.isWhiteSpace)(ch) && !isSpecial(ch)); - if (isSpecial(ch)) { - this.nextChar(); - return String.fromCharCode(ch); - } + return token; + } - var token = ''; + readCharStrings(bytes, lenIV) { + if (lenIV === -1) { + return bytes; + } - do { - token += String.fromCharCode(ch); - ch = this.nextChar(); - } while (ch >= 0 && !(0, _util.isSpace)(ch) && !isSpecial(ch)); + return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV); + } - return token; - }, - readCharStrings: function Type1Parser_readCharStrings(bytes, lenIV) { - if (lenIV === -1) { - return bytes; - } - - return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV); - }, - extractFontProgram: function Type1Parser_extractFontProgram() { - var stream = this.stream; - var subrs = [], + extractFontProgram(properties) { + const stream = this.stream; + const subrs = [], charstrings = []; - var privateData = Object.create(null); - privateData['lenIV'] = 4; - var program = { - subrs: [], - charstrings: [], - properties: { - 'privateData': privateData - } + const privateData = Object.create(null); + privateData.lenIV = 4; + const program = { + subrs: [], + charstrings: [], + properties: { + privateData + } + }; + let token, length, data, lenIV; + + while ((token = this.getToken()) !== null) { + if (token !== "/") { + continue; + } + + token = this.getToken(); + + switch (token) { + case "CharStrings": + this.getToken(); + this.getToken(); + this.getToken(); + this.getToken(); + + while (true) { + token = this.getToken(); + + if (token === null || token === "end") { + break; + } + + if (token !== "/") { + continue; + } + + const glyph = this.getToken(); + length = this.readInt(); + this.getToken(); + data = length > 0 ? stream.getBytes(length) : new Uint8Array(0); + lenIV = program.properties.privateData.lenIV; + const encoded = this.readCharStrings(data, lenIV); + this.nextChar(); + token = this.getToken(); + + if (token === "noaccess") { + this.getToken(); + } else if (token === "/") { + this.prevChar(); + } + + charstrings.push({ + glyph, + encoded + }); + } + + break; + + case "Subrs": + this.readInt(); + this.getToken(); + + while (this.getToken() === "dup") { + const index = this.readInt(); + length = this.readInt(); + this.getToken(); + data = length > 0 ? stream.getBytes(length) : new Uint8Array(0); + lenIV = program.properties.privateData.lenIV; + const encoded = this.readCharStrings(data, lenIV); + this.nextChar(); + token = this.getToken(); + + if (token === "noaccess") { + this.getToken(); + } + + subrs[index] = encoded; + } + + break; + + case "BlueValues": + case "OtherBlues": + case "FamilyBlues": + case "FamilyOtherBlues": + const blueArray = this.readNumberArray(); + + if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) { + program.properties.privateData[token] = blueArray; + } + + break; + + case "StemSnapH": + case "StemSnapV": + program.properties.privateData[token] = this.readNumberArray(); + break; + + case "StdHW": + case "StdVW": + program.properties.privateData[token] = this.readNumberArray()[0]; + break; + + case "BlueShift": + case "lenIV": + case "BlueFuzz": + case "BlueScale": + case "LanguageGroup": + case "ExpansionFactor": + program.properties.privateData[token] = this.readNumber(); + break; + + case "ForceBold": + program.properties.privateData[token] = this.readBoolean(); + break; + } + } + + for (const { + encoded, + glyph + } of charstrings) { + const charString = new Type1CharString(); + const error = charString.convert(encoded, subrs, this.seacAnalysisEnabled); + let output = charString.output; + + if (error) { + output = [14]; + } + + const charStringObject = { + glyphName: glyph, + charstring: output, + width: charString.width, + lsb: charString.lsb, + seac: charString.seac }; - var token, length, data, lenIV, encoded; - while ((token = this.getToken()) !== null) { - if (token !== '/') { - continue; - } - - token = this.getToken(); - - switch (token) { - case 'CharStrings': - this.getToken(); - this.getToken(); - this.getToken(); - this.getToken(); - - while (true) { - token = this.getToken(); - - if (token === null || token === 'end') { - break; - } - - if (token !== '/') { - continue; - } - - var glyph = this.getToken(); - length = this.readInt(); - this.getToken(); - data = length > 0 ? stream.getBytes(length) : new Uint8Array(0); - lenIV = program.properties.privateData['lenIV']; - encoded = this.readCharStrings(data, lenIV); - this.nextChar(); - token = this.getToken(); - - if (token === 'noaccess') { - this.getToken(); - } - - charstrings.push({ - glyph: glyph, - encoded: encoded - }); - } - - break; - - case 'Subrs': - this.readInt(); - this.getToken(); - - while (this.getToken() === 'dup') { - var index = this.readInt(); - length = this.readInt(); - this.getToken(); - data = length > 0 ? stream.getBytes(length) : new Uint8Array(0); - lenIV = program.properties.privateData['lenIV']; - encoded = this.readCharStrings(data, lenIV); - this.nextChar(); - token = this.getToken(); - - if (token === 'noaccess') { - this.getToken(); - } - - subrs[index] = encoded; - } - - break; - - case 'BlueValues': - case 'OtherBlues': - case 'FamilyBlues': - case 'FamilyOtherBlues': - var blueArray = this.readNumberArray(); - - if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) { - program.properties.privateData[token] = blueArray; - } - - break; - - case 'StemSnapH': - case 'StemSnapV': - program.properties.privateData[token] = this.readNumberArray(); - break; - - case 'StdHW': - case 'StdVW': - program.properties.privateData[token] = this.readNumberArray()[0]; - break; - - case 'BlueShift': - case 'lenIV': - case 'BlueFuzz': - case 'BlueScale': - case 'LanguageGroup': - case 'ExpansionFactor': - program.properties.privateData[token] = this.readNumber(); - break; - - case 'ForceBold': - program.properties.privateData[token] = this.readBoolean(); - break; - } + if (glyph === ".notdef") { + program.charstrings.unshift(charStringObject); + } else { + program.charstrings.push(charStringObject); } - for (var i = 0; i < charstrings.length; i++) { - glyph = charstrings[i].glyph; - encoded = charstrings[i].encoded; - var charString = new Type1CharString(); - var error = charString.convert(encoded, subrs, this.seacAnalysisEnabled); - var output = charString.output; + if (properties.builtInEncoding) { + const index = properties.builtInEncoding.indexOf(glyph); - if (error) { - output = [14]; - } - - program.charstrings.push({ - glyphName: glyph, - charstring: output, - width: charString.width, - lsb: charString.lsb, - seac: charString.seac - }); - } - - return program; - }, - extractFontHeader: function Type1Parser_extractFontHeader(properties) { - var token; - - while ((token = this.getToken()) !== null) { - if (token !== '/') { - continue; - } - - token = this.getToken(); - - switch (token) { - case 'FontMatrix': - var matrix = this.readNumberArray(); - properties.fontMatrix = matrix; - break; - - case 'Encoding': - var encodingArg = this.getToken(); - var encoding; - - if (!/^\d+$/.test(encodingArg)) { - encoding = (0, _encodings.getEncoding)(encodingArg); - } else { - encoding = []; - var size = parseInt(encodingArg, 10) | 0; - this.getToken(); - - for (var j = 0; j < size; j++) { - token = this.getToken(); - - while (token !== 'dup' && token !== 'def') { - token = this.getToken(); - - if (token === null) { - return; - } - } - - if (token === 'def') { - break; - } - - var index = this.readInt(); - this.getToken(); - var glyph = this.getToken(); - encoding[index] = glyph; - this.getToken(); - } - } - - properties.builtInEncoding = encoding; - break; - - case 'FontBBox': - var fontBBox = this.readNumberArray(); - properties.ascent = Math.max(fontBBox[3], fontBBox[1]); - properties.descent = Math.min(fontBBox[1], fontBBox[3]); - properties.ascentScaled = true; - break; + if (index > -1 && properties.widths[index] === undefined && index >= properties.firstChar && index <= properties.lastChar) { + properties.widths[index] = charString.width; } } } - }; - return Type1Parser; -}(); + + return program; + } + + extractFontHeader(properties) { + let token; + + while ((token = this.getToken()) !== null) { + if (token !== "/") { + continue; + } + + token = this.getToken(); + + switch (token) { + case "FontMatrix": + const matrix = this.readNumberArray(); + properties.fontMatrix = matrix; + break; + + case "Encoding": + const encodingArg = this.getToken(); + let encoding; + + if (!/^\d+$/.test(encodingArg)) { + encoding = (0, _encodings.getEncoding)(encodingArg); + } else { + encoding = []; + const size = parseInt(encodingArg, 10) | 0; + this.getToken(); + + for (let j = 0; j < size; j++) { + token = this.getToken(); + + while (token !== "dup" && token !== "def") { + token = this.getToken(); + + if (token === null) { + return; + } + } + + if (token === "def") { + break; + } + + const index = this.readInt(); + this.getToken(); + const glyph = this.getToken(); + encoding[index] = glyph; + this.getToken(); + } + } + + properties.builtInEncoding = encoding; + break; + + case "FontBBox": + const fontBBox = this.readNumberArray(); + properties.ascent = Math.max(fontBBox[3], fontBBox[1]); + properties.descent = Math.min(fontBBox[1], fontBBox[3]); + properties.ascentScaled = true; + break; + } + } + } + +} exports.Type1Parser = Type1Parser; /***/ }), -/* 183 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 175 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.getTilingPatternIR = getTilingPatternIR; +})); exports.Pattern = void 0; +exports.getTilingPatternIR = getTilingPatternIR; -var _util = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(2); -var _colorspace = __w_pdfjs_require__(169); +var _base_stream = __w_pdfjs_require__(132); -var _primitives = __w_pdfjs_require__(151); +var _colorspace = __w_pdfjs_require__(139); -var _core_utils = __w_pdfjs_require__(154); +var _core_utils = __w_pdfjs_require__(131); -var ShadingType = { +const ShadingType = { FUNCTION_BASED: 1, AXIAL: 2, RADIAL: 3, @@ -48728,300 +52979,430 @@ var ShadingType = { TENSOR_PATCH_MESH: 7 }; -var Pattern = function PatternClosure() { - function Pattern() { - (0, _util.unreachable)('should not call Pattern constructor'); +class Pattern { + constructor() { + (0, _util.unreachable)("Cannot initialize Pattern."); } - Pattern.prototype = { - getPattern: function Pattern_getPattern(ctx) { - (0, _util.unreachable)("Should not call Pattern.getStyle: ".concat(ctx)); - } - }; - - Pattern.parseShading = function (shading, matrix, xref, res, handler, pdfFunctionFactory) { - var dict = (0, _primitives.isStream)(shading) ? shading.dict : shading; - var type = dict.get('ShadingType'); + static parseShading(shading, xref, res, handler, pdfFunctionFactory, localColorSpaceCache) { + const dict = shading instanceof _base_stream.BaseStream ? shading.dict : shading; + const type = dict.get("ShadingType"); try { switch (type) { case ShadingType.AXIAL: case ShadingType.RADIAL: - return new Shadings.RadialAxial(dict, matrix, xref, res, pdfFunctionFactory); + return new RadialAxialShading(dict, xref, res, pdfFunctionFactory, localColorSpaceCache); case ShadingType.FREE_FORM_MESH: case ShadingType.LATTICE_FORM_MESH: case ShadingType.COONS_PATCH_MESH: case ShadingType.TENSOR_PATCH_MESH: - return new Shadings.Mesh(shading, matrix, xref, res, pdfFunctionFactory); + return new MeshShading(shading, xref, res, pdfFunctionFactory, localColorSpaceCache); default: - throw new _util.FormatError('Unsupported ShadingType: ' + type); + throw new _util.FormatError("Unsupported ShadingType: " + type); } } catch (ex) { if (ex instanceof _core_utils.MissingDataException) { throw ex; } - handler.send('UnsupportedFeature', { + handler.send("UnsupportedFeature", { featureId: _util.UNSUPPORTED_FEATURES.shadingPattern }); (0, _util.warn)(ex); - return new Shadings.Dummy(); + return new DummyShading(); } - }; + } - return Pattern; -}(); +} exports.Pattern = Pattern; -var Shadings = {}; -Shadings.SMALL_NUMBER = 1e-6; -Shadings.RadialAxial = function RadialAxialClosure() { - function RadialAxial(dict, matrix, xref, res, pdfFunctionFactory) { - this.matrix = matrix; - this.coordsArr = dict.getArray('Coords'); - this.shadingType = dict.get('ShadingType'); - this.type = 'Pattern'; - var cs = dict.get('ColorSpace', 'CS'); - cs = _colorspace.ColorSpace.parse(cs, xref, res, pdfFunctionFactory); - this.cs = cs; - var t0 = 0.0, +class BaseShading { + static get SMALL_NUMBER() { + return (0, _util.shadow)(this, "SMALL_NUMBER", 1e-6); + } + + constructor() { + if (this.constructor === BaseShading) { + (0, _util.unreachable)("Cannot initialize BaseShading."); + } + } + + getIR() { + (0, _util.unreachable)("Abstract method `getIR` called."); + } + +} + +class RadialAxialShading extends BaseShading { + constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) { + super(); + this.coordsArr = dict.getArray("Coords"); + this.shadingType = dict.get("ShadingType"); + + const cs = _colorspace.ColorSpace.parse({ + cs: dict.getRaw("CS") || dict.getRaw("ColorSpace"), + xref, + resources, + pdfFunctionFactory, + localColorSpaceCache + }); + + const bbox = dict.getArray("BBox"); + + if (Array.isArray(bbox) && bbox.length === 4) { + this.bbox = _util.Util.normalizeRect(bbox); + } else { + this.bbox = null; + } + + let t0 = 0.0, t1 = 1.0; - if (dict.has('Domain')) { - var domainArr = dict.getArray('Domain'); + if (dict.has("Domain")) { + const domainArr = dict.getArray("Domain"); t0 = domainArr[0]; t1 = domainArr[1]; } - var extendStart = false, + let extendStart = false, extendEnd = false; - if (dict.has('Extend')) { - var extendArr = dict.getArray('Extend'); + if (dict.has("Extend")) { + const extendArr = dict.getArray("Extend"); extendStart = extendArr[0]; extendEnd = extendArr[1]; } if (this.shadingType === ShadingType.RADIAL && (!extendStart || !extendEnd)) { - var x1 = this.coordsArr[0]; - var y1 = this.coordsArr[1]; - var r1 = this.coordsArr[2]; - var x2 = this.coordsArr[3]; - var y2 = this.coordsArr[4]; - var r2 = this.coordsArr[5]; - var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); + const [x1, y1, r1, x2, y2, r2] = this.coordsArr; + const distance = Math.hypot(x1 - x2, y1 - y2); if (r1 <= r2 + distance && r2 <= r1 + distance) { - (0, _util.warn)('Unsupported radial gradient.'); + (0, _util.warn)("Unsupported radial gradient."); } } this.extendStart = extendStart; this.extendEnd = extendEnd; - var fnObj = dict.get('Function'); - var fn = pdfFunctionFactory.createFromArray(fnObj); - var diff = t1 - t0; - var step = diff / 10; - var colorStops = this.colorStops = []; + const fnObj = dict.getRaw("Function"); + const fn = pdfFunctionFactory.createFromArray(fnObj); + const NUMBER_OF_SAMPLES = 10; + const step = (t1 - t0) / NUMBER_OF_SAMPLES; + const colorStops = this.colorStops = []; if (t0 >= t1 || step <= 0) { - (0, _util.info)('Bad shading domain.'); + (0, _util.info)("Bad shading domain."); return; } - var color = new Float32Array(cs.numComps), - ratio = new Float32Array(1); - var rgbColor; + const color = new Float32Array(cs.numComps), + ratio = new Float32Array(1); + let rgbColor; - for (var i = t0; i <= t1; i += step) { - ratio[0] = i; + for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) { + ratio[0] = t0 + i * step; fn(ratio, 0, color, 0); rgbColor = cs.getRgb(color, 0); - var cssColor = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]); + const cssColor = _util.Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]); - colorStops.push([(i - t0) / diff, cssColor]); + colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]); } - var background = 'transparent'; + let background = "transparent"; - if (dict.has('Background')) { - rgbColor = cs.getRgb(dict.get('Background'), 0); - background = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]); + if (dict.has("Background")) { + rgbColor = cs.getRgb(dict.get("Background"), 0); + background = _util.Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]); } if (!extendStart) { colorStops.unshift([0, background]); - colorStops[1][0] += Shadings.SMALL_NUMBER; + colorStops[1][0] += BaseShading.SMALL_NUMBER; } if (!extendEnd) { - colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER; + colorStops.at(-1)[0] -= BaseShading.SMALL_NUMBER; colorStops.push([1, background]); } this.colorStops = colorStops; } - RadialAxial.prototype = { - getIR: function RadialAxial_getIR() { - var coordsArr = this.coordsArr; - var shadingType = this.shadingType; - var type, p0, p1, r0, r1; + getIR() { + const coordsArr = this.coordsArr; + const shadingType = this.shadingType; + let type, p0, p1, r0, r1; - if (shadingType === ShadingType.AXIAL) { - p0 = [coordsArr[0], coordsArr[1]]; - p1 = [coordsArr[2], coordsArr[3]]; - r0 = null; - r1 = null; - type = 'axial'; - } else if (shadingType === ShadingType.RADIAL) { - p0 = [coordsArr[0], coordsArr[1]]; - p1 = [coordsArr[3], coordsArr[4]]; - r0 = coordsArr[2]; - r1 = coordsArr[5]; - type = 'radial'; - } else { - (0, _util.unreachable)("getPattern type unknown: ".concat(shadingType)); - } - - var matrix = this.matrix; - - if (matrix) { - p0 = _util.Util.applyTransform(p0, matrix); - p1 = _util.Util.applyTransform(p1, matrix); - - if (shadingType === ShadingType.RADIAL) { - var scale = _util.Util.singularValueDecompose2dScale(matrix); - - r0 *= scale[0]; - r1 *= scale[1]; - } - } - - return ['RadialAxial', type, this.colorStops, p0, p1, r0, r1]; + if (shadingType === ShadingType.AXIAL) { + p0 = [coordsArr[0], coordsArr[1]]; + p1 = [coordsArr[2], coordsArr[3]]; + r0 = null; + r1 = null; + type = "axial"; + } else if (shadingType === ShadingType.RADIAL) { + p0 = [coordsArr[0], coordsArr[1]]; + p1 = [coordsArr[3], coordsArr[4]]; + r0 = coordsArr[2]; + r1 = coordsArr[5]; + type = "radial"; + } else { + (0, _util.unreachable)(`getPattern type unknown: ${shadingType}`); } - }; - return RadialAxial; -}(); -Shadings.Mesh = function MeshClosure() { - function MeshStreamReader(stream, context) { + return ["RadialAxial", type, this.bbox, this.colorStops, p0, p1, r0, r1]; + } + +} + +class MeshStreamReader { + constructor(stream, context) { this.stream = stream; this.context = context; this.buffer = 0; this.bufferLength = 0; - var numComps = context.numComps; + const numComps = context.numComps; this.tmpCompsBuf = new Float32Array(numComps); - var csNumComps = context.colorSpace.numComps; + const csNumComps = context.colorSpace.numComps; this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf; } - MeshStreamReader.prototype = { - get hasData() { - if (this.stream.end) { - return this.stream.pos < this.stream.end; - } + get hasData() { + if (this.stream.end) { + return this.stream.pos < this.stream.end; + } - if (this.bufferLength > 0) { - return true; - } - - var nextByte = this.stream.getByte(); - - if (nextByte < 0) { - return false; - } - - this.buffer = nextByte; - this.bufferLength = 8; + if (this.bufferLength > 0) { return true; - }, + } - readBits: function MeshStreamReader_readBits(n) { - var buffer = this.buffer; - var bufferLength = this.bufferLength; + const nextByte = this.stream.getByte(); - if (n === 32) { - if (bufferLength === 0) { - return (this.stream.getByte() << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte()) >>> 0; + if (nextByte < 0) { + return false; + } + + this.buffer = nextByte; + this.bufferLength = 8; + return true; + } + + readBits(n) { + let buffer = this.buffer; + let bufferLength = this.bufferLength; + + if (n === 32) { + if (bufferLength === 0) { + return (this.stream.getByte() << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte()) >>> 0; + } + + buffer = buffer << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte(); + const nextByte = this.stream.getByte(); + this.buffer = nextByte & (1 << bufferLength) - 1; + return (buffer << 8 - bufferLength | (nextByte & 0xff) >> bufferLength) >>> 0; + } + + if (n === 8 && bufferLength === 0) { + return this.stream.getByte(); + } + + while (bufferLength < n) { + buffer = buffer << 8 | this.stream.getByte(); + bufferLength += 8; + } + + bufferLength -= n; + this.bufferLength = bufferLength; + this.buffer = buffer & (1 << bufferLength) - 1; + return buffer >> bufferLength; + } + + align() { + this.buffer = 0; + this.bufferLength = 0; + } + + readFlag() { + return this.readBits(this.context.bitsPerFlag); + } + + readCoordinate() { + const bitsPerCoordinate = this.context.bitsPerCoordinate; + const xi = this.readBits(bitsPerCoordinate); + const yi = this.readBits(bitsPerCoordinate); + const decode = this.context.decode; + const scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10; + return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]]; + } + + readComponents() { + const numComps = this.context.numComps; + const bitsPerComponent = this.context.bitsPerComponent; + const scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10; + const decode = this.context.decode; + const components = this.tmpCompsBuf; + + for (let i = 0, j = 4; i < numComps; i++, j += 2) { + const ci = this.readBits(bitsPerComponent); + components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j]; + } + + const color = this.tmpCsCompsBuf; + + if (this.context.colorFn) { + this.context.colorFn(components, 0, color, 0); + } + + return this.context.colorSpace.getRgb(color, 0); + } + +} + +const getB = function getBClosure() { + function buildB(count) { + const lut = []; + + for (let i = 0; i <= count; i++) { + const t = i / count, + t_ = 1 - t; + lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_, 3 * t * t * t_, t * t * t])); + } + + return lut; + } + + const cache = []; + return function (count) { + if (!cache[count]) { + cache[count] = buildB(count); + } + + return cache[count]; + }; +}(); + +class MeshShading extends BaseShading { + static get MIN_SPLIT_PATCH_CHUNKS_AMOUNT() { + return (0, _util.shadow)(this, "MIN_SPLIT_PATCH_CHUNKS_AMOUNT", 3); + } + + static get MAX_SPLIT_PATCH_CHUNKS_AMOUNT() { + return (0, _util.shadow)(this, "MAX_SPLIT_PATCH_CHUNKS_AMOUNT", 20); + } + + static get TRIANGLE_DENSITY() { + return (0, _util.shadow)(this, "TRIANGLE_DENSITY", 20); + } + + constructor(stream, xref, resources, pdfFunctionFactory, localColorSpaceCache) { + super(); + + if (!(stream instanceof _base_stream.BaseStream)) { + throw new _util.FormatError("Mesh data is not a stream"); + } + + const dict = stream.dict; + this.shadingType = dict.get("ShadingType"); + const bbox = dict.getArray("BBox"); + + if (Array.isArray(bbox) && bbox.length === 4) { + this.bbox = _util.Util.normalizeRect(bbox); + } else { + this.bbox = null; + } + + const cs = _colorspace.ColorSpace.parse({ + cs: dict.getRaw("CS") || dict.getRaw("ColorSpace"), + xref, + resources, + pdfFunctionFactory, + localColorSpaceCache + }); + + this.background = dict.has("Background") ? cs.getRgb(dict.get("Background"), 0) : null; + const fnObj = dict.getRaw("Function"); + const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null; + this.coords = []; + this.colors = []; + this.figures = []; + const decodeContext = { + bitsPerCoordinate: dict.get("BitsPerCoordinate"), + bitsPerComponent: dict.get("BitsPerComponent"), + bitsPerFlag: dict.get("BitsPerFlag"), + decode: dict.getArray("Decode"), + colorFn: fn, + colorSpace: cs, + numComps: fn ? 1 : cs.numComps + }; + const reader = new MeshStreamReader(stream, decodeContext); + let patchMesh = false; + + switch (this.shadingType) { + case ShadingType.FREE_FORM_MESH: + this._decodeType4Shading(reader); + + break; + + case ShadingType.LATTICE_FORM_MESH: + const verticesPerRow = dict.get("VerticesPerRow") | 0; + + if (verticesPerRow < 2) { + throw new _util.FormatError("Invalid VerticesPerRow"); } - buffer = buffer << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte(); - var nextByte = this.stream.getByte(); - this.buffer = nextByte & (1 << bufferLength) - 1; - return (buffer << 8 - bufferLength | (nextByte & 0xFF) >> bufferLength) >>> 0; - } + this._decodeType5Shading(reader, verticesPerRow); - if (n === 8 && bufferLength === 0) { - return this.stream.getByte(); - } + break; - while (bufferLength < n) { - buffer = buffer << 8 | this.stream.getByte(); - bufferLength += 8; - } + case ShadingType.COONS_PATCH_MESH: + this._decodeType6Shading(reader); - bufferLength -= n; - this.bufferLength = bufferLength; - this.buffer = buffer & (1 << bufferLength) - 1; - return buffer >> bufferLength; - }, - align: function MeshStreamReader_align() { - this.buffer = 0; - this.bufferLength = 0; - }, - readFlag: function MeshStreamReader_readFlag() { - return this.readBits(this.context.bitsPerFlag); - }, - readCoordinate: function MeshStreamReader_readCoordinate() { - var bitsPerCoordinate = this.context.bitsPerCoordinate; - var xi = this.readBits(bitsPerCoordinate); - var yi = this.readBits(bitsPerCoordinate); - var decode = this.context.decode; - var scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10; - return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]]; - }, - readComponents: function MeshStreamReader_readComponents() { - var numComps = this.context.numComps; - var bitsPerComponent = this.context.bitsPerComponent; - var scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10; - var decode = this.context.decode; - var components = this.tmpCompsBuf; + patchMesh = true; + break; - for (var i = 0, j = 4; i < numComps; i++, j += 2) { - var ci = this.readBits(bitsPerComponent); - components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j]; - } + case ShadingType.TENSOR_PATCH_MESH: + this._decodeType7Shading(reader); - var color = this.tmpCsCompsBuf; + patchMesh = true; + break; - if (this.context.colorFn) { - this.context.colorFn(components, 0, color, 0); - } - - return this.context.colorSpace.getRgb(color, 0); + default: + (0, _util.unreachable)("Unsupported mesh type."); + break; } - }; - function decodeType4Shading(mesh, reader) { - var coords = mesh.coords; - var colors = mesh.colors; - var operators = []; - var ps = []; - var verticesLeft = 0; + if (patchMesh) { + this._updateBounds(); + + for (let i = 0, ii = this.figures.length; i < ii; i++) { + this._buildFigureFromPatch(i); + } + } + + this._updateBounds(); + + this._packData(); + } + + _decodeType4Shading(reader) { + const coords = this.coords; + const colors = this.colors; + const operators = []; + const ps = []; + let verticesLeft = 0; while (reader.hasData) { - var f = reader.readFlag(); - var coord = reader.readCoordinate(); - var color = reader.readComponents(); + const f = reader.readFlag(); + const coord = reader.readCoordinate(); + const color = reader.readComponents(); if (verticesLeft === 0) { if (!(0 <= f && f <= 2)) { - throw new _util.FormatError('Unknown type4 flag'); + throw new _util.FormatError("Unknown type4 flag"); } switch (f) { @@ -49030,12 +53411,12 @@ Shadings.Mesh = function MeshClosure() { break; case 1: - ps.push(ps[ps.length - 2], ps[ps.length - 1]); + ps.push(ps.at(-2), ps.at(-1)); verticesLeft = 1; break; case 2: - ps.push(ps[ps.length - 3], ps[ps.length - 1]); + ps.push(ps.at(-3), ps.at(-1)); verticesLeft = 1; break; } @@ -49050,168 +53431,60 @@ Shadings.Mesh = function MeshClosure() { reader.align(); } - mesh.figures.push({ - type: 'triangles', + this.figures.push({ + type: "triangles", coords: new Int32Array(ps), colors: new Int32Array(ps) }); } - function decodeType5Shading(mesh, reader, verticesPerRow) { - var coords = mesh.coords; - var colors = mesh.colors; - var ps = []; + _decodeType5Shading(reader, verticesPerRow) { + const coords = this.coords; + const colors = this.colors; + const ps = []; while (reader.hasData) { - var coord = reader.readCoordinate(); - var color = reader.readComponents(); + const coord = reader.readCoordinate(); + const color = reader.readComponents(); ps.push(coords.length); coords.push(coord); colors.push(color); } - mesh.figures.push({ - type: 'lattice', + this.figures.push({ + type: "lattice", coords: new Int32Array(ps), colors: new Int32Array(ps), - verticesPerRow: verticesPerRow + verticesPerRow }); } - var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3; - var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20; - var TRIANGLE_DENSITY = 20; - - var getB = function getBClosure() { - function buildB(count) { - var lut = []; - - for (var i = 0; i <= count; i++) { - var t = i / count, - t_ = 1 - t; - lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_, 3 * t * t * t_, t * t * t])); - } - - return lut; - } - - var cache = []; - return function getB(count) { - if (!cache[count]) { - cache[count] = buildB(count); - } - - return cache[count]; - }; - }(); - - function buildFigureFromPatch(mesh, index) { - var figure = mesh.figures[index]; - (0, _util.assert)(figure.type === 'patch', 'Unexpected patch mesh figure'); - var coords = mesh.coords, - colors = mesh.colors; - var pi = figure.coords; - var ci = figure.colors; - var figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]); - var figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]); - var figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]); - var figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]); - var splitXBy = Math.ceil((figureMaxX - figureMinX) * TRIANGLE_DENSITY / (mesh.bounds[2] - mesh.bounds[0])); - splitXBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)); - var splitYBy = Math.ceil((figureMaxY - figureMinY) * TRIANGLE_DENSITY / (mesh.bounds[3] - mesh.bounds[1])); - splitYBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)); - var verticesPerRow = splitXBy + 1; - var figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow); - var figureColors = new Int32Array((splitYBy + 1) * verticesPerRow); - var k = 0; - var cl = new Uint8Array(3), - cr = new Uint8Array(3); - var c0 = colors[ci[0]], - c1 = colors[ci[1]], - c2 = colors[ci[2]], - c3 = colors[ci[3]]; - var bRow = getB(splitYBy), - bCol = getB(splitXBy); - - for (var row = 0; row <= splitYBy; row++) { - cl[0] = (c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy | 0; - cl[1] = (c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy | 0; - cl[2] = (c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy | 0; - cr[0] = (c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy | 0; - cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0; - cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0; - - for (var col = 0; col <= splitXBy; col++, k++) { - if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) { - continue; - } - - var x = 0, - y = 0; - var q = 0; - - for (var i = 0; i <= 3; i++) { - for (var j = 0; j <= 3; j++, q++) { - var m = bRow[row][i] * bCol[col][j]; - x += coords[pi[q]][0] * m; - y += coords[pi[q]][1] * m; - } - } - - figureCoords[k] = coords.length; - coords.push([x, y]); - figureColors[k] = colors.length; - var newColor = new Uint8Array(3); - newColor[0] = (cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy | 0; - newColor[1] = (cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy | 0; - newColor[2] = (cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy | 0; - colors.push(newColor); - } - } - - figureCoords[0] = pi[0]; - figureColors[0] = ci[0]; - figureCoords[splitXBy] = pi[3]; - figureColors[splitXBy] = ci[1]; - figureCoords[verticesPerRow * splitYBy] = pi[12]; - figureColors[verticesPerRow * splitYBy] = ci[2]; - figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15]; - figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3]; - mesh.figures[index] = { - type: 'lattice', - coords: figureCoords, - colors: figureColors, - verticesPerRow: verticesPerRow - }; - } - - function decodeType6Shading(mesh, reader) { - var coords = mesh.coords; - var colors = mesh.colors; - var ps = new Int32Array(16); - var cs = new Int32Array(4); + _decodeType6Shading(reader) { + const coords = this.coords; + const colors = this.colors; + const ps = new Int32Array(16); + const cs = new Int32Array(4); while (reader.hasData) { - var f = reader.readFlag(); + const f = reader.readFlag(); if (!(0 <= f && f <= 3)) { - throw new _util.FormatError('Unknown type6 flag'); + throw new _util.FormatError("Unknown type6 flag"); } - var i, ii; - var pi = coords.length; + const pi = coords.length; - for (i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) { + for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) { coords.push(reader.readCoordinate()); } - var ci = colors.length; + const ci = colors.length; - for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) { + for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) { colors.push(reader.readComponents()); } - var tmp1, tmp2, tmp3, tmp4; + let tmp1, tmp2, tmp3, tmp4; switch (f) { case 0: @@ -49308,41 +53581,40 @@ Shadings.Mesh = function MeshClosure() { coords.push([(-4 * coords[ps[12]][0] - coords[ps[3]][0] + 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, (-4 * coords[ps[12]][1] - coords[ps[3]][1] + 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9]); ps[10] = coords.length; coords.push([(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, (-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9]); - mesh.figures.push({ - type: 'patch', + this.figures.push({ + type: "patch", coords: new Int32Array(ps), colors: new Int32Array(cs) }); } } - function decodeType7Shading(mesh, reader) { - var coords = mesh.coords; - var colors = mesh.colors; - var ps = new Int32Array(16); - var cs = new Int32Array(4); + _decodeType7Shading(reader) { + const coords = this.coords; + const colors = this.colors; + const ps = new Int32Array(16); + const cs = new Int32Array(4); while (reader.hasData) { - var f = reader.readFlag(); + const f = reader.readFlag(); if (!(0 <= f && f <= 3)) { - throw new _util.FormatError('Unknown type7 flag'); + throw new _util.FormatError("Unknown type7 flag"); } - var i, ii; - var pi = coords.length; + const pi = coords.length; - for (i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) { + for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) { coords.push(reader.readCoordinate()); } - var ci = colors.length; + const ci = colors.length; - for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) { + for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) { colors.push(reader.readComponents()); } - var tmp1, tmp2, tmp3, tmp4; + let tmp1, tmp2, tmp3, tmp4; switch (f) { case 0: @@ -49447,61 +53719,141 @@ Shadings.Mesh = function MeshClosure() { break; } - mesh.figures.push({ - type: 'patch', + this.figures.push({ + type: "patch", coords: new Int32Array(ps), colors: new Int32Array(cs) }); } } - function updateBounds(mesh) { - var minX = mesh.coords[0][0], - minY = mesh.coords[0][1], + _buildFigureFromPatch(index) { + const figure = this.figures[index]; + (0, _util.assert)(figure.type === "patch", "Unexpected patch mesh figure"); + const coords = this.coords, + colors = this.colors; + const pi = figure.coords; + const ci = figure.colors; + const figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]); + const figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]); + const figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]); + const figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]); + let splitXBy = Math.ceil((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY / (this.bounds[2] - this.bounds[0])); + splitXBy = Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)); + let splitYBy = Math.ceil((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY / (this.bounds[3] - this.bounds[1])); + splitYBy = Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)); + const verticesPerRow = splitXBy + 1; + const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow); + const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow); + let k = 0; + const cl = new Uint8Array(3), + cr = new Uint8Array(3); + const c0 = colors[ci[0]], + c1 = colors[ci[1]], + c2 = colors[ci[2]], + c3 = colors[ci[3]]; + const bRow = getB(splitYBy), + bCol = getB(splitXBy); + + for (let row = 0; row <= splitYBy; row++) { + cl[0] = (c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy | 0; + cl[1] = (c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy | 0; + cl[2] = (c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy | 0; + cr[0] = (c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy | 0; + cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0; + cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0; + + for (let col = 0; col <= splitXBy; col++, k++) { + if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) { + continue; + } + + let x = 0, + y = 0; + let q = 0; + + for (let i = 0; i <= 3; i++) { + for (let j = 0; j <= 3; j++, q++) { + const m = bRow[row][i] * bCol[col][j]; + x += coords[pi[q]][0] * m; + y += coords[pi[q]][1] * m; + } + } + + figureCoords[k] = coords.length; + coords.push([x, y]); + figureColors[k] = colors.length; + const newColor = new Uint8Array(3); + newColor[0] = (cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy | 0; + newColor[1] = (cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy | 0; + newColor[2] = (cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy | 0; + colors.push(newColor); + } + } + + figureCoords[0] = pi[0]; + figureColors[0] = ci[0]; + figureCoords[splitXBy] = pi[3]; + figureColors[splitXBy] = ci[1]; + figureCoords[verticesPerRow * splitYBy] = pi[12]; + figureColors[verticesPerRow * splitYBy] = ci[2]; + figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15]; + figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3]; + this.figures[index] = { + type: "lattice", + coords: figureCoords, + colors: figureColors, + verticesPerRow + }; + } + + _updateBounds() { + let minX = this.coords[0][0], + minY = this.coords[0][1], maxX = minX, maxY = minY; - for (var i = 1, ii = mesh.coords.length; i < ii; i++) { - var x = mesh.coords[i][0], - y = mesh.coords[i][1]; + for (let i = 1, ii = this.coords.length; i < ii; i++) { + const x = this.coords[i][0], + y = this.coords[i][1]; minX = minX > x ? x : minX; minY = minY > y ? y : minY; maxX = maxX < x ? x : maxX; maxY = maxY < y ? y : maxY; } - mesh.bounds = [minX, minY, maxX, maxY]; + this.bounds = [minX, minY, maxX, maxY]; } - function packData(mesh) { - var i, ii, j, jj; - var coords = mesh.coords; - var coordsPacked = new Float32Array(coords.length * 2); + _packData() { + let i, ii, j, jj; + const coords = this.coords; + const coordsPacked = new Float32Array(coords.length * 2); for (i = 0, j = 0, ii = coords.length; i < ii; i++) { - var xy = coords[i]; + const xy = coords[i]; coordsPacked[j++] = xy[0]; coordsPacked[j++] = xy[1]; } - mesh.coords = coordsPacked; - var colors = mesh.colors; - var colorsPacked = new Uint8Array(colors.length * 3); + this.coords = coordsPacked; + const colors = this.colors; + const colorsPacked = new Uint8Array(colors.length * 3); for (i = 0, j = 0, ii = colors.length; i < ii; i++) { - var c = colors[i]; + const c = colors[i]; colorsPacked[j++] = c[0]; colorsPacked[j++] = c[1]; colorsPacked[j++] = c[2]; } - mesh.colors = colorsPacked; - var figures = mesh.figures; + this.colors = colorsPacked; + const figures = this.figures; for (i = 0, ii = figures.length; i < ii; i++) { - var figure = figures[i], - ps = figure.coords, - cs = figure.colors; + const figure = figures[i], + ps = figure.coords, + cs = figure.colors; for (j = 0, jj = ps.length; j < jj; j++) { ps[j] *= 2; @@ -49510,133 +53862,2415 @@ Shadings.Mesh = function MeshClosure() { } } - function Mesh(stream, matrix, xref, res, pdfFunctionFactory) { - if (!(0, _primitives.isStream)(stream)) { - throw new _util.FormatError('Mesh data is not a stream'); - } - - var dict = stream.dict; - this.matrix = matrix; - this.shadingType = dict.get('ShadingType'); - this.type = 'Pattern'; - this.bbox = dict.getArray('BBox'); - var cs = dict.get('ColorSpace', 'CS'); - cs = _colorspace.ColorSpace.parse(cs, xref, res, pdfFunctionFactory); - this.cs = cs; - this.background = dict.has('Background') ? cs.getRgb(dict.get('Background'), 0) : null; - var fnObj = dict.get('Function'); - var fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null; - this.coords = []; - this.colors = []; - this.figures = []; - var decodeContext = { - bitsPerCoordinate: dict.get('BitsPerCoordinate'), - bitsPerComponent: dict.get('BitsPerComponent'), - bitsPerFlag: dict.get('BitsPerFlag'), - decode: dict.getArray('Decode'), - colorFn: fn, - colorSpace: cs, - numComps: fn ? 1 : cs.numComps - }; - var reader = new MeshStreamReader(stream, decodeContext); - var patchMesh = false; - - switch (this.shadingType) { - case ShadingType.FREE_FORM_MESH: - decodeType4Shading(this, reader); - break; - - case ShadingType.LATTICE_FORM_MESH: - var verticesPerRow = dict.get('VerticesPerRow') | 0; - - if (verticesPerRow < 2) { - throw new _util.FormatError('Invalid VerticesPerRow'); - } - - decodeType5Shading(this, reader, verticesPerRow); - break; - - case ShadingType.COONS_PATCH_MESH: - decodeType6Shading(this, reader); - patchMesh = true; - break; - - case ShadingType.TENSOR_PATCH_MESH: - decodeType7Shading(this, reader); - patchMesh = true; - break; - - default: - (0, _util.unreachable)('Unsupported mesh type.'); - break; - } - - if (patchMesh) { - updateBounds(this); - - for (var i = 0, ii = this.figures.length; i < ii; i++) { - buildFigureFromPatch(this, i); - } - } - - updateBounds(this); - packData(this); + getIR() { + return ["Mesh", this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.bbox, this.background]; } - Mesh.prototype = { - getIR: function Mesh_getIR() { - return ['Mesh', this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.matrix, this.bbox, this.background]; - } - }; - return Mesh; -}(); +} -Shadings.Dummy = function DummyClosure() { - function Dummy() { - this.type = 'Pattern'; +class DummyShading extends BaseShading { + getIR() { + return ["Dummy"]; } - Dummy.prototype = { - getIR: function Dummy_getIR() { - return ['Dummy']; - } - }; - return Dummy; -}(); +} -function getTilingPatternIR(operatorList, dict, args) { - var matrix = dict.getArray('Matrix'); +function getTilingPatternIR(operatorList, dict, color) { + const matrix = dict.getArray("Matrix"); - var bbox = _util.Util.normalizeRect(dict.getArray('BBox')); + const bbox = _util.Util.normalizeRect(dict.getArray("BBox")); - var xstep = dict.get('XStep'); - var ystep = dict.get('YStep'); - var paintType = dict.get('PaintType'); - var tilingType = dict.get('TilingType'); + const xstep = dict.get("XStep"); + const ystep = dict.get("YStep"); + const paintType = dict.get("PaintType"); + const tilingType = dict.get("TilingType"); if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) { - throw new _util.FormatError("Invalid getTilingPatternIR /BBox array: [".concat(bbox, "].")); + throw new _util.FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`); } - return ['TilingPattern', args, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType]; + return ["TilingPattern", color, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType]; } /***/ }), -/* 184 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 176 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true +})); +exports.getXfaFontDict = getXfaFontDict; +exports.getXfaFontName = getXfaFontName; + +var _calibri_factors = __w_pdfjs_require__(177); + +var _primitives = __w_pdfjs_require__(130); + +var _helvetica_factors = __w_pdfjs_require__(178); + +var _liberationsans_widths = __w_pdfjs_require__(179); + +var _myriadpro_factors = __w_pdfjs_require__(180); + +var _segoeui_factors = __w_pdfjs_require__(181); + +var _core_utils = __w_pdfjs_require__(131); + +var _fonts_utils = __w_pdfjs_require__(163); + +const getXFAFontMap = (0, _core_utils.getLookupTableFactory)(function (t) { + t["MyriadPro-Regular"] = t["PdfJS-Fallback-Regular"] = { + name: "LiberationSans-Regular", + factors: _myriadpro_factors.MyriadProRegularFactors, + baseWidths: _liberationsans_widths.LiberationSansRegularWidths, + baseMapping: _liberationsans_widths.LiberationSansRegularMapping, + metrics: _myriadpro_factors.MyriadProRegularMetrics + }; + t["MyriadPro-Bold"] = t["PdfJS-Fallback-Bold"] = { + name: "LiberationSans-Bold", + factors: _myriadpro_factors.MyriadProBoldFactors, + baseWidths: _liberationsans_widths.LiberationSansBoldWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldMapping, + metrics: _myriadpro_factors.MyriadProBoldMetrics + }; + t["MyriadPro-It"] = t["MyriadPro-Italic"] = t["PdfJS-Fallback-Italic"] = { + name: "LiberationSans-Italic", + factors: _myriadpro_factors.MyriadProItalicFactors, + baseWidths: _liberationsans_widths.LiberationSansItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansItalicMapping, + metrics: _myriadpro_factors.MyriadProItalicMetrics + }; + t["MyriadPro-BoldIt"] = t["MyriadPro-BoldItalic"] = t["PdfJS-Fallback-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: _myriadpro_factors.MyriadProBoldItalicFactors, + baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping, + metrics: _myriadpro_factors.MyriadProBoldItalicMetrics + }; + t.ArialMT = t.Arial = t["Arial-Regular"] = { + name: "LiberationSans-Regular", + baseWidths: _liberationsans_widths.LiberationSansRegularWidths, + baseMapping: _liberationsans_widths.LiberationSansRegularMapping + }; + t["Arial-BoldMT"] = t["Arial-Bold"] = { + name: "LiberationSans-Bold", + baseWidths: _liberationsans_widths.LiberationSansBoldWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldMapping + }; + t["Arial-ItalicMT"] = t["Arial-Italic"] = { + name: "LiberationSans-Italic", + baseWidths: _liberationsans_widths.LiberationSansItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansItalicMapping + }; + t["Arial-BoldItalicMT"] = t["Arial-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping + }; + t["Calibri-Regular"] = { + name: "LiberationSans-Regular", + factors: _calibri_factors.CalibriRegularFactors, + baseWidths: _liberationsans_widths.LiberationSansRegularWidths, + baseMapping: _liberationsans_widths.LiberationSansRegularMapping, + metrics: _calibri_factors.CalibriRegularMetrics + }; + t["Calibri-Bold"] = { + name: "LiberationSans-Bold", + factors: _calibri_factors.CalibriBoldFactors, + baseWidths: _liberationsans_widths.LiberationSansBoldWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldMapping, + metrics: _calibri_factors.CalibriBoldMetrics + }; + t["Calibri-Italic"] = { + name: "LiberationSans-Italic", + factors: _calibri_factors.CalibriItalicFactors, + baseWidths: _liberationsans_widths.LiberationSansItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansItalicMapping, + metrics: _calibri_factors.CalibriItalicMetrics + }; + t["Calibri-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: _calibri_factors.CalibriBoldItalicFactors, + baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping, + metrics: _calibri_factors.CalibriBoldItalicMetrics + }; + t["Segoeui-Regular"] = { + name: "LiberationSans-Regular", + factors: _segoeui_factors.SegoeuiRegularFactors, + baseWidths: _liberationsans_widths.LiberationSansRegularWidths, + baseMapping: _liberationsans_widths.LiberationSansRegularMapping, + metrics: _segoeui_factors.SegoeuiRegularMetrics + }; + t["Segoeui-Bold"] = { + name: "LiberationSans-Bold", + factors: _segoeui_factors.SegoeuiBoldFactors, + baseWidths: _liberationsans_widths.LiberationSansBoldWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldMapping, + metrics: _segoeui_factors.SegoeuiBoldMetrics + }; + t["Segoeui-Italic"] = { + name: "LiberationSans-Italic", + factors: _segoeui_factors.SegoeuiItalicFactors, + baseWidths: _liberationsans_widths.LiberationSansItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansItalicMapping, + metrics: _segoeui_factors.SegoeuiItalicMetrics + }; + t["Segoeui-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: _segoeui_factors.SegoeuiBoldItalicFactors, + baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping, + metrics: _segoeui_factors.SegoeuiBoldItalicMetrics + }; + t["Helvetica-Regular"] = t.Helvetica = { + name: "LiberationSans-Regular", + factors: _helvetica_factors.HelveticaRegularFactors, + baseWidths: _liberationsans_widths.LiberationSansRegularWidths, + baseMapping: _liberationsans_widths.LiberationSansRegularMapping, + metrics: _helvetica_factors.HelveticaRegularMetrics + }; + t["Helvetica-Bold"] = { + name: "LiberationSans-Bold", + factors: _helvetica_factors.HelveticaBoldFactors, + baseWidths: _liberationsans_widths.LiberationSansBoldWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldMapping, + metrics: _helvetica_factors.HelveticaBoldMetrics + }; + t["Helvetica-Italic"] = { + name: "LiberationSans-Italic", + factors: _helvetica_factors.HelveticaItalicFactors, + baseWidths: _liberationsans_widths.LiberationSansItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansItalicMapping, + metrics: _helvetica_factors.HelveticaItalicMetrics + }; + t["Helvetica-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: _helvetica_factors.HelveticaBoldItalicFactors, + baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping, + metrics: _helvetica_factors.HelveticaBoldItalicMetrics + }; }); + +function getXfaFontName(name) { + const fontName = (0, _fonts_utils.normalizeFontName)(name); + const fontMap = getXFAFontMap(); + return fontMap[fontName]; +} + +function getXfaFontWidths(name) { + const info = getXfaFontName(name); + + if (!info) { + return null; + } + + const { + baseWidths, + baseMapping, + factors + } = info; + let rescaledBaseWidths; + + if (!factors) { + rescaledBaseWidths = baseWidths; + } else { + rescaledBaseWidths = baseWidths.map((w, i) => w * factors[i]); + } + + let currentCode = -2; + let currentArray; + const newWidths = []; + + for (const [unicode, glyphIndex] of baseMapping.map((charUnicode, index) => [charUnicode, index]).sort((_ref, _ref2) => { + let [unicode1] = _ref; + let [unicode2] = _ref2; + return unicode1 - unicode2; + })) { + if (unicode === -1) { + continue; + } + + if (unicode === currentCode + 1) { + currentArray.push(rescaledBaseWidths[glyphIndex]); + currentCode += 1; + } else { + currentCode = unicode; + currentArray = [rescaledBaseWidths[glyphIndex]]; + newWidths.push(unicode, currentArray); + } + } + + return newWidths; +} + +function getXfaFontDict(name) { + const widths = getXfaFontWidths(name); + const dict = new _primitives.Dict(null); + dict.set("BaseFont", _primitives.Name.get(name)); + dict.set("Type", _primitives.Name.get("Font")); + dict.set("Subtype", _primitives.Name.get("CIDFontType2")); + dict.set("Encoding", _primitives.Name.get("Identity-H")); + dict.set("CIDToGIDMap", _primitives.Name.get("Identity")); + dict.set("W", widths); + dict.set("FirstChar", widths[0]); + dict.set("LastChar", widths.at(-2) + widths.at(-1).length - 1); + const descriptor = new _primitives.Dict(null); + dict.set("FontDescriptor", descriptor); + const systemInfo = new _primitives.Dict(null); + systemInfo.set("Ordering", "Identity"); + systemInfo.set("Registry", "Adobe"); + systemInfo.set("Supplement", 0); + dict.set("CIDSystemInfo", systemInfo); + return dict; +} + +/***/ }), +/* 177 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CalibriRegularMetrics = exports.CalibriRegularFactors = exports.CalibriItalicMetrics = exports.CalibriItalicFactors = exports.CalibriBoldMetrics = exports.CalibriBoldItalicMetrics = exports.CalibriBoldItalicFactors = exports.CalibriBoldFactors = void 0; +const CalibriBoldFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795, 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577, 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176, 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401, 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343, 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518, 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785, 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785, 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762, 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785, 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823, 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785, 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958, 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029, 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257, 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943, 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819, 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211, 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813, 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638, 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926, 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1, 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527, 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.CalibriBoldFactors = CalibriBoldFactors; +const CalibriBoldMetrics = { + lineHeight: 1.2207, + lineGap: 0.2207 +}; +exports.CalibriBoldMetrics = CalibriBoldMetrics; +const CalibriBoldItalicFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795, 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577, 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908, 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401, 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411, 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938, 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887, 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411, 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289, 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921, 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331, 1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958, 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908, 0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387, 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346, 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356, 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938, 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466, 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733, 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988, 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581, 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015, 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88323, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794, 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527, 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.CalibriBoldItalicFactors = CalibriBoldItalicFactors; +const CalibriBoldItalicMetrics = { + lineHeight: 1.2207, + lineGap: 0.2207 +}; +exports.CalibriBoldItalicMetrics = CalibriBoldItalicMetrics; +const CalibriItalicFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374, 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306, 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245, 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918, 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562, 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118, 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274, 0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245, 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875, 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105, 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249, 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118, 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776, 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306, 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824, 0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206, 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249, 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782, 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516, 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297, 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507, 0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248, 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309, 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055, 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.CalibriItalicFactors = CalibriItalicFactors; +const CalibriItalicMetrics = { + lineHeight: 1.2207, + lineGap: 0.2207 +}; +exports.CalibriItalicMetrics = CalibriItalicMetrics; +const CalibriRegularFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503, 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306, 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128, 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297, 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469, 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284, 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464, 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469, 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675, 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105, 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872, 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429, 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122, 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692, 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128, 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254, 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275, 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122, 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772, 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018, 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516, 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442, 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181, 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986, 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055, 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.CalibriRegularFactors = CalibriRegularFactors; +const CalibriRegularMetrics = { + lineHeight: 1.2207, + lineGap: 0.2207 +}; +exports.CalibriRegularMetrics = CalibriRegularMetrics; + +/***/ }), +/* 178 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.HelveticaRegularMetrics = exports.HelveticaRegularFactors = exports.HelveticaItalicMetrics = exports.HelveticaItalicFactors = exports.HelveticaBoldMetrics = exports.HelveticaBoldItalicMetrics = exports.HelveticaBoldItalicFactors = exports.HelveticaBoldFactors = void 0; +const HelveticaBoldFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973, 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069, 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001, 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995, 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087, 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056, 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006, 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019, 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942, 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944, 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057, 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994, 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973, 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999, 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041, 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973, 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026, 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.HelveticaBoldFactors = HelveticaBoldFactors; +const HelveticaBoldMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; +exports.HelveticaBoldMetrics = HelveticaBoldMetrics; +const HelveticaBoldItalicFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998, 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022, 1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1, 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064, 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014, 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064, 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948, 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035, 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967, 0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001, 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977, 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001, 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999, 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995, 1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026, 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999, 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973, 0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975, 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.HelveticaBoldItalicFactors = HelveticaBoldItalicFactors; +const HelveticaBoldItalicMetrics = { + lineHeight: 1.35, + lineGap: 0.2 +}; +exports.HelveticaBoldItalicMetrics = HelveticaBoldItalicMetrics; +const HelveticaItalicFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013, 0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022, 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1, 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945, 0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962, 1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036, 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036, 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006, 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001, 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954, 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001, 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016, 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089, 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973, 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1, 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023, 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1, 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1, 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.HelveticaItalicFactors = HelveticaItalicFactors; +const HelveticaItalicMetrics = { + lineHeight: 1.35, + lineGap: 0.2 +}; +exports.HelveticaItalicMetrics = HelveticaItalicMetrics; +const HelveticaRegularFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941, 0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022, 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1, 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978, 0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1, 0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023, 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023, 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006, 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962, 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035, 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053, 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043, 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073, 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1, 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1, 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006, 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1, 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.HelveticaRegularFactors = HelveticaRegularFactors; +const HelveticaRegularMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; +exports.HelveticaRegularMetrics = HelveticaRegularMetrics; + +/***/ }), +/* 179 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.LiberationSansRegularWidths = exports.LiberationSansRegularMapping = exports.LiberationSansItalicWidths = exports.LiberationSansItalicMapping = exports.LiberationSansBoldWidths = exports.LiberationSansBoldMapping = exports.LiberationSansBoldItalicWidths = exports.LiberationSansBoldItalicMapping = void 0; +const LiberationSansBoldWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906, 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722, 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278, 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278, 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753, 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556, 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626, 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730, 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556, 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875, 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417, 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487, 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, 333, 333, 333, 333]; +exports.LiberationSansBoldWidths = LiberationSansBoldWidths; +const LiberationSansBoldMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; +exports.LiberationSansBoldMapping = LiberationSansBoldMapping; +const LiberationSansBoldItalicWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906, 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722, 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278, 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278, 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773, 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556, 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643, 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729, 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556, 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885, 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469, 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575, 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600, 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, 333, 333, 333, 333]; +exports.LiberationSansBoldItalicWidths = LiberationSansBoldItalicWidths; +const LiberationSansBoldItalicMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; +exports.LiberationSansBoldItalicMapping = LiberationSansBoldItalicMapping; +const LiberationSansItalicWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278, 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556, 400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846, 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667, 667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278, 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222, 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728, 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500, 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614, 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727, 673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556, 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835, 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378, 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492, 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, 316, 328, 398, 285]; +exports.LiberationSansItalicWidths = LiberationSansItalicWidths; +const LiberationSansItalicMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; +exports.LiberationSansItalicMapping = LiberationSansItalicMapping; +const LiberationSansRegularWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278, 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556, 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838, 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667, 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278, 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222, 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713, 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500, 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604, 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740, 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556, 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823, 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365, 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489, 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, 316, 328, 398, 285]; +exports.LiberationSansRegularWidths = LiberationSansRegularWidths; +const LiberationSansRegularMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; +exports.LiberationSansRegularMapping = LiberationSansRegularMapping; + +/***/ }), +/* 180 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MyriadProRegularMetrics = exports.MyriadProRegularFactors = exports.MyriadProItalicMetrics = exports.MyriadProItalicFactors = exports.MyriadProBoldMetrics = exports.MyriadProBoldItalicMetrics = exports.MyriadProBoldItalicFactors = exports.MyriadProBoldFactors = void 0; +const MyriadProBoldFactors = [1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884, 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582, 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275, 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179, 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083, 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903, 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933, 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407, 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938, 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793, 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295, 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1, 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061, 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179, 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438, 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938, 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446, 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039, 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768, 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1, 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1, 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446, 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646, 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713, 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083, 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446, 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1, 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261, 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019, 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156, 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704, 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933, 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933, 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367, 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774, 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083, 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582, 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1, 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169, 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.MyriadProBoldFactors = MyriadProBoldFactors; +const MyriadProBoldMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; +exports.MyriadProBoldMetrics = MyriadProBoldMetrics; +const MyriadProBoldItalicFactors = [1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222, 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582, 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655, 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222, 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605, 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058, 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796, 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168, 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236, 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276, 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074, 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1, 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043, 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729, 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621, 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058, 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216, 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381, 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364, 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783, 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523, 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036, 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726, 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222, 0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513, 0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077, 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651, 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236, 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1, 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275, 1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927, 0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805, 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655, 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275, 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886, 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276, 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699, 0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646, 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646, 0.85923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694, 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896, 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1, 1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.MyriadProBoldItalicFactors = MyriadProBoldItalicFactors; +const MyriadProBoldItalicMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; +exports.MyriadProBoldItalicMetrics = MyriadProBoldItalicMetrics; +const MyriadProItalicFactors = [1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307, 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945, 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058, 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125, 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588, 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832, 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012, 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075, 1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493, 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537, 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537, 0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353, 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446, 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864, 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588, 0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512, 0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424, 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882, 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1, 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728, 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475, 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865, 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867, 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866, 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512, 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773, 0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012, 1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901, 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947, 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588, 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701, 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386, 0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298, 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787, 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737, 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859, 0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219, 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027, 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1, 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.MyriadProItalicFactors = MyriadProItalicFactors; +const MyriadProItalicMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; +exports.MyriadProItalicMetrics = MyriadProItalicMetrics; +const MyriadProRegularFactors = [1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706, 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002, 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051, 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761, 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111, 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231, 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938, 1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137, 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034, 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332, 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519, 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339, 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023, 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858, 0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611, 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896, 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224, 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595, 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755, 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284, 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377, 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441, 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991, 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434, 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1, 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856, 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936, 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138, 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226, 0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023, 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297, 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157, 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088, 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938, 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007, 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915, 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1, 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903, 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241, 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1, 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.MyriadProRegularFactors = MyriadProRegularFactors; +const MyriadProRegularMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; +exports.MyriadProRegularMetrics = MyriadProRegularMetrics; + +/***/ }), +/* 181 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SegoeuiRegularMetrics = exports.SegoeuiRegularFactors = exports.SegoeuiItalicMetrics = exports.SegoeuiItalicFactors = exports.SegoeuiBoldMetrics = exports.SegoeuiBoldItalicMetrics = exports.SegoeuiBoldItalicFactors = exports.SegoeuiBoldFactors = void 0; +const SegoeuiBoldFactors = [1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647, 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847, 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406, 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489, 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361, 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304, 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527, 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862, 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579, 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727, 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826, 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866, 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795, 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426, 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135, 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278, 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826, 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1, 1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285, 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418, 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251, 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931, 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752, 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733, 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923, 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912, 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167, 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134, 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889, 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996, 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008, 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008, 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434, 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439, 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511, 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1, 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633, 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1, 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416, 1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.SegoeuiBoldFactors = SegoeuiBoldFactors; +const SegoeuiBoldMetrics = { + lineHeight: 1.33008, + lineGap: 0 +}; +exports.SegoeuiBoldMetrics = SegoeuiBoldMetrics; +const SegoeuiBoldItalicFactors = [1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953, 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378, 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723, 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128, 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527, 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293, 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042, 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236, 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922, 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107, 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754, 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047, 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356, 1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429, 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135, 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236, 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165, 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922, 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363, 1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042, 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236, 1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922, 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552, 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641, 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168, 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385, 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126, 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205, 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815, 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552, 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945, 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961, 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518, 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377, 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514, 0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09097, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777, 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1, 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633, 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1, 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279, 0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416, 1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.SegoeuiBoldItalicFactors = SegoeuiBoldItalicFactors; +const SegoeuiBoldItalicMetrics = { + lineHeight: 1.33008, + lineGap: 0 +}; +exports.SegoeuiBoldItalicMetrics = SegoeuiBoldItalicMetrics; +const SegoeuiItalicFactors = [1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373, 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383, 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308, 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016, 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989, 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143, 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627, 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454, 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225, 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973, 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748, 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781, 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971, 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836, 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782, 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402, 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146, 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225, 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351, 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729, 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454, 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484, 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231, 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989, 1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225, 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1, 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043, 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498, 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965, 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2, 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924, 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642, 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284, 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205, 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119, 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679, 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675, 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973, 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945, 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621, 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836, 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622, 1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.SegoeuiItalicFactors = SegoeuiItalicFactors; +const SegoeuiItalicMetrics = { + lineHeight: 1.33008, + lineGap: 0 +}; +exports.SegoeuiItalicMetrics = SegoeuiItalicMetrics; +const SegoeuiRegularFactors = [1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985, 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084, 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831, 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968, 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433, 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484, 1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011, 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399, 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043, 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912, 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808, 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032, 0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734, 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782, 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714, 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383, 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527, 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923, 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706, 0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093, 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1, 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011, 1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298, 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444, 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066, 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771, 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287, 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571, 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771, 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572, 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366, 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491, 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796, 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287, 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424, 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424, 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087, 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205, 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965, 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196, 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714, 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1, 1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.SegoeuiRegularFactors = SegoeuiRegularFactors; +const SegoeuiRegularMetrics = { + lineHeight: 1.33008, + lineGap: 0 +}; +exports.SegoeuiRegularMetrics = SegoeuiRegularMetrics; + +/***/ }), +/* 182 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PostScriptEvaluator = exports.PostScriptCompiler = exports.PDFFunctionFactory = void 0; +exports.isPDFFunction = isPDFFunction; + +var _primitives = __w_pdfjs_require__(130); + +var _util = __w_pdfjs_require__(2); + +var _ps_parser = __w_pdfjs_require__(183); + +var _base_stream = __w_pdfjs_require__(132); + +var _image_utils = __w_pdfjs_require__(184); + +class PDFFunctionFactory { + constructor(_ref) { + let { + xref, + isEvalSupported = true + } = _ref; + this.xref = xref; + this.isEvalSupported = isEvalSupported !== false; + } + + create(fn) { + const cachedFunction = this.getCached(fn); + + if (cachedFunction) { + return cachedFunction; + } + + const parsedFunction = PDFFunction.parse({ + xref: this.xref, + isEvalSupported: this.isEvalSupported, + fn: fn instanceof _primitives.Ref ? this.xref.fetch(fn) : fn + }); + + this._cache(fn, parsedFunction); + + return parsedFunction; + } + + createFromArray(fnObj) { + const cachedFunction = this.getCached(fnObj); + + if (cachedFunction) { + return cachedFunction; + } + + const parsedFunction = PDFFunction.parseArray({ + xref: this.xref, + isEvalSupported: this.isEvalSupported, + fnObj: fnObj instanceof _primitives.Ref ? this.xref.fetch(fnObj) : fnObj + }); + + this._cache(fnObj, parsedFunction); + + return parsedFunction; + } + + getCached(cacheKey) { + let fnRef; + + if (cacheKey instanceof _primitives.Ref) { + fnRef = cacheKey; + } else if (cacheKey instanceof _primitives.Dict) { + fnRef = cacheKey.objId; + } else if (cacheKey instanceof _base_stream.BaseStream) { + fnRef = cacheKey.dict && cacheKey.dict.objId; + } + + if (fnRef) { + const localFunction = this._localFunctionCache.getByRef(fnRef); + + if (localFunction) { + return localFunction; + } + } + + return null; + } + + _cache(cacheKey, parsedFunction) { + if (!parsedFunction) { + throw new Error('PDFFunctionFactory._cache - expected "parsedFunction" argument.'); + } + + let fnRef; + + if (cacheKey instanceof _primitives.Ref) { + fnRef = cacheKey; + } else if (cacheKey instanceof _primitives.Dict) { + fnRef = cacheKey.objId; + } else if (cacheKey instanceof _base_stream.BaseStream) { + fnRef = cacheKey.dict && cacheKey.dict.objId; + } + + if (fnRef) { + this._localFunctionCache.set(null, fnRef, parsedFunction); + } + } + + get _localFunctionCache() { + return (0, _util.shadow)(this, "_localFunctionCache", new _image_utils.LocalFunctionCache()); + } + +} + +exports.PDFFunctionFactory = PDFFunctionFactory; + +function toNumberArray(arr) { + if (!Array.isArray(arr)) { + return null; + } + + const length = arr.length; + + for (let i = 0; i < length; i++) { + if (typeof arr[i] !== "number") { + const result = new Array(length); + + for (let j = 0; j < length; j++) { + result[j] = +arr[j]; + } + + return result; + } + } + + return arr; +} + +class PDFFunction { + static getSampleArray(size, outputSize, bps, stream) { + let i, ii; + let length = 1; + + for (i = 0, ii = size.length; i < ii; i++) { + length *= size[i]; + } + + length *= outputSize; + const array = new Array(length); + let codeSize = 0; + let codeBuf = 0; + const sampleMul = 1.0 / (2.0 ** bps - 1); + const strBytes = stream.getBytes((length * bps + 7) / 8); + let strIdx = 0; + + for (i = 0; i < length; i++) { + while (codeSize < bps) { + codeBuf <<= 8; + codeBuf |= strBytes[strIdx++]; + codeSize += 8; + } + + codeSize -= bps; + array[i] = (codeBuf >> codeSize) * sampleMul; + codeBuf &= (1 << codeSize) - 1; + } + + return array; + } + + static parse(_ref2) { + let { + xref, + isEvalSupported, + fn + } = _ref2; + const dict = fn.dict || fn; + const typeNum = dict.get("FunctionType"); + + switch (typeNum) { + case 0: + return this.constructSampled({ + xref, + isEvalSupported, + fn, + dict + }); + + case 1: + break; + + case 2: + return this.constructInterpolated({ + xref, + isEvalSupported, + dict + }); + + case 3: + return this.constructStiched({ + xref, + isEvalSupported, + dict + }); + + case 4: + return this.constructPostScript({ + xref, + isEvalSupported, + fn, + dict + }); + } + + throw new _util.FormatError("Unknown type of function"); + } + + static parseArray(_ref3) { + let { + xref, + isEvalSupported, + fnObj + } = _ref3; + + if (!Array.isArray(fnObj)) { + return this.parse({ + xref, + isEvalSupported, + fn: fnObj + }); + } + + const fnArray = []; + + for (let j = 0, jj = fnObj.length; j < jj; j++) { + fnArray.push(this.parse({ + xref, + isEvalSupported, + fn: xref.fetchIfRef(fnObj[j]) + })); + } + + return function (src, srcOffset, dest, destOffset) { + for (let i = 0, ii = fnArray.length; i < ii; i++) { + fnArray[i](src, srcOffset, dest, destOffset + i); + } + }; + } + + static constructSampled(_ref4) { + let { + xref, + isEvalSupported, + fn, + dict + } = _ref4; + + function toMultiArray(arr) { + const inputLength = arr.length; + const out = []; + let index = 0; + + for (let i = 0; i < inputLength; i += 2) { + out[index++] = [arr[i], arr[i + 1]]; + } + + return out; + } + + function interpolate(x, xmin, xmax, ymin, ymax) { + return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin)); + } + + let domain = toNumberArray(dict.getArray("Domain")); + let range = toNumberArray(dict.getArray("Range")); + + if (!domain || !range) { + throw new _util.FormatError("No domain or range"); + } + + const inputSize = domain.length / 2; + const outputSize = range.length / 2; + domain = toMultiArray(domain); + range = toMultiArray(range); + const size = toNumberArray(dict.getArray("Size")); + const bps = dict.get("BitsPerSample"); + const order = dict.get("Order") || 1; + + if (order !== 1) { + (0, _util.info)("No support for cubic spline interpolation: " + order); + } + + let encode = toNumberArray(dict.getArray("Encode")); + + if (!encode) { + encode = []; + + for (let i = 0; i < inputSize; ++i) { + encode.push([0, size[i] - 1]); + } + } else { + encode = toMultiArray(encode); + } + + let decode = toNumberArray(dict.getArray("Decode")); + + if (!decode) { + decode = range; + } else { + decode = toMultiArray(decode); + } + + const samples = this.getSampleArray(size, outputSize, bps, fn); + return function constructSampledFn(src, srcOffset, dest, destOffset) { + const cubeVertices = 1 << inputSize; + const cubeN = new Float64Array(cubeVertices); + const cubeVertex = new Uint32Array(cubeVertices); + let i, j; + + for (j = 0; j < cubeVertices; j++) { + cubeN[j] = 1; + } + + let k = outputSize, + pos = 1; + + for (i = 0; i < inputSize; ++i) { + const domain_2i = domain[i][0]; + const domain_2i_1 = domain[i][1]; + const xi = Math.min(Math.max(src[srcOffset + i], domain_2i), domain_2i_1); + let e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]); + const size_i = size[i]; + e = Math.min(Math.max(e, 0), size_i - 1); + const e0 = e < size_i - 1 ? Math.floor(e) : e - 1; + const n0 = e0 + 1 - e; + const n1 = e - e0; + const offset0 = e0 * k; + const offset1 = offset0 + k; + + for (j = 0; j < cubeVertices; j++) { + if (j & pos) { + cubeN[j] *= n1; + cubeVertex[j] += offset1; + } else { + cubeN[j] *= n0; + cubeVertex[j] += offset0; + } + } + + k *= size_i; + pos <<= 1; + } + + for (j = 0; j < outputSize; ++j) { + let rj = 0; + + for (i = 0; i < cubeVertices; i++) { + rj += samples[cubeVertex[i] + j] * cubeN[i]; + } + + rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]); + dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]); + } + }; + } + + static constructInterpolated(_ref5) { + let { + xref, + isEvalSupported, + dict + } = _ref5; + const c0 = toNumberArray(dict.getArray("C0")) || [0]; + const c1 = toNumberArray(dict.getArray("C1")) || [1]; + const n = dict.get("N"); + const diff = []; + + for (let i = 0, ii = c0.length; i < ii; ++i) { + diff.push(c1[i] - c0[i]); + } + + const length = diff.length; + return function constructInterpolatedFn(src, srcOffset, dest, destOffset) { + const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n; + + for (let j = 0; j < length; ++j) { + dest[destOffset + j] = c0[j] + x * diff[j]; + } + }; + } + + static constructStiched(_ref6) { + let { + xref, + isEvalSupported, + dict + } = _ref6; + const domain = toNumberArray(dict.getArray("Domain")); + + if (!domain) { + throw new _util.FormatError("No domain"); + } + + const inputSize = domain.length / 2; + + if (inputSize !== 1) { + throw new _util.FormatError("Bad domain for stiched function"); + } + + const fnRefs = dict.get("Functions"); + const fns = []; + + for (let i = 0, ii = fnRefs.length; i < ii; ++i) { + fns.push(this.parse({ + xref, + isEvalSupported, + fn: xref.fetchIfRef(fnRefs[i]) + })); + } + + const bounds = toNumberArray(dict.getArray("Bounds")); + const encode = toNumberArray(dict.getArray("Encode")); + const tmpBuf = new Float32Array(1); + return function constructStichedFn(src, srcOffset, dest, destOffset) { + const clip = function constructStichedFromIRClip(v, min, max) { + if (v > max) { + v = max; + } else if (v < min) { + v = min; + } + + return v; + }; + + const v = clip(src[srcOffset], domain[0], domain[1]); + const length = bounds.length; + let i; + + for (i = 0; i < length; ++i) { + if (v < bounds[i]) { + break; + } + } + + let dmin = domain[0]; + + if (i > 0) { + dmin = bounds[i - 1]; + } + + let dmax = domain[1]; + + if (i < bounds.length) { + dmax = bounds[i]; + } + + const rmin = encode[2 * i]; + const rmax = encode[2 * i + 1]; + tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin); + fns[i](tmpBuf, 0, dest, destOffset); + }; + } + + static constructPostScript(_ref7) { + let { + xref, + isEvalSupported, + fn, + dict + } = _ref7; + const domain = toNumberArray(dict.getArray("Domain")); + const range = toNumberArray(dict.getArray("Range")); + + if (!domain) { + throw new _util.FormatError("No domain."); + } + + if (!range) { + throw new _util.FormatError("No range."); + } + + const lexer = new _ps_parser.PostScriptLexer(fn); + const parser = new _ps_parser.PostScriptParser(lexer); + const code = parser.parse(); + + if (isEvalSupported && _util.FeatureTest.isEvalSupported) { + const compiled = new PostScriptCompiler().compile(code, domain, range); + + if (compiled) { + return new Function("src", "srcOffset", "dest", "destOffset", compiled); + } + } + + (0, _util.info)("Unable to compile PS function"); + const numOutputs = range.length >> 1; + const numInputs = domain.length >> 1; + const evaluator = new PostScriptEvaluator(code); + const cache = Object.create(null); + const MAX_CACHE_SIZE = 2048 * 4; + let cache_available = MAX_CACHE_SIZE; + const tmpBuf = new Float32Array(numInputs); + return function constructPostScriptFn(src, srcOffset, dest, destOffset) { + let i, value; + let key = ""; + const input = tmpBuf; + + for (i = 0; i < numInputs; i++) { + value = src[srcOffset + i]; + input[i] = value; + key += value + "_"; + } + + const cachedValue = cache[key]; + + if (cachedValue !== undefined) { + dest.set(cachedValue, destOffset); + return; + } + + const output = new Float32Array(numOutputs); + const stack = evaluator.execute(input); + const stackIndex = stack.length - numOutputs; + + for (i = 0; i < numOutputs; i++) { + value = stack[stackIndex + i]; + let bound = range[i * 2]; + + if (value < bound) { + value = bound; + } else { + bound = range[i * 2 + 1]; + + if (value > bound) { + value = bound; + } + } + + output[i] = value; + } + + if (cache_available > 0) { + cache_available--; + cache[key] = output; + } + + dest.set(output, destOffset); + }; + } + +} + +function isPDFFunction(v) { + let fnDict; + + if (typeof v !== "object") { + return false; + } else if (v instanceof _primitives.Dict) { + fnDict = v; + } else if (v instanceof _base_stream.BaseStream) { + fnDict = v.dict; + } else { + return false; + } + + return fnDict.has("FunctionType"); +} + +class PostScriptStack { + static get MAX_STACK_SIZE() { + return (0, _util.shadow)(this, "MAX_STACK_SIZE", 100); + } + + constructor(initialStack) { + this.stack = !initialStack ? [] : Array.prototype.slice.call(initialStack, 0); + } + + push(value) { + if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) { + throw new Error("PostScript function stack overflow."); + } + + this.stack.push(value); + } + + pop() { + if (this.stack.length <= 0) { + throw new Error("PostScript function stack underflow."); + } + + return this.stack.pop(); + } + + copy(n) { + if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) { + throw new Error("PostScript function stack overflow."); + } + + const stack = this.stack; + + for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) { + stack.push(stack[i]); + } + } + + index(n) { + this.push(this.stack[this.stack.length - n - 1]); + } + + roll(n, p) { + const stack = this.stack; + const l = stack.length - n; + const r = stack.length - 1; + const c = l + (p - Math.floor(p / n) * n); + + for (let i = l, j = r; i < j; i++, j--) { + const t = stack[i]; + stack[i] = stack[j]; + stack[j] = t; + } + + for (let i = l, j = c - 1; i < j; i++, j--) { + const t = stack[i]; + stack[i] = stack[j]; + stack[j] = t; + } + + for (let i = c, j = r; i < j; i++, j--) { + const t = stack[i]; + stack[i] = stack[j]; + stack[j] = t; + } + } + +} + +class PostScriptEvaluator { + constructor(operators) { + this.operators = operators; + } + + execute(initialStack) { + const stack = new PostScriptStack(initialStack); + let counter = 0; + const operators = this.operators; + const length = operators.length; + let operator, a, b; + + while (counter < length) { + operator = operators[counter++]; + + if (typeof operator === "number") { + stack.push(operator); + continue; + } + + switch (operator) { + case "jz": + b = stack.pop(); + a = stack.pop(); + + if (!a) { + counter = b; + } + + break; + + case "j": + a = stack.pop(); + counter = a; + break; + + case "abs": + a = stack.pop(); + stack.push(Math.abs(a)); + break; + + case "add": + b = stack.pop(); + a = stack.pop(); + stack.push(a + b); + break; + + case "and": + b = stack.pop(); + a = stack.pop(); + + if (typeof a === "boolean" && typeof b === "boolean") { + stack.push(a && b); + } else { + stack.push(a & b); + } + + break; + + case "atan": + a = stack.pop(); + stack.push(Math.atan(a)); + break; + + case "bitshift": + b = stack.pop(); + a = stack.pop(); + + if (a > 0) { + stack.push(a << b); + } else { + stack.push(a >> b); + } + + break; + + case "ceiling": + a = stack.pop(); + stack.push(Math.ceil(a)); + break; + + case "copy": + a = stack.pop(); + stack.copy(a); + break; + + case "cos": + a = stack.pop(); + stack.push(Math.cos(a)); + break; + + case "cvi": + a = stack.pop() | 0; + stack.push(a); + break; + + case "cvr": + break; + + case "div": + b = stack.pop(); + a = stack.pop(); + stack.push(a / b); + break; + + case "dup": + stack.copy(1); + break; + + case "eq": + b = stack.pop(); + a = stack.pop(); + stack.push(a === b); + break; + + case "exch": + stack.roll(2, 1); + break; + + case "exp": + b = stack.pop(); + a = stack.pop(); + stack.push(a ** b); + break; + + case "false": + stack.push(false); + break; + + case "floor": + a = stack.pop(); + stack.push(Math.floor(a)); + break; + + case "ge": + b = stack.pop(); + a = stack.pop(); + stack.push(a >= b); + break; + + case "gt": + b = stack.pop(); + a = stack.pop(); + stack.push(a > b); + break; + + case "idiv": + b = stack.pop(); + a = stack.pop(); + stack.push(a / b | 0); + break; + + case "index": + a = stack.pop(); + stack.index(a); + break; + + case "le": + b = stack.pop(); + a = stack.pop(); + stack.push(a <= b); + break; + + case "ln": + a = stack.pop(); + stack.push(Math.log(a)); + break; + + case "log": + a = stack.pop(); + stack.push(Math.log(a) / Math.LN10); + break; + + case "lt": + b = stack.pop(); + a = stack.pop(); + stack.push(a < b); + break; + + case "mod": + b = stack.pop(); + a = stack.pop(); + stack.push(a % b); + break; + + case "mul": + b = stack.pop(); + a = stack.pop(); + stack.push(a * b); + break; + + case "ne": + b = stack.pop(); + a = stack.pop(); + stack.push(a !== b); + break; + + case "neg": + a = stack.pop(); + stack.push(-a); + break; + + case "not": + a = stack.pop(); + + if (typeof a === "boolean") { + stack.push(!a); + } else { + stack.push(~a); + } + + break; + + case "or": + b = stack.pop(); + a = stack.pop(); + + if (typeof a === "boolean" && typeof b === "boolean") { + stack.push(a || b); + } else { + stack.push(a | b); + } + + break; + + case "pop": + stack.pop(); + break; + + case "roll": + b = stack.pop(); + a = stack.pop(); + stack.roll(a, b); + break; + + case "round": + a = stack.pop(); + stack.push(Math.round(a)); + break; + + case "sin": + a = stack.pop(); + stack.push(Math.sin(a)); + break; + + case "sqrt": + a = stack.pop(); + stack.push(Math.sqrt(a)); + break; + + case "sub": + b = stack.pop(); + a = stack.pop(); + stack.push(a - b); + break; + + case "true": + stack.push(true); + break; + + case "truncate": + a = stack.pop(); + a = a < 0 ? Math.ceil(a) : Math.floor(a); + stack.push(a); + break; + + case "xor": + b = stack.pop(); + a = stack.pop(); + + if (typeof a === "boolean" && typeof b === "boolean") { + stack.push(a !== b); + } else { + stack.push(a ^ b); + } + + break; + + default: + throw new _util.FormatError(`Unknown operator ${operator}`); + } + } + + return stack.stack; + } + +} + +exports.PostScriptEvaluator = PostScriptEvaluator; + +class AstNode { + constructor(type) { + this.type = type; + } + + visit(visitor) { + (0, _util.unreachable)("abstract method"); + } + +} + +class AstArgument extends AstNode { + constructor(index, min, max) { + super("args"); + this.index = index; + this.min = min; + this.max = max; + } + + visit(visitor) { + visitor.visitArgument(this); + } + +} + +class AstLiteral extends AstNode { + constructor(number) { + super("literal"); + this.number = number; + this.min = number; + this.max = number; + } + + visit(visitor) { + visitor.visitLiteral(this); + } + +} + +class AstBinaryOperation extends AstNode { + constructor(op, arg1, arg2, min, max) { + super("binary"); + this.op = op; + this.arg1 = arg1; + this.arg2 = arg2; + this.min = min; + this.max = max; + } + + visit(visitor) { + visitor.visitBinaryOperation(this); + } + +} + +class AstMin extends AstNode { + constructor(arg, max) { + super("max"); + this.arg = arg; + this.min = arg.min; + this.max = max; + } + + visit(visitor) { + visitor.visitMin(this); + } + +} + +class AstVariable extends AstNode { + constructor(index, min, max) { + super("var"); + this.index = index; + this.min = min; + this.max = max; + } + + visit(visitor) { + visitor.visitVariable(this); + } + +} + +class AstVariableDefinition extends AstNode { + constructor(variable, arg) { + super("definition"); + this.variable = variable; + this.arg = arg; + } + + visit(visitor) { + visitor.visitVariableDefinition(this); + } + +} + +class ExpressionBuilderVisitor { + constructor() { + this.parts = []; + } + + visitArgument(arg) { + this.parts.push("Math.max(", arg.min, ", Math.min(", arg.max, ", src[srcOffset + ", arg.index, "]))"); + } + + visitVariable(variable) { + this.parts.push("v", variable.index); + } + + visitLiteral(literal) { + this.parts.push(literal.number); + } + + visitBinaryOperation(operation) { + this.parts.push("("); + operation.arg1.visit(this); + this.parts.push(" ", operation.op, " "); + operation.arg2.visit(this); + this.parts.push(")"); + } + + visitVariableDefinition(definition) { + this.parts.push("var "); + definition.variable.visit(this); + this.parts.push(" = "); + definition.arg.visit(this); + this.parts.push(";"); + } + + visitMin(max) { + this.parts.push("Math.min("); + max.arg.visit(this); + this.parts.push(", ", max.max, ")"); + } + + toString() { + return this.parts.join(""); + } + +} + +function buildAddOperation(num1, num2) { + if (num2.type === "literal" && num2.number === 0) { + return num1; + } + + if (num1.type === "literal" && num1.number === 0) { + return num2; + } + + if (num2.type === "literal" && num1.type === "literal") { + return new AstLiteral(num1.number + num2.number); + } + + return new AstBinaryOperation("+", num1, num2, num1.min + num2.min, num1.max + num2.max); +} + +function buildMulOperation(num1, num2) { + if (num2.type === "literal") { + if (num2.number === 0) { + return new AstLiteral(0); + } else if (num2.number === 1) { + return num1; + } else if (num1.type === "literal") { + return new AstLiteral(num1.number * num2.number); + } + } + + if (num1.type === "literal") { + if (num1.number === 0) { + return new AstLiteral(0); + } else if (num1.number === 1) { + return num2; + } + } + + const min = Math.min(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max); + const max = Math.max(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max); + return new AstBinaryOperation("*", num1, num2, min, max); +} + +function buildSubOperation(num1, num2) { + if (num2.type === "literal") { + if (num2.number === 0) { + return num1; + } else if (num1.type === "literal") { + return new AstLiteral(num1.number - num2.number); + } + } + + if (num2.type === "binary" && num2.op === "-" && num1.type === "literal" && num1.number === 1 && num2.arg1.type === "literal" && num2.arg1.number === 1) { + return num2.arg2; + } + + return new AstBinaryOperation("-", num1, num2, num1.min - num2.max, num1.max - num2.min); +} + +function buildMinOperation(num1, max) { + if (num1.min >= max) { + return new AstLiteral(max); + } else if (num1.max <= max) { + return num1; + } + + return new AstMin(num1, max); +} + +class PostScriptCompiler { + compile(code, domain, range) { + const stack = []; + const instructions = []; + const inputSize = domain.length >> 1, + outputSize = range.length >> 1; + let lastRegister = 0; + let n, j; + let num1, num2, ast1, ast2, tmpVar, item; + + for (let i = 0; i < inputSize; i++) { + stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1])); + } + + for (let i = 0, ii = code.length; i < ii; i++) { + item = code[i]; + + if (typeof item === "number") { + stack.push(new AstLiteral(item)); + continue; + } + + switch (item) { + case "add": + if (stack.length < 2) { + return null; + } + + num2 = stack.pop(); + num1 = stack.pop(); + stack.push(buildAddOperation(num1, num2)); + break; + + case "cvr": + if (stack.length < 1) { + return null; + } + + break; + + case "mul": + if (stack.length < 2) { + return null; + } + + num2 = stack.pop(); + num1 = stack.pop(); + stack.push(buildMulOperation(num1, num2)); + break; + + case "sub": + if (stack.length < 2) { + return null; + } + + num2 = stack.pop(); + num1 = stack.pop(); + stack.push(buildSubOperation(num1, num2)); + break; + + case "exch": + if (stack.length < 2) { + return null; + } + + ast1 = stack.pop(); + ast2 = stack.pop(); + stack.push(ast1, ast2); + break; + + case "pop": + if (stack.length < 1) { + return null; + } + + stack.pop(); + break; + + case "index": + if (stack.length < 1) { + return null; + } + + num1 = stack.pop(); + + if (num1.type !== "literal") { + return null; + } + + n = num1.number; + + if (n < 0 || !Number.isInteger(n) || stack.length < n) { + return null; + } + + ast1 = stack[stack.length - n - 1]; + + if (ast1.type === "literal" || ast1.type === "var") { + stack.push(ast1); + break; + } + + tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max); + stack[stack.length - n - 1] = tmpVar; + stack.push(tmpVar); + instructions.push(new AstVariableDefinition(tmpVar, ast1)); + break; + + case "dup": + if (stack.length < 1) { + return null; + } + + if (typeof code[i + 1] === "number" && code[i + 2] === "gt" && code[i + 3] === i + 7 && code[i + 4] === "jz" && code[i + 5] === "pop" && code[i + 6] === code[i + 1]) { + num1 = stack.pop(); + stack.push(buildMinOperation(num1, code[i + 1])); + i += 6; + break; + } + + ast1 = stack.at(-1); + + if (ast1.type === "literal" || ast1.type === "var") { + stack.push(ast1); + break; + } + + tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max); + stack[stack.length - 1] = tmpVar; + stack.push(tmpVar); + instructions.push(new AstVariableDefinition(tmpVar, ast1)); + break; + + case "roll": + if (stack.length < 2) { + return null; + } + + num2 = stack.pop(); + num1 = stack.pop(); + + if (num2.type !== "literal" || num1.type !== "literal") { + return null; + } + + j = num2.number; + n = num1.number; + + if (n <= 0 || !Number.isInteger(n) || !Number.isInteger(j) || stack.length < n) { + return null; + } + + j = (j % n + n) % n; + + if (j === 0) { + break; + } + + Array.prototype.push.apply(stack, stack.splice(stack.length - n, n - j)); + break; + + default: + return null; + } + } + + if (stack.length !== outputSize) { + return null; + } + + const result = []; + + for (const instruction of instructions) { + const statementBuilder = new ExpressionBuilderVisitor(); + instruction.visit(statementBuilder); + result.push(statementBuilder.toString()); + } + + for (let i = 0, ii = stack.length; i < ii; i++) { + const expr = stack[i], + statementBuilder = new ExpressionBuilderVisitor(); + expr.visit(statementBuilder); + const min = range[i * 2], + max = range[i * 2 + 1]; + const out = [statementBuilder.toString()]; + + if (min > expr.min) { + out.unshift("Math.max(", min, ", "); + out.push(")"); + } + + if (max < expr.max) { + out.unshift("Math.min(", max, ", "); + out.push(")"); + } + + out.unshift("dest[destOffset + ", i, "] = "); + out.push(";"); + result.push(out.join("")); + } + + return result.join("\n"); + } + +} + +exports.PostScriptCompiler = PostScriptCompiler; + +/***/ }), +/* 183 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PostScriptParser = exports.PostScriptLexer = void 0; + +var _util = __w_pdfjs_require__(2); + +var _primitives = __w_pdfjs_require__(130); + +var _core_utils = __w_pdfjs_require__(131); + +class PostScriptParser { + constructor(lexer) { + this.lexer = lexer; + this.operators = []; + this.token = null; + this.prev = null; + } + + nextToken() { + this.prev = this.token; + this.token = this.lexer.getToken(); + } + + accept(type) { + if (this.token.type === type) { + this.nextToken(); + return true; + } + + return false; + } + + expect(type) { + if (this.accept(type)) { + return true; + } + + throw new _util.FormatError(`Unexpected symbol: found ${this.token.type} expected ${type}.`); + } + + parse() { + this.nextToken(); + this.expect(PostScriptTokenTypes.LBRACE); + this.parseBlock(); + this.expect(PostScriptTokenTypes.RBRACE); + return this.operators; + } + + parseBlock() { + while (true) { + if (this.accept(PostScriptTokenTypes.NUMBER)) { + this.operators.push(this.prev.value); + } else if (this.accept(PostScriptTokenTypes.OPERATOR)) { + this.operators.push(this.prev.value); + } else if (this.accept(PostScriptTokenTypes.LBRACE)) { + this.parseCondition(); + } else { + return; + } + } + } + + parseCondition() { + const conditionLocation = this.operators.length; + this.operators.push(null, null); + this.parseBlock(); + this.expect(PostScriptTokenTypes.RBRACE); + + if (this.accept(PostScriptTokenTypes.IF)) { + this.operators[conditionLocation] = this.operators.length; + this.operators[conditionLocation + 1] = "jz"; + } else if (this.accept(PostScriptTokenTypes.LBRACE)) { + const jumpLocation = this.operators.length; + this.operators.push(null, null); + const endOfTrue = this.operators.length; + this.parseBlock(); + this.expect(PostScriptTokenTypes.RBRACE); + this.expect(PostScriptTokenTypes.IFELSE); + this.operators[jumpLocation] = this.operators.length; + this.operators[jumpLocation + 1] = "j"; + this.operators[conditionLocation] = endOfTrue; + this.operators[conditionLocation + 1] = "jz"; + } else { + throw new _util.FormatError("PS Function: error parsing conditional."); + } + } + +} + +exports.PostScriptParser = PostScriptParser; +const PostScriptTokenTypes = { + LBRACE: 0, + RBRACE: 1, + NUMBER: 2, + OPERATOR: 3, + IF: 4, + IFELSE: 5 +}; + +class PostScriptToken { + static get opCache() { + return (0, _util.shadow)(this, "opCache", Object.create(null)); + } + + constructor(type, value) { + this.type = type; + this.value = value; + } + + static getOperator(op) { + const opValue = PostScriptToken.opCache[op]; + + if (opValue) { + return opValue; + } + + return PostScriptToken.opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op); + } + + static get LBRACE() { + return (0, _util.shadow)(this, "LBRACE", new PostScriptToken(PostScriptTokenTypes.LBRACE, "{")); + } + + static get RBRACE() { + return (0, _util.shadow)(this, "RBRACE", new PostScriptToken(PostScriptTokenTypes.RBRACE, "}")); + } + + static get IF() { + return (0, _util.shadow)(this, "IF", new PostScriptToken(PostScriptTokenTypes.IF, "IF")); + } + + static get IFELSE() { + return (0, _util.shadow)(this, "IFELSE", new PostScriptToken(PostScriptTokenTypes.IFELSE, "IFELSE")); + } + +} + +class PostScriptLexer { + constructor(stream) { + this.stream = stream; + this.nextChar(); + this.strBuf = []; + } + + nextChar() { + return this.currentChar = this.stream.getByte(); + } + + getToken() { + let comment = false; + let ch = this.currentChar; + + while (true) { + if (ch < 0) { + return _primitives.EOF; + } + + if (comment) { + if (ch === 0x0a || ch === 0x0d) { + comment = false; + } + } else if (ch === 0x25) { + comment = true; + } else if (!(0, _core_utils.isWhiteSpace)(ch)) { + break; + } + + ch = this.nextChar(); + } + + switch (ch | 0) { + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x2b: + case 0x2d: + case 0x2e: + return new PostScriptToken(PostScriptTokenTypes.NUMBER, this.getNumber()); + + case 0x7b: + this.nextChar(); + return PostScriptToken.LBRACE; + + case 0x7d: + this.nextChar(); + return PostScriptToken.RBRACE; + } + + const strBuf = this.strBuf; + strBuf.length = 0; + strBuf[0] = String.fromCharCode(ch); + + while ((ch = this.nextChar()) >= 0 && (ch >= 0x41 && ch <= 0x5a || ch >= 0x61 && ch <= 0x7a)) { + strBuf.push(String.fromCharCode(ch)); + } + + const str = strBuf.join(""); + + switch (str.toLowerCase()) { + case "if": + return PostScriptToken.IF; + + case "ifelse": + return PostScriptToken.IFELSE; + + default: + return PostScriptToken.getOperator(str); + } + } + + getNumber() { + let ch = this.currentChar; + const strBuf = this.strBuf; + strBuf.length = 0; + strBuf[0] = String.fromCharCode(ch); + + while ((ch = this.nextChar()) >= 0) { + if (ch >= 0x30 && ch <= 0x39 || ch === 0x2d || ch === 0x2e) { + strBuf.push(String.fromCharCode(ch)); + } else { + break; + } + } + + const value = parseFloat(strBuf.join("")); + + if (isNaN(value)) { + throw new _util.FormatError(`Invalid floating point number: ${value}`); + } + + return value; + } + +} + +exports.PostScriptLexer = PostScriptLexer; + +/***/ }), +/* 184 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.LocalTilingPatternCache = exports.LocalImageCache = exports.LocalGStateCache = exports.LocalFunctionCache = exports.LocalColorSpaceCache = exports.GlobalImageCache = void 0; + +var _util = __w_pdfjs_require__(2); + +var _primitives = __w_pdfjs_require__(130); + +class BaseLocalCache { + constructor(options) { + if (this.constructor === BaseLocalCache) { + (0, _util.unreachable)("Cannot initialize BaseLocalCache."); + } + + this._onlyRefs = (options && options.onlyRefs) === true; + + if (!this._onlyRefs) { + this._nameRefMap = new Map(); + this._imageMap = new Map(); + } + + this._imageCache = new _primitives.RefSetCache(); + } + + getByName(name) { + if (this._onlyRefs) { + (0, _util.unreachable)("Should not call `getByName` method."); + } + + const ref = this._nameRefMap.get(name); + + if (ref) { + return this.getByRef(ref); + } + + return this._imageMap.get(name) || null; + } + + getByRef(ref) { + return this._imageCache.get(ref) || null; + } + + set(name, ref, data) { + (0, _util.unreachable)("Abstract method `set` called."); + } + +} + +class LocalImageCache extends BaseLocalCache { + set(name) { + let ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + let data = arguments.length > 2 ? arguments[2] : undefined; + + if (typeof name !== "string") { + throw new Error('LocalImageCache.set - expected "name" argument.'); + } + + if (ref) { + if (this._imageCache.has(ref)) { + return; + } + + this._nameRefMap.set(name, ref); + + this._imageCache.put(ref, data); + + return; + } + + if (this._imageMap.has(name)) { + return; + } + + this._imageMap.set(name, data); + } + +} + +exports.LocalImageCache = LocalImageCache; + +class LocalColorSpaceCache extends BaseLocalCache { + set() { + let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + let ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + let data = arguments.length > 2 ? arguments[2] : undefined; + + if (typeof name !== "string" && !ref) { + throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.'); + } + + if (ref) { + if (this._imageCache.has(ref)) { + return; + } + + if (name !== null) { + this._nameRefMap.set(name, ref); + } + + this._imageCache.put(ref, data); + + return; + } + + if (this._imageMap.has(name)) { + return; + } + + this._imageMap.set(name, data); + } + +} + +exports.LocalColorSpaceCache = LocalColorSpaceCache; + +class LocalFunctionCache extends BaseLocalCache { + constructor(options) { + super({ + onlyRefs: true + }); + } + + set() { + let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + let ref = arguments.length > 1 ? arguments[1] : undefined; + let data = arguments.length > 2 ? arguments[2] : undefined; + + if (!ref) { + throw new Error('LocalFunctionCache.set - expected "ref" argument.'); + } + + if (this._imageCache.has(ref)) { + return; + } + + this._imageCache.put(ref, data); + } + +} + +exports.LocalFunctionCache = LocalFunctionCache; + +class LocalGStateCache extends BaseLocalCache { + set(name) { + let ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + let data = arguments.length > 2 ? arguments[2] : undefined; + + if (typeof name !== "string") { + throw new Error('LocalGStateCache.set - expected "name" argument.'); + } + + if (ref) { + if (this._imageCache.has(ref)) { + return; + } + + this._nameRefMap.set(name, ref); + + this._imageCache.put(ref, data); + + return; + } + + if (this._imageMap.has(name)) { + return; + } + + this._imageMap.set(name, data); + } + +} + +exports.LocalGStateCache = LocalGStateCache; + +class LocalTilingPatternCache extends BaseLocalCache { + constructor(options) { + super({ + onlyRefs: true + }); + } + + set() { + let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + let ref = arguments.length > 1 ? arguments[1] : undefined; + let data = arguments.length > 2 ? arguments[2] : undefined; + + if (!ref) { + throw new Error('LocalTilingPatternCache.set - expected "ref" argument.'); + } + + if (this._imageCache.has(ref)) { + return; + } + + this._imageCache.put(ref, data); + } + +} + +exports.LocalTilingPatternCache = LocalTilingPatternCache; + +class GlobalImageCache { + static get NUM_PAGES_THRESHOLD() { + return (0, _util.shadow)(this, "NUM_PAGES_THRESHOLD", 2); + } + + static get MIN_IMAGES_TO_CACHE() { + return (0, _util.shadow)(this, "MIN_IMAGES_TO_CACHE", 10); + } + + static get MAX_BYTE_SIZE() { + return (0, _util.shadow)(this, "MAX_BYTE_SIZE", 40e6); + } + + constructor() { + this._refCache = new _primitives.RefSetCache(); + this._imageCache = new _primitives.RefSetCache(); + } + + get _byteSize() { + let byteSize = 0; + + for (const imageData of this._imageCache) { + byteSize += imageData.byteSize; + } + + return byteSize; + } + + get _cacheLimitReached() { + if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) { + return false; + } + + if (this._byteSize < GlobalImageCache.MAX_BYTE_SIZE) { + return false; + } + + return true; + } + + shouldCache(ref, pageIndex) { + const pageIndexSet = this._refCache.get(ref); + + const numPages = pageIndexSet ? pageIndexSet.size + (pageIndexSet.has(pageIndex) ? 0 : 1) : 1; + + if (numPages < GlobalImageCache.NUM_PAGES_THRESHOLD) { + return false; + } + + if (!this._imageCache.has(ref) && this._cacheLimitReached) { + return false; + } + + return true; + } + + addPageIndex(ref, pageIndex) { + let pageIndexSet = this._refCache.get(ref); + + if (!pageIndexSet) { + pageIndexSet = new Set(); + + this._refCache.put(ref, pageIndexSet); + } + + pageIndexSet.add(pageIndex); + } + + addByteSize(ref, byteSize) { + const imageData = this._imageCache.get(ref); + + if (!imageData) { + return; + } + + if (imageData.byteSize) { + return; + } + + imageData.byteSize = byteSize; + } + + getData(ref, pageIndex) { + const pageIndexSet = this._refCache.get(ref); + + if (!pageIndexSet) { + return null; + } + + if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) { + return null; + } + + const imageData = this._imageCache.get(ref); + + if (!imageData) { + return null; + } + + pageIndexSet.add(pageIndex); + return imageData; + } + + setData(ref, data) { + if (!this._refCache.has(ref)) { + throw new Error('GlobalImageCache.setData - expected "addPageIndex" to have been called.'); + } + + if (this._imageCache.has(ref)) { + return; + } + + if (this._cacheLimitReached) { + (0, _util.warn)("GlobalImageCache.setData - cache limit reached."); + return; + } + + this._imageCache.put(ref, data); + } + + clear() { + let onlyData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + if (!onlyData) { + this._refCache.clear(); + } + + this._imageCache.clear(); + } + +} + +exports.GlobalImageCache = GlobalImageCache; + +/***/ }), +/* 185 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); exports.bidi = bidi; -var _util = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(2); -var baseTypes = ['BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'S', 'B', 'S', 'WS', 'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'B', 'B', 'S', 'WS', 'ON', 'ON', 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'ON', 'ES', 'CS', 'ES', 'CS', 'CS', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'CS', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'CS', 'ON', 'ET', 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'BN', 'ON', 'ON', 'ET', 'ET', 'EN', 'EN', 'ON', 'L', 'ON', 'ON', 'ON', 'EN', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L']; -var arabicTypes = ['AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'ON', 'ON', 'AL', 'ET', 'ET', 'AL', 'CS', 'AL', 'ON', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', '', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'ET', 'AN', 'AN', 'AL', 'AL', 'AL', 'NSM', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AN', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'NSM', 'NSM', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL']; +const baseTypes = ["BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "S", "B", "S", "WS", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "B", "B", "B", "S", "WS", "ON", "ON", "ET", "ET", "ET", "ON", "ON", "ON", "ON", "ON", "ES", "CS", "ES", "CS", "CS", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "CS", "ON", "ON", "ON", "ON", "ON", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "ON", "ON", "ON", "ON", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "ON", "ON", "ON", "BN", "BN", "BN", "BN", "BN", "BN", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "CS", "ON", "ET", "ET", "ET", "ET", "ON", "ON", "ON", "ON", "L", "ON", "ON", "BN", "ON", "ON", "ET", "ET", "EN", "EN", "ON", "L", "ON", "ON", "ON", "EN", "L", "ON", "ON", "ON", "ON", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "L", "L", "L", "L", "L", "L", "L", "L"]; +const arabicTypes = ["AN", "AN", "AN", "AN", "AN", "AN", "ON", "ON", "AL", "ET", "ET", "AL", "CS", "AL", "ON", "ON", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "ET", "AN", "AN", "AL", "AL", "AL", "NSM", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "ON", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "NSM", "NSM", "ON", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "AL", "AL", "AL", "AL", "AL", "AL"]; function isOdd(i) { return (i & 1) !== 0; @@ -49647,7 +56281,9 @@ function isEven(i) { } function findUnequal(arr, start, value) { - for (var j = start, jj = arr.length; j < jj; ++j) { + let j, jj; + + for (j = start, jj = arr.length; j < jj; ++j) { if (arr[j] !== value) { return j; } @@ -49657,32 +56293,43 @@ function findUnequal(arr, start, value) { } function setValues(arr, start, end, value) { - for (var j = start; j < end; ++j) { + for (let j = start; j < end; ++j) { arr[j] = value; } } function reverseValues(arr, start, end) { - for (var i = start, j = end - 1; i < j; ++i, --j) { - var temp = arr[i]; + for (let i = start, j = end - 1; i < j; ++i, --j) { + const temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } -function createBidiText(str, isLTR, vertical) { +function createBidiText(str, isLTR) { + let vertical = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + let dir = "ltr"; + + if (vertical) { + dir = "ttb"; + } else if (!isLTR) { + dir = "rtl"; + } + return { - str: str, - dir: vertical ? 'ttb' : isLTR ? 'ltr' : 'rtl' + str, + dir }; } -var chars = []; -var types = []; +const chars = []; +const types = []; -function bidi(str, startLevel, vertical) { - var isLTR = true; - var strLength = str.length; +function bidi(str) { + let startLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1; + let vertical = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + let isLTR = true; + const strLength = str.length; if (strLength === 0 || vertical) { return createBidiText(str, isLTR, vertical); @@ -49690,29 +56337,29 @@ function bidi(str, startLevel, vertical) { chars.length = strLength; types.length = strLength; - var numBidi = 0; - var i, ii; + let numBidi = 0; + let i, ii; for (i = 0; i < strLength; ++i) { chars[i] = str.charAt(i); - var charCode = str.charCodeAt(i); - var charType = 'L'; + const charCode = str.charCodeAt(i); + let charType = "L"; if (charCode <= 0x00ff) { charType = baseTypes[charCode]; } else if (0x0590 <= charCode && charCode <= 0x05f4) { - charType = 'R'; + charType = "R"; } else if (0x0600 <= charCode && charCode <= 0x06ff) { charType = arabicTypes[charCode & 0xff]; if (!charType) { - (0, _util.warn)('Bidi: invalid Unicode character ' + charCode.toString(16)); + (0, _util.warn)("Bidi: invalid Unicode character " + charCode.toString(16)); } - } else if (0x0700 <= charCode && charCode <= 0x08AC) { - charType = 'AL'; + } else if (0x0700 <= charCode && charCode <= 0x08ac) { + charType = "AL"; } - if (charType === 'R' || charType === 'AL' || charType === 'AN') { + if (charType === "R" || charType === "AL" || charType === "AN") { numBidi++; } @@ -49725,7 +56372,7 @@ function bidi(str, startLevel, vertical) { } if (startLevel === -1) { - if (numBidi / strLength < 0.3) { + if (numBidi / strLength < 0.3 && strLength > 4) { isLTR = true; startLevel = 0; } else { @@ -49734,19 +56381,19 @@ function bidi(str, startLevel, vertical) { } } - var levels = []; + const levels = []; for (i = 0; i < strLength; ++i) { levels[i] = startLevel; } - var e = isOdd(startLevel) ? 'R' : 'L'; - var sor = e; - var eor = sor; - var lastType = sor; + const e = isOdd(startLevel) ? "R" : "L"; + const sor = e; + const eor = sor; + let lastType = sor; for (i = 0; i < strLength; ++i) { - if (types[i] === 'NSM') { + if (types[i] === "NSM") { types[i] = lastType; } else { lastType = types[i]; @@ -49754,14 +56401,14 @@ function bidi(str, startLevel, vertical) { } lastType = sor; - var t; + let t; for (i = 0; i < strLength; ++i) { t = types[i]; - if (t === 'EN') { - types[i] = lastType === 'AL' ? 'AN' : 'EN'; - } else if (t === 'R' || t === 'L' || t === 'AL') { + if (t === "EN") { + types[i] = lastType === "AL" ? "AN" : "EN"; + } else if (t === "R" || t === "L" || t === "AL") { lastType = t; } } @@ -49769,39 +56416,37 @@ function bidi(str, startLevel, vertical) { for (i = 0; i < strLength; ++i) { t = types[i]; - if (t === 'AL') { - types[i] = 'R'; + if (t === "AL") { + types[i] = "R"; } } for (i = 1; i < strLength - 1; ++i) { - if (types[i] === 'ES' && types[i - 1] === 'EN' && types[i + 1] === 'EN') { - types[i] = 'EN'; + if (types[i] === "ES" && types[i - 1] === "EN" && types[i + 1] === "EN") { + types[i] = "EN"; } - if (types[i] === 'CS' && (types[i - 1] === 'EN' || types[i - 1] === 'AN') && types[i + 1] === types[i - 1]) { + if (types[i] === "CS" && (types[i - 1] === "EN" || types[i - 1] === "AN") && types[i + 1] === types[i - 1]) { types[i] = types[i - 1]; } } for (i = 0; i < strLength; ++i) { - if (types[i] === 'EN') { - var j; - - for (j = i - 1; j >= 0; --j) { - if (types[j] !== 'ET') { + if (types[i] === "EN") { + for (let j = i - 1; j >= 0; --j) { + if (types[j] !== "ET") { break; } - types[j] = 'EN'; + types[j] = "EN"; } - for (j = i + 1; j < strLength; ++j) { - if (types[j] !== 'ET') { + for (let j = i + 1; j < strLength; ++j) { + if (types[j] !== "ET") { break; } - types[j] = 'EN'; + types[j] = "EN"; } } } @@ -49809,8 +56454,8 @@ function bidi(str, startLevel, vertical) { for (i = 0; i < strLength; ++i) { t = types[i]; - if (t === 'WS' || t === 'ES' || t === 'ET' || t === 'CS') { - types[i] = 'ON'; + if (t === "WS" || t === "ES" || t === "ET" || t === "CS") { + types[i] = "ON"; } } @@ -49819,34 +56464,34 @@ function bidi(str, startLevel, vertical) { for (i = 0; i < strLength; ++i) { t = types[i]; - if (t === 'EN') { - types[i] = lastType === 'L' ? 'L' : 'EN'; - } else if (t === 'R' || t === 'L') { + if (t === "EN") { + types[i] = lastType === "L" ? "L" : "EN"; + } else if (t === "R" || t === "L") { lastType = t; } } for (i = 0; i < strLength; ++i) { - if (types[i] === 'ON') { - var end = findUnequal(types, i + 1, 'ON'); - var before = sor; + if (types[i] === "ON") { + const end = findUnequal(types, i + 1, "ON"); + let before = sor; if (i > 0) { before = types[i - 1]; } - var after = eor; + let after = eor; if (end + 1 < strLength) { after = types[end + 1]; } - if (before !== 'L') { - before = 'R'; + if (before !== "L") { + before = "R"; } - if (after !== 'L') { - after = 'R'; + if (after !== "L") { + after = "R"; } if (before === after) { @@ -49858,7 +56503,7 @@ function bidi(str, startLevel, vertical) { } for (i = 0; i < strLength; ++i) { - if (types[i] === 'ON') { + if (types[i] === "ON") { types[i] = e; } } @@ -49867,21 +56512,21 @@ function bidi(str, startLevel, vertical) { t = types[i]; if (isEven(levels[i])) { - if (t === 'R') { + if (t === "R") { levels[i] += 1; - } else if (t === 'AN' || t === 'EN') { + } else if (t === "AN" || t === "EN") { levels[i] += 2; } } else { - if (t === 'L' || t === 'AN' || t === 'EN') { + if (t === "L" || t === "AN" || t === "EN") { levels[i] += 1; } } } - var highestLevel = -1; - var lowestOddLevel = 99; - var level; + let highestLevel = -1; + let lowestOddLevel = 99; + let level; for (i = 0, ii = levels.length; i < ii; ++i) { level = levels[i]; @@ -49896,7 +56541,7 @@ function bidi(str, startLevel, vertical) { } for (level = highestLevel; level >= lowestOddLevel; --level) { - var start = -1; + let start = -1; for (i = 0, ii = levels.length; i < ii; ++i) { if (levels[i] < level) { @@ -49915,4989 +56560,947 @@ function bidi(str, startLevel, vertical) { } for (i = 0, ii = chars.length; i < ii; ++i) { - var ch = chars[i]; + const ch = chars[i]; - if (ch === '<' || ch === '>') { - chars[i] = ''; + if (ch === "<" || ch === ">") { + chars[i] = ""; } } - return createBidiText(chars.join(''), isLTR); + return createBidiText(chars.join(""), isLTR); } -/***/ }), -/* 185 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getMetrics = void 0; - -var _core_utils = __w_pdfjs_require__(154); - -var getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) { - t['Courier'] = 600; - t['Courier-Bold'] = 600; - t['Courier-BoldOblique'] = 600; - t['Courier-Oblique'] = 600; - t['Helvetica'] = (0, _core_utils.getLookupTableFactory)(function (t) { - t['space'] = 278; - t['exclam'] = 278; - t['quotedbl'] = 355; - t['numbersign'] = 556; - t['dollar'] = 556; - t['percent'] = 889; - t['ampersand'] = 667; - t['quoteright'] = 222; - t['parenleft'] = 333; - t['parenright'] = 333; - t['asterisk'] = 389; - t['plus'] = 584; - t['comma'] = 278; - t['hyphen'] = 333; - t['period'] = 278; - t['slash'] = 278; - t['zero'] = 556; - t['one'] = 556; - t['two'] = 556; - t['three'] = 556; - t['four'] = 556; - t['five'] = 556; - t['six'] = 556; - t['seven'] = 556; - t['eight'] = 556; - t['nine'] = 556; - t['colon'] = 278; - t['semicolon'] = 278; - t['less'] = 584; - t['equal'] = 584; - t['greater'] = 584; - t['question'] = 556; - t['at'] = 1015; - t['A'] = 667; - t['B'] = 667; - t['C'] = 722; - t['D'] = 722; - t['E'] = 667; - t['F'] = 611; - t['G'] = 778; - t['H'] = 722; - t['I'] = 278; - t['J'] = 500; - t['K'] = 667; - t['L'] = 556; - t['M'] = 833; - t['N'] = 722; - t['O'] = 778; - t['P'] = 667; - t['Q'] = 778; - t['R'] = 722; - t['S'] = 667; - t['T'] = 611; - t['U'] = 722; - t['V'] = 667; - t['W'] = 944; - t['X'] = 667; - t['Y'] = 667; - t['Z'] = 611; - t['bracketleft'] = 278; - t['backslash'] = 278; - t['bracketright'] = 278; - t['asciicircum'] = 469; - t['underscore'] = 556; - t['quoteleft'] = 222; - t['a'] = 556; - t['b'] = 556; - t['c'] = 500; - t['d'] = 556; - t['e'] = 556; - t['f'] = 278; - t['g'] = 556; - t['h'] = 556; - t['i'] = 222; - t['j'] = 222; - t['k'] = 500; - t['l'] = 222; - t['m'] = 833; - t['n'] = 556; - t['o'] = 556; - t['p'] = 556; - t['q'] = 556; - t['r'] = 333; - t['s'] = 500; - t['t'] = 278; - t['u'] = 556; - t['v'] = 500; - t['w'] = 722; - t['x'] = 500; - t['y'] = 500; - t['z'] = 500; - t['braceleft'] = 334; - t['bar'] = 260; - t['braceright'] = 334; - t['asciitilde'] = 584; - t['exclamdown'] = 333; - t['cent'] = 556; - t['sterling'] = 556; - t['fraction'] = 167; - t['yen'] = 556; - t['florin'] = 556; - t['section'] = 556; - t['currency'] = 556; - t['quotesingle'] = 191; - t['quotedblleft'] = 333; - t['guillemotleft'] = 556; - t['guilsinglleft'] = 333; - t['guilsinglright'] = 333; - t['fi'] = 500; - t['fl'] = 500; - t['endash'] = 556; - t['dagger'] = 556; - t['daggerdbl'] = 556; - t['periodcentered'] = 278; - t['paragraph'] = 537; - t['bullet'] = 350; - t['quotesinglbase'] = 222; - t['quotedblbase'] = 333; - t['quotedblright'] = 333; - t['guillemotright'] = 556; - t['ellipsis'] = 1000; - t['perthousand'] = 1000; - t['questiondown'] = 611; - t['grave'] = 333; - t['acute'] = 333; - t['circumflex'] = 333; - t['tilde'] = 333; - t['macron'] = 333; - t['breve'] = 333; - t['dotaccent'] = 333; - t['dieresis'] = 333; - t['ring'] = 333; - t['cedilla'] = 333; - t['hungarumlaut'] = 333; - t['ogonek'] = 333; - t['caron'] = 333; - t['emdash'] = 1000; - t['AE'] = 1000; - t['ordfeminine'] = 370; - t['Lslash'] = 556; - t['Oslash'] = 778; - t['OE'] = 1000; - t['ordmasculine'] = 365; - t['ae'] = 889; - t['dotlessi'] = 278; - t['lslash'] = 222; - t['oslash'] = 611; - t['oe'] = 944; - t['germandbls'] = 611; - t['Idieresis'] = 278; - t['eacute'] = 556; - t['abreve'] = 556; - t['uhungarumlaut'] = 556; - t['ecaron'] = 556; - t['Ydieresis'] = 667; - t['divide'] = 584; - t['Yacute'] = 667; - t['Acircumflex'] = 667; - t['aacute'] = 556; - t['Ucircumflex'] = 722; - t['yacute'] = 500; - t['scommaaccent'] = 500; - t['ecircumflex'] = 556; - t['Uring'] = 722; - t['Udieresis'] = 722; - t['aogonek'] = 556; - t['Uacute'] = 722; - t['uogonek'] = 556; - t['Edieresis'] = 667; - t['Dcroat'] = 722; - t['commaaccent'] = 250; - t['copyright'] = 737; - t['Emacron'] = 667; - t['ccaron'] = 500; - t['aring'] = 556; - t['Ncommaaccent'] = 722; - t['lacute'] = 222; - t['agrave'] = 556; - t['Tcommaaccent'] = 611; - t['Cacute'] = 722; - t['atilde'] = 556; - t['Edotaccent'] = 667; - t['scaron'] = 500; - t['scedilla'] = 500; - t['iacute'] = 278; - t['lozenge'] = 471; - t['Rcaron'] = 722; - t['Gcommaaccent'] = 778; - t['ucircumflex'] = 556; - t['acircumflex'] = 556; - t['Amacron'] = 667; - t['rcaron'] = 333; - t['ccedilla'] = 500; - t['Zdotaccent'] = 611; - t['Thorn'] = 667; - t['Omacron'] = 778; - t['Racute'] = 722; - t['Sacute'] = 667; - t['dcaron'] = 643; - t['Umacron'] = 722; - t['uring'] = 556; - t['threesuperior'] = 333; - t['Ograve'] = 778; - t['Agrave'] = 667; - t['Abreve'] = 667; - t['multiply'] = 584; - t['uacute'] = 556; - t['Tcaron'] = 611; - t['partialdiff'] = 476; - t['ydieresis'] = 500; - t['Nacute'] = 722; - t['icircumflex'] = 278; - t['Ecircumflex'] = 667; - t['adieresis'] = 556; - t['edieresis'] = 556; - t['cacute'] = 500; - t['nacute'] = 556; - t['umacron'] = 556; - t['Ncaron'] = 722; - t['Iacute'] = 278; - t['plusminus'] = 584; - t['brokenbar'] = 260; - t['registered'] = 737; - t['Gbreve'] = 778; - t['Idotaccent'] = 278; - t['summation'] = 600; - t['Egrave'] = 667; - t['racute'] = 333; - t['omacron'] = 556; - t['Zacute'] = 611; - t['Zcaron'] = 611; - t['greaterequal'] = 549; - t['Eth'] = 722; - t['Ccedilla'] = 722; - t['lcommaaccent'] = 222; - t['tcaron'] = 317; - t['eogonek'] = 556; - t['Uogonek'] = 722; - t['Aacute'] = 667; - t['Adieresis'] = 667; - t['egrave'] = 556; - t['zacute'] = 500; - t['iogonek'] = 222; - t['Oacute'] = 778; - t['oacute'] = 556; - t['amacron'] = 556; - t['sacute'] = 500; - t['idieresis'] = 278; - t['Ocircumflex'] = 778; - t['Ugrave'] = 722; - t['Delta'] = 612; - t['thorn'] = 556; - t['twosuperior'] = 333; - t['Odieresis'] = 778; - t['mu'] = 556; - t['igrave'] = 278; - t['ohungarumlaut'] = 556; - t['Eogonek'] = 667; - t['dcroat'] = 556; - t['threequarters'] = 834; - t['Scedilla'] = 667; - t['lcaron'] = 299; - t['Kcommaaccent'] = 667; - t['Lacute'] = 556; - t['trademark'] = 1000; - t['edotaccent'] = 556; - t['Igrave'] = 278; - t['Imacron'] = 278; - t['Lcaron'] = 556; - t['onehalf'] = 834; - t['lessequal'] = 549; - t['ocircumflex'] = 556; - t['ntilde'] = 556; - t['Uhungarumlaut'] = 722; - t['Eacute'] = 667; - t['emacron'] = 556; - t['gbreve'] = 556; - t['onequarter'] = 834; - t['Scaron'] = 667; - t['Scommaaccent'] = 667; - t['Ohungarumlaut'] = 778; - t['degree'] = 400; - t['ograve'] = 556; - t['Ccaron'] = 722; - t['ugrave'] = 556; - t['radical'] = 453; - t['Dcaron'] = 722; - t['rcommaaccent'] = 333; - t['Ntilde'] = 722; - t['otilde'] = 556; - t['Rcommaaccent'] = 722; - t['Lcommaaccent'] = 556; - t['Atilde'] = 667; - t['Aogonek'] = 667; - t['Aring'] = 667; - t['Otilde'] = 778; - t['zdotaccent'] = 500; - t['Ecaron'] = 667; - t['Iogonek'] = 278; - t['kcommaaccent'] = 500; - t['minus'] = 584; - t['Icircumflex'] = 278; - t['ncaron'] = 556; - t['tcommaaccent'] = 278; - t['logicalnot'] = 584; - t['odieresis'] = 556; - t['udieresis'] = 556; - t['notequal'] = 549; - t['gcommaaccent'] = 556; - t['eth'] = 556; - t['zcaron'] = 500; - t['ncommaaccent'] = 556; - t['onesuperior'] = 333; - t['imacron'] = 278; - t['Euro'] = 556; - }); - t['Helvetica-Bold'] = (0, _core_utils.getLookupTableFactory)(function (t) { - t['space'] = 278; - t['exclam'] = 333; - t['quotedbl'] = 474; - t['numbersign'] = 556; - t['dollar'] = 556; - t['percent'] = 889; - t['ampersand'] = 722; - t['quoteright'] = 278; - t['parenleft'] = 333; - t['parenright'] = 333; - t['asterisk'] = 389; - t['plus'] = 584; - t['comma'] = 278; - t['hyphen'] = 333; - t['period'] = 278; - t['slash'] = 278; - t['zero'] = 556; - t['one'] = 556; - t['two'] = 556; - t['three'] = 556; - t['four'] = 556; - t['five'] = 556; - t['six'] = 556; - t['seven'] = 556; - t['eight'] = 556; - t['nine'] = 556; - t['colon'] = 333; - t['semicolon'] = 333; - t['less'] = 584; - t['equal'] = 584; - t['greater'] = 584; - t['question'] = 611; - t['at'] = 975; - t['A'] = 722; - t['B'] = 722; - t['C'] = 722; - t['D'] = 722; - t['E'] = 667; - t['F'] = 611; - t['G'] = 778; - t['H'] = 722; - t['I'] = 278; - t['J'] = 556; - t['K'] = 722; - t['L'] = 611; - t['M'] = 833; - t['N'] = 722; - t['O'] = 778; - t['P'] = 667; - t['Q'] = 778; - t['R'] = 722; - t['S'] = 667; - t['T'] = 611; - t['U'] = 722; - t['V'] = 667; - t['W'] = 944; - t['X'] = 667; - t['Y'] = 667; - t['Z'] = 611; - t['bracketleft'] = 333; - t['backslash'] = 278; - t['bracketright'] = 333; - t['asciicircum'] = 584; - t['underscore'] = 556; - t['quoteleft'] = 278; - t['a'] = 556; - t['b'] = 611; - t['c'] = 556; - t['d'] = 611; - t['e'] = 556; - t['f'] = 333; - t['g'] = 611; - t['h'] = 611; - t['i'] = 278; - t['j'] = 278; - t['k'] = 556; - t['l'] = 278; - t['m'] = 889; - t['n'] = 611; - t['o'] = 611; - t['p'] = 611; - t['q'] = 611; - t['r'] = 389; - t['s'] = 556; - t['t'] = 333; - t['u'] = 611; - t['v'] = 556; - t['w'] = 778; - t['x'] = 556; - t['y'] = 556; - t['z'] = 500; - t['braceleft'] = 389; - t['bar'] = 280; - t['braceright'] = 389; - t['asciitilde'] = 584; - t['exclamdown'] = 333; - t['cent'] = 556; - t['sterling'] = 556; - t['fraction'] = 167; - t['yen'] = 556; - t['florin'] = 556; - t['section'] = 556; - t['currency'] = 556; - t['quotesingle'] = 238; - t['quotedblleft'] = 500; - t['guillemotleft'] = 556; - t['guilsinglleft'] = 333; - t['guilsinglright'] = 333; - t['fi'] = 611; - t['fl'] = 611; - t['endash'] = 556; - t['dagger'] = 556; - t['daggerdbl'] = 556; - t['periodcentered'] = 278; - t['paragraph'] = 556; - t['bullet'] = 350; - t['quotesinglbase'] = 278; - t['quotedblbase'] = 500; - t['quotedblright'] = 500; - t['guillemotright'] = 556; - t['ellipsis'] = 1000; - t['perthousand'] = 1000; - t['questiondown'] = 611; - t['grave'] = 333; - t['acute'] = 333; - t['circumflex'] = 333; - t['tilde'] = 333; - t['macron'] = 333; - t['breve'] = 333; - t['dotaccent'] = 333; - t['dieresis'] = 333; - t['ring'] = 333; - t['cedilla'] = 333; - t['hungarumlaut'] = 333; - t['ogonek'] = 333; - t['caron'] = 333; - t['emdash'] = 1000; - t['AE'] = 1000; - t['ordfeminine'] = 370; - t['Lslash'] = 611; - t['Oslash'] = 778; - t['OE'] = 1000; - t['ordmasculine'] = 365; - t['ae'] = 889; - t['dotlessi'] = 278; - t['lslash'] = 278; - t['oslash'] = 611; - t['oe'] = 944; - t['germandbls'] = 611; - t['Idieresis'] = 278; - t['eacute'] = 556; - t['abreve'] = 556; - t['uhungarumlaut'] = 611; - t['ecaron'] = 556; - t['Ydieresis'] = 667; - t['divide'] = 584; - t['Yacute'] = 667; - t['Acircumflex'] = 722; - t['aacute'] = 556; - t['Ucircumflex'] = 722; - t['yacute'] = 556; - t['scommaaccent'] = 556; - t['ecircumflex'] = 556; - t['Uring'] = 722; - t['Udieresis'] = 722; - t['aogonek'] = 556; - t['Uacute'] = 722; - t['uogonek'] = 611; - t['Edieresis'] = 667; - t['Dcroat'] = 722; - t['commaaccent'] = 250; - t['copyright'] = 737; - t['Emacron'] = 667; - t['ccaron'] = 556; - t['aring'] = 556; - t['Ncommaaccent'] = 722; - t['lacute'] = 278; - t['agrave'] = 556; - t['Tcommaaccent'] = 611; - t['Cacute'] = 722; - t['atilde'] = 556; - t['Edotaccent'] = 667; - t['scaron'] = 556; - t['scedilla'] = 556; - t['iacute'] = 278; - t['lozenge'] = 494; - t['Rcaron'] = 722; - t['Gcommaaccent'] = 778; - t['ucircumflex'] = 611; - t['acircumflex'] = 556; - t['Amacron'] = 722; - t['rcaron'] = 389; - t['ccedilla'] = 556; - t['Zdotaccent'] = 611; - t['Thorn'] = 667; - t['Omacron'] = 778; - t['Racute'] = 722; - t['Sacute'] = 667; - t['dcaron'] = 743; - t['Umacron'] = 722; - t['uring'] = 611; - t['threesuperior'] = 333; - t['Ograve'] = 778; - t['Agrave'] = 722; - t['Abreve'] = 722; - t['multiply'] = 584; - t['uacute'] = 611; - t['Tcaron'] = 611; - t['partialdiff'] = 494; - t['ydieresis'] = 556; - t['Nacute'] = 722; - t['icircumflex'] = 278; - t['Ecircumflex'] = 667; - t['adieresis'] = 556; - t['edieresis'] = 556; - t['cacute'] = 556; - t['nacute'] = 611; - t['umacron'] = 611; - t['Ncaron'] = 722; - t['Iacute'] = 278; - t['plusminus'] = 584; - t['brokenbar'] = 280; - t['registered'] = 737; - t['Gbreve'] = 778; - t['Idotaccent'] = 278; - t['summation'] = 600; - t['Egrave'] = 667; - t['racute'] = 389; - t['omacron'] = 611; - t['Zacute'] = 611; - t['Zcaron'] = 611; - t['greaterequal'] = 549; - t['Eth'] = 722; - t['Ccedilla'] = 722; - t['lcommaaccent'] = 278; - t['tcaron'] = 389; - t['eogonek'] = 556; - t['Uogonek'] = 722; - t['Aacute'] = 722; - t['Adieresis'] = 722; - t['egrave'] = 556; - t['zacute'] = 500; - t['iogonek'] = 278; - t['Oacute'] = 778; - t['oacute'] = 611; - t['amacron'] = 556; - t['sacute'] = 556; - t['idieresis'] = 278; - t['Ocircumflex'] = 778; - t['Ugrave'] = 722; - t['Delta'] = 612; - t['thorn'] = 611; - t['twosuperior'] = 333; - t['Odieresis'] = 778; - t['mu'] = 611; - t['igrave'] = 278; - t['ohungarumlaut'] = 611; - t['Eogonek'] = 667; - t['dcroat'] = 611; - t['threequarters'] = 834; - t['Scedilla'] = 667; - t['lcaron'] = 400; - t['Kcommaaccent'] = 722; - t['Lacute'] = 611; - t['trademark'] = 1000; - t['edotaccent'] = 556; - t['Igrave'] = 278; - t['Imacron'] = 278; - t['Lcaron'] = 611; - t['onehalf'] = 834; - t['lessequal'] = 549; - t['ocircumflex'] = 611; - t['ntilde'] = 611; - t['Uhungarumlaut'] = 722; - t['Eacute'] = 667; - t['emacron'] = 556; - t['gbreve'] = 611; - t['onequarter'] = 834; - t['Scaron'] = 667; - t['Scommaaccent'] = 667; - t['Ohungarumlaut'] = 778; - t['degree'] = 400; - t['ograve'] = 611; - t['Ccaron'] = 722; - t['ugrave'] = 611; - t['radical'] = 549; - t['Dcaron'] = 722; - t['rcommaaccent'] = 389; - t['Ntilde'] = 722; - t['otilde'] = 611; - t['Rcommaaccent'] = 722; - t['Lcommaaccent'] = 611; - t['Atilde'] = 722; - t['Aogonek'] = 722; - t['Aring'] = 722; - t['Otilde'] = 778; - t['zdotaccent'] = 500; - t['Ecaron'] = 667; - t['Iogonek'] = 278; - t['kcommaaccent'] = 556; - t['minus'] = 584; - t['Icircumflex'] = 278; - t['ncaron'] = 611; - t['tcommaaccent'] = 333; - t['logicalnot'] = 584; - t['odieresis'] = 611; - t['udieresis'] = 611; - t['notequal'] = 549; - t['gcommaaccent'] = 611; - t['eth'] = 611; - t['zcaron'] = 500; - t['ncommaaccent'] = 611; - t['onesuperior'] = 333; - t['imacron'] = 278; - t['Euro'] = 556; - }); - t['Helvetica-BoldOblique'] = (0, _core_utils.getLookupTableFactory)(function (t) { - t['space'] = 278; - t['exclam'] = 333; - t['quotedbl'] = 474; - t['numbersign'] = 556; - t['dollar'] = 556; - t['percent'] = 889; - t['ampersand'] = 722; - t['quoteright'] = 278; - t['parenleft'] = 333; - t['parenright'] = 333; - t['asterisk'] = 389; - t['plus'] = 584; - t['comma'] = 278; - t['hyphen'] = 333; - t['period'] = 278; - t['slash'] = 278; - t['zero'] = 556; - t['one'] = 556; - t['two'] = 556; - t['three'] = 556; - t['four'] = 556; - t['five'] = 556; - t['six'] = 556; - t['seven'] = 556; - t['eight'] = 556; - t['nine'] = 556; - t['colon'] = 333; - t['semicolon'] = 333; - t['less'] = 584; - t['equal'] = 584; - t['greater'] = 584; - t['question'] = 611; - t['at'] = 975; - t['A'] = 722; - t['B'] = 722; - t['C'] = 722; - t['D'] = 722; - t['E'] = 667; - t['F'] = 611; - t['G'] = 778; - t['H'] = 722; - t['I'] = 278; - t['J'] = 556; - t['K'] = 722; - t['L'] = 611; - t['M'] = 833; - t['N'] = 722; - t['O'] = 778; - t['P'] = 667; - t['Q'] = 778; - t['R'] = 722; - t['S'] = 667; - t['T'] = 611; - t['U'] = 722; - t['V'] = 667; - t['W'] = 944; - t['X'] = 667; - t['Y'] = 667; - t['Z'] = 611; - t['bracketleft'] = 333; - t['backslash'] = 278; - t['bracketright'] = 333; - t['asciicircum'] = 584; - t['underscore'] = 556; - t['quoteleft'] = 278; - t['a'] = 556; - t['b'] = 611; - t['c'] = 556; - t['d'] = 611; - t['e'] = 556; - t['f'] = 333; - t['g'] = 611; - t['h'] = 611; - t['i'] = 278; - t['j'] = 278; - t['k'] = 556; - t['l'] = 278; - t['m'] = 889; - t['n'] = 611; - t['o'] = 611; - t['p'] = 611; - t['q'] = 611; - t['r'] = 389; - t['s'] = 556; - t['t'] = 333; - t['u'] = 611; - t['v'] = 556; - t['w'] = 778; - t['x'] = 556; - t['y'] = 556; - t['z'] = 500; - t['braceleft'] = 389; - t['bar'] = 280; - t['braceright'] = 389; - t['asciitilde'] = 584; - t['exclamdown'] = 333; - t['cent'] = 556; - t['sterling'] = 556; - t['fraction'] = 167; - t['yen'] = 556; - t['florin'] = 556; - t['section'] = 556; - t['currency'] = 556; - t['quotesingle'] = 238; - t['quotedblleft'] = 500; - t['guillemotleft'] = 556; - t['guilsinglleft'] = 333; - t['guilsinglright'] = 333; - t['fi'] = 611; - t['fl'] = 611; - t['endash'] = 556; - t['dagger'] = 556; - t['daggerdbl'] = 556; - t['periodcentered'] = 278; - t['paragraph'] = 556; - t['bullet'] = 350; - t['quotesinglbase'] = 278; - t['quotedblbase'] = 500; - t['quotedblright'] = 500; - t['guillemotright'] = 556; - t['ellipsis'] = 1000; - t['perthousand'] = 1000; - t['questiondown'] = 611; - t['grave'] = 333; - t['acute'] = 333; - t['circumflex'] = 333; - t['tilde'] = 333; - t['macron'] = 333; - t['breve'] = 333; - t['dotaccent'] = 333; - t['dieresis'] = 333; - t['ring'] = 333; - t['cedilla'] = 333; - t['hungarumlaut'] = 333; - t['ogonek'] = 333; - t['caron'] = 333; - t['emdash'] = 1000; - t['AE'] = 1000; - t['ordfeminine'] = 370; - t['Lslash'] = 611; - t['Oslash'] = 778; - t['OE'] = 1000; - t['ordmasculine'] = 365; - t['ae'] = 889; - t['dotlessi'] = 278; - t['lslash'] = 278; - t['oslash'] = 611; - t['oe'] = 944; - t['germandbls'] = 611; - t['Idieresis'] = 278; - t['eacute'] = 556; - t['abreve'] = 556; - t['uhungarumlaut'] = 611; - t['ecaron'] = 556; - t['Ydieresis'] = 667; - t['divide'] = 584; - t['Yacute'] = 667; - t['Acircumflex'] = 722; - t['aacute'] = 556; - t['Ucircumflex'] = 722; - t['yacute'] = 556; - t['scommaaccent'] = 556; - t['ecircumflex'] = 556; - t['Uring'] = 722; - t['Udieresis'] = 722; - t['aogonek'] = 556; - t['Uacute'] = 722; - t['uogonek'] = 611; - t['Edieresis'] = 667; - t['Dcroat'] = 722; - t['commaaccent'] = 250; - t['copyright'] = 737; - t['Emacron'] = 667; - t['ccaron'] = 556; - t['aring'] = 556; - t['Ncommaaccent'] = 722; - t['lacute'] = 278; - t['agrave'] = 556; - t['Tcommaaccent'] = 611; - t['Cacute'] = 722; - t['atilde'] = 556; - t['Edotaccent'] = 667; - t['scaron'] = 556; - t['scedilla'] = 556; - t['iacute'] = 278; - t['lozenge'] = 494; - t['Rcaron'] = 722; - t['Gcommaaccent'] = 778; - t['ucircumflex'] = 611; - t['acircumflex'] = 556; - t['Amacron'] = 722; - t['rcaron'] = 389; - t['ccedilla'] = 556; - t['Zdotaccent'] = 611; - t['Thorn'] = 667; - t['Omacron'] = 778; - t['Racute'] = 722; - t['Sacute'] = 667; - t['dcaron'] = 743; - t['Umacron'] = 722; - t['uring'] = 611; - t['threesuperior'] = 333; - t['Ograve'] = 778; - t['Agrave'] = 722; - t['Abreve'] = 722; - t['multiply'] = 584; - t['uacute'] = 611; - t['Tcaron'] = 611; - t['partialdiff'] = 494; - t['ydieresis'] = 556; - t['Nacute'] = 722; - t['icircumflex'] = 278; - t['Ecircumflex'] = 667; - t['adieresis'] = 556; - t['edieresis'] = 556; - t['cacute'] = 556; - t['nacute'] = 611; - t['umacron'] = 611; - t['Ncaron'] = 722; - t['Iacute'] = 278; - t['plusminus'] = 584; - t['brokenbar'] = 280; - t['registered'] = 737; - t['Gbreve'] = 778; - t['Idotaccent'] = 278; - t['summation'] = 600; - t['Egrave'] = 667; - t['racute'] = 389; - t['omacron'] = 611; - t['Zacute'] = 611; - t['Zcaron'] = 611; - t['greaterequal'] = 549; - t['Eth'] = 722; - t['Ccedilla'] = 722; - t['lcommaaccent'] = 278; - t['tcaron'] = 389; - t['eogonek'] = 556; - t['Uogonek'] = 722; - t['Aacute'] = 722; - t['Adieresis'] = 722; - t['egrave'] = 556; - t['zacute'] = 500; - t['iogonek'] = 278; - t['Oacute'] = 778; - t['oacute'] = 611; - t['amacron'] = 556; - t['sacute'] = 556; - t['idieresis'] = 278; - t['Ocircumflex'] = 778; - t['Ugrave'] = 722; - t['Delta'] = 612; - t['thorn'] = 611; - t['twosuperior'] = 333; - t['Odieresis'] = 778; - t['mu'] = 611; - t['igrave'] = 278; - t['ohungarumlaut'] = 611; - t['Eogonek'] = 667; - t['dcroat'] = 611; - t['threequarters'] = 834; - t['Scedilla'] = 667; - t['lcaron'] = 400; - t['Kcommaaccent'] = 722; - t['Lacute'] = 611; - t['trademark'] = 1000; - t['edotaccent'] = 556; - t['Igrave'] = 278; - t['Imacron'] = 278; - t['Lcaron'] = 611; - t['onehalf'] = 834; - t['lessequal'] = 549; - t['ocircumflex'] = 611; - t['ntilde'] = 611; - t['Uhungarumlaut'] = 722; - t['Eacute'] = 667; - t['emacron'] = 556; - t['gbreve'] = 611; - t['onequarter'] = 834; - t['Scaron'] = 667; - t['Scommaaccent'] = 667; - t['Ohungarumlaut'] = 778; - t['degree'] = 400; - t['ograve'] = 611; - t['Ccaron'] = 722; - t['ugrave'] = 611; - t['radical'] = 549; - t['Dcaron'] = 722; - t['rcommaaccent'] = 389; - t['Ntilde'] = 722; - t['otilde'] = 611; - t['Rcommaaccent'] = 722; - t['Lcommaaccent'] = 611; - t['Atilde'] = 722; - t['Aogonek'] = 722; - t['Aring'] = 722; - t['Otilde'] = 778; - t['zdotaccent'] = 500; - t['Ecaron'] = 667; - t['Iogonek'] = 278; - t['kcommaaccent'] = 556; - t['minus'] = 584; - t['Icircumflex'] = 278; - t['ncaron'] = 611; - t['tcommaaccent'] = 333; - t['logicalnot'] = 584; - t['odieresis'] = 611; - t['udieresis'] = 611; - t['notequal'] = 549; - t['gcommaaccent'] = 611; - t['eth'] = 611; - t['zcaron'] = 500; - t['ncommaaccent'] = 611; - t['onesuperior'] = 333; - t['imacron'] = 278; - t['Euro'] = 556; - }); - t['Helvetica-Oblique'] = (0, _core_utils.getLookupTableFactory)(function (t) { - t['space'] = 278; - t['exclam'] = 278; - t['quotedbl'] = 355; - t['numbersign'] = 556; - t['dollar'] = 556; - t['percent'] = 889; - t['ampersand'] = 667; - t['quoteright'] = 222; - t['parenleft'] = 333; - t['parenright'] = 333; - t['asterisk'] = 389; - t['plus'] = 584; - t['comma'] = 278; - t['hyphen'] = 333; - t['period'] = 278; - t['slash'] = 278; - t['zero'] = 556; - t['one'] = 556; - t['two'] = 556; - t['three'] = 556; - t['four'] = 556; - t['five'] = 556; - t['six'] = 556; - t['seven'] = 556; - t['eight'] = 556; - t['nine'] = 556; - t['colon'] = 278; - t['semicolon'] = 278; - t['less'] = 584; - t['equal'] = 584; - t['greater'] = 584; - t['question'] = 556; - t['at'] = 1015; - t['A'] = 667; - t['B'] = 667; - t['C'] = 722; - t['D'] = 722; - t['E'] = 667; - t['F'] = 611; - t['G'] = 778; - t['H'] = 722; - t['I'] = 278; - t['J'] = 500; - t['K'] = 667; - t['L'] = 556; - t['M'] = 833; - t['N'] = 722; - t['O'] = 778; - t['P'] = 667; - t['Q'] = 778; - t['R'] = 722; - t['S'] = 667; - t['T'] = 611; - t['U'] = 722; - t['V'] = 667; - t['W'] = 944; - t['X'] = 667; - t['Y'] = 667; - t['Z'] = 611; - t['bracketleft'] = 278; - t['backslash'] = 278; - t['bracketright'] = 278; - t['asciicircum'] = 469; - t['underscore'] = 556; - t['quoteleft'] = 222; - t['a'] = 556; - t['b'] = 556; - t['c'] = 500; - t['d'] = 556; - t['e'] = 556; - t['f'] = 278; - t['g'] = 556; - t['h'] = 556; - t['i'] = 222; - t['j'] = 222; - t['k'] = 500; - t['l'] = 222; - t['m'] = 833; - t['n'] = 556; - t['o'] = 556; - t['p'] = 556; - t['q'] = 556; - t['r'] = 333; - t['s'] = 500; - t['t'] = 278; - t['u'] = 556; - t['v'] = 500; - t['w'] = 722; - t['x'] = 500; - t['y'] = 500; - t['z'] = 500; - t['braceleft'] = 334; - t['bar'] = 260; - t['braceright'] = 334; - t['asciitilde'] = 584; - t['exclamdown'] = 333; - t['cent'] = 556; - t['sterling'] = 556; - t['fraction'] = 167; - t['yen'] = 556; - t['florin'] = 556; - t['section'] = 556; - t['currency'] = 556; - t['quotesingle'] = 191; - t['quotedblleft'] = 333; - t['guillemotleft'] = 556; - t['guilsinglleft'] = 333; - t['guilsinglright'] = 333; - t['fi'] = 500; - t['fl'] = 500; - t['endash'] = 556; - t['dagger'] = 556; - t['daggerdbl'] = 556; - t['periodcentered'] = 278; - t['paragraph'] = 537; - t['bullet'] = 350; - t['quotesinglbase'] = 222; - t['quotedblbase'] = 333; - t['quotedblright'] = 333; - t['guillemotright'] = 556; - t['ellipsis'] = 1000; - t['perthousand'] = 1000; - t['questiondown'] = 611; - t['grave'] = 333; - t['acute'] = 333; - t['circumflex'] = 333; - t['tilde'] = 333; - t['macron'] = 333; - t['breve'] = 333; - t['dotaccent'] = 333; - t['dieresis'] = 333; - t['ring'] = 333; - t['cedilla'] = 333; - t['hungarumlaut'] = 333; - t['ogonek'] = 333; - t['caron'] = 333; - t['emdash'] = 1000; - t['AE'] = 1000; - t['ordfeminine'] = 370; - t['Lslash'] = 556; - t['Oslash'] = 778; - t['OE'] = 1000; - t['ordmasculine'] = 365; - t['ae'] = 889; - t['dotlessi'] = 278; - t['lslash'] = 222; - t['oslash'] = 611; - t['oe'] = 944; - t['germandbls'] = 611; - t['Idieresis'] = 278; - t['eacute'] = 556; - t['abreve'] = 556; - t['uhungarumlaut'] = 556; - t['ecaron'] = 556; - t['Ydieresis'] = 667; - t['divide'] = 584; - t['Yacute'] = 667; - t['Acircumflex'] = 667; - t['aacute'] = 556; - t['Ucircumflex'] = 722; - t['yacute'] = 500; - t['scommaaccent'] = 500; - t['ecircumflex'] = 556; - t['Uring'] = 722; - t['Udieresis'] = 722; - t['aogonek'] = 556; - t['Uacute'] = 722; - t['uogonek'] = 556; - t['Edieresis'] = 667; - t['Dcroat'] = 722; - t['commaaccent'] = 250; - t['copyright'] = 737; - t['Emacron'] = 667; - t['ccaron'] = 500; - t['aring'] = 556; - t['Ncommaaccent'] = 722; - t['lacute'] = 222; - t['agrave'] = 556; - t['Tcommaaccent'] = 611; - t['Cacute'] = 722; - t['atilde'] = 556; - t['Edotaccent'] = 667; - t['scaron'] = 500; - t['scedilla'] = 500; - t['iacute'] = 278; - t['lozenge'] = 471; - t['Rcaron'] = 722; - t['Gcommaaccent'] = 778; - t['ucircumflex'] = 556; - t['acircumflex'] = 556; - t['Amacron'] = 667; - t['rcaron'] = 333; - t['ccedilla'] = 500; - t['Zdotaccent'] = 611; - t['Thorn'] = 667; - t['Omacron'] = 778; - t['Racute'] = 722; - t['Sacute'] = 667; - t['dcaron'] = 643; - t['Umacron'] = 722; - t['uring'] = 556; - t['threesuperior'] = 333; - t['Ograve'] = 778; - t['Agrave'] = 667; - t['Abreve'] = 667; - t['multiply'] = 584; - t['uacute'] = 556; - t['Tcaron'] = 611; - t['partialdiff'] = 476; - t['ydieresis'] = 500; - t['Nacute'] = 722; - t['icircumflex'] = 278; - t['Ecircumflex'] = 667; - t['adieresis'] = 556; - t['edieresis'] = 556; - t['cacute'] = 500; - t['nacute'] = 556; - t['umacron'] = 556; - t['Ncaron'] = 722; - t['Iacute'] = 278; - t['plusminus'] = 584; - t['brokenbar'] = 260; - t['registered'] = 737; - t['Gbreve'] = 778; - t['Idotaccent'] = 278; - t['summation'] = 600; - t['Egrave'] = 667; - t['racute'] = 333; - t['omacron'] = 556; - t['Zacute'] = 611; - t['Zcaron'] = 611; - t['greaterequal'] = 549; - t['Eth'] = 722; - t['Ccedilla'] = 722; - t['lcommaaccent'] = 222; - t['tcaron'] = 317; - t['eogonek'] = 556; - t['Uogonek'] = 722; - t['Aacute'] = 667; - t['Adieresis'] = 667; - t['egrave'] = 556; - t['zacute'] = 500; - t['iogonek'] = 222; - t['Oacute'] = 778; - t['oacute'] = 556; - t['amacron'] = 556; - t['sacute'] = 500; - t['idieresis'] = 278; - t['Ocircumflex'] = 778; - t['Ugrave'] = 722; - t['Delta'] = 612; - t['thorn'] = 556; - t['twosuperior'] = 333; - t['Odieresis'] = 778; - t['mu'] = 556; - t['igrave'] = 278; - t['ohungarumlaut'] = 556; - t['Eogonek'] = 667; - t['dcroat'] = 556; - t['threequarters'] = 834; - t['Scedilla'] = 667; - t['lcaron'] = 299; - t['Kcommaaccent'] = 667; - t['Lacute'] = 556; - t['trademark'] = 1000; - t['edotaccent'] = 556; - t['Igrave'] = 278; - t['Imacron'] = 278; - t['Lcaron'] = 556; - t['onehalf'] = 834; - t['lessequal'] = 549; - t['ocircumflex'] = 556; - t['ntilde'] = 556; - t['Uhungarumlaut'] = 722; - t['Eacute'] = 667; - t['emacron'] = 556; - t['gbreve'] = 556; - t['onequarter'] = 834; - t['Scaron'] = 667; - t['Scommaaccent'] = 667; - t['Ohungarumlaut'] = 778; - t['degree'] = 400; - t['ograve'] = 556; - t['Ccaron'] = 722; - t['ugrave'] = 556; - t['radical'] = 453; - t['Dcaron'] = 722; - t['rcommaaccent'] = 333; - t['Ntilde'] = 722; - t['otilde'] = 556; - t['Rcommaaccent'] = 722; - t['Lcommaaccent'] = 556; - t['Atilde'] = 667; - t['Aogonek'] = 667; - t['Aring'] = 667; - t['Otilde'] = 778; - t['zdotaccent'] = 500; - t['Ecaron'] = 667; - t['Iogonek'] = 278; - t['kcommaaccent'] = 500; - t['minus'] = 584; - t['Icircumflex'] = 278; - t['ncaron'] = 556; - t['tcommaaccent'] = 278; - t['logicalnot'] = 584; - t['odieresis'] = 556; - t['udieresis'] = 556; - t['notequal'] = 549; - t['gcommaaccent'] = 556; - t['eth'] = 556; - t['zcaron'] = 500; - t['ncommaaccent'] = 556; - t['onesuperior'] = 333; - t['imacron'] = 278; - t['Euro'] = 556; - }); - t['Symbol'] = (0, _core_utils.getLookupTableFactory)(function (t) { - t['space'] = 250; - t['exclam'] = 333; - t['universal'] = 713; - t['numbersign'] = 500; - t['existential'] = 549; - t['percent'] = 833; - t['ampersand'] = 778; - t['suchthat'] = 439; - t['parenleft'] = 333; - t['parenright'] = 333; - t['asteriskmath'] = 500; - t['plus'] = 549; - t['comma'] = 250; - t['minus'] = 549; - t['period'] = 250; - t['slash'] = 278; - t['zero'] = 500; - t['one'] = 500; - t['two'] = 500; - t['three'] = 500; - t['four'] = 500; - t['five'] = 500; - t['six'] = 500; - t['seven'] = 500; - t['eight'] = 500; - t['nine'] = 500; - t['colon'] = 278; - t['semicolon'] = 278; - t['less'] = 549; - t['equal'] = 549; - t['greater'] = 549; - t['question'] = 444; - t['congruent'] = 549; - t['Alpha'] = 722; - t['Beta'] = 667; - t['Chi'] = 722; - t['Delta'] = 612; - t['Epsilon'] = 611; - t['Phi'] = 763; - t['Gamma'] = 603; - t['Eta'] = 722; - t['Iota'] = 333; - t['theta1'] = 631; - t['Kappa'] = 722; - t['Lambda'] = 686; - t['Mu'] = 889; - t['Nu'] = 722; - t['Omicron'] = 722; - t['Pi'] = 768; - t['Theta'] = 741; - t['Rho'] = 556; - t['Sigma'] = 592; - t['Tau'] = 611; - t['Upsilon'] = 690; - t['sigma1'] = 439; - t['Omega'] = 768; - t['Xi'] = 645; - t['Psi'] = 795; - t['Zeta'] = 611; - t['bracketleft'] = 333; - t['therefore'] = 863; - t['bracketright'] = 333; - t['perpendicular'] = 658; - t['underscore'] = 500; - t['radicalex'] = 500; - t['alpha'] = 631; - t['beta'] = 549; - t['chi'] = 549; - t['delta'] = 494; - t['epsilon'] = 439; - t['phi'] = 521; - t['gamma'] = 411; - t['eta'] = 603; - t['iota'] = 329; - t['phi1'] = 603; - t['kappa'] = 549; - t['lambda'] = 549; - t['mu'] = 576; - t['nu'] = 521; - t['omicron'] = 549; - t['pi'] = 549; - t['theta'] = 521; - t['rho'] = 549; - t['sigma'] = 603; - t['tau'] = 439; - t['upsilon'] = 576; - t['omega1'] = 713; - t['omega'] = 686; - t['xi'] = 493; - t['psi'] = 686; - t['zeta'] = 494; - t['braceleft'] = 480; - t['bar'] = 200; - t['braceright'] = 480; - t['similar'] = 549; - t['Euro'] = 750; - t['Upsilon1'] = 620; - t['minute'] = 247; - t['lessequal'] = 549; - t['fraction'] = 167; - t['infinity'] = 713; - t['florin'] = 500; - t['club'] = 753; - t['diamond'] = 753; - t['heart'] = 753; - t['spade'] = 753; - t['arrowboth'] = 1042; - t['arrowleft'] = 987; - t['arrowup'] = 603; - t['arrowright'] = 987; - t['arrowdown'] = 603; - t['degree'] = 400; - t['plusminus'] = 549; - t['second'] = 411; - t['greaterequal'] = 549; - t['multiply'] = 549; - t['proportional'] = 713; - t['partialdiff'] = 494; - t['bullet'] = 460; - t['divide'] = 549; - t['notequal'] = 549; - t['equivalence'] = 549; - t['approxequal'] = 549; - t['ellipsis'] = 1000; - t['arrowvertex'] = 603; - t['arrowhorizex'] = 1000; - t['carriagereturn'] = 658; - t['aleph'] = 823; - t['Ifraktur'] = 686; - t['Rfraktur'] = 795; - t['weierstrass'] = 987; - t['circlemultiply'] = 768; - t['circleplus'] = 768; - t['emptyset'] = 823; - t['intersection'] = 768; - t['union'] = 768; - t['propersuperset'] = 713; - t['reflexsuperset'] = 713; - t['notsubset'] = 713; - t['propersubset'] = 713; - t['reflexsubset'] = 713; - t['element'] = 713; - t['notelement'] = 713; - t['angle'] = 768; - t['gradient'] = 713; - t['registerserif'] = 790; - t['copyrightserif'] = 790; - t['trademarkserif'] = 890; - t['product'] = 823; - t['radical'] = 549; - t['dotmath'] = 250; - t['logicalnot'] = 713; - t['logicaland'] = 603; - t['logicalor'] = 603; - t['arrowdblboth'] = 1042; - t['arrowdblleft'] = 987; - t['arrowdblup'] = 603; - t['arrowdblright'] = 987; - t['arrowdbldown'] = 603; - t['lozenge'] = 494; - t['angleleft'] = 329; - t['registersans'] = 790; - t['copyrightsans'] = 790; - t['trademarksans'] = 786; - t['summation'] = 713; - t['parenlefttp'] = 384; - t['parenleftex'] = 384; - t['parenleftbt'] = 384; - t['bracketlefttp'] = 384; - t['bracketleftex'] = 384; - t['bracketleftbt'] = 384; - t['bracelefttp'] = 494; - t['braceleftmid'] = 494; - t['braceleftbt'] = 494; - t['braceex'] = 494; - t['angleright'] = 329; - t['integral'] = 274; - t['integraltp'] = 686; - t['integralex'] = 686; - t['integralbt'] = 686; - t['parenrighttp'] = 384; - t['parenrightex'] = 384; - t['parenrightbt'] = 384; - t['bracketrighttp'] = 384; - t['bracketrightex'] = 384; - t['bracketrightbt'] = 384; - t['bracerighttp'] = 494; - t['bracerightmid'] = 494; - t['bracerightbt'] = 494; - t['apple'] = 790; - }); - t['Times-Roman'] = (0, _core_utils.getLookupTableFactory)(function (t) { - t['space'] = 250; - t['exclam'] = 333; - t['quotedbl'] = 408; - t['numbersign'] = 500; - t['dollar'] = 500; - t['percent'] = 833; - t['ampersand'] = 778; - t['quoteright'] = 333; - t['parenleft'] = 333; - t['parenright'] = 333; - t['asterisk'] = 500; - t['plus'] = 564; - t['comma'] = 250; - t['hyphen'] = 333; - t['period'] = 250; - t['slash'] = 278; - t['zero'] = 500; - t['one'] = 500; - t['two'] = 500; - t['three'] = 500; - t['four'] = 500; - t['five'] = 500; - t['six'] = 500; - t['seven'] = 500; - t['eight'] = 500; - t['nine'] = 500; - t['colon'] = 278; - t['semicolon'] = 278; - t['less'] = 564; - t['equal'] = 564; - t['greater'] = 564; - t['question'] = 444; - t['at'] = 921; - t['A'] = 722; - t['B'] = 667; - t['C'] = 667; - t['D'] = 722; - t['E'] = 611; - t['F'] = 556; - t['G'] = 722; - t['H'] = 722; - t['I'] = 333; - t['J'] = 389; - t['K'] = 722; - t['L'] = 611; - t['M'] = 889; - t['N'] = 722; - t['O'] = 722; - t['P'] = 556; - t['Q'] = 722; - t['R'] = 667; - t['S'] = 556; - t['T'] = 611; - t['U'] = 722; - t['V'] = 722; - t['W'] = 944; - t['X'] = 722; - t['Y'] = 722; - t['Z'] = 611; - t['bracketleft'] = 333; - t['backslash'] = 278; - t['bracketright'] = 333; - t['asciicircum'] = 469; - t['underscore'] = 500; - t['quoteleft'] = 333; - t['a'] = 444; - t['b'] = 500; - t['c'] = 444; - t['d'] = 500; - t['e'] = 444; - t['f'] = 333; - t['g'] = 500; - t['h'] = 500; - t['i'] = 278; - t['j'] = 278; - t['k'] = 500; - t['l'] = 278; - t['m'] = 778; - t['n'] = 500; - t['o'] = 500; - t['p'] = 500; - t['q'] = 500; - t['r'] = 333; - t['s'] = 389; - t['t'] = 278; - t['u'] = 500; - t['v'] = 500; - t['w'] = 722; - t['x'] = 500; - t['y'] = 500; - t['z'] = 444; - t['braceleft'] = 480; - t['bar'] = 200; - t['braceright'] = 480; - t['asciitilde'] = 541; - t['exclamdown'] = 333; - t['cent'] = 500; - t['sterling'] = 500; - t['fraction'] = 167; - t['yen'] = 500; - t['florin'] = 500; - t['section'] = 500; - t['currency'] = 500; - t['quotesingle'] = 180; - t['quotedblleft'] = 444; - t['guillemotleft'] = 500; - t['guilsinglleft'] = 333; - t['guilsinglright'] = 333; - t['fi'] = 556; - t['fl'] = 556; - t['endash'] = 500; - t['dagger'] = 500; - t['daggerdbl'] = 500; - t['periodcentered'] = 250; - t['paragraph'] = 453; - t['bullet'] = 350; - t['quotesinglbase'] = 333; - t['quotedblbase'] = 444; - t['quotedblright'] = 444; - t['guillemotright'] = 500; - t['ellipsis'] = 1000; - t['perthousand'] = 1000; - t['questiondown'] = 444; - t['grave'] = 333; - t['acute'] = 333; - t['circumflex'] = 333; - t['tilde'] = 333; - t['macron'] = 333; - t['breve'] = 333; - t['dotaccent'] = 333; - t['dieresis'] = 333; - t['ring'] = 333; - t['cedilla'] = 333; - t['hungarumlaut'] = 333; - t['ogonek'] = 333; - t['caron'] = 333; - t['emdash'] = 1000; - t['AE'] = 889; - t['ordfeminine'] = 276; - t['Lslash'] = 611; - t['Oslash'] = 722; - t['OE'] = 889; - t['ordmasculine'] = 310; - t['ae'] = 667; - t['dotlessi'] = 278; - t['lslash'] = 278; - t['oslash'] = 500; - t['oe'] = 722; - t['germandbls'] = 500; - t['Idieresis'] = 333; - t['eacute'] = 444; - t['abreve'] = 444; - t['uhungarumlaut'] = 500; - t['ecaron'] = 444; - t['Ydieresis'] = 722; - t['divide'] = 564; - t['Yacute'] = 722; - t['Acircumflex'] = 722; - t['aacute'] = 444; - t['Ucircumflex'] = 722; - t['yacute'] = 500; - t['scommaaccent'] = 389; - t['ecircumflex'] = 444; - t['Uring'] = 722; - t['Udieresis'] = 722; - t['aogonek'] = 444; - t['Uacute'] = 722; - t['uogonek'] = 500; - t['Edieresis'] = 611; - t['Dcroat'] = 722; - t['commaaccent'] = 250; - t['copyright'] = 760; - t['Emacron'] = 611; - t['ccaron'] = 444; - t['aring'] = 444; - t['Ncommaaccent'] = 722; - t['lacute'] = 278; - t['agrave'] = 444; - t['Tcommaaccent'] = 611; - t['Cacute'] = 667; - t['atilde'] = 444; - t['Edotaccent'] = 611; - t['scaron'] = 389; - t['scedilla'] = 389; - t['iacute'] = 278; - t['lozenge'] = 471; - t['Rcaron'] = 667; - t['Gcommaaccent'] = 722; - t['ucircumflex'] = 500; - t['acircumflex'] = 444; - t['Amacron'] = 722; - t['rcaron'] = 333; - t['ccedilla'] = 444; - t['Zdotaccent'] = 611; - t['Thorn'] = 556; - t['Omacron'] = 722; - t['Racute'] = 667; - t['Sacute'] = 556; - t['dcaron'] = 588; - t['Umacron'] = 722; - t['uring'] = 500; - t['threesuperior'] = 300; - t['Ograve'] = 722; - t['Agrave'] = 722; - t['Abreve'] = 722; - t['multiply'] = 564; - t['uacute'] = 500; - t['Tcaron'] = 611; - t['partialdiff'] = 476; - t['ydieresis'] = 500; - t['Nacute'] = 722; - t['icircumflex'] = 278; - t['Ecircumflex'] = 611; - t['adieresis'] = 444; - t['edieresis'] = 444; - t['cacute'] = 444; - t['nacute'] = 500; - t['umacron'] = 500; - t['Ncaron'] = 722; - t['Iacute'] = 333; - t['plusminus'] = 564; - t['brokenbar'] = 200; - t['registered'] = 760; - t['Gbreve'] = 722; - t['Idotaccent'] = 333; - t['summation'] = 600; - t['Egrave'] = 611; - t['racute'] = 333; - t['omacron'] = 500; - t['Zacute'] = 611; - t['Zcaron'] = 611; - t['greaterequal'] = 549; - t['Eth'] = 722; - t['Ccedilla'] = 667; - t['lcommaaccent'] = 278; - t['tcaron'] = 326; - t['eogonek'] = 444; - t['Uogonek'] = 722; - t['Aacute'] = 722; - t['Adieresis'] = 722; - t['egrave'] = 444; - t['zacute'] = 444; - t['iogonek'] = 278; - t['Oacute'] = 722; - t['oacute'] = 500; - t['amacron'] = 444; - t['sacute'] = 389; - t['idieresis'] = 278; - t['Ocircumflex'] = 722; - t['Ugrave'] = 722; - t['Delta'] = 612; - t['thorn'] = 500; - t['twosuperior'] = 300; - t['Odieresis'] = 722; - t['mu'] = 500; - t['igrave'] = 278; - t['ohungarumlaut'] = 500; - t['Eogonek'] = 611; - t['dcroat'] = 500; - t['threequarters'] = 750; - t['Scedilla'] = 556; - t['lcaron'] = 344; - t['Kcommaaccent'] = 722; - t['Lacute'] = 611; - t['trademark'] = 980; - t['edotaccent'] = 444; - t['Igrave'] = 333; - t['Imacron'] = 333; - t['Lcaron'] = 611; - t['onehalf'] = 750; - t['lessequal'] = 549; - t['ocircumflex'] = 500; - t['ntilde'] = 500; - t['Uhungarumlaut'] = 722; - t['Eacute'] = 611; - t['emacron'] = 444; - t['gbreve'] = 500; - t['onequarter'] = 750; - t['Scaron'] = 556; - t['Scommaaccent'] = 556; - t['Ohungarumlaut'] = 722; - t['degree'] = 400; - t['ograve'] = 500; - t['Ccaron'] = 667; - t['ugrave'] = 500; - t['radical'] = 453; - t['Dcaron'] = 722; - t['rcommaaccent'] = 333; - t['Ntilde'] = 722; - t['otilde'] = 500; - t['Rcommaaccent'] = 667; - t['Lcommaaccent'] = 611; - t['Atilde'] = 722; - t['Aogonek'] = 722; - t['Aring'] = 722; - t['Otilde'] = 722; - t['zdotaccent'] = 444; - t['Ecaron'] = 611; - t['Iogonek'] = 333; - t['kcommaaccent'] = 500; - t['minus'] = 564; - t['Icircumflex'] = 333; - t['ncaron'] = 500; - t['tcommaaccent'] = 278; - t['logicalnot'] = 564; - t['odieresis'] = 500; - t['udieresis'] = 500; - t['notequal'] = 549; - t['gcommaaccent'] = 500; - t['eth'] = 500; - t['zcaron'] = 444; - t['ncommaaccent'] = 500; - t['onesuperior'] = 300; - t['imacron'] = 278; - t['Euro'] = 500; - }); - t['Times-Bold'] = (0, _core_utils.getLookupTableFactory)(function (t) { - t['space'] = 250; - t['exclam'] = 333; - t['quotedbl'] = 555; - t['numbersign'] = 500; - t['dollar'] = 500; - t['percent'] = 1000; - t['ampersand'] = 833; - t['quoteright'] = 333; - t['parenleft'] = 333; - t['parenright'] = 333; - t['asterisk'] = 500; - t['plus'] = 570; - t['comma'] = 250; - t['hyphen'] = 333; - t['period'] = 250; - t['slash'] = 278; - t['zero'] = 500; - t['one'] = 500; - t['two'] = 500; - t['three'] = 500; - t['four'] = 500; - t['five'] = 500; - t['six'] = 500; - t['seven'] = 500; - t['eight'] = 500; - t['nine'] = 500; - t['colon'] = 333; - t['semicolon'] = 333; - t['less'] = 570; - t['equal'] = 570; - t['greater'] = 570; - t['question'] = 500; - t['at'] = 930; - t['A'] = 722; - t['B'] = 667; - t['C'] = 722; - t['D'] = 722; - t['E'] = 667; - t['F'] = 611; - t['G'] = 778; - t['H'] = 778; - t['I'] = 389; - t['J'] = 500; - t['K'] = 778; - t['L'] = 667; - t['M'] = 944; - t['N'] = 722; - t['O'] = 778; - t['P'] = 611; - t['Q'] = 778; - t['R'] = 722; - t['S'] = 556; - t['T'] = 667; - t['U'] = 722; - t['V'] = 722; - t['W'] = 1000; - t['X'] = 722; - t['Y'] = 722; - t['Z'] = 667; - t['bracketleft'] = 333; - t['backslash'] = 278; - t['bracketright'] = 333; - t['asciicircum'] = 581; - t['underscore'] = 500; - t['quoteleft'] = 333; - t['a'] = 500; - t['b'] = 556; - t['c'] = 444; - t['d'] = 556; - t['e'] = 444; - t['f'] = 333; - t['g'] = 500; - t['h'] = 556; - t['i'] = 278; - t['j'] = 333; - t['k'] = 556; - t['l'] = 278; - t['m'] = 833; - t['n'] = 556; - t['o'] = 500; - t['p'] = 556; - t['q'] = 556; - t['r'] = 444; - t['s'] = 389; - t['t'] = 333; - t['u'] = 556; - t['v'] = 500; - t['w'] = 722; - t['x'] = 500; - t['y'] = 500; - t['z'] = 444; - t['braceleft'] = 394; - t['bar'] = 220; - t['braceright'] = 394; - t['asciitilde'] = 520; - t['exclamdown'] = 333; - t['cent'] = 500; - t['sterling'] = 500; - t['fraction'] = 167; - t['yen'] = 500; - t['florin'] = 500; - t['section'] = 500; - t['currency'] = 500; - t['quotesingle'] = 278; - t['quotedblleft'] = 500; - t['guillemotleft'] = 500; - t['guilsinglleft'] = 333; - t['guilsinglright'] = 333; - t['fi'] = 556; - t['fl'] = 556; - t['endash'] = 500; - t['dagger'] = 500; - t['daggerdbl'] = 500; - t['periodcentered'] = 250; - t['paragraph'] = 540; - t['bullet'] = 350; - t['quotesinglbase'] = 333; - t['quotedblbase'] = 500; - t['quotedblright'] = 500; - t['guillemotright'] = 500; - t['ellipsis'] = 1000; - t['perthousand'] = 1000; - t['questiondown'] = 500; - t['grave'] = 333; - t['acute'] = 333; - t['circumflex'] = 333; - t['tilde'] = 333; - t['macron'] = 333; - t['breve'] = 333; - t['dotaccent'] = 333; - t['dieresis'] = 333; - t['ring'] = 333; - t['cedilla'] = 333; - t['hungarumlaut'] = 333; - t['ogonek'] = 333; - t['caron'] = 333; - t['emdash'] = 1000; - t['AE'] = 1000; - t['ordfeminine'] = 300; - t['Lslash'] = 667; - t['Oslash'] = 778; - t['OE'] = 1000; - t['ordmasculine'] = 330; - t['ae'] = 722; - t['dotlessi'] = 278; - t['lslash'] = 278; - t['oslash'] = 500; - t['oe'] = 722; - t['germandbls'] = 556; - t['Idieresis'] = 389; - t['eacute'] = 444; - t['abreve'] = 500; - t['uhungarumlaut'] = 556; - t['ecaron'] = 444; - t['Ydieresis'] = 722; - t['divide'] = 570; - t['Yacute'] = 722; - t['Acircumflex'] = 722; - t['aacute'] = 500; - t['Ucircumflex'] = 722; - t['yacute'] = 500; - t['scommaaccent'] = 389; - t['ecircumflex'] = 444; - t['Uring'] = 722; - t['Udieresis'] = 722; - t['aogonek'] = 500; - t['Uacute'] = 722; - t['uogonek'] = 556; - t['Edieresis'] = 667; - t['Dcroat'] = 722; - t['commaaccent'] = 250; - t['copyright'] = 747; - t['Emacron'] = 667; - t['ccaron'] = 444; - t['aring'] = 500; - t['Ncommaaccent'] = 722; - t['lacute'] = 278; - t['agrave'] = 500; - t['Tcommaaccent'] = 667; - t['Cacute'] = 722; - t['atilde'] = 500; - t['Edotaccent'] = 667; - t['scaron'] = 389; - t['scedilla'] = 389; - t['iacute'] = 278; - t['lozenge'] = 494; - t['Rcaron'] = 722; - t['Gcommaaccent'] = 778; - t['ucircumflex'] = 556; - t['acircumflex'] = 500; - t['Amacron'] = 722; - t['rcaron'] = 444; - t['ccedilla'] = 444; - t['Zdotaccent'] = 667; - t['Thorn'] = 611; - t['Omacron'] = 778; - t['Racute'] = 722; - t['Sacute'] = 556; - t['dcaron'] = 672; - t['Umacron'] = 722; - t['uring'] = 556; - t['threesuperior'] = 300; - t['Ograve'] = 778; - t['Agrave'] = 722; - t['Abreve'] = 722; - t['multiply'] = 570; - t['uacute'] = 556; - t['Tcaron'] = 667; - t['partialdiff'] = 494; - t['ydieresis'] = 500; - t['Nacute'] = 722; - t['icircumflex'] = 278; - t['Ecircumflex'] = 667; - t['adieresis'] = 500; - t['edieresis'] = 444; - t['cacute'] = 444; - t['nacute'] = 556; - t['umacron'] = 556; - t['Ncaron'] = 722; - t['Iacute'] = 389; - t['plusminus'] = 570; - t['brokenbar'] = 220; - t['registered'] = 747; - t['Gbreve'] = 778; - t['Idotaccent'] = 389; - t['summation'] = 600; - t['Egrave'] = 667; - t['racute'] = 444; - t['omacron'] = 500; - t['Zacute'] = 667; - t['Zcaron'] = 667; - t['greaterequal'] = 549; - t['Eth'] = 722; - t['Ccedilla'] = 722; - t['lcommaaccent'] = 278; - t['tcaron'] = 416; - t['eogonek'] = 444; - t['Uogonek'] = 722; - t['Aacute'] = 722; - t['Adieresis'] = 722; - t['egrave'] = 444; - t['zacute'] = 444; - t['iogonek'] = 278; - t['Oacute'] = 778; - t['oacute'] = 500; - t['amacron'] = 500; - t['sacute'] = 389; - t['idieresis'] = 278; - t['Ocircumflex'] = 778; - t['Ugrave'] = 722; - t['Delta'] = 612; - t['thorn'] = 556; - t['twosuperior'] = 300; - t['Odieresis'] = 778; - t['mu'] = 556; - t['igrave'] = 278; - t['ohungarumlaut'] = 500; - t['Eogonek'] = 667; - t['dcroat'] = 556; - t['threequarters'] = 750; - t['Scedilla'] = 556; - t['lcaron'] = 394; - t['Kcommaaccent'] = 778; - t['Lacute'] = 667; - t['trademark'] = 1000; - t['edotaccent'] = 444; - t['Igrave'] = 389; - t['Imacron'] = 389; - t['Lcaron'] = 667; - t['onehalf'] = 750; - t['lessequal'] = 549; - t['ocircumflex'] = 500; - t['ntilde'] = 556; - t['Uhungarumlaut'] = 722; - t['Eacute'] = 667; - t['emacron'] = 444; - t['gbreve'] = 500; - t['onequarter'] = 750; - t['Scaron'] = 556; - t['Scommaaccent'] = 556; - t['Ohungarumlaut'] = 778; - t['degree'] = 400; - t['ograve'] = 500; - t['Ccaron'] = 722; - t['ugrave'] = 556; - t['radical'] = 549; - t['Dcaron'] = 722; - t['rcommaaccent'] = 444; - t['Ntilde'] = 722; - t['otilde'] = 500; - t['Rcommaaccent'] = 722; - t['Lcommaaccent'] = 667; - t['Atilde'] = 722; - t['Aogonek'] = 722; - t['Aring'] = 722; - t['Otilde'] = 778; - t['zdotaccent'] = 444; - t['Ecaron'] = 667; - t['Iogonek'] = 389; - t['kcommaaccent'] = 556; - t['minus'] = 570; - t['Icircumflex'] = 389; - t['ncaron'] = 556; - t['tcommaaccent'] = 333; - t['logicalnot'] = 570; - t['odieresis'] = 500; - t['udieresis'] = 556; - t['notequal'] = 549; - t['gcommaaccent'] = 500; - t['eth'] = 500; - t['zcaron'] = 444; - t['ncommaaccent'] = 556; - t['onesuperior'] = 300; - t['imacron'] = 278; - t['Euro'] = 500; - }); - t['Times-BoldItalic'] = (0, _core_utils.getLookupTableFactory)(function (t) { - t['space'] = 250; - t['exclam'] = 389; - t['quotedbl'] = 555; - t['numbersign'] = 500; - t['dollar'] = 500; - t['percent'] = 833; - t['ampersand'] = 778; - t['quoteright'] = 333; - t['parenleft'] = 333; - t['parenright'] = 333; - t['asterisk'] = 500; - t['plus'] = 570; - t['comma'] = 250; - t['hyphen'] = 333; - t['period'] = 250; - t['slash'] = 278; - t['zero'] = 500; - t['one'] = 500; - t['two'] = 500; - t['three'] = 500; - t['four'] = 500; - t['five'] = 500; - t['six'] = 500; - t['seven'] = 500; - t['eight'] = 500; - t['nine'] = 500; - t['colon'] = 333; - t['semicolon'] = 333; - t['less'] = 570; - t['equal'] = 570; - t['greater'] = 570; - t['question'] = 500; - t['at'] = 832; - t['A'] = 667; - t['B'] = 667; - t['C'] = 667; - t['D'] = 722; - t['E'] = 667; - t['F'] = 667; - t['G'] = 722; - t['H'] = 778; - t['I'] = 389; - t['J'] = 500; - t['K'] = 667; - t['L'] = 611; - t['M'] = 889; - t['N'] = 722; - t['O'] = 722; - t['P'] = 611; - t['Q'] = 722; - t['R'] = 667; - t['S'] = 556; - t['T'] = 611; - t['U'] = 722; - t['V'] = 667; - t['W'] = 889; - t['X'] = 667; - t['Y'] = 611; - t['Z'] = 611; - t['bracketleft'] = 333; - t['backslash'] = 278; - t['bracketright'] = 333; - t['asciicircum'] = 570; - t['underscore'] = 500; - t['quoteleft'] = 333; - t['a'] = 500; - t['b'] = 500; - t['c'] = 444; - t['d'] = 500; - t['e'] = 444; - t['f'] = 333; - t['g'] = 500; - t['h'] = 556; - t['i'] = 278; - t['j'] = 278; - t['k'] = 500; - t['l'] = 278; - t['m'] = 778; - t['n'] = 556; - t['o'] = 500; - t['p'] = 500; - t['q'] = 500; - t['r'] = 389; - t['s'] = 389; - t['t'] = 278; - t['u'] = 556; - t['v'] = 444; - t['w'] = 667; - t['x'] = 500; - t['y'] = 444; - t['z'] = 389; - t['braceleft'] = 348; - t['bar'] = 220; - t['braceright'] = 348; - t['asciitilde'] = 570; - t['exclamdown'] = 389; - t['cent'] = 500; - t['sterling'] = 500; - t['fraction'] = 167; - t['yen'] = 500; - t['florin'] = 500; - t['section'] = 500; - t['currency'] = 500; - t['quotesingle'] = 278; - t['quotedblleft'] = 500; - t['guillemotleft'] = 500; - t['guilsinglleft'] = 333; - t['guilsinglright'] = 333; - t['fi'] = 556; - t['fl'] = 556; - t['endash'] = 500; - t['dagger'] = 500; - t['daggerdbl'] = 500; - t['periodcentered'] = 250; - t['paragraph'] = 500; - t['bullet'] = 350; - t['quotesinglbase'] = 333; - t['quotedblbase'] = 500; - t['quotedblright'] = 500; - t['guillemotright'] = 500; - t['ellipsis'] = 1000; - t['perthousand'] = 1000; - t['questiondown'] = 500; - t['grave'] = 333; - t['acute'] = 333; - t['circumflex'] = 333; - t['tilde'] = 333; - t['macron'] = 333; - t['breve'] = 333; - t['dotaccent'] = 333; - t['dieresis'] = 333; - t['ring'] = 333; - t['cedilla'] = 333; - t['hungarumlaut'] = 333; - t['ogonek'] = 333; - t['caron'] = 333; - t['emdash'] = 1000; - t['AE'] = 944; - t['ordfeminine'] = 266; - t['Lslash'] = 611; - t['Oslash'] = 722; - t['OE'] = 944; - t['ordmasculine'] = 300; - t['ae'] = 722; - t['dotlessi'] = 278; - t['lslash'] = 278; - t['oslash'] = 500; - t['oe'] = 722; - t['germandbls'] = 500; - t['Idieresis'] = 389; - t['eacute'] = 444; - t['abreve'] = 500; - t['uhungarumlaut'] = 556; - t['ecaron'] = 444; - t['Ydieresis'] = 611; - t['divide'] = 570; - t['Yacute'] = 611; - t['Acircumflex'] = 667; - t['aacute'] = 500; - t['Ucircumflex'] = 722; - t['yacute'] = 444; - t['scommaaccent'] = 389; - t['ecircumflex'] = 444; - t['Uring'] = 722; - t['Udieresis'] = 722; - t['aogonek'] = 500; - t['Uacute'] = 722; - t['uogonek'] = 556; - t['Edieresis'] = 667; - t['Dcroat'] = 722; - t['commaaccent'] = 250; - t['copyright'] = 747; - t['Emacron'] = 667; - t['ccaron'] = 444; - t['aring'] = 500; - t['Ncommaaccent'] = 722; - t['lacute'] = 278; - t['agrave'] = 500; - t['Tcommaaccent'] = 611; - t['Cacute'] = 667; - t['atilde'] = 500; - t['Edotaccent'] = 667; - t['scaron'] = 389; - t['scedilla'] = 389; - t['iacute'] = 278; - t['lozenge'] = 494; - t['Rcaron'] = 667; - t['Gcommaaccent'] = 722; - t['ucircumflex'] = 556; - t['acircumflex'] = 500; - t['Amacron'] = 667; - t['rcaron'] = 389; - t['ccedilla'] = 444; - t['Zdotaccent'] = 611; - t['Thorn'] = 611; - t['Omacron'] = 722; - t['Racute'] = 667; - t['Sacute'] = 556; - t['dcaron'] = 608; - t['Umacron'] = 722; - t['uring'] = 556; - t['threesuperior'] = 300; - t['Ograve'] = 722; - t['Agrave'] = 667; - t['Abreve'] = 667; - t['multiply'] = 570; - t['uacute'] = 556; - t['Tcaron'] = 611; - t['partialdiff'] = 494; - t['ydieresis'] = 444; - t['Nacute'] = 722; - t['icircumflex'] = 278; - t['Ecircumflex'] = 667; - t['adieresis'] = 500; - t['edieresis'] = 444; - t['cacute'] = 444; - t['nacute'] = 556; - t['umacron'] = 556; - t['Ncaron'] = 722; - t['Iacute'] = 389; - t['plusminus'] = 570; - t['brokenbar'] = 220; - t['registered'] = 747; - t['Gbreve'] = 722; - t['Idotaccent'] = 389; - t['summation'] = 600; - t['Egrave'] = 667; - t['racute'] = 389; - t['omacron'] = 500; - t['Zacute'] = 611; - t['Zcaron'] = 611; - t['greaterequal'] = 549; - t['Eth'] = 722; - t['Ccedilla'] = 667; - t['lcommaaccent'] = 278; - t['tcaron'] = 366; - t['eogonek'] = 444; - t['Uogonek'] = 722; - t['Aacute'] = 667; - t['Adieresis'] = 667; - t['egrave'] = 444; - t['zacute'] = 389; - t['iogonek'] = 278; - t['Oacute'] = 722; - t['oacute'] = 500; - t['amacron'] = 500; - t['sacute'] = 389; - t['idieresis'] = 278; - t['Ocircumflex'] = 722; - t['Ugrave'] = 722; - t['Delta'] = 612; - t['thorn'] = 500; - t['twosuperior'] = 300; - t['Odieresis'] = 722; - t['mu'] = 576; - t['igrave'] = 278; - t['ohungarumlaut'] = 500; - t['Eogonek'] = 667; - t['dcroat'] = 500; - t['threequarters'] = 750; - t['Scedilla'] = 556; - t['lcaron'] = 382; - t['Kcommaaccent'] = 667; - t['Lacute'] = 611; - t['trademark'] = 1000; - t['edotaccent'] = 444; - t['Igrave'] = 389; - t['Imacron'] = 389; - t['Lcaron'] = 611; - t['onehalf'] = 750; - t['lessequal'] = 549; - t['ocircumflex'] = 500; - t['ntilde'] = 556; - t['Uhungarumlaut'] = 722; - t['Eacute'] = 667; - t['emacron'] = 444; - t['gbreve'] = 500; - t['onequarter'] = 750; - t['Scaron'] = 556; - t['Scommaaccent'] = 556; - t['Ohungarumlaut'] = 722; - t['degree'] = 400; - t['ograve'] = 500; - t['Ccaron'] = 667; - t['ugrave'] = 556; - t['radical'] = 549; - t['Dcaron'] = 722; - t['rcommaaccent'] = 389; - t['Ntilde'] = 722; - t['otilde'] = 500; - t['Rcommaaccent'] = 667; - t['Lcommaaccent'] = 611; - t['Atilde'] = 667; - t['Aogonek'] = 667; - t['Aring'] = 667; - t['Otilde'] = 722; - t['zdotaccent'] = 389; - t['Ecaron'] = 667; - t['Iogonek'] = 389; - t['kcommaaccent'] = 500; - t['minus'] = 606; - t['Icircumflex'] = 389; - t['ncaron'] = 556; - t['tcommaaccent'] = 278; - t['logicalnot'] = 606; - t['odieresis'] = 500; - t['udieresis'] = 556; - t['notequal'] = 549; - t['gcommaaccent'] = 500; - t['eth'] = 500; - t['zcaron'] = 389; - t['ncommaaccent'] = 556; - t['onesuperior'] = 300; - t['imacron'] = 278; - t['Euro'] = 500; - }); - t['Times-Italic'] = (0, _core_utils.getLookupTableFactory)(function (t) { - t['space'] = 250; - t['exclam'] = 333; - t['quotedbl'] = 420; - t['numbersign'] = 500; - t['dollar'] = 500; - t['percent'] = 833; - t['ampersand'] = 778; - t['quoteright'] = 333; - t['parenleft'] = 333; - t['parenright'] = 333; - t['asterisk'] = 500; - t['plus'] = 675; - t['comma'] = 250; - t['hyphen'] = 333; - t['period'] = 250; - t['slash'] = 278; - t['zero'] = 500; - t['one'] = 500; - t['two'] = 500; - t['three'] = 500; - t['four'] = 500; - t['five'] = 500; - t['six'] = 500; - t['seven'] = 500; - t['eight'] = 500; - t['nine'] = 500; - t['colon'] = 333; - t['semicolon'] = 333; - t['less'] = 675; - t['equal'] = 675; - t['greater'] = 675; - t['question'] = 500; - t['at'] = 920; - t['A'] = 611; - t['B'] = 611; - t['C'] = 667; - t['D'] = 722; - t['E'] = 611; - t['F'] = 611; - t['G'] = 722; - t['H'] = 722; - t['I'] = 333; - t['J'] = 444; - t['K'] = 667; - t['L'] = 556; - t['M'] = 833; - t['N'] = 667; - t['O'] = 722; - t['P'] = 611; - t['Q'] = 722; - t['R'] = 611; - t['S'] = 500; - t['T'] = 556; - t['U'] = 722; - t['V'] = 611; - t['W'] = 833; - t['X'] = 611; - t['Y'] = 556; - t['Z'] = 556; - t['bracketleft'] = 389; - t['backslash'] = 278; - t['bracketright'] = 389; - t['asciicircum'] = 422; - t['underscore'] = 500; - t['quoteleft'] = 333; - t['a'] = 500; - t['b'] = 500; - t['c'] = 444; - t['d'] = 500; - t['e'] = 444; - t['f'] = 278; - t['g'] = 500; - t['h'] = 500; - t['i'] = 278; - t['j'] = 278; - t['k'] = 444; - t['l'] = 278; - t['m'] = 722; - t['n'] = 500; - t['o'] = 500; - t['p'] = 500; - t['q'] = 500; - t['r'] = 389; - t['s'] = 389; - t['t'] = 278; - t['u'] = 500; - t['v'] = 444; - t['w'] = 667; - t['x'] = 444; - t['y'] = 444; - t['z'] = 389; - t['braceleft'] = 400; - t['bar'] = 275; - t['braceright'] = 400; - t['asciitilde'] = 541; - t['exclamdown'] = 389; - t['cent'] = 500; - t['sterling'] = 500; - t['fraction'] = 167; - t['yen'] = 500; - t['florin'] = 500; - t['section'] = 500; - t['currency'] = 500; - t['quotesingle'] = 214; - t['quotedblleft'] = 556; - t['guillemotleft'] = 500; - t['guilsinglleft'] = 333; - t['guilsinglright'] = 333; - t['fi'] = 500; - t['fl'] = 500; - t['endash'] = 500; - t['dagger'] = 500; - t['daggerdbl'] = 500; - t['periodcentered'] = 250; - t['paragraph'] = 523; - t['bullet'] = 350; - t['quotesinglbase'] = 333; - t['quotedblbase'] = 556; - t['quotedblright'] = 556; - t['guillemotright'] = 500; - t['ellipsis'] = 889; - t['perthousand'] = 1000; - t['questiondown'] = 500; - t['grave'] = 333; - t['acute'] = 333; - t['circumflex'] = 333; - t['tilde'] = 333; - t['macron'] = 333; - t['breve'] = 333; - t['dotaccent'] = 333; - t['dieresis'] = 333; - t['ring'] = 333; - t['cedilla'] = 333; - t['hungarumlaut'] = 333; - t['ogonek'] = 333; - t['caron'] = 333; - t['emdash'] = 889; - t['AE'] = 889; - t['ordfeminine'] = 276; - t['Lslash'] = 556; - t['Oslash'] = 722; - t['OE'] = 944; - t['ordmasculine'] = 310; - t['ae'] = 667; - t['dotlessi'] = 278; - t['lslash'] = 278; - t['oslash'] = 500; - t['oe'] = 667; - t['germandbls'] = 500; - t['Idieresis'] = 333; - t['eacute'] = 444; - t['abreve'] = 500; - t['uhungarumlaut'] = 500; - t['ecaron'] = 444; - t['Ydieresis'] = 556; - t['divide'] = 675; - t['Yacute'] = 556; - t['Acircumflex'] = 611; - t['aacute'] = 500; - t['Ucircumflex'] = 722; - t['yacute'] = 444; - t['scommaaccent'] = 389; - t['ecircumflex'] = 444; - t['Uring'] = 722; - t['Udieresis'] = 722; - t['aogonek'] = 500; - t['Uacute'] = 722; - t['uogonek'] = 500; - t['Edieresis'] = 611; - t['Dcroat'] = 722; - t['commaaccent'] = 250; - t['copyright'] = 760; - t['Emacron'] = 611; - t['ccaron'] = 444; - t['aring'] = 500; - t['Ncommaaccent'] = 667; - t['lacute'] = 278; - t['agrave'] = 500; - t['Tcommaaccent'] = 556; - t['Cacute'] = 667; - t['atilde'] = 500; - t['Edotaccent'] = 611; - t['scaron'] = 389; - t['scedilla'] = 389; - t['iacute'] = 278; - t['lozenge'] = 471; - t['Rcaron'] = 611; - t['Gcommaaccent'] = 722; - t['ucircumflex'] = 500; - t['acircumflex'] = 500; - t['Amacron'] = 611; - t['rcaron'] = 389; - t['ccedilla'] = 444; - t['Zdotaccent'] = 556; - t['Thorn'] = 611; - t['Omacron'] = 722; - t['Racute'] = 611; - t['Sacute'] = 500; - t['dcaron'] = 544; - t['Umacron'] = 722; - t['uring'] = 500; - t['threesuperior'] = 300; - t['Ograve'] = 722; - t['Agrave'] = 611; - t['Abreve'] = 611; - t['multiply'] = 675; - t['uacute'] = 500; - t['Tcaron'] = 556; - t['partialdiff'] = 476; - t['ydieresis'] = 444; - t['Nacute'] = 667; - t['icircumflex'] = 278; - t['Ecircumflex'] = 611; - t['adieresis'] = 500; - t['edieresis'] = 444; - t['cacute'] = 444; - t['nacute'] = 500; - t['umacron'] = 500; - t['Ncaron'] = 667; - t['Iacute'] = 333; - t['plusminus'] = 675; - t['brokenbar'] = 275; - t['registered'] = 760; - t['Gbreve'] = 722; - t['Idotaccent'] = 333; - t['summation'] = 600; - t['Egrave'] = 611; - t['racute'] = 389; - t['omacron'] = 500; - t['Zacute'] = 556; - t['Zcaron'] = 556; - t['greaterequal'] = 549; - t['Eth'] = 722; - t['Ccedilla'] = 667; - t['lcommaaccent'] = 278; - t['tcaron'] = 300; - t['eogonek'] = 444; - t['Uogonek'] = 722; - t['Aacute'] = 611; - t['Adieresis'] = 611; - t['egrave'] = 444; - t['zacute'] = 389; - t['iogonek'] = 278; - t['Oacute'] = 722; - t['oacute'] = 500; - t['amacron'] = 500; - t['sacute'] = 389; - t['idieresis'] = 278; - t['Ocircumflex'] = 722; - t['Ugrave'] = 722; - t['Delta'] = 612; - t['thorn'] = 500; - t['twosuperior'] = 300; - t['Odieresis'] = 722; - t['mu'] = 500; - t['igrave'] = 278; - t['ohungarumlaut'] = 500; - t['Eogonek'] = 611; - t['dcroat'] = 500; - t['threequarters'] = 750; - t['Scedilla'] = 500; - t['lcaron'] = 300; - t['Kcommaaccent'] = 667; - t['Lacute'] = 556; - t['trademark'] = 980; - t['edotaccent'] = 444; - t['Igrave'] = 333; - t['Imacron'] = 333; - t['Lcaron'] = 611; - t['onehalf'] = 750; - t['lessequal'] = 549; - t['ocircumflex'] = 500; - t['ntilde'] = 500; - t['Uhungarumlaut'] = 722; - t['Eacute'] = 611; - t['emacron'] = 444; - t['gbreve'] = 500; - t['onequarter'] = 750; - t['Scaron'] = 500; - t['Scommaaccent'] = 500; - t['Ohungarumlaut'] = 722; - t['degree'] = 400; - t['ograve'] = 500; - t['Ccaron'] = 667; - t['ugrave'] = 500; - t['radical'] = 453; - t['Dcaron'] = 722; - t['rcommaaccent'] = 389; - t['Ntilde'] = 667; - t['otilde'] = 500; - t['Rcommaaccent'] = 611; - t['Lcommaaccent'] = 556; - t['Atilde'] = 611; - t['Aogonek'] = 611; - t['Aring'] = 611; - t['Otilde'] = 722; - t['zdotaccent'] = 389; - t['Ecaron'] = 611; - t['Iogonek'] = 333; - t['kcommaaccent'] = 444; - t['minus'] = 675; - t['Icircumflex'] = 333; - t['ncaron'] = 500; - t['tcommaaccent'] = 278; - t['logicalnot'] = 675; - t['odieresis'] = 500; - t['udieresis'] = 500; - t['notequal'] = 549; - t['gcommaaccent'] = 500; - t['eth'] = 500; - t['zcaron'] = 389; - t['ncommaaccent'] = 500; - t['onesuperior'] = 300; - t['imacron'] = 278; - t['Euro'] = 500; - }); - t['ZapfDingbats'] = (0, _core_utils.getLookupTableFactory)(function (t) { - t['space'] = 278; - t['a1'] = 974; - t['a2'] = 961; - t['a202'] = 974; - t['a3'] = 980; - t['a4'] = 719; - t['a5'] = 789; - t['a119'] = 790; - t['a118'] = 791; - t['a117'] = 690; - t['a11'] = 960; - t['a12'] = 939; - t['a13'] = 549; - t['a14'] = 855; - t['a15'] = 911; - t['a16'] = 933; - t['a105'] = 911; - t['a17'] = 945; - t['a18'] = 974; - t['a19'] = 755; - t['a20'] = 846; - t['a21'] = 762; - t['a22'] = 761; - t['a23'] = 571; - t['a24'] = 677; - t['a25'] = 763; - t['a26'] = 760; - t['a27'] = 759; - t['a28'] = 754; - t['a6'] = 494; - t['a7'] = 552; - t['a8'] = 537; - t['a9'] = 577; - t['a10'] = 692; - t['a29'] = 786; - t['a30'] = 788; - t['a31'] = 788; - t['a32'] = 790; - t['a33'] = 793; - t['a34'] = 794; - t['a35'] = 816; - t['a36'] = 823; - t['a37'] = 789; - t['a38'] = 841; - t['a39'] = 823; - t['a40'] = 833; - t['a41'] = 816; - t['a42'] = 831; - t['a43'] = 923; - t['a44'] = 744; - t['a45'] = 723; - t['a46'] = 749; - t['a47'] = 790; - t['a48'] = 792; - t['a49'] = 695; - t['a50'] = 776; - t['a51'] = 768; - t['a52'] = 792; - t['a53'] = 759; - t['a54'] = 707; - t['a55'] = 708; - t['a56'] = 682; - t['a57'] = 701; - t['a58'] = 826; - t['a59'] = 815; - t['a60'] = 789; - t['a61'] = 789; - t['a62'] = 707; - t['a63'] = 687; - t['a64'] = 696; - t['a65'] = 689; - t['a66'] = 786; - t['a67'] = 787; - t['a68'] = 713; - t['a69'] = 791; - t['a70'] = 785; - t['a71'] = 791; - t['a72'] = 873; - t['a73'] = 761; - t['a74'] = 762; - t['a203'] = 762; - t['a75'] = 759; - t['a204'] = 759; - t['a76'] = 892; - t['a77'] = 892; - t['a78'] = 788; - t['a79'] = 784; - t['a81'] = 438; - t['a82'] = 138; - t['a83'] = 277; - t['a84'] = 415; - t['a97'] = 392; - t['a98'] = 392; - t['a99'] = 668; - t['a100'] = 668; - t['a89'] = 390; - t['a90'] = 390; - t['a93'] = 317; - t['a94'] = 317; - t['a91'] = 276; - t['a92'] = 276; - t['a205'] = 509; - t['a85'] = 509; - t['a206'] = 410; - t['a86'] = 410; - t['a87'] = 234; - t['a88'] = 234; - t['a95'] = 334; - t['a96'] = 334; - t['a101'] = 732; - t['a102'] = 544; - t['a103'] = 544; - t['a104'] = 910; - t['a106'] = 667; - t['a107'] = 760; - t['a108'] = 760; - t['a112'] = 776; - t['a111'] = 595; - t['a110'] = 694; - t['a109'] = 626; - t['a120'] = 788; - t['a121'] = 788; - t['a122'] = 788; - t['a123'] = 788; - t['a124'] = 788; - t['a125'] = 788; - t['a126'] = 788; - t['a127'] = 788; - t['a128'] = 788; - t['a129'] = 788; - t['a130'] = 788; - t['a131'] = 788; - t['a132'] = 788; - t['a133'] = 788; - t['a134'] = 788; - t['a135'] = 788; - t['a136'] = 788; - t['a137'] = 788; - t['a138'] = 788; - t['a139'] = 788; - t['a140'] = 788; - t['a141'] = 788; - t['a142'] = 788; - t['a143'] = 788; - t['a144'] = 788; - t['a145'] = 788; - t['a146'] = 788; - t['a147'] = 788; - t['a148'] = 788; - t['a149'] = 788; - t['a150'] = 788; - t['a151'] = 788; - t['a152'] = 788; - t['a153'] = 788; - t['a154'] = 788; - t['a155'] = 788; - t['a156'] = 788; - t['a157'] = 788; - t['a158'] = 788; - t['a159'] = 788; - t['a160'] = 894; - t['a161'] = 838; - t['a163'] = 1016; - t['a164'] = 458; - t['a196'] = 748; - t['a165'] = 924; - t['a192'] = 748; - t['a166'] = 918; - t['a167'] = 927; - t['a168'] = 928; - t['a169'] = 928; - t['a170'] = 834; - t['a171'] = 873; - t['a172'] = 828; - t['a173'] = 924; - t['a162'] = 924; - t['a174'] = 917; - t['a175'] = 930; - t['a176'] = 931; - t['a177'] = 463; - t['a178'] = 883; - t['a179'] = 836; - t['a193'] = 836; - t['a180'] = 867; - t['a199'] = 867; - t['a181'] = 696; - t['a200'] = 696; - t['a182'] = 874; - t['a201'] = 874; - t['a183'] = 760; - t['a184'] = 946; - t['a197'] = 771; - t['a185'] = 865; - t['a194'] = 771; - t['a198'] = 888; - t['a186'] = 967; - t['a195'] = 888; - t['a187'] = 831; - t['a188'] = 873; - t['a189'] = 927; - t['a190'] = 970; - t['a191'] = 918; - }); -}); -exports.getMetrics = getMetrics; - /***/ }), /* 186 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.isPDFFunction = isPDFFunction; -exports.PostScriptCompiler = exports.PostScriptEvaluator = exports.PDFFunctionFactory = void 0; - -var _util = __w_pdfjs_require__(5); - -var _primitives = __w_pdfjs_require__(151); - -var _ps_parser = __w_pdfjs_require__(187); - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var IsEvalSupportedCached = { - get value() { - return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)()); - } - -}; - -var PDFFunctionFactory = -/*#__PURE__*/ -function () { - function PDFFunctionFactory(_ref) { - var xref = _ref.xref, - _ref$isEvalSupported = _ref.isEvalSupported, - isEvalSupported = _ref$isEvalSupported === void 0 ? true : _ref$isEvalSupported; - - _classCallCheck(this, PDFFunctionFactory); - - this.xref = xref; - this.isEvalSupported = isEvalSupported !== false; - } - - _createClass(PDFFunctionFactory, [{ - key: "create", - value: function create(fn) { - return PDFFunction.parse({ - xref: this.xref, - isEvalSupported: this.isEvalSupported, - fn: fn - }); - } - }, { - key: "createFromArray", - value: function createFromArray(fnObj) { - return PDFFunction.parseArray({ - xref: this.xref, - isEvalSupported: this.isEvalSupported, - fnObj: fnObj - }); - } - }]); - - return PDFFunctionFactory; -}(); - -exports.PDFFunctionFactory = PDFFunctionFactory; - -function toNumberArray(arr) { - if (!Array.isArray(arr)) { - return null; - } - - var length = arr.length; - - for (var i = 0; i < length; i++) { - if (typeof arr[i] !== 'number') { - var result = new Array(length); - - for (var _i = 0; _i < length; _i++) { - result[_i] = +arr[_i]; - } - - return result; - } - } - - return arr; -} - -var PDFFunction = function PDFFunctionClosure() { - var CONSTRUCT_SAMPLED = 0; - var CONSTRUCT_INTERPOLATED = 2; - var CONSTRUCT_STICHED = 3; - var CONSTRUCT_POSTSCRIPT = 4; - return { - getSampleArray: function getSampleArray(size, outputSize, bps, stream) { - var i, ii; - var length = 1; - - for (i = 0, ii = size.length; i < ii; i++) { - length *= size[i]; - } - - length *= outputSize; - var array = new Array(length); - var codeSize = 0; - var codeBuf = 0; - var sampleMul = 1.0 / (Math.pow(2.0, bps) - 1); - var strBytes = stream.getBytes((length * bps + 7) / 8); - var strIdx = 0; - - for (i = 0; i < length; i++) { - while (codeSize < bps) { - codeBuf <<= 8; - codeBuf |= strBytes[strIdx++]; - codeSize += 8; - } - - codeSize -= bps; - array[i] = (codeBuf >> codeSize) * sampleMul; - codeBuf &= (1 << codeSize) - 1; - } - - return array; - }, - getIR: function getIR(_ref2) { - var xref = _ref2.xref, - isEvalSupported = _ref2.isEvalSupported, - fn = _ref2.fn; - var dict = fn.dict; - - if (!dict) { - dict = fn; - } - - var types = [this.constructSampled, null, this.constructInterpolated, this.constructStiched, this.constructPostScript]; - var typeNum = dict.get('FunctionType'); - var typeFn = types[typeNum]; - - if (!typeFn) { - throw new _util.FormatError('Unknown type of function'); - } - - return typeFn.call(this, { - xref: xref, - isEvalSupported: isEvalSupported, - fn: fn, - dict: dict - }); - }, - fromIR: function fromIR(_ref3) { - var xref = _ref3.xref, - isEvalSupported = _ref3.isEvalSupported, - IR = _ref3.IR; - var type = IR[0]; - - switch (type) { - case CONSTRUCT_SAMPLED: - return this.constructSampledFromIR({ - xref: xref, - isEvalSupported: isEvalSupported, - IR: IR - }); - - case CONSTRUCT_INTERPOLATED: - return this.constructInterpolatedFromIR({ - xref: xref, - isEvalSupported: isEvalSupported, - IR: IR - }); - - case CONSTRUCT_STICHED: - return this.constructStichedFromIR({ - xref: xref, - isEvalSupported: isEvalSupported, - IR: IR - }); - - default: - return this.constructPostScriptFromIR({ - xref: xref, - isEvalSupported: isEvalSupported, - IR: IR - }); - } - }, - parse: function parse(_ref4) { - var xref = _ref4.xref, - isEvalSupported = _ref4.isEvalSupported, - fn = _ref4.fn; - var IR = this.getIR({ - xref: xref, - isEvalSupported: isEvalSupported, - fn: fn - }); - return this.fromIR({ - xref: xref, - isEvalSupported: isEvalSupported, - IR: IR - }); - }, - parseArray: function parseArray(_ref5) { - var xref = _ref5.xref, - isEvalSupported = _ref5.isEvalSupported, - fnObj = _ref5.fnObj; - - if (!Array.isArray(fnObj)) { - return this.parse({ - xref: xref, - isEvalSupported: isEvalSupported, - fn: fnObj - }); - } - - var fnArray = []; - - for (var j = 0, jj = fnObj.length; j < jj; j++) { - fnArray.push(this.parse({ - xref: xref, - isEvalSupported: isEvalSupported, - fn: xref.fetchIfRef(fnObj[j]) - })); - } - - return function (src, srcOffset, dest, destOffset) { - for (var i = 0, ii = fnArray.length; i < ii; i++) { - fnArray[i](src, srcOffset, dest, destOffset + i); - } - }; - }, - constructSampled: function constructSampled(_ref6) { - var xref = _ref6.xref, - isEvalSupported = _ref6.isEvalSupported, - fn = _ref6.fn, - dict = _ref6.dict; - - function toMultiArray(arr) { - var inputLength = arr.length; - var out = []; - var index = 0; - - for (var i = 0; i < inputLength; i += 2) { - out[index] = [arr[i], arr[i + 1]]; - ++index; - } - - return out; - } - - var domain = toNumberArray(dict.getArray('Domain')); - var range = toNumberArray(dict.getArray('Range')); - - if (!domain || !range) { - throw new _util.FormatError('No domain or range'); - } - - var inputSize = domain.length / 2; - var outputSize = range.length / 2; - domain = toMultiArray(domain); - range = toMultiArray(range); - var size = toNumberArray(dict.getArray('Size')); - var bps = dict.get('BitsPerSample'); - var order = dict.get('Order') || 1; - - if (order !== 1) { - (0, _util.info)('No support for cubic spline interpolation: ' + order); - } - - var encode = toNumberArray(dict.getArray('Encode')); - - if (!encode) { - encode = []; - - for (var i = 0; i < inputSize; ++i) { - encode.push([0, size[i] - 1]); - } - } else { - encode = toMultiArray(encode); - } - - var decode = toNumberArray(dict.getArray('Decode')); - - if (!decode) { - decode = range; - } else { - decode = toMultiArray(decode); - } - - var samples = this.getSampleArray(size, outputSize, bps, fn); - return [CONSTRUCT_SAMPLED, inputSize, domain, encode, decode, samples, size, outputSize, Math.pow(2, bps) - 1, range]; - }, - constructSampledFromIR: function constructSampledFromIR(_ref7) { - var xref = _ref7.xref, - isEvalSupported = _ref7.isEvalSupported, - IR = _ref7.IR; - - function interpolate(x, xmin, xmax, ymin, ymax) { - return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin)); - } - - return function constructSampledFromIRResult(src, srcOffset, dest, destOffset) { - var m = IR[1]; - var domain = IR[2]; - var encode = IR[3]; - var decode = IR[4]; - var samples = IR[5]; - var size = IR[6]; - var n = IR[7]; - var range = IR[9]; - var cubeVertices = 1 << m; - var cubeN = new Float64Array(cubeVertices); - var cubeVertex = new Uint32Array(cubeVertices); - var i, j; - - for (j = 0; j < cubeVertices; j++) { - cubeN[j] = 1; - } - - var k = n, - pos = 1; - - for (i = 0; i < m; ++i) { - var domain_2i = domain[i][0]; - var domain_2i_1 = domain[i][1]; - var xi = Math.min(Math.max(src[srcOffset + i], domain_2i), domain_2i_1); - var e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]); - var size_i = size[i]; - e = Math.min(Math.max(e, 0), size_i - 1); - var e0 = e < size_i - 1 ? Math.floor(e) : e - 1; - var n0 = e0 + 1 - e; - var n1 = e - e0; - var offset0 = e0 * k; - var offset1 = offset0 + k; - - for (j = 0; j < cubeVertices; j++) { - if (j & pos) { - cubeN[j] *= n1; - cubeVertex[j] += offset1; - } else { - cubeN[j] *= n0; - cubeVertex[j] += offset0; - } - } - - k *= size_i; - pos <<= 1; - } - - for (j = 0; j < n; ++j) { - var rj = 0; - - for (i = 0; i < cubeVertices; i++) { - rj += samples[cubeVertex[i] + j] * cubeN[i]; - } - - rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]); - dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]); - } - }; - }, - constructInterpolated: function constructInterpolated(_ref8) { - var xref = _ref8.xref, - isEvalSupported = _ref8.isEvalSupported, - fn = _ref8.fn, - dict = _ref8.dict; - var c0 = toNumberArray(dict.getArray('C0')) || [0]; - var c1 = toNumberArray(dict.getArray('C1')) || [1]; - var n = dict.get('N'); - var length = c0.length; - var diff = []; - - for (var i = 0; i < length; ++i) { - diff.push(c1[i] - c0[i]); - } - - return [CONSTRUCT_INTERPOLATED, c0, diff, n]; - }, - constructInterpolatedFromIR: function constructInterpolatedFromIR(_ref9) { - var xref = _ref9.xref, - isEvalSupported = _ref9.isEvalSupported, - IR = _ref9.IR; - var c0 = IR[1]; - var diff = IR[2]; - var n = IR[3]; - var length = diff.length; - return function constructInterpolatedFromIRResult(src, srcOffset, dest, destOffset) { - var x = n === 1 ? src[srcOffset] : Math.pow(src[srcOffset], n); - - for (var j = 0; j < length; ++j) { - dest[destOffset + j] = c0[j] + x * diff[j]; - } - }; - }, - constructStiched: function constructStiched(_ref10) { - var xref = _ref10.xref, - isEvalSupported = _ref10.isEvalSupported, - fn = _ref10.fn, - dict = _ref10.dict; - var domain = toNumberArray(dict.getArray('Domain')); - - if (!domain) { - throw new _util.FormatError('No domain'); - } - - var inputSize = domain.length / 2; - - if (inputSize !== 1) { - throw new _util.FormatError('Bad domain for stiched function'); - } - - var fnRefs = dict.get('Functions'); - var fns = []; - - for (var i = 0, ii = fnRefs.length; i < ii; ++i) { - fns.push(this.parse({ - xref: xref, - isEvalSupported: isEvalSupported, - fn: xref.fetchIfRef(fnRefs[i]) - })); - } - - var bounds = toNumberArray(dict.getArray('Bounds')); - var encode = toNumberArray(dict.getArray('Encode')); - return [CONSTRUCT_STICHED, domain, bounds, encode, fns]; - }, - constructStichedFromIR: function constructStichedFromIR(_ref11) { - var xref = _ref11.xref, - isEvalSupported = _ref11.isEvalSupported, - IR = _ref11.IR; - var domain = IR[1]; - var bounds = IR[2]; - var encode = IR[3]; - var fns = IR[4]; - var tmpBuf = new Float32Array(1); - return function constructStichedFromIRResult(src, srcOffset, dest, destOffset) { - var clip = function constructStichedFromIRClip(v, min, max) { - if (v > max) { - v = max; - } else if (v < min) { - v = min; - } - - return v; - }; - - var v = clip(src[srcOffset], domain[0], domain[1]); - - for (var i = 0, ii = bounds.length; i < ii; ++i) { - if (v < bounds[i]) { - break; - } - } - - var dmin = domain[0]; - - if (i > 0) { - dmin = bounds[i - 1]; - } - - var dmax = domain[1]; - - if (i < bounds.length) { - dmax = bounds[i]; - } - - var rmin = encode[2 * i]; - var rmax = encode[2 * i + 1]; - tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin); - fns[i](tmpBuf, 0, dest, destOffset); - }; - }, - constructPostScript: function constructPostScript(_ref12) { - var xref = _ref12.xref, - isEvalSupported = _ref12.isEvalSupported, - fn = _ref12.fn, - dict = _ref12.dict; - var domain = toNumberArray(dict.getArray('Domain')); - var range = toNumberArray(dict.getArray('Range')); - - if (!domain) { - throw new _util.FormatError('No domain.'); - } - - if (!range) { - throw new _util.FormatError('No range.'); - } - - var lexer = new _ps_parser.PostScriptLexer(fn); - var parser = new _ps_parser.PostScriptParser(lexer); - var code = parser.parse(); - return [CONSTRUCT_POSTSCRIPT, domain, range, code]; - }, - constructPostScriptFromIR: function constructPostScriptFromIR(_ref13) { - var xref = _ref13.xref, - isEvalSupported = _ref13.isEvalSupported, - IR = _ref13.IR; - var domain = IR[1]; - var range = IR[2]; - var code = IR[3]; - - if (isEvalSupported && IsEvalSupportedCached.value) { - var compiled = new PostScriptCompiler().compile(code, domain, range); - - if (compiled) { - return new Function('src', 'srcOffset', 'dest', 'destOffset', compiled); - } - } - - (0, _util.info)('Unable to compile PS function'); - var numOutputs = range.length >> 1; - var numInputs = domain.length >> 1; - var evaluator = new PostScriptEvaluator(code); - var cache = Object.create(null); - var MAX_CACHE_SIZE = 2048 * 4; - var cache_available = MAX_CACHE_SIZE; - var tmpBuf = new Float32Array(numInputs); - return function constructPostScriptFromIRResult(src, srcOffset, dest, destOffset) { - var i, value; - var key = ''; - var input = tmpBuf; - - for (i = 0; i < numInputs; i++) { - value = src[srcOffset + i]; - input[i] = value; - key += value + '_'; - } - - var cachedValue = cache[key]; - - if (cachedValue !== undefined) { - dest.set(cachedValue, destOffset); - return; - } - - var output = new Float32Array(numOutputs); - var stack = evaluator.execute(input); - var stackIndex = stack.length - numOutputs; - - for (i = 0; i < numOutputs; i++) { - value = stack[stackIndex + i]; - var bound = range[i * 2]; - - if (value < bound) { - value = bound; - } else { - bound = range[i * 2 + 1]; - - if (value > bound) { - value = bound; - } - } - - output[i] = value; - } - - if (cache_available > 0) { - cache_available--; - cache[key] = output; - } - - dest.set(output, destOffset); - }; - } - }; -}(); - -function isPDFFunction(v) { - var fnDict; - - if (_typeof(v) !== 'object') { - return false; - } else if ((0, _primitives.isDict)(v)) { - fnDict = v; - } else if ((0, _primitives.isStream)(v)) { - fnDict = v.dict; - } else { - return false; - } - - return fnDict.has('FunctionType'); -} - -var PostScriptStack = function PostScriptStackClosure() { - var MAX_STACK_SIZE = 100; - - function PostScriptStack(initialStack) { - this.stack = !initialStack ? [] : Array.prototype.slice.call(initialStack, 0); - } - - PostScriptStack.prototype = { - push: function PostScriptStack_push(value) { - if (this.stack.length >= MAX_STACK_SIZE) { - throw new Error('PostScript function stack overflow.'); - } - - this.stack.push(value); - }, - pop: function PostScriptStack_pop() { - if (this.stack.length <= 0) { - throw new Error('PostScript function stack underflow.'); - } - - return this.stack.pop(); - }, - copy: function PostScriptStack_copy(n) { - if (this.stack.length + n >= MAX_STACK_SIZE) { - throw new Error('PostScript function stack overflow.'); - } - - var stack = this.stack; - - for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) { - stack.push(stack[i]); - } - }, - index: function PostScriptStack_index(n) { - this.push(this.stack[this.stack.length - n - 1]); - }, - roll: function PostScriptStack_roll(n, p) { - var stack = this.stack; - var l = stack.length - n; - var r = stack.length - 1, - c = l + (p - Math.floor(p / n) * n), - i, - j, - t; - - for (i = l, j = r; i < j; i++, j--) { - t = stack[i]; - stack[i] = stack[j]; - stack[j] = t; - } - - for (i = l, j = c - 1; i < j; i++, j--) { - t = stack[i]; - stack[i] = stack[j]; - stack[j] = t; - } - - for (i = c, j = r; i < j; i++, j--) { - t = stack[i]; - stack[i] = stack[j]; - stack[j] = t; - } - } - }; - return PostScriptStack; -}(); - -var PostScriptEvaluator = function PostScriptEvaluatorClosure() { - function PostScriptEvaluator(operators) { - this.operators = operators; - } - - PostScriptEvaluator.prototype = { - execute: function PostScriptEvaluator_execute(initialStack) { - var stack = new PostScriptStack(initialStack); - var counter = 0; - var operators = this.operators; - var length = operators.length; - var operator, a, b; - - while (counter < length) { - operator = operators[counter++]; - - if (typeof operator === 'number') { - stack.push(operator); - continue; - } - - switch (operator) { - case 'jz': - b = stack.pop(); - a = stack.pop(); - - if (!a) { - counter = b; - } - - break; - - case 'j': - a = stack.pop(); - counter = a; - break; - - case 'abs': - a = stack.pop(); - stack.push(Math.abs(a)); - break; - - case 'add': - b = stack.pop(); - a = stack.pop(); - stack.push(a + b); - break; - - case 'and': - b = stack.pop(); - a = stack.pop(); - - if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) { - stack.push(a && b); - } else { - stack.push(a & b); - } - - break; - - case 'atan': - a = stack.pop(); - stack.push(Math.atan(a)); - break; - - case 'bitshift': - b = stack.pop(); - a = stack.pop(); - - if (a > 0) { - stack.push(a << b); - } else { - stack.push(a >> b); - } - - break; - - case 'ceiling': - a = stack.pop(); - stack.push(Math.ceil(a)); - break; - - case 'copy': - a = stack.pop(); - stack.copy(a); - break; - - case 'cos': - a = stack.pop(); - stack.push(Math.cos(a)); - break; - - case 'cvi': - a = stack.pop() | 0; - stack.push(a); - break; - - case 'cvr': - break; - - case 'div': - b = stack.pop(); - a = stack.pop(); - stack.push(a / b); - break; - - case 'dup': - stack.copy(1); - break; - - case 'eq': - b = stack.pop(); - a = stack.pop(); - stack.push(a === b); - break; - - case 'exch': - stack.roll(2, 1); - break; - - case 'exp': - b = stack.pop(); - a = stack.pop(); - stack.push(Math.pow(a, b)); - break; - - case 'false': - stack.push(false); - break; - - case 'floor': - a = stack.pop(); - stack.push(Math.floor(a)); - break; - - case 'ge': - b = stack.pop(); - a = stack.pop(); - stack.push(a >= b); - break; - - case 'gt': - b = stack.pop(); - a = stack.pop(); - stack.push(a > b); - break; - - case 'idiv': - b = stack.pop(); - a = stack.pop(); - stack.push(a / b | 0); - break; - - case 'index': - a = stack.pop(); - stack.index(a); - break; - - case 'le': - b = stack.pop(); - a = stack.pop(); - stack.push(a <= b); - break; - - case 'ln': - a = stack.pop(); - stack.push(Math.log(a)); - break; - - case 'log': - a = stack.pop(); - stack.push(Math.log(a) / Math.LN10); - break; - - case 'lt': - b = stack.pop(); - a = stack.pop(); - stack.push(a < b); - break; - - case 'mod': - b = stack.pop(); - a = stack.pop(); - stack.push(a % b); - break; - - case 'mul': - b = stack.pop(); - a = stack.pop(); - stack.push(a * b); - break; - - case 'ne': - b = stack.pop(); - a = stack.pop(); - stack.push(a !== b); - break; - - case 'neg': - a = stack.pop(); - stack.push(-a); - break; - - case 'not': - a = stack.pop(); - - if ((0, _util.isBool)(a)) { - stack.push(!a); - } else { - stack.push(~a); - } - - break; - - case 'or': - b = stack.pop(); - a = stack.pop(); - - if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) { - stack.push(a || b); - } else { - stack.push(a | b); - } - - break; - - case 'pop': - stack.pop(); - break; - - case 'roll': - b = stack.pop(); - a = stack.pop(); - stack.roll(a, b); - break; - - case 'round': - a = stack.pop(); - stack.push(Math.round(a)); - break; - - case 'sin': - a = stack.pop(); - stack.push(Math.sin(a)); - break; - - case 'sqrt': - a = stack.pop(); - stack.push(Math.sqrt(a)); - break; - - case 'sub': - b = stack.pop(); - a = stack.pop(); - stack.push(a - b); - break; - - case 'true': - stack.push(true); - break; - - case 'truncate': - a = stack.pop(); - a = a < 0 ? Math.ceil(a) : Math.floor(a); - stack.push(a); - break; - - case 'xor': - b = stack.pop(); - a = stack.pop(); - - if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) { - stack.push(a !== b); - } else { - stack.push(a ^ b); - } - - break; - - default: - throw new _util.FormatError("Unknown operator ".concat(operator)); - } - } - - return stack.stack; - } - }; - return PostScriptEvaluator; -}(); - -exports.PostScriptEvaluator = PostScriptEvaluator; - -var PostScriptCompiler = function PostScriptCompilerClosure() { - function AstNode(type) { - this.type = type; - } - - AstNode.prototype.visit = function (visitor) { - (0, _util.unreachable)('abstract method'); - }; - - function AstArgument(index, min, max) { - AstNode.call(this, 'args'); - this.index = index; - this.min = min; - this.max = max; - } - - AstArgument.prototype = Object.create(AstNode.prototype); - - AstArgument.prototype.visit = function (visitor) { - visitor.visitArgument(this); - }; - - function AstLiteral(number) { - AstNode.call(this, 'literal'); - this.number = number; - this.min = number; - this.max = number; - } - - AstLiteral.prototype = Object.create(AstNode.prototype); - - AstLiteral.prototype.visit = function (visitor) { - visitor.visitLiteral(this); - }; - - function AstBinaryOperation(op, arg1, arg2, min, max) { - AstNode.call(this, 'binary'); - this.op = op; - this.arg1 = arg1; - this.arg2 = arg2; - this.min = min; - this.max = max; - } - - AstBinaryOperation.prototype = Object.create(AstNode.prototype); - - AstBinaryOperation.prototype.visit = function (visitor) { - visitor.visitBinaryOperation(this); - }; - - function AstMin(arg, max) { - AstNode.call(this, 'max'); - this.arg = arg; - this.min = arg.min; - this.max = max; - } - - AstMin.prototype = Object.create(AstNode.prototype); - - AstMin.prototype.visit = function (visitor) { - visitor.visitMin(this); - }; - - function AstVariable(index, min, max) { - AstNode.call(this, 'var'); - this.index = index; - this.min = min; - this.max = max; - } - - AstVariable.prototype = Object.create(AstNode.prototype); - - AstVariable.prototype.visit = function (visitor) { - visitor.visitVariable(this); - }; - - function AstVariableDefinition(variable, arg) { - AstNode.call(this, 'definition'); - this.variable = variable; - this.arg = arg; - } - - AstVariableDefinition.prototype = Object.create(AstNode.prototype); - - AstVariableDefinition.prototype.visit = function (visitor) { - visitor.visitVariableDefinition(this); - }; - - function ExpressionBuilderVisitor() { - this.parts = []; - } - - ExpressionBuilderVisitor.prototype = { - visitArgument: function visitArgument(arg) { - this.parts.push('Math.max(', arg.min, ', Math.min(', arg.max, ', src[srcOffset + ', arg.index, ']))'); - }, - visitVariable: function visitVariable(variable) { - this.parts.push('v', variable.index); - }, - visitLiteral: function visitLiteral(literal) { - this.parts.push(literal.number); - }, - visitBinaryOperation: function visitBinaryOperation(operation) { - this.parts.push('('); - operation.arg1.visit(this); - this.parts.push(' ', operation.op, ' '); - operation.arg2.visit(this); - this.parts.push(')'); - }, - visitVariableDefinition: function visitVariableDefinition(definition) { - this.parts.push('var '); - definition.variable.visit(this); - this.parts.push(' = '); - definition.arg.visit(this); - this.parts.push(';'); - }, - visitMin: function visitMin(max) { - this.parts.push('Math.min('); - max.arg.visit(this); - this.parts.push(', ', max.max, ')'); - }, - toString: function toString() { - return this.parts.join(''); - } - }; - - function buildAddOperation(num1, num2) { - if (num2.type === 'literal' && num2.number === 0) { - return num1; - } - - if (num1.type === 'literal' && num1.number === 0) { - return num2; - } - - if (num2.type === 'literal' && num1.type === 'literal') { - return new AstLiteral(num1.number + num2.number); - } - - return new AstBinaryOperation('+', num1, num2, num1.min + num2.min, num1.max + num2.max); - } - - function buildMulOperation(num1, num2) { - if (num2.type === 'literal') { - if (num2.number === 0) { - return new AstLiteral(0); - } else if (num2.number === 1) { - return num1; - } else if (num1.type === 'literal') { - return new AstLiteral(num1.number * num2.number); - } - } - - if (num1.type === 'literal') { - if (num1.number === 0) { - return new AstLiteral(0); - } else if (num1.number === 1) { - return num2; - } - } - - var min = Math.min(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max); - var max = Math.max(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max); - return new AstBinaryOperation('*', num1, num2, min, max); - } - - function buildSubOperation(num1, num2) { - if (num2.type === 'literal') { - if (num2.number === 0) { - return num1; - } else if (num1.type === 'literal') { - return new AstLiteral(num1.number - num2.number); - } - } - - if (num2.type === 'binary' && num2.op === '-' && num1.type === 'literal' && num1.number === 1 && num2.arg1.type === 'literal' && num2.arg1.number === 1) { - return num2.arg2; - } - - return new AstBinaryOperation('-', num1, num2, num1.min - num2.max, num1.max - num2.min); - } - - function buildMinOperation(num1, max) { - if (num1.min >= max) { - return new AstLiteral(max); - } else if (num1.max <= max) { - return num1; - } - - return new AstMin(num1, max); - } - - function PostScriptCompiler() {} - - PostScriptCompiler.prototype = { - compile: function PostScriptCompiler_compile(code, domain, range) { - var stack = []; - var i, ii; - var instructions = []; - var inputSize = domain.length >> 1, - outputSize = range.length >> 1; - var lastRegister = 0; - var n, j; - var num1, num2, ast1, ast2, tmpVar, item; - - for (i = 0; i < inputSize; i++) { - stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1])); - } - - for (i = 0, ii = code.length; i < ii; i++) { - item = code[i]; - - if (typeof item === 'number') { - stack.push(new AstLiteral(item)); - continue; - } - - switch (item) { - case 'add': - if (stack.length < 2) { - return null; - } - - num2 = stack.pop(); - num1 = stack.pop(); - stack.push(buildAddOperation(num1, num2)); - break; - - case 'cvr': - if (stack.length < 1) { - return null; - } - - break; - - case 'mul': - if (stack.length < 2) { - return null; - } - - num2 = stack.pop(); - num1 = stack.pop(); - stack.push(buildMulOperation(num1, num2)); - break; - - case 'sub': - if (stack.length < 2) { - return null; - } - - num2 = stack.pop(); - num1 = stack.pop(); - stack.push(buildSubOperation(num1, num2)); - break; - - case 'exch': - if (stack.length < 2) { - return null; - } - - ast1 = stack.pop(); - ast2 = stack.pop(); - stack.push(ast1, ast2); - break; - - case 'pop': - if (stack.length < 1) { - return null; - } - - stack.pop(); - break; - - case 'index': - if (stack.length < 1) { - return null; - } - - num1 = stack.pop(); - - if (num1.type !== 'literal') { - return null; - } - - n = num1.number; - - if (n < 0 || !Number.isInteger(n) || stack.length < n) { - return null; - } - - ast1 = stack[stack.length - n - 1]; - - if (ast1.type === 'literal' || ast1.type === 'var') { - stack.push(ast1); - break; - } - - tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max); - stack[stack.length - n - 1] = tmpVar; - stack.push(tmpVar); - instructions.push(new AstVariableDefinition(tmpVar, ast1)); - break; - - case 'dup': - if (stack.length < 1) { - return null; - } - - if (typeof code[i + 1] === 'number' && code[i + 2] === 'gt' && code[i + 3] === i + 7 && code[i + 4] === 'jz' && code[i + 5] === 'pop' && code[i + 6] === code[i + 1]) { - num1 = stack.pop(); - stack.push(buildMinOperation(num1, code[i + 1])); - i += 6; - break; - } - - ast1 = stack[stack.length - 1]; - - if (ast1.type === 'literal' || ast1.type === 'var') { - stack.push(ast1); - break; - } - - tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max); - stack[stack.length - 1] = tmpVar; - stack.push(tmpVar); - instructions.push(new AstVariableDefinition(tmpVar, ast1)); - break; - - case 'roll': - if (stack.length < 2) { - return null; - } - - num2 = stack.pop(); - num1 = stack.pop(); - - if (num2.type !== 'literal' || num1.type !== 'literal') { - return null; - } - - j = num2.number; - n = num1.number; - - if (n <= 0 || !Number.isInteger(n) || !Number.isInteger(j) || stack.length < n) { - return null; - } - - j = (j % n + n) % n; - - if (j === 0) { - break; - } - - Array.prototype.push.apply(stack, stack.splice(stack.length - n, n - j)); - break; - - default: - return null; - } - } - - if (stack.length !== outputSize) { - return null; - } - - var result = []; - instructions.forEach(function (instruction) { - var statementBuilder = new ExpressionBuilderVisitor(); - instruction.visit(statementBuilder); - result.push(statementBuilder.toString()); - }); - stack.forEach(function (expr, i) { - var statementBuilder = new ExpressionBuilderVisitor(); - expr.visit(statementBuilder); - var min = range[i * 2], - max = range[i * 2 + 1]; - var out = [statementBuilder.toString()]; - - if (min > expr.min) { - out.unshift('Math.max(', min, ', '); - out.push(')'); - } - - if (max < expr.max) { - out.unshift('Math.min(', max, ', '); - out.push(')'); - } - - out.unshift('dest[destOffset + ', i, '] = '); - out.push(';'); - result.push(out.join('')); - }); - return result.join('\n'); - } - }; - return PostScriptCompiler; -}(); - -exports.PostScriptCompiler = PostScriptCompiler; - -/***/ }), -/* 187 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PostScriptParser = exports.PostScriptLexer = void 0; - -var _util = __w_pdfjs_require__(5); - -var _primitives = __w_pdfjs_require__(151); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var PostScriptParser = -/*#__PURE__*/ -function () { - function PostScriptParser(lexer) { - _classCallCheck(this, PostScriptParser); - - this.lexer = lexer; - this.operators = []; - this.token = null; - this.prev = null; - } - - _createClass(PostScriptParser, [{ - key: "nextToken", - value: function nextToken() { - this.prev = this.token; - this.token = this.lexer.getToken(); - } - }, { - key: "accept", - value: function accept(type) { - if (this.token.type === type) { - this.nextToken(); - return true; - } - - return false; - } - }, { - key: "expect", - value: function expect(type) { - if (this.accept(type)) { - return true; - } - - throw new _util.FormatError("Unexpected symbol: found ".concat(this.token.type, " expected ").concat(type, ".")); - } - }, { - key: "parse", - value: function parse() { - this.nextToken(); - this.expect(PostScriptTokenTypes.LBRACE); - this.parseBlock(); - this.expect(PostScriptTokenTypes.RBRACE); - return this.operators; - } - }, { - key: "parseBlock", - value: function parseBlock() { - while (true) { - if (this.accept(PostScriptTokenTypes.NUMBER)) { - this.operators.push(this.prev.value); - } else if (this.accept(PostScriptTokenTypes.OPERATOR)) { - this.operators.push(this.prev.value); - } else if (this.accept(PostScriptTokenTypes.LBRACE)) { - this.parseCondition(); - } else { - return; - } - } - } - }, { - key: "parseCondition", - value: function parseCondition() { - var conditionLocation = this.operators.length; - this.operators.push(null, null); - this.parseBlock(); - this.expect(PostScriptTokenTypes.RBRACE); - - if (this.accept(PostScriptTokenTypes.IF)) { - this.operators[conditionLocation] = this.operators.length; - this.operators[conditionLocation + 1] = 'jz'; - } else if (this.accept(PostScriptTokenTypes.LBRACE)) { - var jumpLocation = this.operators.length; - this.operators.push(null, null); - var endOfTrue = this.operators.length; - this.parseBlock(); - this.expect(PostScriptTokenTypes.RBRACE); - this.expect(PostScriptTokenTypes.IFELSE); - this.operators[jumpLocation] = this.operators.length; - this.operators[jumpLocation + 1] = 'j'; - this.operators[conditionLocation] = endOfTrue; - this.operators[conditionLocation + 1] = 'jz'; - } else { - throw new _util.FormatError('PS Function: error parsing conditional.'); - } - } - }]); - - return PostScriptParser; -}(); - -exports.PostScriptParser = PostScriptParser; -var PostScriptTokenTypes = { - LBRACE: 0, - RBRACE: 1, - NUMBER: 2, - OPERATOR: 3, - IF: 4, - IFELSE: 5 -}; - -var PostScriptToken = function PostScriptTokenClosure() { - var opCache = Object.create(null); - - var PostScriptToken = - /*#__PURE__*/ - function () { - function PostScriptToken(type, value) { - _classCallCheck(this, PostScriptToken); - - this.type = type; - this.value = value; - } - - _createClass(PostScriptToken, null, [{ - key: "getOperator", - value: function getOperator(op) { - var opValue = opCache[op]; - - if (opValue) { - return opValue; - } - - return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op); - } - }, { - key: "LBRACE", - get: function get() { - return (0, _util.shadow)(this, 'LBRACE', new PostScriptToken(PostScriptTokenTypes.LBRACE, '{')); - } - }, { - key: "RBRACE", - get: function get() { - return (0, _util.shadow)(this, 'RBRACE', new PostScriptToken(PostScriptTokenTypes.RBRACE, '}')); - } - }, { - key: "IF", - get: function get() { - return (0, _util.shadow)(this, 'IF', new PostScriptToken(PostScriptTokenTypes.IF, 'IF')); - } - }, { - key: "IFELSE", - get: function get() { - return (0, _util.shadow)(this, 'IFELSE', new PostScriptToken(PostScriptTokenTypes.IFELSE, 'IFELSE')); - } - }]); - - return PostScriptToken; - }(); - - return PostScriptToken; -}(); - -var PostScriptLexer = -/*#__PURE__*/ -function () { - function PostScriptLexer(stream) { - _classCallCheck(this, PostScriptLexer); - - this.stream = stream; - this.nextChar(); - this.strBuf = []; - } - - _createClass(PostScriptLexer, [{ - key: "nextChar", - value: function nextChar() { - return this.currentChar = this.stream.getByte(); - } - }, { - key: "getToken", - value: function getToken() { - var comment = false; - var ch = this.currentChar; - - while (true) { - if (ch < 0) { - return _primitives.EOF; - } - - if (comment) { - if (ch === 0x0A || ch === 0x0D) { - comment = false; - } - } else if (ch === 0x25) { - comment = true; - } else if (!(0, _util.isSpace)(ch)) { - break; - } - - ch = this.nextChar(); - } - - switch (ch | 0) { - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x2B: - case 0x2D: - case 0x2E: - return new PostScriptToken(PostScriptTokenTypes.NUMBER, this.getNumber()); - - case 0x7B: - this.nextChar(); - return PostScriptToken.LBRACE; - - case 0x7D: - this.nextChar(); - return PostScriptToken.RBRACE; - } - - var strBuf = this.strBuf; - strBuf.length = 0; - strBuf[0] = String.fromCharCode(ch); - - while ((ch = this.nextChar()) >= 0 && (ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A)) { - strBuf.push(String.fromCharCode(ch)); - } - - var str = strBuf.join(''); - - switch (str.toLowerCase()) { - case 'if': - return PostScriptToken.IF; - - case 'ifelse': - return PostScriptToken.IFELSE; - - default: - return PostScriptToken.getOperator(str); - } - } - }, { - key: "getNumber", - value: function getNumber() { - var ch = this.currentChar; - var strBuf = this.strBuf; - strBuf.length = 0; - strBuf[0] = String.fromCharCode(ch); - - while ((ch = this.nextChar()) >= 0) { - if (ch >= 0x30 && ch <= 0x39 || ch === 0x2D || ch === 0x2E) { - strBuf.push(String.fromCharCode(ch)); - } else { - break; - } - } - - var value = parseFloat(strBuf.join('')); - - if (isNaN(value)) { - throw new _util.FormatError("Invalid floating point number: ".concat(value)); - } - - return value; - } - }]); - - return PostScriptLexer; -}(); - -exports.PostScriptLexer = PostScriptLexer; - -/***/ }), -/* 188 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); +})); exports.MurmurHash3_64 = void 0; -var _util = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(2); -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var SEED = 0xc3d2e1f0; -var MASK_HIGH = 0xffff0000; -var MASK_LOW = 0xffff; - -var MurmurHash3_64 = -/*#__PURE__*/ -function () { - function MurmurHash3_64(seed) { - _classCallCheck(this, MurmurHash3_64); +const SEED = 0xc3d2e1f0; +const MASK_HIGH = 0xffff0000; +const MASK_LOW = 0xffff; +class MurmurHash3_64 { + constructor(seed) { this.h1 = seed ? seed & 0xffffffff : SEED; this.h2 = seed ? seed & 0xffffffff : SEED; } - _createClass(MurmurHash3_64, [{ - key: "update", - value: function update(input) { - var data, length; + update(input) { + let data, length; - if ((0, _util.isString)(input)) { - data = new Uint8Array(input.length * 2); - length = 0; + if (typeof input === "string") { + data = new Uint8Array(input.length * 2); + length = 0; - for (var i = 0, ii = input.length; i < ii; i++) { - var code = input.charCodeAt(i); + for (let i = 0, ii = input.length; i < ii; i++) { + const code = input.charCodeAt(i); - if (code <= 0xff) { - data[length++] = code; - } else { - data[length++] = code >>> 8; - data[length++] = code & 0xff; - } + if (code <= 0xff) { + data[length++] = code; + } else { + data[length++] = code >>> 8; + data[length++] = code & 0xff; } - } else if ((0, _util.isArrayBuffer)(input)) { - data = input; - length = data.byteLength; - } else { - throw new Error('Wrong data format in MurmurHash3_64_update. ' + 'Input must be a string or array.'); } + } else if ((0, _util.isArrayBuffer)(input)) { + data = input.slice(); + length = data.byteLength; + } else { + throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array."); + } - var blockCounts = length >> 2; - var tailLength = length - blockCounts * 4; - var dataUint32 = new Uint32Array(data.buffer, 0, blockCounts); - var k1 = 0, - k2 = 0; - var h1 = this.h1, - h2 = this.h2; - var C1 = 0xcc9e2d51, + const blockCounts = length >> 2; + const tailLength = length - blockCounts * 4; + const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts); + let k1 = 0, + k2 = 0; + let h1 = this.h1, + h2 = this.h2; + const C1 = 0xcc9e2d51, C2 = 0x1b873593; - var C1_LOW = C1 & MASK_LOW, + const C1_LOW = C1 & MASK_LOW, C2_LOW = C2 & MASK_LOW; - for (var _i = 0; _i < blockCounts; _i++) { - if (_i & 1) { - k1 = dataUint32[_i]; - k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; - k1 = k1 << 15 | k1 >>> 17; - k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + for (let i = 0; i < blockCounts; i++) { + if (i & 1) { + k1 = dataUint32[i]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + h1 ^= k1; + h1 = h1 << 13 | h1 >>> 19; + h1 = h1 * 5 + 0xe6546b64; + } else { + k2 = dataUint32[i]; + k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW; + k2 = k2 << 15 | k2 >>> 17; + k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW; + h2 ^= k2; + h2 = h2 << 13 | h2 >>> 19; + h2 = h2 * 5 + 0xe6546b64; + } + } + + k1 = 0; + + switch (tailLength) { + case 3: + k1 ^= data[blockCounts * 4 + 2] << 16; + + case 2: + k1 ^= data[blockCounts * 4 + 1] << 8; + + case 1: + k1 ^= data[blockCounts * 4]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + + if (blockCounts & 1) { h1 ^= k1; - h1 = h1 << 13 | h1 >>> 19; - h1 = h1 * 5 + 0xe6546b64; } else { - k2 = dataUint32[_i]; - k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW; - k2 = k2 << 15 | k2 >>> 17; - k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW; - h2 ^= k2; - h2 = h2 << 13 | h2 >>> 19; - h2 = h2 * 5 + 0xe6546b64; + h2 ^= k1; } - } - k1 = 0; - - switch (tailLength) { - case 3: - k1 ^= data[blockCounts * 4 + 2] << 16; - - case 2: - k1 ^= data[blockCounts * 4 + 1] << 8; - - case 1: - k1 ^= data[blockCounts * 4]; - k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; - k1 = k1 << 15 | k1 >>> 17; - k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; - - if (blockCounts & 1) { - h1 ^= k1; - } else { - h2 ^= k1; - } - - } - - this.h1 = h1; - this.h2 = h2; } - }, { - key: "hexdigest", - value: function hexdigest() { - var h1 = this.h1, - h2 = this.h2; - h1 ^= h2 >>> 1; - h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW; - h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16; - h1 ^= h2 >>> 1; - h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW; - h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16; - h1 ^= h2 >>> 1; - var hex1 = (h1 >>> 0).toString(16), + + this.h1 = h1; + this.h2 = h2; + } + + hexdigest() { + let h1 = this.h1, + h2 = this.h2; + h1 ^= h2 >>> 1; + h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW; + h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW; + h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + const hex1 = (h1 >>> 0).toString(16), hex2 = (h2 >>> 0).toString(16); - return hex1.padStart(8, '0') + hex2.padStart(8, '0'); - } - }]); + return hex1.padStart(8, "0") + hex2.padStart(8, "0"); + } - return MurmurHash3_64; -}(); +} exports.MurmurHash3_64 = MurmurHash3_64; /***/ }), -/* 189 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 187 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.NativeImageDecoder = void 0; +})); +exports.OperatorList = void 0; -var _colorspace = __w_pdfjs_require__(169); +var _util = __w_pdfjs_require__(2); -var _jpeg_stream = __w_pdfjs_require__(164); +function addState(parentState, pattern, checkFn, iterateFn, processFn) { + let state = parentState; -var _stream = __w_pdfjs_require__(158); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var NativeImageDecoder = -/*#__PURE__*/ -function () { - function NativeImageDecoder(_ref) { - var xref = _ref.xref, - resources = _ref.resources, - handler = _ref.handler, - _ref$forceDataSchema = _ref.forceDataSchema, - forceDataSchema = _ref$forceDataSchema === void 0 ? false : _ref$forceDataSchema, - pdfFunctionFactory = _ref.pdfFunctionFactory; - - _classCallCheck(this, NativeImageDecoder); - - this.xref = xref; - this.resources = resources; - this.handler = handler; - this.forceDataSchema = forceDataSchema; - this.pdfFunctionFactory = pdfFunctionFactory; + for (let i = 0, ii = pattern.length - 1; i < ii; i++) { + const item = pattern[i]; + state = state[item] || (state[item] = []); } - _createClass(NativeImageDecoder, [{ - key: "canDecode", - value: function canDecode(image) { - return image instanceof _jpeg_stream.JpegStream && NativeImageDecoder.isDecodable(image, this.xref, this.resources, this.pdfFunctionFactory); + state[pattern.at(-1)] = { + checkFn, + iterateFn, + processFn + }; +} + +const InitialState = []; +addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, _util.OPS.restore], null, function iterateInlineImageGroup(context, i) { + const fnArray = context.fnArray; + const iFirstSave = context.iCurr - 3; + const pos = (i - iFirstSave) % 4; + + switch (pos) { + case 0: + return fnArray[i] === _util.OPS.save; + + case 1: + return fnArray[i] === _util.OPS.transform; + + case 2: + return fnArray[i] === _util.OPS.paintInlineImageXObject; + + case 3: + return fnArray[i] === _util.OPS.restore; + } + + throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`); +}, function foundInlineImageGroup(context, i) { + const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10; + const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200; + const MAX_WIDTH = 1000; + const IMAGE_PADDING = 1; + const fnArray = context.fnArray, + argsArray = context.argsArray; + const curr = context.iCurr; + const iFirstSave = curr - 3; + const iFirstTransform = curr - 2; + const iFirstPIIXO = curr - 1; + const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK); + + if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) { + return i - (i - iFirstSave) % 4; + } + + let maxX = 0; + const map = []; + let maxLineHeight = 0; + let currentX = IMAGE_PADDING, + currentY = IMAGE_PADDING; + + for (let q = 0; q < count; q++) { + const transform = argsArray[iFirstTransform + (q << 2)]; + const img = argsArray[iFirstPIIXO + (q << 2)][0]; + + if (currentX + img.width > MAX_WIDTH) { + maxX = Math.max(maxX, currentX); + currentY += maxLineHeight + 2 * IMAGE_PADDING; + currentX = 0; + maxLineHeight = 0; } - }, { - key: "decode", - value: function decode(image) { - var dict = image.dict; - var colorSpace = dict.get('ColorSpace', 'CS'); - colorSpace = _colorspace.ColorSpace.parse(colorSpace, this.xref, this.resources, this.pdfFunctionFactory); - return this.handler.sendWithPromise('JpegDecode', [image.getIR(this.forceDataSchema), colorSpace.numComps]).then(function (_ref2) { - var data = _ref2.data, - width = _ref2.width, - height = _ref2.height; - return new _stream.Stream(data, 0, data.length, dict); + + map.push({ + transform, + x: currentX, + y: currentY, + w: img.width, + h: img.height + }); + currentX += img.width + 2 * IMAGE_PADDING; + maxLineHeight = Math.max(maxLineHeight, img.height); + } + + const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING; + const imgHeight = currentY + maxLineHeight + IMAGE_PADDING; + const imgData = new Uint8Array(imgWidth * imgHeight * 4); + const imgRowSize = imgWidth << 2; + + for (let q = 0; q < count; q++) { + const data = argsArray[iFirstPIIXO + (q << 2)][0].data; + const rowSize = map[q].w << 2; + let dataOffset = 0; + let offset = map[q].x + map[q].y * imgWidth << 2; + imgData.set(data.subarray(0, rowSize), offset - imgRowSize); + + for (let k = 0, kk = map[q].h; k < kk; k++) { + imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset); + dataOffset += rowSize; + offset += imgRowSize; + } + + imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset); + + while (offset >= 0) { + data[offset - 4] = data[offset]; + data[offset - 3] = data[offset + 1]; + data[offset - 2] = data[offset + 2]; + data[offset - 1] = data[offset + 3]; + data[offset + rowSize] = data[offset + rowSize - 4]; + data[offset + rowSize + 1] = data[offset + rowSize - 3]; + data[offset + rowSize + 2] = data[offset + rowSize - 2]; + data[offset + rowSize + 3] = data[offset + rowSize - 1]; + offset -= imgRowSize; + } + } + + fnArray.splice(iFirstSave, count * 4, _util.OPS.paintInlineImageXObjectGroup); + argsArray.splice(iFirstSave, count * 4, [{ + width: imgWidth, + height: imgHeight, + kind: _util.ImageKind.RGBA_32BPP, + data: imgData + }, map]); + return iFirstSave + 1; +}); +addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageMaskXObject, _util.OPS.restore], null, function iterateImageMaskGroup(context, i) { + const fnArray = context.fnArray; + const iFirstSave = context.iCurr - 3; + const pos = (i - iFirstSave) % 4; + + switch (pos) { + case 0: + return fnArray[i] === _util.OPS.save; + + case 1: + return fnArray[i] === _util.OPS.transform; + + case 2: + return fnArray[i] === _util.OPS.paintImageMaskXObject; + + case 3: + return fnArray[i] === _util.OPS.restore; + } + + throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`); +}, function foundImageMaskGroup(context, i) { + const MIN_IMAGES_IN_MASKS_BLOCK = 10; + const MAX_IMAGES_IN_MASKS_BLOCK = 100; + const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000; + const fnArray = context.fnArray, + argsArray = context.argsArray; + const curr = context.iCurr; + const iFirstSave = curr - 3; + const iFirstTransform = curr - 2; + const iFirstPIMXO = curr - 1; + let count = Math.floor((i - iFirstSave) / 4); + + if (count < MIN_IMAGES_IN_MASKS_BLOCK) { + return i - (i - iFirstSave) % 4; + } + + let isSameImage = false; + let iTransform, transformArgs; + const firstPIMXOArg0 = argsArray[iFirstPIMXO][0]; + const firstTransformArg0 = argsArray[iFirstTransform][0], + firstTransformArg1 = argsArray[iFirstTransform][1], + firstTransformArg2 = argsArray[iFirstTransform][2], + firstTransformArg3 = argsArray[iFirstTransform][3]; + + if (firstTransformArg1 === firstTransformArg2) { + isSameImage = true; + iTransform = iFirstTransform + 4; + let iPIMXO = iFirstPIMXO + 4; + + for (let q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) { + transformArgs = argsArray[iTransform]; + + if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== firstTransformArg3) { + if (q < MIN_IMAGES_IN_MASKS_BLOCK) { + isSameImage = false; + } else { + count = q; + } + + break; + } + } + } + + if (isSameImage) { + count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK); + const positions = new Float32Array(count * 2); + iTransform = iFirstTransform; + + for (let q = 0; q < count; q++, iTransform += 4) { + transformArgs = argsArray[iTransform]; + positions[q << 1] = transformArgs[4]; + positions[(q << 1) + 1] = transformArgs[5]; + } + + fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat); + argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, firstTransformArg2, firstTransformArg3, positions]); + } else { + count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK); + const images = []; + + for (let q = 0; q < count; q++) { + transformArgs = argsArray[iFirstTransform + (q << 2)]; + const maskParams = argsArray[iFirstPIMXO + (q << 2)][0]; + images.push({ + data: maskParams.data, + width: maskParams.width, + height: maskParams.height, + interpolate: maskParams.interpolate, + count: maskParams.count, + transform: transformArgs }); } - }], [{ - key: "isSupported", - value: function isSupported(image, xref, res, pdfFunctionFactory) { - var dict = image.dict; - if (dict.has('DecodeParms') || dict.has('DP')) { + fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectGroup); + argsArray.splice(iFirstSave, count * 4, [images]); + } + + return iFirstSave + 1; +}); +addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageXObject, _util.OPS.restore], function (context) { + const argsArray = context.argsArray; + const iFirstTransform = context.iCurr - 2; + return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0; +}, function iterateImageGroup(context, i) { + const fnArray = context.fnArray, + argsArray = context.argsArray; + const iFirstSave = context.iCurr - 3; + const pos = (i - iFirstSave) % 4; + + switch (pos) { + case 0: + return fnArray[i] === _util.OPS.save; + + case 1: + if (fnArray[i] !== _util.OPS.transform) { return false; } - var cs = _colorspace.ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res, pdfFunctionFactory); + const iFirstTransform = context.iCurr - 2; + const firstTransformArg0 = argsArray[iFirstTransform][0]; + const firstTransformArg3 = argsArray[iFirstTransform][3]; - return (cs.name === 'DeviceGray' || cs.name === 'DeviceRGB') && cs.isDefaultDecode(dict.getArray('Decode', 'D')); - } - }, { - key: "isDecodable", - value: function isDecodable(image, xref, res, pdfFunctionFactory) { - var dict = image.dict; - - if (dict.has('DecodeParms') || dict.has('DP')) { + if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) { return false; } - var cs = _colorspace.ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res, pdfFunctionFactory); + return true; - var bpc = dict.get('BitsPerComponent', 'BPC') || 1; - return (cs.numComps === 1 || cs.numComps === 3) && cs.isDefaultDecode(dict.getArray('Decode', 'D'), bpc); + case 2: + if (fnArray[i] !== _util.OPS.paintImageXObject) { + return false; + } + + const iFirstPIXO = context.iCurr - 1; + const firstPIXOArg0 = argsArray[iFirstPIXO][0]; + + if (argsArray[i][0] !== firstPIXOArg0) { + return false; + } + + return true; + + case 3: + return fnArray[i] === _util.OPS.restore; + } + + throw new Error(`iterateImageGroup - invalid pos: ${pos}`); +}, function (context, i) { + const MIN_IMAGES_IN_BLOCK = 3; + const MAX_IMAGES_IN_BLOCK = 1000; + const fnArray = context.fnArray, + argsArray = context.argsArray; + const curr = context.iCurr; + const iFirstSave = curr - 3; + const iFirstTransform = curr - 2; + const iFirstPIXO = curr - 1; + const firstPIXOArg0 = argsArray[iFirstPIXO][0]; + const firstTransformArg0 = argsArray[iFirstTransform][0]; + const firstTransformArg3 = argsArray[iFirstTransform][3]; + const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK); + + if (count < MIN_IMAGES_IN_BLOCK) { + return i - (i - iFirstSave) % 4; + } + + const positions = new Float32Array(count * 2); + let iTransform = iFirstTransform; + + for (let q = 0; q < count; q++, iTransform += 4) { + const transformArgs = argsArray[iTransform]; + positions[q << 1] = transformArgs[4]; + positions[(q << 1) + 1] = transformArgs[5]; + } + + const args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions]; + fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageXObjectRepeat); + argsArray.splice(iFirstSave, count * 4, args); + return iFirstSave + 1; +}); +addState(InitialState, [_util.OPS.beginText, _util.OPS.setFont, _util.OPS.setTextMatrix, _util.OPS.showText, _util.OPS.endText], null, function iterateShowTextGroup(context, i) { + const fnArray = context.fnArray, + argsArray = context.argsArray; + const iFirstSave = context.iCurr - 4; + const pos = (i - iFirstSave) % 5; + + switch (pos) { + case 0: + return fnArray[i] === _util.OPS.beginText; + + case 1: + return fnArray[i] === _util.OPS.setFont; + + case 2: + return fnArray[i] === _util.OPS.setTextMatrix; + + case 3: + if (fnArray[i] !== _util.OPS.showText) { + return false; + } + + const iFirstSetFont = context.iCurr - 3; + const firstSetFontArg0 = argsArray[iFirstSetFont][0]; + const firstSetFontArg1 = argsArray[iFirstSetFont][1]; + + if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) { + return false; + } + + return true; + + case 4: + return fnArray[i] === _util.OPS.endText; + } + + throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`); +}, function (context, i) { + const MIN_CHARS_IN_BLOCK = 3; + const MAX_CHARS_IN_BLOCK = 1000; + const fnArray = context.fnArray, + argsArray = context.argsArray; + const curr = context.iCurr; + const iFirstBeginText = curr - 4; + const iFirstSetFont = curr - 3; + const iFirstSetTextMatrix = curr - 2; + const iFirstShowText = curr - 1; + const iFirstEndText = curr; + const firstSetFontArg0 = argsArray[iFirstSetFont][0]; + const firstSetFontArg1 = argsArray[iFirstSetFont][1]; + let count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK); + + if (count < MIN_CHARS_IN_BLOCK) { + return i - (i - iFirstBeginText) % 5; + } + + let iFirst = iFirstBeginText; + + if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) { + count++; + iFirst -= 5; + } + + let iEndText = iFirst + 4; + + for (let q = 1; q < count; q++) { + fnArray.splice(iEndText, 3); + argsArray.splice(iEndText, 3); + iEndText += 2; + } + + return iEndText + 1; +}); + +class NullOptimizer { + constructor(queue) { + this.queue = queue; + } + + _optimize() {} + + push(fn, args) { + this.queue.fnArray.push(fn); + this.queue.argsArray.push(args); + + this._optimize(); + } + + flush() {} + + reset() {} + +} + +class QueueOptimizer extends NullOptimizer { + constructor(queue) { + super(queue); + this.state = null; + this.context = { + iCurr: 0, + fnArray: queue.fnArray, + argsArray: queue.argsArray + }; + this.match = null; + this.lastProcessed = 0; + } + + _optimize() { + const fnArray = this.queue.fnArray; + let i = this.lastProcessed, + ii = fnArray.length; + let state = this.state; + let match = this.match; + + if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) { + this.lastProcessed = ii; + return; } - }]); - return NativeImageDecoder; -}(); + const context = this.context; -exports.NativeImageDecoder = NativeImageDecoder; + while (i < ii) { + if (match) { + const iterate = (0, match.iterateFn)(context, i); + + if (iterate) { + i++; + continue; + } + + i = (0, match.processFn)(context, i + 1); + ii = fnArray.length; + match = null; + state = null; + + if (i >= ii) { + break; + } + } + + state = (state || InitialState)[fnArray[i]]; + + if (!state || Array.isArray(state)) { + i++; + continue; + } + + context.iCurr = i; + i++; + + if (state.checkFn && !(0, state.checkFn)(context)) { + state = null; + continue; + } + + match = state; + state = null; + } + + this.state = state; + this.match = match; + this.lastProcessed = i; + } + + flush() { + while (this.match) { + const length = this.queue.fnArray.length; + this.lastProcessed = (0, this.match.processFn)(this.context, length); + this.match = null; + this.state = null; + + this._optimize(); + } + } + + reset() { + this.state = null; + this.match = null; + this.lastProcessed = 0; + } + +} + +class OperatorList { + static get CHUNK_SIZE() { + return (0, _util.shadow)(this, "CHUNK_SIZE", 1000); + } + + static get CHUNK_SIZE_ABOUT() { + return (0, _util.shadow)(this, "CHUNK_SIZE_ABOUT", this.CHUNK_SIZE - 5); + } + + constructor() { + let intent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let streamSink = arguments.length > 1 ? arguments[1] : undefined; + this._streamSink = streamSink; + this.fnArray = []; + this.argsArray = []; + + if (streamSink && !(intent & _util.RenderingIntentFlag.OPLIST)) { + this.optimizer = new QueueOptimizer(this); + } else { + this.optimizer = new NullOptimizer(this); + } + + this.dependencies = new Set(); + this._totalLength = 0; + this.weight = 0; + this._resolved = streamSink ? null : Promise.resolve(); + } + + get length() { + return this.argsArray.length; + } + + get ready() { + return this._resolved || this._streamSink.ready; + } + + get totalLength() { + return this._totalLength + this.length; + } + + addOp(fn, args) { + this.optimizer.push(fn, args); + this.weight++; + + if (this._streamSink) { + if (this.weight >= OperatorList.CHUNK_SIZE) { + this.flush(); + } else if (this.weight >= OperatorList.CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === _util.OPS.endText)) { + this.flush(); + } + } + } + + addImageOps(fn, args, optionalContent) { + if (optionalContent !== undefined) { + this.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]); + } + + this.addOp(fn, args); + + if (optionalContent !== undefined) { + this.addOp(_util.OPS.endMarkedContent, []); + } + } + + addDependency(dependency) { + if (this.dependencies.has(dependency)) { + return; + } + + this.dependencies.add(dependency); + this.addOp(_util.OPS.dependency, [dependency]); + } + + addDependencies(dependencies) { + for (const dependency of dependencies) { + this.addDependency(dependency); + } + } + + addOpList(opList) { + if (!(opList instanceof OperatorList)) { + (0, _util.warn)('addOpList - ignoring invalid "opList" parameter.'); + return; + } + + for (const dependency of opList.dependencies) { + this.dependencies.add(dependency); + } + + for (let i = 0, ii = opList.length; i < ii; i++) { + this.addOp(opList.fnArray[i], opList.argsArray[i]); + } + } + + getIR() { + return { + fnArray: this.fnArray, + argsArray: this.argsArray, + length: this.length + }; + } + + get _transfers() { + const transfers = []; + const { + fnArray, + argsArray, + length + } = this; + + for (let i = 0; i < length; i++) { + switch (fnArray[i]) { + case _util.OPS.paintInlineImageXObject: + case _util.OPS.paintInlineImageXObjectGroup: + case _util.OPS.paintImageMaskXObject: + const arg = argsArray[i][0]; + + if (!arg.cached && arg.data && arg.data.buffer instanceof ArrayBuffer) { + transfers.push(arg.data.buffer); + } + + break; + } + } + + return transfers; + } + + flush() { + let lastChunk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + let separateAnnots = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + this.optimizer.flush(); + const length = this.length; + this._totalLength += length; + + this._streamSink.enqueue({ + fnArray: this.fnArray, + argsArray: this.argsArray, + lastChunk, + separateAnnots, + length + }, 1, this._transfers); + + this.dependencies.clear(); + this.fnArray.length = 0; + this.argsArray.length = 0; + this.weight = 0; + this.optimizer.reset(); + } + +} + +exports.OperatorList = OperatorList; /***/ }), -/* 190 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 188 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFImage = void 0; -var _util = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(2); -var _primitives = __w_pdfjs_require__(151); +var _image_utils = __w_pdfjs_require__(189); -var _colorspace = __w_pdfjs_require__(169); +var _base_stream = __w_pdfjs_require__(132); -var _stream = __w_pdfjs_require__(158); +var _colorspace = __w_pdfjs_require__(139); -var _jpeg_stream = __w_pdfjs_require__(164); +var _decode_stream = __w_pdfjs_require__(144); -var _jpx = __w_pdfjs_require__(167); +var _jpeg_stream = __w_pdfjs_require__(152); -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } +var _jpx = __w_pdfjs_require__(155); -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } +var _primitives = __w_pdfjs_require__(130); -function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } +function decodeAndClamp(value, addend, coefficient, max) { + value = addend + value * coefficient; -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } - -var PDFImage = function PDFImageClosure() { - function handleImageData(image, nativeDecoder) { - if (nativeDecoder && nativeDecoder.canDecode(image)) { - return nativeDecoder.decode(image)["catch"](function (reason) { - (0, _util.warn)('Native image decoding failed -- trying to recover: ' + (reason && reason.message)); - return image; - }); - } - - return Promise.resolve(image); + if (value < 0) { + value = 0; + } else if (value > max) { + value = max; } - function decodeAndClamp(value, addend, coefficient, max) { - value = addend + value * coefficient; - return value < 0 ? 0 : value > max ? max : value; + return value; +} + +function resizeImageMask(src, bpc, w1, h1, w2, h2) { + const length = w2 * h2; + let dest; + + if (bpc <= 8) { + dest = new Uint8Array(length); + } else if (bpc <= 16) { + dest = new Uint16Array(length); + } else { + dest = new Uint32Array(length); } - function resizeImageMask(src, bpc, w1, h1, w2, h2) { - var length = w2 * h2; - var dest = bpc <= 8 ? new Uint8Array(length) : bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length); - var xRatio = w1 / w2; - var yRatio = h1 / h2; - var i, - j, - py, - newIndex = 0, - oldIndex; - var xScaled = new Uint16Array(w2); - var w1Scanline = w1; + const xRatio = w1 / w2; + const yRatio = h1 / h2; + let i, + j, + py, + newIndex = 0, + oldIndex; + const xScaled = new Uint16Array(w2); + const w1Scanline = w1; - for (i = 0; i < w2; i++) { - xScaled[i] = Math.floor(i * xRatio); - } - - for (i = 0; i < h2; i++) { - py = Math.floor(i * yRatio) * w1Scanline; - - for (j = 0; j < w2; j++) { - oldIndex = py + xScaled[j]; - dest[newIndex++] = src[oldIndex]; - } - } - - return dest; + for (i = 0; i < w2; i++) { + xScaled[i] = Math.floor(i * xRatio); } - function PDFImage(_ref) { - var xref = _ref.xref, - res = _ref.res, - image = _ref.image, - _ref$isInline = _ref.isInline, - isInline = _ref$isInline === void 0 ? false : _ref$isInline, - _ref$smask = _ref.smask, - smask = _ref$smask === void 0 ? null : _ref$smask, - _ref$mask = _ref.mask, - mask = _ref$mask === void 0 ? null : _ref$mask, - _ref$isMask = _ref.isMask, - isMask = _ref$isMask === void 0 ? false : _ref$isMask, - pdfFunctionFactory = _ref.pdfFunctionFactory; + for (i = 0; i < h2; i++) { + py = Math.floor(i * yRatio) * w1Scanline; + + for (j = 0; j < w2; j++) { + oldIndex = py + xScaled[j]; + dest[newIndex++] = src[oldIndex]; + } + } + + return dest; +} + +class PDFImage { + constructor(_ref) { + let { + xref, + res, + image, + isInline = false, + smask = null, + mask = null, + isMask = false, + pdfFunctionFactory, + localColorSpaceCache + } = _ref; this.image = image; - var dict = image.dict; - var filter = dict.get('Filter'); + const dict = image.dict; + const filter = dict.get("F", "Filter"); + let filterName; - if ((0, _primitives.isName)(filter)) { - switch (filter.name) { - case 'JPXDecode': - var jpxImage = new _jpx.JpxImage(); - jpxImage.parseImageProperties(image.stream); - image.stream.reset(); - image.width = jpxImage.width; - image.height = jpxImage.height; - image.bitsPerComponent = jpxImage.bitsPerComponent; - image.numComps = jpxImage.componentsCount; - break; + if (filter instanceof _primitives.Name) { + filterName = filter.name; + } else if (Array.isArray(filter)) { + const filterZero = xref.fetchIfRef(filter[0]); - case 'JBIG2Decode': - image.bitsPerComponent = 1; - image.numComps = 1; - break; + if (filterZero instanceof _primitives.Name) { + filterName = filterZero.name; } } - var width = dict.get('Width', 'W'); - var height = dict.get('Height', 'H'); + switch (filterName) { + case "JPXDecode": + const jpxImage = new _jpx.JpxImage(); + jpxImage.parseImageProperties(image.stream); + image.stream.reset(); + image.width = jpxImage.width; + image.height = jpxImage.height; + image.bitsPerComponent = jpxImage.bitsPerComponent; + image.numComps = jpxImage.componentsCount; + break; + + case "JBIG2Decode": + image.bitsPerComponent = 1; + image.numComps = 1; + break; + } + + let width = dict.get("W", "Width"); + let height = dict.get("H", "Height"); if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 0 && (image.width !== width || image.height !== height)) { - (0, _util.warn)('PDFImage - using the Width/Height of the image data, ' + 'rather than the image dictionary.'); + (0, _util.warn)("PDFImage - using the Width/Height of the image data, " + "rather than the image dictionary."); width = image.width; height = image.height; } if (width < 1 || height < 1) { - throw new _util.FormatError("Invalid image width: ".concat(width, " or ") + "height: ".concat(height)); + throw new _util.FormatError(`Invalid image width: ${width} or height: ${height}`); } this.width = width; this.height = height; - this.interpolate = dict.get('Interpolate', 'I') || false; - this.imageMask = dict.get('ImageMask', 'IM') || false; - this.matte = dict.get('Matte') || false; - var bitsPerComponent = image.bitsPerComponent; + this.interpolate = dict.get("I", "Interpolate"); + this.imageMask = dict.get("IM", "ImageMask") || false; + this.matte = dict.get("Matte") || false; + let bitsPerComponent = image.bitsPerComponent; if (!bitsPerComponent) { - bitsPerComponent = dict.get('BitsPerComponent', 'BPC'); + bitsPerComponent = dict.get("BPC", "BitsPerComponent"); if (!bitsPerComponent) { if (this.imageMask) { bitsPerComponent = 1; } else { - throw new _util.FormatError("Bits per component missing in image: ".concat(this.imageMask)); + throw new _util.FormatError(`Bits per component missing in image: ${this.imageMask}`); } } } @@ -54905,47 +57508,52 @@ var PDFImage = function PDFImageClosure() { this.bpc = bitsPerComponent; if (!this.imageMask) { - var colorSpace = dict.get('ColorSpace', 'CS'); + let colorSpace = dict.getRaw("CS") || dict.getRaw("ColorSpace"); if (!colorSpace) { - (0, _util.info)('JPX images (which do not require color spaces)'); + (0, _util.info)("JPX images (which do not require color spaces)"); switch (image.numComps) { case 1: - colorSpace = _primitives.Name.get('DeviceGray'); + colorSpace = _primitives.Name.get("DeviceGray"); break; case 3: - colorSpace = _primitives.Name.get('DeviceRGB'); + colorSpace = _primitives.Name.get("DeviceRGB"); break; case 4: - colorSpace = _primitives.Name.get('DeviceCMYK'); + colorSpace = _primitives.Name.get("DeviceCMYK"); break; default: - throw new Error("JPX images with ".concat(image.numComps, " ") + 'color components not supported.'); + throw new Error(`JPX images with ${image.numComps} color components not supported.`); } } - var resources = isInline ? res : null; - this.colorSpace = _colorspace.ColorSpace.parse(colorSpace, xref, resources, pdfFunctionFactory); + this.colorSpace = _colorspace.ColorSpace.parse({ + cs: colorSpace, + xref, + resources: isInline ? res : null, + pdfFunctionFactory, + localColorSpaceCache + }); this.numComps = this.colorSpace.numComps; } - this.decode = dict.getArray('Decode', 'D'); + this.decode = dict.getArray("D", "Decode"); this.needsDecode = false; if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) || isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) { this.needsDecode = true; - var max = (1 << bitsPerComponent) - 1; + const max = (1 << bitsPerComponent) - 1; this.decodeCoefficients = []; this.decodeAddends = []; - var isIndexed = this.colorSpace && this.colorSpace.name === 'Indexed'; + const isIndexed = this.colorSpace && this.colorSpace.name === "Indexed"; - for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) { - var dmin = this.decode[i]; - var dmax = this.decode[i + 1]; + for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) { + const dmin = this.decode[i]; + const dmax = this.decode[i + 1]; this.decodeCoefficients[j] = isIndexed ? (dmax - dmin) / max : dmax - dmin; this.decodeAddends[j] = isIndexed ? dmin : max * dmin; } @@ -54953,27 +57561,29 @@ var PDFImage = function PDFImageClosure() { if (smask) { this.smask = new PDFImage({ - xref: xref, - res: res, + xref, + res, image: smask, - isInline: isInline, - pdfFunctionFactory: pdfFunctionFactory + isInline, + pdfFunctionFactory, + localColorSpaceCache }); } else if (mask) { - if ((0, _primitives.isStream)(mask)) { - var maskDict = mask.dict, - imageMask = maskDict.get('ImageMask', 'IM'); + if (mask instanceof _base_stream.BaseStream) { + const maskDict = mask.dict, + imageMask = maskDict.get("IM", "ImageMask"); if (!imageMask) { - (0, _util.warn)('Ignoring /Mask in image without /ImageMask.'); + (0, _util.warn)("Ignoring /Mask in image without /ImageMask."); } else { this.mask = new PDFImage({ - xref: xref, - res: res, + xref, + res, image: mask, - isInline: isInline, + isInline, isMask: true, - pdfFunctionFactory: pdfFunctionFactory + pdfFunctionFactory, + localColorSpaceCache }); } } else { @@ -54982,762 +57592,21005 @@ var PDFImage = function PDFImageClosure() { } } - PDFImage.buildImage = function (_ref2) { - var handler = _ref2.handler, - xref = _ref2.xref, - res = _ref2.res, - image = _ref2.image, - _ref2$isInline = _ref2.isInline, - isInline = _ref2$isInline === void 0 ? false : _ref2$isInline, - _ref2$nativeDecoder = _ref2.nativeDecoder, - nativeDecoder = _ref2$nativeDecoder === void 0 ? null : _ref2$nativeDecoder, - pdfFunctionFactory = _ref2.pdfFunctionFactory; - var imagePromise = handleImageData(image, nativeDecoder); - var smaskPromise; - var maskPromise; - var smask = image.dict.get('SMask'); - var mask = image.dict.get('Mask'); + static async buildImage(_ref2) { + let { + xref, + res, + image, + isInline = false, + pdfFunctionFactory, + localColorSpaceCache + } = _ref2; + const imageData = image; + let smaskData = null; + let maskData = null; + const smask = image.dict.get("SMask"); + const mask = image.dict.get("Mask"); if (smask) { - smaskPromise = handleImageData(smask, nativeDecoder); - maskPromise = Promise.resolve(null); - } else { - smaskPromise = Promise.resolve(null); - - if (mask) { - if ((0, _primitives.isStream)(mask)) { - maskPromise = handleImageData(mask, nativeDecoder); - } else if (Array.isArray(mask)) { - maskPromise = Promise.resolve(mask); - } else { - (0, _util.warn)('Unsupported mask format.'); - maskPromise = Promise.resolve(null); - } + if (smask instanceof _base_stream.BaseStream) { + smaskData = smask; } else { - maskPromise = Promise.resolve(null); + (0, _util.warn)("Unsupported /SMask format."); + } + } else if (mask) { + if (mask instanceof _base_stream.BaseStream || Array.isArray(mask)) { + maskData = mask; + } else { + (0, _util.warn)("Unsupported /Mask format."); } } - return Promise.all([imagePromise, smaskPromise, maskPromise]).then(function (_ref3) { - var _ref4 = _slicedToArray(_ref3, 3), - imageData = _ref4[0], - smaskData = _ref4[1], - maskData = _ref4[2]; - - return new PDFImage({ - xref: xref, - res: res, - image: imageData, - isInline: isInline, - smask: smaskData, - mask: maskData, - pdfFunctionFactory: pdfFunctionFactory - }); + return new PDFImage({ + xref, + res, + image: imageData, + isInline, + smask: smaskData, + mask: maskData, + pdfFunctionFactory, + localColorSpaceCache }); - }; + } - PDFImage.createMask = function (_ref5) { - var imgArray = _ref5.imgArray, - width = _ref5.width, - height = _ref5.height, - imageIsFromDecodeStream = _ref5.imageIsFromDecodeStream, - inverseDecode = _ref5.inverseDecode; - var computedLength = (width + 7 >> 3) * height; - var actualLength = imgArray.byteLength; - var haveFullData = computedLength === actualLength; - var data, i; + static createRawMask(_ref3) { + let { + imgArray, + width, + height, + imageIsFromDecodeStream, + inverseDecode, + interpolate + } = _ref3; + const computedLength = (width + 7 >> 3) * height; + const actualLength = imgArray.byteLength; + const haveFullData = computedLength === actualLength; + let data, i; if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) { data = imgArray; } else if (!inverseDecode) { - data = new Uint8ClampedArray(actualLength); - data.set(imgArray); + data = new Uint8Array(imgArray); } else { - data = new Uint8ClampedArray(computedLength); + data = new Uint8Array(computedLength); data.set(imgArray); - - for (i = actualLength; i < computedLength; i++) { - data[i] = 0xff; - } + data.fill(0xff, actualLength); } if (inverseDecode) { for (i = 0; i < actualLength; i++) { - data[i] ^= 0xFF; + data[i] ^= 0xff; } } return { - data: data, - width: width, - height: height + data, + width, + height, + interpolate }; - }; + } - PDFImage.prototype = { - get drawWidth() { - return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0); - }, + static createMask(_ref4) { + let { + imgArray, + width, + height, + imageIsFromDecodeStream, + inverseDecode, + interpolate + } = _ref4; + const isSingleOpaquePixel = width === 1 && height === 1 && inverseDecode === (imgArray.length === 0 || !!(imgArray[0] & 128)); - get drawHeight() { - return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0); - }, + if (isSingleOpaquePixel) { + return { + isSingleOpaquePixel + }; + } - decodeBuffer: function decodeBuffer(buffer) { - var bpc = this.bpc; - var numComps = this.numComps; - var decodeAddends = this.decodeAddends; - var decodeCoefficients = this.decodeCoefficients; - var max = (1 << bpc) - 1; - var i, ii; + if (_util.FeatureTest.isOffscreenCanvasSupported) { + const canvas = new OffscreenCanvas(width, height); + const ctx = canvas.getContext("2d"); + const imgData = ctx.createImageData(width, height); + (0, _image_utils.applyMaskImageData)({ + src: imgArray, + dest: imgData.data, + width, + height, + inverseDecode + }); + ctx.putImageData(imgData, 0, 0); + const bitmap = canvas.transferToImageBitmap(); + return { + data: null, + width, + height, + interpolate, + bitmap + }; + } - if (bpc === 1) { - for (i = 0, ii = buffer.length; i < ii; i++) { - buffer[i] = +!buffer[i]; - } + return this.createRawMask({ + imgArray, + width, + height, + inverseDecode, + imageIsFromDecodeStream, + interpolate + }); + } - return; + get drawWidth() { + return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0); + } + + get drawHeight() { + return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0); + } + + decodeBuffer(buffer) { + const bpc = this.bpc; + const numComps = this.numComps; + const decodeAddends = this.decodeAddends; + const decodeCoefficients = this.decodeCoefficients; + const max = (1 << bpc) - 1; + let i, ii; + + if (bpc === 1) { + for (i = 0, ii = buffer.length; i < ii; i++) { + buffer[i] = +!buffer[i]; } - var index = 0; + return; + } - for (i = 0, ii = this.width * this.height; i < ii; i++) { - for (var j = 0; j < numComps; j++) { - buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max); - index++; + let index = 0; + + for (i = 0, ii = this.width * this.height; i < ii; i++) { + for (let j = 0; j < numComps; j++) { + buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max); + index++; + } + } + } + + getComponents(buffer) { + const bpc = this.bpc; + + if (bpc === 8) { + return buffer; + } + + const width = this.width; + const height = this.height; + const numComps = this.numComps; + const length = width * height * numComps; + let bufferPos = 0; + let output; + + if (bpc <= 8) { + output = new Uint8Array(length); + } else if (bpc <= 16) { + output = new Uint16Array(length); + } else { + output = new Uint32Array(length); + } + + const rowComps = width * numComps; + const max = (1 << bpc) - 1; + let i = 0, + ii, + buf; + + if (bpc === 1) { + let mask, loop1End, loop2End; + + for (let j = 0; j < height; j++) { + loop1End = i + (rowComps & ~7); + loop2End = i + rowComps; + + while (i < loop1End) { + buf = buffer[bufferPos++]; + output[i] = buf >> 7 & 1; + output[i + 1] = buf >> 6 & 1; + output[i + 2] = buf >> 5 & 1; + output[i + 3] = buf >> 4 & 1; + output[i + 4] = buf >> 3 & 1; + output[i + 5] = buf >> 2 & 1; + output[i + 6] = buf >> 1 & 1; + output[i + 7] = buf & 1; + i += 8; + } + + if (i < loop2End) { + buf = buffer[bufferPos++]; + mask = 128; + + while (i < loop2End) { + output[i++] = +!!(buf & mask); + mask >>= 1; + } } } - }, - getComponents: function getComponents(buffer) { - var bpc = this.bpc; + } else { + let bits = 0; + buf = 0; - if (bpc === 8) { - return buffer; - } - - var width = this.width; - var height = this.height; - var numComps = this.numComps; - var length = width * height * numComps; - var bufferPos = 0; - var output = bpc <= 8 ? new Uint8Array(length) : bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length); - var rowComps = width * numComps; - var max = (1 << bpc) - 1; - var i = 0, - ii, - buf; - - if (bpc === 1) { - var mask, loop1End, loop2End; - - for (var j = 0; j < height; j++) { - loop1End = i + (rowComps & ~7); - loop2End = i + rowComps; - - while (i < loop1End) { - buf = buffer[bufferPos++]; - output[i] = buf >> 7 & 1; - output[i + 1] = buf >> 6 & 1; - output[i + 2] = buf >> 5 & 1; - output[i + 3] = buf >> 4 & 1; - output[i + 4] = buf >> 3 & 1; - output[i + 5] = buf >> 2 & 1; - output[i + 6] = buf >> 1 & 1; - output[i + 7] = buf & 1; - i += 8; - } - - if (i < loop2End) { - buf = buffer[bufferPos++]; - mask = 128; - - while (i < loop2End) { - output[i++] = +!!(buf & mask); - mask >>= 1; - } - } + for (i = 0, ii = length; i < ii; ++i) { + if (i % rowComps === 0) { + buf = 0; + bits = 0; } - } else { - var bits = 0; - buf = 0; - for (i = 0, ii = length; i < ii; ++i) { - if (i % rowComps === 0) { - buf = 0; - bits = 0; - } - - while (bits < bpc) { - buf = buf << 8 | buffer[bufferPos++]; - bits += 8; - } - - var remainingBits = bits - bpc; - var value = buf >> remainingBits; - output[i] = value < 0 ? 0 : value > max ? max : value; - buf = buf & (1 << remainingBits) - 1; - bits = remainingBits; + while (bits < bpc) { + buf = buf << 8 | buffer[bufferPos++]; + bits += 8; } + + const remainingBits = bits - bpc; + let value = buf >> remainingBits; + + if (value < 0) { + value = 0; + } else if (value > max) { + value = max; + } + + output[i] = value; + buf &= (1 << remainingBits) - 1; + bits = remainingBits; } + } - return output; - }, - fillOpacity: function fillOpacity(rgbaBuf, width, height, actualHeight, image) { - var smask = this.smask; - var mask = this.mask; - var alphaBuf, sw, sh, i, ii, j; + return output; + } - if (smask) { - sw = smask.width; - sh = smask.height; + fillOpacity(rgbaBuf, width, height, actualHeight, image) { + const smask = this.smask; + const mask = this.mask; + let alphaBuf, sw, sh, i, ii, j; + + if (smask) { + sw = smask.width; + sh = smask.height; + alphaBuf = new Uint8ClampedArray(sw * sh); + smask.fillGrayBuffer(alphaBuf); + + if (sw !== width || sh !== height) { + alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height); + } + } else if (mask) { + if (mask instanceof PDFImage) { + sw = mask.width; + sh = mask.height; alphaBuf = new Uint8ClampedArray(sw * sh); - smask.fillGrayBuffer(alphaBuf); + mask.numComps = 1; + mask.fillGrayBuffer(alphaBuf); + + for (i = 0, ii = sw * sh; i < ii; ++i) { + alphaBuf[i] = 255 - alphaBuf[i]; + } if (sw !== width || sh !== height) { - alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height); + alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height); } - } else if (mask) { - if (mask instanceof PDFImage) { - sw = mask.width; - sh = mask.height; - alphaBuf = new Uint8ClampedArray(sw * sh); - mask.numComps = 1; - mask.fillGrayBuffer(alphaBuf); + } else if (Array.isArray(mask)) { + alphaBuf = new Uint8ClampedArray(width * height); + const numComps = this.numComps; - for (i = 0, ii = sw * sh; i < ii; ++i) { - alphaBuf[i] = 255 - alphaBuf[i]; - } + for (i = 0, ii = width * height; i < ii; ++i) { + let opacity = 0; + const imageOffset = i * numComps; - if (sw !== width || sh !== height) { - alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height); - } - } else if (Array.isArray(mask)) { - alphaBuf = new Uint8ClampedArray(width * height); - var numComps = this.numComps; + for (j = 0; j < numComps; ++j) { + const color = image[imageOffset + j]; + const maskOffset = j * 2; - for (i = 0, ii = width * height; i < ii; ++i) { - var opacity = 0; - var imageOffset = i * numComps; - - for (j = 0; j < numComps; ++j) { - var color = image[imageOffset + j]; - var maskOffset = j * 2; - - if (color < mask[maskOffset] || color > mask[maskOffset + 1]) { - opacity = 255; - break; - } - } - - alphaBuf[i] = opacity; - } - } else { - throw new _util.FormatError('Unknown mask format.'); - } - } - - if (alphaBuf) { - for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) { - rgbaBuf[j] = alphaBuf[i]; - } - } else { - for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) { - rgbaBuf[j] = 255; - } - } - }, - undoPreblend: function undoPreblend(buffer, width, height) { - var matte = this.smask && this.smask.matte; - - if (!matte) { - return; - } - - var matteRgb = this.colorSpace.getRgb(matte, 0); - var matteR = matteRgb[0]; - var matteG = matteRgb[1]; - var matteB = matteRgb[2]; - var length = width * height * 4; - - for (var i = 0; i < length; i += 4) { - var alpha = buffer[i + 3]; - - if (alpha === 0) { - buffer[i] = 255; - buffer[i + 1] = 255; - buffer[i + 2] = 255; - continue; - } - - var k = 255 / alpha; - buffer[i] = (buffer[i] - matteR) * k + matteR; - buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG; - buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB; - } - }, - createImageData: function createImageData() { - var forceRGBA = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var drawWidth = this.drawWidth; - var drawHeight = this.drawHeight; - var imgData = { - width: drawWidth, - height: drawHeight, - kind: 0, - data: null - }; - var numComps = this.numComps; - var originalWidth = this.width; - var originalHeight = this.height; - var bpc = this.bpc; - var rowBytes = originalWidth * numComps * bpc + 7 >> 3; - var imgArray; - - if (!forceRGBA) { - var kind; - - if (this.colorSpace.name === 'DeviceGray' && bpc === 1) { - kind = _util.ImageKind.GRAYSCALE_1BPP; - } else if (this.colorSpace.name === 'DeviceRGB' && bpc === 8 && !this.needsDecode) { - kind = _util.ImageKind.RGB_24BPP; - } - - if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) { - imgData.kind = kind; - imgArray = this.getImageBytes(originalHeight * rowBytes); - - if (this.image instanceof _stream.DecodeStream) { - imgData.data = imgArray; - } else { - var newArray = new Uint8ClampedArray(imgArray.length); - newArray.set(imgArray); - imgData.data = newArray; - } - - if (this.needsDecode) { - (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, 'PDFImage.createImageData: The image must be grayscale.'); - var buffer = imgData.data; - - for (var i = 0, ii = buffer.length; i < ii; i++) { - buffer[i] ^= 0xff; + if (color < mask[maskOffset] || color > mask[maskOffset + 1]) { + opacity = 255; + break; } } - return imgData; + alphaBuf[i] = opacity; } - - if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) { - var imageLength = originalHeight * rowBytes; - - switch (this.colorSpace.name) { - case 'DeviceGray': - imageLength *= 3; - - case 'DeviceRGB': - case 'DeviceCMYK': - imgData.kind = _util.ImageKind.RGB_24BPP; - imgData.data = this.getImageBytes(imageLength, drawWidth, drawHeight, true); - return imgData; - } - } - } - - imgArray = this.getImageBytes(originalHeight * rowBytes); - var actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight; - var comps = this.getComponents(imgArray); - var alpha01, maybeUndoPreblend; - - if (!forceRGBA && !this.smask && !this.mask) { - imgData.kind = _util.ImageKind.RGB_24BPP; - imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3); - alpha01 = 0; - maybeUndoPreblend = false; } else { - imgData.kind = _util.ImageKind.RGBA_32BPP; - imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4); - alpha01 = 1; - maybeUndoPreblend = true; - this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, comps); + throw new _util.FormatError("Unknown mask format."); + } + } + + if (alphaBuf) { + for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) { + rgbaBuf[j] = alphaBuf[i]; + } + } else { + for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) { + rgbaBuf[j] = 255; + } + } + } + + undoPreblend(buffer, width, height) { + const matte = this.smask && this.smask.matte; + + if (!matte) { + return; + } + + const matteRgb = this.colorSpace.getRgb(matte, 0); + const matteR = matteRgb[0]; + const matteG = matteRgb[1]; + const matteB = matteRgb[2]; + const length = width * height * 4; + + for (let i = 0; i < length; i += 4) { + const alpha = buffer[i + 3]; + + if (alpha === 0) { + buffer[i] = 255; + buffer[i + 1] = 255; + buffer[i + 2] = 255; + continue; } - if (this.needsDecode) { - this.decodeBuffer(comps); + const k = 255 / alpha; + buffer[i] = (buffer[i] - matteR) * k + matteR; + buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG; + buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB; + } + } + + createImageData() { + let forceRGBA = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + const drawWidth = this.drawWidth; + const drawHeight = this.drawHeight; + const imgData = { + width: drawWidth, + height: drawHeight, + interpolate: this.interpolate, + kind: 0, + data: null + }; + const numComps = this.numComps; + const originalWidth = this.width; + const originalHeight = this.height; + const bpc = this.bpc; + const rowBytes = originalWidth * numComps * bpc + 7 >> 3; + + if (!forceRGBA) { + let kind; + + if (this.colorSpace.name === "DeviceGray" && bpc === 1) { + kind = _util.ImageKind.GRAYSCALE_1BPP; + } else if (this.colorSpace.name === "DeviceRGB" && bpc === 8 && !this.needsDecode) { + kind = _util.ImageKind.RGB_24BPP; } - this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01); - - if (maybeUndoPreblend) { - this.undoPreblend(imgData.data, drawWidth, actualHeight); - } - - return imgData; - }, - fillGrayBuffer: function fillGrayBuffer(buffer) { - var numComps = this.numComps; - - if (numComps !== 1) { - throw new _util.FormatError("Reading gray scale from a color image: ".concat(numComps)); - } - - var width = this.width; - var height = this.height; - var bpc = this.bpc; - var rowBytes = width * numComps * bpc + 7 >> 3; - var imgArray = this.getImageBytes(height * rowBytes); - var comps = this.getComponents(imgArray); - var i, length; - - if (bpc === 1) { - length = width * height; + if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) { + imgData.kind = kind; + imgData.data = this.getImageBytes(originalHeight * rowBytes, {}); if (this.needsDecode) { - for (i = 0; i < length; ++i) { - buffer[i] = comps[i] - 1 & 255; - } - } else { - for (i = 0; i < length; ++i) { - buffer[i] = -comps[i] & 255; + (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, "PDFImage.createImageData: The image must be grayscale."); + const buffer = imgData.data; + + for (let i = 0, ii = buffer.length; i < ii; i++) { + buffer[i] ^= 0xff; } } - return; + return imgData; } + if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) { + let imageLength = originalHeight * rowBytes; + + switch (this.colorSpace.name) { + case "DeviceGray": + imageLength *= 3; + + case "DeviceRGB": + case "DeviceCMYK": + imgData.kind = _util.ImageKind.RGB_24BPP; + imgData.data = this.getImageBytes(imageLength, { + drawWidth, + drawHeight, + forceRGB: true + }); + return imgData; + } + } + } + + const imgArray = this.getImageBytes(originalHeight * rowBytes, { + internal: true + }); + const actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight; + const comps = this.getComponents(imgArray); + let alpha01, maybeUndoPreblend; + + if (!forceRGBA && !this.smask && !this.mask) { + imgData.kind = _util.ImageKind.RGB_24BPP; + imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3); + alpha01 = 0; + maybeUndoPreblend = false; + } else { + imgData.kind = _util.ImageKind.RGBA_32BPP; + imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4); + alpha01 = 1; + maybeUndoPreblend = true; + this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, comps); + } + + if (this.needsDecode) { + this.decodeBuffer(comps); + } + + this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01); + + if (maybeUndoPreblend) { + this.undoPreblend(imgData.data, drawWidth, actualHeight); + } + + return imgData; + } + + fillGrayBuffer(buffer) { + const numComps = this.numComps; + + if (numComps !== 1) { + throw new _util.FormatError(`Reading gray scale from a color image: ${numComps}`); + } + + const width = this.width; + const height = this.height; + const bpc = this.bpc; + const rowBytes = width * numComps * bpc + 7 >> 3; + const imgArray = this.getImageBytes(height * rowBytes, { + internal: true + }); + const comps = this.getComponents(imgArray); + let i, length; + + if (bpc === 1) { + length = width * height; + if (this.needsDecode) { - this.decodeBuffer(comps); + for (i = 0; i < length; ++i) { + buffer[i] = comps[i] - 1 & 255; + } + } else { + for (i = 0; i < length; ++i) { + buffer[i] = -comps[i] & 255; + } } - length = width * height; - var scale = 255 / ((1 << bpc) - 1); - - for (i = 0; i < length; ++i) { - buffer[i] = scale * comps[i]; - } - }, - getImageBytes: function getImageBytes(length, drawWidth, drawHeight) { - var forceRGB = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - this.image.reset(); - this.image.drawWidth = drawWidth || this.width; - this.image.drawHeight = drawHeight || this.height; - this.image.forceRGB = !!forceRGB; - return this.image.getBytes(length, true); + return; } - }; - return PDFImage; -}(); + + if (this.needsDecode) { + this.decodeBuffer(comps); + } + + length = width * height; + const scale = 255 / ((1 << bpc) - 1); + + for (i = 0; i < length; ++i) { + buffer[i] = scale * comps[i]; + } + } + + getImageBytes(length, _ref5) { + let { + drawWidth, + drawHeight, + forceRGB = false, + internal = false + } = _ref5; + this.image.reset(); + this.image.drawWidth = drawWidth || this.width; + this.image.drawHeight = drawHeight || this.height; + this.image.forceRGB = !!forceRGB; + const imageBytes = this.image.getBytes(length); + + if (internal || this.image instanceof _decode_stream.DecodeStream) { + return imageBytes; + } + + (0, _util.assert)(imageBytes instanceof Uint8Array, 'PDFImage.getImageBytes: Unsupported "imageBytes" type.'); + return new Uint8Array(imageBytes); + } + +} exports.PDFImage = PDFImage; /***/ }), -/* 191 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 189 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.MessageHandler = MessageHandler; +})); +exports.applyMaskImageData = applyMaskImageData; -var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2)); +var _util = __w_pdfjs_require__(2); -var _util = __w_pdfjs_require__(5); +function applyMaskImageData(_ref) { + let { + src, + srcPos = 0, + dest, + destPos = 0, + width, + height, + inverseDecode = false + } = _ref; + const opaque = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque]; + const widthInSource = width >> 3; + const widthRemainder = width & 7; + const srcLength = src.length; + dest = new Uint32Array(dest.buffer); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + for (let i = 0; i < height; i++) { + for (const max = srcPos + widthInSource; srcPos < max; srcPos++) { + const elem = srcPos < srcLength ? src[srcPos] : 255; + dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping; + } -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + if (widthRemainder === 0) { + continue; + } -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + const elem = srcPos < srcLength ? src[srcPos++] : 255; -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -function resolveCall(_x, _x2) { - return _resolveCall.apply(this, arguments); -} - -function _resolveCall() { - _resolveCall = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee(fn, args) { - var thisArg, - _args = arguments; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - thisArg = _args.length > 2 && _args[2] !== undefined ? _args[2] : null; - - if (fn) { - _context.next = 3; - break; - } - - return _context.abrupt("return", undefined); - - case 3: - return _context.abrupt("return", fn.apply(thisArg, args)); - - case 4: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - return _resolveCall.apply(this, arguments); -} - -function wrapReason(reason) { - if (_typeof(reason) !== 'object') { - return reason; + for (let j = 0; j < widthRemainder; j++) { + dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping; + } } - switch (reason.name) { - case 'AbortException': - return new _util.AbortException(reason.message); - - case 'MissingPDFException': - return new _util.MissingPDFException(reason.message); - - case 'UnexpectedResponseException': - return new _util.UnexpectedResponseException(reason.message, reason.status); - - default: - return new _util.UnknownErrorException(reason.message, reason.details); - } + return { + srcPos, + destPos + }; } -function makeReasonSerializable(reason) { - if (!(reason instanceof Error) || reason instanceof _util.AbortException || reason instanceof _util.MissingPDFException || reason instanceof _util.UnexpectedResponseException || reason instanceof _util.UnknownErrorException) { - return reason; +/***/ }), +/* 190 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.incrementalUpdate = incrementalUpdate; +exports.writeDict = writeDict; +exports.writeObject = writeObject; + +var _util = __w_pdfjs_require__(2); + +var _primitives = __w_pdfjs_require__(130); + +var _core_utils = __w_pdfjs_require__(131); + +var _xml_parser = __w_pdfjs_require__(191); + +var _base_stream = __w_pdfjs_require__(132); + +var _crypto = __w_pdfjs_require__(192); + +function writeObject(ref, obj, buffer, transform) { + buffer.push(`${ref.num} ${ref.gen} obj\n`); + + if (obj instanceof _primitives.Dict) { + writeDict(obj, buffer, transform); + } else if (obj instanceof _base_stream.BaseStream) { + writeStream(obj, buffer, transform); } - return new _util.UnknownErrorException(reason.message, reason.toString()); + buffer.push("\nendobj\n"); } -function resolveOrReject(capability, success, reason) { - if (success) { - capability.resolve(); +function writeDict(dict, buffer, transform) { + buffer.push("<<"); + + for (const key of dict.getKeys()) { + buffer.push(` /${(0, _core_utils.escapePDFName)(key)} `); + writeValue(dict.getRaw(key), buffer, transform); + } + + buffer.push(">>"); +} + +function writeStream(stream, buffer, transform) { + writeDict(stream.dict, buffer, transform); + buffer.push(" stream\n"); + let string = stream.getString(); + + if (transform !== null) { + string = transform.encryptString(string); + } + + buffer.push(string, "\nendstream\n"); +} + +function writeArray(array, buffer, transform) { + buffer.push("["); + let first = true; + + for (const val of array) { + if (!first) { + buffer.push(" "); + } else { + first = false; + } + + writeValue(val, buffer, transform); + } + + buffer.push("]"); +} + +function writeValue(value, buffer, transform) { + if (value instanceof _primitives.Name) { + buffer.push(`/${(0, _core_utils.escapePDFName)(value.name)}`); + } else if (value instanceof _primitives.Ref) { + buffer.push(`${value.num} ${value.gen} R`); + } else if (Array.isArray(value)) { + writeArray(value, buffer, transform); + } else if (typeof value === "string") { + if (transform !== null) { + value = transform.encryptString(value); + } + + buffer.push(`(${(0, _util.escapeString)(value)})`); + } else if (typeof value === "number") { + buffer.push((0, _core_utils.numberToString)(value)); + } else if (typeof value === "boolean") { + buffer.push(value.toString()); + } else if (value instanceof _primitives.Dict) { + writeDict(value, buffer, transform); + } else if (value instanceof _base_stream.BaseStream) { + writeStream(value, buffer, transform); + } else if (value === null) { + buffer.push("null"); } else { - capability.reject(reason); + (0, _util.warn)(`Unhandled value in writer: ${typeof value}, please file a bug.`); } } -function finalize(promise) { - return Promise.resolve(promise)["catch"](function () {}); +function writeInt(number, size, offset, buffer) { + for (let i = size + offset - 1; i > offset - 1; i--) { + buffer[i] = number & 0xff; + number >>= 8; + } + + return offset + size; } -function MessageHandler(sourceName, targetName, comObj) { - var _this = this; +function writeString(string, offset, buffer) { + for (let i = 0, len = string.length; i < len; i++) { + buffer[offset + i] = string.charCodeAt(i) & 0xff; + } +} - this.sourceName = sourceName; - this.targetName = targetName; - this.comObj = comObj; - this.callbackId = 1; - this.streamId = 1; - this.postMessageTransfers = true; - this.streamSinks = Object.create(null); - this.streamControllers = Object.create(null); - var callbacksCapabilities = this.callbacksCapabilities = Object.create(null); - var ah = this.actionHandler = Object.create(null); +function computeMD5(filesize, xrefInfo) { + const time = Math.floor(Date.now() / 1000); + const filename = xrefInfo.filename || ""; + const md5Buffer = [time.toString(), filename, filesize.toString()]; + let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0); - this._onComObjOnMessage = function (event) { - var data = event.data; + for (const value of Object.values(xrefInfo.info)) { + md5Buffer.push(value); + md5BufferLen += value.length; + } - if (data.targetName !== _this.sourceName) { + const array = new Uint8Array(md5BufferLen); + let offset = 0; + + for (const str of md5Buffer) { + writeString(str, offset, array); + offset += str.length; + } + + return (0, _util.bytesToString)((0, _crypto.calculateMD5)(array)); +} + +function writeXFADataForAcroform(str, newRefs) { + const xml = new _xml_parser.SimpleXMLParser({ + hasAttributes: true + }).parseFromString(str); + + for (const { + xfa + } of newRefs) { + if (!xfa) { + continue; + } + + const { + path, + value + } = xfa; + + if (!path) { + continue; + } + + const node = xml.documentElement.searchNode((0, _core_utils.parseXFAPath)(path), 0); + + if (node) { + if (Array.isArray(value)) { + node.childNodes = value.map(val => new _xml_parser.SimpleDOMNode("value", val)); + } else { + node.childNodes = [new _xml_parser.SimpleDOMNode("#text", value)]; + } + } else { + (0, _util.warn)(`Node not found for path: ${path}`); + } + } + + const buffer = []; + xml.documentElement.dump(buffer); + return buffer.join(""); +} + +function updateXFA(_ref) { + let { + xfaData, + xfaDatasetsRef, + hasXfaDatasetsEntry, + acroFormRef, + acroForm, + newRefs, + xref, + xrefInfo + } = _ref; + + if (xref === null) { + return; + } + + if (!hasXfaDatasetsEntry) { + if (!acroFormRef) { + (0, _util.warn)("XFA - Cannot save it"); return; } - if (data.stream) { - _this._processStreamMessage(data); - } else if (data.isReply) { - var callbackId = data.callbackId; + const oldXfa = acroForm.get("XFA"); + const newXfa = oldXfa.slice(); + newXfa.splice(2, 0, "datasets"); + newXfa.splice(3, 0, xfaDatasetsRef); + acroForm.set("XFA", newXfa); + const encrypt = xref.encrypt; + let transform = null; - if (data.callbackId in callbacksCapabilities) { - var callback = callbacksCapabilities[callbackId]; - delete callbacksCapabilities[callbackId]; + if (encrypt) { + transform = encrypt.createCipherTransform(acroFormRef.num, acroFormRef.gen); + } - if ('error' in data) { - callback.reject(wrapReason(data.error)); - } else { - callback.resolve(data.data); + const buffer = [`${acroFormRef.num} ${acroFormRef.gen} obj\n`]; + writeDict(acroForm, buffer, transform); + buffer.push("\n"); + acroForm.set("XFA", oldXfa); + newRefs.push({ + ref: acroFormRef, + data: buffer.join("") + }); + } + + if (xfaData === null) { + const datasets = xref.fetchIfRef(xfaDatasetsRef); + xfaData = writeXFADataForAcroform(datasets.getString(), newRefs); + } + + const encrypt = xref.encrypt; + + if (encrypt) { + const transform = encrypt.createCipherTransform(xfaDatasetsRef.num, xfaDatasetsRef.gen); + xfaData = transform.encryptString(xfaData); + } + + const data = `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\n` + `<< /Type /EmbeddedFile /Length ${xfaData.length}>>\nstream\n` + xfaData + "\nendstream\nendobj\n"; + newRefs.push({ + ref: xfaDatasetsRef, + data + }); +} + +function incrementalUpdate(_ref2) { + let { + originalData, + xrefInfo, + newRefs, + xref = null, + hasXfa = false, + xfaDatasetsRef = null, + hasXfaDatasetsEntry = false, + acroFormRef = null, + acroForm = null, + xfaData = null + } = _ref2; + + if (hasXfa) { + updateXFA({ + xfaData, + xfaDatasetsRef, + hasXfaDatasetsEntry, + acroFormRef, + acroForm, + newRefs, + xref, + xrefInfo + }); + } + + const newXref = new _primitives.Dict(null); + const refForXrefTable = xrefInfo.newRef; + let buffer, baseOffset; + const lastByte = originalData.at(-1); + + if (lastByte === 0x0a || lastByte === 0x0d) { + buffer = []; + baseOffset = originalData.length; + } else { + buffer = ["\n"]; + baseOffset = originalData.length + 1; + } + + newXref.set("Size", refForXrefTable.num + 1); + newXref.set("Prev", xrefInfo.startXRef); + newXref.set("Type", _primitives.Name.get("XRef")); + + if (xrefInfo.rootRef !== null) { + newXref.set("Root", xrefInfo.rootRef); + } + + if (xrefInfo.infoRef !== null) { + newXref.set("Info", xrefInfo.infoRef); + } + + if (xrefInfo.encryptRef !== null) { + newXref.set("Encrypt", xrefInfo.encryptRef); + } + + newRefs.push({ + ref: refForXrefTable, + data: "" + }); + newRefs = newRefs.sort((a, b) => { + return a.ref.num - b.ref.num; + }); + const xrefTableData = [[0, 1, 0xffff]]; + const indexes = [0, 1]; + let maxOffset = 0; + + for (const { + ref, + data + } of newRefs) { + maxOffset = Math.max(maxOffset, baseOffset); + xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]); + baseOffset += data.length; + indexes.push(ref.num, 1); + buffer.push(data); + } + + newXref.set("Index", indexes); + + if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) { + const md5 = computeMD5(baseOffset, xrefInfo); + newXref.set("ID", [xrefInfo.fileIds[0], md5]); + } + + const offsetSize = Math.ceil(Math.log2(maxOffset) / 8); + const sizes = [1, offsetSize, 2]; + const structSize = sizes[0] + sizes[1] + sizes[2]; + const tableLength = structSize * xrefTableData.length; + newXref.set("W", sizes); + newXref.set("Length", tableLength); + buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\n`); + writeDict(newXref, buffer, null); + buffer.push(" stream\n"); + const bufferLen = buffer.reduce((a, str) => a + str.length, 0); + const footer = `\nendstream\nendobj\nstartxref\n${baseOffset}\n%%EOF\n`; + const array = new Uint8Array(originalData.length + bufferLen + tableLength + footer.length); + array.set(originalData); + let offset = originalData.length; + + for (const str of buffer) { + writeString(str, offset, array); + offset += str.length; + } + + for (const [type, objOffset, gen] of xrefTableData) { + offset = writeInt(type, sizes[0], offset, array); + offset = writeInt(objOffset, sizes[1], offset, array); + offset = writeInt(gen, sizes[2], offset, array); + } + + writeString(footer, offset, array); + return array; +} + +/***/ }), +/* 191 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XMLParserErrorCode = exports.XMLParserBase = exports.SimpleXMLParser = exports.SimpleDOMNode = void 0; + +var _core_utils = __w_pdfjs_require__(131); + +const XMLParserErrorCode = { + NoError: 0, + EndOfDocument: -1, + UnterminatedCdat: -2, + UnterminatedXmlDeclaration: -3, + UnterminatedDoctypeDeclaration: -4, + UnterminatedComment: -5, + MalformedElement: -6, + OutOfMemory: -7, + UnterminatedAttributeValue: -8, + UnterminatedElement: -9, + ElementNeverBegun: -10 +}; +exports.XMLParserErrorCode = XMLParserErrorCode; + +function isWhitespace(s, index) { + const ch = s[index]; + return ch === " " || ch === "\n" || ch === "\r" || ch === "\t"; +} + +function isWhitespaceString(s) { + for (let i = 0, ii = s.length; i < ii; i++) { + if (!isWhitespace(s, i)) { + return false; + } + } + + return true; +} + +class XMLParserBase { + _resolveEntities(s) { + return s.replace(/&([^;]+);/g, (all, entity) => { + if (entity.substring(0, 2) === "#x") { + return String.fromCodePoint(parseInt(entity.substring(2), 16)); + } else if (entity.substring(0, 1) === "#") { + return String.fromCodePoint(parseInt(entity.substring(1), 10)); + } + + switch (entity) { + case "lt": + return "<"; + + case "gt": + return ">"; + + case "amp": + return "&"; + + case "quot": + return '"'; + + case "apos": + return "'"; + } + + return this.onResolveEntity(entity); + }); + } + + _parseContent(s, start) { + const attributes = []; + let pos = start; + + function skipWs() { + while (pos < s.length && isWhitespace(s, pos)) { + ++pos; + } + } + + while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "/") { + ++pos; + } + + const name = s.substring(start, pos); + skipWs(); + + while (pos < s.length && s[pos] !== ">" && s[pos] !== "/" && s[pos] !== "?") { + skipWs(); + let attrName = "", + attrValue = ""; + + while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== "=") { + attrName += s[pos]; + ++pos; + } + + skipWs(); + + if (s[pos] !== "=") { + return null; + } + + ++pos; + skipWs(); + const attrEndChar = s[pos]; + + if (attrEndChar !== '"' && attrEndChar !== "'") { + return null; + } + + const attrEndIndex = s.indexOf(attrEndChar, ++pos); + + if (attrEndIndex < 0) { + return null; + } + + attrValue = s.substring(pos, attrEndIndex); + attributes.push({ + name: attrName, + value: this._resolveEntities(attrValue) + }); + pos = attrEndIndex + 1; + skipWs(); + } + + return { + name, + attributes, + parsed: pos - start + }; + } + + _parseProcessingInstruction(s, start) { + let pos = start; + + function skipWs() { + while (pos < s.length && isWhitespace(s, pos)) { + ++pos; + } + } + + while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "?" && s[pos] !== "/") { + ++pos; + } + + const name = s.substring(start, pos); + skipWs(); + const attrStart = pos; + + while (pos < s.length && (s[pos] !== "?" || s[pos + 1] !== ">")) { + ++pos; + } + + const value = s.substring(attrStart, pos); + return { + name, + value, + parsed: pos - start + }; + } + + parseXml(s) { + let i = 0; + + while (i < s.length) { + const ch = s[i]; + let j = i; + + if (ch === "<") { + ++j; + const ch2 = s[j]; + let q; + + switch (ch2) { + case "/": + ++j; + q = s.indexOf(">", j); + + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedElement); + return; + } + + this.onEndElement(s.substring(j, q)); + j = q + 1; + break; + + case "?": + ++j; + + const pi = this._parseProcessingInstruction(s, j); + + if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== "?>") { + this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration); + return; + } + + this.onPi(pi.name, pi.value); + j += pi.parsed + 2; + break; + + case "!": + if (s.substring(j + 1, j + 3) === "--") { + q = s.indexOf("-->", j + 3); + + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedComment); + return; + } + + this.onComment(s.substring(j + 3, q)); + j = q + 3; + } else if (s.substring(j + 1, j + 8) === "[CDATA[") { + q = s.indexOf("]]>", j + 8); + + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedCdat); + return; + } + + this.onCdata(s.substring(j + 8, q)); + j = q + 3; + } else if (s.substring(j + 1, j + 8) === "DOCTYPE") { + const q2 = s.indexOf("[", j + 8); + let complexDoctype = false; + q = s.indexOf(">", j + 8); + + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration); + return; + } + + if (q2 > 0 && q > q2) { + q = s.indexOf("]>", j + 8); + + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration); + return; + } + + complexDoctype = true; + } + + const doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0)); + this.onDoctype(doctypeContent); + j = q + (complexDoctype ? 2 : 1); + } else { + this.onError(XMLParserErrorCode.MalformedElement); + return; + } + + break; + + default: + const content = this._parseContent(s, j); + + if (content === null) { + this.onError(XMLParserErrorCode.MalformedElement); + return; + } + + let isClosed = false; + + if (s.substring(j + content.parsed, j + content.parsed + 2) === "/>") { + isClosed = true; + } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== ">") { + this.onError(XMLParserErrorCode.UnterminatedElement); + return; + } + + this.onBeginElement(content.name, content.attributes, isClosed); + j += content.parsed + (isClosed ? 2 : 1); + break; } } else { - throw new Error("Cannot resolve callback ".concat(callbackId)); + while (j < s.length && s[j] !== "<") { + j++; + } + + const text = s.substring(i, j); + this.onText(this._resolveEntities(text)); + } + + i = j; + } + } + + onResolveEntity(name) { + return `&${name};`; + } + + onPi(name, value) {} + + onComment(text) {} + + onCdata(text) {} + + onDoctype(doctypeContent) {} + + onText(text) {} + + onBeginElement(name, attributes, isEmpty) {} + + onEndElement(name) {} + + onError(code) {} + +} + +exports.XMLParserBase = XMLParserBase; + +class SimpleDOMNode { + constructor(nodeName, nodeValue) { + this.nodeName = nodeName; + this.nodeValue = nodeValue; + Object.defineProperty(this, "parentNode", { + value: null, + writable: true + }); + } + + get firstChild() { + return this.childNodes && this.childNodes[0]; + } + + get nextSibling() { + const childNodes = this.parentNode.childNodes; + + if (!childNodes) { + return undefined; + } + + const index = childNodes.indexOf(this); + + if (index === -1) { + return undefined; + } + + return childNodes[index + 1]; + } + + get textContent() { + if (!this.childNodes) { + return this.nodeValue || ""; + } + + return this.childNodes.map(function (child) { + return child.textContent; + }).join(""); + } + + get children() { + return this.childNodes || []; + } + + hasChildNodes() { + return this.childNodes && this.childNodes.length > 0; + } + + searchNode(paths, pos) { + if (pos >= paths.length) { + return this; + } + + const component = paths[pos]; + const stack = []; + let node = this; + + while (true) { + if (component.name === node.nodeName) { + if (component.pos === 0) { + const res = node.searchNode(paths, pos + 1); + + if (res !== null) { + return res; + } + } else if (stack.length === 0) { + return null; + } else { + const [parent] = stack.pop(); + let siblingPos = 0; + + for (const child of parent.childNodes) { + if (component.name === child.nodeName) { + if (siblingPos === component.pos) { + return child.searchNode(paths, pos + 1); + } + + siblingPos++; + } + } + + return node.searchNode(paths, pos + 1); + } + } + + if (node.childNodes && node.childNodes.length !== 0) { + stack.push([node, 0]); + node = node.childNodes[0]; + } else if (stack.length === 0) { + return null; + } else { + while (stack.length !== 0) { + const [parent, currentPos] = stack.pop(); + const newPos = currentPos + 1; + + if (newPos < parent.childNodes.length) { + stack.push([parent, newPos]); + node = parent.childNodes[newPos]; + break; + } + } + + if (stack.length === 0) { + return null; + } + } + } + } + + dump(buffer) { + if (this.nodeName === "#text") { + buffer.push((0, _core_utils.encodeToXmlString)(this.nodeValue)); + return; + } + + buffer.push(`<${this.nodeName}`); + + if (this.attributes) { + for (const attribute of this.attributes) { + buffer.push(` ${attribute.name}="${(0, _core_utils.encodeToXmlString)(attribute.value)}"`); + } + } + + if (this.hasChildNodes()) { + buffer.push(">"); + + for (const child of this.childNodes) { + child.dump(buffer); + } + + buffer.push(``); + } else if (this.nodeValue) { + buffer.push(`>${(0, _core_utils.encodeToXmlString)(this.nodeValue)}`); + } else { + buffer.push("/>"); + } + } + +} + +exports.SimpleDOMNode = SimpleDOMNode; + +class SimpleXMLParser extends XMLParserBase { + constructor(_ref) { + let { + hasAttributes = false, + lowerCaseName = false + } = _ref; + super(); + this._currentFragment = null; + this._stack = null; + this._errorCode = XMLParserErrorCode.NoError; + this._hasAttributes = hasAttributes; + this._lowerCaseName = lowerCaseName; + } + + parseFromString(data) { + this._currentFragment = []; + this._stack = []; + this._errorCode = XMLParserErrorCode.NoError; + this.parseXml(data); + + if (this._errorCode !== XMLParserErrorCode.NoError) { + return undefined; + } + + const [documentElement] = this._currentFragment; + + if (!documentElement) { + return undefined; + } + + return { + documentElement + }; + } + + onText(text) { + if (isWhitespaceString(text)) { + return; + } + + const node = new SimpleDOMNode("#text", text); + + this._currentFragment.push(node); + } + + onCdata(text) { + const node = new SimpleDOMNode("#text", text); + + this._currentFragment.push(node); + } + + onBeginElement(name, attributes, isEmpty) { + if (this._lowerCaseName) { + name = name.toLowerCase(); + } + + const node = new SimpleDOMNode(name); + node.childNodes = []; + + if (this._hasAttributes) { + node.attributes = attributes; + } + + this._currentFragment.push(node); + + if (isEmpty) { + return; + } + + this._stack.push(this._currentFragment); + + this._currentFragment = node.childNodes; + } + + onEndElement(name) { + this._currentFragment = this._stack.pop() || []; + + const lastElement = this._currentFragment.at(-1); + + if (!lastElement) { + return null; + } + + for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) { + lastElement.childNodes[i].parentNode = lastElement; + } + + return lastElement; + } + + onError(code) { + this._errorCode = code; + } + +} + +exports.SimpleXMLParser = SimpleXMLParser; + +/***/ }), +/* 192 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.calculateSHA256 = exports.calculateMD5 = exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.ARCFourCipher = exports.AES256Cipher = exports.AES128Cipher = void 0; +exports.calculateSHA384 = calculateSHA384; +exports.calculateSHA512 = void 0; + +var _util = __w_pdfjs_require__(2); + +var _primitives = __w_pdfjs_require__(130); + +var _decrypt_stream = __w_pdfjs_require__(193); + +class ARCFourCipher { + constructor(key) { + this.a = 0; + this.b = 0; + const s = new Uint8Array(256); + const keyLength = key.length; + + for (let i = 0; i < 256; ++i) { + s[i] = i; + } + + for (let i = 0, j = 0; i < 256; ++i) { + const tmp = s[i]; + j = j + tmp + key[i % keyLength] & 0xff; + s[i] = s[j]; + s[j] = tmp; + } + + this.s = s; + } + + encryptBlock(data) { + let a = this.a, + b = this.b; + const s = this.s; + const n = data.length; + const output = new Uint8Array(n); + + for (let i = 0; i < n; ++i) { + a = a + 1 & 0xff; + const tmp = s[a]; + b = b + tmp & 0xff; + const tmp2 = s[b]; + s[a] = tmp2; + s[b] = tmp; + output[i] = data[i] ^ s[tmp + tmp2 & 0xff]; + } + + this.a = a; + this.b = b; + return output; + } + + decryptBlock(data) { + return this.encryptBlock(data); + } + + encrypt(data) { + return this.encryptBlock(data); + } + +} + +exports.ARCFourCipher = ARCFourCipher; + +const calculateMD5 = function calculateMD5Closure() { + const r = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]); + const k = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]); + + function hash(data, offset, length) { + let h0 = 1732584193, + h1 = -271733879, + h2 = -1732584194, + h3 = 271733878; + const paddedLength = length + 72 & ~63; + const padded = new Uint8Array(paddedLength); + let i, j; + + for (i = 0; i < length; ++i) { + padded[i] = data[offset++]; + } + + padded[i++] = 0x80; + const n = paddedLength - 8; + + while (i < n) { + padded[i++] = 0; + } + + padded[i++] = length << 3 & 0xff; + padded[i++] = length >> 5 & 0xff; + padded[i++] = length >> 13 & 0xff; + padded[i++] = length >> 21 & 0xff; + padded[i++] = length >>> 29 & 0xff; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + const w = new Int32Array(16); + + for (i = 0; i < paddedLength;) { + for (j = 0; j < 16; ++j, i += 4) { + w[j] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | padded[i + 3] << 24; + } + + let a = h0, + b = h1, + c = h2, + d = h3, + f, + g; + + for (j = 0; j < 64; ++j) { + if (j < 16) { + f = b & c | ~b & d; + g = j; + } else if (j < 32) { + f = d & b | ~d & c; + g = 5 * j + 1 & 15; + } else if (j < 48) { + f = b ^ c ^ d; + g = 3 * j + 5 & 15; + } else { + f = c ^ (b | ~d); + g = 7 * j & 15; + } + + const tmp = d, + rotateArg = a + f + k[j] + w[g] | 0, + rotate = r[j]; + d = c; + c = b; + b = b + (rotateArg << rotate | rotateArg >>> 32 - rotate) | 0; + a = tmp; + } + + h0 = h0 + a | 0; + h1 = h1 + b | 0; + h2 = h2 + c | 0; + h3 = h3 + d | 0; + } + + return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]); + } + + return hash; +}(); + +exports.calculateMD5 = calculateMD5; + +class Word64 { + constructor(highInteger, lowInteger) { + this.high = highInteger | 0; + this.low = lowInteger | 0; + } + + and(word) { + this.high &= word.high; + this.low &= word.low; + } + + xor(word) { + this.high ^= word.high; + this.low ^= word.low; + } + + or(word) { + this.high |= word.high; + this.low |= word.low; + } + + shiftRight(places) { + if (places >= 32) { + this.low = this.high >>> places - 32 | 0; + this.high = 0; + } else { + this.low = this.low >>> places | this.high << 32 - places; + this.high = this.high >>> places | 0; + } + } + + shiftLeft(places) { + if (places >= 32) { + this.high = this.low << places - 32; + this.low = 0; + } else { + this.high = this.high << places | this.low >>> 32 - places; + this.low <<= places; + } + } + + rotateRight(places) { + let low, high; + + if (places & 32) { + high = this.low; + low = this.high; + } else { + low = this.low; + high = this.high; + } + + places &= 31; + this.low = low >>> places | high << 32 - places; + this.high = high >>> places | low << 32 - places; + } + + not() { + this.high = ~this.high; + this.low = ~this.low; + } + + add(word) { + const lowAdd = (this.low >>> 0) + (word.low >>> 0); + let highAdd = (this.high >>> 0) + (word.high >>> 0); + + if (lowAdd > 0xffffffff) { + highAdd += 1; + } + + this.low = lowAdd | 0; + this.high = highAdd | 0; + } + + copyTo(bytes, offset) { + bytes[offset] = this.high >>> 24 & 0xff; + bytes[offset + 1] = this.high >> 16 & 0xff; + bytes[offset + 2] = this.high >> 8 & 0xff; + bytes[offset + 3] = this.high & 0xff; + bytes[offset + 4] = this.low >>> 24 & 0xff; + bytes[offset + 5] = this.low >> 16 & 0xff; + bytes[offset + 6] = this.low >> 8 & 0xff; + bytes[offset + 7] = this.low & 0xff; + } + + assign(word) { + this.high = word.high; + this.low = word.low; + } + +} + +const calculateSHA256 = function calculateSHA256Closure() { + function rotr(x, n) { + return x >>> n | x << 32 - n; + } + + function ch(x, y, z) { + return x & y ^ ~x & z; + } + + function maj(x, y, z) { + return x & y ^ x & z ^ y & z; + } + + function sigma(x) { + return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22); + } + + function sigmaPrime(x) { + return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25); + } + + function littleSigma(x) { + return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3; + } + + function littleSigmaPrime(x) { + return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10; + } + + const k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]; + + function hash(data, offset, length) { + let h0 = 0x6a09e667, + h1 = 0xbb67ae85, + h2 = 0x3c6ef372, + h3 = 0xa54ff53a, + h4 = 0x510e527f, + h5 = 0x9b05688c, + h6 = 0x1f83d9ab, + h7 = 0x5be0cd19; + const paddedLength = Math.ceil((length + 9) / 64) * 64; + const padded = new Uint8Array(paddedLength); + let i, j; + + for (i = 0; i < length; ++i) { + padded[i] = data[offset++]; + } + + padded[i++] = 0x80; + const n = paddedLength - 8; + + while (i < n) { + padded[i++] = 0; + } + + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = length >>> 29 & 0xff; + padded[i++] = length >> 21 & 0xff; + padded[i++] = length >> 13 & 0xff; + padded[i++] = length >> 5 & 0xff; + padded[i++] = length << 3 & 0xff; + const w = new Uint32Array(64); + + for (i = 0; i < paddedLength;) { + for (j = 0; j < 16; ++j) { + w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3]; + i += 4; + } + + for (j = 16; j < 64; ++j) { + w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + littleSigma(w[j - 15]) + w[j - 16] | 0; + } + + let a = h0, + b = h1, + c = h2, + d = h3, + e = h4, + f = h5, + g = h6, + h = h7, + t1, + t2; + + for (j = 0; j < 64; ++j) { + t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j]; + t2 = sigma(a) + maj(a, b, c); + h = g; + g = f; + f = e; + e = d + t1 | 0; + d = c; + c = b; + b = a; + a = t1 + t2 | 0; + } + + h0 = h0 + a | 0; + h1 = h1 + b | 0; + h2 = h2 + c | 0; + h3 = h3 + d | 0; + h4 = h4 + e | 0; + h5 = h5 + f | 0; + h6 = h6 + g | 0; + h7 = h7 + h | 0; + } + + return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]); + } + + return hash; +}(); + +exports.calculateSHA256 = calculateSHA256; + +const calculateSHA512 = function calculateSHA512Closure() { + function ch(result, x, y, z, tmp) { + result.assign(x); + result.and(y); + tmp.assign(x); + tmp.not(); + tmp.and(z); + result.xor(tmp); + } + + function maj(result, x, y, z, tmp) { + result.assign(x); + result.and(y); + tmp.assign(x); + tmp.and(z); + result.xor(tmp); + tmp.assign(y); + tmp.and(z); + result.xor(tmp); + } + + function sigma(result, x, tmp) { + result.assign(x); + result.rotateRight(28); + tmp.assign(x); + tmp.rotateRight(34); + result.xor(tmp); + tmp.assign(x); + tmp.rotateRight(39); + result.xor(tmp); + } + + function sigmaPrime(result, x, tmp) { + result.assign(x); + result.rotateRight(14); + tmp.assign(x); + tmp.rotateRight(18); + result.xor(tmp); + tmp.assign(x); + tmp.rotateRight(41); + result.xor(tmp); + } + + function littleSigma(result, x, tmp) { + result.assign(x); + result.rotateRight(1); + tmp.assign(x); + tmp.rotateRight(8); + result.xor(tmp); + tmp.assign(x); + tmp.shiftRight(7); + result.xor(tmp); + } + + function littleSigmaPrime(result, x, tmp) { + result.assign(x); + result.rotateRight(19); + tmp.assign(x); + tmp.rotateRight(61); + result.xor(tmp); + tmp.assign(x); + tmp.shiftRight(6); + result.xor(tmp); + } + + const k = [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)]; + + function hash(data, offset, length) { + let mode384 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + let h0, h1, h2, h3, h4, h5, h6, h7; + + if (!mode384) { + h0 = new Word64(0x6a09e667, 0xf3bcc908); + h1 = new Word64(0xbb67ae85, 0x84caa73b); + h2 = new Word64(0x3c6ef372, 0xfe94f82b); + h3 = new Word64(0xa54ff53a, 0x5f1d36f1); + h4 = new Word64(0x510e527f, 0xade682d1); + h5 = new Word64(0x9b05688c, 0x2b3e6c1f); + h6 = new Word64(0x1f83d9ab, 0xfb41bd6b); + h7 = new Word64(0x5be0cd19, 0x137e2179); + } else { + h0 = new Word64(0xcbbb9d5d, 0xc1059ed8); + h1 = new Word64(0x629a292a, 0x367cd507); + h2 = new Word64(0x9159015a, 0x3070dd17); + h3 = new Word64(0x152fecd8, 0xf70e5939); + h4 = new Word64(0x67332667, 0xffc00b31); + h5 = new Word64(0x8eb44a87, 0x68581511); + h6 = new Word64(0xdb0c2e0d, 0x64f98fa7); + h7 = new Word64(0x47b5481d, 0xbefa4fa4); + } + + const paddedLength = Math.ceil((length + 17) / 128) * 128; + const padded = new Uint8Array(paddedLength); + let i, j; + + for (i = 0; i < length; ++i) { + padded[i] = data[offset++]; + } + + padded[i++] = 0x80; + const n = paddedLength - 16; + + while (i < n) { + padded[i++] = 0; + } + + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = length >>> 29 & 0xff; + padded[i++] = length >> 21 & 0xff; + padded[i++] = length >> 13 & 0xff; + padded[i++] = length >> 5 & 0xff; + padded[i++] = length << 3 & 0xff; + const w = new Array(80); + + for (i = 0; i < 80; i++) { + w[i] = new Word64(0, 0); + } + + let a = new Word64(0, 0), + b = new Word64(0, 0), + c = new Word64(0, 0); + let d = new Word64(0, 0), + e = new Word64(0, 0), + f = new Word64(0, 0); + let g = new Word64(0, 0), + h = new Word64(0, 0); + const t1 = new Word64(0, 0), + t2 = new Word64(0, 0); + const tmp1 = new Word64(0, 0), + tmp2 = new Word64(0, 0); + let tmp3; + + for (i = 0; i < paddedLength;) { + for (j = 0; j < 16; ++j) { + w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3]; + w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | padded[i + 7]; + i += 8; + } + + for (j = 16; j < 80; ++j) { + tmp3 = w[j]; + littleSigmaPrime(tmp3, w[j - 2], tmp2); + tmp3.add(w[j - 7]); + littleSigma(tmp1, w[j - 15], tmp2); + tmp3.add(tmp1); + tmp3.add(w[j - 16]); + } + + a.assign(h0); + b.assign(h1); + c.assign(h2); + d.assign(h3); + e.assign(h4); + f.assign(h5); + g.assign(h6); + h.assign(h7); + + for (j = 0; j < 80; ++j) { + t1.assign(h); + sigmaPrime(tmp1, e, tmp2); + t1.add(tmp1); + ch(tmp1, e, f, g, tmp2); + t1.add(tmp1); + t1.add(k[j]); + t1.add(w[j]); + sigma(t2, a, tmp2); + maj(tmp1, a, b, c, tmp2); + t2.add(tmp1); + tmp3 = h; + h = g; + g = f; + f = e; + d.add(t1); + e = d; + d = c; + c = b; + b = a; + tmp3.assign(t1); + tmp3.add(t2); + a = tmp3; + } + + h0.add(a); + h1.add(b); + h2.add(c); + h3.add(d); + h4.add(e); + h5.add(f); + h6.add(g); + h7.add(h); + } + + let result; + + if (!mode384) { + result = new Uint8Array(64); + h0.copyTo(result, 0); + h1.copyTo(result, 8); + h2.copyTo(result, 16); + h3.copyTo(result, 24); + h4.copyTo(result, 32); + h5.copyTo(result, 40); + h6.copyTo(result, 48); + h7.copyTo(result, 56); + } else { + result = new Uint8Array(48); + h0.copyTo(result, 0); + h1.copyTo(result, 8); + h2.copyTo(result, 16); + h3.copyTo(result, 24); + h4.copyTo(result, 32); + h5.copyTo(result, 40); + } + + return result; + } + + return hash; +}(); + +exports.calculateSHA512 = calculateSHA512; + +function calculateSHA384(data, offset, length) { + return calculateSHA512(data, offset, length, true); +} + +class NullCipher { + decryptBlock(data) { + return data; + } + + encrypt(data) { + return data; + } + +} + +class AESBaseCipher { + constructor() { + if (this.constructor === AESBaseCipher) { + (0, _util.unreachable)("Cannot initialize AESBaseCipher."); + } + + this._s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]); + this._inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]); + this._mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]); + this._mixCol = new Uint8Array(256); + + for (let i = 0; i < 256; i++) { + if (i < 128) { + this._mixCol[i] = i << 1; + } else { + this._mixCol[i] = i << 1 ^ 0x1b; + } + } + + this.buffer = new Uint8Array(16); + this.bufferPosition = 0; + } + + _expandKey(cipherKey) { + (0, _util.unreachable)("Cannot call `_expandKey` on the base class"); + } + + _decrypt(input, key) { + let t, u, v; + const state = new Uint8Array(16); + state.set(input); + + for (let j = 0, k = this._keySize; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + + for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) { + t = state[13]; + state[13] = state[9]; + state[9] = state[5]; + state[5] = state[1]; + state[1] = t; + t = state[14]; + u = state[10]; + state[14] = state[6]; + state[10] = state[2]; + state[6] = t; + state[2] = u; + t = state[15]; + u = state[11]; + v = state[7]; + state[15] = state[3]; + state[11] = t; + state[7] = u; + state[3] = v; + + for (let j = 0; j < 16; ++j) { + state[j] = this._inv_s[state[j]]; + } + + for (let j = 0, k = i * 16; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + + for (let j = 0; j < 16; j += 4) { + const s0 = this._mix[state[j]]; + const s1 = this._mix[state[j + 1]]; + const s2 = this._mix[state[j + 2]]; + const s3 = this._mix[state[j + 3]]; + t = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ s3 << 8; + state[j] = t >>> 24 & 0xff; + state[j + 1] = t >> 16 & 0xff; + state[j + 2] = t >> 8 & 0xff; + state[j + 3] = t & 0xff; + } + } + + t = state[13]; + state[13] = state[9]; + state[9] = state[5]; + state[5] = state[1]; + state[1] = t; + t = state[14]; + u = state[10]; + state[14] = state[6]; + state[10] = state[2]; + state[6] = t; + state[2] = u; + t = state[15]; + u = state[11]; + v = state[7]; + state[15] = state[3]; + state[11] = t; + state[7] = u; + state[3] = v; + + for (let j = 0; j < 16; ++j) { + state[j] = this._inv_s[state[j]]; + state[j] ^= key[j]; + } + + return state; + } + + _encrypt(input, key) { + const s = this._s; + let t, u, v; + const state = new Uint8Array(16); + state.set(input); + + for (let j = 0; j < 16; ++j) { + state[j] ^= key[j]; + } + + for (let i = 1; i < this._cyclesOfRepetition; i++) { + for (let j = 0; j < 16; ++j) { + state[j] = s[state[j]]; + } + + v = state[1]; + state[1] = state[5]; + state[5] = state[9]; + state[9] = state[13]; + state[13] = v; + v = state[2]; + u = state[6]; + state[2] = state[10]; + state[6] = state[14]; + state[10] = v; + state[14] = u; + v = state[3]; + u = state[7]; + t = state[11]; + state[3] = state[15]; + state[7] = v; + state[11] = u; + state[15] = t; + + for (let j = 0; j < 16; j += 4) { + const s0 = state[j + 0]; + const s1 = state[j + 1]; + const s2 = state[j + 2]; + const s3 = state[j + 3]; + t = s0 ^ s1 ^ s2 ^ s3; + state[j + 0] ^= t ^ this._mixCol[s0 ^ s1]; + state[j + 1] ^= t ^ this._mixCol[s1 ^ s2]; + state[j + 2] ^= t ^ this._mixCol[s2 ^ s3]; + state[j + 3] ^= t ^ this._mixCol[s3 ^ s0]; + } + + for (let j = 0, k = i * 16; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + } + + for (let j = 0; j < 16; ++j) { + state[j] = s[state[j]]; + } + + v = state[1]; + state[1] = state[5]; + state[5] = state[9]; + state[9] = state[13]; + state[13] = v; + v = state[2]; + u = state[6]; + state[2] = state[10]; + state[6] = state[14]; + state[10] = v; + state[14] = u; + v = state[3]; + u = state[7]; + t = state[11]; + state[3] = state[15]; + state[7] = v; + state[11] = u; + state[15] = t; + + for (let j = 0, k = this._keySize; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + + return state; + } + + _decryptBlock2(data, finalize) { + const sourceLength = data.length; + let buffer = this.buffer, + bufferLength = this.bufferPosition; + const result = []; + let iv = this.iv; + + for (let i = 0; i < sourceLength; ++i) { + buffer[bufferLength] = data[i]; + ++bufferLength; + + if (bufferLength < 16) { + continue; + } + + const plain = this._decrypt(buffer, this._key); + + for (let j = 0; j < 16; ++j) { + plain[j] ^= iv[j]; + } + + iv = buffer; + result.push(plain); + buffer = new Uint8Array(16); + bufferLength = 0; + } + + this.buffer = buffer; + this.bufferLength = bufferLength; + this.iv = iv; + + if (result.length === 0) { + return new Uint8Array(0); + } + + let outputLength = 16 * result.length; + + if (finalize) { + const lastBlock = result.at(-1); + let psLen = lastBlock[15]; + + if (psLen <= 16) { + for (let i = 15, ii = 16 - psLen; i >= ii; --i) { + if (lastBlock[i] !== psLen) { + psLen = 0; + break; + } + } + + outputLength -= psLen; + result[result.length - 1] = lastBlock.subarray(0, 16 - psLen); + } + } + + const output = new Uint8Array(outputLength); + + for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { + output.set(result[i], j); + } + + return output; + } + + decryptBlock(data, finalize) { + let iv = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + const sourceLength = data.length; + const buffer = this.buffer; + let bufferLength = this.bufferPosition; + + if (iv) { + this.iv = iv; + } else { + for (let i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) { + buffer[bufferLength] = data[i]; + } + + if (bufferLength < 16) { + this.bufferLength = bufferLength; + return new Uint8Array(0); + } + + this.iv = buffer; + data = data.subarray(16); + } + + this.buffer = new Uint8Array(16); + this.bufferLength = 0; + this.decryptBlock = this._decryptBlock2; + return this.decryptBlock(data, finalize); + } + + encrypt(data, iv) { + const sourceLength = data.length; + let buffer = this.buffer, + bufferLength = this.bufferPosition; + const result = []; + + if (!iv) { + iv = new Uint8Array(16); + } + + for (let i = 0; i < sourceLength; ++i) { + buffer[bufferLength] = data[i]; + ++bufferLength; + + if (bufferLength < 16) { + continue; + } + + for (let j = 0; j < 16; ++j) { + buffer[j] ^= iv[j]; + } + + const cipher = this._encrypt(buffer, this._key); + + iv = cipher; + result.push(cipher); + buffer = new Uint8Array(16); + bufferLength = 0; + } + + this.buffer = buffer; + this.bufferLength = bufferLength; + this.iv = iv; + + if (result.length === 0) { + return new Uint8Array(0); + } + + const outputLength = 16 * result.length; + const output = new Uint8Array(outputLength); + + for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { + output.set(result[i], j); + } + + return output; + } + +} + +class AES128Cipher extends AESBaseCipher { + constructor(key) { + super(); + this._cyclesOfRepetition = 10; + this._keySize = 160; + this._rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]); + this._key = this._expandKey(key); + } + + _expandKey(cipherKey) { + const b = 176; + const s = this._s; + const rcon = this._rcon; + const result = new Uint8Array(b); + result.set(cipherKey); + + for (let j = 16, i = 1; j < b; ++i) { + let t1 = result[j - 3]; + let t2 = result[j - 2]; + let t3 = result[j - 1]; + let t4 = result[j - 4]; + t1 = s[t1]; + t2 = s[t2]; + t3 = s[t3]; + t4 = s[t4]; + t1 ^= rcon[i]; + + for (let n = 0; n < 4; ++n) { + result[j] = t1 ^= result[j - 16]; + j++; + result[j] = t2 ^= result[j - 16]; + j++; + result[j] = t3 ^= result[j - 16]; + j++; + result[j] = t4 ^= result[j - 16]; + j++; + } + } + + return result; + } + +} + +exports.AES128Cipher = AES128Cipher; + +class AES256Cipher extends AESBaseCipher { + constructor(key) { + super(); + this._cyclesOfRepetition = 14; + this._keySize = 224; + this._key = this._expandKey(key); + } + + _expandKey(cipherKey) { + const b = 240; + const s = this._s; + const result = new Uint8Array(b); + result.set(cipherKey); + let r = 1; + let t1, t2, t3, t4; + + for (let j = 32, i = 1; j < b; ++i) { + if (j % 32 === 16) { + t1 = s[t1]; + t2 = s[t2]; + t3 = s[t3]; + t4 = s[t4]; + } else if (j % 32 === 0) { + t1 = result[j - 3]; + t2 = result[j - 2]; + t3 = result[j - 1]; + t4 = result[j - 4]; + t1 = s[t1]; + t2 = s[t2]; + t3 = s[t3]; + t4 = s[t4]; + t1 ^= r; + + if ((r <<= 1) >= 256) { + r = (r ^ 0x1b) & 0xff; + } + } + + for (let n = 0; n < 4; ++n) { + result[j] = t1 ^= result[j - 32]; + j++; + result[j] = t2 ^= result[j - 32]; + j++; + result[j] = t3 ^= result[j - 32]; + j++; + result[j] = t4 ^= result[j - 32]; + j++; + } + } + + return result; + } + +} + +exports.AES256Cipher = AES256Cipher; + +class PDF17 { + checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) { + const hashData = new Uint8Array(password.length + 56); + hashData.set(password, 0); + hashData.set(ownerValidationSalt, password.length); + hashData.set(userBytes, password.length + ownerValidationSalt.length); + const result = calculateSHA256(hashData, 0, hashData.length); + return (0, _util.isArrayEqual)(result, ownerPassword); + } + + checkUserPassword(password, userValidationSalt, userPassword) { + const hashData = new Uint8Array(password.length + 8); + hashData.set(password, 0); + hashData.set(userValidationSalt, password.length); + const result = calculateSHA256(hashData, 0, hashData.length); + return (0, _util.isArrayEqual)(result, userPassword); + } + + getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) { + const hashData = new Uint8Array(password.length + 56); + hashData.set(password, 0); + hashData.set(ownerKeySalt, password.length); + hashData.set(userBytes, password.length + ownerKeySalt.length); + const key = calculateSHA256(hashData, 0, hashData.length); + const cipher = new AES256Cipher(key); + return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16)); + } + + getUserKey(password, userKeySalt, userEncryption) { + const hashData = new Uint8Array(password.length + 8); + hashData.set(password, 0); + hashData.set(userKeySalt, password.length); + const key = calculateSHA256(hashData, 0, hashData.length); + const cipher = new AES256Cipher(key); + return cipher.decryptBlock(userEncryption, false, new Uint8Array(16)); + } + +} + +exports.PDF17 = PDF17; + +const PDF20 = function PDF20Closure() { + function calculatePDF20Hash(password, input, userBytes) { + let k = calculateSHA256(input, 0, input.length).subarray(0, 32); + let e = [0]; + let i = 0; + + while (i < 64 || e.at(-1) > i - 32) { + const combinedLength = password.length + k.length + userBytes.length, + combinedArray = new Uint8Array(combinedLength); + let writeOffset = 0; + combinedArray.set(password, writeOffset); + writeOffset += password.length; + combinedArray.set(k, writeOffset); + writeOffset += k.length; + combinedArray.set(userBytes, writeOffset); + const k1 = new Uint8Array(combinedLength * 64); + + for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) { + k1.set(combinedArray, pos); + } + + const cipher = new AES128Cipher(k.subarray(0, 16)); + e = cipher.encrypt(k1, k.subarray(16, 32)); + let remainder = 0; + + for (let z = 0; z < 16; z++) { + remainder *= 256 % 3; + remainder %= 3; + remainder += (e[z] >>> 0) % 3; + remainder %= 3; + } + + if (remainder === 0) { + k = calculateSHA256(e, 0, e.length); + } else if (remainder === 1) { + k = calculateSHA384(e, 0, e.length); + } else if (remainder === 2) { + k = calculateSHA512(e, 0, e.length); + } + + i++; + } + + return k.subarray(0, 32); + } + + class PDF20 { + hash(password, concatBytes, userBytes) { + return calculatePDF20Hash(password, concatBytes, userBytes); + } + + checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) { + const hashData = new Uint8Array(password.length + 56); + hashData.set(password, 0); + hashData.set(ownerValidationSalt, password.length); + hashData.set(userBytes, password.length + ownerValidationSalt.length); + const result = calculatePDF20Hash(password, hashData, userBytes); + return (0, _util.isArrayEqual)(result, ownerPassword); + } + + checkUserPassword(password, userValidationSalt, userPassword) { + const hashData = new Uint8Array(password.length + 8); + hashData.set(password, 0); + hashData.set(userValidationSalt, password.length); + const result = calculatePDF20Hash(password, hashData, []); + return (0, _util.isArrayEqual)(result, userPassword); + } + + getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) { + const hashData = new Uint8Array(password.length + 56); + hashData.set(password, 0); + hashData.set(ownerKeySalt, password.length); + hashData.set(userBytes, password.length + ownerKeySalt.length); + const key = calculatePDF20Hash(password, hashData, userBytes); + const cipher = new AES256Cipher(key); + return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16)); + } + + getUserKey(password, userKeySalt, userEncryption) { + const hashData = new Uint8Array(password.length + 8); + hashData.set(password, 0); + hashData.set(userKeySalt, password.length); + const key = calculatePDF20Hash(password, hashData, []); + const cipher = new AES256Cipher(key); + return cipher.decryptBlock(userEncryption, false, new Uint8Array(16)); + } + + } + + return PDF20; +}(); + +exports.PDF20 = PDF20; + +class CipherTransform { + constructor(stringCipherConstructor, streamCipherConstructor) { + this.StringCipherConstructor = stringCipherConstructor; + this.StreamCipherConstructor = streamCipherConstructor; + } + + createStream(stream, length) { + const cipher = new this.StreamCipherConstructor(); + return new _decrypt_stream.DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) { + return cipher.decryptBlock(data, finalize); + }); + } + + decryptString(s) { + const cipher = new this.StringCipherConstructor(); + let data = (0, _util.stringToBytes)(s); + data = cipher.decryptBlock(data, true); + return (0, _util.bytesToString)(data); + } + + encryptString(s) { + const cipher = new this.StringCipherConstructor(); + + if (cipher instanceof AESBaseCipher) { + const strLen = s.length; + const pad = 16 - strLen % 16; + s += String.fromCharCode(pad).repeat(pad); + const iv = new Uint8Array(16); + + if (typeof crypto !== "undefined") { + crypto.getRandomValues(iv); + } else { + for (let i = 0; i < 16; i++) { + iv[i] = Math.floor(256 * Math.random()); + } + } + + let data = (0, _util.stringToBytes)(s); + data = cipher.encrypt(data, iv); + const buf = new Uint8Array(16 + data.length); + buf.set(iv); + buf.set(data, 16); + return (0, _util.bytesToString)(buf); + } + + let data = (0, _util.stringToBytes)(s); + data = cipher.encrypt(data); + return (0, _util.bytesToString)(data); + } + +} + +const CipherTransformFactory = function CipherTransformFactoryClosure() { + const defaultPasswordBytes = new Uint8Array([0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a]); + + function createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) { + if (password) { + const passwordLength = Math.min(127, password.length); + password = password.subarray(0, passwordLength); + } else { + password = []; + } + + let pdfAlgorithm; + + if (revision === 6) { + pdfAlgorithm = new PDF20(); + } else { + pdfAlgorithm = new PDF17(); + } + + if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) { + return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption); + } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) { + return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption); + } + + return null; + } + + function prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) { + const hashDataSize = 40 + ownerPassword.length + fileId.length; + const hashData = new Uint8Array(hashDataSize); + let i = 0, + j, + n; + + if (password) { + n = Math.min(32, password.length); + + for (; i < n; ++i) { + hashData[i] = password[i]; + } + } + + j = 0; + + while (i < 32) { + hashData[i++] = defaultPasswordBytes[j++]; + } + + for (j = 0, n = ownerPassword.length; j < n; ++j) { + hashData[i++] = ownerPassword[j]; + } + + hashData[i++] = flags & 0xff; + hashData[i++] = flags >> 8 & 0xff; + hashData[i++] = flags >> 16 & 0xff; + hashData[i++] = flags >>> 24 & 0xff; + + for (j = 0, n = fileId.length; j < n; ++j) { + hashData[i++] = fileId[j]; + } + + if (revision >= 4 && !encryptMetadata) { + hashData[i++] = 0xff; + hashData[i++] = 0xff; + hashData[i++] = 0xff; + hashData[i++] = 0xff; + } + + let hash = calculateMD5(hashData, 0, i); + const keyLengthInBytes = keyLength >> 3; + + if (revision >= 3) { + for (j = 0; j < 50; ++j) { + hash = calculateMD5(hash, 0, keyLengthInBytes); + } + } + + const encryptionKey = hash.subarray(0, keyLengthInBytes); + let cipher, checkData; + + if (revision >= 3) { + for (i = 0; i < 32; ++i) { + hashData[i] = defaultPasswordBytes[i]; + } + + for (j = 0, n = fileId.length; j < n; ++j) { + hashData[i++] = fileId[j]; + } + + cipher = new ARCFourCipher(encryptionKey); + checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i)); + n = encryptionKey.length; + const derivedKey = new Uint8Array(n); + + for (j = 1; j <= 19; ++j) { + for (let k = 0; k < n; ++k) { + derivedKey[k] = encryptionKey[k] ^ j; + } + + cipher = new ARCFourCipher(derivedKey); + checkData = cipher.encryptBlock(checkData); + } + + for (j = 0, n = checkData.length; j < n; ++j) { + if (userPassword[j] !== checkData[j]) { + return null; + } + } + } else { + cipher = new ARCFourCipher(encryptionKey); + checkData = cipher.encryptBlock(defaultPasswordBytes); + + for (j = 0, n = checkData.length; j < n; ++j) { + if (userPassword[j] !== checkData[j]) { + return null; + } + } + } + + return encryptionKey; + } + + function decodeUserPassword(password, ownerPassword, revision, keyLength) { + const hashData = new Uint8Array(32); + let i = 0; + const n = Math.min(32, password.length); + + for (; i < n; ++i) { + hashData[i] = password[i]; + } + + let j = 0; + + while (i < 32) { + hashData[i++] = defaultPasswordBytes[j++]; + } + + let hash = calculateMD5(hashData, 0, i); + const keyLengthInBytes = keyLength >> 3; + + if (revision >= 3) { + for (j = 0; j < 50; ++j) { + hash = calculateMD5(hash, 0, hash.length); + } + } + + let cipher, userPassword; + + if (revision >= 3) { + userPassword = ownerPassword; + const derivedKey = new Uint8Array(keyLengthInBytes); + + for (j = 19; j >= 0; j--) { + for (let k = 0; k < keyLengthInBytes; ++k) { + derivedKey[k] = hash[k] ^ j; + } + + cipher = new ARCFourCipher(derivedKey); + userPassword = cipher.encryptBlock(userPassword); + } + } else { + cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes)); + userPassword = cipher.encryptBlock(ownerPassword); + } + + return userPassword; + } + + const identityName = _primitives.Name.get("Identity"); + + function buildObjectKey(num, gen, encryptionKey) { + let isAes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + const key = new Uint8Array(encryptionKey.length + 9); + const n = encryptionKey.length; + let i; + + for (i = 0; i < n; ++i) { + key[i] = encryptionKey[i]; + } + + key[i++] = num & 0xff; + key[i++] = num >> 8 & 0xff; + key[i++] = num >> 16 & 0xff; + key[i++] = gen & 0xff; + key[i++] = gen >> 8 & 0xff; + + if (isAes) { + key[i++] = 0x73; + key[i++] = 0x41; + key[i++] = 0x6c; + key[i++] = 0x54; + } + + const hash = calculateMD5(key, 0, i); + return hash.subarray(0, Math.min(encryptionKey.length + 5, 16)); + } + + function buildCipherConstructor(cf, name, num, gen, key) { + if (!(name instanceof _primitives.Name)) { + throw new _util.FormatError("Invalid crypt filter name."); + } + + const cryptFilter = cf.get(name.name); + let cfm; + + if (cryptFilter !== null && cryptFilter !== undefined) { + cfm = cryptFilter.get("CFM"); + } + + if (!cfm || cfm.name === "None") { + return function cipherTransformFactoryBuildCipherConstructorNone() { + return new NullCipher(); + }; + } + + if (cfm.name === "V2") { + return function cipherTransformFactoryBuildCipherConstructorV2() { + return new ARCFourCipher(buildObjectKey(num, gen, key, false)); + }; + } + + if (cfm.name === "AESV2") { + return function cipherTransformFactoryBuildCipherConstructorAESV2() { + return new AES128Cipher(buildObjectKey(num, gen, key, true)); + }; + } + + if (cfm.name === "AESV3") { + return function cipherTransformFactoryBuildCipherConstructorAESV3() { + return new AES256Cipher(key); + }; + } + + throw new _util.FormatError("Unknown crypto method"); + } + + class CipherTransformFactory { + constructor(dict, fileId, password) { + const filter = dict.get("Filter"); + + if (!(0, _primitives.isName)(filter, "Standard")) { + throw new _util.FormatError("unknown encryption method"); + } + + this.filterName = filter.name; + this.dict = dict; + const algorithm = dict.get("V"); + + if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) { + throw new _util.FormatError("unsupported encryption algorithm"); + } + + this.algorithm = algorithm; + let keyLength = dict.get("Length"); + + if (!keyLength) { + if (algorithm <= 3) { + keyLength = 40; + } else { + const cfDict = dict.get("CF"); + const streamCryptoName = dict.get("StmF"); + + if (cfDict instanceof _primitives.Dict && streamCryptoName instanceof _primitives.Name) { + cfDict.suppressEncryption = true; + const handlerDict = cfDict.get(streamCryptoName.name); + keyLength = handlerDict && handlerDict.get("Length") || 128; + + if (keyLength < 40) { + keyLength <<= 3; + } + } + } + } + + if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) { + throw new _util.FormatError("invalid key length"); + } + + const ownerPassword = (0, _util.stringToBytes)(dict.get("O")).subarray(0, 32); + const userPassword = (0, _util.stringToBytes)(dict.get("U")).subarray(0, 32); + const flags = dict.get("P"); + const revision = dict.get("R"); + const encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get("EncryptMetadata") !== false; + this.encryptMetadata = encryptMetadata; + const fileIdBytes = (0, _util.stringToBytes)(fileId); + let passwordBytes; + + if (password) { + if (revision === 6) { + try { + password = (0, _util.utf8StringToString)(password); + } catch (ex) { + (0, _util.warn)("CipherTransformFactory: " + "Unable to convert UTF8 encoded password."); + } + } + + passwordBytes = (0, _util.stringToBytes)(password); + } + + let encryptionKey; + + if (algorithm !== 5) { + encryptionKey = prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata); + } else { + const ownerValidationSalt = (0, _util.stringToBytes)(dict.get("O")).subarray(32, 40); + const ownerKeySalt = (0, _util.stringToBytes)(dict.get("O")).subarray(40, 48); + const uBytes = (0, _util.stringToBytes)(dict.get("U")).subarray(0, 48); + const userValidationSalt = (0, _util.stringToBytes)(dict.get("U")).subarray(32, 40); + const userKeySalt = (0, _util.stringToBytes)(dict.get("U")).subarray(40, 48); + const ownerEncryption = (0, _util.stringToBytes)(dict.get("OE")); + const userEncryption = (0, _util.stringToBytes)(dict.get("UE")); + const perms = (0, _util.stringToBytes)(dict.get("Perms")); + encryptionKey = createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms); + } + + if (!encryptionKey && !password) { + throw new _util.PasswordException("No password given", _util.PasswordResponses.NEED_PASSWORD); + } else if (!encryptionKey && password) { + const decodedPassword = decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength); + encryptionKey = prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata); + } + + if (!encryptionKey) { + throw new _util.PasswordException("Incorrect Password", _util.PasswordResponses.INCORRECT_PASSWORD); + } + + this.encryptionKey = encryptionKey; + + if (algorithm >= 4) { + const cf = dict.get("CF"); + + if (cf instanceof _primitives.Dict) { + cf.suppressEncryption = true; + } + + this.cf = cf; + this.stmf = dict.get("StmF") || identityName; + this.strf = dict.get("StrF") || identityName; + this.eff = dict.get("EFF") || this.stmf; + } + } + + createCipherTransform(num, gen) { + if (this.algorithm === 4 || this.algorithm === 5) { + return new CipherTransform(buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey), buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey)); + } + + const key = buildObjectKey(num, gen, this.encryptionKey, false); + + const cipherConstructor = function buildCipherCipherConstructor() { + return new ARCFourCipher(key); + }; + + return new CipherTransform(cipherConstructor, cipherConstructor); + } + + } + + return CipherTransformFactory; +}(); + +exports.CipherTransformFactory = CipherTransformFactory; + +/***/ }), +/* 193 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DecryptStream = void 0; + +var _decode_stream = __w_pdfjs_require__(144); + +const chunkSize = 512; + +class DecryptStream extends _decode_stream.DecodeStream { + constructor(str, maybeLength, decrypt) { + super(maybeLength); + this.str = str; + this.dict = str.dict; + this.decrypt = decrypt; + this.nextChunk = null; + this.initialized = false; + } + + readBlock() { + let chunk; + + if (this.initialized) { + chunk = this.nextChunk; + } else { + chunk = this.str.getBytes(chunkSize); + this.initialized = true; + } + + if (!chunk || chunk.length === 0) { + this.eof = true; + return; + } + + this.nextChunk = this.str.getBytes(chunkSize); + const hasMoreData = this.nextChunk && this.nextChunk.length > 0; + const decrypt = this.decrypt; + chunk = decrypt(chunk, !hasMoreData); + let bufferLength = this.bufferLength; + const n = chunk.length, + buffer = this.ensureBuffer(bufferLength + n); + + for (let i = 0; i < n; i++) { + buffer[bufferLength++] = chunk[i]; + } + + this.bufferLength = bufferLength; + } + +} + +exports.DecryptStream = DecryptStream; + +/***/ }), +/* 194 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Catalog = void 0; + +var _core_utils = __w_pdfjs_require__(131); + +var _util = __w_pdfjs_require__(2); + +var _primitives = __w_pdfjs_require__(130); + +var _name_number_tree = __w_pdfjs_require__(195); + +var _base_stream = __w_pdfjs_require__(132); + +var _cleanup_helper = __w_pdfjs_require__(196); + +var _colorspace = __w_pdfjs_require__(139); + +var _file_spec = __w_pdfjs_require__(197); + +var _image_utils = __w_pdfjs_require__(184); + +var _metadata_parser = __w_pdfjs_require__(198); + +var _struct_tree = __w_pdfjs_require__(199); + +function fetchDestination(dest) { + if (dest instanceof _primitives.Dict) { + dest = dest.get("D"); + } + + return Array.isArray(dest) ? dest : null; +} + +class Catalog { + constructor(pdfManager, xref) { + this.pdfManager = pdfManager; + this.xref = xref; + this._catDict = xref.getCatalogObj(); + + if (!(this._catDict instanceof _primitives.Dict)) { + throw new _util.FormatError("Catalog object is not a dictionary."); + } + + this.toplevelPagesDict; + this._actualNumPages = null; + this.fontCache = new _primitives.RefSetCache(); + this.builtInCMapCache = new Map(); + this.standardFontDataCache = new Map(); + this.globalImageCache = new _image_utils.GlobalImageCache(); + this.pageKidsCountCache = new _primitives.RefSetCache(); + this.pageIndexCache = new _primitives.RefSetCache(); + this.nonBlendModesSet = new _primitives.RefSet(); + } + + get version() { + const version = this._catDict.get("Version"); + + return (0, _util.shadow)(this, "version", version instanceof _primitives.Name ? version.name : null); + } + + get lang() { + const lang = this._catDict.get("Lang"); + + return (0, _util.shadow)(this, "lang", typeof lang === "string" ? (0, _util.stringToPDFString)(lang) : null); + } + + get needsRendering() { + const needsRendering = this._catDict.get("NeedsRendering"); + + return (0, _util.shadow)(this, "needsRendering", typeof needsRendering === "boolean" ? needsRendering : false); + } + + get collection() { + let collection = null; + + try { + const obj = this._catDict.get("Collection"); + + if (obj instanceof _primitives.Dict && obj.size > 0) { + collection = obj; + } + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.info)("Cannot fetch Collection entry; assuming no collection is present."); + } + + return (0, _util.shadow)(this, "collection", collection); + } + + get acroForm() { + let acroForm = null; + + try { + const obj = this._catDict.get("AcroForm"); + + if (obj instanceof _primitives.Dict && obj.size > 0) { + acroForm = obj; + } + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.info)("Cannot fetch AcroForm entry; assuming no forms are present."); + } + + return (0, _util.shadow)(this, "acroForm", acroForm); + } + + get acroFormRef() { + const value = this._catDict.getRaw("AcroForm"); + + return (0, _util.shadow)(this, "acroFormRef", value instanceof _primitives.Ref ? value : null); + } + + get metadata() { + const streamRef = this._catDict.getRaw("Metadata"); + + if (!(streamRef instanceof _primitives.Ref)) { + return (0, _util.shadow)(this, "metadata", null); + } + + let metadata = null; + + try { + const suppressEncryption = !(this.xref.encrypt && this.xref.encrypt.encryptMetadata); + const stream = this.xref.fetch(streamRef, suppressEncryption); + + if (stream instanceof _base_stream.BaseStream && stream.dict instanceof _primitives.Dict) { + const type = stream.dict.get("Type"); + const subtype = stream.dict.get("Subtype"); + + if ((0, _primitives.isName)(type, "Metadata") && (0, _primitives.isName)(subtype, "XML")) { + const data = (0, _util.stringToUTF8String)(stream.getString()); + + if (data) { + metadata = new _metadata_parser.MetadataParser(data).serializable; + } + } + } + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.info)(`Skipping invalid Metadata: "${ex}".`); + } + + return (0, _util.shadow)(this, "metadata", metadata); + } + + get markInfo() { + let markInfo = null; + + try { + markInfo = this._readMarkInfo(); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.warn)("Unable to read mark info."); + } + + return (0, _util.shadow)(this, "markInfo", markInfo); + } + + _readMarkInfo() { + const obj = this._catDict.get("MarkInfo"); + + if (!(obj instanceof _primitives.Dict)) { + return null; + } + + const markInfo = { + Marked: false, + UserProperties: false, + Suspects: false + }; + + for (const key in markInfo) { + const value = obj.get(key); + + if (typeof value === "boolean") { + markInfo[key] = value; + } + } + + return markInfo; + } + + get structTreeRoot() { + let structTree = null; + + try { + structTree = this._readStructTreeRoot(); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.warn)("Unable read to structTreeRoot info."); + } + + return (0, _util.shadow)(this, "structTreeRoot", structTree); + } + + _readStructTreeRoot() { + const obj = this._catDict.get("StructTreeRoot"); + + if (!(obj instanceof _primitives.Dict)) { + return null; + } + + const root = new _struct_tree.StructTreeRoot(obj); + root.init(); + return root; + } + + get toplevelPagesDict() { + const pagesObj = this._catDict.get("Pages"); + + if (!(pagesObj instanceof _primitives.Dict)) { + throw new _util.FormatError("Invalid top-level pages dictionary."); + } + + return (0, _util.shadow)(this, "toplevelPagesDict", pagesObj); + } + + get documentOutline() { + let obj = null; + + try { + obj = this._readDocumentOutline(); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.warn)("Unable to read document outline."); + } + + return (0, _util.shadow)(this, "documentOutline", obj); + } + + _readDocumentOutline() { + let obj = this._catDict.get("Outlines"); + + if (!(obj instanceof _primitives.Dict)) { + return null; + } + + obj = obj.getRaw("First"); + + if (!(obj instanceof _primitives.Ref)) { + return null; + } + + const root = { + items: [] + }; + const queue = [{ + obj, + parent: root + }]; + const processed = new _primitives.RefSet(); + processed.put(obj); + const xref = this.xref, + blackColor = new Uint8ClampedArray(3); + + while (queue.length > 0) { + const i = queue.shift(); + const outlineDict = xref.fetchIfRef(i.obj); + + if (outlineDict === null) { + continue; + } + + if (!outlineDict.has("Title")) { + throw new _util.FormatError("Invalid outline item encountered."); + } + + const data = { + url: null, + dest: null + }; + Catalog.parseDestDictionary({ + destDict: outlineDict, + resultObj: data, + docBaseUrl: this.pdfManager.docBaseUrl + }); + const title = outlineDict.get("Title"); + const flags = outlineDict.get("F") || 0; + const color = outlineDict.getArray("C"); + const count = outlineDict.get("Count"); + let rgbColor = blackColor; + + if (Array.isArray(color) && color.length === 3 && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) { + rgbColor = _colorspace.ColorSpace.singletons.rgb.getRgb(color, 0); + } + + const outlineItem = { + dest: data.dest, + url: data.url, + unsafeUrl: data.unsafeUrl, + newWindow: data.newWindow, + title: (0, _util.stringToPDFString)(title), + color: rgbColor, + count: Number.isInteger(count) ? count : undefined, + bold: !!(flags & 2), + italic: !!(flags & 1), + items: [] + }; + i.parent.items.push(outlineItem); + obj = outlineDict.getRaw("First"); + + if (obj instanceof _primitives.Ref && !processed.has(obj)) { + queue.push({ + obj, + parent: outlineItem + }); + processed.put(obj); + } + + obj = outlineDict.getRaw("Next"); + + if (obj instanceof _primitives.Ref && !processed.has(obj)) { + queue.push({ + obj, + parent: i.parent + }); + processed.put(obj); + } + } + + return root.items.length > 0 ? root.items : null; + } + + get permissions() { + let permissions = null; + + try { + permissions = this._readPermissions(); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.warn)("Unable to read permissions."); + } + + return (0, _util.shadow)(this, "permissions", permissions); + } + + _readPermissions() { + const encrypt = this.xref.trailer.get("Encrypt"); + + if (!(encrypt instanceof _primitives.Dict)) { + return null; + } + + let flags = encrypt.get("P"); + + if (typeof flags !== "number") { + return null; + } + + flags += 2 ** 32; + const permissions = []; + + for (const key in _util.PermissionFlag) { + const value = _util.PermissionFlag[key]; + + if (flags & value) { + permissions.push(value); + } + } + + return permissions; + } + + get optionalContentConfig() { + let config = null; + + try { + const properties = this._catDict.get("OCProperties"); + + if (!properties) { + return (0, _util.shadow)(this, "optionalContentConfig", null); + } + + const defaultConfig = properties.get("D"); + + if (!defaultConfig) { + return (0, _util.shadow)(this, "optionalContentConfig", null); + } + + const groupsData = properties.get("OCGs"); + + if (!Array.isArray(groupsData)) { + return (0, _util.shadow)(this, "optionalContentConfig", null); + } + + const groups = []; + const groupRefs = []; + + for (const groupRef of groupsData) { + if (!(groupRef instanceof _primitives.Ref)) { + continue; + } + + groupRefs.push(groupRef); + const group = this.xref.fetchIfRef(groupRef); + groups.push({ + id: groupRef.toString(), + name: typeof group.get("Name") === "string" ? (0, _util.stringToPDFString)(group.get("Name")) : null, + intent: typeof group.get("Intent") === "string" ? (0, _util.stringToPDFString)(group.get("Intent")) : null + }); + } + + config = this._readOptionalContentConfig(defaultConfig, groupRefs); + config.groups = groups; + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.warn)(`Unable to read optional content config: ${ex}`); + } + + return (0, _util.shadow)(this, "optionalContentConfig", config); + } + + _readOptionalContentConfig(config, contentGroupRefs) { + function parseOnOff(refs) { + const onParsed = []; + + if (Array.isArray(refs)) { + for (const value of refs) { + if (!(value instanceof _primitives.Ref)) { + continue; + } + + if (contentGroupRefs.includes(value)) { + onParsed.push(value.toString()); + } + } + } + + return onParsed; + } + + function parseOrder(refs) { + let nestedLevels = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + + if (!Array.isArray(refs)) { + return null; + } + + const order = []; + + for (const value of refs) { + if (value instanceof _primitives.Ref && contentGroupRefs.includes(value)) { + parsedOrderRefs.put(value); + order.push(value.toString()); + continue; + } + + const nestedOrder = parseNestedOrder(value, nestedLevels); + + if (nestedOrder) { + order.push(nestedOrder); + } + } + + if (nestedLevels > 0) { + return order; + } + + const hiddenGroups = []; + + for (const groupRef of contentGroupRefs) { + if (parsedOrderRefs.has(groupRef)) { + continue; + } + + hiddenGroups.push(groupRef.toString()); + } + + if (hiddenGroups.length) { + order.push({ + name: null, + order: hiddenGroups + }); + } + + return order; + } + + function parseNestedOrder(ref, nestedLevels) { + if (++nestedLevels > MAX_NESTED_LEVELS) { + (0, _util.warn)("parseNestedOrder - reached MAX_NESTED_LEVELS."); + return null; + } + + const value = xref.fetchIfRef(ref); + + if (!Array.isArray(value)) { + return null; + } + + const nestedName = xref.fetchIfRef(value[0]); + + if (typeof nestedName !== "string") { + return null; + } + + const nestedOrder = parseOrder(value.slice(1), nestedLevels); + + if (!nestedOrder || !nestedOrder.length) { + return null; + } + + return { + name: (0, _util.stringToPDFString)(nestedName), + order: nestedOrder + }; + } + + const xref = this.xref, + parsedOrderRefs = new _primitives.RefSet(), + MAX_NESTED_LEVELS = 10; + return { + name: typeof config.get("Name") === "string" ? (0, _util.stringToPDFString)(config.get("Name")) : null, + creator: typeof config.get("Creator") === "string" ? (0, _util.stringToPDFString)(config.get("Creator")) : null, + baseState: config.get("BaseState") instanceof _primitives.Name ? config.get("BaseState").name : null, + on: parseOnOff(config.get("ON")), + off: parseOnOff(config.get("OFF")), + order: parseOrder(config.get("Order")), + groups: null + }; + } + + setActualNumPages() { + let num = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + this._actualNumPages = num; + } + + get hasActualNumPages() { + return this._actualNumPages !== null; + } + + get _pagesCount() { + const obj = this.toplevelPagesDict.get("Count"); + + if (!Number.isInteger(obj)) { + throw new _util.FormatError("Page count in top-level pages dictionary is not an integer."); + } + + return (0, _util.shadow)(this, "_pagesCount", obj); + } + + get numPages() { + return this.hasActualNumPages ? this._actualNumPages : this._pagesCount; + } + + get destinations() { + const obj = this._readDests(), + dests = Object.create(null); + + if (obj instanceof _name_number_tree.NameTree) { + for (const [key, value] of obj.getAll()) { + const dest = fetchDestination(value); + + if (dest) { + dests[(0, _util.stringToPDFString)(key)] = dest; + } + } + } else if (obj instanceof _primitives.Dict) { + obj.forEach(function (key, value) { + const dest = fetchDestination(value); + + if (dest) { + dests[key] = dest; + } + }); + } + + return (0, _util.shadow)(this, "destinations", dests); + } + + getDestination(id) { + const obj = this._readDests(); + + if (obj instanceof _name_number_tree.NameTree) { + const dest = fetchDestination(obj.get(id)); + + if (dest) { + return dest; + } + + const allDest = this.destinations[id]; + + if (allDest) { + (0, _util.warn)(`Found "${id}" at an incorrect position in the NameTree.`); + return allDest; + } + } else if (obj instanceof _primitives.Dict) { + const dest = fetchDestination(obj.get(id)); + + if (dest) { + return dest; + } + } + + return null; + } + + _readDests() { + const obj = this._catDict.get("Names"); + + if (obj && obj.has("Dests")) { + return new _name_number_tree.NameTree(obj.getRaw("Dests"), this.xref); + } else if (this._catDict.has("Dests")) { + return this._catDict.get("Dests"); + } + + return undefined; + } + + get pageLabels() { + let obj = null; + + try { + obj = this._readPageLabels(); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.warn)("Unable to read page labels."); + } + + return (0, _util.shadow)(this, "pageLabels", obj); + } + + _readPageLabels() { + const obj = this._catDict.getRaw("PageLabels"); + + if (!obj) { + return null; + } + + const pageLabels = new Array(this.numPages); + let style = null, + prefix = ""; + const numberTree = new _name_number_tree.NumberTree(obj, this.xref); + const nums = numberTree.getAll(); + let currentLabel = "", + currentIndex = 1; + + for (let i = 0, ii = this.numPages; i < ii; i++) { + const labelDict = nums.get(i); + + if (labelDict !== undefined) { + if (!(labelDict instanceof _primitives.Dict)) { + throw new _util.FormatError("PageLabel is not a dictionary."); + } + + if (labelDict.has("Type") && !(0, _primitives.isName)(labelDict.get("Type"), "PageLabel")) { + throw new _util.FormatError("Invalid type in PageLabel dictionary."); + } + + if (labelDict.has("S")) { + const s = labelDict.get("S"); + + if (!(s instanceof _primitives.Name)) { + throw new _util.FormatError("Invalid style in PageLabel dictionary."); + } + + style = s.name; + } else { + style = null; + } + + if (labelDict.has("P")) { + const p = labelDict.get("P"); + + if (typeof p !== "string") { + throw new _util.FormatError("Invalid prefix in PageLabel dictionary."); + } + + prefix = (0, _util.stringToPDFString)(p); + } else { + prefix = ""; + } + + if (labelDict.has("St")) { + const st = labelDict.get("St"); + + if (!(Number.isInteger(st) && st >= 1)) { + throw new _util.FormatError("Invalid start in PageLabel dictionary."); + } + + currentIndex = st; + } else { + currentIndex = 1; + } + } + + switch (style) { + case "D": + currentLabel = currentIndex; + break; + + case "R": + case "r": + currentLabel = (0, _core_utils.toRomanNumerals)(currentIndex, style === "r"); + break; + + case "A": + case "a": + const LIMIT = 26; + const A_UPPER_CASE = 0x41, + A_LOWER_CASE = 0x61; + const baseCharCode = style === "a" ? A_LOWER_CASE : A_UPPER_CASE; + const letterIndex = currentIndex - 1; + const character = String.fromCharCode(baseCharCode + letterIndex % LIMIT); + currentLabel = character.repeat(Math.floor(letterIndex / LIMIT) + 1); + break; + + default: + if (style) { + throw new _util.FormatError(`Invalid style "${style}" in PageLabel dictionary.`); + } + + currentLabel = ""; + } + + pageLabels[i] = prefix + currentLabel; + currentIndex++; + } + + return pageLabels; + } + + get pageLayout() { + const obj = this._catDict.get("PageLayout"); + + let pageLayout = ""; + + if (obj instanceof _primitives.Name) { + switch (obj.name) { + case "SinglePage": + case "OneColumn": + case "TwoColumnLeft": + case "TwoColumnRight": + case "TwoPageLeft": + case "TwoPageRight": + pageLayout = obj.name; + } + } + + return (0, _util.shadow)(this, "pageLayout", pageLayout); + } + + get pageMode() { + const obj = this._catDict.get("PageMode"); + + let pageMode = "UseNone"; + + if (obj instanceof _primitives.Name) { + switch (obj.name) { + case "UseNone": + case "UseOutlines": + case "UseThumbs": + case "FullScreen": + case "UseOC": + case "UseAttachments": + pageMode = obj.name; + } + } + + return (0, _util.shadow)(this, "pageMode", pageMode); + } + + get viewerPreferences() { + const obj = this._catDict.get("ViewerPreferences"); + + if (!(obj instanceof _primitives.Dict)) { + return (0, _util.shadow)(this, "viewerPreferences", null); + } + + let prefs = null; + + for (const key of obj.getKeys()) { + const value = obj.get(key); + let prefValue; + + switch (key) { + case "HideToolbar": + case "HideMenubar": + case "HideWindowUI": + case "FitWindow": + case "CenterWindow": + case "DisplayDocTitle": + case "PickTrayByPDFSize": + if (typeof value === "boolean") { + prefValue = value; + } + + break; + + case "NonFullScreenPageMode": + if (value instanceof _primitives.Name) { + switch (value.name) { + case "UseNone": + case "UseOutlines": + case "UseThumbs": + case "UseOC": + prefValue = value.name; + break; + + default: + prefValue = "UseNone"; + } + } + + break; + + case "Direction": + if (value instanceof _primitives.Name) { + switch (value.name) { + case "L2R": + case "R2L": + prefValue = value.name; + break; + + default: + prefValue = "L2R"; + } + } + + break; + + case "ViewArea": + case "ViewClip": + case "PrintArea": + case "PrintClip": + if (value instanceof _primitives.Name) { + switch (value.name) { + case "MediaBox": + case "CropBox": + case "BleedBox": + case "TrimBox": + case "ArtBox": + prefValue = value.name; + break; + + default: + prefValue = "CropBox"; + } + } + + break; + + case "PrintScaling": + if (value instanceof _primitives.Name) { + switch (value.name) { + case "None": + case "AppDefault": + prefValue = value.name; + break; + + default: + prefValue = "AppDefault"; + } + } + + break; + + case "Duplex": + if (value instanceof _primitives.Name) { + switch (value.name) { + case "Simplex": + case "DuplexFlipShortEdge": + case "DuplexFlipLongEdge": + prefValue = value.name; + break; + + default: + prefValue = "None"; + } + } + + break; + + case "PrintPageRange": + if (Array.isArray(value) && value.length % 2 === 0) { + const isValid = value.every((page, i, arr) => { + return Number.isInteger(page) && page > 0 && (i === 0 || page >= arr[i - 1]) && page <= this.numPages; + }); + + if (isValid) { + prefValue = value; + } + } + + break; + + case "NumCopies": + if (Number.isInteger(value) && value > 0) { + prefValue = value; + } + + break; + + default: + (0, _util.warn)(`Ignoring non-standard key in ViewerPreferences: ${key}.`); + continue; + } + + if (prefValue === undefined) { + (0, _util.warn)(`Bad value, for key "${key}", in ViewerPreferences: ${value}.`); + continue; + } + + if (!prefs) { + prefs = Object.create(null); + } + + prefs[key] = prefValue; + } + + return (0, _util.shadow)(this, "viewerPreferences", prefs); + } + + get openAction() { + const obj = this._catDict.get("OpenAction"); + + const openAction = Object.create(null); + + if (obj instanceof _primitives.Dict) { + const destDict = new _primitives.Dict(this.xref); + destDict.set("A", obj); + const resultObj = { + url: null, + dest: null, + action: null + }; + Catalog.parseDestDictionary({ + destDict, + resultObj + }); + + if (Array.isArray(resultObj.dest)) { + openAction.dest = resultObj.dest; + } else if (resultObj.action) { + openAction.action = resultObj.action; + } + } else if (Array.isArray(obj)) { + openAction.dest = obj; + } + + return (0, _util.shadow)(this, "openAction", (0, _util.objectSize)(openAction) > 0 ? openAction : null); + } + + get attachments() { + const obj = this._catDict.get("Names"); + + let attachments = null; + + if (obj instanceof _primitives.Dict && obj.has("EmbeddedFiles")) { + const nameTree = new _name_number_tree.NameTree(obj.getRaw("EmbeddedFiles"), this.xref); + + for (const [key, value] of nameTree.getAll()) { + const fs = new _file_spec.FileSpec(value, this.xref); + + if (!attachments) { + attachments = Object.create(null); + } + + attachments[(0, _util.stringToPDFString)(key)] = fs.serializable; + } + } + + return (0, _util.shadow)(this, "attachments", attachments); + } + + get xfaImages() { + const obj = this._catDict.get("Names"); + + let xfaImages = null; + + if (obj instanceof _primitives.Dict && obj.has("XFAImages")) { + const nameTree = new _name_number_tree.NameTree(obj.getRaw("XFAImages"), this.xref); + + for (const [key, value] of nameTree.getAll()) { + if (!xfaImages) { + xfaImages = new _primitives.Dict(this.xref); + } + + xfaImages.set((0, _util.stringToPDFString)(key), value); + } + } + + return (0, _util.shadow)(this, "xfaImages", xfaImages); + } + + _collectJavaScript() { + const obj = this._catDict.get("Names"); + + let javaScript = null; + + function appendIfJavaScriptDict(name, jsDict) { + if (!(jsDict instanceof _primitives.Dict)) { + return; + } + + if (!(0, _primitives.isName)(jsDict.get("S"), "JavaScript")) { + return; + } + + let js = jsDict.get("JS"); + + if (js instanceof _base_stream.BaseStream) { + js = js.getString(); + } else if (typeof js !== "string") { + return; + } + + if (javaScript === null) { + javaScript = new Map(); + } + + js = (0, _util.stringToPDFString)(js).replace(/\u0000/g, ""); + javaScript.set(name, js); + } + + if (obj instanceof _primitives.Dict && obj.has("JavaScript")) { + const nameTree = new _name_number_tree.NameTree(obj.getRaw("JavaScript"), this.xref); + + for (const [key, value] of nameTree.getAll()) { + appendIfJavaScriptDict((0, _util.stringToPDFString)(key), value); + } + } + + const openAction = this._catDict.get("OpenAction"); + + if (openAction) { + appendIfJavaScriptDict("OpenAction", openAction); + } + + return javaScript; + } + + get javaScript() { + const javaScript = this._collectJavaScript(); + + return (0, _util.shadow)(this, "javaScript", javaScript ? [...javaScript.values()] : null); + } + + get jsActions() { + const javaScript = this._collectJavaScript(); + + let actions = (0, _core_utils.collectActions)(this.xref, this._catDict, _util.DocumentActionEventType); + + if (javaScript) { + if (!actions) { + actions = Object.create(null); + } + + for (const [key, val] of javaScript) { + if (key in actions) { + actions[key].push(val); + } else { + actions[key] = [val]; + } + } + } + + return (0, _util.shadow)(this, "jsActions", actions); + } + + async fontFallback(id, handler) { + const translatedFonts = await Promise.all(this.fontCache); + + for (const translatedFont of translatedFonts) { + if (translatedFont.loadedName === id) { + translatedFont.fallback(handler); + return; + } + } + } + + async cleanup() { + let manuallyTriggered = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + (0, _cleanup_helper.clearGlobalCaches)(); + this.globalImageCache.clear(manuallyTriggered); + this.pageKidsCountCache.clear(); + this.pageIndexCache.clear(); + this.nonBlendModesSet.clear(); + const translatedFonts = await Promise.all(this.fontCache); + + for (const { + dict + } of translatedFonts) { + delete dict.cacheKey; + } + + this.fontCache.clear(); + this.builtInCMapCache.clear(); + this.standardFontDataCache.clear(); + } + + async getPageDict(pageIndex) { + const nodesToVisit = [this.toplevelPagesDict]; + const visitedNodes = new _primitives.RefSet(); + + const pagesRef = this._catDict.getRaw("Pages"); + + if (pagesRef instanceof _primitives.Ref) { + visitedNodes.put(pagesRef); + } + + const xref = this.xref, + pageKidsCountCache = this.pageKidsCountCache, + pageIndexCache = this.pageIndexCache; + let currentPageIndex = 0; + + while (nodesToVisit.length) { + const currentNode = nodesToVisit.pop(); + + if (currentNode instanceof _primitives.Ref) { + const count = pageKidsCountCache.get(currentNode); + + if (count >= 0 && currentPageIndex + count <= pageIndex) { + currentPageIndex += count; + continue; + } + + if (visitedNodes.has(currentNode)) { + throw new _util.FormatError("Pages tree contains circular reference."); + } + + visitedNodes.put(currentNode); + const obj = await xref.fetchAsync(currentNode); + + if (obj instanceof _primitives.Dict) { + let type = obj.getRaw("Type"); + + if (type instanceof _primitives.Ref) { + type = await xref.fetchAsync(type); + } + + if ((0, _primitives.isName)(type, "Page") || !obj.has("Kids")) { + if (!pageKidsCountCache.has(currentNode)) { + pageKidsCountCache.put(currentNode, 1); + } + + if (!pageIndexCache.has(currentNode)) { + pageIndexCache.put(currentNode, currentPageIndex); + } + + if (currentPageIndex === pageIndex) { + return [obj, currentNode]; + } + + currentPageIndex++; + continue; + } + } + + nodesToVisit.push(obj); + continue; + } + + if (!(currentNode instanceof _primitives.Dict)) { + throw new _util.FormatError("Page dictionary kid reference points to wrong type of object."); + } + + const { + objId + } = currentNode; + let count = currentNode.getRaw("Count"); + + if (count instanceof _primitives.Ref) { + count = await xref.fetchAsync(count); + } + + if (Number.isInteger(count) && count >= 0) { + if (objId && !pageKidsCountCache.has(objId)) { + pageKidsCountCache.put(objId, count); + } + + if (currentPageIndex + count <= pageIndex) { + currentPageIndex += count; + continue; + } + } + + let kids = currentNode.getRaw("Kids"); + + if (kids instanceof _primitives.Ref) { + kids = await xref.fetchAsync(kids); + } + + if (!Array.isArray(kids)) { + let type = currentNode.getRaw("Type"); + + if (type instanceof _primitives.Ref) { + type = await xref.fetchAsync(type); + } + + if ((0, _primitives.isName)(type, "Page") || !currentNode.has("Kids")) { + if (currentPageIndex === pageIndex) { + return [currentNode, null]; + } + + currentPageIndex++; + continue; + } + + throw new _util.FormatError("Page dictionary kids object is not an array."); + } + + for (let last = kids.length - 1; last >= 0; last--) { + nodesToVisit.push(kids[last]); + } + } + + throw new Error(`Page index ${pageIndex} not found.`); + } + + async getAllPageDicts() { + let recoveryMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + const queue = [{ + currentNode: this.toplevelPagesDict, + posInKids: 0 + }]; + const visitedNodes = new _primitives.RefSet(); + + const pagesRef = this._catDict.getRaw("Pages"); + + if (pagesRef instanceof _primitives.Ref) { + visitedNodes.put(pagesRef); + } + + const map = new Map(), + xref = this.xref, + pageIndexCache = this.pageIndexCache; + let pageIndex = 0; + + function addPageDict(pageDict, pageRef) { + if (pageRef && !pageIndexCache.has(pageRef)) { + pageIndexCache.put(pageRef, pageIndex); + } + + map.set(pageIndex++, [pageDict, pageRef]); + } + + function addPageError(error) { + if (error instanceof _core_utils.XRefEntryException && !recoveryMode) { + throw error; + } + + map.set(pageIndex++, [error, null]); + } + + while (queue.length > 0) { + const queueItem = queue.at(-1); + const { + currentNode, + posInKids + } = queueItem; + let kids = currentNode.getRaw("Kids"); + + if (kids instanceof _primitives.Ref) { + try { + kids = await xref.fetchAsync(kids); + } catch (ex) { + addPageError(ex); + break; + } + } + + if (!Array.isArray(kids)) { + addPageError(new _util.FormatError("Page dictionary kids object is not an array.")); + break; + } + + if (posInKids >= kids.length) { + queue.pop(); + continue; + } + + const kidObj = kids[posInKids]; + let obj; + + if (kidObj instanceof _primitives.Ref) { + if (visitedNodes.has(kidObj)) { + addPageError(new _util.FormatError("Pages tree contains circular reference.")); + break; + } + + visitedNodes.put(kidObj); + + try { + obj = await xref.fetchAsync(kidObj); + } catch (ex) { + addPageError(ex); + break; + } + } else { + obj = kidObj; + } + + if (!(obj instanceof _primitives.Dict)) { + addPageError(new _util.FormatError("Page dictionary kid reference points to wrong type of object.")); + break; + } + + let type = obj.getRaw("Type"); + + if (type instanceof _primitives.Ref) { + try { + type = await xref.fetchAsync(type); + } catch (ex) { + addPageError(ex); + break; + } + } + + if ((0, _primitives.isName)(type, "Page") || !obj.has("Kids")) { + addPageDict(obj, kidObj instanceof _primitives.Ref ? kidObj : null); + } else { + queue.push({ + currentNode: obj, + posInKids: 0 + }); + } + + queueItem.posInKids++; + } + + return map; + } + + getPageIndex(pageRef) { + const cachedPageIndex = this.pageIndexCache.get(pageRef); + + if (cachedPageIndex !== undefined) { + return Promise.resolve(cachedPageIndex); + } + + const xref = this.xref; + + function pagesBeforeRef(kidRef) { + let total = 0, + parentRef; + return xref.fetchAsync(kidRef).then(function (node) { + if ((0, _primitives.isRefsEqual)(kidRef, pageRef) && !(0, _primitives.isDict)(node, "Page") && !(node instanceof _primitives.Dict && !node.has("Type") && node.has("Contents"))) { + throw new _util.FormatError("The reference does not point to a /Page dictionary."); + } + + if (!node) { + return null; + } + + if (!(node instanceof _primitives.Dict)) { + throw new _util.FormatError("Node must be a dictionary."); + } + + parentRef = node.getRaw("Parent"); + return node.getAsync("Parent"); + }).then(function (parent) { + if (!parent) { + return null; + } + + if (!(parent instanceof _primitives.Dict)) { + throw new _util.FormatError("Parent must be a dictionary."); + } + + return parent.getAsync("Kids"); + }).then(function (kids) { + if (!kids) { + return null; + } + + const kidPromises = []; + let found = false; + + for (let i = 0, ii = kids.length; i < ii; i++) { + const kid = kids[i]; + + if (!(kid instanceof _primitives.Ref)) { + throw new _util.FormatError("Kid must be a reference."); + } + + if ((0, _primitives.isRefsEqual)(kid, kidRef)) { + found = true; + break; + } + + kidPromises.push(xref.fetchAsync(kid).then(function (obj) { + if (!(obj instanceof _primitives.Dict)) { + throw new _util.FormatError("Kid node must be a dictionary."); + } + + if (obj.has("Count")) { + total += obj.get("Count"); + } else { + total++; + } + })); + } + + if (!found) { + throw new _util.FormatError("Kid reference not found in parent's kids."); + } + + return Promise.all(kidPromises).then(function () { + return [total, parentRef]; + }); + }); + } + + let total = 0; + + const next = ref => pagesBeforeRef(ref).then(args => { + if (!args) { + this.pageIndexCache.put(pageRef, total); + return total; + } + + const [count, parentRef] = args; + total += count; + return next(parentRef); + }); + + return next(pageRef); + } + + get baseUrl() { + const uri = this._catDict.get("URI"); + + if (uri instanceof _primitives.Dict) { + const base = uri.get("Base"); + + if (typeof base === "string") { + const absoluteUrl = (0, _util.createValidAbsoluteUrl)(base, null, { + tryConvertEncoding: true + }); + + if (absoluteUrl) { + return (0, _util.shadow)(this, "baseUrl", absoluteUrl.href); + } + } + } + + return (0, _util.shadow)(this, "baseUrl", null); + } + + static parseDestDictionary(params) { + const destDict = params.destDict; + + if (!(destDict instanceof _primitives.Dict)) { + (0, _util.warn)("parseDestDictionary: `destDict` must be a dictionary."); + return; + } + + const resultObj = params.resultObj; + + if (typeof resultObj !== "object") { + (0, _util.warn)("parseDestDictionary: `resultObj` must be an object."); + return; + } + + const docBaseUrl = params.docBaseUrl || null; + let action = destDict.get("A"), + url, + dest; + + if (!(action instanceof _primitives.Dict)) { + if (destDict.has("Dest")) { + action = destDict.get("Dest"); + } else { + action = destDict.get("AA"); + + if (action instanceof _primitives.Dict) { + if (action.has("D")) { + action = action.get("D"); + } else if (action.has("U")) { + action = action.get("U"); + } + } + } + } + + if (action instanceof _primitives.Dict) { + const actionType = action.get("S"); + + if (!(actionType instanceof _primitives.Name)) { + (0, _util.warn)("parseDestDictionary: Invalid type in Action dictionary."); + return; + } + + const actionName = actionType.name; + + switch (actionName) { + case "ResetForm": + const flags = action.get("Flags"); + const include = ((typeof flags === "number" ? flags : 0) & 1) === 0; + const fields = []; + const refs = []; + + for (const obj of action.get("Fields") || []) { + if (obj instanceof _primitives.Ref) { + refs.push(obj.toString()); + } else if (typeof obj === "string") { + fields.push((0, _util.stringToPDFString)(obj)); + } + } + + resultObj.resetForm = { + fields, + refs, + include + }; + break; + + case "URI": + url = action.get("URI"); + + if (url instanceof _primitives.Name) { + url = "/" + url.name; + } + + break; + + case "GoTo": + dest = action.get("D"); + break; + + case "Launch": + case "GoToR": + const urlDict = action.get("F"); + + if (urlDict instanceof _primitives.Dict) { + url = urlDict.get("F") || null; + } else if (typeof urlDict === "string") { + url = urlDict; + } + + let remoteDest = action.get("D"); + + if (remoteDest) { + if (remoteDest instanceof _primitives.Name) { + remoteDest = remoteDest.name; + } + + if (typeof url === "string") { + const baseUrl = url.split("#")[0]; + + if (typeof remoteDest === "string") { + url = baseUrl + "#" + remoteDest; + } else if (Array.isArray(remoteDest)) { + url = baseUrl + "#" + JSON.stringify(remoteDest); + } + } + } + + const newWindow = action.get("NewWindow"); + + if (typeof newWindow === "boolean") { + resultObj.newWindow = newWindow; + } + + break; + + case "Named": + const namedAction = action.get("N"); + + if (namedAction instanceof _primitives.Name) { + resultObj.action = namedAction.name; + } + + break; + + case "JavaScript": + const jsAction = action.get("JS"); + let js; + + if (jsAction instanceof _base_stream.BaseStream) { + js = jsAction.getString(); + } else if (typeof jsAction === "string") { + js = jsAction; + } + + const jsURL = js && (0, _core_utils.recoverJsURL)((0, _util.stringToPDFString)(js)); + + if (jsURL) { + url = jsURL.url; + resultObj.newWindow = jsURL.newWindow; + break; + } + + default: + if (actionName === "JavaScript" || actionName === "SubmitForm") { + break; + } + + (0, _util.warn)(`parseDestDictionary - unsupported action: "${actionName}".`); + break; + } + } else if (destDict.has("Dest")) { + dest = destDict.get("Dest"); + } + + if (typeof url === "string") { + const absoluteUrl = (0, _util.createValidAbsoluteUrl)(url, docBaseUrl, { + addDefaultProtocol: true, + tryConvertEncoding: true + }); + + if (absoluteUrl) { + resultObj.url = absoluteUrl.href; + } + + resultObj.unsafeUrl = url; + } + + if (dest) { + if (dest instanceof _primitives.Name) { + dest = dest.name; + } + + if (typeof dest === "string") { + resultObj.dest = (0, _util.stringToPDFString)(dest); + } else if (Array.isArray(dest)) { + resultObj.dest = dest; + } + } + } + +} + +exports.Catalog = Catalog; + +/***/ }), +/* 195 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NumberTree = exports.NameTree = void 0; + +var _primitives = __w_pdfjs_require__(130); + +var _util = __w_pdfjs_require__(2); + +class NameOrNumberTree { + constructor(root, xref, type) { + if (this.constructor === NameOrNumberTree) { + (0, _util.unreachable)("Cannot initialize NameOrNumberTree."); + } + + this.root = root; + this.xref = xref; + this._type = type; + } + + getAll() { + const map = new Map(); + + if (!this.root) { + return map; + } + + const xref = this.xref; + const processed = new _primitives.RefSet(); + processed.put(this.root); + const queue = [this.root]; + + while (queue.length > 0) { + const obj = xref.fetchIfRef(queue.shift()); + + if (!(obj instanceof _primitives.Dict)) { + continue; + } + + if (obj.has("Kids")) { + const kids = obj.get("Kids"); + + if (!Array.isArray(kids)) { + continue; + } + + for (const kid of kids) { + if (processed.has(kid)) { + throw new _util.FormatError(`Duplicate entry in "${this._type}" tree.`); + } + + queue.push(kid); + processed.put(kid); + } + + continue; + } + + const entries = obj.get(this._type); + + if (!Array.isArray(entries)) { + continue; + } + + for (let i = 0, ii = entries.length; i < ii; i += 2) { + map.set(xref.fetchIfRef(entries[i]), xref.fetchIfRef(entries[i + 1])); + } + } + + return map; + } + + get(key) { + if (!this.root) { + return null; + } + + const xref = this.xref; + let kidsOrEntries = xref.fetchIfRef(this.root); + let loopCount = 0; + const MAX_LEVELS = 10; + + while (kidsOrEntries.has("Kids")) { + if (++loopCount > MAX_LEVELS) { + (0, _util.warn)(`Search depth limit reached for "${this._type}" tree.`); + return null; + } + + const kids = kidsOrEntries.get("Kids"); + + if (!Array.isArray(kids)) { + return null; + } + + let l = 0, + r = kids.length - 1; + + while (l <= r) { + const m = l + r >> 1; + const kid = xref.fetchIfRef(kids[m]); + const limits = kid.get("Limits"); + + if (key < xref.fetchIfRef(limits[0])) { + r = m - 1; + } else if (key > xref.fetchIfRef(limits[1])) { + l = m + 1; + } else { + kidsOrEntries = kid; + break; + } + } + + if (l > r) { + return null; + } + } + + const entries = kidsOrEntries.get(this._type); + + if (Array.isArray(entries)) { + let l = 0, + r = entries.length - 2; + + while (l <= r) { + const tmp = l + r >> 1, + m = tmp + (tmp & 1); + const currentKey = xref.fetchIfRef(entries[m]); + + if (key < currentKey) { + r = m - 2; + } else if (key > currentKey) { + l = m + 2; + } else { + return xref.fetchIfRef(entries[m + 1]); + } + } + } + + return null; + } + +} + +class NameTree extends NameOrNumberTree { + constructor(root, xref) { + super(root, xref, "Names"); + } + +} + +exports.NameTree = NameTree; + +class NumberTree extends NameOrNumberTree { + constructor(root, xref) { + super(root, xref, "Nums"); + } + +} + +exports.NumberTree = NumberTree; + +/***/ }), +/* 196 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.clearGlobalCaches = clearGlobalCaches; + +var _primitives = __w_pdfjs_require__(130); + +var _unicode = __w_pdfjs_require__(165); + +function clearGlobalCaches() { + (0, _primitives.clearPrimitiveCaches)(); + (0, _unicode.clearUnicodeCaches)(); +} + +/***/ }), +/* 197 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FileSpec = void 0; + +var _util = __w_pdfjs_require__(2); + +var _base_stream = __w_pdfjs_require__(132); + +var _primitives = __w_pdfjs_require__(130); + +function pickPlatformItem(dict) { + if (dict.has("UF")) { + return dict.get("UF"); + } else if (dict.has("F")) { + return dict.get("F"); + } else if (dict.has("Unix")) { + return dict.get("Unix"); + } else if (dict.has("Mac")) { + return dict.get("Mac"); + } else if (dict.has("DOS")) { + return dict.get("DOS"); + } + + return null; +} + +class FileSpec { + constructor(root, xref) { + if (!(root instanceof _primitives.Dict)) { + return; + } + + this.xref = xref; + this.root = root; + + if (root.has("FS")) { + this.fs = root.get("FS"); + } + + this.description = root.has("Desc") ? (0, _util.stringToPDFString)(root.get("Desc")) : ""; + + if (root.has("RF")) { + (0, _util.warn)("Related file specifications are not supported"); + } + + this.contentAvailable = true; + + if (!root.has("EF")) { + this.contentAvailable = false; + (0, _util.warn)("Non-embedded file specifications are not supported"); + } + } + + get filename() { + if (!this._filename && this.root) { + const filename = pickPlatformItem(this.root) || "unnamed"; + this._filename = (0, _util.stringToPDFString)(filename).replace(/\\\\/g, "\\").replace(/\\\//g, "/").replace(/\\/g, "/"); + } + + return this._filename; + } + + get content() { + if (!this.contentAvailable) { + return null; + } + + if (!this.contentRef && this.root) { + this.contentRef = pickPlatformItem(this.root.get("EF")); + } + + let content = null; + + if (this.contentRef) { + const fileObj = this.xref.fetchIfRef(this.contentRef); + + if (fileObj instanceof _base_stream.BaseStream) { + content = fileObj.getBytes(); + } else { + (0, _util.warn)("Embedded file specification points to non-existing/invalid content"); + } + } else { + (0, _util.warn)("Embedded file specification does not have a content"); + } + + return content; + } + + get serializable() { + return { + filename: this.filename, + content: this.content + }; + } + +} + +exports.FileSpec = FileSpec; + +/***/ }), +/* 198 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MetadataParser = void 0; + +var _xml_parser = __w_pdfjs_require__(191); + +class MetadataParser { + constructor(data) { + data = this._repair(data); + const parser = new _xml_parser.SimpleXMLParser({ + lowerCaseName: true + }); + const xmlDocument = parser.parseFromString(data); + this._metadataMap = new Map(); + this._data = data; + + if (xmlDocument) { + this._parse(xmlDocument); + } + } + + _repair(data) { + return data.replace(/^[^<]+/, "").replace(/>\\376\\377([^<]+)/g, function (all, codes) { + const bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) { + return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1); + }).replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) { + switch (name) { + case "amp": + return "&"; + + case "apos": + return "'"; + + case "gt": + return ">"; + + case "lt": + return "<"; + + case "quot": + return '"'; + } + + throw new Error(`_repair: ${name} isn't defined.`); + }); + const charBuf = []; + + for (let i = 0, ii = bytes.length; i < ii; i += 2) { + const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1); + + if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) { + charBuf.push(String.fromCharCode(code)); + } else { + charBuf.push("&#x" + (0x10000 + code).toString(16).substring(1) + ";"); + } + } + + return ">" + charBuf.join(""); + }); + } + + _getSequence(entry) { + const name = entry.nodeName; + + if (name !== "rdf:bag" && name !== "rdf:seq" && name !== "rdf:alt") { + return null; + } + + return entry.childNodes.filter(node => node.nodeName === "rdf:li"); + } + + _parseArray(entry) { + if (!entry.hasChildNodes()) { + return; + } + + const [seqNode] = entry.childNodes; + const sequence = this._getSequence(seqNode) || []; + + this._metadataMap.set(entry.nodeName, sequence.map(node => node.textContent.trim())); + } + + _parse(xmlDocument) { + let rdf = xmlDocument.documentElement; + + if (rdf.nodeName !== "rdf:rdf") { + rdf = rdf.firstChild; + + while (rdf && rdf.nodeName !== "rdf:rdf") { + rdf = rdf.nextSibling; + } + } + + if (!rdf || rdf.nodeName !== "rdf:rdf" || !rdf.hasChildNodes()) { + return; + } + + for (const desc of rdf.childNodes) { + if (desc.nodeName !== "rdf:description") { + continue; + } + + for (const entry of desc.childNodes) { + const name = entry.nodeName; + + switch (name) { + case "#text": + continue; + + case "dc:creator": + case "dc:subject": + this._parseArray(entry); + + continue; + } + + this._metadataMap.set(name, entry.textContent.trim()); + } + } + } + + get serializable() { + return { + parsedData: this._metadataMap, + rawData: this._data + }; + } + +} + +exports.MetadataParser = MetadataParser; + +/***/ }), +/* 199 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StructTreeRoot = exports.StructTreePage = void 0; + +var _primitives = __w_pdfjs_require__(130); + +var _util = __w_pdfjs_require__(2); + +var _name_number_tree = __w_pdfjs_require__(195); + +const MAX_DEPTH = 40; +const StructElementType = { + PAGE_CONTENT: "PAGE_CONTENT", + STREAM_CONTENT: "STREAM_CONTENT", + OBJECT: "OBJECT", + ELEMENT: "ELEMENT" +}; + +class StructTreeRoot { + constructor(rootDict) { + this.dict = rootDict; + this.roleMap = new Map(); + } + + init() { + this.readRoleMap(); + } + + readRoleMap() { + const roleMapDict = this.dict.get("RoleMap"); + + if (!(roleMapDict instanceof _primitives.Dict)) { + return; + } + + roleMapDict.forEach((key, value) => { + if (!(value instanceof _primitives.Name)) { + return; + } + + this.roleMap.set(key, value.name); + }); + } + +} + +exports.StructTreeRoot = StructTreeRoot; + +class StructElementNode { + constructor(tree, dict) { + this.tree = tree; + this.dict = dict; + this.kids = []; + this.parseKids(); + } + + get role() { + const nameObj = this.dict.get("S"); + const name = nameObj instanceof _primitives.Name ? nameObj.name : ""; + const { + root + } = this.tree; + + if (root.roleMap.has(name)) { + return root.roleMap.get(name); + } + + return name; + } + + parseKids() { + let pageObjId = null; + const objRef = this.dict.getRaw("Pg"); + + if (objRef instanceof _primitives.Ref) { + pageObjId = objRef.toString(); + } + + const kids = this.dict.get("K"); + + if (Array.isArray(kids)) { + for (const kid of kids) { + const element = this.parseKid(pageObjId, kid); + + if (element) { + this.kids.push(element); + } + } + } else { + const element = this.parseKid(pageObjId, kids); + + if (element) { + this.kids.push(element); + } + } + } + + parseKid(pageObjId, kid) { + if (Number.isInteger(kid)) { + if (this.tree.pageDict.objId !== pageObjId) { + return null; + } + + return new StructElement({ + type: StructElementType.PAGE_CONTENT, + mcid: kid, + pageObjId + }); + } + + let kidDict = null; + + if (kid instanceof _primitives.Ref) { + kidDict = this.dict.xref.fetch(kid); + } else if (kid instanceof _primitives.Dict) { + kidDict = kid; + } + + if (!kidDict) { + return null; + } + + const pageRef = kidDict.getRaw("Pg"); + + if (pageRef instanceof _primitives.Ref) { + pageObjId = pageRef.toString(); + } + + const type = kidDict.get("Type") instanceof _primitives.Name ? kidDict.get("Type").name : null; + + if (type === "MCR") { + if (this.tree.pageDict.objId !== pageObjId) { + return null; + } + + return new StructElement({ + type: StructElementType.STREAM_CONTENT, + refObjId: kidDict.getRaw("Stm") instanceof _primitives.Ref ? kidDict.getRaw("Stm").toString() : null, + pageObjId, + mcid: kidDict.get("MCID") + }); + } + + if (type === "OBJR") { + if (this.tree.pageDict.objId !== pageObjId) { + return null; + } + + return new StructElement({ + type: StructElementType.OBJECT, + refObjId: kidDict.getRaw("Obj") instanceof _primitives.Ref ? kidDict.getRaw("Obj").toString() : null, + pageObjId + }); + } + + return new StructElement({ + type: StructElementType.ELEMENT, + dict: kidDict + }); + } + +} + +class StructElement { + constructor(_ref) { + let { + type, + dict = null, + mcid = null, + pageObjId = null, + refObjId = null + } = _ref; + this.type = type; + this.dict = dict; + this.mcid = mcid; + this.pageObjId = pageObjId; + this.refObjId = refObjId; + this.parentNode = null; + } + +} + +class StructTreePage { + constructor(structTreeRoot, pageDict) { + this.root = structTreeRoot; + this.rootDict = structTreeRoot ? structTreeRoot.dict : null; + this.pageDict = pageDict; + this.nodes = []; + } + + parse() { + if (!this.root || !this.rootDict) { + return; + } + + const parentTree = this.rootDict.get("ParentTree"); + + if (!parentTree) { + return; + } + + const id = this.pageDict.get("StructParents"); + + if (!Number.isInteger(id)) { + return; + } + + const numberTree = new _name_number_tree.NumberTree(parentTree, this.rootDict.xref); + const parentArray = numberTree.get(id); + + if (!Array.isArray(parentArray)) { + return; + } + + const map = new Map(); + + for (const ref of parentArray) { + if (ref instanceof _primitives.Ref) { + this.addNode(this.rootDict.xref.fetch(ref), map); + } + } + } + + addNode(dict, map) { + let level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + + if (level > MAX_DEPTH) { + (0, _util.warn)("StructTree MAX_DEPTH reached."); + return null; + } + + if (map.has(dict)) { + return map.get(dict); + } + + const element = new StructElementNode(this, dict); + map.set(dict, element); + const parent = dict.get("P"); + + if (!parent || (0, _primitives.isName)(parent.get("Type"), "StructTreeRoot")) { + if (!this.addTopLevelNode(dict, element)) { + map.delete(dict); + } + + return element; + } + + const parentNode = this.addNode(parent, map, level + 1); + + if (!parentNode) { + return element; + } + + let save = false; + + for (const kid of parentNode.kids) { + if (kid.type === StructElementType.ELEMENT && kid.dict === dict) { + kid.parentNode = element; + save = true; + } + } + + if (!save) { + map.delete(dict); + } + + return element; + } + + addTopLevelNode(dict, element) { + const obj = this.rootDict.get("K"); + + if (!obj) { + return false; + } + + if (obj instanceof _primitives.Dict) { + if (obj.objId !== dict.objId) { + return false; + } + + this.nodes[0] = element; + return true; + } + + if (!Array.isArray(obj)) { + return true; + } + + let save = false; + + for (let i = 0; i < obj.length; i++) { + const kidRef = obj[i]; + + if (kidRef && kidRef.toString() === dict.objId) { + this.nodes[i] = element; + save = true; + } + } + + return save; + } + + get serializable() { + function nodeToSerializable(node, parent) { + let level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + + if (level > MAX_DEPTH) { + (0, _util.warn)("StructTree too deep to be fully serialized."); + return; + } + + const obj = Object.create(null); + obj.role = node.role; + obj.children = []; + parent.children.push(obj); + const alt = node.dict.get("Alt"); + + if (typeof alt === "string") { + obj.alt = (0, _util.stringToPDFString)(alt); + } + + const lang = node.dict.get("Lang"); + + if (typeof lang === "string") { + obj.lang = (0, _util.stringToPDFString)(lang); + } + + for (const kid of node.kids) { + const kidElement = kid.type === StructElementType.ELEMENT ? kid.parentNode : null; + + if (kidElement) { + nodeToSerializable(kidElement, obj, level + 1); + continue; + } else if (kid.type === StructElementType.PAGE_CONTENT || kid.type === StructElementType.STREAM_CONTENT) { + obj.children.push({ + type: "content", + id: `page${kid.pageObjId}_mcid${kid.mcid}` + }); + } else if (kid.type === StructElementType.OBJECT) { + obj.children.push({ + type: "object", + id: kid.refObjId + }); + } + } + } + + const root = Object.create(null); + root.children = []; + root.role = "Root"; + + for (const child of this.nodes) { + if (!child) { + continue; + } + + nodeToSerializable(child, root); + } + + return root; + } + +} + +exports.StructTreePage = StructTreePage; + +/***/ }), +/* 200 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ObjectLoader = void 0; + +var _primitives = __w_pdfjs_require__(130); + +var _base_stream = __w_pdfjs_require__(132); + +var _core_utils = __w_pdfjs_require__(131); + +var _util = __w_pdfjs_require__(2); + +function mayHaveChildren(value) { + return value instanceof _primitives.Ref || value instanceof _primitives.Dict || value instanceof _base_stream.BaseStream || Array.isArray(value); +} + +function addChildren(node, nodesToVisit) { + if (node instanceof _primitives.Dict) { + node = node.getRawValues(); + } else if (node instanceof _base_stream.BaseStream) { + node = node.dict.getRawValues(); + } else if (!Array.isArray(node)) { + return; + } + + for (const rawValue of node) { + if (mayHaveChildren(rawValue)) { + nodesToVisit.push(rawValue); + } + } +} + +class ObjectLoader { + constructor(dict, keys, xref) { + this.dict = dict; + this.keys = keys; + this.xref = xref; + this.refSet = null; + } + + async load() { + if (this.xref.stream.isDataLoaded) { + return undefined; + } + + const { + keys, + dict + } = this; + this.refSet = new _primitives.RefSet(); + const nodesToVisit = []; + + for (let i = 0, ii = keys.length; i < ii; i++) { + const rawValue = dict.getRaw(keys[i]); + + if (rawValue !== undefined) { + nodesToVisit.push(rawValue); + } + } + + return this._walk(nodesToVisit); + } + + async _walk(nodesToVisit) { + const nodesToRevisit = []; + const pendingRequests = []; + + while (nodesToVisit.length) { + let currentNode = nodesToVisit.pop(); + + if (currentNode instanceof _primitives.Ref) { + if (this.refSet.has(currentNode)) { + continue; + } + + try { + this.refSet.put(currentNode); + currentNode = this.xref.fetch(currentNode); + } catch (ex) { + if (!(ex instanceof _core_utils.MissingDataException)) { + (0, _util.warn)(`ObjectLoader._walk - requesting all data: "${ex}".`); + this.refSet = null; + const { + manager + } = this.xref.stream; + return manager.requestAllChunks(); + } + + nodesToRevisit.push(currentNode); + pendingRequests.push({ + begin: ex.begin, + end: ex.end + }); + } + } + + if (currentNode instanceof _base_stream.BaseStream) { + const baseStreams = currentNode.getBaseStreams(); + + if (baseStreams) { + let foundMissingData = false; + + for (const stream of baseStreams) { + if (stream.isDataLoaded) { + continue; + } + + foundMissingData = true; + pendingRequests.push({ + begin: stream.start, + end: stream.end + }); + } + + if (foundMissingData) { + nodesToRevisit.push(currentNode); + } + } + } + + addChildren(currentNode, nodesToVisit); + } + + if (pendingRequests.length) { + await this.xref.stream.manager.requestRanges(pendingRequests); + + for (const node of nodesToRevisit) { + if (node instanceof _primitives.Ref) { + this.refSet.remove(node); + } + } + + return this._walk(nodesToRevisit); + } + + this.refSet = null; + return undefined; + } + +} + +exports.ObjectLoader = ObjectLoader; + +/***/ }), +/* 201 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XFAFactory = void 0; + +var _xfa_object = __w_pdfjs_require__(202); + +var _bind = __w_pdfjs_require__(206); + +var _data = __w_pdfjs_require__(212); + +var _fonts = __w_pdfjs_require__(210); + +var _utils = __w_pdfjs_require__(203); + +var _util = __w_pdfjs_require__(2); + +var _parser = __w_pdfjs_require__(213); + +var _xhtml = __w_pdfjs_require__(223); + +class XFAFactory { + constructor(data) { + try { + this.root = new _parser.XFAParser().parse(XFAFactory._createDocument(data)); + const binder = new _bind.Binder(this.root); + this.form = binder.bind(); + this.dataHandler = new _data.DataHandler(this.root, binder.getData()); + this.form[_xfa_object.$globalData].template = this.form; + } catch (e) { + (0, _util.warn)(`XFA - an error occurred during parsing and binding: ${e}`); + } + } + + isValid() { + return this.root && this.form; + } + + _createPagesHelper() { + const iterator = this.form[_xfa_object.$toPages](); + + return new Promise((resolve, reject) => { + const nextIteration = () => { + try { + const value = iterator.next(); + + if (value.done) { + resolve(value.value); + } else { + setTimeout(nextIteration, 0); + } + } catch (e) { + reject(e); + } + }; + + setTimeout(nextIteration, 0); + }); + } + + async _createPages() { + try { + this.pages = await this._createPagesHelper(); + this.dims = this.pages.children.map(c => { + const { + width, + height + } = c.attributes.style; + return [0, 0, parseInt(width), parseInt(height)]; + }); + } catch (e) { + (0, _util.warn)(`XFA - an error occurred during layout: ${e}`); + } + } + + getBoundingBox(pageIndex) { + return this.dims[pageIndex]; + } + + async getNumPages() { + if (!this.pages) { + await this._createPages(); + } + + return this.dims.length; + } + + setImages(images) { + this.form[_xfa_object.$globalData].images = images; + } + + setFonts(fonts) { + this.form[_xfa_object.$globalData].fontFinder = new _fonts.FontFinder(fonts); + const missingFonts = []; + + for (let typeface of this.form[_xfa_object.$globalData].usedTypefaces) { + typeface = (0, _utils.stripQuotes)(typeface); + + const font = this.form[_xfa_object.$globalData].fontFinder.find(typeface); + + if (!font) { + missingFonts.push(typeface); + } + } + + if (missingFonts.length > 0) { + return missingFonts; + } + + return null; + } + + appendFonts(fonts, reallyMissingFonts) { + this.form[_xfa_object.$globalData].fontFinder.add(fonts, reallyMissingFonts); + } + + async getPages() { + if (!this.pages) { + await this._createPages(); + } + + const pages = this.pages; + this.pages = null; + return pages; + } + + serializeData(storage) { + return this.dataHandler.serialize(storage); + } + + static _createDocument(data) { + if (!data["/xdp:xdp"]) { + return data["xdp:xdp"]; + } + + return Object.values(data).join(""); + } + + static getRichTextAsHtml(rc) { + if (!rc || typeof rc !== "string") { + return null; + } + + try { + let root = new _parser.XFAParser(_xhtml.XhtmlNamespace, true).parse(rc); + + if (!["body", "xhtml"].includes(root[_xfa_object.$nodeName])) { + const newRoot = _xhtml.XhtmlNamespace.body({}); + + newRoot[_xfa_object.$appendChild](root); + + root = newRoot; + } + + const result = root[_xfa_object.$toHTML](); + + if (!result.success) { + return null; + } + + const { + html + } = result; + const { + attributes + } = html; + + if (attributes) { + if (attributes.class) { + attributes.class = attributes.class.filter(attr => !attr.startsWith("xfa")); + } + + attributes.dir = "auto"; + } + + return { + html, + str: root[_xfa_object.$text]() + }; + } catch (e) { + (0, _util.warn)(`XFA - an error occurred during parsing of rich text: ${e}`); + } + + return null; + } + +} + +exports.XFAFactory = XFAFactory; + +/***/ }), +/* 202 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XmlObject = exports.XFAObjectArray = exports.XFAObject = exports.XFAAttribute = exports.StringObject = exports.OptionObject = exports.Option10 = exports.Option01 = exports.IntegerObject = exports.ContentObject = exports.$uid = exports.$toStyle = exports.$toString = exports.$toPages = exports.$toHTML = exports.$text = exports.$tabIndex = exports.$setValue = exports.$setSetAttributes = exports.$setId = exports.$searchNode = exports.$root = exports.$resolvePrototypes = exports.$removeChild = exports.$pushPara = exports.$pushGlyphs = exports.$popPara = exports.$onText = exports.$onChildCheck = exports.$onChild = exports.$nsAttributes = exports.$nodeName = exports.$namespaceId = exports.$isUsable = exports.$isTransparent = exports.$isThereMoreWidth = exports.$isSplittable = exports.$isNsAgnostic = exports.$isDescendent = exports.$isDataValue = exports.$isCDATAXml = exports.$isBindable = exports.$insertAt = exports.$indexOf = exports.$ids = exports.$hasSettableValue = exports.$globalData = exports.$getTemplateRoot = exports.$getSubformParent = exports.$getRealChildrenByNameIt = exports.$getParent = exports.$getNextPage = exports.$getExtra = exports.$getDataValue = exports.$getContainedChildren = exports.$getChildrenByNameIt = exports.$getChildrenByName = exports.$getChildrenByClass = exports.$getChildren = exports.$getAvailableSpace = exports.$getAttributes = exports.$getAttributeIt = exports.$flushHTML = exports.$finalize = exports.$extra = exports.$dump = exports.$data = exports.$content = exports.$consumed = exports.$clone = exports.$cleanup = exports.$cleanPage = exports.$clean = exports.$childrenToHTML = exports.$appendChild = exports.$addHTML = exports.$acceptWhitespace = void 0; + +var _utils = __w_pdfjs_require__(203); + +var _util = __w_pdfjs_require__(2); + +var _core_utils = __w_pdfjs_require__(131); + +var _namespaces = __w_pdfjs_require__(204); + +var _som = __w_pdfjs_require__(205); + +const $acceptWhitespace = Symbol(); +exports.$acceptWhitespace = $acceptWhitespace; +const $addHTML = Symbol(); +exports.$addHTML = $addHTML; +const $appendChild = Symbol(); +exports.$appendChild = $appendChild; +const $childrenToHTML = Symbol(); +exports.$childrenToHTML = $childrenToHTML; +const $clean = Symbol(); +exports.$clean = $clean; +const $cleanPage = Symbol(); +exports.$cleanPage = $cleanPage; +const $cleanup = Symbol(); +exports.$cleanup = $cleanup; +const $clone = Symbol(); +exports.$clone = $clone; +const $consumed = Symbol(); +exports.$consumed = $consumed; +const $content = Symbol("content"); +exports.$content = $content; +const $data = Symbol("data"); +exports.$data = $data; +const $dump = Symbol(); +exports.$dump = $dump; +const $extra = Symbol("extra"); +exports.$extra = $extra; +const $finalize = Symbol(); +exports.$finalize = $finalize; +const $flushHTML = Symbol(); +exports.$flushHTML = $flushHTML; +const $getAttributeIt = Symbol(); +exports.$getAttributeIt = $getAttributeIt; +const $getAttributes = Symbol(); +exports.$getAttributes = $getAttributes; +const $getAvailableSpace = Symbol(); +exports.$getAvailableSpace = $getAvailableSpace; +const $getChildrenByClass = Symbol(); +exports.$getChildrenByClass = $getChildrenByClass; +const $getChildrenByName = Symbol(); +exports.$getChildrenByName = $getChildrenByName; +const $getChildrenByNameIt = Symbol(); +exports.$getChildrenByNameIt = $getChildrenByNameIt; +const $getDataValue = Symbol(); +exports.$getDataValue = $getDataValue; +const $getExtra = Symbol(); +exports.$getExtra = $getExtra; +const $getRealChildrenByNameIt = Symbol(); +exports.$getRealChildrenByNameIt = $getRealChildrenByNameIt; +const $getChildren = Symbol(); +exports.$getChildren = $getChildren; +const $getContainedChildren = Symbol(); +exports.$getContainedChildren = $getContainedChildren; +const $getNextPage = Symbol(); +exports.$getNextPage = $getNextPage; +const $getSubformParent = Symbol(); +exports.$getSubformParent = $getSubformParent; +const $getParent = Symbol(); +exports.$getParent = $getParent; +const $getTemplateRoot = Symbol(); +exports.$getTemplateRoot = $getTemplateRoot; +const $globalData = Symbol(); +exports.$globalData = $globalData; +const $hasSettableValue = Symbol(); +exports.$hasSettableValue = $hasSettableValue; +const $ids = Symbol(); +exports.$ids = $ids; +const $indexOf = Symbol(); +exports.$indexOf = $indexOf; +const $insertAt = Symbol(); +exports.$insertAt = $insertAt; +const $isCDATAXml = Symbol(); +exports.$isCDATAXml = $isCDATAXml; +const $isBindable = Symbol(); +exports.$isBindable = $isBindable; +const $isDataValue = Symbol(); +exports.$isDataValue = $isDataValue; +const $isDescendent = Symbol(); +exports.$isDescendent = $isDescendent; +const $isNsAgnostic = Symbol(); +exports.$isNsAgnostic = $isNsAgnostic; +const $isSplittable = Symbol(); +exports.$isSplittable = $isSplittable; +const $isThereMoreWidth = Symbol(); +exports.$isThereMoreWidth = $isThereMoreWidth; +const $isTransparent = Symbol(); +exports.$isTransparent = $isTransparent; +const $isUsable = Symbol(); +exports.$isUsable = $isUsable; +const $lastAttribute = Symbol(); +const $namespaceId = Symbol("namespaceId"); +exports.$namespaceId = $namespaceId; +const $nodeName = Symbol("nodeName"); +exports.$nodeName = $nodeName; +const $nsAttributes = Symbol(); +exports.$nsAttributes = $nsAttributes; +const $onChild = Symbol(); +exports.$onChild = $onChild; +const $onChildCheck = Symbol(); +exports.$onChildCheck = $onChildCheck; +const $onText = Symbol(); +exports.$onText = $onText; +const $pushGlyphs = Symbol(); +exports.$pushGlyphs = $pushGlyphs; +const $popPara = Symbol(); +exports.$popPara = $popPara; +const $pushPara = Symbol(); +exports.$pushPara = $pushPara; +const $removeChild = Symbol(); +exports.$removeChild = $removeChild; +const $root = Symbol("root"); +exports.$root = $root; +const $resolvePrototypes = Symbol(); +exports.$resolvePrototypes = $resolvePrototypes; +const $searchNode = Symbol(); +exports.$searchNode = $searchNode; +const $setId = Symbol(); +exports.$setId = $setId; +const $setSetAttributes = Symbol(); +exports.$setSetAttributes = $setSetAttributes; +const $setValue = Symbol(); +exports.$setValue = $setValue; +const $tabIndex = Symbol(); +exports.$tabIndex = $tabIndex; +const $text = Symbol(); +exports.$text = $text; +const $toPages = Symbol(); +exports.$toPages = $toPages; +const $toHTML = Symbol(); +exports.$toHTML = $toHTML; +const $toString = Symbol(); +exports.$toString = $toString; +const $toStyle = Symbol(); +exports.$toStyle = $toStyle; +const $uid = Symbol("uid"); +exports.$uid = $uid; + +const _applyPrototype = Symbol(); + +const _attributes = Symbol(); + +const _attributeNames = Symbol(); + +const _children = Symbol("_children"); + +const _cloneAttribute = Symbol(); + +const _dataValue = Symbol(); + +const _defaultValue = Symbol(); + +const _filteredChildrenGenerator = Symbol(); + +const _getPrototype = Symbol(); + +const _getUnsetAttributes = Symbol(); + +const _hasChildren = Symbol(); + +const _max = Symbol(); + +const _options = Symbol(); + +const _parent = Symbol("parent"); + +const _resolvePrototypesHelper = Symbol(); + +const _setAttributes = Symbol(); + +const _validator = Symbol(); + +let uid = 0; +const NS_DATASETS = _namespaces.NamespaceIds.datasets.id; + +class XFAObject { + constructor(nsId, name) { + let hasChildren = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + this[$namespaceId] = nsId; + this[$nodeName] = name; + this[_hasChildren] = hasChildren; + this[_parent] = null; + this[_children] = []; + this[$uid] = `${name}${uid++}`; + this[$globalData] = null; + } + + [$onChild](child) { + if (!this[_hasChildren] || !this[$onChildCheck](child)) { + return false; + } + + const name = child[$nodeName]; + const node = this[name]; + + if (node instanceof XFAObjectArray) { + if (node.push(child)) { + this[$appendChild](child); + return true; + } + } else { + if (node !== null) { + this[$removeChild](node); + } + + this[name] = child; + this[$appendChild](child); + return true; + } + + let id = ""; + + if (this.id) { + id = ` (id: ${this.id})`; + } else if (this.name) { + id = ` (name: ${this.name} ${this.h.value})`; + } + + (0, _util.warn)(`XFA - node "${this[$nodeName]}"${id} has already enough "${name}"!`); + return false; + } + + [$onChildCheck](child) { + return this.hasOwnProperty(child[$nodeName]) && child[$namespaceId] === this[$namespaceId]; + } + + [$isNsAgnostic]() { + return false; + } + + [$acceptWhitespace]() { + return false; + } + + [$isCDATAXml]() { + return false; + } + + [$isBindable]() { + return false; + } + + [$popPara]() { + if (this.para) { + this[$getTemplateRoot]()[$extra].paraStack.pop(); + } + } + + [$pushPara]() { + this[$getTemplateRoot]()[$extra].paraStack.push(this.para); + } + + [$setId](ids) { + if (this.id && this[$namespaceId] === _namespaces.NamespaceIds.template.id) { + ids.set(this.id, this); + } + } + + [$getTemplateRoot]() { + return this[$globalData].template; + } + + [$isSplittable]() { + return false; + } + + [$isThereMoreWidth]() { + return false; + } + + [$appendChild](child) { + child[_parent] = this; + + this[_children].push(child); + + if (!child[$globalData] && this[$globalData]) { + child[$globalData] = this[$globalData]; + } + } + + [$removeChild](child) { + const i = this[_children].indexOf(child); + + this[_children].splice(i, 1); + } + + [$hasSettableValue]() { + return this.hasOwnProperty("value"); + } + + [$setValue](_) {} + + [$onText](_) {} + + [$finalize]() {} + + [$clean](builder) { + delete this[_hasChildren]; + + if (this[$cleanup]) { + builder.clean(this[$cleanup]); + delete this[$cleanup]; + } + } + + [$indexOf](child) { + return this[_children].indexOf(child); + } + + [$insertAt](i, child) { + child[_parent] = this; + + this[_children].splice(i, 0, child); + + if (!child[$globalData] && this[$globalData]) { + child[$globalData] = this[$globalData]; + } + } + + [$isTransparent]() { + return !this.name; + } + + [$lastAttribute]() { + return ""; + } + + [$text]() { + if (this[_children].length === 0) { + return this[$content]; + } + + return this[_children].map(c => c[$text]()).join(""); + } + + get [_attributeNames]() { + const proto = Object.getPrototypeOf(this); + + if (!proto._attributes) { + const attributes = proto._attributes = new Set(); + + for (const name of Object.getOwnPropertyNames(this)) { + if (this[name] === null || this[name] instanceof XFAObject || this[name] instanceof XFAObjectArray) { + break; + } + + attributes.add(name); + } + } + + return (0, _util.shadow)(this, _attributeNames, proto._attributes); + } + + [$isDescendent](parent) { + let node = this; + + while (node) { + if (node === parent) { + return true; + } + + node = node[$getParent](); + } + + return false; + } + + [$getParent]() { + return this[_parent]; + } + + [$getSubformParent]() { + return this[$getParent](); + } + + [$getChildren]() { + let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + + if (!name) { + return this[_children]; + } + + return this[name]; + } + + [$dump]() { + const dumped = Object.create(null); + + if (this[$content]) { + dumped.$content = this[$content]; + } + + for (const name of Object.getOwnPropertyNames(this)) { + const value = this[name]; + + if (value === null) { + continue; + } + + if (value instanceof XFAObject) { + dumped[name] = value[$dump](); + } else if (value instanceof XFAObjectArray) { + if (!value.isEmpty()) { + dumped[name] = value.dump(); + } + } else { + dumped[name] = value; + } + } + + return dumped; + } + + [$toStyle]() { + return null; + } + + [$toHTML]() { + return _utils.HTMLResult.EMPTY; + } + + *[$getContainedChildren]() { + for (const node of this[$getChildren]()) { + yield node; + } + } + + *[_filteredChildrenGenerator](filter, include) { + for (const node of this[$getContainedChildren]()) { + if (!filter || include === filter.has(node[$nodeName])) { + const availableSpace = this[$getAvailableSpace](); + const res = node[$toHTML](availableSpace); + + if (!res.success) { + this[$extra].failingNode = node; + } + + yield res; + } + } + } + + [$flushHTML]() { + return null; + } + + [$addHTML](html, bbox) { + this[$extra].children.push(html); + } + + [$getAvailableSpace]() {} + + [$childrenToHTML](_ref) { + let { + filter = null, + include = true + } = _ref; + + if (!this[$extra].generator) { + this[$extra].generator = this[_filteredChildrenGenerator](filter, include); + } else { + const availableSpace = this[$getAvailableSpace](); + const res = this[$extra].failingNode[$toHTML](availableSpace); + + if (!res.success) { + return res; + } + + if (res.html) { + this[$addHTML](res.html, res.bbox); + } + + delete this[$extra].failingNode; + } + + while (true) { + const gen = this[$extra].generator.next(); + + if (gen.done) { + break; + } + + const res = gen.value; + + if (!res.success) { + return res; + } + + if (res.html) { + this[$addHTML](res.html, res.bbox); + } + } + + this[$extra].generator = null; + return _utils.HTMLResult.EMPTY; + } + + [$setSetAttributes](attributes) { + this[_setAttributes] = new Set(Object.keys(attributes)); + } + + [_getUnsetAttributes](protoAttributes) { + const allAttr = this[_attributeNames]; + const setAttr = this[_setAttributes]; + return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x)); + } + + [$resolvePrototypes](ids) { + let ancestors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set(); + + for (const child of this[_children]) { + child[_resolvePrototypesHelper](ids, ancestors); + } + } + + [_resolvePrototypesHelper](ids, ancestors) { + const proto = this[_getPrototype](ids, ancestors); + + if (proto) { + this[_applyPrototype](proto, ids, ancestors); + } else { + this[$resolvePrototypes](ids, ancestors); + } + } + + [_getPrototype](ids, ancestors) { + const { + use, + usehref + } = this; + + if (!use && !usehref) { + return null; + } + + let proto = null; + let somExpression = null; + let id = null; + let ref = use; + + if (usehref) { + ref = usehref; + + if (usehref.startsWith("#som(") && usehref.endsWith(")")) { + somExpression = usehref.slice("#som(".length, usehref.length - 1); + } else if (usehref.startsWith(".#som(") && usehref.endsWith(")")) { + somExpression = usehref.slice(".#som(".length, usehref.length - 1); + } else if (usehref.startsWith("#")) { + id = usehref.slice(1); + } else if (usehref.startsWith(".#")) { + id = usehref.slice(2); + } + } else if (use.startsWith("#")) { + id = use.slice(1); + } else { + somExpression = use; + } + + this.use = this.usehref = ""; + + if (id) { + proto = ids.get(id); + } else { + proto = (0, _som.searchNode)(ids.get($root), this, somExpression, true, false); + + if (proto) { + proto = proto[0]; + } + } + + if (!proto) { + (0, _util.warn)(`XFA - Invalid prototype reference: ${ref}.`); + return null; + } + + if (proto[$nodeName] !== this[$nodeName]) { + (0, _util.warn)(`XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`); + return null; + } + + if (ancestors.has(proto)) { + (0, _util.warn)(`XFA - Cycle detected in prototypes use.`); + return null; + } + + ancestors.add(proto); + + const protoProto = proto[_getPrototype](ids, ancestors); + + if (protoProto) { + proto[_applyPrototype](protoProto, ids, ancestors); + } + + proto[$resolvePrototypes](ids, ancestors); + ancestors.delete(proto); + return proto; + } + + [_applyPrototype](proto, ids, ancestors) { + if (ancestors.has(proto)) { + (0, _util.warn)(`XFA - Cycle detected in prototypes use.`); + return; + } + + if (!this[$content] && proto[$content]) { + this[$content] = proto[$content]; + } + + const newAncestors = new Set(ancestors); + newAncestors.add(proto); + + for (const unsetAttrName of this[_getUnsetAttributes](proto[_setAttributes])) { + this[unsetAttrName] = proto[unsetAttrName]; + + if (this[_setAttributes]) { + this[_setAttributes].add(unsetAttrName); + } + } + + for (const name of Object.getOwnPropertyNames(this)) { + if (this[_attributeNames].has(name)) { + continue; + } + + const value = this[name]; + const protoValue = proto[name]; + + if (value instanceof XFAObjectArray) { + for (const child of value[_children]) { + child[_resolvePrototypesHelper](ids, ancestors); + } + + for (let i = value[_children].length, ii = protoValue[_children].length; i < ii; i++) { + const child = proto[_children][i][$clone](); + + if (value.push(child)) { + child[_parent] = this; + + this[_children].push(child); + + child[_resolvePrototypesHelper](ids, ancestors); + } else { + break; + } + } + + continue; + } + + if (value !== null) { + value[$resolvePrototypes](ids, ancestors); + + if (protoValue) { + value[_applyPrototype](protoValue, ids, ancestors); + } + + continue; + } + + if (protoValue !== null) { + const child = protoValue[$clone](); + child[_parent] = this; + this[name] = child; + + this[_children].push(child); + + child[_resolvePrototypesHelper](ids, ancestors); + } + } + } + + static [_cloneAttribute](obj) { + if (Array.isArray(obj)) { + return obj.map(x => XFAObject[_cloneAttribute](x)); + } + + if (typeof obj === "object" && obj !== null) { + return Object.assign({}, obj); + } + + return obj; + } + + [$clone]() { + const clone = Object.create(Object.getPrototypeOf(this)); + + for (const $symbol of Object.getOwnPropertySymbols(this)) { + try { + clone[$symbol] = this[$symbol]; + } catch (_) { + (0, _util.shadow)(clone, $symbol, this[$symbol]); + } + } + + clone[$uid] = `${clone[$nodeName]}${uid++}`; + clone[_children] = []; + + for (const name of Object.getOwnPropertyNames(this)) { + if (this[_attributeNames].has(name)) { + clone[name] = XFAObject[_cloneAttribute](this[name]); + continue; + } + + const value = this[name]; + + if (value instanceof XFAObjectArray) { + clone[name] = new XFAObjectArray(value[_max]); + } else { + clone[name] = null; + } + } + + for (const child of this[_children]) { + const name = child[$nodeName]; + const clonedChild = child[$clone](); + + clone[_children].push(clonedChild); + + clonedChild[_parent] = clone; + + if (clone[name] === null) { + clone[name] = clonedChild; + } else { + clone[name][_children].push(clonedChild); + } + } + + return clone; + } + + [$getChildren]() { + let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + + if (!name) { + return this[_children]; + } + + return this[_children].filter(c => c[$nodeName] === name); + } + + [$getChildrenByClass](name) { + return this[name]; + } + + [$getChildrenByName](name, allTransparent) { + let first = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + return Array.from(this[$getChildrenByNameIt](name, allTransparent, first)); + } + + *[$getChildrenByNameIt](name, allTransparent) { + let first = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + + if (name === "parent") { + yield this[_parent]; + return; + } + + for (const child of this[_children]) { + if (child[$nodeName] === name) { + yield child; + } + + if (child.name === name) { + yield child; + } + + if (allTransparent || child[$isTransparent]()) { + yield* child[$getChildrenByNameIt](name, allTransparent, false); + } + } + + if (first && this[_attributeNames].has(name)) { + yield new XFAAttribute(this, name, this[name]); + } + } + +} + +exports.XFAObject = XFAObject; + +class XFAObjectArray { + constructor() { + let max = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Infinity; + this[_max] = max; + this[_children] = []; + } + + push(child) { + const len = this[_children].length; + + if (len <= this[_max]) { + this[_children].push(child); + + return true; + } + + (0, _util.warn)(`XFA - node "${child[$nodeName]}" accepts no more than ${this[_max]} children`); + return false; + } + + isEmpty() { + return this[_children].length === 0; + } + + dump() { + return this[_children].length === 1 ? this[_children][0][$dump]() : this[_children].map(x => x[$dump]()); + } + + [$clone]() { + const clone = new XFAObjectArray(this[_max]); + clone[_children] = this[_children].map(c => c[$clone]()); + return clone; + } + + get children() { + return this[_children]; + } + + clear() { + this[_children].length = 0; + } + +} + +exports.XFAObjectArray = XFAObjectArray; + +class XFAAttribute { + constructor(node, name, value) { + this[_parent] = node; + this[$nodeName] = name; + this[$content] = value; + this[$consumed] = false; + this[$uid] = `attribute${uid++}`; + } + + [$getParent]() { + return this[_parent]; + } + + [$isDataValue]() { + return true; + } + + [$getDataValue]() { + return this[$content].trim(); + } + + [$setValue](value) { + value = value.value || ""; + this[$content] = value.toString(); + } + + [$text]() { + return this[$content]; + } + + [$isDescendent](parent) { + return this[_parent] === parent || this[_parent][$isDescendent](parent); + } + +} + +exports.XFAAttribute = XFAAttribute; + +class XmlObject extends XFAObject { + constructor(nsId, name) { + let attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + super(nsId, name); + this[$content] = ""; + this[_dataValue] = null; + + if (name !== "#text") { + const map = new Map(); + this[_attributes] = map; + + for (const [attrName, value] of Object.entries(attributes)) { + map.set(attrName, new XFAAttribute(this, attrName, value)); + } + + if (attributes.hasOwnProperty($nsAttributes)) { + const dataNode = attributes[$nsAttributes].xfa.dataNode; + + if (dataNode !== undefined) { + if (dataNode === "dataGroup") { + this[_dataValue] = false; + } else if (dataNode === "dataValue") { + this[_dataValue] = true; + } + } + } + } + + this[$consumed] = false; + } + + [$toString](buf) { + const tagName = this[$nodeName]; + + if (tagName === "#text") { + buf.push((0, _core_utils.encodeToXmlString)(this[$content])); + return; + } + + const utf8TagName = (0, _util.utf8StringToString)(tagName); + const prefix = this[$namespaceId] === NS_DATASETS ? "xfa:" : ""; + buf.push(`<${prefix}${utf8TagName}`); + + for (const [name, value] of this[_attributes].entries()) { + const utf8Name = (0, _util.utf8StringToString)(name); + buf.push(` ${utf8Name}="${(0, _core_utils.encodeToXmlString)(value[$content])}"`); + } + + if (this[_dataValue] !== null) { + if (this[_dataValue]) { + buf.push(` xfa:dataNode="dataValue"`); + } else { + buf.push(` xfa:dataNode="dataGroup"`); + } + } + + if (!this[$content] && this[_children].length === 0) { + buf.push("/>"); + return; + } + + buf.push(">"); + + if (this[$content]) { + if (typeof this[$content] === "string") { + buf.push((0, _core_utils.encodeToXmlString)(this[$content])); + } else { + this[$content][$toString](buf); + } + } else { + for (const child of this[_children]) { + child[$toString](buf); + } + } + + buf.push(``); + } + + [$onChild](child) { + if (this[$content]) { + const node = new XmlObject(this[$namespaceId], "#text"); + this[$appendChild](node); + node[$content] = this[$content]; + this[$content] = ""; + } + + this[$appendChild](child); + return true; + } + + [$onText](str) { + this[$content] += str; + } + + [$finalize]() { + if (this[$content] && this[_children].length > 0) { + const node = new XmlObject(this[$namespaceId], "#text"); + this[$appendChild](node); + node[$content] = this[$content]; + delete this[$content]; + } + } + + [$toHTML]() { + if (this[$nodeName] === "#text") { + return _utils.HTMLResult.success({ + name: "#text", + value: this[$content] + }); + } + + return _utils.HTMLResult.EMPTY; + } + + [$getChildren]() { + let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + + if (!name) { + return this[_children]; + } + + return this[_children].filter(c => c[$nodeName] === name); + } + + [$getAttributes]() { + return this[_attributes]; + } + + [$getChildrenByClass](name) { + const value = this[_attributes].get(name); + + if (value !== undefined) { + return value; + } + + return this[$getChildren](name); + } + + *[$getChildrenByNameIt](name, allTransparent) { + const value = this[_attributes].get(name); + + if (value) { + yield value; + } + + for (const child of this[_children]) { + if (child[$nodeName] === name) { + yield child; + } + + if (allTransparent) { + yield* child[$getChildrenByNameIt](name, allTransparent); + } + } + } + + *[$getAttributeIt](name, skipConsumed) { + const value = this[_attributes].get(name); + + if (value && (!skipConsumed || !value[$consumed])) { + yield value; + } + + for (const child of this[_children]) { + yield* child[$getAttributeIt](name, skipConsumed); + } + } + + *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) { + for (const child of this[_children]) { + if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) { + yield child; + } + + if (allTransparent) { + yield* child[$getRealChildrenByNameIt](name, allTransparent, skipConsumed); + } + } + } + + [$isDataValue]() { + if (this[_dataValue] === null) { + return this[_children].length === 0 || this[_children][0][$namespaceId] === _namespaces.NamespaceIds.xhtml.id; + } + + return this[_dataValue]; + } + + [$getDataValue]() { + if (this[_dataValue] === null) { + if (this[_children].length === 0) { + return this[$content].trim(); + } + + if (this[_children][0][$namespaceId] === _namespaces.NamespaceIds.xhtml.id) { + return this[_children][0][$text]().trim(); + } + + return null; + } + + return this[$content].trim(); + } + + [$setValue](value) { + value = value.value || ""; + this[$content] = value.toString(); + } + + [$dump]() { + let hasNS = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + const dumped = Object.create(null); + + if (hasNS) { + dumped.$ns = this[$namespaceId]; + } + + if (this[$content]) { + dumped.$content = this[$content]; + } + + dumped.$name = this[$nodeName]; + dumped.children = []; + + for (const child of this[_children]) { + dumped.children.push(child[$dump](hasNS)); + } + + dumped.attributes = Object.create(null); + + for (const [name, value] of this[_attributes]) { + dumped.attributes[name] = value[$content]; + } + + return dumped; + } + +} + +exports.XmlObject = XmlObject; + +class ContentObject extends XFAObject { + constructor(nsId, name) { + super(nsId, name); + this[$content] = ""; + } + + [$onText](text) { + this[$content] += text; + } + + [$finalize]() {} + +} + +exports.ContentObject = ContentObject; + +class OptionObject extends ContentObject { + constructor(nsId, name, options) { + super(nsId, name); + this[_options] = options; + } + + [$finalize]() { + this[$content] = (0, _utils.getKeyword)({ + data: this[$content], + defaultValue: this[_options][0], + validate: k => this[_options].includes(k) + }); + } + + [$clean](builder) { + super[$clean](builder); + delete this[_options]; + } + +} + +exports.OptionObject = OptionObject; + +class StringObject extends ContentObject { + [$finalize]() { + this[$content] = this[$content].trim(); + } + +} + +exports.StringObject = StringObject; + +class IntegerObject extends ContentObject { + constructor(nsId, name, defaultValue, validator) { + super(nsId, name); + this[_defaultValue] = defaultValue; + this[_validator] = validator; + } + + [$finalize]() { + this[$content] = (0, _utils.getInteger)({ + data: this[$content], + defaultValue: this[_defaultValue], + validate: this[_validator] + }); + } + + [$clean](builder) { + super[$clean](builder); + delete this[_defaultValue]; + delete this[_validator]; + } + +} + +exports.IntegerObject = IntegerObject; + +class Option01 extends IntegerObject { + constructor(nsId, name) { + super(nsId, name, 0, n => n === 1); + } + +} + +exports.Option01 = Option01; + +class Option10 extends IntegerObject { + constructor(nsId, name) { + super(nsId, name, 1, n => n === 0); + } + +} + +exports.Option10 = Option10; + +/***/ }), +/* 203 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.HTMLResult = void 0; +exports.getBBox = getBBox; +exports.getColor = getColor; +exports.getFloat = getFloat; +exports.getInteger = getInteger; +exports.getKeyword = getKeyword; +exports.getMeasurement = getMeasurement; +exports.getRatio = getRatio; +exports.getRelevant = getRelevant; +exports.getStringOption = getStringOption; +exports.stripQuotes = stripQuotes; + +var _util = __w_pdfjs_require__(2); + +const dimConverters = { + pt: x => x, + cm: x => x / 2.54 * 72, + mm: x => x / (10 * 2.54) * 72, + in: x => x * 72, + px: x => x +}; +const measurementPattern = /([+-]?\d+\.?\d*)(.*)/; + +function stripQuotes(str) { + if (str.startsWith("'") || str.startsWith('"')) { + return str.slice(1, str.length - 1); + } + + return str; +} + +function getInteger(_ref) { + let { + data, + defaultValue, + validate + } = _ref; + + if (!data) { + return defaultValue; + } + + data = data.trim(); + const n = parseInt(data, 10); + + if (!isNaN(n) && validate(n)) { + return n; + } + + return defaultValue; +} + +function getFloat(_ref2) { + let { + data, + defaultValue, + validate + } = _ref2; + + if (!data) { + return defaultValue; + } + + data = data.trim(); + const n = parseFloat(data); + + if (!isNaN(n) && validate(n)) { + return n; + } + + return defaultValue; +} + +function getKeyword(_ref3) { + let { + data, + defaultValue, + validate + } = _ref3; + + if (!data) { + return defaultValue; + } + + data = data.trim(); + + if (validate(data)) { + return data; + } + + return defaultValue; +} + +function getStringOption(data, options) { + return getKeyword({ + data, + defaultValue: options[0], + validate: k => options.includes(k) + }); +} + +function getMeasurement(str) { + let def = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "0"; + def = def || "0"; + + if (!str) { + return getMeasurement(def); + } + + const match = str.trim().match(measurementPattern); + + if (!match) { + return getMeasurement(def); + } + + const [, valueStr, unit] = match; + const value = parseFloat(valueStr); + + if (isNaN(value)) { + return getMeasurement(def); + } + + if (value === 0) { + return 0; + } + + const conv = dimConverters[unit]; + + if (conv) { + return conv(value); + } + + return value; +} + +function getRatio(data) { + if (!data) { + return { + num: 1, + den: 1 + }; + } + + const ratio = data.trim().split(/\s*:\s*/).map(x => parseFloat(x)).filter(x => !isNaN(x)); + + if (ratio.length === 1) { + ratio.push(1); + } + + if (ratio.length === 0) { + return { + num: 1, + den: 1 + }; + } + + const [num, den] = ratio; + return { + num, + den + }; +} + +function getRelevant(data) { + if (!data) { + return []; + } + + return data.trim().split(/\s+/).map(e => { + return { + excluded: e[0] === "-", + viewname: e.substring(1) + }; + }); +} + +function getColor(data) { + let def = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0, 0, 0]; + let [r, g, b] = def; + + if (!data) { + return { + r, + g, + b + }; + } + + const color = data.trim().split(/\s*,\s*/).map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255)).map(c => isNaN(c) ? 0 : c); + + if (color.length < 3) { + return { + r, + g, + b + }; + } + + [r, g, b] = color; + return { + r, + g, + b + }; +} + +function getBBox(data) { + const def = -1; + + if (!data) { + return { + x: def, + y: def, + width: def, + height: def + }; + } + + const bbox = data.trim().split(/\s*,\s*/).map(m => getMeasurement(m, "-1")); + + if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) { + return { + x: def, + y: def, + width: def, + height: def + }; + } + + const [x, y, width, height] = bbox; + return { + x, + y, + width, + height + }; +} + +class HTMLResult { + static get FAILURE() { + return (0, _util.shadow)(this, "FAILURE", new HTMLResult(false, null, null, null)); + } + + static get EMPTY() { + return (0, _util.shadow)(this, "EMPTY", new HTMLResult(true, null, null, null)); + } + + constructor(success, html, bbox, breakNode) { + this.success = success; + this.html = html; + this.bbox = bbox; + this.breakNode = breakNode; + } + + isBreak() { + return !!this.breakNode; + } + + static breakNode(node) { + return new HTMLResult(false, null, null, node); + } + + static success(html) { + let bbox = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + return new HTMLResult(true, html, bbox, null); + } + +} + +exports.HTMLResult = HTMLResult; + +/***/ }), +/* 204 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NamespaceIds = exports.$buildXFAObject = void 0; +const $buildXFAObject = Symbol(); +exports.$buildXFAObject = $buildXFAObject; +const NamespaceIds = { + config: { + id: 0, + check: ns => ns.startsWith("http://www.xfa.org/schema/xci/") + }, + connectionSet: { + id: 1, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-connection-set/") + }, + datasets: { + id: 2, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-data/") + }, + form: { + id: 3, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-form/") + }, + localeSet: { + id: 4, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-locale-set/") + }, + pdf: { + id: 5, + check: ns => ns === "http://ns.adobe.com/xdp/pdf/" + }, + signature: { + id: 6, + check: ns => ns === "http://www.w3.org/2000/09/xmldsig#" + }, + sourceSet: { + id: 7, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-source-set/") + }, + stylesheet: { + id: 8, + check: ns => ns === "http://www.w3.org/1999/XSL/Transform" + }, + template: { + id: 9, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-template/") + }, + xdc: { + id: 10, + check: ns => ns.startsWith("http://www.xfa.org/schema/xdc/") + }, + xdp: { + id: 11, + check: ns => ns === "http://ns.adobe.com/xdp/" + }, + xfdf: { + id: 12, + check: ns => ns === "http://ns.adobe.com/xfdf/" + }, + xhtml: { + id: 13, + check: ns => ns === "http://www.w3.org/1999/xhtml" + }, + xmpmeta: { + id: 14, + check: ns => ns === "http://ns.adobe.com/xmpmeta/" + } +}; +exports.NamespaceIds = NamespaceIds; + +/***/ }), +/* 205 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createDataNode = createDataNode; +exports.searchNode = searchNode; + +var _xfa_object = __w_pdfjs_require__(202); + +var _namespaces = __w_pdfjs_require__(204); + +var _util = __w_pdfjs_require__(2); + +const namePattern = /^[^.[]+/; +const indexPattern = /^[^\]]+/; +const operators = { + dot: 0, + dotDot: 1, + dotHash: 2, + dotBracket: 3, + dotParen: 4 +}; +const shortcuts = new Map([["$data", (root, current) => root.datasets ? root.datasets.data : root], ["$record", (root, current) => (root.datasets ? root.datasets.data : root)[_xfa_object.$getChildren]()[0]], ["$template", (root, current) => root.template], ["$connectionSet", (root, current) => root.connectionSet], ["$form", (root, current) => root.form], ["$layout", (root, current) => root.layout], ["$host", (root, current) => root.host], ["$dataWindow", (root, current) => root.dataWindow], ["$event", (root, current) => root.event], ["!", (root, current) => root.datasets], ["$xfa", (root, current) => root], ["xfa", (root, current) => root], ["$", (root, current) => current]]); +const somCache = new WeakMap(); +const NS_DATASETS = _namespaces.NamespaceIds.datasets.id; + +function parseIndex(index) { + index = index.trim(); + + if (index === "*") { + return Infinity; + } + + return parseInt(index, 10) || 0; +} + +function parseExpression(expr, dotDotAllowed) { + let noExpr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + let match = expr.match(namePattern); + + if (!match) { + return null; + } + + let [name] = match; + const parsed = [{ + name, + cacheName: "." + name, + index: 0, + js: null, + formCalc: null, + operator: operators.dot + }]; + let pos = name.length; + + while (pos < expr.length) { + const spos = pos; + const char = expr.charAt(pos++); + + if (char === "[") { + match = expr.slice(pos).match(indexPattern); + + if (!match) { + (0, _util.warn)("XFA - Invalid index in SOM expression"); + return null; + } + + parsed.at(-1).index = parseIndex(match[0]); + pos += match[0].length + 1; + continue; + } + + let operator; + + switch (expr.charAt(pos)) { + case ".": + if (!dotDotAllowed) { + return null; + } + + pos++; + operator = operators.dotDot; + break; + + case "#": + pos++; + operator = operators.dotHash; + break; + + case "[": + if (noExpr) { + (0, _util.warn)("XFA - SOM expression contains a FormCalc subexpression which is not supported for now."); + return null; + } + + operator = operators.dotBracket; + break; + + case "(": + if (noExpr) { + (0, _util.warn)("XFA - SOM expression contains a JavaScript subexpression which is not supported for now."); + return null; + } + + operator = operators.dotParen; + break; + + default: + operator = operators.dot; + break; + } + + match = expr.slice(pos).match(namePattern); + + if (!match) { + break; + } + + [name] = match; + pos += name.length; + parsed.push({ + name, + cacheName: expr.slice(spos, pos), + operator, + index: 0, + js: null, + formCalc: null + }); + } + + return parsed; +} + +function searchNode(root, container, expr) { + let dotDotAllowed = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + let useCache = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + const parsed = parseExpression(expr, dotDotAllowed); + + if (!parsed) { + return null; + } + + const fn = shortcuts.get(parsed[0].name); + let i = 0; + let isQualified; + + if (fn) { + isQualified = true; + root = [fn(root, container)]; + i = 1; + } else { + isQualified = container === null; + root = [container || root]; + } + + for (let ii = parsed.length; i < ii; i++) { + const { + name, + cacheName, + operator, + index + } = parsed[i]; + const nodes = []; + + for (const node of root) { + if (!(node instanceof _xfa_object.XFAObject)) { + continue; + } + + let children, cached; + + if (useCache) { + cached = somCache.get(node); + + if (!cached) { + cached = new Map(); + somCache.set(node, cached); + } + + children = cached.get(cacheName); + } + + if (!children) { + switch (operator) { + case operators.dot: + children = node[_xfa_object.$getChildrenByName](name, false); + break; + + case operators.dotDot: + children = node[_xfa_object.$getChildrenByName](name, true); + break; + + case operators.dotHash: + children = node[_xfa_object.$getChildrenByClass](name); + + if (children instanceof _xfa_object.XFAObjectArray) { + children = children.children; + } else { + children = [children]; + } + + break; + + default: + break; + } + + if (useCache) { + cached.set(cacheName, children); + } + } + + if (children.length > 0) { + nodes.push(children); + } + } + + if (nodes.length === 0 && !isQualified && i === 0) { + const parent = container[_xfa_object.$getParent](); + + container = parent; + + if (!container) { + return null; + } + + i = -1; + root = [container]; + continue; + } + + if (isFinite(index)) { + root = nodes.filter(node => index < node.length).map(node => node[index]); + } else { + root = nodes.flat(); + } + } + + if (root.length === 0) { + return null; + } + + return root; +} + +function createNodes(root, path) { + let node = null; + + for (const { + name, + index + } of path) { + for (let i = 0, ii = !isFinite(index) ? 0 : index; i <= ii; i++) { + const nsId = root[_xfa_object.$namespaceId] === NS_DATASETS ? -1 : root[_xfa_object.$namespaceId]; + node = new _xfa_object.XmlObject(nsId, name); + + root[_xfa_object.$appendChild](node); + } + + root = node; + } + + return node; +} + +function createDataNode(root, container, expr) { + const parsed = parseExpression(expr); + + if (!parsed) { + return null; + } + + if (parsed.some(x => x.operator === operators.dotDot)) { + return null; + } + + const fn = shortcuts.get(parsed[0].name); + let i = 0; + + if (fn) { + root = fn(root, container); + i = 1; + } else { + root = container || root; + } + + for (let ii = parsed.length; i < ii; i++) { + const { + name, + operator, + index + } = parsed[i]; + + if (!isFinite(index)) { + parsed[i].index = 0; + return createNodes(root, parsed.slice(i)); + } + + let children; + + switch (operator) { + case operators.dot: + children = root[_xfa_object.$getChildrenByName](name, false); + break; + + case operators.dotDot: + children = root[_xfa_object.$getChildrenByName](name, true); + break; + + case operators.dotHash: + children = root[_xfa_object.$getChildrenByClass](name); + + if (children instanceof _xfa_object.XFAObjectArray) { + children = children.children; + } else { + children = [children]; + } + + break; + + default: + break; + } + + if (children.length === 0) { + return createNodes(root, parsed.slice(i)); + } + + if (index < children.length) { + const child = children[index]; + + if (!(child instanceof _xfa_object.XFAObject)) { + (0, _util.warn)(`XFA - Cannot create a node.`); + return null; + } + + root = child; + } else { + parsed[i].index = index - children.length; + return createNodes(root, parsed.slice(i)); + } + } + + return null; +} + +/***/ }), +/* 206 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Binder = void 0; + +var _xfa_object = __w_pdfjs_require__(202); + +var _template = __w_pdfjs_require__(207); + +var _som = __w_pdfjs_require__(205); + +var _namespaces = __w_pdfjs_require__(204); + +var _util = __w_pdfjs_require__(2); + +const NS_DATASETS = _namespaces.NamespaceIds.datasets.id; + +function createText(content) { + const node = new _template.Text({}); + node[_xfa_object.$content] = content; + return node; +} + +class Binder { + constructor(root) { + this.root = root; + this.datasets = root.datasets; + + if (root.datasets && root.datasets.data) { + this.data = root.datasets.data; + } else { + this.data = new _xfa_object.XmlObject(_namespaces.NamespaceIds.datasets.id, "data"); + } + + this.emptyMerge = this.data[_xfa_object.$getChildren]().length === 0; + this.root.form = this.form = root.template[_xfa_object.$clone](); + } + + _isConsumeData() { + return !this.emptyMerge && this._mergeMode; + } + + _isMatchTemplate() { + return !this._isConsumeData(); + } + + bind() { + this._bindElement(this.form, this.data); + + return this.form; + } + + getData() { + return this.data; + } + + _bindValue(formNode, data, picture) { + formNode[_xfa_object.$data] = data; + + if (formNode[_xfa_object.$hasSettableValue]()) { + if (data[_xfa_object.$isDataValue]()) { + const value = data[_xfa_object.$getDataValue](); + + formNode[_xfa_object.$setValue](createText(value)); + } else if (formNode instanceof _template.Field && formNode.ui && formNode.ui.choiceList && formNode.ui.choiceList.open === "multiSelect") { + const value = data[_xfa_object.$getChildren]().map(child => child[_xfa_object.$content].trim()).join("\n"); + + formNode[_xfa_object.$setValue](createText(value)); + } else if (this._isConsumeData()) { + (0, _util.warn)(`XFA - Nodes haven't the same type.`); + } + } else if (!data[_xfa_object.$isDataValue]() || this._isMatchTemplate()) { + this._bindElement(formNode, data); + } else { + (0, _util.warn)(`XFA - Nodes haven't the same type.`); + } + } + + _findDataByNameToConsume(name, isValue, dataNode, global) { + if (!name) { + return null; + } + + let generator, match; + + for (let i = 0; i < 3; i++) { + generator = dataNode[_xfa_object.$getRealChildrenByNameIt](name, false, true); + + while (true) { + match = generator.next().value; + + if (!match) { + break; + } + + if (isValue === match[_xfa_object.$isDataValue]()) { + return match; + } + } + + if (dataNode[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.datasets.id && dataNode[_xfa_object.$nodeName] === "data") { + break; + } + + dataNode = dataNode[_xfa_object.$getParent](); + } + + if (!global) { + return null; + } + + generator = this.data[_xfa_object.$getRealChildrenByNameIt](name, true, false); + match = generator.next().value; + + if (match) { + return match; + } + + generator = this.data[_xfa_object.$getAttributeIt](name, true); + match = generator.next().value; + + if (match && match[_xfa_object.$isDataValue]()) { + return match; + } + + return null; + } + + _setProperties(formNode, dataNode) { + if (!formNode.hasOwnProperty("setProperty")) { + return; + } + + for (const { + ref, + target, + connection + } of formNode.setProperty.children) { + if (connection) { + continue; + } + + if (!ref) { + continue; + } + + const nodes = (0, _som.searchNode)(this.root, dataNode, ref, false, false); + + if (!nodes) { + (0, _util.warn)(`XFA - Invalid reference: ${ref}.`); + continue; + } + + const [node] = nodes; + + if (!node[_xfa_object.$isDescendent](this.data)) { + (0, _util.warn)(`XFA - Invalid node: must be a data node.`); + continue; + } + + const targetNodes = (0, _som.searchNode)(this.root, formNode, target, false, false); + + if (!targetNodes) { + (0, _util.warn)(`XFA - Invalid target: ${target}.`); + continue; + } + + const [targetNode] = targetNodes; + + if (!targetNode[_xfa_object.$isDescendent](formNode)) { + (0, _util.warn)(`XFA - Invalid target: must be a property or subproperty.`); + continue; + } + + const targetParent = targetNode[_xfa_object.$getParent](); + + if (targetNode instanceof _template.SetProperty || targetParent instanceof _template.SetProperty) { + (0, _util.warn)(`XFA - Invalid target: cannot be a setProperty or one of its properties.`); + continue; + } + + if (targetNode instanceof _template.BindItems || targetParent instanceof _template.BindItems) { + (0, _util.warn)(`XFA - Invalid target: cannot be a bindItems or one of its properties.`); + continue; + } + + const content = node[_xfa_object.$text](); + + const name = targetNode[_xfa_object.$nodeName]; + + if (targetNode instanceof _xfa_object.XFAAttribute) { + const attrs = Object.create(null); + attrs[name] = content; + const obj = Reflect.construct(Object.getPrototypeOf(targetParent).constructor, [attrs]); + targetParent[name] = obj[name]; + continue; + } + + if (!targetNode.hasOwnProperty(_xfa_object.$content)) { + (0, _util.warn)(`XFA - Invalid node to use in setProperty`); + continue; + } + + targetNode[_xfa_object.$data] = node; + targetNode[_xfa_object.$content] = content; + + targetNode[_xfa_object.$finalize](); + } + } + + _bindItems(formNode, dataNode) { + if (!formNode.hasOwnProperty("items") || !formNode.hasOwnProperty("bindItems") || formNode.bindItems.isEmpty()) { + return; + } + + for (const item of formNode.items.children) { + formNode[_xfa_object.$removeChild](item); + } + + formNode.items.clear(); + const labels = new _template.Items({}); + const values = new _template.Items({}); + + formNode[_xfa_object.$appendChild](labels); + + formNode.items.push(labels); + + formNode[_xfa_object.$appendChild](values); + + formNode.items.push(values); + + for (const { + ref, + labelRef, + valueRef, + connection + } of formNode.bindItems.children) { + if (connection) { + continue; + } + + if (!ref) { + continue; + } + + const nodes = (0, _som.searchNode)(this.root, dataNode, ref, false, false); + + if (!nodes) { + (0, _util.warn)(`XFA - Invalid reference: ${ref}.`); + continue; + } + + for (const node of nodes) { + if (!node[_xfa_object.$isDescendent](this.datasets)) { + (0, _util.warn)(`XFA - Invalid ref (${ref}): must be a datasets child.`); + continue; + } + + const labelNodes = (0, _som.searchNode)(this.root, node, labelRef, true, false); + + if (!labelNodes) { + (0, _util.warn)(`XFA - Invalid label: ${labelRef}.`); + continue; + } + + const [labelNode] = labelNodes; + + if (!labelNode[_xfa_object.$isDescendent](this.datasets)) { + (0, _util.warn)(`XFA - Invalid label: must be a datasets child.`); + continue; + } + + const valueNodes = (0, _som.searchNode)(this.root, node, valueRef, true, false); + + if (!valueNodes) { + (0, _util.warn)(`XFA - Invalid value: ${valueRef}.`); + continue; + } + + const [valueNode] = valueNodes; + + if (!valueNode[_xfa_object.$isDescendent](this.datasets)) { + (0, _util.warn)(`XFA - Invalid value: must be a datasets child.`); + continue; + } + + const label = createText(labelNode[_xfa_object.$text]()); + const value = createText(valueNode[_xfa_object.$text]()); + + labels[_xfa_object.$appendChild](label); + + labels.text.push(label); + + values[_xfa_object.$appendChild](value); + + values.text.push(value); + } + } + } + + _bindOccurrences(formNode, matches, picture) { + let baseClone; + + if (matches.length > 1) { + baseClone = formNode[_xfa_object.$clone](); + + baseClone[_xfa_object.$removeChild](baseClone.occur); + + baseClone.occur = null; + } + + this._bindValue(formNode, matches[0], picture); + + this._setProperties(formNode, matches[0]); + + this._bindItems(formNode, matches[0]); + + if (matches.length === 1) { + return; + } + + const parent = formNode[_xfa_object.$getParent](); + + const name = formNode[_xfa_object.$nodeName]; + + const pos = parent[_xfa_object.$indexOf](formNode); + + for (let i = 1, ii = matches.length; i < ii; i++) { + const match = matches[i]; + + const clone = baseClone[_xfa_object.$clone](); + + parent[name].push(clone); + + parent[_xfa_object.$insertAt](pos + i, clone); + + this._bindValue(clone, match, picture); + + this._setProperties(clone, match); + + this._bindItems(clone, match); + } + } + + _createOccurrences(formNode) { + if (!this.emptyMerge) { + return; + } + + const { + occur + } = formNode; + + if (!occur || occur.initial <= 1) { + return; + } + + const parent = formNode[_xfa_object.$getParent](); + + const name = formNode[_xfa_object.$nodeName]; + + if (!(parent[name] instanceof _xfa_object.XFAObjectArray)) { + return; + } + + let currentNumber; + + if (formNode.name) { + currentNumber = parent[name].children.filter(e => e.name === formNode.name).length; + } else { + currentNumber = parent[name].children.length; + } + + const pos = parent[_xfa_object.$indexOf](formNode) + 1; + const ii = occur.initial - currentNumber; + + if (ii) { + const nodeClone = formNode[_xfa_object.$clone](); + + nodeClone[_xfa_object.$removeChild](nodeClone.occur); + + nodeClone.occur = null; + parent[name].push(nodeClone); + + parent[_xfa_object.$insertAt](pos, nodeClone); + + for (let i = 1; i < ii; i++) { + const clone = nodeClone[_xfa_object.$clone](); + + parent[name].push(clone); + + parent[_xfa_object.$insertAt](pos + i, clone); + } + } + } + + _getOccurInfo(formNode) { + const { + name, + occur + } = formNode; + + if (!occur || !name) { + return [1, 1]; + } + + const max = occur.max === -1 ? Infinity : occur.max; + return [occur.min, max]; + } + + _setAndBind(formNode, dataNode) { + this._setProperties(formNode, dataNode); + + this._bindItems(formNode, dataNode); + + this._bindElement(formNode, dataNode); + } + + _bindElement(formNode, dataNode) { + const uselessNodes = []; + + this._createOccurrences(formNode); + + for (const child of formNode[_xfa_object.$getChildren]()) { + if (child[_xfa_object.$data]) { + continue; + } + + if (this._mergeMode === undefined && child[_xfa_object.$nodeName] === "subform") { + this._mergeMode = child.mergeMode === "consumeData"; + + const dataChildren = dataNode[_xfa_object.$getChildren](); + + if (dataChildren.length > 0) { + this._bindOccurrences(child, [dataChildren[0]], null); + } else if (this.emptyMerge) { + const nsId = dataNode[_xfa_object.$namespaceId] === NS_DATASETS ? -1 : dataNode[_xfa_object.$namespaceId]; + const dataChild = child[_xfa_object.$data] = new _xfa_object.XmlObject(nsId, child.name || "root"); + + dataNode[_xfa_object.$appendChild](dataChild); + + this._bindElement(child, dataChild); + } + + continue; + } + + if (!child[_xfa_object.$isBindable]()) { + continue; + } + + let global = false; + let picture = null; + let ref = null; + let match = null; + + if (child.bind) { + switch (child.bind.match) { + case "none": + this._setAndBind(child, dataNode); + + continue; + + case "global": + global = true; + break; + + case "dataRef": + if (!child.bind.ref) { + (0, _util.warn)(`XFA - ref is empty in node ${child[_xfa_object.$nodeName]}.`); + + this._setAndBind(child, dataNode); + + continue; + } + + ref = child.bind.ref; + break; + + default: + break; + } + + if (child.bind.picture) { + picture = child.bind.picture[_xfa_object.$content]; + } + } + + const [min, max] = this._getOccurInfo(child); + + if (ref) { + match = (0, _som.searchNode)(this.root, dataNode, ref, true, false); + + if (match === null) { + match = (0, _som.createDataNode)(this.data, dataNode, ref); + + if (!match) { + continue; + } + + if (this._isConsumeData()) { + match[_xfa_object.$consumed] = true; + } + + this._setAndBind(child, match); + + continue; + } else { + if (this._isConsumeData()) { + match = match.filter(node => !node[_xfa_object.$consumed]); + } + + if (match.length > max) { + match = match.slice(0, max); + } else if (match.length === 0) { + match = null; + } + + if (match && this._isConsumeData()) { + match.forEach(node => { + node[_xfa_object.$consumed] = true; + }); + } + } + } else { + if (!child.name) { + this._setAndBind(child, dataNode); + + continue; + } + + if (this._isConsumeData()) { + const matches = []; + + while (matches.length < max) { + const found = this._findDataByNameToConsume(child.name, child[_xfa_object.$hasSettableValue](), dataNode, global); + + if (!found) { + break; + } + + found[_xfa_object.$consumed] = true; + matches.push(found); + } + + match = matches.length > 0 ? matches : null; + } else { + match = dataNode[_xfa_object.$getRealChildrenByNameIt](child.name, false, this.emptyMerge).next().value; + + if (!match) { + if (min === 0) { + uselessNodes.push(child); + continue; + } + + const nsId = dataNode[_xfa_object.$namespaceId] === NS_DATASETS ? -1 : dataNode[_xfa_object.$namespaceId]; + match = child[_xfa_object.$data] = new _xfa_object.XmlObject(nsId, child.name); + + if (this.emptyMerge) { + match[_xfa_object.$consumed] = true; + } + + dataNode[_xfa_object.$appendChild](match); + + this._setAndBind(child, match); + + continue; + } + + if (this.emptyMerge) { + match[_xfa_object.$consumed] = true; + } + + match = [match]; + } + } + + if (match) { + this._bindOccurrences(child, match, picture); + } else if (min > 0) { + this._setAndBind(child, dataNode); + } else { + uselessNodes.push(child); + } + } + + uselessNodes.forEach(node => node[_xfa_object.$getParent]()[_xfa_object.$removeChild](node)); + } + +} + +exports.Binder = Binder; + +/***/ }), +/* 207 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Value = exports.Text = exports.TemplateNamespace = exports.Template = exports.SetProperty = exports.Items = exports.Field = exports.BindItems = void 0; + +var _xfa_object = __w_pdfjs_require__(202); + +var _namespaces = __w_pdfjs_require__(204); + +var _layout = __w_pdfjs_require__(208); + +var _html_utils = __w_pdfjs_require__(209); + +var _utils = __w_pdfjs_require__(203); + +var _util = __w_pdfjs_require__(2); + +var _fonts = __w_pdfjs_require__(210); + +var _core_utils = __w_pdfjs_require__(131); + +var _som = __w_pdfjs_require__(205); + +const TEMPLATE_NS_ID = _namespaces.NamespaceIds.template.id; +const SVG_NS = "http://www.w3.org/2000/svg"; +const MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2; +const MAX_EMPTY_PAGES = 3; +const DEFAULT_TAB_INDEX = 5000; +const HEADING_PATTERN = /^H(\d+)$/; +const MIMES = new Set(["image/gif", "image/jpeg", "image/jpg", "image/pjpeg", "image/png", "image/apng", "image/x-png", "image/bmp", "image/x-ms-bmp", "image/tiff", "image/tif", "application/octet-stream"]); +const IMAGES_HEADERS = [[[0x42, 0x4d], "image/bmp"], [[0xff, 0xd8, 0xff], "image/jpeg"], [[0x49, 0x49, 0x2a, 0x00], "image/tiff"], [[0x4d, 0x4d, 0x00, 0x2a], "image/tiff"], [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], "image/gif"], [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], "image/png"]]; + +function getBorderDims(node) { + if (!node || !node.border) { + return { + w: 0, + h: 0 + }; + } + + const borderExtra = node.border[_xfa_object.$getExtra](); + + if (!borderExtra) { + return { + w: 0, + h: 0 + }; + } + + return { + w: borderExtra.widths[0] + borderExtra.widths[2] + borderExtra.insets[0] + borderExtra.insets[2], + h: borderExtra.widths[1] + borderExtra.widths[3] + borderExtra.insets[1] + borderExtra.insets[3] + }; +} + +function hasMargin(node) { + return node.margin && (node.margin.topInset || node.margin.rightInset || node.margin.bottomInset || node.margin.leftInset); +} + +function _setValue(templateNode, value) { + if (!templateNode.value) { + const nodeValue = new Value({}); + + templateNode[_xfa_object.$appendChild](nodeValue); + + templateNode.value = nodeValue; + } + + templateNode.value[_xfa_object.$setValue](value); +} + +function* getContainedChildren(node) { + for (const child of node[_xfa_object.$getChildren]()) { + if (child instanceof SubformSet) { + yield* child[_xfa_object.$getContainedChildren](); + continue; + } + + yield child; + } +} + +function isRequired(node) { + return node.validate && node.validate.nullTest === "error"; +} + +function setTabIndex(node) { + while (node) { + if (!node.traversal) { + node[_xfa_object.$tabIndex] = node[_xfa_object.$getParent]()[_xfa_object.$tabIndex]; + return; + } + + if (node[_xfa_object.$tabIndex]) { + return; + } + + let next = null; + + for (const child of node.traversal[_xfa_object.$getChildren]()) { + if (child.operation === "next") { + next = child; + break; + } + } + + if (!next || !next.ref) { + node[_xfa_object.$tabIndex] = node[_xfa_object.$getParent]()[_xfa_object.$tabIndex]; + return; + } + + const root = node[_xfa_object.$getTemplateRoot](); + + node[_xfa_object.$tabIndex] = ++root[_xfa_object.$tabIndex]; + + const ref = root[_xfa_object.$searchNode](next.ref, node); + + if (!ref) { + return; + } + + node = ref[0]; + } +} + +function applyAssist(obj, attributes) { + const assist = obj.assist; + + if (assist) { + const assistTitle = assist[_xfa_object.$toHTML](); + + if (assistTitle) { + attributes.title = assistTitle; + } + + const role = assist.role; + const match = role.match(HEADING_PATTERN); + + if (match) { + const ariaRole = "heading"; + const ariaLevel = match[1]; + attributes.role = ariaRole; + attributes["aria-level"] = ariaLevel; + } + } + + if (obj.layout === "table") { + attributes.role = "table"; + } else if (obj.layout === "row") { + attributes.role = "row"; + } else { + const parent = obj[_xfa_object.$getParent](); + + if (parent.layout === "row") { + if (parent.assist && parent.assist.role === "TH") { + attributes.role = "columnheader"; + } else { + attributes.role = "cell"; + } + } + } +} + +function ariaLabel(obj) { + if (!obj.assist) { + return null; + } + + const assist = obj.assist; + + if (assist.speak && assist.speak[_xfa_object.$content] !== "") { + return assist.speak[_xfa_object.$content]; + } + + if (assist.toolTip) { + return assist.toolTip[_xfa_object.$content]; + } + + return null; +} + +function valueToHtml(value) { + return _utils.HTMLResult.success({ + name: "div", + attributes: { + class: ["xfaRich"], + style: Object.create(null) + }, + children: [{ + name: "span", + attributes: { + style: Object.create(null) + }, + value + }] + }); +} + +function setFirstUnsplittable(node) { + const root = node[_xfa_object.$getTemplateRoot](); + + if (root[_xfa_object.$extra].firstUnsplittable === null) { + root[_xfa_object.$extra].firstUnsplittable = node; + root[_xfa_object.$extra].noLayoutFailure = true; + } +} + +function unsetFirstUnsplittable(node) { + const root = node[_xfa_object.$getTemplateRoot](); + + if (root[_xfa_object.$extra].firstUnsplittable === node) { + root[_xfa_object.$extra].noLayoutFailure = false; + } +} + +function handleBreak(node) { + if (node[_xfa_object.$extra]) { + return false; + } + + node[_xfa_object.$extra] = Object.create(null); + + if (node.targetType === "auto") { + return false; + } + + const root = node[_xfa_object.$getTemplateRoot](); + + let target = null; + + if (node.target) { + target = root[_xfa_object.$searchNode](node.target, node[_xfa_object.$getParent]()); + + if (!target) { + return false; + } + + target = target[0]; + } + + const { + currentPageArea, + currentContentArea + } = root[_xfa_object.$extra]; + + if (node.targetType === "pageArea") { + if (!(target instanceof PageArea)) { + target = null; + } + + if (node.startNew) { + node[_xfa_object.$extra].target = target || currentPageArea; + return true; + } else if (target && target !== currentPageArea) { + node[_xfa_object.$extra].target = target; + return true; + } + + return false; + } + + if (!(target instanceof ContentArea)) { + target = null; + } + + const pageArea = target && target[_xfa_object.$getParent](); + + let index; + let nextPageArea = pageArea; + + if (node.startNew) { + if (target) { + const contentAreas = pageArea.contentArea.children; + const indexForCurrent = contentAreas.indexOf(currentContentArea); + const indexForTarget = contentAreas.indexOf(target); + + if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) { + nextPageArea = null; + } + + index = indexForTarget - 1; + } else { + index = currentPageArea.contentArea.children.indexOf(currentContentArea); + } + } else if (target && target !== currentContentArea) { + const contentAreas = pageArea.contentArea.children; + index = contentAreas.indexOf(target) - 1; + nextPageArea = pageArea === currentPageArea ? null : pageArea; + } else { + return false; + } + + node[_xfa_object.$extra].target = nextPageArea; + node[_xfa_object.$extra].index = index; + return true; +} + +function handleOverflow(node, extraNode, space) { + const root = node[_xfa_object.$getTemplateRoot](); + + const saved = root[_xfa_object.$extra].noLayoutFailure; + const savedMethod = extraNode[_xfa_object.$getSubformParent]; + + extraNode[_xfa_object.$getSubformParent] = () => node; + + root[_xfa_object.$extra].noLayoutFailure = true; + + const res = extraNode[_xfa_object.$toHTML](space); + + node[_xfa_object.$addHTML](res.html, res.bbox); + + root[_xfa_object.$extra].noLayoutFailure = saved; + extraNode[_xfa_object.$getSubformParent] = savedMethod; +} + +class AppearanceFilter extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "appearanceFilter"); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Arc extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "arc", true); + this.circular = (0, _utils.getInteger)({ + data: attributes.circular, + defaultValue: 0, + validate: x => x === 1 + }); + this.hand = (0, _utils.getStringOption)(attributes.hand, ["even", "left", "right"]); + this.id = attributes.id || ""; + this.startAngle = (0, _utils.getFloat)({ + data: attributes.startAngle, + defaultValue: 0, + validate: x => true + }); + this.sweepAngle = (0, _utils.getFloat)({ + data: attributes.sweepAngle, + defaultValue: 360, + validate: x => true + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.edge = null; + this.fill = null; + } + + [_xfa_object.$toHTML]() { + const edge = this.edge || new Edge({}); + + const edgeStyle = edge[_xfa_object.$toStyle](); + + const style = Object.create(null); + + if (this.fill && this.fill.presence === "visible") { + Object.assign(style, this.fill[_xfa_object.$toStyle]()); + } else { + style.fill = "transparent"; + } + + style.strokeWidth = (0, _html_utils.measureToString)(edge.presence === "visible" ? edge.thickness : 0); + style.stroke = edgeStyle.color; + let arc; + const attributes = { + xmlns: SVG_NS, + style: { + width: "100%", + height: "100%", + overflow: "visible" + } + }; + + if (this.sweepAngle === 360) { + arc = { + name: "ellipse", + attributes: { + xmlns: SVG_NS, + cx: "50%", + cy: "50%", + rx: "50%", + ry: "50%", + style + } + }; + } else { + const startAngle = this.startAngle * Math.PI / 180; + const sweepAngle = this.sweepAngle * Math.PI / 180; + const largeArc = this.sweepAngle > 180 ? 1 : 0; + const [x1, y1, x2, y2] = [50 * (1 + Math.cos(startAngle)), 50 * (1 - Math.sin(startAngle)), 50 * (1 + Math.cos(startAngle + sweepAngle)), 50 * (1 - Math.sin(startAngle + sweepAngle))]; + arc = { + name: "path", + attributes: { + xmlns: SVG_NS, + d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`, + vectorEffect: "non-scaling-stroke", + style + } + }; + Object.assign(attributes, { + viewBox: "0 0 100 100", + preserveAspectRatio: "none" + }); + } + + const svg = { + name: "svg", + children: [arc], + attributes + }; + + const parent = this[_xfa_object.$getParent]()[_xfa_object.$getParent](); + + if (hasMargin(parent)) { + return _utils.HTMLResult.success({ + name: "div", + attributes: { + style: { + display: "inline", + width: "100%", + height: "100%" + } + }, + children: [svg] + }); + } + + svg.attributes.style.position = "absolute"; + return _utils.HTMLResult.success(svg); + } + +} + +class Area extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "area", true); + this.colSpan = (0, _utils.getInteger)({ + data: attributes.colSpan, + defaultValue: 1, + validate: n => n >= 1 || n === -1 + }); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); + this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); + this.desc = null; + this.extras = null; + this.area = new _xfa_object.XFAObjectArray(); + this.draw = new _xfa_object.XFAObjectArray(); + this.exObject = new _xfa_object.XFAObjectArray(); + this.exclGroup = new _xfa_object.XFAObjectArray(); + this.field = new _xfa_object.XFAObjectArray(); + this.subform = new _xfa_object.XFAObjectArray(); + this.subformSet = new _xfa_object.XFAObjectArray(); + } + + *[_xfa_object.$getContainedChildren]() { + yield* getContainedChildren(this); + } + + [_xfa_object.$isTransparent]() { + return true; + } + + [_xfa_object.$isBindable]() { + return true; + } + + [_xfa_object.$addHTML](html, bbox) { + const [x, y, w, h] = bbox; + this[_xfa_object.$extra].width = Math.max(this[_xfa_object.$extra].width, x + w); + this[_xfa_object.$extra].height = Math.max(this[_xfa_object.$extra].height, y + h); + + this[_xfa_object.$extra].children.push(html); + } + + [_xfa_object.$getAvailableSpace]() { + return this[_xfa_object.$extra].availableSpace; + } + + [_xfa_object.$toHTML](availableSpace) { + const style = (0, _html_utils.toStyle)(this, "position"); + const attributes = { + style, + id: this[_xfa_object.$uid], + class: ["xfaArea"] + }; + + if ((0, _html_utils.isPrintOnly)(this)) { + attributes.class.push("xfaPrintOnly"); + } + + if (this.name) { + attributes.xfaName = this.name; + } + + const children = []; + this[_xfa_object.$extra] = { + children, + width: 0, + height: 0, + availableSpace + }; + + const result = this[_xfa_object.$childrenToHTML]({ + filter: new Set(["area", "draw", "field", "exclGroup", "subform", "subformSet"]), + include: true + }); + + if (!result.success) { + if (result.isBreak()) { + return result; + } + + delete this[_xfa_object.$extra]; + return _utils.HTMLResult.FAILURE; + } + + style.width = (0, _html_utils.measureToString)(this[_xfa_object.$extra].width); + style.height = (0, _html_utils.measureToString)(this[_xfa_object.$extra].height); + const html = { + name: "div", + attributes, + children + }; + const bbox = [this.x, this.y, this[_xfa_object.$extra].width, this[_xfa_object.$extra].height]; + delete this[_xfa_object.$extra]; + return _utils.HTMLResult.success(html, bbox); + } + +} + +class Assist extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "assist", true); + this.id = attributes.id || ""; + this.role = attributes.role || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.speak = null; + this.toolTip = null; + } + + [_xfa_object.$toHTML]() { + return this.toolTip && this.toolTip[_xfa_object.$content] ? this.toolTip[_xfa_object.$content] : null; + } + +} + +class Barcode extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "barcode", true); + this.charEncoding = (0, _utils.getKeyword)({ + data: attributes.charEncoding ? attributes.charEncoding.toLowerCase() : "", + defaultValue: "", + validate: k => ["utf-8", "big-five", "fontspecific", "gbk", "gb-18030", "gb-2312", "ksc-5601", "none", "shift-jis", "ucs-2", "utf-16"].includes(k) || k.match(/iso-8859-\d{2}/) + }); + this.checksum = (0, _utils.getStringOption)(attributes.checksum, ["none", "1mod10", "1mod10_1mod11", "2mod10", "auto"]); + this.dataColumnCount = (0, _utils.getInteger)({ + data: attributes.dataColumnCount, + defaultValue: -1, + validate: x => x >= 0 + }); + this.dataLength = (0, _utils.getInteger)({ + data: attributes.dataLength, + defaultValue: -1, + validate: x => x >= 0 + }); + this.dataPrep = (0, _utils.getStringOption)(attributes.dataPrep, ["none", "flateCompress"]); + this.dataRowCount = (0, _utils.getInteger)({ + data: attributes.dataRowCount, + defaultValue: -1, + validate: x => x >= 0 + }); + this.endChar = attributes.endChar || ""; + this.errorCorrectionLevel = (0, _utils.getInteger)({ + data: attributes.errorCorrectionLevel, + defaultValue: -1, + validate: x => x >= 0 && x <= 8 + }); + this.id = attributes.id || ""; + this.moduleHeight = (0, _utils.getMeasurement)(attributes.moduleHeight, "5mm"); + this.moduleWidth = (0, _utils.getMeasurement)(attributes.moduleWidth, "0.25mm"); + this.printCheckDigit = (0, _utils.getInteger)({ + data: attributes.printCheckDigit, + defaultValue: 0, + validate: x => x === 1 + }); + this.rowColumnRatio = (0, _utils.getRatio)(attributes.rowColumnRatio); + this.startChar = attributes.startChar || ""; + this.textLocation = (0, _utils.getStringOption)(attributes.textLocation, ["below", "above", "aboveEmbedded", "belowEmbedded", "none"]); + this.truncate = (0, _utils.getInteger)({ + data: attributes.truncate, + defaultValue: 0, + validate: x => x === 1 + }); + this.type = (0, _utils.getStringOption)(attributes.type ? attributes.type.toLowerCase() : "", ["aztec", "codabar", "code2of5industrial", "code2of5interleaved", "code2of5matrix", "code2of5standard", "code3of9", "code3of9extended", "code11", "code49", "code93", "code128", "code128a", "code128b", "code128c", "code128sscc", "datamatrix", "ean8", "ean8add2", "ean8add5", "ean13", "ean13add2", "ean13add5", "ean13pwcd", "fim", "logmars", "maxicode", "msi", "pdf417", "pdf417macro", "plessey", "postauscust2", "postauscust3", "postausreplypaid", "postausstandard", "postukrm4scc", "postusdpbc", "postusimb", "postusstandard", "postus5zip", "qrcode", "rfid", "rss14", "rss14expanded", "rss14limited", "rss14stacked", "rss14stackedomni", "rss14truncated", "telepen", "ucc128", "ucc128random", "ucc128sscc", "upca", "upcaadd2", "upcaadd5", "upcapwcd", "upce", "upceadd2", "upceadd5", "upcean2", "upcean5", "upsmaxicode"]); + this.upsMode = (0, _utils.getStringOption)(attributes.upsMode, ["usCarrier", "internationalCarrier", "secureSymbol", "standardSymbol"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.wideNarrowRatio = (0, _utils.getRatio)(attributes.wideNarrowRatio); + this.encrypt = null; + this.extras = null; + } + +} + +class Bind extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "bind", true); + this.match = (0, _utils.getStringOption)(attributes.match, ["once", "dataRef", "global", "none"]); + this.ref = attributes.ref || ""; + this.picture = null; + } + +} + +class BindItems extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "bindItems"); + this.connection = attributes.connection || ""; + this.labelRef = attributes.labelRef || ""; + this.ref = attributes.ref || ""; + this.valueRef = attributes.valueRef || ""; + } + +} + +exports.BindItems = BindItems; + +class Bookend extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "bookend"); + this.id = attributes.id || ""; + this.leader = attributes.leader || ""; + this.trailer = attributes.trailer || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class BooleanElement extends _xfa_object.Option01 { + constructor(attributes) { + super(TEMPLATE_NS_ID, "boolean"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + + [_xfa_object.$toHTML](availableSpace) { + return valueToHtml(this[_xfa_object.$content] === 1 ? "1" : "0"); + } + +} + +class Border extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "border", true); + this.break = (0, _utils.getStringOption)(attributes.break, ["close", "open"]); + this.hand = (0, _utils.getStringOption)(attributes.hand, ["even", "left", "right"]); + this.id = attributes.id || ""; + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.corner = new _xfa_object.XFAObjectArray(4); + this.edge = new _xfa_object.XFAObjectArray(4); + this.extras = null; + this.fill = null; + this.margin = null; + } + + [_xfa_object.$getExtra]() { + if (!this[_xfa_object.$extra]) { + const edges = this.edge.children.slice(); + + if (edges.length < 4) { + const defaultEdge = edges.at(-1) || new Edge({}); + + for (let i = edges.length; i < 4; i++) { + edges.push(defaultEdge); + } + } + + const widths = edges.map(edge => edge.thickness); + const insets = [0, 0, 0, 0]; + + if (this.margin) { + insets[0] = this.margin.topInset; + insets[1] = this.margin.rightInset; + insets[2] = this.margin.bottomInset; + insets[3] = this.margin.leftInset; + } + + this[_xfa_object.$extra] = { + widths, + insets, + edges + }; + } + + return this[_xfa_object.$extra]; + } + + [_xfa_object.$toStyle]() { + const { + edges + } = this[_xfa_object.$getExtra](); + + const edgeStyles = edges.map(node => { + const style = node[_xfa_object.$toStyle](); + + style.color = style.color || "#000000"; + return style; + }); + const style = Object.create(null); + + if (this.margin) { + Object.assign(style, this.margin[_xfa_object.$toStyle]()); + } + + if (this.fill && this.fill.presence === "visible") { + Object.assign(style, this.fill[_xfa_object.$toStyle]()); + } + + if (this.corner.children.some(node => node.radius !== 0)) { + const cornerStyles = this.corner.children.map(node => node[_xfa_object.$toStyle]()); + + if (cornerStyles.length === 2 || cornerStyles.length === 3) { + const last = cornerStyles.at(-1); + + for (let i = cornerStyles.length; i < 4; i++) { + cornerStyles.push(last); + } + } + + style.borderRadius = cornerStyles.map(s => s.radius).join(" "); + } + + switch (this.presence) { + case "invisible": + case "hidden": + style.borderStyle = ""; + break; + + case "inactive": + style.borderStyle = "none"; + break; + + default: + style.borderStyle = edgeStyles.map(s => s.style).join(" "); + break; + } + + style.borderWidth = edgeStyles.map(s => s.width).join(" "); + style.borderColor = edgeStyles.map(s => s.color).join(" "); + return style; + } + +} + +class Break extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "break", true); + this.after = (0, _utils.getStringOption)(attributes.after, ["auto", "contentArea", "pageArea", "pageEven", "pageOdd"]); + this.afterTarget = attributes.afterTarget || ""; + this.before = (0, _utils.getStringOption)(attributes.before, ["auto", "contentArea", "pageArea", "pageEven", "pageOdd"]); + this.beforeTarget = attributes.beforeTarget || ""; + this.bookendLeader = attributes.bookendLeader || ""; + this.bookendTrailer = attributes.bookendTrailer || ""; + this.id = attributes.id || ""; + this.overflowLeader = attributes.overflowLeader || ""; + this.overflowTarget = attributes.overflowTarget || ""; + this.overflowTrailer = attributes.overflowTrailer || ""; + this.startNew = (0, _utils.getInteger)({ + data: attributes.startNew, + defaultValue: 0, + validate: x => x === 1 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } + +} + +class BreakAfter extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "breakAfter", true); + this.id = attributes.id || ""; + this.leader = attributes.leader || ""; + this.startNew = (0, _utils.getInteger)({ + data: attributes.startNew, + defaultValue: 0, + validate: x => x === 1 + }); + this.target = attributes.target || ""; + this.targetType = (0, _utils.getStringOption)(attributes.targetType, ["auto", "contentArea", "pageArea"]); + this.trailer = attributes.trailer || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.script = null; + } + +} + +class BreakBefore extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "breakBefore", true); + this.id = attributes.id || ""; + this.leader = attributes.leader || ""; + this.startNew = (0, _utils.getInteger)({ + data: attributes.startNew, + defaultValue: 0, + validate: x => x === 1 + }); + this.target = attributes.target || ""; + this.targetType = (0, _utils.getStringOption)(attributes.targetType, ["auto", "contentArea", "pageArea"]); + this.trailer = attributes.trailer || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.script = null; + } + + [_xfa_object.$toHTML](availableSpace) { + this[_xfa_object.$extra] = {}; + return _utils.HTMLResult.FAILURE; + } + +} + +class Button extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "button", true); + this.highlight = (0, _utils.getStringOption)(attributes.highlight, ["inverted", "none", "outline", "push"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } + + [_xfa_object.$toHTML](availableSpace) { + const parent = this[_xfa_object.$getParent](); + + const grandpa = parent[_xfa_object.$getParent](); + + const htmlButton = { + name: "button", + attributes: { + id: this[_xfa_object.$uid], + class: ["xfaButton"], + style: {} + }, + children: [] + }; + + for (const event of grandpa.event.children) { + if (event.activity !== "click" || !event.script) { + continue; + } + + const jsURL = (0, _core_utils.recoverJsURL)(event.script[_xfa_object.$content]); + + if (!jsURL) { + continue; + } + + const href = (0, _html_utils.fixURL)(jsURL.url); + + if (!href) { + continue; + } + + htmlButton.children.push({ + name: "a", + attributes: { + id: "link" + this[_xfa_object.$uid], + href, + newWindow: jsURL.newWindow, + class: ["xfaLink"], + style: {} + }, + children: [] + }); + } + + return _utils.HTMLResult.success(htmlButton); + } + +} + +class Calculate extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "calculate", true); + this.id = attributes.id || ""; + this.override = (0, _utils.getStringOption)(attributes.override, ["disabled", "error", "ignore", "warning"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.message = null; + this.script = null; + } + +} + +class Caption extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "caption", true); + this.id = attributes.id || ""; + this.placement = (0, _utils.getStringOption)(attributes.placement, ["left", "bottom", "inline", "right", "top"]); + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.reserve = Math.ceil((0, _utils.getMeasurement)(attributes.reserve)); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.font = null; + this.margin = null; + this.para = null; + this.value = null; + } + + [_xfa_object.$setValue](value) { + _setValue(this, value); + } + + [_xfa_object.$getExtra](availableSpace) { + if (!this[_xfa_object.$extra]) { + let { + width, + height + } = availableSpace; + + switch (this.placement) { + case "left": + case "right": + case "inline": + width = this.reserve <= 0 ? width : this.reserve; + break; + + case "top": + case "bottom": + height = this.reserve <= 0 ? height : this.reserve; + break; + } + + this[_xfa_object.$extra] = (0, _html_utils.layoutNode)(this, { + width, + height + }); + } + + return this[_xfa_object.$extra]; + } + + [_xfa_object.$toHTML](availableSpace) { + if (!this.value) { + return _utils.HTMLResult.EMPTY; + } + + this[_xfa_object.$pushPara](); + + const value = this.value[_xfa_object.$toHTML](availableSpace).html; + + if (!value) { + this[_xfa_object.$popPara](); + + return _utils.HTMLResult.EMPTY; + } + + const savedReserve = this.reserve; + + if (this.reserve <= 0) { + const { + w, + h + } = this[_xfa_object.$getExtra](availableSpace); + + switch (this.placement) { + case "left": + case "right": + case "inline": + this.reserve = w; + break; + + case "top": + case "bottom": + this.reserve = h; + break; + } + } + + const children = []; + + if (typeof value === "string") { + children.push({ + name: "#text", + value + }); + } else { + children.push(value); + } + + const style = (0, _html_utils.toStyle)(this, "font", "margin", "visibility"); + + switch (this.placement) { + case "left": + case "right": + if (this.reserve > 0) { + style.width = (0, _html_utils.measureToString)(this.reserve); + } + + break; + + case "top": + case "bottom": + if (this.reserve > 0) { + style.height = (0, _html_utils.measureToString)(this.reserve); + } + + break; + } + + (0, _html_utils.setPara)(this, null, value); + + this[_xfa_object.$popPara](); + + this.reserve = savedReserve; + return _utils.HTMLResult.success({ + name: "div", + attributes: { + style, + class: ["xfaCaption"] + }, + children + }); + } + +} + +class Certificate extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "certificate"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Certificates extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "certificates", true); + this.credentialServerPolicy = (0, _utils.getStringOption)(attributes.credentialServerPolicy, ["optional", "required"]); + this.id = attributes.id || ""; + this.url = attributes.url || ""; + this.urlPolicy = attributes.urlPolicy || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.encryption = null; + this.issuers = null; + this.keyUsage = null; + this.oids = null; + this.signing = null; + this.subjectDNs = null; + } + +} + +class CheckButton extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "checkButton", true); + this.id = attributes.id || ""; + this.mark = (0, _utils.getStringOption)(attributes.mark, ["default", "check", "circle", "cross", "diamond", "square", "star"]); + this.shape = (0, _utils.getStringOption)(attributes.shape, ["square", "round"]); + this.size = (0, _utils.getMeasurement)(attributes.size, "10pt"); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.extras = null; + this.margin = null; + } + + [_xfa_object.$toHTML](availableSpace) { + const style = (0, _html_utils.toStyle)("margin"); + const size = (0, _html_utils.measureToString)(this.size); + style.width = style.height = size; + let type; + let className; + let groupId; + + const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent](); + + const items = field.items.children.length && field.items.children[0][_xfa_object.$toHTML]().html || []; + const exportedValue = { + on: (items[0] !== undefined ? items[0] : "on").toString(), + off: (items[1] !== undefined ? items[1] : "off").toString() + }; + const value = field.value && field.value[_xfa_object.$text]() || "off"; + const checked = value === exportedValue.on || undefined; + + const container = field[_xfa_object.$getSubformParent](); + + const fieldId = field[_xfa_object.$uid]; + let dataId; + + if (container instanceof ExclGroup) { + groupId = container[_xfa_object.$uid]; + type = "radio"; + className = "xfaRadio"; + dataId = container[_xfa_object.$data] && container[_xfa_object.$data][_xfa_object.$uid] || container[_xfa_object.$uid]; + } else { + type = "checkbox"; + className = "xfaCheckbox"; + dataId = field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid]; + } + + const input = { + name: "input", + attributes: { + class: [className], + style, + fieldId, + dataId, + type, + checked, + xfaOn: exportedValue.on, + xfaOff: exportedValue.off, + "aria-label": ariaLabel(field), + "aria-required": false + } + }; + + if (groupId) { + input.attributes.name = groupId; + } + + if (isRequired(field)) { + input.attributes["aria-required"] = true; + input.attributes.required = true; + } + + return _utils.HTMLResult.success({ + name: "label", + attributes: { + class: ["xfaLabel"] + }, + children: [input] + }); + } + +} + +class ChoiceList extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "choiceList", true); + this.commitOn = (0, _utils.getStringOption)(attributes.commitOn, ["select", "exit"]); + this.id = attributes.id || ""; + this.open = (0, _utils.getStringOption)(attributes.open, ["userControl", "always", "multiSelect", "onEntry"]); + this.textEntry = (0, _utils.getInteger)({ + data: attributes.textEntry, + defaultValue: 0, + validate: x => x === 1 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.extras = null; + this.margin = null; + } + + [_xfa_object.$toHTML](availableSpace) { + const style = (0, _html_utils.toStyle)(this, "border", "margin"); + + const ui = this[_xfa_object.$getParent](); + + const field = ui[_xfa_object.$getParent](); + + const fontSize = field.font && field.font.size || 10; + const optionStyle = { + fontSize: `calc(${fontSize}px * var(--scale-factor))` + }; + const children = []; + + if (field.items.children.length > 0) { + const items = field.items; + let displayedIndex = 0; + let saveIndex = 0; + + if (items.children.length === 2) { + displayedIndex = items.children[0].save; + saveIndex = 1 - displayedIndex; + } + + const displayed = items.children[displayedIndex][_xfa_object.$toHTML]().html; + + const values = items.children[saveIndex][_xfa_object.$toHTML]().html; + + let selected = false; + const value = field.value && field.value[_xfa_object.$text]() || ""; + + for (let i = 0, ii = displayed.length; i < ii; i++) { + const option = { + name: "option", + attributes: { + value: values[i] || displayed[i], + style: optionStyle + }, + value: displayed[i] + }; + + if (values[i] === value) { + option.attributes.selected = selected = true; + } + + children.push(option); + } + + if (!selected) { + children.splice(0, 0, { + name: "option", + attributes: { + hidden: true, + selected: true + }, + value: " " + }); + } + } + + const selectAttributes = { + class: ["xfaSelect"], + fieldId: field[_xfa_object.$uid], + dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid], + style, + "aria-label": ariaLabel(field), + "aria-required": false + }; + + if (isRequired(field)) { + selectAttributes["aria-required"] = true; + selectAttributes.required = true; + } + + if (this.open === "multiSelect") { + selectAttributes.multiple = true; + } + + return _utils.HTMLResult.success({ + name: "label", + attributes: { + class: ["xfaLabel"] + }, + children: [{ + name: "select", + children, + attributes: selectAttributes + }] + }); + } + +} + +class Color extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "color", true); + this.cSpace = (0, _utils.getStringOption)(attributes.cSpace, ["SRGB"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.value = attributes.value ? (0, _utils.getColor)(attributes.value) : ""; + this.extras = null; + } + + [_xfa_object.$hasSettableValue]() { + return false; + } + + [_xfa_object.$toStyle]() { + return this.value ? _util.Util.makeHexColor(this.value.r, this.value.g, this.value.b) : null; + } + +} + +class Comb extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "comb"); + this.id = attributes.id || ""; + this.numberOfCells = (0, _utils.getInteger)({ + data: attributes.numberOfCells, + defaultValue: 0, + validate: x => x >= 0 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Connect extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "connect", true); + this.connection = attributes.connection || ""; + this.id = attributes.id || ""; + this.ref = attributes.ref || ""; + this.usage = (0, _utils.getStringOption)(attributes.usage, ["exportAndImport", "exportOnly", "importOnly"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.picture = null; + } + +} + +class ContentArea extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "contentArea", true); + this.h = (0, _utils.getMeasurement)(attributes.h); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.w = (0, _utils.getMeasurement)(attributes.w); + this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); + this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); + this.desc = null; + this.extras = null; + } + + [_xfa_object.$toHTML](availableSpace) { + const left = (0, _html_utils.measureToString)(this.x); + const top = (0, _html_utils.measureToString)(this.y); + const style = { + left, + top, + width: (0, _html_utils.measureToString)(this.w), + height: (0, _html_utils.measureToString)(this.h) + }; + const classNames = ["xfaContentarea"]; + + if ((0, _html_utils.isPrintOnly)(this)) { + classNames.push("xfaPrintOnly"); + } + + return _utils.HTMLResult.success({ + name: "div", + children: [], + attributes: { + style, + class: classNames, + id: this[_xfa_object.$uid] + } + }); + } + +} + +class Corner extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "corner", true); + this.id = attributes.id || ""; + this.inverted = (0, _utils.getInteger)({ + data: attributes.inverted, + defaultValue: 0, + validate: x => x === 1 + }); + this.join = (0, _utils.getStringOption)(attributes.join, ["square", "round"]); + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.radius = (0, _utils.getMeasurement)(attributes.radius); + this.stroke = (0, _utils.getStringOption)(attributes.stroke, ["solid", "dashDot", "dashDotDot", "dashed", "dotted", "embossed", "etched", "lowered", "raised"]); + this.thickness = (0, _utils.getMeasurement)(attributes.thickness, "0.5pt"); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + + [_xfa_object.$toStyle]() { + const style = (0, _html_utils.toStyle)(this, "visibility"); + style.radius = (0, _html_utils.measureToString)(this.join === "square" ? 0 : this.radius); + return style; + } + +} + +class DateElement extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "date"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + + [_xfa_object.$finalize]() { + const date = this[_xfa_object.$content].trim(); + + this[_xfa_object.$content] = date ? new Date(date) : null; + } + + [_xfa_object.$toHTML](availableSpace) { + return valueToHtml(this[_xfa_object.$content] ? this[_xfa_object.$content].toString() : ""); + } + +} + +class DateTime extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "dateTime"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + + [_xfa_object.$finalize]() { + const date = this[_xfa_object.$content].trim(); + + this[_xfa_object.$content] = date ? new Date(date) : null; + } + + [_xfa_object.$toHTML](availableSpace) { + return valueToHtml(this[_xfa_object.$content] ? this[_xfa_object.$content].toString() : ""); + } + +} + +class DateTimeEdit extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "dateTimeEdit", true); + this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]); + this.id = attributes.id || ""; + this.picker = (0, _utils.getStringOption)(attributes.picker, ["host", "none"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.comb = null; + this.extras = null; + this.margin = null; + } + + [_xfa_object.$toHTML](availableSpace) { + const style = (0, _html_utils.toStyle)(this, "border", "font", "margin"); + + const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent](); + + const html = { + name: "input", + attributes: { + type: "text", + fieldId: field[_xfa_object.$uid], + dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid], + class: ["xfaTextfield"], + style, + "aria-label": ariaLabel(field), + "aria-required": false + } + }; + + if (isRequired(field)) { + html.attributes["aria-required"] = true; + html.attributes.required = true; + } + + return _utils.HTMLResult.success({ + name: "label", + attributes: { + class: ["xfaLabel"] + }, + children: [html] + }); + } + +} + +class Decimal extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "decimal"); + this.fracDigits = (0, _utils.getInteger)({ + data: attributes.fracDigits, + defaultValue: 2, + validate: x => true + }); + this.id = attributes.id || ""; + this.leadDigits = (0, _utils.getInteger)({ + data: attributes.leadDigits, + defaultValue: -1, + validate: x => true + }); + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + + [_xfa_object.$finalize]() { + const number = parseFloat(this[_xfa_object.$content].trim()); + this[_xfa_object.$content] = isNaN(number) ? null : number; + } + + [_xfa_object.$toHTML](availableSpace) { + return valueToHtml(this[_xfa_object.$content] !== null ? this[_xfa_object.$content].toString() : ""); + } + +} + +class DefaultUi extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "defaultUi", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } + +} + +class Desc extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "desc", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.boolean = new _xfa_object.XFAObjectArray(); + this.date = new _xfa_object.XFAObjectArray(); + this.dateTime = new _xfa_object.XFAObjectArray(); + this.decimal = new _xfa_object.XFAObjectArray(); + this.exData = new _xfa_object.XFAObjectArray(); + this.float = new _xfa_object.XFAObjectArray(); + this.image = new _xfa_object.XFAObjectArray(); + this.integer = new _xfa_object.XFAObjectArray(); + this.text = new _xfa_object.XFAObjectArray(); + this.time = new _xfa_object.XFAObjectArray(); + } + +} + +class DigestMethod extends _xfa_object.OptionObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "digestMethod", ["", "SHA1", "SHA256", "SHA512", "RIPEMD160"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class DigestMethods extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "digestMethods", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.digestMethod = new _xfa_object.XFAObjectArray(); + } + +} + +class Draw extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "draw", true); + this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); + this.colSpan = (0, _utils.getInteger)({ + data: attributes.colSpan, + defaultValue: 1, + validate: n => n >= 1 || n === -1 + }); + this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : ""; + this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); + this.id = attributes.id || ""; + this.locale = attributes.locale || ""; + this.maxH = (0, _utils.getMeasurement)(attributes.maxH, "0pt"); + this.maxW = (0, _utils.getMeasurement)(attributes.maxW, "0pt"); + this.minH = (0, _utils.getMeasurement)(attributes.minH, "0pt"); + this.minW = (0, _utils.getMeasurement)(attributes.minW, "0pt"); + this.name = attributes.name || ""; + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.rotate = (0, _utils.getInteger)({ + data: attributes.rotate, + defaultValue: 0, + validate: x => x % 90 === 0 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : ""; + this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); + this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); + this.assist = null; + this.border = null; + this.caption = null; + this.desc = null; + this.extras = null; + this.font = null; + this.keep = null; + this.margin = null; + this.para = null; + this.traversal = null; + this.ui = null; + this.value = null; + this.setProperty = new _xfa_object.XFAObjectArray(); + } + + [_xfa_object.$setValue](value) { + _setValue(this, value); + } + + [_xfa_object.$toHTML](availableSpace) { + setTabIndex(this); + + if (this.presence === "hidden" || this.presence === "inactive") { + return _utils.HTMLResult.EMPTY; + } + + (0, _html_utils.fixDimensions)(this); + + this[_xfa_object.$pushPara](); + + const savedW = this.w; + const savedH = this.h; + const { + w, + h, + isBroken + } = (0, _html_utils.layoutNode)(this, availableSpace); + + if (w && this.w === "") { + if (isBroken && this[_xfa_object.$getSubformParent]()[_xfa_object.$isThereMoreWidth]()) { + this[_xfa_object.$popPara](); + + return _utils.HTMLResult.FAILURE; + } + + this.w = w; + } + + if (h && this.h === "") { + this.h = h; + } + + setFirstUnsplittable(this); + + if (!(0, _layout.checkDimensions)(this, availableSpace)) { + this.w = savedW; + this.h = savedH; + + this[_xfa_object.$popPara](); + + return _utils.HTMLResult.FAILURE; + } + + unsetFirstUnsplittable(this); + const style = (0, _html_utils.toStyle)(this, "font", "hAlign", "dimensions", "position", "presence", "rotate", "anchorType", "border", "margin"); + (0, _html_utils.setMinMaxDimensions)(this, style); + + if (style.margin) { + style.padding = style.margin; + delete style.margin; + } + + const classNames = ["xfaDraw"]; + + if (this.font) { + classNames.push("xfaFont"); + } + + if ((0, _html_utils.isPrintOnly)(this)) { + classNames.push("xfaPrintOnly"); + } + + const attributes = { + style, + id: this[_xfa_object.$uid], + class: classNames + }; + + if (this.name) { + attributes.xfaName = this.name; + } + + const html = { + name: "div", + attributes, + children: [] + }; + applyAssist(this, attributes); + const bbox = (0, _html_utils.computeBbox)(this, html, availableSpace); + const value = this.value ? this.value[_xfa_object.$toHTML](availableSpace).html : null; + + if (value === null) { + this.w = savedW; + this.h = savedH; + + this[_xfa_object.$popPara](); + + return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); + } + + html.children.push(value); + (0, _html_utils.setPara)(this, style, value); + this.w = savedW; + this.h = savedH; + + this[_xfa_object.$popPara](); + + return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); + } + +} + +class Edge extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "edge", true); + this.cap = (0, _utils.getStringOption)(attributes.cap, ["square", "butt", "round"]); + this.id = attributes.id || ""; + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.stroke = (0, _utils.getStringOption)(attributes.stroke, ["solid", "dashDot", "dashDotDot", "dashed", "dotted", "embossed", "etched", "lowered", "raised"]); + this.thickness = (0, _utils.getMeasurement)(attributes.thickness, "0.5pt"); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + + [_xfa_object.$toStyle]() { + const style = (0, _html_utils.toStyle)(this, "visibility"); + Object.assign(style, { + linecap: this.cap, + width: (0, _html_utils.measureToString)(this.thickness), + color: this.color ? this.color[_xfa_object.$toStyle]() : "#000000", + style: "" + }); + + if (this.presence !== "visible") { + style.style = "none"; + } else { + switch (this.stroke) { + case "solid": + style.style = "solid"; + break; + + case "dashDot": + style.style = "dashed"; + break; + + case "dashDotDot": + style.style = "dashed"; + break; + + case "dashed": + style.style = "dashed"; + break; + + case "dotted": + style.style = "dotted"; + break; + + case "embossed": + style.style = "ridge"; + break; + + case "etched": + style.style = "groove"; + break; + + case "lowered": + style.style = "inset"; + break; + + case "raised": + style.style = "outset"; + break; + } + } + + return style; + } + +} + +class Encoding extends _xfa_object.OptionObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encoding", ["adbe.x509.rsa_sha1", "adbe.pkcs7.detached", "adbe.pkcs7.sha1"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Encodings extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encodings", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.encoding = new _xfa_object.XFAObjectArray(); + } + +} + +class Encrypt extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encrypt", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.certificate = null; + } + +} + +class EncryptData extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encryptData", true); + this.id = attributes.id || ""; + this.operation = (0, _utils.getStringOption)(attributes.operation, ["encrypt", "decrypt"]); + this.target = attributes.target || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.filter = null; + this.manifest = null; + } + +} + +class Encryption extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encryption", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.certificate = new _xfa_object.XFAObjectArray(); + } + +} + +class EncryptionMethod extends _xfa_object.OptionObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encryptionMethod", ["", "AES256-CBC", "TRIPLEDES-CBC", "AES128-CBC", "AES192-CBC"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class EncryptionMethods extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encryptionMethods", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.encryptionMethod = new _xfa_object.XFAObjectArray(); + } + +} + +class Event extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "event", true); + this.activity = (0, _utils.getStringOption)(attributes.activity, ["click", "change", "docClose", "docReady", "enter", "exit", "full", "indexChange", "initialize", "mouseDown", "mouseEnter", "mouseExit", "mouseUp", "postExecute", "postOpen", "postPrint", "postSave", "postSign", "postSubmit", "preExecute", "preOpen", "prePrint", "preSave", "preSign", "preSubmit", "ready", "validationState"]); + this.id = attributes.id || ""; + this.listen = (0, _utils.getStringOption)(attributes.listen, ["refOnly", "refAndDescendents"]); + this.name = attributes.name || ""; + this.ref = attributes.ref || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.encryptData = null; + this.execute = null; + this.script = null; + this.signData = null; + this.submit = null; + } + +} + +class ExData extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "exData"); + this.contentType = attributes.contentType || ""; + this.href = attributes.href || ""; + this.id = attributes.id || ""; + this.maxLength = (0, _utils.getInteger)({ + data: attributes.maxLength, + defaultValue: -1, + validate: x => x >= -1 + }); + this.name = attributes.name || ""; + this.rid = attributes.rid || ""; + this.transferEncoding = (0, _utils.getStringOption)(attributes.transferEncoding, ["none", "base64", "package"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + + [_xfa_object.$isCDATAXml]() { + return this.contentType === "text/html"; + } + + [_xfa_object.$onChild](child) { + if (this.contentType === "text/html" && child[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.xhtml.id) { + this[_xfa_object.$content] = child; + return true; + } + + if (this.contentType === "text/xml") { + this[_xfa_object.$content] = child; + return true; + } + + return false; + } + + [_xfa_object.$toHTML](availableSpace) { + if (this.contentType !== "text/html" || !this[_xfa_object.$content]) { + return _utils.HTMLResult.EMPTY; + } + + return this[_xfa_object.$content][_xfa_object.$toHTML](availableSpace); + } + +} + +class ExObject extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "exObject", true); + this.archive = attributes.archive || ""; + this.classId = attributes.classId || ""; + this.codeBase = attributes.codeBase || ""; + this.codeType = attributes.codeType || ""; + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.boolean = new _xfa_object.XFAObjectArray(); + this.date = new _xfa_object.XFAObjectArray(); + this.dateTime = new _xfa_object.XFAObjectArray(); + this.decimal = new _xfa_object.XFAObjectArray(); + this.exData = new _xfa_object.XFAObjectArray(); + this.exObject = new _xfa_object.XFAObjectArray(); + this.float = new _xfa_object.XFAObjectArray(); + this.image = new _xfa_object.XFAObjectArray(); + this.integer = new _xfa_object.XFAObjectArray(); + this.text = new _xfa_object.XFAObjectArray(); + this.time = new _xfa_object.XFAObjectArray(); + } + +} + +class ExclGroup extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "exclGroup", true); + this.access = (0, _utils.getStringOption)(attributes.access, ["open", "nonInteractive", "protected", "readOnly"]); + this.accessKey = attributes.accessKey || ""; + this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); + this.colSpan = (0, _utils.getInteger)({ + data: attributes.colSpan, + defaultValue: 1, + validate: n => n >= 1 || n === -1 + }); + this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : ""; + this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); + this.id = attributes.id || ""; + this.layout = (0, _utils.getStringOption)(attributes.layout, ["position", "lr-tb", "rl-row", "rl-tb", "row", "table", "tb"]); + this.maxH = (0, _utils.getMeasurement)(attributes.maxH, "0pt"); + this.maxW = (0, _utils.getMeasurement)(attributes.maxW, "0pt"); + this.minH = (0, _utils.getMeasurement)(attributes.minH, "0pt"); + this.minW = (0, _utils.getMeasurement)(attributes.minW, "0pt"); + this.name = attributes.name || ""; + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : ""; + this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); + this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); + this.assist = null; + this.bind = null; + this.border = null; + this.calculate = null; + this.caption = null; + this.desc = null; + this.extras = null; + this.margin = null; + this.para = null; + this.traversal = null; + this.validate = null; + this.connect = new _xfa_object.XFAObjectArray(); + this.event = new _xfa_object.XFAObjectArray(); + this.field = new _xfa_object.XFAObjectArray(); + this.setProperty = new _xfa_object.XFAObjectArray(); + } + + [_xfa_object.$isBindable]() { + return true; + } + + [_xfa_object.$hasSettableValue]() { + return true; + } + + [_xfa_object.$setValue](value) { + for (const field of this.field.children) { + if (!field.value) { + const nodeValue = new Value({}); + + field[_xfa_object.$appendChild](nodeValue); + + field.value = nodeValue; + } + + field.value[_xfa_object.$setValue](value); + } + } + + [_xfa_object.$isThereMoreWidth]() { + return this.layout.endsWith("-tb") && this[_xfa_object.$extra].attempt === 0 && this[_xfa_object.$extra].numberInLine > 0 || this[_xfa_object.$getParent]()[_xfa_object.$isThereMoreWidth](); + } + + [_xfa_object.$isSplittable]() { + const parent = this[_xfa_object.$getSubformParent](); + + if (!parent[_xfa_object.$isSplittable]()) { + return false; + } + + if (this[_xfa_object.$extra]._isSplittable !== undefined) { + return this[_xfa_object.$extra]._isSplittable; + } + + if (this.layout === "position" || this.layout.includes("row")) { + this[_xfa_object.$extra]._isSplittable = false; + return false; + } + + if (parent.layout && parent.layout.endsWith("-tb") && parent[_xfa_object.$extra].numberInLine !== 0) { + return false; + } + + this[_xfa_object.$extra]._isSplittable = true; + return true; + } + + [_xfa_object.$flushHTML]() { + return (0, _layout.flushHTML)(this); + } + + [_xfa_object.$addHTML](html, bbox) { + (0, _layout.addHTML)(this, html, bbox); + } + + [_xfa_object.$getAvailableSpace]() { + return (0, _layout.getAvailableSpace)(this); + } + + [_xfa_object.$toHTML](availableSpace) { + setTabIndex(this); + + if (this.presence === "hidden" || this.presence === "inactive" || this.h === 0 || this.w === 0) { + return _utils.HTMLResult.EMPTY; + } + + (0, _html_utils.fixDimensions)(this); + const children = []; + const attributes = { + id: this[_xfa_object.$uid], + class: [] + }; + (0, _html_utils.setAccess)(this, attributes.class); + + if (!this[_xfa_object.$extra]) { + this[_xfa_object.$extra] = Object.create(null); + } + + Object.assign(this[_xfa_object.$extra], { + children, + attributes, + attempt: 0, + line: null, + numberInLine: 0, + availableSpace: { + width: Math.min(this.w || Infinity, availableSpace.width), + height: Math.min(this.h || Infinity, availableSpace.height) + }, + width: 0, + height: 0, + prevHeight: 0, + currentWidth: 0 + }); + + const isSplittable = this[_xfa_object.$isSplittable](); + + if (!isSplittable) { + setFirstUnsplittable(this); + } + + if (!(0, _layout.checkDimensions)(this, availableSpace)) { + return _utils.HTMLResult.FAILURE; + } + + const filter = new Set(["field"]); + + if (this.layout.includes("row")) { + const columnWidths = this[_xfa_object.$getSubformParent]().columnWidths; + + if (Array.isArray(columnWidths) && columnWidths.length > 0) { + this[_xfa_object.$extra].columnWidths = columnWidths; + this[_xfa_object.$extra].currentColumn = 0; + } + } + + const style = (0, _html_utils.toStyle)(this, "anchorType", "dimensions", "position", "presence", "border", "margin", "hAlign"); + const classNames = ["xfaExclgroup"]; + const cl = (0, _html_utils.layoutClass)(this); + + if (cl) { + classNames.push(cl); + } + + if ((0, _html_utils.isPrintOnly)(this)) { + classNames.push("xfaPrintOnly"); + } + + attributes.style = style; + attributes.class = classNames; + + if (this.name) { + attributes.xfaName = this.name; + } + + this[_xfa_object.$pushPara](); + + const isLrTb = this.layout === "lr-tb" || this.layout === "rl-tb"; + const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1; + + for (; this[_xfa_object.$extra].attempt < maxRun; this[_xfa_object.$extra].attempt++) { + if (isLrTb && this[_xfa_object.$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) { + this[_xfa_object.$extra].numberInLine = 0; + } + + const result = this[_xfa_object.$childrenToHTML]({ + filter, + include: true + }); + + if (result.success) { + break; + } + + if (result.isBreak()) { + this[_xfa_object.$popPara](); + + return result; + } + + if (isLrTb && this[_xfa_object.$extra].attempt === 0 && this[_xfa_object.$extra].numberInLine === 0 && !this[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) { + this[_xfa_object.$extra].attempt = maxRun; + break; + } + } + + this[_xfa_object.$popPara](); + + if (!isSplittable) { + unsetFirstUnsplittable(this); + } + + if (this[_xfa_object.$extra].attempt === maxRun) { + if (!isSplittable) { + delete this[_xfa_object.$extra]; + } + + return _utils.HTMLResult.FAILURE; + } + + let marginH = 0; + let marginV = 0; + + if (this.margin) { + marginH = this.margin.leftInset + this.margin.rightInset; + marginV = this.margin.topInset + this.margin.bottomInset; + } + + const width = Math.max(this[_xfa_object.$extra].width + marginH, this.w || 0); + const height = Math.max(this[_xfa_object.$extra].height + marginV, this.h || 0); + const bbox = [this.x, this.y, width, height]; + + if (this.w === "") { + style.width = (0, _html_utils.measureToString)(width); + } + + if (this.h === "") { + style.height = (0, _html_utils.measureToString)(height); + } + + const html = { + name: "div", + attributes, + children + }; + applyAssist(this, attributes); + delete this[_xfa_object.$extra]; + return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); + } + +} + +class Execute extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "execute"); + this.connection = attributes.connection || ""; + this.executeType = (0, _utils.getStringOption)(attributes.executeType, ["import", "remerge"]); + this.id = attributes.id || ""; + this.runAt = (0, _utils.getStringOption)(attributes.runAt, ["client", "both", "server"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Extras extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "extras", true); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.boolean = new _xfa_object.XFAObjectArray(); + this.date = new _xfa_object.XFAObjectArray(); + this.dateTime = new _xfa_object.XFAObjectArray(); + this.decimal = new _xfa_object.XFAObjectArray(); + this.exData = new _xfa_object.XFAObjectArray(); + this.extras = new _xfa_object.XFAObjectArray(); + this.float = new _xfa_object.XFAObjectArray(); + this.image = new _xfa_object.XFAObjectArray(); + this.integer = new _xfa_object.XFAObjectArray(); + this.text = new _xfa_object.XFAObjectArray(); + this.time = new _xfa_object.XFAObjectArray(); + } + +} + +class Field extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "field", true); + this.access = (0, _utils.getStringOption)(attributes.access, ["open", "nonInteractive", "protected", "readOnly"]); + this.accessKey = attributes.accessKey || ""; + this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); + this.colSpan = (0, _utils.getInteger)({ + data: attributes.colSpan, + defaultValue: 1, + validate: n => n >= 1 || n === -1 + }); + this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : ""; + this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); + this.id = attributes.id || ""; + this.locale = attributes.locale || ""; + this.maxH = (0, _utils.getMeasurement)(attributes.maxH, "0pt"); + this.maxW = (0, _utils.getMeasurement)(attributes.maxW, "0pt"); + this.minH = (0, _utils.getMeasurement)(attributes.minH, "0pt"); + this.minW = (0, _utils.getMeasurement)(attributes.minW, "0pt"); + this.name = attributes.name || ""; + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.rotate = (0, _utils.getInteger)({ + data: attributes.rotate, + defaultValue: 0, + validate: x => x % 90 === 0 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : ""; + this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); + this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); + this.assist = null; + this.bind = null; + this.border = null; + this.calculate = null; + this.caption = null; + this.desc = null; + this.extras = null; + this.font = null; + this.format = null; + this.items = new _xfa_object.XFAObjectArray(2); + this.keep = null; + this.margin = null; + this.para = null; + this.traversal = null; + this.ui = null; + this.validate = null; + this.value = null; + this.bindItems = new _xfa_object.XFAObjectArray(); + this.connect = new _xfa_object.XFAObjectArray(); + this.event = new _xfa_object.XFAObjectArray(); + this.setProperty = new _xfa_object.XFAObjectArray(); + } + + [_xfa_object.$isBindable]() { + return true; + } + + [_xfa_object.$setValue](value) { + _setValue(this, value); + } + + [_xfa_object.$toHTML](availableSpace) { + setTabIndex(this); + + if (!this.ui) { + this.ui = new Ui({}); + this.ui[_xfa_object.$globalData] = this[_xfa_object.$globalData]; + + this[_xfa_object.$appendChild](this.ui); + + let node; + + switch (this.items.children.length) { + case 0: + node = new TextEdit({}); + this.ui.textEdit = node; + break; + + case 1: + node = new CheckButton({}); + this.ui.checkButton = node; + break; + + case 2: + node = new ChoiceList({}); + this.ui.choiceList = node; + break; + } + + this.ui[_xfa_object.$appendChild](node); + } + + if (!this.ui || this.presence === "hidden" || this.presence === "inactive" || this.h === 0 || this.w === 0) { + return _utils.HTMLResult.EMPTY; + } + + if (this.caption) { + delete this.caption[_xfa_object.$extra]; + } + + this[_xfa_object.$pushPara](); + + const caption = this.caption ? this.caption[_xfa_object.$toHTML](availableSpace).html : null; + const savedW = this.w; + const savedH = this.h; + let marginH = 0; + let marginV = 0; + + if (this.margin) { + marginH = this.margin.leftInset + this.margin.rightInset; + marginV = this.margin.topInset + this.margin.bottomInset; + } + + let borderDims = null; + + if (this.w === "" || this.h === "") { + let width = null; + let height = null; + let uiW = 0; + let uiH = 0; + + if (this.ui.checkButton) { + uiW = uiH = this.ui.checkButton.size; + } else { + const { + w, + h + } = (0, _html_utils.layoutNode)(this, availableSpace); + + if (w !== null) { + uiW = w; + uiH = h; + } else { + uiH = (0, _fonts.getMetrics)(this.font, true).lineNoGap; + } + } + + borderDims = getBorderDims(this.ui[_xfa_object.$getExtra]()); + uiW += borderDims.w; + uiH += borderDims.h; + + if (this.caption) { + const { + w, + h, + isBroken + } = this.caption[_xfa_object.$getExtra](availableSpace); + + if (isBroken && this[_xfa_object.$getSubformParent]()[_xfa_object.$isThereMoreWidth]()) { + this[_xfa_object.$popPara](); + + return _utils.HTMLResult.FAILURE; + } + + width = w; + height = h; + + switch (this.caption.placement) { + case "left": + case "right": + case "inline": + width += uiW; + break; + + case "top": + case "bottom": + height += uiH; + break; + } + } else { + width = uiW; + height = uiH; + } + + if (width && this.w === "") { + width += marginH; + this.w = Math.min(this.maxW <= 0 ? Infinity : this.maxW, this.minW + 1 < width ? width : this.minW); + } + + if (height && this.h === "") { + height += marginV; + this.h = Math.min(this.maxH <= 0 ? Infinity : this.maxH, this.minH + 1 < height ? height : this.minH); + } + } + + this[_xfa_object.$popPara](); + + (0, _html_utils.fixDimensions)(this); + setFirstUnsplittable(this); + + if (!(0, _layout.checkDimensions)(this, availableSpace)) { + this.w = savedW; + this.h = savedH; + + this[_xfa_object.$popPara](); + + return _utils.HTMLResult.FAILURE; + } + + unsetFirstUnsplittable(this); + const style = (0, _html_utils.toStyle)(this, "font", "dimensions", "position", "rotate", "anchorType", "presence", "margin", "hAlign"); + (0, _html_utils.setMinMaxDimensions)(this, style); + const classNames = ["xfaField"]; + + if (this.font) { + classNames.push("xfaFont"); + } + + if ((0, _html_utils.isPrintOnly)(this)) { + classNames.push("xfaPrintOnly"); + } + + const attributes = { + style, + id: this[_xfa_object.$uid], + class: classNames + }; + + if (style.margin) { + style.padding = style.margin; + delete style.margin; + } + + (0, _html_utils.setAccess)(this, classNames); + + if (this.name) { + attributes.xfaName = this.name; + } + + const children = []; + const html = { + name: "div", + attributes, + children + }; + applyAssist(this, attributes); + const borderStyle = this.border ? this.border[_xfa_object.$toStyle]() : null; + const bbox = (0, _html_utils.computeBbox)(this, html, availableSpace); + + const ui = this.ui[_xfa_object.$toHTML]().html; + + if (!ui) { + Object.assign(style, borderStyle); + return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); + } + + if (this[_xfa_object.$tabIndex]) { + if (ui.children && ui.children[0]) { + ui.children[0].attributes.tabindex = this[_xfa_object.$tabIndex]; + } else { + ui.attributes.tabindex = this[_xfa_object.$tabIndex]; + } + } + + if (!ui.attributes.style) { + ui.attributes.style = Object.create(null); + } + + let aElement = null; + + if (this.ui.button) { + if (ui.children.length === 1) { + [aElement] = ui.children.splice(0, 1); + } + + Object.assign(ui.attributes.style, borderStyle); + } else { + Object.assign(style, borderStyle); + } + + children.push(ui); + + if (this.value) { + if (this.ui.imageEdit) { + ui.children.push(this.value[_xfa_object.$toHTML]().html); + } else if (!this.ui.button) { + let value = ""; + + if (this.value.exData) { + value = this.value.exData[_xfa_object.$text](); + } else if (this.value.text) { + value = this.value.text[_xfa_object.$getExtra](); + } else { + const htmlValue = this.value[_xfa_object.$toHTML]().html; + + if (htmlValue !== null) { + value = htmlValue.children[0].value; + } + } + + if (this.ui.textEdit && this.value.text && this.value.text.maxChars) { + ui.children[0].attributes.maxLength = this.value.text.maxChars; + } + + if (value) { + if (this.ui.numericEdit) { + value = parseFloat(value); + value = isNaN(value) ? "" : value.toString(); + } + + if (ui.children[0].name === "textarea") { + ui.children[0].attributes.textContent = value; + } else { + ui.children[0].attributes.value = value; + } + } + } + } + + if (!this.ui.imageEdit && ui.children && ui.children[0] && this.h) { + borderDims = borderDims || getBorderDims(this.ui[_xfa_object.$getExtra]()); + let captionHeight = 0; + + if (this.caption && ["top", "bottom"].includes(this.caption.placement)) { + captionHeight = this.caption.reserve; + + if (captionHeight <= 0) { + captionHeight = this.caption[_xfa_object.$getExtra](availableSpace).h; + } + + const inputHeight = this.h - captionHeight - marginV - borderDims.h; + ui.children[0].attributes.style.height = (0, _html_utils.measureToString)(inputHeight); + } else { + ui.children[0].attributes.style.height = "100%"; + } + } + + if (aElement) { + ui.children.push(aElement); + } + + if (!caption) { + if (ui.attributes.class) { + ui.attributes.class.push("xfaLeft"); + } + + this.w = savedW; + this.h = savedH; + return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); + } + + if (this.ui.button) { + if (style.padding) { + delete style.padding; + } + + if (caption.name === "div") { + caption.name = "span"; + } + + ui.children.push(caption); + return _utils.HTMLResult.success(html, bbox); + } else if (this.ui.checkButton) { + caption.attributes.class[0] = "xfaCaptionForCheckButton"; + } + + if (!ui.attributes.class) { + ui.attributes.class = []; + } + + ui.children.splice(0, 0, caption); + + switch (this.caption.placement) { + case "left": + ui.attributes.class.push("xfaLeft"); + break; + + case "right": + ui.attributes.class.push("xfaRight"); + break; + + case "top": + ui.attributes.class.push("xfaTop"); + break; + + case "bottom": + ui.attributes.class.push("xfaBottom"); + break; + + case "inline": + ui.attributes.class.push("xfaLeft"); + break; + } + + this.w = savedW; + this.h = savedH; + return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); + } + +} + +exports.Field = Field; + +class Fill extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "fill", true); + this.id = attributes.id || ""; + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + this.linear = null; + this.pattern = null; + this.radial = null; + this.solid = null; + this.stipple = null; + } + + [_xfa_object.$toStyle]() { + const parent = this[_xfa_object.$getParent](); + + const grandpa = parent[_xfa_object.$getParent](); + + const ggrandpa = grandpa[_xfa_object.$getParent](); + + const style = Object.create(null); + let propName = "color"; + let altPropName = propName; + + if (parent instanceof Border) { + propName = "background-color"; + altPropName = "background"; + + if (ggrandpa instanceof Ui) { + style.backgroundColor = "white"; + } + } + + if (parent instanceof Rectangle || parent instanceof Arc) { + propName = altPropName = "fill"; + style.fill = "white"; + } + + for (const name of Object.getOwnPropertyNames(this)) { + if (name === "extras" || name === "color") { + continue; + } + + const obj = this[name]; + + if (!(obj instanceof _xfa_object.XFAObject)) { + continue; + } + + const color = obj[_xfa_object.$toStyle](this.color); + + if (color) { + style[color.startsWith("#") ? propName : altPropName] = color; + } + + return style; + } + + if (this.color && this.color.value) { + const color = this.color[_xfa_object.$toStyle](); + + style[color.startsWith("#") ? propName : altPropName] = color; + } + + return style; + } + +} + +class Filter extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "filter", true); + this.addRevocationInfo = (0, _utils.getStringOption)(attributes.addRevocationInfo, ["", "required", "optional", "none"]); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.version = (0, _utils.getInteger)({ + data: this.version, + defaultValue: 5, + validate: x => x >= 1 && x <= 5 + }); + this.appearanceFilter = null; + this.certificates = null; + this.digestMethods = null; + this.encodings = null; + this.encryptionMethods = null; + this.handler = null; + this.lockDocument = null; + this.mdp = null; + this.reasons = null; + this.timeStamp = null; + } + +} + +class Float extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "float"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + + [_xfa_object.$finalize]() { + const number = parseFloat(this[_xfa_object.$content].trim()); + this[_xfa_object.$content] = isNaN(number) ? null : number; + } + + [_xfa_object.$toHTML](availableSpace) { + return valueToHtml(this[_xfa_object.$content] !== null ? this[_xfa_object.$content].toString() : ""); + } + +} + +class Font extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "font", true); + this.baselineShift = (0, _utils.getMeasurement)(attributes.baselineShift); + this.fontHorizontalScale = (0, _utils.getFloat)({ + data: attributes.fontHorizontalScale, + defaultValue: 100, + validate: x => x >= 0 + }); + this.fontVerticalScale = (0, _utils.getFloat)({ + data: attributes.fontVerticalScale, + defaultValue: 100, + validate: x => x >= 0 + }); + this.id = attributes.id || ""; + this.kerningMode = (0, _utils.getStringOption)(attributes.kerningMode, ["none", "pair"]); + this.letterSpacing = (0, _utils.getMeasurement)(attributes.letterSpacing, "0"); + this.lineThrough = (0, _utils.getInteger)({ + data: attributes.lineThrough, + defaultValue: 0, + validate: x => x === 1 || x === 2 + }); + this.lineThroughPeriod = (0, _utils.getStringOption)(attributes.lineThroughPeriod, ["all", "word"]); + this.overline = (0, _utils.getInteger)({ + data: attributes.overline, + defaultValue: 0, + validate: x => x === 1 || x === 2 + }); + this.overlinePeriod = (0, _utils.getStringOption)(attributes.overlinePeriod, ["all", "word"]); + this.posture = (0, _utils.getStringOption)(attributes.posture, ["normal", "italic"]); + this.size = (0, _utils.getMeasurement)(attributes.size, "10pt"); + this.typeface = attributes.typeface || "Courier"; + this.underline = (0, _utils.getInteger)({ + data: attributes.underline, + defaultValue: 0, + validate: x => x === 1 || x === 2 + }); + this.underlinePeriod = (0, _utils.getStringOption)(attributes.underlinePeriod, ["all", "word"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.weight = (0, _utils.getStringOption)(attributes.weight, ["normal", "bold"]); + this.extras = null; + this.fill = null; + } + + [_xfa_object.$clean](builder) { + super[_xfa_object.$clean](builder); + + this[_xfa_object.$globalData].usedTypefaces.add(this.typeface); + } + + [_xfa_object.$toStyle]() { + const style = (0, _html_utils.toStyle)(this, "fill"); + const color = style.color; + + if (color) { + if (color === "#000000") { + delete style.color; + } else if (!color.startsWith("#")) { + style.background = color; + style.backgroundClip = "text"; + style.color = "transparent"; + } + } + + if (this.baselineShift) { + style.verticalAlign = (0, _html_utils.measureToString)(this.baselineShift); + } + + style.fontKerning = this.kerningMode === "none" ? "none" : "normal"; + style.letterSpacing = (0, _html_utils.measureToString)(this.letterSpacing); + + if (this.lineThrough !== 0) { + style.textDecoration = "line-through"; + + if (this.lineThrough === 2) { + style.textDecorationStyle = "double"; + } + } + + if (this.overline !== 0) { + style.textDecoration = "overline"; + + if (this.overline === 2) { + style.textDecorationStyle = "double"; + } + } + + style.fontStyle = this.posture; + style.fontSize = (0, _html_utils.measureToString)(0.99 * this.size); + (0, _html_utils.setFontFamily)(this, this, this[_xfa_object.$globalData].fontFinder, style); + + if (this.underline !== 0) { + style.textDecoration = "underline"; + + if (this.underline === 2) { + style.textDecorationStyle = "double"; + } + } + + style.fontWeight = this.weight; + return style; + } + +} + +class Format extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "format", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.picture = null; + } + +} + +class Handler extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "handler"); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Hyphenation extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "hyphenation"); + this.excludeAllCaps = (0, _utils.getInteger)({ + data: attributes.excludeAllCaps, + defaultValue: 0, + validate: x => x === 1 + }); + this.excludeInitialCap = (0, _utils.getInteger)({ + data: attributes.excludeInitialCap, + defaultValue: 0, + validate: x => x === 1 + }); + this.hyphenate = (0, _utils.getInteger)({ + data: attributes.hyphenate, + defaultValue: 0, + validate: x => x === 1 + }); + this.id = attributes.id || ""; + this.pushCharacterCount = (0, _utils.getInteger)({ + data: attributes.pushCharacterCount, + defaultValue: 3, + validate: x => x >= 0 + }); + this.remainCharacterCount = (0, _utils.getInteger)({ + data: attributes.remainCharacterCount, + defaultValue: 3, + validate: x => x >= 0 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.wordCharacterCount = (0, _utils.getInteger)({ + data: attributes.wordCharacterCount, + defaultValue: 7, + validate: x => x >= 0 + }); + } + +} + +class Image extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "image"); + this.aspect = (0, _utils.getStringOption)(attributes.aspect, ["fit", "actual", "height", "none", "width"]); + this.contentType = attributes.contentType || ""; + this.href = attributes.href || ""; + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.transferEncoding = (0, _utils.getStringOption)(attributes.transferEncoding, ["base64", "none", "package"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + + [_xfa_object.$toHTML]() { + if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) { + return _utils.HTMLResult.EMPTY; + } + + let buffer = this[_xfa_object.$globalData].images && this[_xfa_object.$globalData].images.get(this.href); + + if (!buffer && (this.href || !this[_xfa_object.$content])) { + return _utils.HTMLResult.EMPTY; + } + + if (!buffer && this.transferEncoding === "base64") { + buffer = (0, _util.stringToBytes)(atob(this[_xfa_object.$content])); + } + + if (!buffer) { + return _utils.HTMLResult.EMPTY; + } + + if (!this.contentType) { + for (const [header, type] of IMAGES_HEADERS) { + if (buffer.length > header.length && header.every((x, i) => x === buffer[i])) { + this.contentType = type; + break; + } + } + + if (!this.contentType) { + return _utils.HTMLResult.EMPTY; + } + } + + const blob = new Blob([buffer], { + type: this.contentType + }); + let style; + + switch (this.aspect) { + case "fit": + case "actual": + break; + + case "height": + style = { + height: "100%", + objectFit: "fill" + }; + break; + + case "none": + style = { + width: "100%", + height: "100%", + objectFit: "fill" + }; + break; + + case "width": + style = { + width: "100%", + objectFit: "fill" + }; + break; + } + + const parent = this[_xfa_object.$getParent](); + + return _utils.HTMLResult.success({ + name: "img", + attributes: { + class: ["xfaImage"], + style, + src: URL.createObjectURL(blob), + alt: parent ? ariaLabel(parent[_xfa_object.$getParent]()) : null + } + }); + } + +} + +class ImageEdit extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "imageEdit", true); + this.data = (0, _utils.getStringOption)(attributes.data, ["link", "embed"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.extras = null; + this.margin = null; + } + + [_xfa_object.$toHTML](availableSpace) { + if (this.data === "embed") { + return _utils.HTMLResult.success({ + name: "div", + children: [], + attributes: {} + }); + } + + return _utils.HTMLResult.EMPTY; + } + +} + +class Integer extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "integer"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + + [_xfa_object.$finalize]() { + const number = parseInt(this[_xfa_object.$content].trim(), 10); + this[_xfa_object.$content] = isNaN(number) ? null : number; + } + + [_xfa_object.$toHTML](availableSpace) { + return valueToHtml(this[_xfa_object.$content] !== null ? this[_xfa_object.$content].toString() : ""); + } + +} + +class Issuers extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "issuers", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.certificate = new _xfa_object.XFAObjectArray(); + } + +} + +class Items extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "items", true); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.ref = attributes.ref || ""; + this.save = (0, _utils.getInteger)({ + data: attributes.save, + defaultValue: 0, + validate: x => x === 1 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.boolean = new _xfa_object.XFAObjectArray(); + this.date = new _xfa_object.XFAObjectArray(); + this.dateTime = new _xfa_object.XFAObjectArray(); + this.decimal = new _xfa_object.XFAObjectArray(); + this.exData = new _xfa_object.XFAObjectArray(); + this.float = new _xfa_object.XFAObjectArray(); + this.image = new _xfa_object.XFAObjectArray(); + this.integer = new _xfa_object.XFAObjectArray(); + this.text = new _xfa_object.XFAObjectArray(); + this.time = new _xfa_object.XFAObjectArray(); + } + + [_xfa_object.$toHTML]() { + const output = []; + + for (const child of this[_xfa_object.$getChildren]()) { + output.push(child[_xfa_object.$text]()); + } + + return _utils.HTMLResult.success(output); + } + +} + +exports.Items = Items; + +class Keep extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "keep", true); + this.id = attributes.id || ""; + const options = ["none", "contentArea", "pageArea"]; + this.intact = (0, _utils.getStringOption)(attributes.intact, options); + this.next = (0, _utils.getStringOption)(attributes.next, options); + this.previous = (0, _utils.getStringOption)(attributes.previous, options); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } + +} + +class KeyUsage extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "keyUsage"); + const options = ["", "yes", "no"]; + this.crlSign = (0, _utils.getStringOption)(attributes.crlSign, options); + this.dataEncipherment = (0, _utils.getStringOption)(attributes.dataEncipherment, options); + this.decipherOnly = (0, _utils.getStringOption)(attributes.decipherOnly, options); + this.digitalSignature = (0, _utils.getStringOption)(attributes.digitalSignature, options); + this.encipherOnly = (0, _utils.getStringOption)(attributes.encipherOnly, options); + this.id = attributes.id || ""; + this.keyAgreement = (0, _utils.getStringOption)(attributes.keyAgreement, options); + this.keyCertSign = (0, _utils.getStringOption)(attributes.keyCertSign, options); + this.keyEncipherment = (0, _utils.getStringOption)(attributes.keyEncipherment, options); + this.nonRepudiation = (0, _utils.getStringOption)(attributes.nonRepudiation, options); + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Line extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "line", true); + this.hand = (0, _utils.getStringOption)(attributes.hand, ["even", "left", "right"]); + this.id = attributes.id || ""; + this.slope = (0, _utils.getStringOption)(attributes.slope, ["\\", "/"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.edge = null; + } + + [_xfa_object.$toHTML]() { + const parent = this[_xfa_object.$getParent]()[_xfa_object.$getParent](); + + const edge = this.edge || new Edge({}); + + const edgeStyle = edge[_xfa_object.$toStyle](); + + const style = Object.create(null); + const thickness = edge.presence === "visible" ? edge.thickness : 0; + style.strokeWidth = (0, _html_utils.measureToString)(thickness); + style.stroke = edgeStyle.color; + let x1, y1, x2, y2; + let width = "100%"; + let height = "100%"; + + if (parent.w <= thickness) { + [x1, y1, x2, y2] = ["50%", 0, "50%", "100%"]; + width = style.strokeWidth; + } else if (parent.h <= thickness) { + [x1, y1, x2, y2] = [0, "50%", "100%", "50%"]; + height = style.strokeWidth; + } else { + if (this.slope === "\\") { + [x1, y1, x2, y2] = [0, 0, "100%", "100%"]; + } else { + [x1, y1, x2, y2] = [0, "100%", "100%", 0]; + } + } + + const line = { + name: "line", + attributes: { + xmlns: SVG_NS, + x1, + y1, + x2, + y2, + style + } + }; + const svg = { + name: "svg", + children: [line], + attributes: { + xmlns: SVG_NS, + width, + height, + style: { + overflow: "visible" + } + } + }; + + if (hasMargin(parent)) { + return _utils.HTMLResult.success({ + name: "div", + attributes: { + style: { + display: "inline", + width: "100%", + height: "100%" + } + }, + children: [svg] + }); + } + + svg.attributes.style.position = "absolute"; + return _utils.HTMLResult.success(svg); + } + +} + +class Linear extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "linear", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["toRight", "toBottom", "toLeft", "toTop"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + + [_xfa_object.$toStyle](startColor) { + startColor = startColor ? startColor[_xfa_object.$toStyle]() : "#FFFFFF"; + const transf = this.type.replace(/([RBLT])/, " $1").toLowerCase(); + const endColor = this.color ? this.color[_xfa_object.$toStyle]() : "#000000"; + return `linear-gradient(${transf}, ${startColor}, ${endColor})`; + } + +} + +class LockDocument extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "lockDocument"); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + + [_xfa_object.$finalize]() { + this[_xfa_object.$content] = (0, _utils.getStringOption)(this[_xfa_object.$content], ["auto", "0", "1"]); + } + +} + +class Manifest extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "manifest", true); + this.action = (0, _utils.getStringOption)(attributes.action, ["include", "all", "exclude"]); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.ref = new _xfa_object.XFAObjectArray(); + } + +} + +class Margin extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "margin", true); + this.bottomInset = (0, _utils.getMeasurement)(attributes.bottomInset, "0"); + this.id = attributes.id || ""; + this.leftInset = (0, _utils.getMeasurement)(attributes.leftInset, "0"); + this.rightInset = (0, _utils.getMeasurement)(attributes.rightInset, "0"); + this.topInset = (0, _utils.getMeasurement)(attributes.topInset, "0"); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } + + [_xfa_object.$toStyle]() { + return { + margin: (0, _html_utils.measureToString)(this.topInset) + " " + (0, _html_utils.measureToString)(this.rightInset) + " " + (0, _html_utils.measureToString)(this.bottomInset) + " " + (0, _html_utils.measureToString)(this.leftInset) + }; + } + +} + +class Mdp extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "mdp"); + this.id = attributes.id || ""; + this.permissions = (0, _utils.getInteger)({ + data: attributes.permissions, + defaultValue: 2, + validate: x => x === 1 || x === 3 + }); + this.signatureType = (0, _utils.getStringOption)(attributes.signatureType, ["filler", "author"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Medium extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "medium"); + this.id = attributes.id || ""; + this.imagingBBox = (0, _utils.getBBox)(attributes.imagingBBox); + this.long = (0, _utils.getMeasurement)(attributes.long); + this.orientation = (0, _utils.getStringOption)(attributes.orientation, ["portrait", "landscape"]); + this.short = (0, _utils.getMeasurement)(attributes.short); + this.stock = attributes.stock || ""; + this.trayIn = (0, _utils.getStringOption)(attributes.trayIn, ["auto", "delegate", "pageFront"]); + this.trayOut = (0, _utils.getStringOption)(attributes.trayOut, ["auto", "delegate"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Message extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "message", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.text = new _xfa_object.XFAObjectArray(); + } + +} + +class NumericEdit extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "numericEdit", true); + this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.comb = null; + this.extras = null; + this.margin = null; + } + + [_xfa_object.$toHTML](availableSpace) { + const style = (0, _html_utils.toStyle)(this, "border", "font", "margin"); + + const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent](); + + const html = { + name: "input", + attributes: { + type: "text", + fieldId: field[_xfa_object.$uid], + dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid], + class: ["xfaTextfield"], + style, + "aria-label": ariaLabel(field), + "aria-required": false + } + }; + + if (isRequired(field)) { + html.attributes["aria-required"] = true; + html.attributes.required = true; + } + + return _utils.HTMLResult.success({ + name: "label", + attributes: { + class: ["xfaLabel"] + }, + children: [html] + }); + } + +} + +class Occur extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "occur", true); + this.id = attributes.id || ""; + this.initial = attributes.initial !== "" ? (0, _utils.getInteger)({ + data: attributes.initial, + defaultValue: "", + validate: x => true + }) : ""; + this.max = attributes.max !== "" ? (0, _utils.getInteger)({ + data: attributes.max, + defaultValue: 1, + validate: x => true + }) : ""; + this.min = attributes.min !== "" ? (0, _utils.getInteger)({ + data: attributes.min, + defaultValue: 1, + validate: x => true + }) : ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } + + [_xfa_object.$clean]() { + const parent = this[_xfa_object.$getParent](); + + const originalMin = this.min; + + if (this.min === "") { + this.min = parent instanceof PageArea || parent instanceof PageSet ? 0 : 1; + } + + if (this.max === "") { + if (originalMin === "") { + this.max = parent instanceof PageArea || parent instanceof PageSet ? -1 : 1; + } else { + this.max = this.min; + } + } + + if (this.max !== -1 && this.max < this.min) { + this.max = this.min; + } + + if (this.initial === "") { + this.initial = parent instanceof Template ? 1 : this.min; + } + } + +} + +class Oid extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "oid"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Oids extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "oids", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.oid = new _xfa_object.XFAObjectArray(); + } + +} + +class Overflow extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "overflow"); + this.id = attributes.id || ""; + this.leader = attributes.leader || ""; + this.target = attributes.target || ""; + this.trailer = attributes.trailer || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + + [_xfa_object.$getExtra]() { + if (!this[_xfa_object.$extra]) { + const parent = this[_xfa_object.$getParent](); + + const root = this[_xfa_object.$getTemplateRoot](); + + const target = root[_xfa_object.$searchNode](this.target, parent); + + const leader = root[_xfa_object.$searchNode](this.leader, parent); + + const trailer = root[_xfa_object.$searchNode](this.trailer, parent); + + this[_xfa_object.$extra] = { + target: target && target[0] || null, + leader: leader && leader[0] || null, + trailer: trailer && trailer[0] || null, + addLeader: false, + addTrailer: false + }; + } + + return this[_xfa_object.$extra]; + } + +} + +class PageArea extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "pageArea", true); + this.blankOrNotBlank = (0, _utils.getStringOption)(attributes.blankOrNotBlank, ["any", "blank", "notBlank"]); + this.id = attributes.id || ""; + this.initialNumber = (0, _utils.getInteger)({ + data: attributes.initialNumber, + defaultValue: 1, + validate: x => true + }); + this.name = attributes.name || ""; + this.numbered = (0, _utils.getInteger)({ + data: attributes.numbered, + defaultValue: 1, + validate: x => true + }); + this.oddOrEven = (0, _utils.getStringOption)(attributes.oddOrEven, ["any", "even", "odd"]); + this.pagePosition = (0, _utils.getStringOption)(attributes.pagePosition, ["any", "first", "last", "only", "rest"]); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.desc = null; + this.extras = null; + this.medium = null; + this.occur = null; + this.area = new _xfa_object.XFAObjectArray(); + this.contentArea = new _xfa_object.XFAObjectArray(); + this.draw = new _xfa_object.XFAObjectArray(); + this.exclGroup = new _xfa_object.XFAObjectArray(); + this.field = new _xfa_object.XFAObjectArray(); + this.subform = new _xfa_object.XFAObjectArray(); + } + + [_xfa_object.$isUsable]() { + if (!this[_xfa_object.$extra]) { + this[_xfa_object.$extra] = { + numberOfUse: 0 + }; + return true; + } + + return !this.occur || this.occur.max === -1 || this[_xfa_object.$extra].numberOfUse < this.occur.max; + } + + [_xfa_object.$cleanPage]() { + delete this[_xfa_object.$extra]; + } + + [_xfa_object.$getNextPage]() { + if (!this[_xfa_object.$extra]) { + this[_xfa_object.$extra] = { + numberOfUse: 0 + }; + } + + const parent = this[_xfa_object.$getParent](); + + if (parent.relation === "orderedOccurrence") { + if (this[_xfa_object.$isUsable]()) { + this[_xfa_object.$extra].numberOfUse += 1; + return this; + } + } + + return parent[_xfa_object.$getNextPage](); + } + + [_xfa_object.$getAvailableSpace]() { + return this[_xfa_object.$extra].space || { + width: 0, + height: 0 + }; + } + + [_xfa_object.$toHTML]() { + if (!this[_xfa_object.$extra]) { + this[_xfa_object.$extra] = { + numberOfUse: 1 + }; + } + + const children = []; + this[_xfa_object.$extra].children = children; + const style = Object.create(null); + + if (this.medium && this.medium.short && this.medium.long) { + style.width = (0, _html_utils.measureToString)(this.medium.short); + style.height = (0, _html_utils.measureToString)(this.medium.long); + this[_xfa_object.$extra].space = { + width: this.medium.short, + height: this.medium.long + }; + + if (this.medium.orientation === "landscape") { + const x = style.width; + style.width = style.height; + style.height = x; + this[_xfa_object.$extra].space = { + width: this.medium.long, + height: this.medium.short + }; + } + } else { + (0, _util.warn)("XFA - No medium specified in pageArea: please file a bug."); + } + + this[_xfa_object.$childrenToHTML]({ + filter: new Set(["area", "draw", "field", "subform"]), + include: true + }); + + this[_xfa_object.$childrenToHTML]({ + filter: new Set(["contentArea"]), + include: true + }); + + return _utils.HTMLResult.success({ + name: "div", + children, + attributes: { + class: ["xfaPage"], + id: this[_xfa_object.$uid], + style, + xfaName: this.name + } + }); + } + +} + +class PageSet extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "pageSet", true); + this.duplexImposition = (0, _utils.getStringOption)(attributes.duplexImposition, ["longEdge", "shortEdge"]); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.relation = (0, _utils.getStringOption)(attributes.relation, ["orderedOccurrence", "duplexPaginated", "simplexPaginated"]); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.occur = null; + this.pageArea = new _xfa_object.XFAObjectArray(); + this.pageSet = new _xfa_object.XFAObjectArray(); + } + + [_xfa_object.$cleanPage]() { + for (const page of this.pageArea.children) { + page[_xfa_object.$cleanPage](); + } + + for (const page of this.pageSet.children) { + page[_xfa_object.$cleanPage](); + } + } + + [_xfa_object.$isUsable]() { + return !this.occur || this.occur.max === -1 || this[_xfa_object.$extra].numberOfUse < this.occur.max; + } + + [_xfa_object.$getNextPage]() { + if (!this[_xfa_object.$extra]) { + this[_xfa_object.$extra] = { + numberOfUse: 1, + pageIndex: -1, + pageSetIndex: -1 + }; + } + + if (this.relation === "orderedOccurrence") { + if (this[_xfa_object.$extra].pageIndex + 1 < this.pageArea.children.length) { + this[_xfa_object.$extra].pageIndex += 1; + const pageArea = this.pageArea.children[this[_xfa_object.$extra].pageIndex]; + return pageArea[_xfa_object.$getNextPage](); + } + + if (this[_xfa_object.$extra].pageSetIndex + 1 < this.pageSet.children.length) { + this[_xfa_object.$extra].pageSetIndex += 1; + return this.pageSet.children[this[_xfa_object.$extra].pageSetIndex][_xfa_object.$getNextPage](); + } + + if (this[_xfa_object.$isUsable]()) { + this[_xfa_object.$extra].numberOfUse += 1; + this[_xfa_object.$extra].pageIndex = -1; + this[_xfa_object.$extra].pageSetIndex = -1; + return this[_xfa_object.$getNextPage](); + } + + const parent = this[_xfa_object.$getParent](); + + if (parent instanceof PageSet) { + return parent[_xfa_object.$getNextPage](); + } + + this[_xfa_object.$cleanPage](); + + return this[_xfa_object.$getNextPage](); + } + + const pageNumber = this[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].pageNumber; + + const parity = pageNumber % 2 === 0 ? "even" : "odd"; + const position = pageNumber === 0 ? "first" : "rest"; + let page = this.pageArea.children.find(p => p.oddOrEven === parity && p.pagePosition === position); + + if (page) { + return page; + } + + page = this.pageArea.children.find(p => p.oddOrEven === "any" && p.pagePosition === position); + + if (page) { + return page; + } + + page = this.pageArea.children.find(p => p.oddOrEven === "any" && p.pagePosition === "any"); + + if (page) { + return page; + } + + return this.pageArea.children[0]; + } + +} + +class Para extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "para", true); + this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); + this.id = attributes.id || ""; + this.lineHeight = attributes.lineHeight ? (0, _utils.getMeasurement)(attributes.lineHeight, "0pt") : ""; + this.marginLeft = attributes.marginLeft ? (0, _utils.getMeasurement)(attributes.marginLeft, "0pt") : ""; + this.marginRight = attributes.marginRight ? (0, _utils.getMeasurement)(attributes.marginRight, "0pt") : ""; + this.orphans = (0, _utils.getInteger)({ + data: attributes.orphans, + defaultValue: 0, + validate: x => x >= 0 + }); + this.preserve = attributes.preserve || ""; + this.radixOffset = attributes.radixOffset ? (0, _utils.getMeasurement)(attributes.radixOffset, "0pt") : ""; + this.spaceAbove = attributes.spaceAbove ? (0, _utils.getMeasurement)(attributes.spaceAbove, "0pt") : ""; + this.spaceBelow = attributes.spaceBelow ? (0, _utils.getMeasurement)(attributes.spaceBelow, "0pt") : ""; + this.tabDefault = attributes.tabDefault ? (0, _utils.getMeasurement)(this.tabDefault) : ""; + this.tabStops = (attributes.tabStops || "").trim().split(/\s+/).map((x, i) => i % 2 === 1 ? (0, _utils.getMeasurement)(x) : x); + this.textIndent = attributes.textIndent ? (0, _utils.getMeasurement)(attributes.textIndent, "0pt") : ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.vAlign = (0, _utils.getStringOption)(attributes.vAlign, ["top", "bottom", "middle"]); + this.widows = (0, _utils.getInteger)({ + data: attributes.widows, + defaultValue: 0, + validate: x => x >= 0 + }); + this.hyphenation = null; + } + + [_xfa_object.$toStyle]() { + const style = (0, _html_utils.toStyle)(this, "hAlign"); + + if (this.marginLeft !== "") { + style.paddingLeft = (0, _html_utils.measureToString)(this.marginLeft); + } + + if (this.marginRight !== "") { + style.paddingight = (0, _html_utils.measureToString)(this.marginRight); + } + + if (this.spaceAbove !== "") { + style.paddingTop = (0, _html_utils.measureToString)(this.spaceAbove); + } + + if (this.spaceBelow !== "") { + style.paddingBottom = (0, _html_utils.measureToString)(this.spaceBelow); + } + + if (this.textIndent !== "") { + style.textIndent = (0, _html_utils.measureToString)(this.textIndent); + (0, _html_utils.fixTextIndent)(style); + } + + if (this.lineHeight > 0) { + style.lineHeight = (0, _html_utils.measureToString)(this.lineHeight); + } + + if (this.tabDefault !== "") { + style.tabSize = (0, _html_utils.measureToString)(this.tabDefault); + } + + if (this.tabStops.length > 0) {} + + if (this.hyphenatation) { + Object.assign(style, this.hyphenatation[_xfa_object.$toStyle]()); + } + + return style; + } + +} + +class PasswordEdit extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "passwordEdit", true); + this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]); + this.id = attributes.id || ""; + this.passwordChar = attributes.passwordChar || "*"; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.extras = null; + this.margin = null; + } + +} + +class Pattern extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "pattern", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["crossHatch", "crossDiagonal", "diagonalLeft", "diagonalRight", "horizontal", "vertical"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + + [_xfa_object.$toStyle](startColor) { + startColor = startColor ? startColor[_xfa_object.$toStyle]() : "#FFFFFF"; + const endColor = this.color ? this.color[_xfa_object.$toStyle]() : "#000000"; + const width = 5; + const cmd = "repeating-linear-gradient"; + const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${2 * width}px`; + + switch (this.type) { + case "crossHatch": + return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`; + + case "crossDiagonal": + return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`; + + case "diagonalLeft": + return `${cmd}(45deg,${colors})`; + + case "diagonalRight": + return `${cmd}(-45deg,${colors})`; + + case "horizontal": + return `${cmd}(to top,${colors})`; + + case "vertical": + return `${cmd}(to right,${colors})`; + } + + return ""; + } + +} + +class Picture extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "picture"); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Proto extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "proto", true); + this.appearanceFilter = new _xfa_object.XFAObjectArray(); + this.arc = new _xfa_object.XFAObjectArray(); + this.area = new _xfa_object.XFAObjectArray(); + this.assist = new _xfa_object.XFAObjectArray(); + this.barcode = new _xfa_object.XFAObjectArray(); + this.bindItems = new _xfa_object.XFAObjectArray(); + this.bookend = new _xfa_object.XFAObjectArray(); + this.boolean = new _xfa_object.XFAObjectArray(); + this.border = new _xfa_object.XFAObjectArray(); + this.break = new _xfa_object.XFAObjectArray(); + this.breakAfter = new _xfa_object.XFAObjectArray(); + this.breakBefore = new _xfa_object.XFAObjectArray(); + this.button = new _xfa_object.XFAObjectArray(); + this.calculate = new _xfa_object.XFAObjectArray(); + this.caption = new _xfa_object.XFAObjectArray(); + this.certificate = new _xfa_object.XFAObjectArray(); + this.certificates = new _xfa_object.XFAObjectArray(); + this.checkButton = new _xfa_object.XFAObjectArray(); + this.choiceList = new _xfa_object.XFAObjectArray(); + this.color = new _xfa_object.XFAObjectArray(); + this.comb = new _xfa_object.XFAObjectArray(); + this.connect = new _xfa_object.XFAObjectArray(); + this.contentArea = new _xfa_object.XFAObjectArray(); + this.corner = new _xfa_object.XFAObjectArray(); + this.date = new _xfa_object.XFAObjectArray(); + this.dateTime = new _xfa_object.XFAObjectArray(); + this.dateTimeEdit = new _xfa_object.XFAObjectArray(); + this.decimal = new _xfa_object.XFAObjectArray(); + this.defaultUi = new _xfa_object.XFAObjectArray(); + this.desc = new _xfa_object.XFAObjectArray(); + this.digestMethod = new _xfa_object.XFAObjectArray(); + this.digestMethods = new _xfa_object.XFAObjectArray(); + this.draw = new _xfa_object.XFAObjectArray(); + this.edge = new _xfa_object.XFAObjectArray(); + this.encoding = new _xfa_object.XFAObjectArray(); + this.encodings = new _xfa_object.XFAObjectArray(); + this.encrypt = new _xfa_object.XFAObjectArray(); + this.encryptData = new _xfa_object.XFAObjectArray(); + this.encryption = new _xfa_object.XFAObjectArray(); + this.encryptionMethod = new _xfa_object.XFAObjectArray(); + this.encryptionMethods = new _xfa_object.XFAObjectArray(); + this.event = new _xfa_object.XFAObjectArray(); + this.exData = new _xfa_object.XFAObjectArray(); + this.exObject = new _xfa_object.XFAObjectArray(); + this.exclGroup = new _xfa_object.XFAObjectArray(); + this.execute = new _xfa_object.XFAObjectArray(); + this.extras = new _xfa_object.XFAObjectArray(); + this.field = new _xfa_object.XFAObjectArray(); + this.fill = new _xfa_object.XFAObjectArray(); + this.filter = new _xfa_object.XFAObjectArray(); + this.float = new _xfa_object.XFAObjectArray(); + this.font = new _xfa_object.XFAObjectArray(); + this.format = new _xfa_object.XFAObjectArray(); + this.handler = new _xfa_object.XFAObjectArray(); + this.hyphenation = new _xfa_object.XFAObjectArray(); + this.image = new _xfa_object.XFAObjectArray(); + this.imageEdit = new _xfa_object.XFAObjectArray(); + this.integer = new _xfa_object.XFAObjectArray(); + this.issuers = new _xfa_object.XFAObjectArray(); + this.items = new _xfa_object.XFAObjectArray(); + this.keep = new _xfa_object.XFAObjectArray(); + this.keyUsage = new _xfa_object.XFAObjectArray(); + this.line = new _xfa_object.XFAObjectArray(); + this.linear = new _xfa_object.XFAObjectArray(); + this.lockDocument = new _xfa_object.XFAObjectArray(); + this.manifest = new _xfa_object.XFAObjectArray(); + this.margin = new _xfa_object.XFAObjectArray(); + this.mdp = new _xfa_object.XFAObjectArray(); + this.medium = new _xfa_object.XFAObjectArray(); + this.message = new _xfa_object.XFAObjectArray(); + this.numericEdit = new _xfa_object.XFAObjectArray(); + this.occur = new _xfa_object.XFAObjectArray(); + this.oid = new _xfa_object.XFAObjectArray(); + this.oids = new _xfa_object.XFAObjectArray(); + this.overflow = new _xfa_object.XFAObjectArray(); + this.pageArea = new _xfa_object.XFAObjectArray(); + this.pageSet = new _xfa_object.XFAObjectArray(); + this.para = new _xfa_object.XFAObjectArray(); + this.passwordEdit = new _xfa_object.XFAObjectArray(); + this.pattern = new _xfa_object.XFAObjectArray(); + this.picture = new _xfa_object.XFAObjectArray(); + this.radial = new _xfa_object.XFAObjectArray(); + this.reason = new _xfa_object.XFAObjectArray(); + this.reasons = new _xfa_object.XFAObjectArray(); + this.rectangle = new _xfa_object.XFAObjectArray(); + this.ref = new _xfa_object.XFAObjectArray(); + this.script = new _xfa_object.XFAObjectArray(); + this.setProperty = new _xfa_object.XFAObjectArray(); + this.signData = new _xfa_object.XFAObjectArray(); + this.signature = new _xfa_object.XFAObjectArray(); + this.signing = new _xfa_object.XFAObjectArray(); + this.solid = new _xfa_object.XFAObjectArray(); + this.speak = new _xfa_object.XFAObjectArray(); + this.stipple = new _xfa_object.XFAObjectArray(); + this.subform = new _xfa_object.XFAObjectArray(); + this.subformSet = new _xfa_object.XFAObjectArray(); + this.subjectDN = new _xfa_object.XFAObjectArray(); + this.subjectDNs = new _xfa_object.XFAObjectArray(); + this.submit = new _xfa_object.XFAObjectArray(); + this.text = new _xfa_object.XFAObjectArray(); + this.textEdit = new _xfa_object.XFAObjectArray(); + this.time = new _xfa_object.XFAObjectArray(); + this.timeStamp = new _xfa_object.XFAObjectArray(); + this.toolTip = new _xfa_object.XFAObjectArray(); + this.traversal = new _xfa_object.XFAObjectArray(); + this.traverse = new _xfa_object.XFAObjectArray(); + this.ui = new _xfa_object.XFAObjectArray(); + this.validate = new _xfa_object.XFAObjectArray(); + this.value = new _xfa_object.XFAObjectArray(); + this.variables = new _xfa_object.XFAObjectArray(); + } + +} + +class Radial extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "radial", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["toEdge", "toCenter"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + + [_xfa_object.$toStyle](startColor) { + startColor = startColor ? startColor[_xfa_object.$toStyle]() : "#FFFFFF"; + const endColor = this.color ? this.color[_xfa_object.$toStyle]() : "#000000"; + const colors = this.type === "toEdge" ? `${startColor},${endColor}` : `${endColor},${startColor}`; + return `radial-gradient(circle at center, ${colors})`; + } + +} + +class Reason extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "reason"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Reasons extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "reasons", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.reason = new _xfa_object.XFAObjectArray(); + } + +} + +class Rectangle extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "rectangle", true); + this.hand = (0, _utils.getStringOption)(attributes.hand, ["even", "left", "right"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.corner = new _xfa_object.XFAObjectArray(4); + this.edge = new _xfa_object.XFAObjectArray(4); + this.fill = null; + } + + [_xfa_object.$toHTML]() { + const edge = this.edge.children.length ? this.edge.children[0] : new Edge({}); + + const edgeStyle = edge[_xfa_object.$toStyle](); + + const style = Object.create(null); + + if (this.fill && this.fill.presence === "visible") { + Object.assign(style, this.fill[_xfa_object.$toStyle]()); + } else { + style.fill = "transparent"; + } + + style.strokeWidth = (0, _html_utils.measureToString)(edge.presence === "visible" ? edge.thickness : 0); + style.stroke = edgeStyle.color; + const corner = this.corner.children.length ? this.corner.children[0] : new Corner({}); + + const cornerStyle = corner[_xfa_object.$toStyle](); + + const rect = { + name: "rect", + attributes: { + xmlns: SVG_NS, + width: "100%", + height: "100%", + x: 0, + y: 0, + rx: cornerStyle.radius, + ry: cornerStyle.radius, + style + } + }; + const svg = { + name: "svg", + children: [rect], + attributes: { + xmlns: SVG_NS, + style: { + overflow: "visible" + }, + width: "100%", + height: "100%" + } + }; + + const parent = this[_xfa_object.$getParent]()[_xfa_object.$getParent](); + + if (hasMargin(parent)) { + return _utils.HTMLResult.success({ + name: "div", + attributes: { + style: { + display: "inline", + width: "100%", + height: "100%" + } + }, + children: [svg] + }); + } + + svg.attributes.style.position = "absolute"; + return _utils.HTMLResult.success(svg); + } + +} + +class RefElement extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "ref"); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Script extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "script"); + this.binding = attributes.binding || ""; + this.contentType = attributes.contentType || ""; + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.runAt = (0, _utils.getStringOption)(attributes.runAt, ["client", "both", "server"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class SetProperty extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "setProperty"); + this.connection = attributes.connection || ""; + this.ref = attributes.ref || ""; + this.target = attributes.target || ""; + } + +} + +exports.SetProperty = SetProperty; + +class SignData extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "signData", true); + this.id = attributes.id || ""; + this.operation = (0, _utils.getStringOption)(attributes.operation, ["sign", "clear", "verify"]); + this.ref = attributes.ref || ""; + this.target = attributes.target || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.filter = null; + this.manifest = null; + } + +} + +class Signature extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "signature", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["PDF1.3", "PDF1.6"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.extras = null; + this.filter = null; + this.manifest = null; + this.margin = null; + } + +} + +class Signing extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "signing", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.certificate = new _xfa_object.XFAObjectArray(); + } + +} + +class Solid extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "solid", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } + + [_xfa_object.$toStyle](startColor) { + return startColor ? startColor[_xfa_object.$toStyle]() : "#FFFFFF"; + } + +} + +class Speak extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "speak"); + this.disable = (0, _utils.getInteger)({ + data: attributes.disable, + defaultValue: 0, + validate: x => x === 1 + }); + this.id = attributes.id || ""; + this.priority = (0, _utils.getStringOption)(attributes.priority, ["custom", "caption", "name", "toolTip"]); + this.rid = attributes.rid || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Stipple extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "stipple", true); + this.id = attributes.id || ""; + this.rate = (0, _utils.getInteger)({ + data: attributes.rate, + defaultValue: 50, + validate: x => x >= 0 && x <= 100 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + + [_xfa_object.$toStyle](bgColor) { + const alpha = this.rate / 100; + return _util.Util.makeHexColor(Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha), Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha), Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha)); + } + +} + +class Subform extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "subform", true); + this.access = (0, _utils.getStringOption)(attributes.access, ["open", "nonInteractive", "protected", "readOnly"]); + this.allowMacro = (0, _utils.getInteger)({ + data: attributes.allowMacro, + defaultValue: 0, + validate: x => x === 1 + }); + this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); + this.colSpan = (0, _utils.getInteger)({ + data: attributes.colSpan, + defaultValue: 1, + validate: n => n >= 1 || n === -1 + }); + this.columnWidths = (attributes.columnWidths || "").trim().split(/\s+/).map(x => x === "-1" ? -1 : (0, _utils.getMeasurement)(x)); + this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : ""; + this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); + this.id = attributes.id || ""; + this.layout = (0, _utils.getStringOption)(attributes.layout, ["position", "lr-tb", "rl-row", "rl-tb", "row", "table", "tb"]); + this.locale = attributes.locale || ""; + this.maxH = (0, _utils.getMeasurement)(attributes.maxH, "0pt"); + this.maxW = (0, _utils.getMeasurement)(attributes.maxW, "0pt"); + this.mergeMode = (0, _utils.getStringOption)(attributes.mergeMode, ["consumeData", "matchTemplate"]); + this.minH = (0, _utils.getMeasurement)(attributes.minH, "0pt"); + this.minW = (0, _utils.getMeasurement)(attributes.minW, "0pt"); + this.name = attributes.name || ""; + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.restoreState = (0, _utils.getStringOption)(attributes.restoreState, ["manual", "auto"]); + this.scope = (0, _utils.getStringOption)(attributes.scope, ["name", "none"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : ""; + this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); + this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); + this.assist = null; + this.bind = null; + this.bookend = null; + this.border = null; + this.break = null; + this.calculate = null; + this.desc = null; + this.extras = null; + this.keep = null; + this.margin = null; + this.occur = null; + this.overflow = null; + this.pageSet = null; + this.para = null; + this.traversal = null; + this.validate = null; + this.variables = null; + this.area = new _xfa_object.XFAObjectArray(); + this.breakAfter = new _xfa_object.XFAObjectArray(); + this.breakBefore = new _xfa_object.XFAObjectArray(); + this.connect = new _xfa_object.XFAObjectArray(); + this.draw = new _xfa_object.XFAObjectArray(); + this.event = new _xfa_object.XFAObjectArray(); + this.exObject = new _xfa_object.XFAObjectArray(); + this.exclGroup = new _xfa_object.XFAObjectArray(); + this.field = new _xfa_object.XFAObjectArray(); + this.proto = new _xfa_object.XFAObjectArray(); + this.setProperty = new _xfa_object.XFAObjectArray(); + this.subform = new _xfa_object.XFAObjectArray(); + this.subformSet = new _xfa_object.XFAObjectArray(); + } + + [_xfa_object.$getSubformParent]() { + const parent = this[_xfa_object.$getParent](); + + if (parent instanceof SubformSet) { + return parent[_xfa_object.$getSubformParent](); + } + + return parent; + } + + [_xfa_object.$isBindable]() { + return true; + } + + [_xfa_object.$isThereMoreWidth]() { + return this.layout.endsWith("-tb") && this[_xfa_object.$extra].attempt === 0 && this[_xfa_object.$extra].numberInLine > 0 || this[_xfa_object.$getParent]()[_xfa_object.$isThereMoreWidth](); + } + + *[_xfa_object.$getContainedChildren]() { + yield* getContainedChildren(this); + } + + [_xfa_object.$flushHTML]() { + return (0, _layout.flushHTML)(this); + } + + [_xfa_object.$addHTML](html, bbox) { + (0, _layout.addHTML)(this, html, bbox); + } + + [_xfa_object.$getAvailableSpace]() { + return (0, _layout.getAvailableSpace)(this); + } + + [_xfa_object.$isSplittable]() { + const parent = this[_xfa_object.$getSubformParent](); + + if (!parent[_xfa_object.$isSplittable]()) { + return false; + } + + if (this[_xfa_object.$extra]._isSplittable !== undefined) { + return this[_xfa_object.$extra]._isSplittable; + } + + if (this.layout === "position" || this.layout.includes("row")) { + this[_xfa_object.$extra]._isSplittable = false; + return false; + } + + if (this.keep && this.keep.intact !== "none") { + this[_xfa_object.$extra]._isSplittable = false; + return false; + } + + if (parent.layout && parent.layout.endsWith("-tb") && parent[_xfa_object.$extra].numberInLine !== 0) { + return false; + } + + this[_xfa_object.$extra]._isSplittable = true; + return true; + } + + [_xfa_object.$toHTML](availableSpace) { + setTabIndex(this); + + if (this.break) { + if (this.break.after !== "auto" || this.break.afterTarget !== "") { + const node = new BreakAfter({ + targetType: this.break.after, + target: this.break.afterTarget, + startNew: this.break.startNew.toString() + }); + node[_xfa_object.$globalData] = this[_xfa_object.$globalData]; + + this[_xfa_object.$appendChild](node); + + this.breakAfter.push(node); + } + + if (this.break.before !== "auto" || this.break.beforeTarget !== "") { + const node = new BreakBefore({ + targetType: this.break.before, + target: this.break.beforeTarget, + startNew: this.break.startNew.toString() + }); + node[_xfa_object.$globalData] = this[_xfa_object.$globalData]; + + this[_xfa_object.$appendChild](node); + + this.breakBefore.push(node); + } + + if (this.break.overflowTarget !== "") { + const node = new Overflow({ + target: this.break.overflowTarget, + leader: this.break.overflowLeader, + trailer: this.break.overflowTrailer + }); + node[_xfa_object.$globalData] = this[_xfa_object.$globalData]; + + this[_xfa_object.$appendChild](node); + + this.overflow.push(node); + } + + this[_xfa_object.$removeChild](this.break); + + this.break = null; + } + + if (this.presence === "hidden" || this.presence === "inactive") { + return _utils.HTMLResult.EMPTY; + } + + if (this.breakBefore.children.length > 1 || this.breakAfter.children.length > 1) { + (0, _util.warn)("XFA - Several breakBefore or breakAfter in subforms: please file a bug."); + } + + if (this.breakBefore.children.length >= 1) { + const breakBefore = this.breakBefore.children[0]; + + if (handleBreak(breakBefore)) { + return _utils.HTMLResult.breakNode(breakBefore); + } + } + + if (this[_xfa_object.$extra] && this[_xfa_object.$extra].afterBreakAfter) { + return _utils.HTMLResult.EMPTY; + } + + (0, _html_utils.fixDimensions)(this); + const children = []; + const attributes = { + id: this[_xfa_object.$uid], + class: [] + }; + (0, _html_utils.setAccess)(this, attributes.class); + + if (!this[_xfa_object.$extra]) { + this[_xfa_object.$extra] = Object.create(null); + } + + Object.assign(this[_xfa_object.$extra], { + children, + line: null, + attributes, + attempt: 0, + numberInLine: 0, + availableSpace: { + width: Math.min(this.w || Infinity, availableSpace.width), + height: Math.min(this.h || Infinity, availableSpace.height) + }, + width: 0, + height: 0, + prevHeight: 0, + currentWidth: 0 + }); + + const root = this[_xfa_object.$getTemplateRoot](); + + const savedNoLayoutFailure = root[_xfa_object.$extra].noLayoutFailure; + + const isSplittable = this[_xfa_object.$isSplittable](); + + if (!isSplittable) { + setFirstUnsplittable(this); + } + + if (!(0, _layout.checkDimensions)(this, availableSpace)) { + return _utils.HTMLResult.FAILURE; + } + + const filter = new Set(["area", "draw", "exclGroup", "field", "subform", "subformSet"]); + + if (this.layout.includes("row")) { + const columnWidths = this[_xfa_object.$getSubformParent]().columnWidths; + + if (Array.isArray(columnWidths) && columnWidths.length > 0) { + this[_xfa_object.$extra].columnWidths = columnWidths; + this[_xfa_object.$extra].currentColumn = 0; + } + } + + const style = (0, _html_utils.toStyle)(this, "anchorType", "dimensions", "position", "presence", "border", "margin", "hAlign"); + const classNames = ["xfaSubform"]; + const cl = (0, _html_utils.layoutClass)(this); + + if (cl) { + classNames.push(cl); + } + + attributes.style = style; + attributes.class = classNames; + + if (this.name) { + attributes.xfaName = this.name; + } + + if (this.overflow) { + const overflowExtra = this.overflow[_xfa_object.$getExtra](); + + if (overflowExtra.addLeader) { + overflowExtra.addLeader = false; + handleOverflow(this, overflowExtra.leader, availableSpace); + } + } + + this[_xfa_object.$pushPara](); + + const isLrTb = this.layout === "lr-tb" || this.layout === "rl-tb"; + const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1; + + for (; this[_xfa_object.$extra].attempt < maxRun; this[_xfa_object.$extra].attempt++) { + if (isLrTb && this[_xfa_object.$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) { + this[_xfa_object.$extra].numberInLine = 0; + } + + const result = this[_xfa_object.$childrenToHTML]({ + filter, + include: true + }); + + if (result.success) { + break; + } + + if (result.isBreak()) { + this[_xfa_object.$popPara](); + + return result; + } + + if (isLrTb && this[_xfa_object.$extra].attempt === 0 && this[_xfa_object.$extra].numberInLine === 0 && !root[_xfa_object.$extra].noLayoutFailure) { + this[_xfa_object.$extra].attempt = maxRun; + break; + } + } + + this[_xfa_object.$popPara](); + + if (!isSplittable) { + unsetFirstUnsplittable(this); + } + + root[_xfa_object.$extra].noLayoutFailure = savedNoLayoutFailure; + + if (this[_xfa_object.$extra].attempt === maxRun) { + if (this.overflow) { + this[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].overflowNode = this.overflow; + } + + if (!isSplittable) { + delete this[_xfa_object.$extra]; + } + + return _utils.HTMLResult.FAILURE; + } + + if (this.overflow) { + const overflowExtra = this.overflow[_xfa_object.$getExtra](); + + if (overflowExtra.addTrailer) { + overflowExtra.addTrailer = false; + handleOverflow(this, overflowExtra.trailer, availableSpace); + } + } + + let marginH = 0; + let marginV = 0; + + if (this.margin) { + marginH = this.margin.leftInset + this.margin.rightInset; + marginV = this.margin.topInset + this.margin.bottomInset; + } + + const width = Math.max(this[_xfa_object.$extra].width + marginH, this.w || 0); + const height = Math.max(this[_xfa_object.$extra].height + marginV, this.h || 0); + const bbox = [this.x, this.y, width, height]; + + if (this.w === "") { + style.width = (0, _html_utils.measureToString)(width); + } + + if (this.h === "") { + style.height = (0, _html_utils.measureToString)(height); + } + + if ((style.width === "0px" || style.height === "0px") && children.length === 0) { + return _utils.HTMLResult.EMPTY; + } + + const html = { + name: "div", + attributes, + children + }; + applyAssist(this, attributes); + + const result = _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); + + if (this.breakAfter.children.length >= 1) { + const breakAfter = this.breakAfter.children[0]; + + if (handleBreak(breakAfter)) { + this[_xfa_object.$extra].afterBreakAfter = result; + return _utils.HTMLResult.breakNode(breakAfter); + } + } + + delete this[_xfa_object.$extra]; + return result; + } + +} + +class SubformSet extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "subformSet", true); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.relation = (0, _utils.getStringOption)(attributes.relation, ["ordered", "choice", "unordered"]); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.bookend = null; + this.break = null; + this.desc = null; + this.extras = null; + this.occur = null; + this.overflow = null; + this.breakAfter = new _xfa_object.XFAObjectArray(); + this.breakBefore = new _xfa_object.XFAObjectArray(); + this.subform = new _xfa_object.XFAObjectArray(); + this.subformSet = new _xfa_object.XFAObjectArray(); + } + + *[_xfa_object.$getContainedChildren]() { + yield* getContainedChildren(this); + } + + [_xfa_object.$getSubformParent]() { + let parent = this[_xfa_object.$getParent](); + + while (!(parent instanceof Subform)) { + parent = parent[_xfa_object.$getParent](); + } + + return parent; + } + + [_xfa_object.$isBindable]() { + return true; + } + +} + +class SubjectDN extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "subjectDN"); + this.delimiter = attributes.delimiter || ","; + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + + [_xfa_object.$finalize]() { + this[_xfa_object.$content] = new Map(this[_xfa_object.$content].split(this.delimiter).map(kv => { + kv = kv.split("=", 2); + kv[0] = kv[0].trim(); + return kv; + })); + } + +} + +class SubjectDNs extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "subjectDNs", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.subjectDN = new _xfa_object.XFAObjectArray(); + } + +} + +class Submit extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "submit", true); + this.embedPDF = (0, _utils.getInteger)({ + data: attributes.embedPDF, + defaultValue: 0, + validate: x => x === 1 + }); + this.format = (0, _utils.getStringOption)(attributes.format, ["xdp", "formdata", "pdf", "urlencoded", "xfd", "xml"]); + this.id = attributes.id || ""; + this.target = attributes.target || ""; + this.textEncoding = (0, _utils.getKeyword)({ + data: attributes.textEncoding ? attributes.textEncoding.toLowerCase() : "", + defaultValue: "", + validate: k => ["utf-8", "big-five", "fontspecific", "gbk", "gb-18030", "gb-2312", "ksc-5601", "none", "shift-jis", "ucs-2", "utf-16"].includes(k) || k.match(/iso-8859-\d{2}/) + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.xdpContent = attributes.xdpContent || ""; + this.encrypt = null; + this.encryptData = new _xfa_object.XFAObjectArray(); + this.signData = new _xfa_object.XFAObjectArray(); + } + +} + +class Template extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "template", true); + this.baseProfile = (0, _utils.getStringOption)(attributes.baseProfile, ["full", "interactiveForms"]); + this.extras = null; + this.subform = new _xfa_object.XFAObjectArray(); + } + + [_xfa_object.$finalize]() { + if (this.subform.children.length === 0) { + (0, _util.warn)("XFA - No subforms in template node."); + } + + if (this.subform.children.length >= 2) { + (0, _util.warn)("XFA - Several subforms in template node: please file a bug."); + } + + this[_xfa_object.$tabIndex] = DEFAULT_TAB_INDEX; + } + + [_xfa_object.$isSplittable]() { + return true; + } + + [_xfa_object.$searchNode](expr, container) { + if (expr.startsWith("#")) { + return [this[_xfa_object.$ids].get(expr.slice(1))]; + } + + return (0, _som.searchNode)(this, container, expr, true, true); + } + + *[_xfa_object.$toPages]() { + if (!this.subform.children.length) { + return _utils.HTMLResult.success({ + name: "div", + children: [] + }); + } + + this[_xfa_object.$extra] = { + overflowNode: null, + firstUnsplittable: null, + currentContentArea: null, + currentPageArea: null, + noLayoutFailure: false, + pageNumber: 1, + pagePosition: "first", + oddOrEven: "odd", + blankOrNotBlank: "nonBlank", + paraStack: [] + }; + const root = this.subform.children[0]; + + root.pageSet[_xfa_object.$cleanPage](); + + const pageAreas = root.pageSet.pageArea.children; + const mainHtml = { + name: "div", + children: [] + }; + let pageArea = null; + let breakBefore = null; + let breakBeforeTarget = null; + + if (root.breakBefore.children.length >= 1) { + breakBefore = root.breakBefore.children[0]; + breakBeforeTarget = breakBefore.target; + } else if (root.subform.children.length >= 1 && root.subform.children[0].breakBefore.children.length >= 1) { + breakBefore = root.subform.children[0].breakBefore.children[0]; + breakBeforeTarget = breakBefore.target; + } else if (root.break && root.break.beforeTarget) { + breakBefore = root.break; + breakBeforeTarget = breakBefore.beforeTarget; + } else if (root.subform.children.length >= 1 && root.subform.children[0].break && root.subform.children[0].break.beforeTarget) { + breakBefore = root.subform.children[0].break; + breakBeforeTarget = breakBefore.beforeTarget; + } + + if (breakBefore) { + const target = this[_xfa_object.$searchNode](breakBeforeTarget, breakBefore[_xfa_object.$getParent]()); + + if (target instanceof PageArea) { + pageArea = target; + breakBefore[_xfa_object.$extra] = {}; + } + } + + if (!pageArea) { + pageArea = pageAreas[0]; + } + + pageArea[_xfa_object.$extra] = { + numberOfUse: 1 + }; + + const pageAreaParent = pageArea[_xfa_object.$getParent](); + + pageAreaParent[_xfa_object.$extra] = { + numberOfUse: 1, + pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea), + pageSetIndex: 0 + }; + let targetPageArea; + let leader = null; + let trailer = null; + let hasSomething = true; + let hasSomethingCounter = 0; + let startIndex = 0; + + while (true) { + if (!hasSomething) { + mainHtml.children.pop(); + + if (++hasSomethingCounter === MAX_EMPTY_PAGES) { + (0, _util.warn)("XFA - Something goes wrong: please file a bug."); + return mainHtml; + } + } else { + hasSomethingCounter = 0; + } + + targetPageArea = null; + this[_xfa_object.$extra].currentPageArea = pageArea; + + const page = pageArea[_xfa_object.$toHTML]().html; + + mainHtml.children.push(page); + + if (leader) { + this[_xfa_object.$extra].noLayoutFailure = true; + page.children.push(leader[_xfa_object.$toHTML](pageArea[_xfa_object.$extra].space).html); + leader = null; + } + + if (trailer) { + this[_xfa_object.$extra].noLayoutFailure = true; + page.children.push(trailer[_xfa_object.$toHTML](pageArea[_xfa_object.$extra].space).html); + trailer = null; + } + + const contentAreas = pageArea.contentArea.children; + const htmlContentAreas = page.children.filter(node => node.attributes.class.includes("xfaContentarea")); + hasSomething = false; + this[_xfa_object.$extra].firstUnsplittable = null; + this[_xfa_object.$extra].noLayoutFailure = false; + + const flush = index => { + const html = root[_xfa_object.$flushHTML](); + + if (html) { + hasSomething = hasSomething || html.children && html.children.length !== 0; + htmlContentAreas[index].children.push(html); + } + }; + + for (let i = startIndex, ii = contentAreas.length; i < ii; i++) { + const contentArea = this[_xfa_object.$extra].currentContentArea = contentAreas[i]; + const space = { + width: contentArea.w, + height: contentArea.h + }; + startIndex = 0; + + if (leader) { + htmlContentAreas[i].children.push(leader[_xfa_object.$toHTML](space).html); + leader = null; + } + + if (trailer) { + htmlContentAreas[i].children.push(trailer[_xfa_object.$toHTML](space).html); + trailer = null; + } + + const html = root[_xfa_object.$toHTML](space); + + if (html.success) { + if (html.html) { + hasSomething = hasSomething || html.html.children && html.html.children.length !== 0; + htmlContentAreas[i].children.push(html.html); + } else if (!hasSomething && mainHtml.children.length > 1) { + mainHtml.children.pop(); + } + + return mainHtml; + } + + if (html.isBreak()) { + const node = html.breakNode; + flush(i); + + if (node.targetType === "auto") { + continue; + } + + if (node.leader) { + leader = this[_xfa_object.$searchNode](node.leader, node[_xfa_object.$getParent]()); + leader = leader ? leader[0] : null; + } + + if (node.trailer) { + trailer = this[_xfa_object.$searchNode](node.trailer, node[_xfa_object.$getParent]()); + trailer = trailer ? trailer[0] : null; + } + + if (node.targetType === "pageArea") { + targetPageArea = node[_xfa_object.$extra].target; + i = Infinity; + } else if (!node[_xfa_object.$extra].target) { + i = node[_xfa_object.$extra].index; + } else { + targetPageArea = node[_xfa_object.$extra].target; + startIndex = node[_xfa_object.$extra].index + 1; + i = Infinity; + } + + continue; + } + + if (this[_xfa_object.$extra].overflowNode) { + const node = this[_xfa_object.$extra].overflowNode; + this[_xfa_object.$extra].overflowNode = null; + + const overflowExtra = node[_xfa_object.$getExtra](); + + const target = overflowExtra.target; + overflowExtra.addLeader = overflowExtra.leader !== null; + overflowExtra.addTrailer = overflowExtra.trailer !== null; + flush(i); + const currentIndex = i; + i = Infinity; + + if (target instanceof PageArea) { + targetPageArea = target; + } else if (target instanceof ContentArea) { + const index = contentAreas.indexOf(target); + + if (index !== -1) { + if (index > currentIndex) { + i = index - 1; + } else { + startIndex = index; + } + } else { + targetPageArea = target[_xfa_object.$getParent](); + startIndex = targetPageArea.contentArea.children.indexOf(target); + } + } + + continue; + } + + flush(i); + } + + this[_xfa_object.$extra].pageNumber += 1; + + if (targetPageArea) { + if (targetPageArea[_xfa_object.$isUsable]()) { + targetPageArea[_xfa_object.$extra].numberOfUse += 1; + } else { + targetPageArea = null; + } + } + + pageArea = targetPageArea || pageArea[_xfa_object.$getNextPage](); + yield null; + } + } + +} + +exports.Template = Template; + +class Text extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "text"); + this.id = attributes.id || ""; + this.maxChars = (0, _utils.getInteger)({ + data: attributes.maxChars, + defaultValue: 0, + validate: x => x >= 0 + }); + this.name = attributes.name || ""; + this.rid = attributes.rid || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + + [_xfa_object.$acceptWhitespace]() { + return true; + } + + [_xfa_object.$onChild](child) { + if (child[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.xhtml.id) { + this[_xfa_object.$content] = child; + return true; + } + + (0, _util.warn)(`XFA - Invalid content in Text: ${child[_xfa_object.$nodeName]}.`); + return false; + } + + [_xfa_object.$onText](str) { + if (this[_xfa_object.$content] instanceof _xfa_object.XFAObject) { + return; + } + + super[_xfa_object.$onText](str); + } + + [_xfa_object.$finalize]() { + if (typeof this[_xfa_object.$content] === "string") { + this[_xfa_object.$content] = this[_xfa_object.$content].replace(/\r\n/g, "\n"); + } + } + + [_xfa_object.$getExtra]() { + if (typeof this[_xfa_object.$content] === "string") { + return this[_xfa_object.$content].split(/[\u2029\u2028\n]/).reduce((acc, line) => { + if (line) { + acc.push(line); + } + + return acc; + }, []).join("\n"); + } + + return this[_xfa_object.$content][_xfa_object.$text](); + } + + [_xfa_object.$toHTML](availableSpace) { + if (typeof this[_xfa_object.$content] === "string") { + const html = valueToHtml(this[_xfa_object.$content]).html; + + if (this[_xfa_object.$content].includes("\u2029")) { + html.name = "div"; + html.children = []; + + this[_xfa_object.$content].split("\u2029").map(para => para.split(/[\u2028\n]/).reduce((acc, line) => { + acc.push({ + name: "span", + value: line + }, { + name: "br" + }); + return acc; + }, [])).forEach(lines => { + html.children.push({ + name: "p", + children: lines + }); + }); + } else if (/[\u2028\n]/.test(this[_xfa_object.$content])) { + html.name = "div"; + html.children = []; + + this[_xfa_object.$content].split(/[\u2028\n]/).forEach(line => { + html.children.push({ + name: "span", + value: line + }, { + name: "br" + }); + }); + } + + return _utils.HTMLResult.success(html); + } + + return this[_xfa_object.$content][_xfa_object.$toHTML](availableSpace); + } + +} + +exports.Text = Text; + +class TextEdit extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "textEdit", true); + this.allowRichText = (0, _utils.getInteger)({ + data: attributes.allowRichText, + defaultValue: 0, + validate: x => x === 1 + }); + this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]); + this.id = attributes.id || ""; + this.multiLine = (0, _utils.getInteger)({ + data: attributes.multiLine, + defaultValue: "", + validate: x => x === 0 || x === 1 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.vScrollPolicy = (0, _utils.getStringOption)(attributes.vScrollPolicy, ["auto", "off", "on"]); + this.border = null; + this.comb = null; + this.extras = null; + this.margin = null; + } + + [_xfa_object.$toHTML](availableSpace) { + const style = (0, _html_utils.toStyle)(this, "border", "font", "margin"); + let html; + + const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent](); + + if (this.multiLine === "") { + this.multiLine = field instanceof Draw ? 1 : 0; + } + + if (this.multiLine === 1) { + html = { + name: "textarea", + attributes: { + dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid], + fieldId: field[_xfa_object.$uid], + class: ["xfaTextfield"], + style, + "aria-label": ariaLabel(field), + "aria-required": false + } + }; + } else { + html = { + name: "input", + attributes: { + type: "text", + dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid], + fieldId: field[_xfa_object.$uid], + class: ["xfaTextfield"], + style, + "aria-label": ariaLabel(field), + "aria-required": false + } + }; + } + + if (isRequired(field)) { + html.attributes["aria-required"] = true; + html.attributes.required = true; + } + + return _utils.HTMLResult.success({ + name: "label", + attributes: { + class: ["xfaLabel"] + }, + children: [html] + }); + } + +} + +class Time extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "time"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + + [_xfa_object.$finalize]() { + const date = this[_xfa_object.$content].trim(); + + this[_xfa_object.$content] = date ? new Date(date) : null; + } + + [_xfa_object.$toHTML](availableSpace) { + return valueToHtml(this[_xfa_object.$content] ? this[_xfa_object.$content].toString() : ""); + } + +} + +class TimeStamp extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "timeStamp"); + this.id = attributes.id || ""; + this.server = attributes.server || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class ToolTip extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "toolTip"); + this.id = attributes.id || ""; + this.rid = attributes.rid || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Traversal extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "traversal", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.traverse = new _xfa_object.XFAObjectArray(); + } + +} + +class Traverse extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "traverse", true); + this.id = attributes.id || ""; + this.operation = (0, _utils.getStringOption)(attributes.operation, ["next", "back", "down", "first", "left", "right", "up"]); + this.ref = attributes.ref || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.script = null; + } + + get name() { + return this.operation; + } + + [_xfa_object.$isTransparent]() { + return false; + } + +} + +class Ui extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "ui", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.picture = null; + this.barcode = null; + this.button = null; + this.checkButton = null; + this.choiceList = null; + this.dateTimeEdit = null; + this.defaultUi = null; + this.imageEdit = null; + this.numericEdit = null; + this.passwordEdit = null; + this.signature = null; + this.textEdit = null; + } + + [_xfa_object.$getExtra]() { + if (this[_xfa_object.$extra] === undefined) { + for (const name of Object.getOwnPropertyNames(this)) { + if (name === "extras" || name === "picture") { + continue; + } + + const obj = this[name]; + + if (!(obj instanceof _xfa_object.XFAObject)) { + continue; + } + + this[_xfa_object.$extra] = obj; + return obj; + } + + this[_xfa_object.$extra] = null; + } + + return this[_xfa_object.$extra]; + } + + [_xfa_object.$toHTML](availableSpace) { + const obj = this[_xfa_object.$getExtra](); + + if (obj) { + return obj[_xfa_object.$toHTML](availableSpace); + } + + return _utils.HTMLResult.EMPTY; + } + +} + +class Validate extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "validate", true); + this.formatTest = (0, _utils.getStringOption)(attributes.formatTest, ["warning", "disabled", "error"]); + this.id = attributes.id || ""; + this.nullTest = (0, _utils.getStringOption)(attributes.nullTest, ["disabled", "error", "warning"]); + this.scriptTest = (0, _utils.getStringOption)(attributes.scriptTest, ["error", "disabled", "warning"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.message = null; + this.picture = null; + this.script = null; + } + +} + +class Value extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "value", true); + this.id = attributes.id || ""; + this.override = (0, _utils.getInteger)({ + data: attributes.override, + defaultValue: 0, + validate: x => x === 1 + }); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.arc = null; + this.boolean = null; + this.date = null; + this.dateTime = null; + this.decimal = null; + this.exData = null; + this.float = null; + this.image = null; + this.integer = null; + this.line = null; + this.rectangle = null; + this.text = null; + this.time = null; + } + + [_xfa_object.$setValue](value) { + const parent = this[_xfa_object.$getParent](); + + if (parent instanceof Field) { + if (parent.ui && parent.ui.imageEdit) { + if (!this.image) { + this.image = new Image({}); + + this[_xfa_object.$appendChild](this.image); + } + + this.image[_xfa_object.$content] = value[_xfa_object.$content]; + return; + } + } + + const valueName = value[_xfa_object.$nodeName]; + + if (this[valueName] !== null) { + this[valueName][_xfa_object.$content] = value[_xfa_object.$content]; + return; + } + + for (const name of Object.getOwnPropertyNames(this)) { + const obj = this[name]; + + if (obj instanceof _xfa_object.XFAObject) { + this[name] = null; + + this[_xfa_object.$removeChild](obj); + } + } + + this[value[_xfa_object.$nodeName]] = value; + + this[_xfa_object.$appendChild](value); + } + + [_xfa_object.$text]() { + if (this.exData) { + if (typeof this.exData[_xfa_object.$content] === "string") { + return this.exData[_xfa_object.$content].trim(); + } + + return this.exData[_xfa_object.$content][_xfa_object.$text]().trim(); + } + + for (const name of Object.getOwnPropertyNames(this)) { + if (name === "image") { + continue; + } + + const obj = this[name]; + + if (obj instanceof _xfa_object.XFAObject) { + return (obj[_xfa_object.$content] || "").toString().trim(); + } + } + + return null; + } + + [_xfa_object.$toHTML](availableSpace) { + for (const name of Object.getOwnPropertyNames(this)) { + const obj = this[name]; + + if (!(obj instanceof _xfa_object.XFAObject)) { + continue; + } + + return obj[_xfa_object.$toHTML](availableSpace); + } + + return _utils.HTMLResult.EMPTY; + } + +} + +exports.Value = Value; + +class Variables extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "variables", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.boolean = new _xfa_object.XFAObjectArray(); + this.date = new _xfa_object.XFAObjectArray(); + this.dateTime = new _xfa_object.XFAObjectArray(); + this.decimal = new _xfa_object.XFAObjectArray(); + this.exData = new _xfa_object.XFAObjectArray(); + this.float = new _xfa_object.XFAObjectArray(); + this.image = new _xfa_object.XFAObjectArray(); + this.integer = new _xfa_object.XFAObjectArray(); + this.manifest = new _xfa_object.XFAObjectArray(); + this.script = new _xfa_object.XFAObjectArray(); + this.text = new _xfa_object.XFAObjectArray(); + this.time = new _xfa_object.XFAObjectArray(); + } + + [_xfa_object.$isTransparent]() { + return true; + } + +} + +class TemplateNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (TemplateNamespace.hasOwnProperty(name)) { + const node = TemplateNamespace[name](attributes); + + node[_xfa_object.$setSetAttributes](attributes); + + return node; + } + + return undefined; + } + + static appearanceFilter(attrs) { + return new AppearanceFilter(attrs); + } + + static arc(attrs) { + return new Arc(attrs); + } + + static area(attrs) { + return new Area(attrs); + } + + static assist(attrs) { + return new Assist(attrs); + } + + static barcode(attrs) { + return new Barcode(attrs); + } + + static bind(attrs) { + return new Bind(attrs); + } + + static bindItems(attrs) { + return new BindItems(attrs); + } + + static bookend(attrs) { + return new Bookend(attrs); + } + + static boolean(attrs) { + return new BooleanElement(attrs); + } + + static border(attrs) { + return new Border(attrs); + } + + static break(attrs) { + return new Break(attrs); + } + + static breakAfter(attrs) { + return new BreakAfter(attrs); + } + + static breakBefore(attrs) { + return new BreakBefore(attrs); + } + + static button(attrs) { + return new Button(attrs); + } + + static calculate(attrs) { + return new Calculate(attrs); + } + + static caption(attrs) { + return new Caption(attrs); + } + + static certificate(attrs) { + return new Certificate(attrs); + } + + static certificates(attrs) { + return new Certificates(attrs); + } + + static checkButton(attrs) { + return new CheckButton(attrs); + } + + static choiceList(attrs) { + return new ChoiceList(attrs); + } + + static color(attrs) { + return new Color(attrs); + } + + static comb(attrs) { + return new Comb(attrs); + } + + static connect(attrs) { + return new Connect(attrs); + } + + static contentArea(attrs) { + return new ContentArea(attrs); + } + + static corner(attrs) { + return new Corner(attrs); + } + + static date(attrs) { + return new DateElement(attrs); + } + + static dateTime(attrs) { + return new DateTime(attrs); + } + + static dateTimeEdit(attrs) { + return new DateTimeEdit(attrs); + } + + static decimal(attrs) { + return new Decimal(attrs); + } + + static defaultUi(attrs) { + return new DefaultUi(attrs); + } + + static desc(attrs) { + return new Desc(attrs); + } + + static digestMethod(attrs) { + return new DigestMethod(attrs); + } + + static digestMethods(attrs) { + return new DigestMethods(attrs); + } + + static draw(attrs) { + return new Draw(attrs); + } + + static edge(attrs) { + return new Edge(attrs); + } + + static encoding(attrs) { + return new Encoding(attrs); + } + + static encodings(attrs) { + return new Encodings(attrs); + } + + static encrypt(attrs) { + return new Encrypt(attrs); + } + + static encryptData(attrs) { + return new EncryptData(attrs); + } + + static encryption(attrs) { + return new Encryption(attrs); + } + + static encryptionMethod(attrs) { + return new EncryptionMethod(attrs); + } + + static encryptionMethods(attrs) { + return new EncryptionMethods(attrs); + } + + static event(attrs) { + return new Event(attrs); + } + + static exData(attrs) { + return new ExData(attrs); + } + + static exObject(attrs) { + return new ExObject(attrs); + } + + static exclGroup(attrs) { + return new ExclGroup(attrs); + } + + static execute(attrs) { + return new Execute(attrs); + } + + static extras(attrs) { + return new Extras(attrs); + } + + static field(attrs) { + return new Field(attrs); + } + + static fill(attrs) { + return new Fill(attrs); + } + + static filter(attrs) { + return new Filter(attrs); + } + + static float(attrs) { + return new Float(attrs); + } + + static font(attrs) { + return new Font(attrs); + } + + static format(attrs) { + return new Format(attrs); + } + + static handler(attrs) { + return new Handler(attrs); + } + + static hyphenation(attrs) { + return new Hyphenation(attrs); + } + + static image(attrs) { + return new Image(attrs); + } + + static imageEdit(attrs) { + return new ImageEdit(attrs); + } + + static integer(attrs) { + return new Integer(attrs); + } + + static issuers(attrs) { + return new Issuers(attrs); + } + + static items(attrs) { + return new Items(attrs); + } + + static keep(attrs) { + return new Keep(attrs); + } + + static keyUsage(attrs) { + return new KeyUsage(attrs); + } + + static line(attrs) { + return new Line(attrs); + } + + static linear(attrs) { + return new Linear(attrs); + } + + static lockDocument(attrs) { + return new LockDocument(attrs); + } + + static manifest(attrs) { + return new Manifest(attrs); + } + + static margin(attrs) { + return new Margin(attrs); + } + + static mdp(attrs) { + return new Mdp(attrs); + } + + static medium(attrs) { + return new Medium(attrs); + } + + static message(attrs) { + return new Message(attrs); + } + + static numericEdit(attrs) { + return new NumericEdit(attrs); + } + + static occur(attrs) { + return new Occur(attrs); + } + + static oid(attrs) { + return new Oid(attrs); + } + + static oids(attrs) { + return new Oids(attrs); + } + + static overflow(attrs) { + return new Overflow(attrs); + } + + static pageArea(attrs) { + return new PageArea(attrs); + } + + static pageSet(attrs) { + return new PageSet(attrs); + } + + static para(attrs) { + return new Para(attrs); + } + + static passwordEdit(attrs) { + return new PasswordEdit(attrs); + } + + static pattern(attrs) { + return new Pattern(attrs); + } + + static picture(attrs) { + return new Picture(attrs); + } + + static proto(attrs) { + return new Proto(attrs); + } + + static radial(attrs) { + return new Radial(attrs); + } + + static reason(attrs) { + return new Reason(attrs); + } + + static reasons(attrs) { + return new Reasons(attrs); + } + + static rectangle(attrs) { + return new Rectangle(attrs); + } + + static ref(attrs) { + return new RefElement(attrs); + } + + static script(attrs) { + return new Script(attrs); + } + + static setProperty(attrs) { + return new SetProperty(attrs); + } + + static signData(attrs) { + return new SignData(attrs); + } + + static signature(attrs) { + return new Signature(attrs); + } + + static signing(attrs) { + return new Signing(attrs); + } + + static solid(attrs) { + return new Solid(attrs); + } + + static speak(attrs) { + return new Speak(attrs); + } + + static stipple(attrs) { + return new Stipple(attrs); + } + + static subform(attrs) { + return new Subform(attrs); + } + + static subformSet(attrs) { + return new SubformSet(attrs); + } + + static subjectDN(attrs) { + return new SubjectDN(attrs); + } + + static subjectDNs(attrs) { + return new SubjectDNs(attrs); + } + + static submit(attrs) { + return new Submit(attrs); + } + + static template(attrs) { + return new Template(attrs); + } + + static text(attrs) { + return new Text(attrs); + } + + static textEdit(attrs) { + return new TextEdit(attrs); + } + + static time(attrs) { + return new Time(attrs); + } + + static timeStamp(attrs) { + return new TimeStamp(attrs); + } + + static toolTip(attrs) { + return new ToolTip(attrs); + } + + static traversal(attrs) { + return new Traversal(attrs); + } + + static traverse(attrs) { + return new Traverse(attrs); + } + + static ui(attrs) { + return new Ui(attrs); + } + + static validate(attrs) { + return new Validate(attrs); + } + + static value(attrs) { + return new Value(attrs); + } + + static variables(attrs) { + return new Variables(attrs); + } + +} + +exports.TemplateNamespace = TemplateNamespace; + +/***/ }), +/* 208 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.addHTML = addHTML; +exports.checkDimensions = checkDimensions; +exports.flushHTML = flushHTML; +exports.getAvailableSpace = getAvailableSpace; + +var _xfa_object = __w_pdfjs_require__(202); + +var _html_utils = __w_pdfjs_require__(209); + +function createLine(node, children) { + return { + name: "div", + attributes: { + class: [node.layout === "lr-tb" ? "xfaLr" : "xfaRl"] + }, + children + }; +} + +function flushHTML(node) { + if (!node[_xfa_object.$extra]) { + return null; + } + + const attributes = node[_xfa_object.$extra].attributes; + const html = { + name: "div", + attributes, + children: node[_xfa_object.$extra].children + }; + + if (node[_xfa_object.$extra].failingNode) { + const htmlFromFailing = node[_xfa_object.$extra].failingNode[_xfa_object.$flushHTML](); + + if (htmlFromFailing) { + if (node.layout.endsWith("-tb")) { + html.children.push(createLine(node, [htmlFromFailing])); + } else { + html.children.push(htmlFromFailing); + } + } + } + + if (html.children.length === 0) { + return null; + } + + return html; +} + +function addHTML(node, html, bbox) { + const extra = node[_xfa_object.$extra]; + const availableSpace = extra.availableSpace; + const [x, y, w, h] = bbox; + + switch (node.layout) { + case "position": + { + extra.width = Math.max(extra.width, x + w); + extra.height = Math.max(extra.height, y + h); + extra.children.push(html); + break; + } + + case "lr-tb": + case "rl-tb": + if (!extra.line || extra.attempt === 1) { + extra.line = createLine(node, []); + extra.children.push(extra.line); + extra.numberInLine = 0; + } + + extra.numberInLine += 1; + extra.line.children.push(html); + + if (extra.attempt === 0) { + extra.currentWidth += w; + extra.height = Math.max(extra.height, extra.prevHeight + h); + } else { + extra.currentWidth = w; + extra.prevHeight = extra.height; + extra.height += h; + extra.attempt = 0; + } + + extra.width = Math.max(extra.width, extra.currentWidth); + break; + + case "rl-row": + case "row": + { + extra.children.push(html); + extra.width += w; + extra.height = Math.max(extra.height, h); + const height = (0, _html_utils.measureToString)(extra.height); + + for (const child of extra.children) { + child.attributes.style.height = height; + } + + break; + } + + case "table": + { + extra.width = Math.min(availableSpace.width, Math.max(extra.width, w)); + extra.height += h; + extra.children.push(html); + break; + } + + case "tb": + { + extra.width = Math.min(availableSpace.width, Math.max(extra.width, w)); + extra.height += h; + extra.children.push(html); + break; + } + } +} + +function getAvailableSpace(node) { + const availableSpace = node[_xfa_object.$extra].availableSpace; + const marginV = node.margin ? node.margin.topInset + node.margin.bottomInset : 0; + const marginH = node.margin ? node.margin.leftInset + node.margin.rightInset : 0; + + switch (node.layout) { + case "lr-tb": + case "rl-tb": + if (node[_xfa_object.$extra].attempt === 0) { + return { + width: availableSpace.width - marginH - node[_xfa_object.$extra].currentWidth, + height: availableSpace.height - marginV - node[_xfa_object.$extra].prevHeight + }; + } + + return { + width: availableSpace.width - marginH, + height: availableSpace.height - marginV - node[_xfa_object.$extra].height + }; + + case "rl-row": + case "row": + const width = node[_xfa_object.$extra].columnWidths.slice(node[_xfa_object.$extra].currentColumn).reduce((a, x) => a + x); + + return { + width, + height: availableSpace.height - marginH + }; + + case "table": + case "tb": + return { + width: availableSpace.width - marginH, + height: availableSpace.height - marginV - node[_xfa_object.$extra].height + }; + + case "position": + default: + return availableSpace; + } +} + +function getTransformedBBox(node) { + let w = node.w === "" ? NaN : node.w; + let h = node.h === "" ? NaN : node.h; + let [centerX, centerY] = [0, 0]; + + switch (node.anchorType || "") { + case "bottomCenter": + [centerX, centerY] = [w / 2, h]; + break; + + case "bottomLeft": + [centerX, centerY] = [0, h]; + break; + + case "bottomRight": + [centerX, centerY] = [w, h]; + break; + + case "middleCenter": + [centerX, centerY] = [w / 2, h / 2]; + break; + + case "middleLeft": + [centerX, centerY] = [0, h / 2]; + break; + + case "middleRight": + [centerX, centerY] = [w, h / 2]; + break; + + case "topCenter": + [centerX, centerY] = [w / 2, 0]; + break; + + case "topRight": + [centerX, centerY] = [w, 0]; + break; + } + + let x, y; + + switch (node.rotate || 0) { + case 0: + [x, y] = [-centerX, -centerY]; + break; + + case 90: + [x, y] = [-centerY, centerX]; + [w, h] = [h, -w]; + break; + + case 180: + [x, y] = [centerX, centerY]; + [w, h] = [-w, -h]; + break; + + case 270: + [x, y] = [centerY, -centerX]; + [w, h] = [-h, w]; + break; + } + + return [node.x + x + Math.min(0, w), node.y + y + Math.min(0, h), Math.abs(w), Math.abs(h)]; +} + +function checkDimensions(node, space) { + if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].firstUnsplittable === null) { + return true; + } + + if (node.w === 0 || node.h === 0) { + return true; + } + + const ERROR = 2; + + const parent = node[_xfa_object.$getSubformParent](); + + const attempt = parent[_xfa_object.$extra] && parent[_xfa_object.$extra].attempt || 0; + const [, y, w, h] = getTransformedBBox(node); + + switch (parent.layout) { + case "lr-tb": + case "rl-tb": + if (attempt === 0) { + if (!node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) { + if (node.h !== "" && Math.round(h - space.height) > ERROR) { + return false; + } + + if (node.w !== "") { + if (Math.round(w - space.width) <= ERROR) { + return true; + } + + if (parent[_xfa_object.$extra].numberInLine === 0) { + return space.height > ERROR; + } + + return false; + } + + return space.width > ERROR; + } + + if (node.w !== "") { + return Math.round(w - space.width) <= ERROR; + } + + return space.width > ERROR; + } + + if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) { + return true; + } + + if (node.h !== "" && Math.round(h - space.height) > ERROR) { + return false; + } + + if (node.w === "" || Math.round(w - space.width) <= ERROR) { + return space.height > ERROR; + } + + if (parent[_xfa_object.$isThereMoreWidth]()) { + return false; + } + + return space.height > ERROR; + + case "table": + case "tb": + if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) { + return true; + } + + if (node.h !== "" && !node[_xfa_object.$isSplittable]()) { + return Math.round(h - space.height) <= ERROR; + } + + if (node.w === "" || Math.round(w - space.width) <= ERROR) { + return space.height > ERROR; + } + + if (parent[_xfa_object.$isThereMoreWidth]()) { + return false; + } + + return space.height > ERROR; + + case "position": + if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) { + return true; + } + + if (node.h === "" || Math.round(h + y - space.height) <= ERROR) { + return true; + } + + const area = node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].currentContentArea; + + return h + y > area.h; + + case "rl-row": + case "row": + if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) { + return true; + } + + if (node.h !== "") { + return Math.round(h - space.height) <= ERROR; + } + + return true; + + default: + return true; + } +} + +/***/ }), +/* 209 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.computeBbox = computeBbox; +exports.createWrapper = createWrapper; +exports.fixDimensions = fixDimensions; +exports.fixTextIndent = fixTextIndent; +exports.fixURL = fixURL; +exports.isPrintOnly = isPrintOnly; +exports.layoutClass = layoutClass; +exports.layoutNode = layoutNode; +exports.measureToString = measureToString; +exports.setAccess = setAccess; +exports.setFontFamily = setFontFamily; +exports.setMinMaxDimensions = setMinMaxDimensions; +exports.setPara = setPara; +exports.toStyle = toStyle; + +var _xfa_object = __w_pdfjs_require__(202); + +var _util = __w_pdfjs_require__(2); + +var _utils = __w_pdfjs_require__(203); + +var _fonts = __w_pdfjs_require__(210); + +var _text = __w_pdfjs_require__(211); + +function measureToString(m) { + if (typeof m === "string") { + return "0px"; + } + + return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`; +} + +const converters = { + anchorType(node, style) { + const parent = node[_xfa_object.$getSubformParent](); + + if (!parent || parent.layout && parent.layout !== "position") { + return; + } + + if (!("transform" in style)) { + style.transform = ""; + } + + switch (node.anchorType) { + case "bottomCenter": + style.transform += "translate(-50%, -100%)"; + break; + + case "bottomLeft": + style.transform += "translate(0,-100%)"; + break; + + case "bottomRight": + style.transform += "translate(-100%,-100%)"; + break; + + case "middleCenter": + style.transform += "translate(-50%,-50%)"; + break; + + case "middleLeft": + style.transform += "translate(0,-50%)"; + break; + + case "middleRight": + style.transform += "translate(-100%,-50%)"; + break; + + case "topCenter": + style.transform += "translate(-50%,0)"; + break; + + case "topRight": + style.transform += "translate(-100%,0)"; + break; + } + }, + + dimensions(node, style) { + const parent = node[_xfa_object.$getSubformParent](); + + let width = node.w; + const height = node.h; + + if (parent.layout && parent.layout.includes("row")) { + const extra = parent[_xfa_object.$extra]; + const colSpan = node.colSpan; + let w; + + if (colSpan === -1) { + w = extra.columnWidths.slice(extra.currentColumn).reduce((a, x) => a + x, 0); + extra.currentColumn = 0; + } else { + w = extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan).reduce((a, x) => a + x, 0); + extra.currentColumn = (extra.currentColumn + node.colSpan) % extra.columnWidths.length; + } + + if (!isNaN(w)) { + width = node.w = w; + } + } + + if (width !== "") { + style.width = measureToString(width); + } else { + style.width = "auto"; + } + + if (height !== "") { + style.height = measureToString(height); + } else { + style.height = "auto"; + } + }, + + position(node, style) { + const parent = node[_xfa_object.$getSubformParent](); + + if (parent && parent.layout && parent.layout !== "position") { + return; + } + + style.position = "absolute"; + style.left = measureToString(node.x); + style.top = measureToString(node.y); + }, + + rotate(node, style) { + if (node.rotate) { + if (!("transform" in style)) { + style.transform = ""; + } + + style.transform += `rotate(-${node.rotate}deg)`; + style.transformOrigin = "top left"; + } + }, + + presence(node, style) { + switch (node.presence) { + case "invisible": + style.visibility = "hidden"; + break; + + case "hidden": + case "inactive": + style.display = "none"; + break; + } + }, + + hAlign(node, style) { + if (node[_xfa_object.$nodeName] === "para") { + switch (node.hAlign) { + case "justifyAll": + style.textAlign = "justify-all"; + break; + + case "radix": + style.textAlign = "left"; + break; + + default: + style.textAlign = node.hAlign; + } + } else { + switch (node.hAlign) { + case "left": + style.alignSelf = "start"; + break; + + case "center": + style.alignSelf = "center"; + break; + + case "right": + style.alignSelf = "end"; + break; + } + } + }, + + margin(node, style) { + if (node.margin) { + style.margin = node.margin[_xfa_object.$toStyle]().margin; + } + } + +}; + +function setMinMaxDimensions(node, style) { + const parent = node[_xfa_object.$getSubformParent](); + + if (parent.layout === "position") { + if (node.minW > 0) { + style.minWidth = measureToString(node.minW); + } + + if (node.maxW > 0) { + style.maxWidth = measureToString(node.maxW); + } + + if (node.minH > 0) { + style.minHeight = measureToString(node.minH); + } + + if (node.maxH > 0) { + style.maxHeight = measureToString(node.maxH); + } + } +} + +function layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) { + const measure = new _text.TextMeasure(xfaFont, margin, lineHeight, fontFinder); + + if (typeof text === "string") { + measure.addString(text); + } else { + text[_xfa_object.$pushGlyphs](measure); + } + + return measure.compute(width); +} + +function layoutNode(node, availableSpace) { + let height = null; + let width = null; + let isBroken = false; + + if ((!node.w || !node.h) && node.value) { + let marginH = 0; + let marginV = 0; + + if (node.margin) { + marginH = node.margin.leftInset + node.margin.rightInset; + marginV = node.margin.topInset + node.margin.bottomInset; + } + + let lineHeight = null; + let margin = null; + + if (node.para) { + margin = Object.create(null); + lineHeight = node.para.lineHeight === "" ? null : node.para.lineHeight; + margin.top = node.para.spaceAbove === "" ? 0 : node.para.spaceAbove; + margin.bottom = node.para.spaceBelow === "" ? 0 : node.para.spaceBelow; + margin.left = node.para.marginLeft === "" ? 0 : node.para.marginLeft; + margin.right = node.para.marginRight === "" ? 0 : node.para.marginRight; + } + + let font = node.font; + + if (!font) { + const root = node[_xfa_object.$getTemplateRoot](); + + let parent = node[_xfa_object.$getParent](); + + while (parent && parent !== root) { + if (parent.font) { + font = parent.font; + break; + } + + parent = parent[_xfa_object.$getParent](); + } + } + + const maxWidth = (node.w || availableSpace.width) - marginH; + const fontFinder = node[_xfa_object.$globalData].fontFinder; + + if (node.value.exData && node.value.exData[_xfa_object.$content] && node.value.exData.contentType === "text/html") { + const res = layoutText(node.value.exData[_xfa_object.$content], font, margin, lineHeight, fontFinder, maxWidth); + width = res.width; + height = res.height; + isBroken = res.isBroken; + } else { + const text = node.value[_xfa_object.$text](); + + if (text) { + const res = layoutText(text, font, margin, lineHeight, fontFinder, maxWidth); + width = res.width; + height = res.height; + isBroken = res.isBroken; + } + } + + if (width !== null && !node.w) { + width += marginH; + } + + if (height !== null && !node.h) { + height += marginV; + } + } + + return { + w: width, + h: height, + isBroken + }; +} + +function computeBbox(node, html, availableSpace) { + let bbox; + + if (node.w !== "" && node.h !== "") { + bbox = [node.x, node.y, node.w, node.h]; + } else { + if (!availableSpace) { + return null; + } + + let width = node.w; + + if (width === "") { + if (node.maxW === 0) { + const parent = node[_xfa_object.$getSubformParent](); + + if (parent.layout === "position" && parent.w !== "") { + width = 0; + } else { + width = node.minW; + } + } else { + width = Math.min(node.maxW, availableSpace.width); + } + + html.attributes.style.width = measureToString(width); + } + + let height = node.h; + + if (height === "") { + if (node.maxH === 0) { + const parent = node[_xfa_object.$getSubformParent](); + + if (parent.layout === "position" && parent.h !== "") { + height = 0; + } else { + height = node.minH; + } + } else { + height = Math.min(node.maxH, availableSpace.height); + } + + html.attributes.style.height = measureToString(height); + } + + bbox = [node.x, node.y, width, height]; + } + + return bbox; +} + +function fixDimensions(node) { + const parent = node[_xfa_object.$getSubformParent](); + + if (parent.layout && parent.layout.includes("row")) { + const extra = parent[_xfa_object.$extra]; + const colSpan = node.colSpan; + let width; + + if (colSpan === -1) { + width = extra.columnWidths.slice(extra.currentColumn).reduce((a, w) => a + w, 0); + } else { + width = extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan).reduce((a, w) => a + w, 0); + } + + if (!isNaN(width)) { + node.w = width; + } + } + + if (parent.layout && parent.layout !== "position") { + node.x = node.y = 0; + } + + if (node.layout === "table") { + if (node.w === "" && Array.isArray(node.columnWidths)) { + node.w = node.columnWidths.reduce((a, x) => a + x, 0); + } + } +} + +function layoutClass(node) { + switch (node.layout) { + case "position": + return "xfaPosition"; + + case "lr-tb": + return "xfaLrTb"; + + case "rl-row": + return "xfaRlRow"; + + case "rl-tb": + return "xfaRlTb"; + + case "row": + return "xfaRow"; + + case "table": + return "xfaTable"; + + case "tb": + return "xfaTb"; + + default: + return "xfaPosition"; + } +} + +function toStyle(node) { + const style = Object.create(null); + + for (var _len = arguments.length, names = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + names[_key - 1] = arguments[_key]; + } + + for (const name of names) { + const value = node[name]; + + if (value === null) { + continue; + } + + if (converters.hasOwnProperty(name)) { + converters[name](node, style); + continue; + } + + if (value instanceof _xfa_object.XFAObject) { + const newStyle = value[_xfa_object.$toStyle](); + + if (newStyle) { + Object.assign(style, newStyle); + } else { + (0, _util.warn)(`(DEBUG) - XFA - style for ${name} not implemented yet`); + } + } + } + + return style; +} + +function createWrapper(node, html) { + const { + attributes + } = html; + const { + style + } = attributes; + const wrapper = { + name: "div", + attributes: { + class: ["xfaWrapper"], + style: Object.create(null) + }, + children: [] + }; + attributes.class.push("xfaWrapped"); + + if (node.border) { + const { + widths, + insets + } = node.border[_xfa_object.$extra]; + let width, height; + let top = insets[0]; + let left = insets[3]; + const insetsH = insets[0] + insets[2]; + const insetsW = insets[1] + insets[3]; + + switch (node.border.hand) { + case "even": + top -= widths[0] / 2; + left -= widths[3] / 2; + width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`; + height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`; + break; + + case "left": + top -= widths[0]; + left -= widths[3]; + width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`; + height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`; + break; + + case "right": + width = insetsW ? `calc(100% - ${insetsW}px)` : "100%"; + height = insetsH ? `calc(100% - ${insetsH}px)` : "100%"; + break; + } + + const classNames = ["xfaBorder"]; + + if (isPrintOnly(node.border)) { + classNames.push("xfaPrintOnly"); + } + + const border = { + name: "div", + attributes: { + class: classNames, + style: { + top: `${top}px`, + left: `${left}px`, + width, + height + } + }, + children: [] + }; + + for (const key of ["border", "borderWidth", "borderColor", "borderRadius", "borderStyle"]) { + if (style[key] !== undefined) { + border.attributes.style[key] = style[key]; + delete style[key]; + } + } + + wrapper.children.push(border, html); + } else { + wrapper.children.push(html); + } + + for (const key of ["background", "backgroundClip", "top", "left", "width", "height", "minWidth", "minHeight", "maxWidth", "maxHeight", "transform", "transformOrigin", "visibility"]) { + if (style[key] !== undefined) { + wrapper.attributes.style[key] = style[key]; + delete style[key]; + } + } + + if (style.position === "absolute") { + wrapper.attributes.style.position = "absolute"; + } else { + wrapper.attributes.style.position = "relative"; + } + + delete style.position; + + if (style.alignSelf) { + wrapper.attributes.style.alignSelf = style.alignSelf; + delete style.alignSelf; + } + + return wrapper; +} + +function fixTextIndent(styles) { + const indent = (0, _utils.getMeasurement)(styles.textIndent, "0px"); + + if (indent >= 0) { + return; + } + + const align = styles.textAlign === "right" ? "right" : "left"; + const name = "padding" + (align === "left" ? "Left" : "Right"); + const padding = (0, _utils.getMeasurement)(styles[name], "0px"); + styles[name] = `${padding - indent}px`; +} + +function setAccess(node, classNames) { + switch (node.access) { + case "nonInteractive": + classNames.push("xfaNonInteractive"); + break; + + case "readOnly": + classNames.push("xfaReadOnly"); + break; + + case "protected": + classNames.push("xfaDisabled"); + break; + } +} + +function isPrintOnly(node) { + return node.relevant.length > 0 && !node.relevant[0].excluded && node.relevant[0].viewname === "print"; +} + +function getCurrentPara(node) { + const stack = node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].paraStack; + + return stack.length ? stack.at(-1) : null; +} + +function setPara(node, nodeStyle, value) { + if (value.attributes.class && value.attributes.class.includes("xfaRich")) { + if (nodeStyle) { + if (node.h === "") { + nodeStyle.height = "auto"; + } + + if (node.w === "") { + nodeStyle.width = "auto"; + } + } + + const para = getCurrentPara(node); + + if (para) { + const valueStyle = value.attributes.style; + valueStyle.display = "flex"; + valueStyle.flexDirection = "column"; + + switch (para.vAlign) { + case "top": + valueStyle.justifyContent = "start"; + break; + + case "bottom": + valueStyle.justifyContent = "end"; + break; + + case "middle": + valueStyle.justifyContent = "center"; + break; + } + + const paraStyle = para[_xfa_object.$toStyle](); + + for (const [key, val] of Object.entries(paraStyle)) { + if (!(key in valueStyle)) { + valueStyle[key] = val; + } + } + } + } +} + +function setFontFamily(xfaFont, node, fontFinder, style) { + if (!fontFinder) { + delete style.fontFamily; + return; + } + + const name = (0, _utils.stripQuotes)(xfaFont.typeface); + style.fontFamily = `"${name}"`; + const typeface = fontFinder.find(name); + + if (typeface) { + const { + fontFamily + } = typeface.regular.cssFontInfo; + + if (fontFamily !== name) { + style.fontFamily = `"${fontFamily}"`; + } + + const para = getCurrentPara(node); + + if (para && para.lineHeight !== "") { + return; + } + + if (style.lineHeight) { + return; + } + + const pdfFont = (0, _fonts.selectFont)(xfaFont, typeface); + + if (pdfFont) { + style.lineHeight = Math.max(1.2, pdfFont.lineHeight); + } + } +} + +function fixURL(str) { + const absoluteUrl = (0, _util.createValidAbsoluteUrl)(str, null, { + addDefaultProtocol: true, + tryConvertEncoding: true + }); + return absoluteUrl ? absoluteUrl.href : null; +} + +/***/ }), +/* 210 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FontFinder = void 0; +exports.getMetrics = getMetrics; +exports.selectFont = selectFont; + +var _xfa_object = __w_pdfjs_require__(202); + +var _utils = __w_pdfjs_require__(203); + +var _util = __w_pdfjs_require__(2); + +class FontFinder { + constructor(pdfFonts) { + this.fonts = new Map(); + this.cache = new Map(); + this.warned = new Set(); + this.defaultFont = null; + this.add(pdfFonts); + } + + add(pdfFonts) { + let reallyMissingFonts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + + for (const pdfFont of pdfFonts) { + this.addPdfFont(pdfFont); + } + + for (const pdfFont of this.fonts.values()) { + if (!pdfFont.regular) { + pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic; + } + } + + if (!reallyMissingFonts || reallyMissingFonts.size === 0) { + return; + } + + const myriad = this.fonts.get("PdfJS-Fallback-PdfJS-XFA"); + + for (const missing of reallyMissingFonts) { + this.fonts.set(missing, myriad); + } + } + + addPdfFont(pdfFont) { + const cssFontInfo = pdfFont.cssFontInfo; + const name = cssFontInfo.fontFamily; + let font = this.fonts.get(name); + + if (!font) { + font = Object.create(null); + this.fonts.set(name, font); + + if (!this.defaultFont) { + this.defaultFont = font; + } + } + + let property = ""; + const fontWeight = parseFloat(cssFontInfo.fontWeight); + + if (parseFloat(cssFontInfo.italicAngle) !== 0) { + property = fontWeight >= 700 ? "bolditalic" : "italic"; + } else if (fontWeight >= 700) { + property = "bold"; + } + + if (!property) { + if (pdfFont.name.includes("Bold") || pdfFont.psName && pdfFont.psName.includes("Bold")) { + property = "bold"; + } + + if (pdfFont.name.includes("Italic") || pdfFont.name.endsWith("It") || pdfFont.psName && (pdfFont.psName.includes("Italic") || pdfFont.psName.endsWith("It"))) { + property += "italic"; + } + } + + if (!property) { + property = "regular"; + } + + font[property] = pdfFont; + } + + getDefault() { + return this.defaultFont; + } + + find(fontName) { + let mustWarn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + let font = this.fonts.get(fontName) || this.cache.get(fontName); + + if (font) { + return font; + } + + const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi; + let name = fontName.replace(pattern, ""); + font = this.fonts.get(name); + + if (font) { + this.cache.set(fontName, font); + return font; + } + + name = name.toLowerCase(); + const maybe = []; + + for (const [family, pdfFont] of this.fonts.entries()) { + if (family.replace(pattern, "").toLowerCase().startsWith(name)) { + maybe.push(pdfFont); + } + } + + if (maybe.length === 0) { + for (const [, pdfFont] of this.fonts.entries()) { + if (pdfFont.regular.name && pdfFont.regular.name.replace(pattern, "").toLowerCase().startsWith(name)) { + maybe.push(pdfFont); + } + } + } + + if (maybe.length === 0) { + name = name.replace(/psmt|mt/gi, ""); + + for (const [family, pdfFont] of this.fonts.entries()) { + if (family.replace(pattern, "").toLowerCase().startsWith(name)) { + maybe.push(pdfFont); + } + } + } + + if (maybe.length === 0) { + for (const pdfFont of this.fonts.values()) { + if (pdfFont.regular.name && pdfFont.regular.name.replace(pattern, "").toLowerCase().startsWith(name)) { + maybe.push(pdfFont); + } + } + } + + if (maybe.length >= 1) { + if (maybe.length !== 1 && mustWarn) { + (0, _util.warn)(`XFA - Too many choices to guess the correct font: ${fontName}`); + } + + this.cache.set(fontName, maybe[0]); + return maybe[0]; + } + + if (mustWarn && !this.warned.has(fontName)) { + this.warned.add(fontName); + (0, _util.warn)(`XFA - Cannot find the font: ${fontName}`); + } + + return null; + } + +} + +exports.FontFinder = FontFinder; + +function selectFont(xfaFont, typeface) { + if (xfaFont.posture === "italic") { + if (xfaFont.weight === "bold") { + return typeface.bolditalic; + } + + return typeface.italic; + } else if (xfaFont.weight === "bold") { + return typeface.bold; + } + + return typeface.regular; +} + +function getMetrics(xfaFont) { + let real = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + let pdfFont = null; + + if (xfaFont) { + const name = (0, _utils.stripQuotes)(xfaFont.typeface); + + const typeface = xfaFont[_xfa_object.$globalData].fontFinder.find(name); + + pdfFont = selectFont(xfaFont, typeface); + } + + if (!pdfFont) { + return { + lineHeight: 12, + lineGap: 2, + lineNoGap: 10 + }; + } + + const size = xfaFont.size || 10; + const lineHeight = pdfFont.lineHeight ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight) : 1.2; + const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap; + return { + lineHeight: lineHeight * size, + lineGap: lineGap * size, + lineNoGap: Math.max(1, lineHeight - lineGap) * size + }; +} + +/***/ }), +/* 211 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextMeasure = void 0; + +var _fonts = __w_pdfjs_require__(210); + +const WIDTH_FACTOR = 1.02; + +class FontInfo { + constructor(xfaFont, margin, lineHeight, fontFinder) { + this.lineHeight = lineHeight; + this.paraMargin = margin || { + top: 0, + bottom: 0, + left: 0, + right: 0 + }; + + if (!xfaFont) { + [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder); + return; + } + + this.xfaFont = { + typeface: xfaFont.typeface, + posture: xfaFont.posture, + weight: xfaFont.weight, + size: xfaFont.size, + letterSpacing: xfaFont.letterSpacing + }; + const typeface = fontFinder.find(xfaFont.typeface); + + if (!typeface) { + [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder); + return; + } + + this.pdfFont = (0, _fonts.selectFont)(xfaFont, typeface); + + if (!this.pdfFont) { + [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder); + } + } + + defaultFont(fontFinder) { + const font = fontFinder.find("Helvetica", false) || fontFinder.find("Myriad Pro", false) || fontFinder.find("Arial", false) || fontFinder.getDefault(); + + if (font && font.regular) { + const pdfFont = font.regular; + const info = pdfFont.cssFontInfo; + const xfaFont = { + typeface: info.fontFamily, + posture: "normal", + weight: "normal", + size: 10, + letterSpacing: 0 + }; + return [pdfFont, xfaFont]; + } + + const xfaFont = { + typeface: "Courier", + posture: "normal", + weight: "normal", + size: 10, + letterSpacing: 0 + }; + return [null, xfaFont]; + } + +} + +class FontSelector { + constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder) { + this.fontFinder = fontFinder; + this.stack = [new FontInfo(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder)]; + } + + pushData(xfaFont, margin, lineHeight) { + const lastFont = this.stack.at(-1); + + for (const name of ["typeface", "posture", "weight", "size", "letterSpacing"]) { + if (!xfaFont[name]) { + xfaFont[name] = lastFont.xfaFont[name]; + } + } + + for (const name of ["top", "bottom", "left", "right"]) { + if (isNaN(margin[name])) { + margin[name] = lastFont.paraMargin[name]; + } + } + + const fontInfo = new FontInfo(xfaFont, margin, lineHeight || lastFont.lineHeight, this.fontFinder); + + if (!fontInfo.pdfFont) { + fontInfo.pdfFont = lastFont.pdfFont; + } + + this.stack.push(fontInfo); + } + + popFont() { + this.stack.pop(); + } + + topFont() { + return this.stack.at(-1); + } + +} + +class TextMeasure { + constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) { + this.glyphs = []; + this.fontSelector = new FontSelector(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts); + this.extraHeight = 0; + } + + pushData(xfaFont, margin, lineHeight) { + this.fontSelector.pushData(xfaFont, margin, lineHeight); + } + + popFont(xfaFont) { + return this.fontSelector.popFont(); + } + + addPara() { + const lastFont = this.fontSelector.topFont(); + this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom; + } + + addString(str) { + if (!str) { + return; + } + + const lastFont = this.fontSelector.topFont(); + const fontSize = lastFont.xfaFont.size; + + if (lastFont.pdfFont) { + const letterSpacing = lastFont.xfaFont.letterSpacing; + const pdfFont = lastFont.pdfFont; + const fontLineHeight = pdfFont.lineHeight || 1.2; + const lineHeight = lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize; + const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap; + const noGap = fontLineHeight - lineGap; + const firstLineHeight = Math.max(1, noGap) * fontSize; + const scale = fontSize / 1000; + const fallbackWidth = pdfFont.defaultWidth || pdfFont.charsToGlyphs(" ")[0].width; + + for (const line of str.split(/[\u2029\n]/)) { + const encodedLine = pdfFont.encodeString(line).join(""); + const glyphs = pdfFont.charsToGlyphs(encodedLine); + + for (const glyph of glyphs) { + const width = glyph.width || fallbackWidth; + this.glyphs.push([width * scale + letterSpacing, lineHeight, firstLineHeight, glyph.unicode, false]); + } + + this.glyphs.push([0, 0, 0, "\n", true]); + } + + this.glyphs.pop(); + return; + } + + for (const line of str.split(/[\u2029\n]/)) { + for (const char of line.split("")) { + this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]); + } + + this.glyphs.push([0, 0, 0, "\n", true]); + } + + this.glyphs.pop(); + } + + compute(maxWidth) { + let lastSpacePos = -1, + lastSpaceWidth = 0, + width = 0, + height = 0, + currentLineWidth = 0, + currentLineHeight = 0; + let isBroken = false; + let isFirstLine = true; + + for (let i = 0, ii = this.glyphs.length; i < ii; i++) { + const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] = this.glyphs[i]; + const isSpace = char === " "; + const glyphHeight = isFirstLine ? firstLineHeight : lineHeight; + + if (isEOL) { + width = Math.max(width, currentLineWidth); + currentLineWidth = 0; + height += currentLineHeight; + currentLineHeight = glyphHeight; + lastSpacePos = -1; + lastSpaceWidth = 0; + isFirstLine = false; + continue; + } + + if (isSpace) { + if (currentLineWidth + glyphWidth > maxWidth) { + width = Math.max(width, currentLineWidth); + currentLineWidth = 0; + height += currentLineHeight; + currentLineHeight = glyphHeight; + lastSpacePos = -1; + lastSpaceWidth = 0; + isBroken = true; + isFirstLine = false; + } else { + currentLineHeight = Math.max(glyphHeight, currentLineHeight); + lastSpaceWidth = currentLineWidth; + currentLineWidth += glyphWidth; + lastSpacePos = i; + } + + continue; + } + + if (currentLineWidth + glyphWidth > maxWidth) { + height += currentLineHeight; + currentLineHeight = glyphHeight; + + if (lastSpacePos !== -1) { + i = lastSpacePos; + width = Math.max(width, lastSpaceWidth); + currentLineWidth = 0; + lastSpacePos = -1; + lastSpaceWidth = 0; + } else { + width = Math.max(width, currentLineWidth); + currentLineWidth = glyphWidth; + } + + isBroken = true; + isFirstLine = false; + continue; + } + + currentLineWidth += glyphWidth; + currentLineHeight = Math.max(glyphHeight, currentLineHeight); + } + + width = Math.max(width, currentLineWidth); + height += currentLineHeight + this.extraHeight; + return { + width: WIDTH_FACTOR * width, + height, + isBroken + }; + } + +} + +exports.TextMeasure = TextMeasure; + +/***/ }), +/* 212 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DataHandler = void 0; + +var _xfa_object = __w_pdfjs_require__(202); + +class DataHandler { + constructor(root, data) { + this.data = data; + this.dataset = root.datasets || null; + } + + serialize(storage) { + const stack = [[-1, this.data[_xfa_object.$getChildren]()]]; + + while (stack.length > 0) { + const last = stack.at(-1); + const [i, children] = last; + + if (i + 1 === children.length) { + stack.pop(); + continue; + } + + const child = children[++last[0]]; + const storageEntry = storage.get(child[_xfa_object.$uid]); + + if (storageEntry) { + child[_xfa_object.$setValue](storageEntry); + } else { + const attributes = child[_xfa_object.$getAttributes](); + + for (const value of attributes.values()) { + const entry = storage.get(value[_xfa_object.$uid]); + + if (entry) { + value[_xfa_object.$setValue](entry); + + break; + } + } + } + + const nodes = child[_xfa_object.$getChildren](); + + if (nodes.length > 0) { + stack.push([-1, nodes]); + } + } + + const buf = [``]; + + if (this.dataset) { + for (const child of this.dataset[_xfa_object.$getChildren]()) { + if (child[_xfa_object.$nodeName] !== "data") { + child[_xfa_object.$toString](buf); + } + } + } + + this.data[_xfa_object.$toString](buf); + + buf.push(""); + return buf.join(""); + } + +} + +exports.DataHandler = DataHandler; + +/***/ }), +/* 213 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XFAParser = void 0; + +var _xfa_object = __w_pdfjs_require__(202); + +var _xml_parser = __w_pdfjs_require__(191); + +var _builder = __w_pdfjs_require__(214); + +var _util = __w_pdfjs_require__(2); + +class XFAParser extends _xml_parser.XMLParserBase { + constructor() { + let rootNameSpace = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + let richText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + super(); + this._builder = new _builder.Builder(rootNameSpace); + this._stack = []; + this._globalData = { + usedTypefaces: new Set() + }; + this._ids = new Map(); + this._current = this._builder.buildRoot(this._ids); + this._errorCode = _xml_parser.XMLParserErrorCode.NoError; + this._whiteRegex = /^\s+$/; + this._nbsps = /\xa0+/g; + this._richText = richText; + } + + parse(data) { + this.parseXml(data); + + if (this._errorCode !== _xml_parser.XMLParserErrorCode.NoError) { + return undefined; + } + + this._current[_xfa_object.$finalize](); + + return this._current.element; + } + + onText(text) { + text = text.replace(this._nbsps, match => match.slice(1) + " "); + + if (this._richText || this._current[_xfa_object.$acceptWhitespace]()) { + this._current[_xfa_object.$onText](text, this._richText); + + return; + } + + if (this._whiteRegex.test(text)) { + return; + } + + this._current[_xfa_object.$onText](text.trim()); + } + + onCdata(text) { + this._current[_xfa_object.$onText](text); + } + + _mkAttributes(attributes, tagName) { + let namespace = null; + let prefixes = null; + const attributeObj = Object.create({}); + + for (const { + name, + value + } of attributes) { + if (name === "xmlns") { + if (!namespace) { + namespace = value; + } else { + (0, _util.warn)(`XFA - multiple namespace definition in <${tagName}>`); + } + } else if (name.startsWith("xmlns:")) { + const prefix = name.substring("xmlns:".length); + + if (!prefixes) { + prefixes = []; + } + + prefixes.push({ + prefix, + value + }); + } else { + const i = name.indexOf(":"); + + if (i === -1) { + attributeObj[name] = value; + } else { + let nsAttrs = attributeObj[_xfa_object.$nsAttributes]; + + if (!nsAttrs) { + nsAttrs = attributeObj[_xfa_object.$nsAttributes] = Object.create(null); + } + + const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)]; + let attrs = nsAttrs[ns]; + + if (!attrs) { + attrs = nsAttrs[ns] = Object.create(null); + } + + attrs[attrName] = value; + } + } + } + + return [namespace, prefixes, attributeObj]; + } + + _getNameAndPrefix(name, nsAgnostic) { + const i = name.indexOf(":"); + + if (i === -1) { + return [name, null]; + } + + return [name.substring(i + 1), nsAgnostic ? "" : name.substring(0, i)]; + } + + onBeginElement(tagName, attributes, isEmpty) { + const [namespace, prefixes, attributesObj] = this._mkAttributes(attributes, tagName); + + const [name, nsPrefix] = this._getNameAndPrefix(tagName, this._builder.isNsAgnostic()); + + const node = this._builder.build({ + nsPrefix, + name, + attributes: attributesObj, + namespace, + prefixes + }); + + node[_xfa_object.$globalData] = this._globalData; + + if (isEmpty) { + node[_xfa_object.$finalize](); + + if (this._current[_xfa_object.$onChild](node)) { + node[_xfa_object.$setId](this._ids); + } + + node[_xfa_object.$clean](this._builder); + + return; + } + + this._stack.push(this._current); + + this._current = node; + } + + onEndElement(name) { + const node = this._current; + + if (node[_xfa_object.$isCDATAXml]() && typeof node[_xfa_object.$content] === "string") { + const parser = new XFAParser(); + parser._globalData = this._globalData; + const root = parser.parse(node[_xfa_object.$content]); + node[_xfa_object.$content] = null; + + node[_xfa_object.$onChild](root); + } + + node[_xfa_object.$finalize](); + + this._current = this._stack.pop(); + + if (this._current[_xfa_object.$onChild](node)) { + node[_xfa_object.$setId](this._ids); + } + + node[_xfa_object.$clean](this._builder); + } + + onError(code) { + this._errorCode = code; + } + +} + +exports.XFAParser = XFAParser; + +/***/ }), +/* 214 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Builder = void 0; + +var _namespaces = __w_pdfjs_require__(204); + +var _xfa_object = __w_pdfjs_require__(202); + +var _setup = __w_pdfjs_require__(215); + +var _template = __w_pdfjs_require__(207); + +var _unknown = __w_pdfjs_require__(224); + +var _util = __w_pdfjs_require__(2); + +class Root extends _xfa_object.XFAObject { + constructor(ids) { + super(-1, "root", Object.create(null)); + this.element = null; + this[_xfa_object.$ids] = ids; + } + + [_xfa_object.$onChild](child) { + this.element = child; + return true; + } + + [_xfa_object.$finalize]() { + super[_xfa_object.$finalize](); + + if (this.element.template instanceof _template.Template) { + this[_xfa_object.$ids].set(_xfa_object.$root, this.element); + + this.element.template[_xfa_object.$resolvePrototypes](this[_xfa_object.$ids]); + + this.element.template[_xfa_object.$ids] = this[_xfa_object.$ids]; + } + } + +} + +class Empty extends _xfa_object.XFAObject { + constructor() { + super(-1, "", Object.create(null)); + } + + [_xfa_object.$onChild](_) { + return false; + } + +} + +class Builder { + constructor() { + let rootNameSpace = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + this._namespaceStack = []; + this._nsAgnosticLevel = 0; + this._namespacePrefixes = new Map(); + this._namespaces = new Map(); + this._nextNsId = Math.max(...Object.values(_namespaces.NamespaceIds).map(_ref => { + let { + id + } = _ref; + return id; + })); + this._currentNamespace = rootNameSpace || new _unknown.UnknownNamespace(++this._nextNsId); + } + + buildRoot(ids) { + return new Root(ids); + } + + build(_ref2) { + let { + nsPrefix, + name, + attributes, + namespace, + prefixes + } = _ref2; + const hasNamespaceDef = namespace !== null; + + if (hasNamespaceDef) { + this._namespaceStack.push(this._currentNamespace); + + this._currentNamespace = this._searchNamespace(namespace); + } + + if (prefixes) { + this._addNamespacePrefix(prefixes); + } + + if (attributes.hasOwnProperty(_xfa_object.$nsAttributes)) { + const dataTemplate = _setup.NamespaceSetUp.datasets; + const nsAttrs = attributes[_xfa_object.$nsAttributes]; + let xfaAttrs = null; + + for (const [ns, attrs] of Object.entries(nsAttrs)) { + const nsToUse = this._getNamespaceToUse(ns); + + if (nsToUse === dataTemplate) { + xfaAttrs = { + xfa: attrs + }; + break; + } + } + + if (xfaAttrs) { + attributes[_xfa_object.$nsAttributes] = xfaAttrs; + } else { + delete attributes[_xfa_object.$nsAttributes]; + } + } + + const namespaceToUse = this._getNamespaceToUse(nsPrefix); + + const node = namespaceToUse && namespaceToUse[_namespaces.$buildXFAObject](name, attributes) || new Empty(); + + if (node[_xfa_object.$isNsAgnostic]()) { + this._nsAgnosticLevel++; + } + + if (hasNamespaceDef || prefixes || node[_xfa_object.$isNsAgnostic]()) { + node[_xfa_object.$cleanup] = { + hasNamespace: hasNamespaceDef, + prefixes, + nsAgnostic: node[_xfa_object.$isNsAgnostic]() + }; + } + + return node; + } + + isNsAgnostic() { + return this._nsAgnosticLevel > 0; + } + + _searchNamespace(nsName) { + let ns = this._namespaces.get(nsName); + + if (ns) { + return ns; + } + + for (const [name, { + check + }] of Object.entries(_namespaces.NamespaceIds)) { + if (check(nsName)) { + ns = _setup.NamespaceSetUp[name]; + + if (ns) { + this._namespaces.set(nsName, ns); + + return ns; + } + + break; + } + } + + ns = new _unknown.UnknownNamespace(++this._nextNsId); + + this._namespaces.set(nsName, ns); + + return ns; + } + + _addNamespacePrefix(prefixes) { + for (const { + prefix, + value + } of prefixes) { + const namespace = this._searchNamespace(value); + + let prefixStack = this._namespacePrefixes.get(prefix); + + if (!prefixStack) { + prefixStack = []; + + this._namespacePrefixes.set(prefix, prefixStack); + } + + prefixStack.push(namespace); + } + } + + _getNamespaceToUse(prefix) { + if (!prefix) { + return this._currentNamespace; + } + + const prefixStack = this._namespacePrefixes.get(prefix); + + if (prefixStack && prefixStack.length > 0) { + return prefixStack.at(-1); + } + + (0, _util.warn)(`Unknown namespace prefix: ${prefix}.`); + return null; + } + + clean(data) { + const { + hasNamespace, + prefixes, + nsAgnostic + } = data; + + if (hasNamespace) { + this._currentNamespace = this._namespaceStack.pop(); + } + + if (prefixes) { + prefixes.forEach(_ref3 => { + let { + prefix + } = _ref3; + + this._namespacePrefixes.get(prefix).pop(); + }); + } + + if (nsAgnostic) { + this._nsAgnosticLevel--; + } + } + +} + +exports.Builder = Builder; + +/***/ }), +/* 215 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NamespaceSetUp = void 0; + +var _config = __w_pdfjs_require__(216); + +var _connection_set = __w_pdfjs_require__(217); + +var _datasets = __w_pdfjs_require__(218); + +var _locale_set = __w_pdfjs_require__(219); + +var _signature = __w_pdfjs_require__(220); + +var _stylesheet = __w_pdfjs_require__(221); + +var _template = __w_pdfjs_require__(207); + +var _xdp = __w_pdfjs_require__(222); + +var _xhtml = __w_pdfjs_require__(223); + +const NamespaceSetUp = { + config: _config.ConfigNamespace, + connection: _connection_set.ConnectionSetNamespace, + datasets: _datasets.DatasetsNamespace, + localeSet: _locale_set.LocaleSetNamespace, + signature: _signature.SignatureNamespace, + stylesheet: _stylesheet.StylesheetNamespace, + template: _template.TemplateNamespace, + xdp: _xdp.XdpNamespace, + xhtml: _xhtml.XhtmlNamespace +}; +exports.NamespaceSetUp = NamespaceSetUp; + +/***/ }), +/* 216 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ConfigNamespace = void 0; + +var _namespaces = __w_pdfjs_require__(204); + +var _xfa_object = __w_pdfjs_require__(202); + +var _utils = __w_pdfjs_require__(203); + +var _util = __w_pdfjs_require__(2); + +const CONFIG_NS_ID = _namespaces.NamespaceIds.config.id; + +class Acrobat extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "acrobat", true); + this.acrobat7 = null; + this.autoSave = null; + this.common = null; + this.validate = null; + this.validateApprovalSignatures = null; + this.submitUrl = new _xfa_object.XFAObjectArray(); + } + +} + +class Acrobat7 extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "acrobat7", true); + this.dynamicRender = null; + } + +} + +class ADBE_JSConsole extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "ADBE_JSConsole", ["delegate", "Enable", "Disable"]); + } + +} + +class ADBE_JSDebugger extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "ADBE_JSDebugger", ["delegate", "Enable", "Disable"]); + } + +} + +class AddSilentPrint extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "addSilentPrint"); + } + +} + +class AddViewerPreferences extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "addViewerPreferences"); + } + +} + +class AdjustData extends _xfa_object.Option10 { + constructor(attributes) { + super(CONFIG_NS_ID, "adjustData"); + } + +} + +class AdobeExtensionLevel extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "adobeExtensionLevel", 0, n => n >= 1 && n <= 8); + } + +} + +class Agent extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "agent", true); + this.name = attributes.name ? attributes.name.trim() : ""; + this.common = new _xfa_object.XFAObjectArray(); + } + +} + +class AlwaysEmbed extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "alwaysEmbed"); + } + +} + +class Amd extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "amd"); + } + +} + +class Area extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "area"); + this.level = (0, _utils.getInteger)({ + data: attributes.level, + defaultValue: 0, + validate: n => n >= 1 && n <= 3 + }); + this.name = (0, _utils.getStringOption)(attributes.name, ["", "barcode", "coreinit", "deviceDriver", "font", "general", "layout", "merge", "script", "signature", "sourceSet", "templateCache"]); + } + +} + +class Attributes extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "attributes", ["preserve", "delegate", "ignore"]); + } + +} + +class AutoSave extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "autoSave", ["disabled", "enabled"]); + } + +} + +class Base extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "base"); + } + +} + +class BatchOutput extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "batchOutput"); + this.format = (0, _utils.getStringOption)(attributes.format, ["none", "concat", "zip", "zipCompress"]); + } + +} + +class BehaviorOverride extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "behaviorOverride"); + } + + [_xfa_object.$finalize]() { + this[_xfa_object.$content] = new Map(this[_xfa_object.$content].trim().split(/\s+/).filter(x => x.includes(":")).map(x => x.split(":", 2))); + } + +} + +class Cache extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "cache", true); + this.templateCache = null; + } + +} + +class Change extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "change"); + } + +} + +class Common extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "common", true); + this.data = null; + this.locale = null; + this.localeSet = null; + this.messaging = null; + this.suppressBanner = null; + this.template = null; + this.validationMessaging = null; + this.versionControl = null; + this.log = new _xfa_object.XFAObjectArray(); + } + +} + +class Compress extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "compress"); + this.scope = (0, _utils.getStringOption)(attributes.scope, ["imageOnly", "document"]); + } + +} + +class CompressLogicalStructure extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "compressLogicalStructure"); + } + +} + +class CompressObjectStream extends _xfa_object.Option10 { + constructor(attributes) { + super(CONFIG_NS_ID, "compressObjectStream"); + } + +} + +class Compression extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "compression", true); + this.compressLogicalStructure = null; + this.compressObjectStream = null; + this.level = null; + this.type = null; + } + +} + +class Config extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "config", true); + this.acrobat = null; + this.present = null; + this.trace = null; + this.agent = new _xfa_object.XFAObjectArray(); + } + +} + +class Conformance extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "conformance", ["A", "B"]); + } + +} + +class ContentCopy extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "contentCopy"); + } + +} + +class Copies extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "copies", 1, n => n >= 1); + } + +} + +class Creator extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "creator"); + } + +} + +class CurrentPage extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "currentPage", 0, n => n >= 0); + } + +} + +class Data extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "data", true); + this.adjustData = null; + this.attributes = null; + this.incrementalLoad = null; + this.outputXSL = null; + this.range = null; + this.record = null; + this.startNode = null; + this.uri = null; + this.window = null; + this.xsl = null; + this.excludeNS = new _xfa_object.XFAObjectArray(); + this.transform = new _xfa_object.XFAObjectArray(); + } + +} + +class Debug extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "debug", true); + this.uri = null; + } + +} + +class DefaultTypeface extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "defaultTypeface"); + this.writingScript = (0, _utils.getStringOption)(attributes.writingScript, ["*", "Arabic", "Cyrillic", "EastEuropeanRoman", "Greek", "Hebrew", "Japanese", "Korean", "Roman", "SimplifiedChinese", "Thai", "TraditionalChinese", "Vietnamese"]); + } + +} + +class Destination extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "destination", ["pdf", "pcl", "ps", "webClient", "zpl"]); + } + +} + +class DocumentAssembly extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "documentAssembly"); + } + +} + +class Driver extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "driver", true); + this.name = attributes.name ? attributes.name.trim() : ""; + this.fontInfo = null; + this.xdc = null; + } + +} + +class DuplexOption extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "duplexOption", ["simplex", "duplexFlipLongEdge", "duplexFlipShortEdge"]); + } + +} + +class DynamicRender extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "dynamicRender", ["forbidden", "required"]); + } + +} + +class Embed extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "embed"); + } + +} + +class Encrypt extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "encrypt"); + } + +} + +class Encryption extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "encryption", true); + this.encrypt = null; + this.encryptionLevel = null; + this.permissions = null; + } + +} + +class EncryptionLevel extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "encryptionLevel", ["40bit", "128bit"]); + } + +} + +class Enforce extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "enforce"); + } + +} + +class Equate extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "equate"); + this.force = (0, _utils.getInteger)({ + data: attributes.force, + defaultValue: 1, + validate: n => n === 0 + }); + this.from = attributes.from || ""; + this.to = attributes.to || ""; + } + +} + +class EquateRange extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "equateRange"); + this.from = attributes.from || ""; + this.to = attributes.to || ""; + this._unicodeRange = attributes.unicodeRange || ""; + } + + get unicodeRange() { + const ranges = []; + const unicodeRegex = /U\+([0-9a-fA-F]+)/; + const unicodeRange = this._unicodeRange; + + for (let range of unicodeRange.split(",").map(x => x.trim()).filter(x => !!x)) { + range = range.split("-", 2).map(x => { + const found = x.match(unicodeRegex); + + if (!found) { + return 0; + } + + return parseInt(found[1], 16); + }); + + if (range.length === 1) { + range.push(range[0]); + } + + ranges.push(range); + } + + return (0, _util.shadow)(this, "unicodeRange", ranges); + } + +} + +class Exclude extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "exclude"); + } + + [_xfa_object.$finalize]() { + this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\s+/).filter(x => x && ["calculate", "close", "enter", "exit", "initialize", "ready", "validate"].includes(x)); + } + +} + +class ExcludeNS extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "excludeNS"); + } + +} + +class FlipLabel extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "flipLabel", ["usePrinterSetting", "on", "off"]); + } + +} + +class FontInfo extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "fontInfo", true); + this.embed = null; + this.map = null; + this.subsetBelow = null; + this.alwaysEmbed = new _xfa_object.XFAObjectArray(); + this.defaultTypeface = new _xfa_object.XFAObjectArray(); + this.neverEmbed = new _xfa_object.XFAObjectArray(); + } + +} + +class FormFieldFilling extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "formFieldFilling"); + } + +} + +class GroupParent extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "groupParent"); + } + +} + +class IfEmpty extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "ifEmpty", ["dataValue", "dataGroup", "ignore", "remove"]); + } + +} + +class IncludeXDPContent extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "includeXDPContent"); + } + +} + +class IncrementalLoad extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "incrementalLoad", ["none", "forwardOnly"]); + } + +} + +class IncrementalMerge extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "incrementalMerge"); + } + +} + +class Interactive extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "interactive"); + } + +} + +class Jog extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "jog", ["usePrinterSetting", "none", "pageSet"]); + } + +} + +class LabelPrinter extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "labelPrinter", true); + this.name = (0, _utils.getStringOption)(attributes.name, ["zpl", "dpl", "ipl", "tcpl"]); + this.batchOutput = null; + this.flipLabel = null; + this.fontInfo = null; + this.xdc = null; + } + +} + +class Layout extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "layout", ["paginate", "panel"]); + } + +} + +class Level extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "level", 0, n => n > 0); + } + +} + +class Linearized extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "linearized"); + } + +} + +class Locale extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "locale"); + } + +} + +class LocaleSet extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "localeSet"); + } + +} + +class Log extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "log", true); + this.mode = null; + this.threshold = null; + this.to = null; + this.uri = null; + } + +} + +class MapElement extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "map", true); + this.equate = new _xfa_object.XFAObjectArray(); + this.equateRange = new _xfa_object.XFAObjectArray(); + } + +} + +class MediumInfo extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "mediumInfo", true); + this.map = null; + } + +} + +class Message extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "message", true); + this.msgId = null; + this.severity = null; + } + +} + +class Messaging extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "messaging", true); + this.message = new _xfa_object.XFAObjectArray(); + } + +} + +class Mode extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "mode", ["append", "overwrite"]); + } + +} + +class ModifyAnnots extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "modifyAnnots"); + } + +} + +class MsgId extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "msgId", 1, n => n >= 1); + } + +} + +class NameAttr extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "nameAttr"); + } + +} + +class NeverEmbed extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "neverEmbed"); + } + +} + +class NumberOfCopies extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "numberOfCopies", null, n => n >= 2 && n <= 5); + } + +} + +class OpenAction extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "openAction", true); + this.destination = null; + } + +} + +class Output extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "output", true); + this.to = null; + this.type = null; + this.uri = null; + } + +} + +class OutputBin extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "outputBin"); + } + +} + +class OutputXSL extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "outputXSL", true); + this.uri = null; + } + +} + +class Overprint extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "overprint", ["none", "both", "draw", "field"]); + } + +} + +class Packets extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "packets"); + } + + [_xfa_object.$finalize]() { + if (this[_xfa_object.$content] === "*") { + return; + } + + this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\s+/).filter(x => ["config", "datasets", "template", "xfdf", "xslt"].includes(x)); + } + +} + +class PageOffset extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pageOffset"); + this.x = (0, _utils.getInteger)({ + data: attributes.x, + defaultValue: "useXDCSetting", + validate: n => true + }); + this.y = (0, _utils.getInteger)({ + data: attributes.y, + defaultValue: "useXDCSetting", + validate: n => true + }); + } + +} + +class PageRange extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pageRange"); + } + + [_xfa_object.$finalize]() { + const numbers = this[_xfa_object.$content].trim().split(/\s+/).map(x => parseInt(x, 10)); + + const ranges = []; + + for (let i = 0, ii = numbers.length; i < ii; i += 2) { + ranges.push(numbers.slice(i, i + 2)); + } + + this[_xfa_object.$content] = ranges; + } + +} + +class Pagination extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pagination", ["simplex", "duplexShortEdge", "duplexLongEdge"]); + } + +} + +class PaginationOverride extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "paginationOverride", ["none", "forceDuplex", "forceDuplexLongEdge", "forceDuplexShortEdge", "forceSimplex"]); + } + +} + +class Part extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "part", 1, n => false); + } + +} + +class Pcl extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pcl", true); + this.name = attributes.name || ""; + this.batchOutput = null; + this.fontInfo = null; + this.jog = null; + this.mediumInfo = null; + this.outputBin = null; + this.pageOffset = null; + this.staple = null; + this.xdc = null; + } + +} + +class Pdf extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pdf", true); + this.name = attributes.name || ""; + this.adobeExtensionLevel = null; + this.batchOutput = null; + this.compression = null; + this.creator = null; + this.encryption = null; + this.fontInfo = null; + this.interactive = null; + this.linearized = null; + this.openAction = null; + this.pdfa = null; + this.producer = null; + this.renderPolicy = null; + this.scriptModel = null; + this.silentPrint = null; + this.submitFormat = null; + this.tagged = null; + this.version = null; + this.viewerPreferences = null; + this.xdc = null; + } + +} + +class Pdfa extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pdfa", true); + this.amd = null; + this.conformance = null; + this.includeXDPContent = null; + this.part = null; + } + +} + +class Permissions extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "permissions", true); + this.accessibleContent = null; + this.change = null; + this.contentCopy = null; + this.documentAssembly = null; + this.formFieldFilling = null; + this.modifyAnnots = null; + this.plaintextMetadata = null; + this.print = null; + this.printHighQuality = null; + } + +} + +class PickTrayByPDFSize extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "pickTrayByPDFSize"); + } + +} + +class Picture extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "picture"); + } + +} + +class PlaintextMetadata extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "plaintextMetadata"); + } + +} + +class Presence extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "presence", ["preserve", "dissolve", "dissolveStructure", "ignore", "remove"]); + } + +} + +class Present extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "present", true); + this.behaviorOverride = null; + this.cache = null; + this.common = null; + this.copies = null; + this.destination = null; + this.incrementalMerge = null; + this.layout = null; + this.output = null; + this.overprint = null; + this.pagination = null; + this.paginationOverride = null; + this.script = null; + this.validate = null; + this.xdp = null; + this.driver = new _xfa_object.XFAObjectArray(); + this.labelPrinter = new _xfa_object.XFAObjectArray(); + this.pcl = new _xfa_object.XFAObjectArray(); + this.pdf = new _xfa_object.XFAObjectArray(); + this.ps = new _xfa_object.XFAObjectArray(); + this.submitUrl = new _xfa_object.XFAObjectArray(); + this.webClient = new _xfa_object.XFAObjectArray(); + this.zpl = new _xfa_object.XFAObjectArray(); + } + +} + +class Print extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "print"); + } + +} + +class PrintHighQuality extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "printHighQuality"); + } + +} + +class PrintScaling extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "printScaling", ["appdefault", "noScaling"]); + } + +} + +class PrinterName extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "printerName"); + } + +} + +class Producer extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "producer"); + } + +} + +class Ps extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "ps", true); + this.name = attributes.name || ""; + this.batchOutput = null; + this.fontInfo = null; + this.jog = null; + this.mediumInfo = null; + this.outputBin = null; + this.staple = null; + this.xdc = null; + } + +} + +class Range extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "range"); + } + + [_xfa_object.$finalize]() { + this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\s*,\s*/, 2).map(range => range.split("-").map(x => parseInt(x.trim(), 10))).filter(range => range.every(x => !isNaN(x))).map(range => { + if (range.length === 1) { + range.push(range[0]); + } + + return range; + }); + } + +} + +class Record extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "record"); + } + + [_xfa_object.$finalize]() { + this[_xfa_object.$content] = this[_xfa_object.$content].trim(); + const n = parseInt(this[_xfa_object.$content], 10); + + if (!isNaN(n) && n >= 0) { + this[_xfa_object.$content] = n; + } + } + +} + +class Relevant extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "relevant"); + } + + [_xfa_object.$finalize]() { + this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\s+/); + } + +} + +class Rename extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "rename"); + } + + [_xfa_object.$finalize]() { + this[_xfa_object.$content] = this[_xfa_object.$content].trim(); + + if (this[_xfa_object.$content].toLowerCase().startsWith("xml") || this[_xfa_object.$content].match(new RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*", "u"))) { + (0, _util.warn)("XFA - Rename: invalid XFA name"); + } + } + +} + +class RenderPolicy extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "renderPolicy", ["server", "client"]); + } + +} + +class RunScripts extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "runScripts", ["both", "client", "none", "server"]); + } + +} + +class Script extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "script", true); + this.currentPage = null; + this.exclude = null; + this.runScripts = null; + } + +} + +class ScriptModel extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "scriptModel", ["XFA", "none"]); + } + +} + +class Severity extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "severity", ["ignore", "error", "information", "trace", "warning"]); + } + +} + +class SilentPrint extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "silentPrint", true); + this.addSilentPrint = null; + this.printerName = null; + } + +} + +class Staple extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "staple"); + this.mode = (0, _utils.getStringOption)(attributes.mode, ["usePrinterSetting", "on", "off"]); + } + +} + +class StartNode extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "startNode"); + } + +} + +class StartPage extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "startPage", 0, n => true); + } + +} + +class SubmitFormat extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "submitFormat", ["html", "delegate", "fdf", "xml", "pdf"]); + } + +} + +class SubmitUrl extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "submitUrl"); + } + +} + +class SubsetBelow extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "subsetBelow", 100, n => n >= 0 && n <= 100); + } + +} + +class SuppressBanner extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "suppressBanner"); + } + +} + +class Tagged extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "tagged"); + } + +} + +class Template extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "template", true); + this.base = null; + this.relevant = null; + this.startPage = null; + this.uri = null; + this.xsl = null; + } + +} + +class Threshold extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "threshold", ["trace", "error", "information", "warning"]); + } + +} + +class To extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "to", ["null", "memory", "stderr", "stdout", "system", "uri"]); + } + +} + +class TemplateCache extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "templateCache"); + this.maxEntries = (0, _utils.getInteger)({ + data: attributes.maxEntries, + defaultValue: 5, + validate: n => n >= 0 + }); + } + +} + +class Trace extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "trace", true); + this.area = new _xfa_object.XFAObjectArray(); + } + +} + +class Transform extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "transform", true); + this.groupParent = null; + this.ifEmpty = null; + this.nameAttr = null; + this.picture = null; + this.presence = null; + this.rename = null; + this.whitespace = null; + } + +} + +class Type extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "type", ["none", "ascii85", "asciiHex", "ccittfax", "flate", "lzw", "runLength", "native", "xdp", "mergedXDP"]); + } + +} + +class Uri extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "uri"); + } + +} + +class Validate extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "validate", ["preSubmit", "prePrint", "preExecute", "preSave"]); + } + +} + +class ValidateApprovalSignatures extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "validateApprovalSignatures"); + } + + [_xfa_object.$finalize]() { + this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\s+/).filter(x => ["docReady", "postSign"].includes(x)); + } + +} + +class ValidationMessaging extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "validationMessaging", ["allMessagesIndividually", "allMessagesTogether", "firstMessageOnly", "noMessages"]); + } + +} + +class Version extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "version", ["1.7", "1.6", "1.5", "1.4", "1.3", "1.2"]); + } + +} + +class VersionControl extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "VersionControl"); + this.outputBelow = (0, _utils.getStringOption)(attributes.outputBelow, ["warn", "error", "update"]); + this.sourceAbove = (0, _utils.getStringOption)(attributes.sourceAbove, ["warn", "error"]); + this.sourceBelow = (0, _utils.getStringOption)(attributes.sourceBelow, ["update", "maintain"]); + } + +} + +class ViewerPreferences extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "viewerPreferences", true); + this.ADBE_JSConsole = null; + this.ADBE_JSDebugger = null; + this.addViewerPreferences = null; + this.duplexOption = null; + this.enforce = null; + this.numberOfCopies = null; + this.pageRange = null; + this.pickTrayByPDFSize = null; + this.printScaling = null; + } + +} + +class WebClient extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "webClient", true); + this.name = attributes.name ? attributes.name.trim() : ""; + this.fontInfo = null; + this.xdc = null; + } + +} + +class Whitespace extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "whitespace", ["preserve", "ltrim", "normalize", "rtrim", "trim"]); + } + +} + +class Window extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "window"); + } + + [_xfa_object.$finalize]() { + const pair = this[_xfa_object.$content].trim().split(/\s*,\s*/, 2).map(x => parseInt(x, 10)); + + if (pair.some(x => isNaN(x))) { + this[_xfa_object.$content] = [0, 0]; + return; + } + + if (pair.length === 1) { + pair.push(pair[0]); + } + + this[_xfa_object.$content] = pair; + } + +} + +class Xdc extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "xdc", true); + this.uri = new _xfa_object.XFAObjectArray(); + this.xsl = new _xfa_object.XFAObjectArray(); + } + +} + +class Xdp extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "xdp", true); + this.packets = null; + } + +} + +class Xsl extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "xsl", true); + this.debug = null; + this.uri = null; + } + +} + +class Zpl extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "zpl", true); + this.name = attributes.name ? attributes.name.trim() : ""; + this.batchOutput = null; + this.flipLabel = null; + this.fontInfo = null; + this.xdc = null; + } + +} + +class ConfigNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (ConfigNamespace.hasOwnProperty(name)) { + return ConfigNamespace[name](attributes); + } + + return undefined; + } + + static acrobat(attrs) { + return new Acrobat(attrs); + } + + static acrobat7(attrs) { + return new Acrobat7(attrs); + } + + static ADBE_JSConsole(attrs) { + return new ADBE_JSConsole(attrs); + } + + static ADBE_JSDebugger(attrs) { + return new ADBE_JSDebugger(attrs); + } + + static addSilentPrint(attrs) { + return new AddSilentPrint(attrs); + } + + static addViewerPreferences(attrs) { + return new AddViewerPreferences(attrs); + } + + static adjustData(attrs) { + return new AdjustData(attrs); + } + + static adobeExtensionLevel(attrs) { + return new AdobeExtensionLevel(attrs); + } + + static agent(attrs) { + return new Agent(attrs); + } + + static alwaysEmbed(attrs) { + return new AlwaysEmbed(attrs); + } + + static amd(attrs) { + return new Amd(attrs); + } + + static area(attrs) { + return new Area(attrs); + } + + static attributes(attrs) { + return new Attributes(attrs); + } + + static autoSave(attrs) { + return new AutoSave(attrs); + } + + static base(attrs) { + return new Base(attrs); + } + + static batchOutput(attrs) { + return new BatchOutput(attrs); + } + + static behaviorOverride(attrs) { + return new BehaviorOverride(attrs); + } + + static cache(attrs) { + return new Cache(attrs); + } + + static change(attrs) { + return new Change(attrs); + } + + static common(attrs) { + return new Common(attrs); + } + + static compress(attrs) { + return new Compress(attrs); + } + + static compressLogicalStructure(attrs) { + return new CompressLogicalStructure(attrs); + } + + static compressObjectStream(attrs) { + return new CompressObjectStream(attrs); + } + + static compression(attrs) { + return new Compression(attrs); + } + + static config(attrs) { + return new Config(attrs); + } + + static conformance(attrs) { + return new Conformance(attrs); + } + + static contentCopy(attrs) { + return new ContentCopy(attrs); + } + + static copies(attrs) { + return new Copies(attrs); + } + + static creator(attrs) { + return new Creator(attrs); + } + + static currentPage(attrs) { + return new CurrentPage(attrs); + } + + static data(attrs) { + return new Data(attrs); + } + + static debug(attrs) { + return new Debug(attrs); + } + + static defaultTypeface(attrs) { + return new DefaultTypeface(attrs); + } + + static destination(attrs) { + return new Destination(attrs); + } + + static documentAssembly(attrs) { + return new DocumentAssembly(attrs); + } + + static driver(attrs) { + return new Driver(attrs); + } + + static duplexOption(attrs) { + return new DuplexOption(attrs); + } + + static dynamicRender(attrs) { + return new DynamicRender(attrs); + } + + static embed(attrs) { + return new Embed(attrs); + } + + static encrypt(attrs) { + return new Encrypt(attrs); + } + + static encryption(attrs) { + return new Encryption(attrs); + } + + static encryptionLevel(attrs) { + return new EncryptionLevel(attrs); + } + + static enforce(attrs) { + return new Enforce(attrs); + } + + static equate(attrs) { + return new Equate(attrs); + } + + static equateRange(attrs) { + return new EquateRange(attrs); + } + + static exclude(attrs) { + return new Exclude(attrs); + } + + static excludeNS(attrs) { + return new ExcludeNS(attrs); + } + + static flipLabel(attrs) { + return new FlipLabel(attrs); + } + + static fontInfo(attrs) { + return new FontInfo(attrs); + } + + static formFieldFilling(attrs) { + return new FormFieldFilling(attrs); + } + + static groupParent(attrs) { + return new GroupParent(attrs); + } + + static ifEmpty(attrs) { + return new IfEmpty(attrs); + } + + static includeXDPContent(attrs) { + return new IncludeXDPContent(attrs); + } + + static incrementalLoad(attrs) { + return new IncrementalLoad(attrs); + } + + static incrementalMerge(attrs) { + return new IncrementalMerge(attrs); + } + + static interactive(attrs) { + return new Interactive(attrs); + } + + static jog(attrs) { + return new Jog(attrs); + } + + static labelPrinter(attrs) { + return new LabelPrinter(attrs); + } + + static layout(attrs) { + return new Layout(attrs); + } + + static level(attrs) { + return new Level(attrs); + } + + static linearized(attrs) { + return new Linearized(attrs); + } + + static locale(attrs) { + return new Locale(attrs); + } + + static localeSet(attrs) { + return new LocaleSet(attrs); + } + + static log(attrs) { + return new Log(attrs); + } + + static map(attrs) { + return new MapElement(attrs); + } + + static mediumInfo(attrs) { + return new MediumInfo(attrs); + } + + static message(attrs) { + return new Message(attrs); + } + + static messaging(attrs) { + return new Messaging(attrs); + } + + static mode(attrs) { + return new Mode(attrs); + } + + static modifyAnnots(attrs) { + return new ModifyAnnots(attrs); + } + + static msgId(attrs) { + return new MsgId(attrs); + } + + static nameAttr(attrs) { + return new NameAttr(attrs); + } + + static neverEmbed(attrs) { + return new NeverEmbed(attrs); + } + + static numberOfCopies(attrs) { + return new NumberOfCopies(attrs); + } + + static openAction(attrs) { + return new OpenAction(attrs); + } + + static output(attrs) { + return new Output(attrs); + } + + static outputBin(attrs) { + return new OutputBin(attrs); + } + + static outputXSL(attrs) { + return new OutputXSL(attrs); + } + + static overprint(attrs) { + return new Overprint(attrs); + } + + static packets(attrs) { + return new Packets(attrs); + } + + static pageOffset(attrs) { + return new PageOffset(attrs); + } + + static pageRange(attrs) { + return new PageRange(attrs); + } + + static pagination(attrs) { + return new Pagination(attrs); + } + + static paginationOverride(attrs) { + return new PaginationOverride(attrs); + } + + static part(attrs) { + return new Part(attrs); + } + + static pcl(attrs) { + return new Pcl(attrs); + } + + static pdf(attrs) { + return new Pdf(attrs); + } + + static pdfa(attrs) { + return new Pdfa(attrs); + } + + static permissions(attrs) { + return new Permissions(attrs); + } + + static pickTrayByPDFSize(attrs) { + return new PickTrayByPDFSize(attrs); + } + + static picture(attrs) { + return new Picture(attrs); + } + + static plaintextMetadata(attrs) { + return new PlaintextMetadata(attrs); + } + + static presence(attrs) { + return new Presence(attrs); + } + + static present(attrs) { + return new Present(attrs); + } + + static print(attrs) { + return new Print(attrs); + } + + static printHighQuality(attrs) { + return new PrintHighQuality(attrs); + } + + static printScaling(attrs) { + return new PrintScaling(attrs); + } + + static printerName(attrs) { + return new PrinterName(attrs); + } + + static producer(attrs) { + return new Producer(attrs); + } + + static ps(attrs) { + return new Ps(attrs); + } + + static range(attrs) { + return new Range(attrs); + } + + static record(attrs) { + return new Record(attrs); + } + + static relevant(attrs) { + return new Relevant(attrs); + } + + static rename(attrs) { + return new Rename(attrs); + } + + static renderPolicy(attrs) { + return new RenderPolicy(attrs); + } + + static runScripts(attrs) { + return new RunScripts(attrs); + } + + static script(attrs) { + return new Script(attrs); + } + + static scriptModel(attrs) { + return new ScriptModel(attrs); + } + + static severity(attrs) { + return new Severity(attrs); + } + + static silentPrint(attrs) { + return new SilentPrint(attrs); + } + + static staple(attrs) { + return new Staple(attrs); + } + + static startNode(attrs) { + return new StartNode(attrs); + } + + static startPage(attrs) { + return new StartPage(attrs); + } + + static submitFormat(attrs) { + return new SubmitFormat(attrs); + } + + static submitUrl(attrs) { + return new SubmitUrl(attrs); + } + + static subsetBelow(attrs) { + return new SubsetBelow(attrs); + } + + static suppressBanner(attrs) { + return new SuppressBanner(attrs); + } + + static tagged(attrs) { + return new Tagged(attrs); + } + + static template(attrs) { + return new Template(attrs); + } + + static templateCache(attrs) { + return new TemplateCache(attrs); + } + + static threshold(attrs) { + return new Threshold(attrs); + } + + static to(attrs) { + return new To(attrs); + } + + static trace(attrs) { + return new Trace(attrs); + } + + static transform(attrs) { + return new Transform(attrs); + } + + static type(attrs) { + return new Type(attrs); + } + + static uri(attrs) { + return new Uri(attrs); + } + + static validate(attrs) { + return new Validate(attrs); + } + + static validateApprovalSignatures(attrs) { + return new ValidateApprovalSignatures(attrs); + } + + static validationMessaging(attrs) { + return new ValidationMessaging(attrs); + } + + static version(attrs) { + return new Version(attrs); + } + + static versionControl(attrs) { + return new VersionControl(attrs); + } + + static viewerPreferences(attrs) { + return new ViewerPreferences(attrs); + } + + static webClient(attrs) { + return new WebClient(attrs); + } + + static whitespace(attrs) { + return new Whitespace(attrs); + } + + static window(attrs) { + return new Window(attrs); + } + + static xdc(attrs) { + return new Xdc(attrs); + } + + static xdp(attrs) { + return new Xdp(attrs); + } + + static xsl(attrs) { + return new Xsl(attrs); + } + + static zpl(attrs) { + return new Zpl(attrs); + } + +} + +exports.ConfigNamespace = ConfigNamespace; + +/***/ }), +/* 217 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ConnectionSetNamespace = void 0; + +var _namespaces = __w_pdfjs_require__(204); + +var _xfa_object = __w_pdfjs_require__(202); + +const CONNECTION_SET_NS_ID = _namespaces.NamespaceIds.connectionSet.id; + +class ConnectionSet extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "connectionSet", true); + this.wsdlConnection = new _xfa_object.XFAObjectArray(); + this.xmlConnection = new _xfa_object.XFAObjectArray(); + this.xsdConnection = new _xfa_object.XFAObjectArray(); + } + +} + +class EffectiveInputPolicy extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "effectiveInputPolicy"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class EffectiveOutputPolicy extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "effectiveOutputPolicy"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Operation extends _xfa_object.StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "operation"); + this.id = attributes.id || ""; + this.input = attributes.input || ""; + this.name = attributes.name || ""; + this.output = attributes.output || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class RootElement extends _xfa_object.StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "rootElement"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class SoapAction extends _xfa_object.StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "soapAction"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class SoapAddress extends _xfa_object.StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "soapAddress"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class Uri extends _xfa_object.StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "uri"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class WsdlAddress extends _xfa_object.StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "wsdlAddress"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + +} + +class WsdlConnection extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "wsdlConnection", true); + this.dataDescription = attributes.dataDescription || ""; + this.name = attributes.name || ""; + this.effectiveInputPolicy = null; + this.effectiveOutputPolicy = null; + this.operation = null; + this.soapAction = null; + this.soapAddress = null; + this.wsdlAddress = null; + } + +} + +class XmlConnection extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "xmlConnection", true); + this.dataDescription = attributes.dataDescription || ""; + this.name = attributes.name || ""; + this.uri = null; + } + +} + +class XsdConnection extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "xsdConnection", true); + this.dataDescription = attributes.dataDescription || ""; + this.name = attributes.name || ""; + this.rootElement = null; + this.uri = null; + } + +} + +class ConnectionSetNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (ConnectionSetNamespace.hasOwnProperty(name)) { + return ConnectionSetNamespace[name](attributes); + } + + return undefined; + } + + static connectionSet(attrs) { + return new ConnectionSet(attrs); + } + + static effectiveInputPolicy(attrs) { + return new EffectiveInputPolicy(attrs); + } + + static effectiveOutputPolicy(attrs) { + return new EffectiveOutputPolicy(attrs); + } + + static operation(attrs) { + return new Operation(attrs); + } + + static rootElement(attrs) { + return new RootElement(attrs); + } + + static soapAction(attrs) { + return new SoapAction(attrs); + } + + static soapAddress(attrs) { + return new SoapAddress(attrs); + } + + static uri(attrs) { + return new Uri(attrs); + } + + static wsdlAddress(attrs) { + return new WsdlAddress(attrs); + } + + static wsdlConnection(attrs) { + return new WsdlConnection(attrs); + } + + static xmlConnection(attrs) { + return new XmlConnection(attrs); + } + + static xsdConnection(attrs) { + return new XsdConnection(attrs); + } + +} + +exports.ConnectionSetNamespace = ConnectionSetNamespace; + +/***/ }), +/* 218 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DatasetsNamespace = void 0; + +var _xfa_object = __w_pdfjs_require__(202); + +var _namespaces = __w_pdfjs_require__(204); + +const DATASETS_NS_ID = _namespaces.NamespaceIds.datasets.id; + +class Data extends _xfa_object.XmlObject { + constructor(attributes) { + super(DATASETS_NS_ID, "data", attributes); + } + + [_xfa_object.$isNsAgnostic]() { + return true; + } + +} + +class Datasets extends _xfa_object.XFAObject { + constructor(attributes) { + super(DATASETS_NS_ID, "datasets", true); + this.data = null; + this.Signature = null; + } + + [_xfa_object.$onChild](child) { + const name = child[_xfa_object.$nodeName]; + + if (name === "data" && child[_xfa_object.$namespaceId] === DATASETS_NS_ID || name === "Signature" && child[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.signature.id) { + this[name] = child; + } + + this[_xfa_object.$appendChild](child); + } + +} + +class DatasetsNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (DatasetsNamespace.hasOwnProperty(name)) { + return DatasetsNamespace[name](attributes); + } + + return undefined; + } + + static datasets(attributes) { + return new Datasets(attributes); + } + + static data(attributes) { + return new Data(attributes); + } + +} + +exports.DatasetsNamespace = DatasetsNamespace; + +/***/ }), +/* 219 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.LocaleSetNamespace = void 0; + +var _namespaces = __w_pdfjs_require__(204); + +var _xfa_object = __w_pdfjs_require__(202); + +var _utils = __w_pdfjs_require__(203); + +const LOCALE_SET_NS_ID = _namespaces.NamespaceIds.localeSet.id; + +class CalendarSymbols extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "calendarSymbols", true); + this.name = "gregorian"; + this.dayNames = new _xfa_object.XFAObjectArray(2); + this.eraNames = null; + this.meridiemNames = null; + this.monthNames = new _xfa_object.XFAObjectArray(2); + } + +} + +class CurrencySymbol extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "currencySymbol"); + this.name = (0, _utils.getStringOption)(attributes.name, ["symbol", "isoname", "decimal"]); + } + +} + +class CurrencySymbols extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "currencySymbols", true); + this.currencySymbol = new _xfa_object.XFAObjectArray(3); + } + +} + +class DatePattern extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "datePattern"); + this.name = (0, _utils.getStringOption)(attributes.name, ["full", "long", "med", "short"]); + } + +} + +class DatePatterns extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "datePatterns", true); + this.datePattern = new _xfa_object.XFAObjectArray(4); + } + +} + +class DateTimeSymbols extends _xfa_object.ContentObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "dateTimeSymbols"); + } + +} + +class Day extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "day"); + } + +} + +class DayNames extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "dayNames", true); + this.abbr = (0, _utils.getInteger)({ + data: attributes.abbr, + defaultValue: 0, + validate: x => x === 1 + }); + this.day = new _xfa_object.XFAObjectArray(7); + } + +} + +class Era extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "era"); + } + +} + +class EraNames extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "eraNames", true); + this.era = new _xfa_object.XFAObjectArray(2); + } + +} + +class Locale extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "locale", true); + this.desc = attributes.desc || ""; + this.name = "isoname"; + this.calendarSymbols = null; + this.currencySymbols = null; + this.datePatterns = null; + this.dateTimeSymbols = null; + this.numberPatterns = null; + this.numberSymbols = null; + this.timePatterns = null; + this.typeFaces = null; + } + +} + +class LocaleSet extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "localeSet", true); + this.locale = new _xfa_object.XFAObjectArray(); + } + +} + +class Meridiem extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "meridiem"); + } + +} + +class MeridiemNames extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "meridiemNames", true); + this.meridiem = new _xfa_object.XFAObjectArray(2); + } + +} + +class Month extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "month"); + } + +} + +class MonthNames extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "monthNames", true); + this.abbr = (0, _utils.getInteger)({ + data: attributes.abbr, + defaultValue: 0, + validate: x => x === 1 + }); + this.month = new _xfa_object.XFAObjectArray(12); + } + +} + +class NumberPattern extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "numberPattern"); + this.name = (0, _utils.getStringOption)(attributes.name, ["full", "long", "med", "short"]); + } + +} + +class NumberPatterns extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "numberPatterns", true); + this.numberPattern = new _xfa_object.XFAObjectArray(4); + } + +} + +class NumberSymbol extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "numberSymbol"); + this.name = (0, _utils.getStringOption)(attributes.name, ["decimal", "grouping", "percent", "minus", "zero"]); + } + +} + +class NumberSymbols extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "numberSymbols", true); + this.numberSymbol = new _xfa_object.XFAObjectArray(5); + } + +} + +class TimePattern extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "timePattern"); + this.name = (0, _utils.getStringOption)(attributes.name, ["full", "long", "med", "short"]); + } + +} + +class TimePatterns extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "timePatterns", true); + this.timePattern = new _xfa_object.XFAObjectArray(4); + } + +} + +class TypeFace extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "typeFace", true); + this.name = attributes.name | ""; + } + +} + +class TypeFaces extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "typeFaces", true); + this.typeFace = new _xfa_object.XFAObjectArray(); + } + +} + +class LocaleSetNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (LocaleSetNamespace.hasOwnProperty(name)) { + return LocaleSetNamespace[name](attributes); + } + + return undefined; + } + + static calendarSymbols(attrs) { + return new CalendarSymbols(attrs); + } + + static currencySymbol(attrs) { + return new CurrencySymbol(attrs); + } + + static currencySymbols(attrs) { + return new CurrencySymbols(attrs); + } + + static datePattern(attrs) { + return new DatePattern(attrs); + } + + static datePatterns(attrs) { + return new DatePatterns(attrs); + } + + static dateTimeSymbols(attrs) { + return new DateTimeSymbols(attrs); + } + + static day(attrs) { + return new Day(attrs); + } + + static dayNames(attrs) { + return new DayNames(attrs); + } + + static era(attrs) { + return new Era(attrs); + } + + static eraNames(attrs) { + return new EraNames(attrs); + } + + static locale(attrs) { + return new Locale(attrs); + } + + static localeSet(attrs) { + return new LocaleSet(attrs); + } + + static meridiem(attrs) { + return new Meridiem(attrs); + } + + static meridiemNames(attrs) { + return new MeridiemNames(attrs); + } + + static month(attrs) { + return new Month(attrs); + } + + static monthNames(attrs) { + return new MonthNames(attrs); + } + + static numberPattern(attrs) { + return new NumberPattern(attrs); + } + + static numberPatterns(attrs) { + return new NumberPatterns(attrs); + } + + static numberSymbol(attrs) { + return new NumberSymbol(attrs); + } + + static numberSymbols(attrs) { + return new NumberSymbols(attrs); + } + + static timePattern(attrs) { + return new TimePattern(attrs); + } + + static timePatterns(attrs) { + return new TimePatterns(attrs); + } + + static typeFace(attrs) { + return new TypeFace(attrs); + } + + static typeFaces(attrs) { + return new TypeFaces(attrs); + } + +} + +exports.LocaleSetNamespace = LocaleSetNamespace; + +/***/ }), +/* 220 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SignatureNamespace = void 0; + +var _namespaces = __w_pdfjs_require__(204); + +var _xfa_object = __w_pdfjs_require__(202); + +const SIGNATURE_NS_ID = _namespaces.NamespaceIds.signature.id; + +class Signature extends _xfa_object.XFAObject { + constructor(attributes) { + super(SIGNATURE_NS_ID, "signature", true); + } + +} + +class SignatureNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (SignatureNamespace.hasOwnProperty(name)) { + return SignatureNamespace[name](attributes); + } + + return undefined; + } + + static signature(attributes) { + return new Signature(attributes); + } + +} + +exports.SignatureNamespace = SignatureNamespace; + +/***/ }), +/* 221 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StylesheetNamespace = void 0; + +var _namespaces = __w_pdfjs_require__(204); + +var _xfa_object = __w_pdfjs_require__(202); + +const STYLESHEET_NS_ID = _namespaces.NamespaceIds.stylesheet.id; + +class Stylesheet extends _xfa_object.XFAObject { + constructor(attributes) { + super(STYLESHEET_NS_ID, "stylesheet", true); + } + +} + +class StylesheetNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (StylesheetNamespace.hasOwnProperty(name)) { + return StylesheetNamespace[name](attributes); + } + + return undefined; + } + + static stylesheet(attributes) { + return new Stylesheet(attributes); + } + +} + +exports.StylesheetNamespace = StylesheetNamespace; + +/***/ }), +/* 222 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XdpNamespace = void 0; + +var _namespaces = __w_pdfjs_require__(204); + +var _xfa_object = __w_pdfjs_require__(202); + +const XDP_NS_ID = _namespaces.NamespaceIds.xdp.id; + +class Xdp extends _xfa_object.XFAObject { + constructor(attributes) { + super(XDP_NS_ID, "xdp", true); + this.uuid = attributes.uuid || ""; + this.timeStamp = attributes.timeStamp || ""; + this.config = null; + this.connectionSet = null; + this.datasets = null; + this.localeSet = null; + this.stylesheet = new _xfa_object.XFAObjectArray(); + this.template = null; + } + + [_xfa_object.$onChildCheck](child) { + const ns = _namespaces.NamespaceIds[child[_xfa_object.$nodeName]]; + return ns && child[_xfa_object.$namespaceId] === ns.id; + } + +} + +class XdpNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (XdpNamespace.hasOwnProperty(name)) { + return XdpNamespace[name](attributes); + } + + return undefined; + } + + static xdp(attributes) { + return new Xdp(attributes); + } + +} + +exports.XdpNamespace = XdpNamespace; + +/***/ }), +/* 223 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XhtmlNamespace = void 0; + +var _xfa_object = __w_pdfjs_require__(202); + +var _namespaces = __w_pdfjs_require__(204); + +var _html_utils = __w_pdfjs_require__(209); + +var _utils = __w_pdfjs_require__(203); + +const XHTML_NS_ID = _namespaces.NamespaceIds.xhtml.id; +const $richText = Symbol(); +const VALID_STYLES = new Set(["color", "font", "font-family", "font-size", "font-stretch", "font-style", "font-weight", "margin", "margin-bottom", "margin-left", "margin-right", "margin-top", "letter-spacing", "line-height", "orphans", "page-break-after", "page-break-before", "page-break-inside", "tab-interval", "tab-stop", "text-align", "text-decoration", "text-indent", "vertical-align", "widows", "kerning-mode", "xfa-font-horizontal-scale", "xfa-font-vertical-scale", "xfa-spacerun", "xfa-tab-stops"]); +const StyleMapping = new Map([["page-break-after", "breakAfter"], ["page-break-before", "breakBefore"], ["page-break-inside", "breakInside"], ["kerning-mode", value => value === "none" ? "none" : "normal"], ["xfa-font-horizontal-scale", value => `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`], ["xfa-font-vertical-scale", value => `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`], ["xfa-spacerun", ""], ["xfa-tab-stops", ""], ["font-size", (value, original) => { + value = original.fontSize = (0, _utils.getMeasurement)(value); + return (0, _html_utils.measureToString)(0.99 * value); +}], ["letter-spacing", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["line-height", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-bottom", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-left", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-right", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-top", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["text-indent", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["font-family", value => value], ["vertical-align", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))]]); +const spacesRegExp = /\s+/g; +const crlfRegExp = /[\r\n]+/g; +const crlfForRichTextRegExp = /\r\n?/g; + +function mapStyle(styleStr, node, richText) { + const style = Object.create(null); + + if (!styleStr) { + return style; + } + + const original = Object.create(null); + + for (const [key, value] of styleStr.split(";").map(s => s.split(":", 2))) { + const mapping = StyleMapping.get(key); + + if (mapping === "") { + continue; + } + + let newValue = value; + + if (mapping) { + if (typeof mapping === "string") { + newValue = mapping; + } else { + newValue = mapping(value, original); + } + } + + if (key.endsWith("scale")) { + if (style.transform) { + style.transform = `${style[key]} ${newValue}`; + } else { + style.transform = newValue; + } + } else { + style[key.replaceAll(/-([a-zA-Z])/g, (_, x) => x.toUpperCase())] = newValue; + } + } + + if (style.fontFamily) { + (0, _html_utils.setFontFamily)({ + typeface: style.fontFamily, + weight: style.fontWeight || "normal", + posture: style.fontStyle || "normal", + size: original.fontSize || 0 + }, node, node[_xfa_object.$globalData].fontFinder, style); + } + + if (richText && style.verticalAlign && style.verticalAlign !== "0px" && style.fontSize) { + const SUB_SUPER_SCRIPT_FACTOR = 0.583; + const VERTICAL_FACTOR = 0.333; + const fontSize = (0, _utils.getMeasurement)(style.fontSize); + style.fontSize = (0, _html_utils.measureToString)(fontSize * SUB_SUPER_SCRIPT_FACTOR); + style.verticalAlign = (0, _html_utils.measureToString)(Math.sign((0, _utils.getMeasurement)(style.verticalAlign)) * fontSize * VERTICAL_FACTOR); + } + + if (richText && style.fontSize) { + style.fontSize = `calc(${style.fontSize} * var(--scale-factor))`; + } + + (0, _html_utils.fixTextIndent)(style); + return style; +} + +function checkStyle(node) { + if (!node.style) { + return ""; + } + + return node.style.trim().split(/\s*;\s*/).filter(s => !!s).map(s => s.split(/\s*:\s*/, 2)).filter(_ref => { + let [key, value] = _ref; + + if (key === "font-family") { + node[_xfa_object.$globalData].usedTypefaces.add(value); + } + + return VALID_STYLES.has(key); + }).map(kv => kv.join(":")).join(";"); +} + +const NoWhites = new Set(["body", "html"]); + +class XhtmlObject extends _xfa_object.XmlObject { + constructor(attributes, name) { + super(XHTML_NS_ID, name); + this[$richText] = false; + this.style = attributes.style || ""; + } + + [_xfa_object.$clean](builder) { + super[_xfa_object.$clean](builder); + + this.style = checkStyle(this); + } + + [_xfa_object.$acceptWhitespace]() { + return !NoWhites.has(this[_xfa_object.$nodeName]); + } + + [_xfa_object.$onText](str) { + let richText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (!richText) { + str = str.replace(crlfRegExp, ""); + + if (!this.style.includes("xfa-spacerun:yes")) { + str = str.replace(spacesRegExp, " "); + } + } else { + this[$richText] = true; + } + + if (str) { + this[_xfa_object.$content] += str; + } + } + + [_xfa_object.$pushGlyphs](measure) { + let mustPop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + const xfaFont = Object.create(null); + const margin = { + top: NaN, + bottom: NaN, + left: NaN, + right: NaN + }; + let lineHeight = null; + + for (const [key, value] of this.style.split(";").map(s => s.split(":", 2))) { + switch (key) { + case "font-family": + xfaFont.typeface = (0, _utils.stripQuotes)(value); + break; + + case "font-size": + xfaFont.size = (0, _utils.getMeasurement)(value); + break; + + case "font-weight": + xfaFont.weight = value; + break; + + case "font-style": + xfaFont.posture = value; + break; + + case "letter-spacing": + xfaFont.letterSpacing = (0, _utils.getMeasurement)(value); + break; + + case "margin": + const values = value.split(/ \t/).map(x => (0, _utils.getMeasurement)(x)); + + switch (values.length) { + case 1: + margin.top = margin.bottom = margin.left = margin.right = values[0]; + break; + + case 2: + margin.top = margin.bottom = values[0]; + margin.left = margin.right = values[1]; + break; + + case 3: + margin.top = values[0]; + margin.bottom = values[2]; + margin.left = margin.right = values[1]; + break; + + case 4: + margin.top = values[0]; + margin.left = values[1]; + margin.bottom = values[2]; + margin.right = values[3]; + break; + } + + break; + + case "margin-top": + margin.top = (0, _utils.getMeasurement)(value); + break; + + case "margin-bottom": + margin.bottom = (0, _utils.getMeasurement)(value); + break; + + case "margin-left": + margin.left = (0, _utils.getMeasurement)(value); + break; + + case "margin-right": + margin.right = (0, _utils.getMeasurement)(value); + break; + + case "line-height": + lineHeight = (0, _utils.getMeasurement)(value); + break; + } + } + + measure.pushData(xfaFont, margin, lineHeight); + + if (this[_xfa_object.$content]) { + measure.addString(this[_xfa_object.$content]); + } else { + for (const child of this[_xfa_object.$getChildren]()) { + if (child[_xfa_object.$nodeName] === "#text") { + measure.addString(child[_xfa_object.$content]); + continue; + } + + child[_xfa_object.$pushGlyphs](measure); + } + } + + if (mustPop) { + measure.popFont(); + } + } + + [_xfa_object.$toHTML](availableSpace) { + const children = []; + this[_xfa_object.$extra] = { + children + }; + + this[_xfa_object.$childrenToHTML]({}); + + if (children.length === 0 && !this[_xfa_object.$content]) { + return _utils.HTMLResult.EMPTY; + } + + let value; + + if (this[$richText]) { + value = this[_xfa_object.$content] ? this[_xfa_object.$content].replace(crlfForRichTextRegExp, "\n") : undefined; + } else { + value = this[_xfa_object.$content] || undefined; + } + + return _utils.HTMLResult.success({ + name: this[_xfa_object.$nodeName], + attributes: { + href: this.href, + style: mapStyle(this.style, this, this[$richText]) + }, + children, + value + }); + } + +} + +class A extends XhtmlObject { + constructor(attributes) { + super(attributes, "a"); + this.href = (0, _html_utils.fixURL)(attributes.href) || ""; + } + +} + +class B extends XhtmlObject { + constructor(attributes) { + super(attributes, "b"); + } + + [_xfa_object.$pushGlyphs](measure) { + measure.pushFont({ + weight: "bold" + }); + + super[_xfa_object.$pushGlyphs](measure); + + measure.popFont(); + } + +} + +class Body extends XhtmlObject { + constructor(attributes) { + super(attributes, "body"); + } + + [_xfa_object.$toHTML](availableSpace) { + const res = super[_xfa_object.$toHTML](availableSpace); + + const { + html + } = res; + + if (!html) { + return _utils.HTMLResult.EMPTY; + } + + html.name = "div"; + html.attributes.class = ["xfaRich"]; + return res; + } + +} + +class Br extends XhtmlObject { + constructor(attributes) { + super(attributes, "br"); + } + + [_xfa_object.$text]() { + return "\n"; + } + + [_xfa_object.$pushGlyphs](measure) { + measure.addString("\n"); + } + + [_xfa_object.$toHTML](availableSpace) { + return _utils.HTMLResult.success({ + name: "br" + }); + } + +} + +class Html extends XhtmlObject { + constructor(attributes) { + super(attributes, "html"); + } + + [_xfa_object.$toHTML](availableSpace) { + const children = []; + this[_xfa_object.$extra] = { + children + }; + + this[_xfa_object.$childrenToHTML]({}); + + if (children.length === 0) { + return _utils.HTMLResult.success({ + name: "div", + attributes: { + class: ["xfaRich"], + style: {} + }, + value: this[_xfa_object.$content] || "" + }); + } + + if (children.length === 1) { + const child = children[0]; + + if (child.attributes && child.attributes.class.includes("xfaRich")) { + return _utils.HTMLResult.success(child); + } + } + + return _utils.HTMLResult.success({ + name: "div", + attributes: { + class: ["xfaRich"], + style: {} + }, + children + }); + } + +} + +class I extends XhtmlObject { + constructor(attributes) { + super(attributes, "i"); + } + + [_xfa_object.$pushGlyphs](measure) { + measure.pushFont({ + posture: "italic" + }); + + super[_xfa_object.$pushGlyphs](measure); + + measure.popFont(); + } + +} + +class Li extends XhtmlObject { + constructor(attributes) { + super(attributes, "li"); + } + +} + +class Ol extends XhtmlObject { + constructor(attributes) { + super(attributes, "ol"); + } + +} + +class P extends XhtmlObject { + constructor(attributes) { + super(attributes, "p"); + } + + [_xfa_object.$pushGlyphs](measure) { + super[_xfa_object.$pushGlyphs](measure, false); + + measure.addString("\n"); + measure.addPara(); + measure.popFont(); + } + + [_xfa_object.$text]() { + const siblings = this[_xfa_object.$getParent]()[_xfa_object.$getChildren](); + + if (siblings.at(-1) === this) { + return super[_xfa_object.$text](); + } + + return super[_xfa_object.$text]() + "\n"; + } + +} + +class Span extends XhtmlObject { + constructor(attributes) { + super(attributes, "span"); + } + +} + +class Sub extends XhtmlObject { + constructor(attributes) { + super(attributes, "sub"); + } + +} + +class Sup extends XhtmlObject { + constructor(attributes) { + super(attributes, "sup"); + } + +} + +class Ul extends XhtmlObject { + constructor(attributes) { + super(attributes, "ul"); + } + +} + +class XhtmlNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (XhtmlNamespace.hasOwnProperty(name)) { + return XhtmlNamespace[name](attributes); + } + + return undefined; + } + + static a(attributes) { + return new A(attributes); + } + + static b(attributes) { + return new B(attributes); + } + + static body(attributes) { + return new Body(attributes); + } + + static br(attributes) { + return new Br(attributes); + } + + static html(attributes) { + return new Html(attributes); + } + + static i(attributes) { + return new I(attributes); + } + + static li(attributes) { + return new Li(attributes); + } + + static ol(attributes) { + return new Ol(attributes); + } + + static p(attributes) { + return new P(attributes); + } + + static span(attributes) { + return new Span(attributes); + } + + static sub(attributes) { + return new Sub(attributes); + } + + static sup(attributes) { + return new Sup(attributes); + } + + static ul(attributes) { + return new Ul(attributes); + } + +} + +exports.XhtmlNamespace = XhtmlNamespace; + +/***/ }), +/* 224 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.UnknownNamespace = void 0; + +var _namespaces = __w_pdfjs_require__(204); + +var _xfa_object = __w_pdfjs_require__(202); + +class UnknownNamespace { + constructor(nsId) { + this.namespaceId = nsId; + } + + [_namespaces.$buildXFAObject](name, attributes) { + return new _xfa_object.XmlObject(this.namespaceId, name, attributes); + } + +} + +exports.UnknownNamespace = UnknownNamespace; + +/***/ }), +/* 225 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DatasetReader = void 0; + +var _util = __w_pdfjs_require__(2); + +var _core_utils = __w_pdfjs_require__(131); + +var _xml_parser = __w_pdfjs_require__(191); + +function decodeString(str) { + try { + return (0, _util.stringToUTF8String)(str); + } catch (ex) { + (0, _util.warn)(`UTF-8 decoding failed: "${ex}".`); + return str; + } +} + +class DatasetXMLParser extends _xml_parser.SimpleXMLParser { + constructor(options) { + super(options); + this.node = null; + } + + onEndElement(name) { + const node = super.onEndElement(name); + + if (node && name === "xfa:datasets") { + this.node = node; + throw new Error("Aborting DatasetXMLParser."); + } + } + +} + +class DatasetReader { + constructor(data) { + if (data.datasets) { + this.node = new _xml_parser.SimpleXMLParser({ + hasAttributes: true + }).parseFromString(data.datasets).documentElement; + } else { + const parser = new DatasetXMLParser({ + hasAttributes: true + }); + + try { + parser.parseFromString(data["xdp:xdp"]); + } catch (_) {} + + this.node = parser.node; + } + } + + getValue(path) { + if (!this.node || !path) { + return ""; + } + + const node = this.node.searchNode((0, _core_utils.parseXFAPath)(path), 0); + + if (!node) { + return ""; + } + + const first = node.firstChild; + + if (first && first.nodeName === "value") { + return node.children.map(child => decodeString(child.textContent)); + } + + return decodeString(node.textContent); + } + +} + +exports.DatasetReader = DatasetReader; + +/***/ }), +/* 226 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XRef = void 0; + +var _util = __w_pdfjs_require__(2); + +var _primitives = __w_pdfjs_require__(130); + +var _core_utils = __w_pdfjs_require__(131); + +var _parser = __w_pdfjs_require__(142); + +var _base_stream = __w_pdfjs_require__(132); + +var _crypto = __w_pdfjs_require__(192); + +class XRef { + constructor(stream, pdfManager) { + this.stream = stream; + this.pdfManager = pdfManager; + this.entries = []; + this.xrefstms = Object.create(null); + this._cacheMap = new Map(); + this._pendingRefs = new _primitives.RefSet(); + this.stats = new _core_utils.DocStats(pdfManager.msgHandler); + this._newRefNum = null; + } + + getNewRef() { + if (this._newRefNum === null) { + this._newRefNum = this.entries.length || 1; + } + + return _primitives.Ref.get(this._newRefNum++, 0); + } + + resetNewRef() { + this._newRefNum = null; + } + + setStartXRef(startXRef) { + this.startXRefQueue = [startXRef]; + } + + parse() { + let recoveryMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + let trailerDict; + + if (!recoveryMode) { + trailerDict = this.readXRef(); + } else { + (0, _util.warn)("Indexing all PDF objects"); + trailerDict = this.indexObjects(); + } + + trailerDict.assignXref(this); + this.trailer = trailerDict; + let encrypt; + + try { + encrypt = trailerDict.get("Encrypt"); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.warn)(`XRef.parse - Invalid "Encrypt" reference: "${ex}".`); + } + + if (encrypt instanceof _primitives.Dict) { + const ids = trailerDict.get("ID"); + const fileId = ids && ids.length ? ids[0] : ""; + encrypt.suppressEncryption = true; + this.encrypt = new _crypto.CipherTransformFactory(encrypt, fileId, this.pdfManager.password); + } + + let root; + + try { + root = trailerDict.get("Root"); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.warn)(`XRef.parse - Invalid "Root" reference: "${ex}".`); + } + + if (root instanceof _primitives.Dict) { + try { + const pages = root.get("Pages"); + + if (pages instanceof _primitives.Dict) { + this.root = root; + return; + } + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.warn)(`XRef.parse - Invalid "Pages" reference: "${ex}".`); + } + } + + if (!recoveryMode) { + throw new _core_utils.XRefParseException(); + } + + throw new _util.InvalidPDFException("Invalid Root reference."); + } + + processXRefTable(parser) { + if (!("tableState" in this)) { + this.tableState = { + entryNum: 0, + streamPos: parser.lexer.stream.pos, + parserBuf1: parser.buf1, + parserBuf2: parser.buf2 + }; + } + + const obj = this.readXRefTable(parser); + + if (!(0, _primitives.isCmd)(obj, "trailer")) { + throw new _util.FormatError("Invalid XRef table: could not find trailer dictionary"); + } + + let dict = parser.getObj(); + + if (!(dict instanceof _primitives.Dict) && dict.dict) { + dict = dict.dict; + } + + if (!(dict instanceof _primitives.Dict)) { + throw new _util.FormatError("Invalid XRef table: could not parse trailer dictionary"); + } + + delete this.tableState; + return dict; + } + + readXRefTable(parser) { + const stream = parser.lexer.stream; + const tableState = this.tableState; + stream.pos = tableState.streamPos; + parser.buf1 = tableState.parserBuf1; + parser.buf2 = tableState.parserBuf2; + let obj; + + while (true) { + if (!("firstEntryNum" in tableState) || !("entryCount" in tableState)) { + if ((0, _primitives.isCmd)(obj = parser.getObj(), "trailer")) { + break; + } + + tableState.firstEntryNum = obj; + tableState.entryCount = parser.getObj(); + } + + let first = tableState.firstEntryNum; + const count = tableState.entryCount; + + if (!Number.isInteger(first) || !Number.isInteger(count)) { + throw new _util.FormatError("Invalid XRef table: wrong types in subsection header"); + } + + for (let i = tableState.entryNum; i < count; i++) { + tableState.streamPos = stream.pos; + tableState.entryNum = i; + tableState.parserBuf1 = parser.buf1; + tableState.parserBuf2 = parser.buf2; + const entry = {}; + entry.offset = parser.getObj(); + entry.gen = parser.getObj(); + const type = parser.getObj(); + + if (type instanceof _primitives.Cmd) { + switch (type.cmd) { + case "f": + entry.free = true; + break; + + case "n": + entry.uncompressed = true; + break; + } + } + + if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) || !(entry.free || entry.uncompressed)) { + throw new _util.FormatError(`Invalid entry in XRef subsection: ${first}, ${count}`); + } + + if (i === 0 && entry.free && first === 1) { + first = 0; + } + + if (!this.entries[i + first]) { + this.entries[i + first] = entry; + } + } + + tableState.entryNum = 0; + tableState.streamPos = stream.pos; + tableState.parserBuf1 = parser.buf1; + tableState.parserBuf2 = parser.buf2; + delete tableState.firstEntryNum; + delete tableState.entryCount; + } + + if (this.entries[0] && !this.entries[0].free) { + throw new _util.FormatError("Invalid XRef table: unexpected first object"); + } + + return obj; + } + + processXRefStream(stream) { + if (!("streamState" in this)) { + const streamParameters = stream.dict; + const byteWidths = streamParameters.get("W"); + let range = streamParameters.get("Index"); + + if (!range) { + range = [0, streamParameters.get("Size")]; + } + + this.streamState = { + entryRanges: range, + byteWidths, + entryNum: 0, + streamPos: stream.pos + }; + } + + this.readXRefStream(stream); + delete this.streamState; + return stream.dict; + } + + readXRefStream(stream) { + const streamState = this.streamState; + stream.pos = streamState.streamPos; + const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] = streamState.byteWidths; + const entryRanges = streamState.entryRanges; + + while (entryRanges.length > 0) { + const [first, n] = entryRanges; + + if (!Number.isInteger(first) || !Number.isInteger(n)) { + throw new _util.FormatError(`Invalid XRef range fields: ${first}, ${n}`); + } + + if (!Number.isInteger(typeFieldWidth) || !Number.isInteger(offsetFieldWidth) || !Number.isInteger(generationFieldWidth)) { + throw new _util.FormatError(`Invalid XRef entry fields length: ${first}, ${n}`); + } + + for (let i = streamState.entryNum; i < n; ++i) { + streamState.entryNum = i; + streamState.streamPos = stream.pos; + let type = 0, + offset = 0, + generation = 0; + + for (let j = 0; j < typeFieldWidth; ++j) { + const typeByte = stream.getByte(); + + if (typeByte === -1) { + throw new _util.FormatError("Invalid XRef byteWidths 'type'."); + } + + type = type << 8 | typeByte; + } + + if (typeFieldWidth === 0) { + type = 1; + } + + for (let j = 0; j < offsetFieldWidth; ++j) { + const offsetByte = stream.getByte(); + + if (offsetByte === -1) { + throw new _util.FormatError("Invalid XRef byteWidths 'offset'."); + } + + offset = offset << 8 | offsetByte; + } + + for (let j = 0; j < generationFieldWidth; ++j) { + const generationByte = stream.getByte(); + + if (generationByte === -1) { + throw new _util.FormatError("Invalid XRef byteWidths 'generation'."); + } + + generation = generation << 8 | generationByte; + } + + const entry = {}; + entry.offset = offset; + entry.gen = generation; + + switch (type) { + case 0: + entry.free = true; + break; + + case 1: + entry.uncompressed = true; + break; + + case 2: + break; + + default: + throw new _util.FormatError(`Invalid XRef entry type: ${type}`); + } + + if (!this.entries[first + i]) { + this.entries[first + i] = entry; + } + } + + streamState.entryNum = 0; + streamState.streamPos = stream.pos; + entryRanges.splice(0, 2); + } + } + + indexObjects() { + const TAB = 0x9, + LF = 0xa, + CR = 0xd, + SPACE = 0x20; + const PERCENT = 0x25, + LT = 0x3c; + + function readToken(data, offset) { + let token = "", + ch = data[offset]; + + while (ch !== LF && ch !== CR && ch !== LT) { + if (++offset >= data.length) { + break; + } + + token += String.fromCharCode(ch); + ch = data[offset]; + } + + return token; + } + + function skipUntil(data, offset, what) { + const length = what.length, + dataLength = data.length; + let skipped = 0; + + while (offset < dataLength) { + let i = 0; + + while (i < length && data[offset + i] === what[i]) { + ++i; + } + + if (i >= length) { + break; + } + + offset++; + skipped++; + } + + return skipped; + } + + const objRegExp = /^(\d+)\s+(\d+)\s+obj\b/; + const endobjRegExp = /\bendobj[\b\s]$/; + const nestedObjRegExp = /\s+(\d+\s+\d+\s+obj[\b\s<])$/; + const CHECK_CONTENT_LENGTH = 25; + const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]); + const startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]); + const objBytes = new Uint8Array([111, 98, 106]); + const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]); + this.entries.length = 0; + + this._cacheMap.clear(); + + const stream = this.stream; + stream.pos = 0; + const buffer = stream.getBytes(), + length = buffer.length; + let position = stream.start; + const trailers = [], + xrefStms = []; + + while (position < length) { + let ch = buffer[position]; + + if (ch === TAB || ch === LF || ch === CR || ch === SPACE) { + ++position; + continue; + } + + if (ch === PERCENT) { + do { + ++position; + + if (position >= length) { + break; + } + + ch = buffer[position]; + } while (ch !== LF && ch !== CR); + + continue; + } + + const token = readToken(buffer, position); + let m; + + if (token.startsWith("xref") && (token.length === 4 || /\s/.test(token[4]))) { + position += skipUntil(buffer, position, trailerBytes); + trailers.push(position); + position += skipUntil(buffer, position, startxrefBytes); + } else if (m = objRegExp.exec(token)) { + const num = m[1] | 0, + gen = m[2] | 0; + let contentLength, + startPos = position + token.length, + updateEntries = false; + + if (!this.entries[num]) { + updateEntries = true; + } else if (this.entries[num].gen === gen) { + try { + const parser = new _parser.Parser({ + lexer: new _parser.Lexer(stream.makeSubStream(startPos)) + }); + parser.getObj(); + updateEntries = true; + } catch (ex) { + if (ex instanceof _core_utils.ParserEOFException) { + (0, _util.warn)(`indexObjects -- checking object (${token}): "${ex}".`); + } else { + updateEntries = true; + } + } + } + + if (updateEntries) { + this.entries[num] = { + offset: position - stream.start, + gen, + uncompressed: true + }; + } + + while (startPos < buffer.length) { + const endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4; + contentLength = endPos - position; + const checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos); + const tokenStr = (0, _util.bytesToString)(buffer.subarray(checkPos, endPos)); + + if (endobjRegExp.test(tokenStr)) { + break; + } else { + const objToken = nestedObjRegExp.exec(tokenStr); + + if (objToken && objToken[1]) { + (0, _util.warn)('indexObjects: Found new "obj" inside of another "obj", ' + 'caused by missing "endobj" -- trying to recover.'); + contentLength -= objToken[1].length; + break; + } + } + + startPos = endPos; + } + + const content = buffer.subarray(position, position + contentLength); + const xrefTagOffset = skipUntil(content, 0, xrefBytes); + + if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) { + xrefStms.push(position - stream.start); + this.xrefstms[position - stream.start] = 1; + } + + position += contentLength; + } else if (token.startsWith("trailer") && (token.length === 7 || /\s/.test(token[7]))) { + trailers.push(position); + position += skipUntil(buffer, position, startxrefBytes); + } else { + position += token.length + 1; + } + } + + for (let i = 0, ii = xrefStms.length; i < ii; ++i) { + this.startXRefQueue.push(xrefStms[i]); + this.readXRef(true); + } + + let trailerDict; + + for (let i = 0, ii = trailers.length; i < ii; ++i) { + stream.pos = trailers[i]; + const parser = new _parser.Parser({ + lexer: new _parser.Lexer(stream), + xref: this, + allowStreams: true, + recoveryMode: true + }); + const obj = parser.getObj(); + + if (!(0, _primitives.isCmd)(obj, "trailer")) { + continue; + } + + const dict = parser.getObj(); + + if (!(dict instanceof _primitives.Dict)) { + continue; + } + + try { + const rootDict = dict.get("Root"); + + if (!(rootDict instanceof _primitives.Dict)) { + continue; + } + + const pagesDict = rootDict.get("Pages"); + + if (!(pagesDict instanceof _primitives.Dict)) { + continue; + } + + const pagesCount = pagesDict.get("Count"); + + if (!Number.isInteger(pagesCount)) { + continue; + } + } catch (ex) { + continue; + } + + if (dict.has("ID")) { + return dict; + } + + trailerDict = dict; + } + + if (trailerDict) { + return trailerDict; + } + + if (this.topDict) { + return this.topDict; + } + + throw new _util.InvalidPDFException("Invalid PDF structure."); + } + + readXRef() { + let recoveryMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + const stream = this.stream; + const startXRefParsedCache = new Set(); + + try { + while (this.startXRefQueue.length) { + const startXRef = this.startXRefQueue[0]; + + if (startXRefParsedCache.has(startXRef)) { + (0, _util.warn)("readXRef - skipping XRef table since it was already parsed."); + this.startXRefQueue.shift(); + continue; + } + + startXRefParsedCache.add(startXRef); + stream.pos = startXRef + stream.start; + const parser = new _parser.Parser({ + lexer: new _parser.Lexer(stream), + xref: this, + allowStreams: true + }); + let obj = parser.getObj(); + let dict; + + if ((0, _primitives.isCmd)(obj, "xref")) { + dict = this.processXRefTable(parser); + + if (!this.topDict) { + this.topDict = dict; + } + + obj = dict.get("XRefStm"); + + if (Number.isInteger(obj)) { + const pos = obj; + + if (!(pos in this.xrefstms)) { + this.xrefstms[pos] = 1; + this.startXRefQueue.push(pos); + } + } + } else if (Number.isInteger(obj)) { + if (!Number.isInteger(parser.getObj()) || !(0, _primitives.isCmd)(parser.getObj(), "obj") || !((obj = parser.getObj()) instanceof _base_stream.BaseStream)) { + throw new _util.FormatError("Invalid XRef stream"); + } + + dict = this.processXRefStream(obj); + + if (!this.topDict) { + this.topDict = dict; + } + + if (!dict) { + throw new _util.FormatError("Failed to read XRef stream"); + } + } else { + throw new _util.FormatError("Invalid XRef stream header"); + } + + obj = dict.get("Prev"); + + if (Number.isInteger(obj)) { + this.startXRefQueue.push(obj); + } else if (obj instanceof _primitives.Ref) { + this.startXRefQueue.push(obj.num); + } + + this.startXRefQueue.shift(); + } + + return this.topDict; + } catch (e) { + if (e instanceof _core_utils.MissingDataException) { + throw e; + } + + (0, _util.info)("(while reading XRef): " + e); + this.startXRefQueue.shift(); + } + + if (recoveryMode) { + return undefined; + } + + throw new _core_utils.XRefParseException(); + } + + getEntry(i) { + const xrefEntry = this.entries[i]; + + if (xrefEntry && !xrefEntry.free && xrefEntry.offset) { + return xrefEntry; + } + + return null; + } + + fetchIfRef(obj) { + let suppressEncryption = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (obj instanceof _primitives.Ref) { + return this.fetch(obj, suppressEncryption); + } + + return obj; + } + + fetch(ref) { + let suppressEncryption = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (!(ref instanceof _primitives.Ref)) { + throw new Error("ref object is not a reference"); + } + + const num = ref.num; + + const cacheEntry = this._cacheMap.get(num); + + if (cacheEntry !== undefined) { + if (cacheEntry instanceof _primitives.Dict && !cacheEntry.objId) { + cacheEntry.objId = ref.toString(); + } + + return cacheEntry; + } + + let xrefEntry = this.getEntry(num); + + if (xrefEntry === null) { + this._cacheMap.set(num, xrefEntry); + + return xrefEntry; + } + + if (this._pendingRefs.has(ref)) { + this._pendingRefs.remove(ref); + + (0, _util.warn)(`Ignoring circular reference: ${ref}.`); + return _primitives.CIRCULAR_REF; + } + + this._pendingRefs.put(ref); + + try { + if (xrefEntry.uncompressed) { + xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption); + } else { + xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption); + } + + this._pendingRefs.remove(ref); + } catch (ex) { + this._pendingRefs.remove(ref); + + throw ex; + } + + if (xrefEntry instanceof _primitives.Dict) { + xrefEntry.objId = ref.toString(); + } else if (xrefEntry instanceof _base_stream.BaseStream) { + xrefEntry.dict.objId = ref.toString(); + } + + return xrefEntry; + } + + fetchUncompressed(ref, xrefEntry) { + let suppressEncryption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + const gen = ref.gen; + let num = ref.num; + + if (xrefEntry.gen !== gen) { + throw new _core_utils.XRefEntryException(`Inconsistent generation in XRef: ${ref}`); + } + + const stream = this.stream.makeSubStream(xrefEntry.offset + this.stream.start); + const parser = new _parser.Parser({ + lexer: new _parser.Lexer(stream), + xref: this, + allowStreams: true + }); + const obj1 = parser.getObj(); + const obj2 = parser.getObj(); + const obj3 = parser.getObj(); + + if (obj1 !== num || obj2 !== gen || !(obj3 instanceof _primitives.Cmd)) { + throw new _core_utils.XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`); + } + + if (obj3.cmd !== "obj") { + if (obj3.cmd.startsWith("obj")) { + num = parseInt(obj3.cmd.substring(3), 10); + + if (!Number.isNaN(num)) { + return num; + } + } + + throw new _core_utils.XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`); + } + + if (this.encrypt && !suppressEncryption) { + xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen)); + } else { + xrefEntry = parser.getObj(); + } + + if (!(xrefEntry instanceof _base_stream.BaseStream)) { + this._cacheMap.set(num, xrefEntry); + } + + return xrefEntry; + } + + fetchCompressed(ref, xrefEntry) { + let suppressEncryption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + const tableOffset = xrefEntry.offset; + const stream = this.fetch(_primitives.Ref.get(tableOffset, 0)); + + if (!(stream instanceof _base_stream.BaseStream)) { + throw new _util.FormatError("bad ObjStm stream"); + } + + const first = stream.dict.get("First"); + const n = stream.dict.get("N"); + + if (!Number.isInteger(first) || !Number.isInteger(n)) { + throw new _util.FormatError("invalid first and n parameters for ObjStm stream"); + } + + let parser = new _parser.Parser({ + lexer: new _parser.Lexer(stream), + xref: this, + allowStreams: true + }); + const nums = new Array(n); + const offsets = new Array(n); + + for (let i = 0; i < n; ++i) { + const num = parser.getObj(); + + if (!Number.isInteger(num)) { + throw new _util.FormatError(`invalid object number in the ObjStm stream: ${num}`); + } + + const offset = parser.getObj(); + + if (!Number.isInteger(offset)) { + throw new _util.FormatError(`invalid object offset in the ObjStm stream: ${offset}`); + } + + nums[i] = num; + offsets[i] = offset; + } + + const start = (stream.start || 0) + first; + const entries = new Array(n); + + for (let i = 0; i < n; ++i) { + const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined; + + if (length < 0) { + throw new _util.FormatError("Invalid offset in the ObjStm stream."); + } + + parser = new _parser.Parser({ + lexer: new _parser.Lexer(stream.makeSubStream(start + offsets[i], length, stream.dict)), + xref: this, + allowStreams: true + }); + const obj = parser.getObj(); + entries[i] = obj; + + if (obj instanceof _base_stream.BaseStream) { + continue; + } + + const num = nums[i], + entry = this.entries[num]; + + if (entry && entry.offset === tableOffset && entry.gen === i) { + this._cacheMap.set(num, obj); + } + } + + xrefEntry = entries[xrefEntry.gen]; + + if (xrefEntry === undefined) { + throw new _core_utils.XRefEntryException(`Bad (compressed) XRef entry: ${ref}`); + } + + return xrefEntry; + } + + async fetchIfRefAsync(obj, suppressEncryption) { + if (obj instanceof _primitives.Ref) { + return this.fetchAsync(obj, suppressEncryption); + } + + return obj; + } + + async fetchAsync(ref, suppressEncryption) { + try { + return this.fetch(ref, suppressEncryption); + } catch (ex) { + if (!(ex instanceof _core_utils.MissingDataException)) { + throw ex; + } + + await this.pdfManager.requestRange(ex.begin, ex.end); + return this.fetchAsync(ref, suppressEncryption); + } + } + + getCatalogObj() { + return this.root; + } + +} + +exports.XRef = XRef; + +/***/ }), +/* 227 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MessageHandler = void 0; + +var _util = __w_pdfjs_require__(2); + +const CallbackKind = { + UNKNOWN: 0, + DATA: 1, + ERROR: 2 +}; +const StreamKind = { + UNKNOWN: 0, + CANCEL: 1, + CANCEL_COMPLETE: 2, + CLOSE: 3, + ENQUEUE: 4, + ERROR: 5, + PULL: 6, + PULL_COMPLETE: 7, + START_COMPLETE: 8 +}; + +function wrapReason(reason) { + if (!(reason instanceof Error || typeof reason === "object" && reason !== null)) { + (0, _util.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.'); + } + + switch (reason.name) { + case "AbortException": + return new _util.AbortException(reason.message); + + case "MissingPDFException": + return new _util.MissingPDFException(reason.message); + + case "PasswordException": + return new _util.PasswordException(reason.message, reason.code); + + case "UnexpectedResponseException": + return new _util.UnexpectedResponseException(reason.message, reason.status); + + case "UnknownErrorException": + return new _util.UnknownErrorException(reason.message, reason.details); + + default: + return new _util.UnknownErrorException(reason.message, reason.toString()); + } +} + +class MessageHandler { + constructor(sourceName, targetName, comObj) { + this.sourceName = sourceName; + this.targetName = targetName; + this.comObj = comObj; + this.callbackId = 1; + this.streamId = 1; + this.streamSinks = Object.create(null); + this.streamControllers = Object.create(null); + this.callbackCapabilities = Object.create(null); + this.actionHandler = Object.create(null); + + this._onComObjOnMessage = event => { + const data = event.data; + + if (data.targetName !== this.sourceName) { + return; + } + + if (data.stream) { + this._processStreamMessage(data); + + return; + } + + if (data.callback) { + const callbackId = data.callbackId; + const capability = this.callbackCapabilities[callbackId]; + + if (!capability) { + throw new Error(`Cannot resolve callback ${callbackId}`); + } + + delete this.callbackCapabilities[callbackId]; + + if (data.callback === CallbackKind.DATA) { + capability.resolve(data.data); + } else if (data.callback === CallbackKind.ERROR) { + capability.reject(wrapReason(data.reason)); + } else { + throw new Error("Unexpected callback case"); + } + + return; + } + + const action = this.actionHandler[data.action]; + + if (!action) { + throw new Error(`Unknown action from worker: ${data.action}`); } - } else if (data.action in ah) { - var action = ah[data.action]; if (data.callbackId) { - var _sourceName = _this.sourceName; - var _targetName = data.sourceName; - Promise.resolve().then(function () { - return action[0].call(action[1], data.data); + const cbSourceName = this.sourceName; + const cbTargetName = data.sourceName; + new Promise(function (resolve) { + resolve(action(data.data)); }).then(function (result) { comObj.postMessage({ - sourceName: _sourceName, - targetName: _targetName, - isReply: true, + sourceName: cbSourceName, + targetName: cbTargetName, + callback: CallbackKind.DATA, callbackId: data.callbackId, data: result }); }, function (reason) { comObj.postMessage({ - sourceName: _sourceName, - targetName: _targetName, - isReply: true, + sourceName: cbSourceName, + targetName: cbTargetName, + callback: CallbackKind.ERROR, callbackId: data.callbackId, - error: makeReasonSerializable(reason) + reason: wrapReason(reason) }); }); - } else if (data.streamId) { - _this._createStreamSink(data); - } else { - action[0].call(action[1], data.data); + return; } - } else { - throw new Error("Unknown action from worker: ".concat(data.action)); - } - }; - comObj.addEventListener('message', this._onComObjOnMessage); -} + if (data.streamId) { + this._createStreamSink(data); -MessageHandler.prototype = { - on: function on(actionName, handler, scope) { - var ah = this.actionHandler; + return; + } + + action(data.data); + }; + + comObj.addEventListener("message", this._onComObjOnMessage); + } + + on(actionName, handler) { + const ah = this.actionHandler; if (ah[actionName]) { - throw new Error("There is already an actionName called \"".concat(actionName, "\"")); + throw new Error(`There is already an actionName called "${actionName}"`); } - ah[actionName] = [handler, scope]; - }, - send: function send(actionName, data, transfers) { - var message = { + ah[actionName] = handler; + } + + send(actionName, data, transfers) { + this.comObj.postMessage({ sourceName: this.sourceName, targetName: this.targetName, action: actionName, - data: data - }; - this.postMessage(message, transfers); - }, - sendWithPromise: function sendWithPromise(actionName, data, transfers) { - var callbackId = this.callbackId++; - var message = { - sourceName: this.sourceName, - targetName: this.targetName, - action: actionName, - data: data, - callbackId: callbackId - }; - var capability = (0, _util.createPromiseCapability)(); - this.callbacksCapabilities[callbackId] = capability; + data + }, transfers); + } + + sendWithPromise(actionName, data, transfers) { + const callbackId = this.callbackId++; + const capability = (0, _util.createPromiseCapability)(); + this.callbackCapabilities[callbackId] = capability; try { - this.postMessage(message, transfers); - } catch (e) { - capability.reject(e); + this.comObj.postMessage({ + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + callbackId, + data + }, transfers); + } catch (ex) { + capability.reject(ex); } return capability.promise; - }, - sendWithStream: function sendWithStream(actionName, data, queueingStrategy, transfers) { - var _this2 = this; + } - var streamId = this.streamId++; - var sourceName = this.sourceName; - var targetName = this.targetName; - return new _util.ReadableStream({ - start: function start(controller) { - var startCapability = (0, _util.createPromiseCapability)(); - _this2.streamControllers[streamId] = { - controller: controller, + sendWithStream(actionName, data, queueingStrategy, transfers) { + const streamId = this.streamId++, + sourceName = this.sourceName, + targetName = this.targetName, + comObj = this.comObj; + return new ReadableStream({ + start: controller => { + const startCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId] = { + controller, startCall: startCapability, + pullCall: null, + cancelCall: null, isClosed: false }; - - _this2.postMessage({ - sourceName: sourceName, - targetName: targetName, + comObj.postMessage({ + sourceName, + targetName, action: actionName, - streamId: streamId, - data: data, + streamId, + data, desiredSize: controller.desiredSize - }); - + }, transfers); return startCapability.promise; }, - pull: function pull(controller) { - var pullCapability = (0, _util.createPromiseCapability)(); - _this2.streamControllers[streamId].pullCall = pullCapability; - - _this2.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: 'pull', - streamId: streamId, + pull: controller => { + const pullCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId].pullCall = pullCapability; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL, + streamId, desiredSize: controller.desiredSize }); - return pullCapability.promise; }, - cancel: function cancel(reason) { - var cancelCapability = (0, _util.createPromiseCapability)(); - _this2.streamControllers[streamId].cancelCall = cancelCapability; - _this2.streamControllers[streamId].isClosed = true; - - _this2.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: 'cancel', - reason: reason, - streamId: streamId + cancel: reason => { + (0, _util.assert)(reason instanceof Error, "cancel must have a valid reason"); + const cancelCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId].cancelCall = cancelCapability; + this.streamControllers[streamId].isClosed = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL, + streamId, + reason: wrapReason(reason) }); - return cancelCapability.promise; } }, queueingStrategy); - }, - _createStreamSink: function _createStreamSink(data) { - var _this3 = this; + } - var self = this; - var action = this.actionHandler[data.action]; - var streamId = data.streamId; - var desiredSize = data.desiredSize; - var sourceName = this.sourceName; - var targetName = data.sourceName; - var capability = (0, _util.createPromiseCapability)(); - - var sendStreamRequest = function sendStreamRequest(_ref) { - var stream = _ref.stream, - chunk = _ref.chunk, - transfers = _ref.transfers, - success = _ref.success, - reason = _ref.reason; - - _this3.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: stream, - streamId: streamId, - chunk: chunk, - success: success, - reason: reason - }, transfers); - }; - - var streamSink = { - enqueue: function enqueue(chunk) { - var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; - var transfers = arguments.length > 2 ? arguments[2] : undefined; + _createStreamSink(data) { + const streamId = data.streamId, + sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + const self = this, + action = this.actionHandler[data.action]; + const streamSink = { + enqueue(chunk) { + let size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; + let transfers = arguments.length > 2 ? arguments[2] : undefined; if (this.isCancelled) { return; } - var lastDesiredSize = this.desiredSize; + const lastDesiredSize = this.desiredSize; this.desiredSize -= size; if (lastDesiredSize > 0 && this.desiredSize <= 0) { @@ -55745,457 +78598,465 @@ MessageHandler.prototype = { this.ready = this.sinkCapability.promise; } - sendStreamRequest({ - stream: 'enqueue', - chunk: chunk, - transfers: transfers - }); + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ENQUEUE, + streamId, + chunk + }, transfers); }, - close: function close() { + + close() { if (this.isCancelled) { return; } this.isCancelled = true; - sendStreamRequest({ - stream: 'close' + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CLOSE, + streamId }); delete self.streamSinks[streamId]; }, - error: function error(reason) { + + error(reason) { + (0, _util.assert)(reason instanceof Error, "error must have a valid reason"); + if (this.isCancelled) { return; } this.isCancelled = true; - sendStreamRequest({ - stream: 'error', - reason: reason + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ERROR, + streamId, + reason: wrapReason(reason) }); }, - sinkCapability: capability, + + sinkCapability: (0, _util.createPromiseCapability)(), onPull: null, onCancel: null, isCancelled: false, - desiredSize: desiredSize, + desiredSize: data.desiredSize, ready: null }; streamSink.sinkCapability.resolve(); streamSink.ready = streamSink.sinkCapability.promise; this.streamSinks[streamId] = streamSink; - resolveCall(action[0], [data.data, streamSink], action[1]).then(function () { - sendStreamRequest({ - stream: 'start_complete', + new Promise(function (resolve) { + resolve(action(data.data, streamSink)); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, success: true }); }, function (reason) { - sendStreamRequest({ - stream: 'start_complete', - success: false, - reason: reason + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, + reason: wrapReason(reason) }); }); - }, - _processStreamMessage: function _processStreamMessage(data) { - var _this4 = this; + } - var sourceName = this.sourceName; - var targetName = data.sourceName; - var streamId = data.streamId; - - var sendStreamResponse = function sendStreamResponse(_ref2) { - var stream = _ref2.stream, - success = _ref2.success, - reason = _ref2.reason; - - _this4.comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: stream, - success: success, - streamId: streamId, - reason: reason - }); - }; - - var deleteStreamController = function deleteStreamController() { - Promise.all([_this4.streamControllers[data.streamId].startCall, _this4.streamControllers[data.streamId].pullCall, _this4.streamControllers[data.streamId].cancelCall].map(function (capability) { - return capability && finalize(capability.promise); - })).then(function () { - delete _this4.streamControllers[data.streamId]; - }); - }; + _processStreamMessage(data) { + const streamId = data.streamId, + sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + const streamController = this.streamControllers[streamId], + streamSink = this.streamSinks[streamId]; switch (data.stream) { - case 'start_complete': - resolveOrReject(this.streamControllers[data.streamId].startCall, data.success, wrapReason(data.reason)); + case StreamKind.START_COMPLETE: + if (data.success) { + streamController.startCall.resolve(); + } else { + streamController.startCall.reject(wrapReason(data.reason)); + } + break; - case 'pull_complete': - resolveOrReject(this.streamControllers[data.streamId].pullCall, data.success, wrapReason(data.reason)); + case StreamKind.PULL_COMPLETE: + if (data.success) { + streamController.pullCall.resolve(); + } else { + streamController.pullCall.reject(wrapReason(data.reason)); + } + break; - case 'pull': - if (!this.streamSinks[data.streamId]) { - sendStreamResponse({ - stream: 'pull_complete', + case StreamKind.PULL: + if (!streamSink) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, success: true }); break; } - if (this.streamSinks[data.streamId].desiredSize <= 0 && data.desiredSize > 0) { - this.streamSinks[data.streamId].sinkCapability.resolve(); + if (streamSink.desiredSize <= 0 && data.desiredSize > 0) { + streamSink.sinkCapability.resolve(); } - this.streamSinks[data.streamId].desiredSize = data.desiredSize; - resolveCall(this.streamSinks[data.streamId].onPull).then(function () { - sendStreamResponse({ - stream: 'pull_complete', + streamSink.desiredSize = data.desiredSize; + new Promise(function (resolve) { + resolve(streamSink.onPull && streamSink.onPull()); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, success: true }); }, function (reason) { - sendStreamResponse({ - stream: 'pull_complete', - success: false, - reason: reason + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + reason: wrapReason(reason) }); }); break; - case 'enqueue': - (0, _util.assert)(this.streamControllers[data.streamId], 'enqueue should have stream controller'); + case StreamKind.ENQUEUE: + (0, _util.assert)(streamController, "enqueue should have stream controller"); - if (!this.streamControllers[data.streamId].isClosed) { - this.streamControllers[data.streamId].controller.enqueue(data.chunk); - } - - break; - - case 'close': - (0, _util.assert)(this.streamControllers[data.streamId], 'close should have stream controller'); - - if (this.streamControllers[data.streamId].isClosed) { + if (streamController.isClosed) { break; } - this.streamControllers[data.streamId].isClosed = true; - this.streamControllers[data.streamId].controller.close(); - deleteStreamController(); + streamController.controller.enqueue(data.chunk); break; - case 'error': - (0, _util.assert)(this.streamControllers[data.streamId], 'error should have stream controller'); - this.streamControllers[data.streamId].controller.error(wrapReason(data.reason)); - deleteStreamController(); - break; + case StreamKind.CLOSE: + (0, _util.assert)(streamController, "close should have stream controller"); - case 'cancel_complete': - resolveOrReject(this.streamControllers[data.streamId].cancelCall, data.success, wrapReason(data.reason)); - deleteStreamController(); - break; - - case 'cancel': - if (!this.streamSinks[data.streamId]) { + if (streamController.isClosed) { break; } - resolveCall(this.streamSinks[data.streamId].onCancel, [wrapReason(data.reason)]).then(function () { - sendStreamResponse({ - stream: 'cancel_complete', + streamController.isClosed = true; + streamController.controller.close(); + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.ERROR: + (0, _util.assert)(streamController, "error should have stream controller"); + streamController.controller.error(wrapReason(data.reason)); + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.CANCEL_COMPLETE: + if (data.success) { + streamController.cancelCall.resolve(); + } else { + streamController.cancelCall.reject(wrapReason(data.reason)); + } + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.CANCEL: + if (!streamSink) { + break; + } + + new Promise(function (resolve) { + resolve(streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, success: true }); }, function (reason) { - sendStreamResponse({ - stream: 'cancel_complete', - success: false, - reason: reason + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, + reason: wrapReason(reason) }); }); - this.streamSinks[data.streamId].sinkCapability.reject(wrapReason(data.reason)); - this.streamSinks[data.streamId].isCancelled = true; - delete this.streamSinks[data.streamId]; + streamSink.sinkCapability.reject(wrapReason(data.reason)); + streamSink.isCancelled = true; + delete this.streamSinks[streamId]; break; default: - throw new Error('Unexpected stream case'); + throw new Error("Unexpected stream case"); } - }, - postMessage: function postMessage(message, transfers) { - if (transfers && this.postMessageTransfers) { - this.comObj.postMessage(message, transfers); - } else { - this.comObj.postMessage(message); - } - }, - destroy: function destroy() { - this.comObj.removeEventListener('message', this._onComObjOnMessage); } -}; + + async _deleteStreamController(streamController, streamId) { + await Promise.allSettled([streamController.startCall && streamController.startCall.promise, streamController.pullCall && streamController.pullCall.promise, streamController.cancelCall && streamController.cancelCall.promise]); + delete this.streamControllers[streamId]; + } + + destroy() { + this.comObj.removeEventListener("message", this._onComObjOnMessage); + } + +} + +exports.MessageHandler = MessageHandler; /***/ }), -/* 192 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 228 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFWorkerStream = void 0; -var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2)); - -var _util = __w_pdfjs_require__(5); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var PDFWorkerStream = -/*#__PURE__*/ -function () { - function PDFWorkerStream(msgHandler) { - _classCallCheck(this, PDFWorkerStream); +var _util = __w_pdfjs_require__(2); +class PDFWorkerStream { + constructor(msgHandler) { this._msgHandler = msgHandler; this._contentLength = null; this._fullRequestReader = null; this._rangeRequestReaders = []; } - _createClass(PDFWorkerStream, [{ - key: "getFullReader", - value: function getFullReader() { - (0, _util.assert)(!this._fullRequestReader); - this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler); - return this._fullRequestReader; + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFWorkerStream.getFullReader can only be called once."); + this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler); + return this._fullRequestReader; + } + + getRangeReader(begin, end) { + const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler); + + this._rangeRequestReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); } - }, { - key: "getRangeReader", - value: function getRangeReader(begin, end) { - var reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler); - this._rangeRequestReaders.push(reader); - - return reader; + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); } - }, { - key: "cancelAllRequests", - value: function cancelAllRequests(reason) { - if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); - } + } - var readers = this._rangeRequestReaders.slice(0); - - readers.forEach(function (reader) { - reader.cancel(reason); - }); - } - }]); - - return PDFWorkerStream; -}(); +} exports.PDFWorkerStream = PDFWorkerStream; -var PDFWorkerStreamReader = -/*#__PURE__*/ -function () { - function PDFWorkerStreamReader(msgHandler) { - var _this = this; - - _classCallCheck(this, PDFWorkerStreamReader); - +class PDFWorkerStreamReader { + constructor(msgHandler) { this._msgHandler = msgHandler; this.onProgress = null; this._contentLength = null; this._isRangeSupported = false; this._isStreamingSupported = false; - var readableStream = this._msgHandler.sendWithStream('GetReader'); + const readableStream = this._msgHandler.sendWithStream("GetReader"); this._reader = readableStream.getReader(); - this._headersReady = this._msgHandler.sendWithPromise('ReaderHeadersReady').then(function (data) { - _this._isStreamingSupported = data.isStreamingSupported; - _this._isRangeSupported = data.isRangeSupported; - _this._contentLength = data.contentLength; + this._headersReady = this._msgHandler.sendWithPromise("ReaderHeadersReady").then(data => { + this._isStreamingSupported = data.isStreamingSupported; + this._isRangeSupported = data.isRangeSupported; + this._contentLength = data.contentLength; }); } - _createClass(PDFWorkerStreamReader, [{ - key: "read", - value: function () { - var _read = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee() { - var _ref, value, done; + get headersReady() { + return this._headersReady; + } - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return this._reader.read(); + get contentLength() { + return this._contentLength; + } - case 2: - _ref = _context.sent; - value = _ref.value; - done = _ref.done; + get isStreamingSupported() { + return this._isStreamingSupported; + } - if (!done) { - _context.next = 7; - break; - } + get isRangeSupported() { + return this._isRangeSupported; + } - return _context.abrupt("return", { - value: undefined, - done: true - }); + async read() { + const { + value, + done + } = await this._reader.read(); - case 7: - return _context.abrupt("return", { - value: value.buffer, - done: false - }); - - case 8: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function read() { - return _read.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - this._reader.cancel(reason); + if (done) { + return { + value: undefined, + done: true + }; } - }, { - key: "headersReady", - get: function get() { - return this._headersReady; - } - }, { - key: "contentLength", - get: function get() { - return this._contentLength; - } - }, { - key: "isStreamingSupported", - get: function get() { - return this._isStreamingSupported; - } - }, { - key: "isRangeSupported", - get: function get() { - return this._isRangeSupported; - } - }]); - return PDFWorkerStreamReader; -}(); + return { + value: value.buffer, + done: false + }; + } -var PDFWorkerStreamRangeReader = -/*#__PURE__*/ -function () { - function PDFWorkerStreamRangeReader(begin, end, msgHandler) { - _classCallCheck(this, PDFWorkerStreamRangeReader); + cancel(reason) { + this._reader.cancel(reason); + } +} + +class PDFWorkerStreamRangeReader { + constructor(begin, end, msgHandler) { this._msgHandler = msgHandler; this.onProgress = null; - var readableStream = this._msgHandler.sendWithStream('GetRangeReader', { - begin: begin, - end: end + const readableStream = this._msgHandler.sendWithStream("GetRangeReader", { + begin, + end }); this._reader = readableStream.getReader(); } - _createClass(PDFWorkerStreamRangeReader, [{ - key: "read", - value: function () { - var _read2 = _asyncToGenerator( - /*#__PURE__*/ - _regenerator["default"].mark(function _callee2() { - var _ref2, value, done; + get isStreamingSupported() { + return false; + } - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _context2.next = 2; - return this._reader.read(); + async read() { + const { + value, + done + } = await this._reader.read(); - case 2: - _ref2 = _context2.sent; - value = _ref2.value; - done = _ref2.done; - - if (!done) { - _context2.next = 7; - break; - } - - return _context2.abrupt("return", { - value: undefined, - done: true - }); - - case 7: - return _context2.abrupt("return", { - value: value.buffer, - done: false - }); - - case 8: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function read() { - return _read2.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - this._reader.cancel(reason); + if (done) { + return { + value: undefined, + done: true + }; } - }, { - key: "isStreamingSupported", - get: function get() { - return false; - } - }]); - return PDFWorkerStreamRangeReader; -}(); + return { + value: value.buffer, + done: false + }; + } + + cancel(reason) { + this._reader.cancel(reason); + } + +} /***/ }) -/******/ ]); +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __w_pdfjs_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __w_pdfjs_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__w_pdfjs_require__.o(definition, key) && !__w_pdfjs_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __w_pdfjs_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __w_pdfjs_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; +var exports = __webpack_exports__; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "WorkerMessageHandler", ({ + enumerable: true, + get: function () { + return _worker.WorkerMessageHandler; + } +})); + +var _worker = __w_pdfjs_require__(1); + +const pdfjsVersion = '2.16.105'; +const pdfjsBuild = '172ccdbe5'; +})(); + +/******/ return __webpack_exports__; +/******/ })() +; }); -//# sourceMappingURL=pdf.worker.js.map \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/debugger.css b/addons/web/static/lib/pdfjs/web/debugger.css new file mode 100644 index 00000000000..4de0814ab49 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/debugger.css @@ -0,0 +1,107 @@ +/* Copyright 2014 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#PDFBug { + background-color: rgba(255, 255, 255, 1); + border: 1px solid rgba(102, 102, 102, 1); + position: fixed; + top: 32px; + right: 0; + bottom: 0; + font-size: 10px; + padding: 0; + width: 300px; +} +#PDFBug .controls { + background: rgba(238, 238, 238, 1); + border-bottom: 1px solid rgba(102, 102, 102, 1); + padding: 3px; +} +#PDFBug .panels { + bottom: 0; + left: 0; + overflow: auto; + position: absolute; + right: 0; + top: 27px; +} +#PDFBug .panels > div { + padding: 5px; +} +#PDFBug button.active { + font-weight: bold; +} +.debuggerShowText, +.debuggerHideText:hover { + background-color: rgba(255, 255, 0, 1); +} +#PDFBug .stats { + font-family: courier; + font-size: 10px; + white-space: pre; +} +#PDFBug .stats .title { + font-weight: bold; +} +#PDFBug table { + font-size: 10px; + white-space: pre; +} +#PDFBug table.showText { + border-collapse: collapse; + text-align: center; +} +#PDFBug table.showText, +#PDFBug table.showText tr, +#PDFBug table.showText td { + border: 1px solid black; + padding: 1px; +} +#PDFBug table.showText td.advance { + color: grey; +} + +#viewer.textLayer-visible .textLayer { + opacity: 1; +} + +#viewer.textLayer-visible .canvasWrapper { + background-color: rgba(128, 255, 128, 1); +} + +#viewer.textLayer-visible .canvasWrapper canvas { + mix-blend-mode: screen; +} + +#viewer.textLayer-visible .textLayer span { + background-color: rgba(255, 255, 0, 0.1); + color: rgba(0, 0, 0, 1); + border: solid 1px rgba(255, 0, 0, 0.5); + box-sizing: border-box; +} + +#viewer.textLayer-visible .textLayer span[aria-owns] { + background-color: rgba(255, 0, 0, 0.3); +} + +#viewer.textLayer-hover .textLayer span:hover { + background-color: rgba(255, 255, 255, 1); + color: rgba(0, 0, 0, 1); +} + +#viewer.textLayer-shadow .textLayer span { + background-color: rgba(255, 255, 255, 0.6); + color: rgba(0, 0, 0, 1); +} diff --git a/addons/web/static/lib/pdfjs/web/debugger.js b/addons/web/static/lib/pdfjs/web/debugger.js index 501daa84c6b..210e388ad07 100644 --- a/addons/web/static/lib/pdfjs/web/debugger.js +++ b/addons/web/static/lib/pdfjs/web/debugger.js @@ -12,41 +12,43 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* eslint-disable no-var */ -'use strict'; +let opMap; -var FontInspector = (function FontInspectorClosure() { - var fonts, createObjectURL; - var active = false; - var fontAttribute = 'data-font-name'; +const FontInspector = (function FontInspectorClosure() { + let fonts; + let active = false; + const fontAttribute = "data-font-name"; function removeSelection() { - let divs = document.querySelectorAll(`span[${fontAttribute}]`); - for (let div of divs) { - div.className = ''; + const divs = document.querySelectorAll(`span[${fontAttribute}]`); + for (const div of divs) { + div.className = ""; } } function resetSelection() { - let divs = document.querySelectorAll(`span[${fontAttribute}]`); - for (let div of divs) { - div.className = 'debuggerHideText'; + const divs = document.querySelectorAll(`span[${fontAttribute}]`); + for (const div of divs) { + div.className = "debuggerHideText"; } } function selectFont(fontName, show) { - let divs = document.querySelectorAll(`span[${fontAttribute}=${fontName}]`); - for (let div of divs) { - div.className = show ? 'debuggerShowText' : 'debuggerHideText'; + const divs = document.querySelectorAll( + `span[${fontAttribute}=${fontName}]` + ); + for (const div of divs) { + div.className = show ? "debuggerShowText" : "debuggerHideText"; } } function textLayerClick(e) { - if (!e.target.dataset.fontName || - e.target.tagName.toUpperCase() !== 'SPAN') { + if ( + !e.target.dataset.fontName || + e.target.tagName.toUpperCase() !== "SPAN" + ) { return; } - var fontName = e.target.dataset.fontName; - var selects = document.getElementsByTagName('input'); - for (var i = 0; i < selects.length; ++i) { - var select = selects[i]; + const fontName = e.target.dataset.fontName; + const selects = document.getElementsByTagName("input"); + for (const select of selects) { if (select.dataset.fontName !== fontName) { continue; } @@ -57,25 +59,22 @@ var FontInspector = (function FontInspectorClosure() { } return { // Properties/functions needed by PDFBug. - id: 'FontInspector', - name: 'Font Inspector', + id: "FontInspector", + name: "Font Inspector", panel: null, manager: null, - init: function init(pdfjsLib) { - var panel = this.panel; - panel.setAttribute('style', 'padding: 5px;'); - var tmp = document.createElement('button'); - tmp.addEventListener('click', resetSelection); - tmp.textContent = 'Refresh'; - panel.appendChild(tmp); + init(pdfjsLib) { + const panel = this.panel; + const tmp = document.createElement("button"); + tmp.addEventListener("click", resetSelection); + tmp.textContent = "Refresh"; + panel.append(tmp); - fonts = document.createElement('div'); - panel.appendChild(fonts); - - createObjectURL = pdfjsLib.createObjectURL; + fonts = document.createElement("div"); + panel.append(fonts); }, - cleanup: function cleanup() { - fonts.textContent = ''; + cleanup() { + fonts.textContent = ""; }, enabled: false, get active() { @@ -84,65 +83,59 @@ var FontInspector = (function FontInspectorClosure() { set active(value) { active = value; if (active) { - document.body.addEventListener('click', textLayerClick, true); + document.body.addEventListener("click", textLayerClick, true); resetSelection(); } else { - document.body.removeEventListener('click', textLayerClick, true); + document.body.removeEventListener("click", textLayerClick, true); removeSelection(); } }, // FontInspector specific functions. - fontAdded: function fontAdded(fontObj, url) { + fontAdded(fontObj, url) { function properties(obj, list) { - var moreInfo = document.createElement('table'); - for (var i = 0; i < list.length; i++) { - var tr = document.createElement('tr'); - var td1 = document.createElement('td'); - td1.textContent = list[i]; - tr.appendChild(td1); - var td2 = document.createElement('td'); - td2.textContent = obj[list[i]].toString(); - tr.appendChild(td2); - moreInfo.appendChild(tr); + const moreInfo = document.createElement("table"); + for (const entry of list) { + const tr = document.createElement("tr"); + const td1 = document.createElement("td"); + td1.textContent = entry; + tr.append(td1); + const td2 = document.createElement("td"); + td2.textContent = obj[entry].toString(); + tr.append(td2); + moreInfo.append(tr); } return moreInfo; } - var moreInfo = properties(fontObj, ['name', 'type']); - var fontName = fontObj.loadedName; - var font = document.createElement('div'); - var name = document.createElement('span'); + const moreInfo = properties(fontObj, ["name", "type"]); + const fontName = fontObj.loadedName; + const font = document.createElement("div"); + const name = document.createElement("span"); name.textContent = fontName; - var download = document.createElement('a'); + const download = document.createElement("a"); if (url) { - url = /url\(['"]?([^\)"']+)/.exec(url); + url = /url\(['"]?([^)"']+)/.exec(url); download.href = url[1]; } else if (fontObj.data) { - download.href = createObjectURL(fontObj.data, fontObj.mimeType); + download.href = URL.createObjectURL( + new Blob([fontObj.data], { type: fontObj.mimetype }) + ); } - download.textContent = 'Download'; - var logIt = document.createElement('a'); - logIt.href = ''; - logIt.textContent = 'Log'; - logIt.addEventListener('click', function(event) { + download.textContent = "Download"; + const logIt = document.createElement("a"); + logIt.href = ""; + logIt.textContent = "Log"; + logIt.addEventListener("click", function (event) { event.preventDefault(); console.log(fontObj); }); - var select = document.createElement('input'); - select.setAttribute('type', 'checkbox'); + const select = document.createElement("input"); + select.setAttribute("type", "checkbox"); select.dataset.fontName = fontName; - select.addEventListener('click', (function(select, fontName) { - return (function() { - selectFont(fontName, select.checked); - }); - })(select, fontName)); - font.appendChild(select); - font.appendChild(name); - font.appendChild(document.createTextNode(' ')); - font.appendChild(download); - font.appendChild(document.createTextNode(' ')); - font.appendChild(logIt); - font.appendChild(moreInfo); - fonts.appendChild(font); + select.addEventListener("click", function () { + selectFont(fontName, select.checked); + }); + font.append(select, name, " ", download, " ", logIt, moreInfo); + fonts.append(font); // Somewhat of a hack, should probably add a hook for when the text layer // is done rendering. setTimeout(() => { @@ -154,100 +147,88 @@ var FontInspector = (function FontInspectorClosure() { }; })(); -var opMap; - // Manages all the page steppers. -var StepperManager = (function StepperManagerClosure() { - var steppers = []; - var stepperDiv = null; - var stepperControls = null; - var stepperChooser = null; - var breakPoints = Object.create(null); +const StepperManager = (function StepperManagerClosure() { + let steppers = []; + let stepperDiv = null; + let stepperControls = null; + let stepperChooser = null; + let breakPoints = Object.create(null); return { // Properties/functions needed by PDFBug. - id: 'Stepper', - name: 'Stepper', + id: "Stepper", + name: "Stepper", panel: null, manager: null, - init: function init(pdfjsLib) { - var self = this; - this.panel.setAttribute('style', 'padding: 5px;'); - stepperControls = document.createElement('div'); - stepperChooser = document.createElement('select'); - stepperChooser.addEventListener('change', function(event) { + init(pdfjsLib) { + const self = this; + stepperControls = document.createElement("div"); + stepperChooser = document.createElement("select"); + stepperChooser.addEventListener("change", function (event) { self.selectStepper(this.value); }); - stepperControls.appendChild(stepperChooser); - stepperDiv = document.createElement('div'); - this.panel.appendChild(stepperControls); - this.panel.appendChild(stepperDiv); - if (sessionStorage.getItem('pdfjsBreakPoints')) { - breakPoints = JSON.parse(sessionStorage.getItem('pdfjsBreakPoints')); + stepperControls.append(stepperChooser); + stepperDiv = document.createElement("div"); + this.panel.append(stepperControls, stepperDiv); + if (sessionStorage.getItem("pdfjsBreakPoints")) { + breakPoints = JSON.parse(sessionStorage.getItem("pdfjsBreakPoints")); } opMap = Object.create(null); - for (var key in pdfjsLib.OPS) { + for (const key in pdfjsLib.OPS) { opMap[pdfjsLib.OPS[key]] = key; } }, - cleanup: function cleanup() { - stepperChooser.textContent = ''; - stepperDiv.textContent = ''; + cleanup() { + stepperChooser.textContent = ""; + stepperDiv.textContent = ""; steppers = []; }, enabled: false, active: false, // Stepper specific functions. - create: function create(pageIndex) { - var debug = document.createElement('div'); - debug.id = 'stepper' + pageIndex; - debug.setAttribute('hidden', true); - debug.className = 'stepper'; - stepperDiv.appendChild(debug); - var b = document.createElement('option'); - b.textContent = 'Page ' + (pageIndex + 1); + create(pageIndex) { + const debug = document.createElement("div"); + debug.id = "stepper" + pageIndex; + debug.hidden = true; + debug.className = "stepper"; + stepperDiv.append(debug); + const b = document.createElement("option"); + b.textContent = "Page " + (pageIndex + 1); b.value = pageIndex; - stepperChooser.appendChild(b); - var initBreakPoints = breakPoints[pageIndex] || []; - var stepper = new Stepper(debug, pageIndex, initBreakPoints); + stepperChooser.append(b); + const initBreakPoints = breakPoints[pageIndex] || []; + const stepper = new Stepper(debug, pageIndex, initBreakPoints); steppers.push(stepper); if (steppers.length === 1) { this.selectStepper(pageIndex, false); } return stepper; }, - selectStepper: function selectStepper(pageIndex, selectPanel) { - var i; - pageIndex = pageIndex | 0; + selectStepper(pageIndex, selectPanel) { + pageIndex |= 0; if (selectPanel) { this.manager.selectPanel(this); } - for (i = 0; i < steppers.length; ++i) { - var stepper = steppers[i]; - if (stepper.pageIndex === pageIndex) { - stepper.panel.removeAttribute('hidden'); - } else { - stepper.panel.setAttribute('hidden', true); - } + for (const stepper of steppers) { + stepper.panel.hidden = stepper.pageIndex !== pageIndex; } - var options = stepperChooser.options; - for (i = 0; i < options.length; ++i) { - var option = options[i]; + for (const option of stepperChooser.options) { option.selected = (option.value | 0) === pageIndex; } }, - saveBreakPoints: function saveBreakPoints(pageIndex, bps) { + saveBreakPoints(pageIndex, bps) { breakPoints[pageIndex] = bps; - sessionStorage.setItem('pdfjsBreakPoints', JSON.stringify(breakPoints)); + sessionStorage.setItem("pdfjsBreakPoints", JSON.stringify(breakPoints)); }, }; })(); -// The stepper for each page's IRQueue. -var Stepper = (function StepperClosure() { +// The stepper for each page's operatorList. +const Stepper = (function StepperClosure() { // Shorter way to create element and optionally set textContent. function c(tag, textContent) { - var d = document.createElement(tag); + const d = document.createElement(tag); if (textContent) { d.textContent = textContent; } @@ -255,63 +236,72 @@ var Stepper = (function StepperClosure() { } function simplifyArgs(args) { - if (typeof args === 'string') { - var MAX_STRING_LENGTH = 75; - return args.length <= MAX_STRING_LENGTH ? args : - args.substring(0, MAX_STRING_LENGTH) + '...'; + if (typeof args === "string") { + const MAX_STRING_LENGTH = 75; + return args.length <= MAX_STRING_LENGTH + ? args + : args.substring(0, MAX_STRING_LENGTH) + "..."; } - if (typeof args !== 'object' || args === null) { + if (typeof args !== "object" || args === null) { return args; } - if ('length' in args) { // array - var simpleArgs = [], i, ii; - var MAX_ITEMS = 10; + if ("length" in args) { + // array + const MAX_ITEMS = 10, + simpleArgs = []; + let i, ii; for (i = 0, ii = Math.min(MAX_ITEMS, args.length); i < ii; i++) { simpleArgs.push(simplifyArgs(args[i])); } if (i < args.length) { - simpleArgs.push('...'); + simpleArgs.push("..."); } return simpleArgs; } - var simpleObj = {}; - for (var key in args) { + const simpleObj = {}; + for (const key in args) { simpleObj[key] = simplifyArgs(args[key]); } return simpleObj; } - function Stepper(panel, pageIndex, initialBreakPoints) { - this.panel = panel; - this.breakPoint = 0; - this.nextBreakPoint = null; - this.pageIndex = pageIndex; - this.breakPoints = initialBreakPoints; - this.currentIdx = -1; - this.operatorListIdx = 0; - } - Stepper.prototype = { - init: function init(operatorList) { - var panel = this.panel; - var content = c('div', 'c=continue, s=step'); - var table = c('table'); - content.appendChild(table); + // eslint-disable-next-line no-shadow + class Stepper { + constructor(panel, pageIndex, initialBreakPoints) { + this.panel = panel; + this.breakPoint = 0; + this.nextBreakPoint = null; + this.pageIndex = pageIndex; + this.breakPoints = initialBreakPoints; + this.currentIdx = -1; + this.operatorListIdx = 0; + this.indentLevel = 0; + } + + init(operatorList) { + const panel = this.panel; + const content = c("div", "c=continue, s=step"); + const table = c("table"); + content.append(table); table.cellSpacing = 0; - var headerRow = c('tr'); - table.appendChild(headerRow); - headerRow.appendChild(c('th', 'Break')); - headerRow.appendChild(c('th', 'Idx')); - headerRow.appendChild(c('th', 'fn')); - headerRow.appendChild(c('th', 'args')); - panel.appendChild(content); + const headerRow = c("tr"); + table.append(headerRow); + headerRow.append( + c("th", "Break"), + c("th", "Idx"), + c("th", "fn"), + c("th", "args") + ); + panel.append(content); this.table = table; this.updateOperatorList(operatorList); - }, - updateOperatorList: function updateOperatorList(operatorList) { - var self = this; + } + + updateOperatorList(operatorList) { + const self = this; function cboxOnClick() { - var x = +this.dataset.idx; + const x = +this.dataset.idx; if (this.checked) { self.breakPoints.push(x); } else { @@ -320,130 +310,142 @@ var Stepper = (function StepperClosure() { StepperManager.saveBreakPoints(self.pageIndex, self.breakPoints); } - var MAX_OPERATORS_COUNT = 15000; + const MAX_OPERATORS_COUNT = 15000; if (this.operatorListIdx > MAX_OPERATORS_COUNT) { return; } - var chunk = document.createDocumentFragment(); - var operatorsToDisplay = Math.min(MAX_OPERATORS_COUNT, - operatorList.fnArray.length); - for (var i = this.operatorListIdx; i < operatorsToDisplay; i++) { - var line = c('tr'); - line.className = 'line'; + const chunk = document.createDocumentFragment(); + const operatorsToDisplay = Math.min( + MAX_OPERATORS_COUNT, + operatorList.fnArray.length + ); + for (let i = this.operatorListIdx; i < operatorsToDisplay; i++) { + const line = c("tr"); + line.className = "line"; line.dataset.idx = i; - chunk.appendChild(line); - var checked = this.breakPoints.includes(i); - var args = operatorList.argsArray[i] || []; + chunk.append(line); + const checked = this.breakPoints.includes(i); + const args = operatorList.argsArray[i] || []; - var breakCell = c('td'); - var cbox = c('input'); - cbox.type = 'checkbox'; - cbox.className = 'points'; + const breakCell = c("td"); + const cbox = c("input"); + cbox.type = "checkbox"; + cbox.className = "points"; cbox.checked = checked; cbox.dataset.idx = i; cbox.onclick = cboxOnClick; - breakCell.appendChild(cbox); - line.appendChild(breakCell); - line.appendChild(c('td', i.toString())); - var fn = opMap[operatorList.fnArray[i]]; - var decArgs = args; - if (fn === 'showText') { - var glyphs = args[0]; - var newArgs = []; - var str = []; - for (var j = 0; j < glyphs.length; j++) { - var glyph = glyphs[j]; - if (typeof glyph === 'object' && glyph !== null) { - str.push(glyph.fontChar); + breakCell.append(cbox); + line.append(breakCell, c("td", i.toString())); + const fn = opMap[operatorList.fnArray[i]]; + let decArgs = args; + if (fn === "showText") { + const glyphs = args[0]; + const charCodeRow = c("tr"); + const fontCharRow = c("tr"); + const unicodeRow = c("tr"); + for (const glyph of glyphs) { + if (typeof glyph === "object" && glyph !== null) { + charCodeRow.append(c("td", glyph.originalCharCode)); + fontCharRow.append(c("td", glyph.fontChar)); + unicodeRow.append(c("td", glyph.unicode)); } else { - if (str.length > 0) { - newArgs.push(str.join('')); - str = []; - } - newArgs.push(glyph); // null or number + // null or number + const advanceEl = c("td", glyph); + advanceEl.classList.add("advance"); + charCodeRow.append(advanceEl); + fontCharRow.append(c("td")); + unicodeRow.append(c("td")); } } - if (str.length > 0) { - newArgs.push(str.join('')); - } - decArgs = [newArgs]; + decArgs = c("td"); + const table = c("table"); + table.classList.add("showText"); + decArgs.append(table); + table.append(charCodeRow, fontCharRow, unicodeRow); + } else if (fn === "restore") { + this.indentLevel--; + } + line.append(c("td", " ".repeat(this.indentLevel * 2) + fn)); + if (fn === "save") { + this.indentLevel++; + } + + if (decArgs instanceof HTMLElement) { + line.append(decArgs); + } else { + line.append(c("td", JSON.stringify(simplifyArgs(decArgs)))); } - line.appendChild(c('td', fn)); - line.appendChild(c('td', JSON.stringify(simplifyArgs(decArgs)))); } if (operatorsToDisplay < operatorList.fnArray.length) { - line = c('tr'); - var lastCell = c('td', '...'); + const lastCell = c("td", "..."); lastCell.colspan = 4; - chunk.appendChild(lastCell); + chunk.append(lastCell); } this.operatorListIdx = operatorList.fnArray.length; - this.table.appendChild(chunk); - }, - getNextBreakPoint: function getNextBreakPoint() { - this.breakPoints.sort(function(a, b) { + this.table.append(chunk); + } + + getNextBreakPoint() { + this.breakPoints.sort(function (a, b) { return a - b; }); - for (var i = 0; i < this.breakPoints.length; i++) { - if (this.breakPoints[i] > this.currentIdx) { - return this.breakPoints[i]; + for (const breakPoint of this.breakPoints) { + if (breakPoint > this.currentIdx) { + return breakPoint; } } return null; - }, - breakIt: function breakIt(idx, callback) { + } + + breakIt(idx, callback) { StepperManager.selectStepper(this.pageIndex, true); - var self = this; - var dom = document; - self.currentIdx = idx; - var listener = function(e) { - switch (e.keyCode) { + this.currentIdx = idx; + + const listener = evt => { + switch (evt.keyCode) { case 83: // step - dom.removeEventListener('keydown', listener); - self.nextBreakPoint = self.currentIdx + 1; - self.goTo(-1); + document.removeEventListener("keydown", listener); + this.nextBreakPoint = this.currentIdx + 1; + this.goTo(-1); callback(); break; case 67: // continue - dom.removeEventListener('keydown', listener); - var breakPoint = self.getNextBreakPoint(); - self.nextBreakPoint = breakPoint; - self.goTo(-1); + document.removeEventListener("keydown", listener); + this.nextBreakPoint = this.getNextBreakPoint(); + this.goTo(-1); callback(); break; } }; - dom.addEventListener('keydown', listener); - self.goTo(idx); - }, - goTo: function goTo(idx) { - var allRows = this.panel.getElementsByClassName('line'); - for (var x = 0, xx = allRows.length; x < xx; ++x) { - var row = allRows[x]; + document.addEventListener("keydown", listener); + this.goTo(idx); + } + + goTo(idx) { + const allRows = this.panel.getElementsByClassName("line"); + for (const row of allRows) { if ((row.dataset.idx | 0) === idx) { - row.style.backgroundColor = 'rgb(251,250,207)'; + row.style.backgroundColor = "rgb(251,250,207)"; row.scrollIntoView(); } else { row.style.backgroundColor = null; } } - }, - }; + } + } return Stepper; })(); -var Stats = (function Stats() { - var stats = []; +const Stats = (function Stats() { + let stats = []; function clear(node) { - while (node.hasChildNodes()) { - node.removeChild(node.lastChild); - } + node.textContent = ""; // Remove any `node` contents from the DOM. } function getStatIndex(pageNumber) { - for (var i = 0, ii = stats.length; i < ii; ++i) { - if (stats[i].pageNumber === pageNumber) { + for (const [i, stat] of stats.entries()) { + if (stat.pageNumber === pageNumber) { return i; } } @@ -451,13 +453,11 @@ var Stats = (function Stats() { } return { // Properties/functions needed by PDFBug. - id: 'Stats', - name: 'Stats', + id: "Stats", + name: "Stats", panel: null, manager: null, - init(pdfjsLib) { - this.panel.setAttribute('style', 'padding: 5px;'); - }, + init(pdfjsLib) {}, enabled: false, active: false, // Stats specific functions. @@ -465,28 +465,26 @@ var Stats = (function Stats() { if (!stat) { return; } - var statsIndex = getStatIndex(pageNumber); + const statsIndex = getStatIndex(pageNumber); if (statsIndex !== false) { - var b = stats[statsIndex]; - this.panel.removeChild(b.div); + stats[statsIndex].div.remove(); stats.splice(statsIndex, 1); } - var wrapper = document.createElement('div'); - wrapper.className = 'stats'; - var title = document.createElement('div'); - title.className = 'title'; - title.textContent = 'Page: ' + pageNumber; - var statsDiv = document.createElement('div'); + const wrapper = document.createElement("div"); + wrapper.className = "stats"; + const title = document.createElement("div"); + title.className = "title"; + title.textContent = "Page: " + pageNumber; + const statsDiv = document.createElement("div"); statsDiv.textContent = stat.toString(); - wrapper.appendChild(title); - wrapper.appendChild(statsDiv); - stats.push({ pageNumber, div: wrapper, }); - stats.sort(function(a, b) { + wrapper.append(title, statsDiv); + stats.push({ pageNumber, div: wrapper }); + stats.sort(function (a, b) { return a.pageNumber - b.pageNumber; }); clear(this.panel); - for (var i = 0, ii = stats.length; i < ii; ++i) { - this.panel.appendChild(stats[i].div); + for (const entry of stats) { + this.panel.append(entry.div); } }, cleanup() { @@ -497,40 +495,35 @@ var Stats = (function Stats() { })(); // Manages all the debugging tools. -window.PDFBug = (function PDFBugClosure() { - var panelWidth = 300; - var buttons = []; - var activePanel = null; +const PDFBug = (function PDFBugClosure() { + const panelWidth = 300; + const buttons = []; + let activePanel = null; return { - tools: [ - FontInspector, - StepperManager, - Stats - ], + tools: [FontInspector, StepperManager, Stats], enable(ids) { - var all = false, tools = this.tools; - if (ids.length === 1 && ids[0] === 'all') { - all = true; - } - for (var i = 0; i < tools.length; ++i) { - var tool = tools[i]; + const all = ids.length === 1 && ids[0] === "all"; + const tools = this.tools; + for (const tool of tools) { if (all || ids.includes(tool.id)) { tool.enabled = true; } } if (!all) { // Sort the tools by the order they are enabled. - tools.sort(function(a, b) { - var indexA = ids.indexOf(a.id); + tools.sort(function (a, b) { + let indexA = ids.indexOf(a.id); indexA = indexA < 0 ? tools.length : indexA; - var indexB = ids.indexOf(b.id); + let indexB = ids.indexOf(b.id); indexB = indexB < 0 ? tools.length : indexB; return indexA - indexB; }); } }, - init(pdfjsLib, container) { + init(pdfjsLib, container, ids) { + this.loadCSS(); + this.enable(ids); /* * Basic Layout: * PDFBug @@ -540,76 +533,80 @@ window.PDFBug = (function PDFBugClosure() { * Panel * ... */ - var ui = document.createElement('div'); - ui.id = 'PDFBug'; + const ui = document.createElement("div"); + ui.id = "PDFBug"; - var controls = document.createElement('div'); - controls.setAttribute('class', 'controls'); - ui.appendChild(controls); + const controls = document.createElement("div"); + controls.setAttribute("class", "controls"); + ui.append(controls); - var panels = document.createElement('div'); - panels.setAttribute('class', 'panels'); - ui.appendChild(panels); + const panels = document.createElement("div"); + panels.setAttribute("class", "panels"); + ui.append(panels); - container.appendChild(ui); - container.style.right = panelWidth + 'px'; + container.append(ui); + container.style.right = panelWidth + "px"; // Initialize all the debugging tools. - var tools = this.tools; - var self = this; - for (var i = 0; i < tools.length; ++i) { - var tool = tools[i]; - var panel = document.createElement('div'); - var panelButton = document.createElement('button'); + for (const tool of this.tools) { + const panel = document.createElement("div"); + const panelButton = document.createElement("button"); panelButton.textContent = tool.name; - panelButton.addEventListener('click', (function(selected) { - return function(event) { - event.preventDefault(); - self.selectPanel(selected); - }; - })(i)); - controls.appendChild(panelButton); - panels.appendChild(panel); + panelButton.addEventListener("click", event => { + event.preventDefault(); + this.selectPanel(tool); + }); + controls.append(panelButton); + panels.append(panel); tool.panel = panel; tool.manager = this; if (tool.enabled) { tool.init(pdfjsLib); } else { - panel.textContent = tool.name + ' is disabled. To enable add ' + - ' "' + tool.id + '" to the pdfBug parameter ' + - 'and refresh (separate multiple by commas).'; + panel.textContent = + `${tool.name} is disabled. To enable add "${tool.id}" to ` + + "the pdfBug parameter and refresh (separate multiple by commas)."; } buttons.push(panelButton); } this.selectPanel(0); }, + loadCSS() { + const { url } = import.meta; + + const link = document.createElement("link"); + link.rel = "stylesheet"; + link.href = url.replace(/.js$/, ".css"); + + document.head.append(link); + }, cleanup() { - for (var i = 0, ii = this.tools.length; i < ii; i++) { - if (this.tools[i].enabled) { - this.tools[i].cleanup(); + for (const tool of this.tools) { + if (tool.enabled) { + tool.cleanup(); } } }, selectPanel(index) { - if (typeof index !== 'number') { + if (typeof index !== "number") { index = this.tools.indexOf(index); } if (index === activePanel) { return; } activePanel = index; - var tools = this.tools; - for (var j = 0; j < tools.length; ++j) { - if (j === index) { - buttons[j].setAttribute('class', 'active'); - tools[j].active = true; - tools[j].panel.removeAttribute('hidden'); - } else { - buttons[j].setAttribute('class', ''); - tools[j].active = false; - tools[j].panel.setAttribute('hidden', 'true'); - } + for (const [j, tool] of this.tools.entries()) { + const isActive = j === index; + buttons[j].classList.toggle("active", isActive); + tool.active = isActive; + tool.panel.hidden = !isActive; } }, }; })(); + +globalThis.FontInspector = FontInspector; +globalThis.StepperManager = StepperManager; +globalThis.Stats = Stats; + +export { PDFBug }; diff --git a/addons/web/static/lib/pdfjs/web/images/findbarButton-next-rtl.png b/addons/web/static/lib/pdfjs/web/images/findbarButton-next-rtl.png deleted file mode 100644 index bef02743fc1..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/findbarButton-next-rtl.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/findbarButton-next-rtl@2x.png b/addons/web/static/lib/pdfjs/web/images/findbarButton-next-rtl@2x.png deleted file mode 100644 index 1da6dc949cd..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/findbarButton-next-rtl@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/findbarButton-next.png b/addons/web/static/lib/pdfjs/web/images/findbarButton-next.png deleted file mode 100644 index de1d0fc901c..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/findbarButton-next.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/findbarButton-next.svg b/addons/web/static/lib/pdfjs/web/images/findbarButton-next.svg new file mode 100644 index 00000000000..a81eb029629 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/findbarButton-next.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/findbarButton-next@2x.png b/addons/web/static/lib/pdfjs/web/images/findbarButton-next@2x.png deleted file mode 100644 index 0250307c0d1..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/findbarButton-next@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/findbarButton-previous-rtl.png b/addons/web/static/lib/pdfjs/web/images/findbarButton-previous-rtl.png deleted file mode 100644 index de1d0fc901c..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/findbarButton-previous-rtl.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/findbarButton-previous-rtl@2x.png b/addons/web/static/lib/pdfjs/web/images/findbarButton-previous-rtl@2x.png deleted file mode 100644 index 0250307c0d1..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/findbarButton-previous-rtl@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/findbarButton-previous.png b/addons/web/static/lib/pdfjs/web/images/findbarButton-previous.png deleted file mode 100644 index bef02743fc1..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/findbarButton-previous.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/findbarButton-previous.svg b/addons/web/static/lib/pdfjs/web/images/findbarButton-previous.svg new file mode 100644 index 00000000000..5fd70322594 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/findbarButton-previous.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/findbarButton-previous@2x.png b/addons/web/static/lib/pdfjs/web/images/findbarButton-previous@2x.png deleted file mode 100644 index 1da6dc949cd..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/findbarButton-previous@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/grab.cur b/addons/web/static/lib/pdfjs/web/images/grab.cur deleted file mode 100644 index db7ad5aed3e..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/grab.cur and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/grabbing.cur b/addons/web/static/lib/pdfjs/web/images/grabbing.cur deleted file mode 100644 index e0dfd04e4d3..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/grabbing.cur and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/loading-dark.svg b/addons/web/static/lib/pdfjs/web/images/loading-dark.svg new file mode 100644 index 00000000000..fa5269b1a39 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/loading-dark.svg @@ -0,0 +1,24 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/loading-small.png b/addons/web/static/lib/pdfjs/web/images/loading-small.png deleted file mode 100644 index 8831a80588d..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/loading-small.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/loading-small@2x.png b/addons/web/static/lib/pdfjs/web/images/loading-small@2x.png deleted file mode 100644 index b25b4452aa1..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/loading-small@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/loading.svg b/addons/web/static/lib/pdfjs/web/images/loading.svg new file mode 100644 index 00000000000..0a15ff6885d --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/loading.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-documentProperties.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-documentProperties.png deleted file mode 100644 index 40925e25ace..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-documentProperties.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-documentProperties.svg b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-documentProperties.svg new file mode 100644 index 00000000000..6bd55cda781 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-documentProperties.svg @@ -0,0 +1,15 @@ + + + + + + + + + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-documentProperties@2x.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-documentProperties@2x.png deleted file mode 100644 index adb240eaad3..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-documentProperties@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-firstPage.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-firstPage.png deleted file mode 100644 index e68846aa5f6..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-firstPage.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-firstPage.svg b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-firstPage.svg new file mode 100644 index 00000000000..2fa0fa6da59 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-firstPage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-firstPage@2x.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-firstPage@2x.png deleted file mode 100644 index 3ad8af51738..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-firstPage@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-handTool.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-handTool.png deleted file mode 100644 index cb85a841b18..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-handTool.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-handTool.svg b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-handTool.svg new file mode 100644 index 00000000000..3d038fabb7b --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-handTool.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-handTool@2x.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-handTool@2x.png deleted file mode 100644 index 5c13f77ff00..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-handTool@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-lastPage.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-lastPage.png deleted file mode 100644 index be763e0c4a0..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-lastPage.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-lastPage.svg b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-lastPage.svg new file mode 100644 index 00000000000..53fa9a6d070 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-lastPage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-lastPage@2x.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-lastPage@2x.png deleted file mode 100644 index 8570984f2d9..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-lastPage@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCcw.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCcw.png deleted file mode 100644 index 675d6da2c09..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCcw.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg new file mode 100644 index 00000000000..c71ea8e8d4c --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCcw@2x.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCcw@2x.png deleted file mode 100644 index b9e74312270..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCcw@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCw.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCw.png deleted file mode 100644 index e1c7598886b..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCw.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCw.svg b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCw.svg new file mode 100644 index 00000000000..e1e19e73d28 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCw.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCw@2x.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCw@2x.png deleted file mode 100644 index cb257b41c53..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-rotateCw@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.png deleted file mode 100644 index cb702fc4d11..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg new file mode 100644 index 00000000000..8693eec397e --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal@2x.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal@2x.png deleted file mode 100644 index 7f05289bb15..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollPage.svg b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollPage.svg new file mode 100644 index 00000000000..bea2f0d67cb --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollPage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollVertical.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollVertical.png deleted file mode 100644 index 0b8427a16c0..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollVertical.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg new file mode 100644 index 00000000000..ee1cf22f98d --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollVertical@2x.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollVertical@2x.png deleted file mode 100644 index 72ab55ebf27..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollVertical@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.png deleted file mode 100644 index 165fc8bc013..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg new file mode 100644 index 00000000000..804e7469bf7 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollWrapped@2x.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollWrapped@2x.png deleted file mode 100644 index 42461411922..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-scrollWrapped@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-selectTool.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-selectTool.png deleted file mode 100644 index 25520a6fe58..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-selectTool.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-selectTool.svg b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-selectTool.svg new file mode 100644 index 00000000000..43e97894444 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-selectTool.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-selectTool@2x.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-selectTool@2x.png deleted file mode 100644 index a58aaef4fbe..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-selectTool@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadEven.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadEven.png deleted file mode 100644 index 3fa07e703ea..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadEven.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadEven.svg b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadEven.svg new file mode 100644 index 00000000000..ddec5e68d56 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadEven.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadEven@2x.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadEven@2x.png deleted file mode 100644 index 32e5033d7db..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadEven@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadNone.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadNone.png deleted file mode 100644 index 161147354c9..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadNone.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadNone.svg b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadNone.svg new file mode 100644 index 00000000000..63318c56baa --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadNone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadNone@2x.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadNone@2x.png deleted file mode 100644 index 8e51cf3b7d6..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadNone@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadOdd.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadOdd.png deleted file mode 100644 index 5126313a1de..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadOdd.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg new file mode 100644 index 00000000000..29909e9faca --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadOdd@2x.png b/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadOdd@2x.png deleted file mode 100644 index 5996b74db1e..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/secondaryToolbarButton-spreadOdd@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/shadow.png b/addons/web/static/lib/pdfjs/web/images/shadow.png index 31d3bdb14f1..a00061ac7e1 100644 Binary files a/addons/web/static/lib/pdfjs/web/images/shadow.png and b/addons/web/static/lib/pdfjs/web/images/shadow.png differ diff --git a/addons/web/static/lib/pdfjs/web/images/texture.png b/addons/web/static/lib/pdfjs/web/images/texture.png deleted file mode 100644 index 12bae83a910..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/texture.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-bookmark.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-bookmark.png deleted file mode 100644 index a187be6c9ba..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-bookmark.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-bookmark.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-bookmark.svg new file mode 100644 index 00000000000..79d39b090e4 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-bookmark@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-bookmark@2x.png deleted file mode 100644 index 4efbaa6758d..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-bookmark@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-currentOutlineItem.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-currentOutlineItem.svg new file mode 100644 index 00000000000..c1c72b2080f --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-currentOutlineItem.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-download.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-download.png deleted file mode 100644 index eaab35f09e1..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-download.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-download.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-download.svg new file mode 100644 index 00000000000..2cdb5db3c71 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-download.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-download@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-download@2x.png deleted file mode 100644 index 896face455a..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-download@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-editorFreeText.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-editorFreeText.svg new file mode 100644 index 00000000000..f0f11b47c60 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-editorFreeText.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-editorInk.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-editorInk.svg new file mode 100644 index 00000000000..2b37e85f303 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-editorInk.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-menuArrow.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-menuArrow.svg new file mode 100644 index 00000000000..46e41e18c52 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-menuArrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-menuArrows.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-menuArrows.png deleted file mode 100644 index e50ca4eee46..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-menuArrows.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-menuArrows@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-menuArrows@2x.png deleted file mode 100644 index f7570bc0d30..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-menuArrows@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-openFile.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-openFile.png deleted file mode 100644 index b5cf1bd0613..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-openFile.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-openFile.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-openFile.svg new file mode 100644 index 00000000000..cb35980f0e9 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-openFile.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-openFile@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-openFile@2x.png deleted file mode 100644 index 91ab76593ea..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-openFile@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageDown-rtl.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageDown-rtl.png deleted file mode 100644 index 1957f79ab95..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageDown-rtl.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageDown-rtl@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageDown-rtl@2x.png deleted file mode 100644 index 16ebcb8ef1e..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageDown-rtl@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageDown.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageDown.png deleted file mode 100644 index 8219ecf83c6..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageDown.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageDown.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageDown.svg new file mode 100644 index 00000000000..c5d8b0f3fcf --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageDown.svg @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageDown@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageDown@2x.png deleted file mode 100644 index 758c01d8364..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageDown@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageUp-rtl.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageUp-rtl.png deleted file mode 100644 index 98e7ce481c1..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageUp-rtl.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageUp-rtl@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageUp-rtl@2x.png deleted file mode 100644 index a01b02380b9..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageUp-rtl@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageUp.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageUp.png deleted file mode 100644 index fb9daa33765..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageUp.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageUp.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageUp.svg new file mode 100644 index 00000000000..aa0160ab998 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageUp.svg @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageUp@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageUp@2x.png deleted file mode 100644 index a5cfd755b0b..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-pageUp@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-presentationMode.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-presentationMode.png deleted file mode 100644 index 3ac21244dff..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-presentationMode.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-presentationMode.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-presentationMode.svg new file mode 100644 index 00000000000..3f1f832e519 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-presentationMode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-presentationMode@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-presentationMode@2x.png deleted file mode 100644 index cada9e7918d..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-presentationMode@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-print.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-print.png deleted file mode 100644 index 51275e54bee..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-print.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-print.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-print.svg new file mode 100644 index 00000000000..d521c9ad28b --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-print.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-print@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-print@2x.png deleted file mode 100644 index 53d18daf782..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-print@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-search.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-search.png deleted file mode 100644 index f9b75579b1e..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-search.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-search.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-search.svg new file mode 100644 index 00000000000..28b7774eb64 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-search.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-search@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-search@2x.png deleted file mode 100644 index 456b133248f..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-search@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-rtl.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-rtl.png deleted file mode 100644 index 8437095273c..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-rtl.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png deleted file mode 100644 index 9d9bfa4f63d..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.png deleted file mode 100644 index 1f90f83da74..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg new file mode 100644 index 00000000000..dbef2380402 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-secondaryToolbarToggle@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-secondaryToolbarToggle@2x.png deleted file mode 100644 index b066fe5cb0e..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-secondaryToolbarToggle@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-sidebarToggle-rtl.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-sidebarToggle-rtl.png deleted file mode 100644 index 6f85ec061ea..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-sidebarToggle-rtl.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-sidebarToggle-rtl@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-sidebarToggle-rtl@2x.png deleted file mode 100644 index 291e006797f..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-sidebarToggle-rtl@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-sidebarToggle.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-sidebarToggle.png deleted file mode 100644 index 025dc9040e5..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-sidebarToggle.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-sidebarToggle.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-sidebarToggle.svg new file mode 100644 index 00000000000..691c41cb105 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-sidebarToggle.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-sidebarToggle@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-sidebarToggle@2x.png deleted file mode 100644 index 7f834df9400..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-sidebarToggle@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewAttachments.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewAttachments.png deleted file mode 100644 index fcd0b268a47..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewAttachments.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewAttachments.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewAttachments.svg new file mode 100644 index 00000000000..e914ec08337 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewAttachments.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewAttachments@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewAttachments@2x.png deleted file mode 100644 index 4a5e2b8a377..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewAttachments@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewLayers.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewLayers.svg new file mode 100644 index 00000000000..e8687b77048 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewLayers.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewOutline-rtl.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewOutline-rtl.png deleted file mode 100644 index aaa9430211e..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewOutline-rtl.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewOutline-rtl@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewOutline-rtl@2x.png deleted file mode 100644 index 3410f70dfa6..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewOutline-rtl@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewOutline.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewOutline.png deleted file mode 100644 index 976365a5061..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewOutline.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewOutline.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewOutline.svg new file mode 100644 index 00000000000..030c28dfe17 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewOutline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewOutline@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewOutline@2x.png deleted file mode 100644 index b6a197fdf33..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewOutline@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewThumbnail.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewThumbnail.png deleted file mode 100644 index 584ba55881f..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewThumbnail.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewThumbnail.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewThumbnail.svg new file mode 100644 index 00000000000..b997ec49a33 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewThumbnail.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewThumbnail@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewThumbnail@2x.png deleted file mode 100644 index a0208b41377..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-viewThumbnail@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomIn.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomIn.png deleted file mode 100644 index 513d081bc2d..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomIn.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomIn.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomIn.svg new file mode 100644 index 00000000000..480d2cef00e --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomIn.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomIn@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomIn@2x.png deleted file mode 100644 index d5d49d5ff10..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomIn@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomOut.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomOut.png deleted file mode 100644 index 156c26b941c..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomOut.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomOut.svg b/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomOut.svg new file mode 100644 index 00000000000..527f5210681 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomOut.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomOut@2x.png b/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomOut@2x.png deleted file mode 100644 index 959e1919d5a..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/toolbarButton-zoomOut@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/treeitem-collapsed-rtl.png b/addons/web/static/lib/pdfjs/web/images/treeitem-collapsed-rtl.png deleted file mode 100644 index 0496b357755..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/treeitem-collapsed-rtl.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/treeitem-collapsed-rtl@2x.png b/addons/web/static/lib/pdfjs/web/images/treeitem-collapsed-rtl@2x.png deleted file mode 100644 index 6ad9ebcdf5d..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/treeitem-collapsed-rtl@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/treeitem-collapsed.png b/addons/web/static/lib/pdfjs/web/images/treeitem-collapsed.png deleted file mode 100644 index 06d4d376967..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/treeitem-collapsed.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/treeitem-collapsed.svg b/addons/web/static/lib/pdfjs/web/images/treeitem-collapsed.svg new file mode 100644 index 00000000000..831cddfc869 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/treeitem-collapsed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/treeitem-collapsed@2x.png b/addons/web/static/lib/pdfjs/web/images/treeitem-collapsed@2x.png deleted file mode 100644 index eec1e58c125..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/treeitem-collapsed@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/treeitem-expanded.png b/addons/web/static/lib/pdfjs/web/images/treeitem-expanded.png deleted file mode 100644 index c8d557351cd..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/treeitem-expanded.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/images/treeitem-expanded.svg b/addons/web/static/lib/pdfjs/web/images/treeitem-expanded.svg new file mode 100644 index 00000000000..2d45f0c8d18 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/images/treeitem-expanded.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/web/static/lib/pdfjs/web/images/treeitem-expanded@2x.png b/addons/web/static/lib/pdfjs/web/images/treeitem-expanded@2x.png deleted file mode 100644 index 3b3b6103b35..00000000000 Binary files a/addons/web/static/lib/pdfjs/web/images/treeitem-expanded@2x.png and /dev/null differ diff --git a/addons/web/static/lib/pdfjs/web/locale/ach/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ach/viewer.properties index 57c6a9121ce..3a74d767be5 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ach/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ach/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Neno ma kombedi tools.title=Gintic tools_label=Gintic first_page.title=Cit i pot buk mukwongo -first_page.label=Cit i pot buk mukwongo first_page_label=Cit i pot buk mukwongo last_page.title=Cit i pot buk magiko -last_page.label=Cit i pot buk magiko last_page_label=Cit i pot buk magiko page_rotate_cw.title=Wire i tung lacuc -page_rotate_cw.label=Wire i tung lacuc page_rotate_cw_label=Wire i tung lacuc page_rotate_ccw.title=Wire i tung lacam -page_rotate_ccw.label=Wire i tung lacam page_rotate_ccw_label=Wire i tung lacam cursor_text_select_tool.title=Cak gitic me yero coc @@ -124,7 +120,6 @@ print_progress_close=Juki # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Lok gintic ma inget -toggle_sidebar_notification.title=Lok lanyut me nget (wiyewiye tye i gin acoya/attachments) toggle_sidebar_label=Lok gintic ma inget document_outline.title=Nyut Wiyewiye me Gin acoya (dii-kiryo me yaro/kano jami weng) document_outline_label=Pek pa gin acoya @@ -184,8 +179,6 @@ page_scale_actual=Dite kikome # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Bal loading_error=Bal otime kun cano PDF. invalid_file_error=Pwail me PDF ma pe atir onyo obale woko. missing_file_error=Pwail me PDF tye ka rem. @@ -204,4 +197,3 @@ password_cancel=Juki printing_not_supported=Ciko: Layeny ma pe teno goyo liweng. printing_not_ready=Ciko: PDF pe ocane weng me agoya. web_fonts_disabled=Kijuko dit pa coc me kakube woko: pe romo tic ki dit pa coc me PDF ma kiketo i kine. -document_colors_not_allowed=Pe ki yee ki gin acoya me PDF me tic ki rangi gi kengi: Kijuko woko “Yee pot buk me yero rangi mamegi kengi” ki i layeny. diff --git a/addons/web/static/lib/pdfjs/web/locale/af/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/af/viewer.properties index 8cf088087ab..9bd5476da41 100644 --- a/addons/web/static/lib/pdfjs/web/locale/af/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/af/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Huidige aansig tools.title=Nutsgoed tools_label=Nutsgoed first_page.title=Gaan na eerste bladsy -first_page.label=Gaan na eerste bladsy first_page_label=Gaan na eerste bladsy last_page.title=Gaan na laaste bladsy -last_page.label=Gaan na laaste bladsy last_page_label=Gaan na laaste bladsy page_rotate_cw.title=Roteer kloksgewys -page_rotate_cw.label=Roteer kloksgewys page_rotate_cw_label=Roteer kloksgewys page_rotate_ccw.title=Roteer anti-kloksgewys -page_rotate_ccw.label=Roteer anti-kloksgewys page_rotate_ccw_label=Roteer anti-kloksgewys cursor_text_select_tool.title=Aktiveer gereedskap om teks te merk @@ -101,7 +97,6 @@ print_progress_close=Kanselleer # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Sypaneel aan/af -toggle_sidebar_notification.title=Sypaneel aan/af (dokument bevat skema/aanhegsels) toggle_sidebar_label=Sypaneel aan/af document_outline.title=Wys dokumentskema (dubbelklik om alle items oop/toe te vou) document_outline_label=Dokumentoorsig @@ -161,8 +156,6 @@ page_scale_actual=Werklike grootte # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Fout loading_error='n Fout het voorgekom met die laai van die PDF. invalid_file_error=Ongeldige of korrupte PDF-lêer. missing_file_error=PDF-lêer is weg. @@ -181,4 +174,3 @@ password_cancel=Kanselleer printing_not_supported=Waarskuwing: Dié blaaier ondersteun nie drukwerk ten volle nie. printing_not_ready=Waarskuwing: Die PDF is nog nie volledig gelaai vir drukwerk nie. web_fonts_disabled=Webfonte is gedeaktiveer: kan nie PDF-fonte wat ingebed is, gebruik nie. -document_colors_not_allowed=PDF-dokumente word nie toegelaat om hul eie kleure te gebruik nie: “Laat bladsye toe om hul eie kleure te kies” is gedeaktiveer in die blaaier. diff --git a/addons/web/static/lib/pdfjs/web/locale/ak/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ak/viewer.properties deleted file mode 100644 index 25dc62e3779..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/ak/viewer.properties +++ /dev/null @@ -1,130 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Krataafa baako a etwa mu -previous_label=Ekyiri-baako -next.title=Krataafa a edi so baako -next_label=Dea-ɛ-di-so-baako - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom_out.title=Zuum pue -zoom_out_label=Zuum ba abɔnten -zoom_in.title=Zuum kɔ mu -zoom_in_label=Zuum kɔ mu -zoom.title=Zuum -presentation_mode.title=Sesa kɔ Yɛkyerɛ Tebea mu -presentation_mode_label=Yɛkyerɛ Tebea -open_file.title=Bue Fael -open_file_label=Bue -print.title=Prente -print_label=Prente -download.title=Twe -download_label=Twe -bookmark.title=Seisei nhwɛ (fa anaaso bue wɔ tokuro foforo mu) -bookmark_label=Seisei nhwɛ - -# Secondary toolbar and context menu - - -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Ti asɛm: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Sɔ anaaso dum saedbaa -toggle_sidebar_label=Sɔ anaaso dum saedbaa -document_outline_label=Dɔkomɛnt bɔbea -thumbs.title=Kyerɛ mfoniwaa -thumbs_label=Mfoniwaa -findbar.title=Hu wɔ dɔkomɛnt no mu - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Krataafa {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Krataafa ne mfoniwaa {{page}} - -# Find panel button title and messages -find_previous.title=San hu fres wɔ ekyiri baako -find_previous_label=Ekyiri baako -find_next.title=San hu fres no wɔ enim baako -find_next_label=Ndiso -find_highlight=Hyɛ bibiara nso -find_match_case_label=Fa susu kaase -find_reached_top=Edu krataafa ne soro, atoa so efiri ase -find_reached_bottom=Edu krataafa n'ewiei, atoa so efiri soro -find_not_found=Ennhu fres - -# Error panel labels -error_more_info=Infɔmehyɛn bio a wɔka ho -error_less_info=Te infɔmehyɛn bio a wɔka ho so -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{vɛɛhyen}} (nsi: {{si}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Nkrato: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Staake: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fael: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Laen: {{line}} -rendering_error=Mfomso bae wɔ bere a wɔ rekyerɛ krataafa no. - -# Predefined zoom values -page_scale_width=Krataafa tɛtrɛtɛ -page_scale_fit=Krataafa ehimtwa -page_scale_auto=Zuum otomatik -page_scale_actual=Kɛseyɛ ankasa -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Mfomso -loading_error=Mfomso bae wɔ bere a wɔreloode PDF no. -invalid_file_error=PDF fael no nndi mu anaaso ho atɔ kyima. -missing_file_error=PDF fael no ayera. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Tɛkst-nyiano] -password_ok=OK - -printing_not_supported=Kɔkɔbɔ: Brawsa yi nnhyɛ daa mma prent ho kwan. -printing_not_ready=Kɔkɔbɔ: Wɔnntwee PDF fael no nyinara mmbaee ama wo ɛ tumi aprente. -web_fonts_disabled=Ɔedum wɛb-mfɔnt: nntumi mmfa PDF mfɔnt a wɔhyɛ mu nndi dwuma. -document_colors_not_allowed=Wɔmma ho kwan sɛ PDF adɔkomɛnt de wɔn ara wɔn ahosu bɛdi dwuma: wɔ adum 'Ma ho kwan ma nkrataafa mpaw wɔn ara wɔn ahosu' wɔ brawsa yi mu. diff --git a/addons/web/static/lib/pdfjs/web/locale/an/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/an/viewer.properties index 35761347a27..16028f372b3 100644 --- a/addons/web/static/lib/pdfjs/web/locale/an/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/an/viewer.properties @@ -42,22 +42,18 @@ print_label=Imprentar download.title=Descargar download_label=Descargar bookmark.title=Vista actual (copiar u ubrir en una nueva finestra) -bookmark_label=Anvista actual +bookmark_label=Vista actual # Secondary toolbar and context menu tools.title=Ferramientas tools_label=Ferramientas first_page.title=Ir ta la primer pachina -first_page.label=Ir ta la primer pachina first_page_label=Ir ta la primer pachina last_page.title=Ir ta la zaguer pachina -last_page.label=Ir ta la zaguera pachina last_page_label=Ir ta la zaguer pachina page_rotate_cw.title=Chirar enta la dreita -page_rotate_cw.label=Chirar enta la dreita page_rotate_cw_label=Chira enta la dreita page_rotate_ccw.title=Chirar enta la zurda -page_rotate_ccw.label=Chirar en sentiu antihorario page_rotate_ccw_label=Chirar enta la zurda cursor_text_select_tool.title=Activar la ferramienta de selección de texto @@ -65,6 +61,20 @@ cursor_text_select_tool_label=Ferramienta de selección de texto cursor_hand_tool.title=Activar la ferramienta man cursor_hand_tool_label=Ferramienta man +scroll_vertical.title=Usar lo desplazamiento vertical +scroll_vertical_label=Desplazamiento vertical +scroll_horizontal.title=Usar lo desplazamiento horizontal +scroll_horizontal_label=Desplazamiento horizontal +scroll_wrapped.title=Activaar lo desplazamiento contino +scroll_wrapped_label=Desplazamiento contino + +spread_none.title=No unir vistas de pachinas +spread_none_label=Una pachina nomás +spread_odd.title=Mostrar vista de pachinas, con as impars a la zurda +spread_odd_label=Doble pachina, impar a la zurda +spread_even.title=Amostrar vista de pachinas, con as pars a la zurda +spread_even_label=Doble pachina, para a la zurda + # Document properties dialog box document_properties.title=Propiedatz d'o documento... document_properties_label=Propiedatz d'o documento... @@ -89,6 +99,28 @@ document_properties_creator=Creyador: document_properties_producer=Creyador de PDF: document_properties_version=Versión de PDF: document_properties_page_count=Numero de pachinas: +document_properties_page_size=Mida de pachina: +document_properties_page_size_unit_inches=pulgadas +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=horizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} x {{height}} {{unit}} {{orientation}} +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} x {{height}} {{unit}} {{name}}, {{orientation}} +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web rapida: +document_properties_linearized_yes=Sí +document_properties_linearized_no=No document_properties_close=Zarrar print_progress_message=Se ye preparando la documentación pa imprentar… @@ -101,17 +133,20 @@ print_progress_close=Cancelar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Amostrar u amagar a barra lateral -toggle_sidebar_notification.title=Cambiar barra lateral (lo documento contiene esquema/adchuntos) +toggle_sidebar_notification2.title=Cambiar barra lateral (lo documento contiene esquema/adchuntos/capas) toggle_sidebar_label=Amostrar a barra lateral document_outline.title=Amostrar esquema d'o documento (fer doble clic pa expandir/compactar totz los items) document_outline_label=Esquema d'o documento attachments.title=Amostrar os adchuntos attachments_label=Adchuntos +layers.title=Amostrar capas (doble clic para reiniciar totas las capas a lo estau per defecto) +layers_label=Capas thumbs.title=Amostrar as miniaturas thumbs_label=Miniaturas findbar.title=Trobar en o documento findbar_label=Trobar +additional_layers=Capas adicionals # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -129,8 +164,30 @@ find_next.title=Trobar a siguient coincidencia d'a frase find_next_label=Siguient find_highlight=Resaltar-lo tot find_match_case_label=Coincidencia de mayusclas/minusclas +find_entire_word_label=Parolas completas find_reached_top=S'ha plegau a l'inicio d'o documento, se contina dende baixo find_reached_bottom=S'ha plegau a la fin d'o documento, se contina dende alto +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} coincidencia +find_match_count[two]={{current}} de {{total}} coincidencias +find_match_count[few]={{current}} de {{total}} coincidencias +find_match_count[many]={{current}} de {{total}} coincidencias +find_match_count[other]={{current}} de {{total}} coincidencias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mas de {{limit}} coincidencias +find_match_count_limit[one]=Mas de {{limit}} coincidencias +find_match_count_limit[two]=Mas que {{limit}} coincidencias +find_match_count_limit[few]=Mas que {{limit}} coincidencias +find_match_count_limit[many]=Mas que {{limit}} coincidencias +find_match_count_limit[other]=Mas que {{limit}} coincidencias find_not_found=No s'ha trobau a frase # Error panel labels @@ -161,13 +218,15 @@ page_scale_actual=Grandaria actual # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Error loading_error=S'ha produciu una error en cargar o PDF. invalid_file_error=O PDF no ye valido u ye estorbau. missing_file_error=No i ha fichero PDF. unexpected_response_error=Respuesta a lo servicio inasperada. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -181,4 +240,3 @@ password_cancel=Cancelar printing_not_supported=Pare cuenta: Iste navegador no maneya totalment as impresions. printing_not_ready=Aviso: Encara no se ha cargau completament o PDF ta imprentar-lo. web_fonts_disabled=As fuents web son desactivadas: no se puet incrustar fichers PDF. -document_colors_not_allowed=Los documentos PDF no pueden fer servir las suyas propias colors: 'Permitir que as pachinas triguen as suyas propias colors' ye desactivau en o navegador. diff --git a/addons/web/static/lib/pdfjs/web/locale/ar/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ar/viewer.properties index b42ba74c24b..082816fb67a 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ar/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ar/viewer.properties @@ -47,17 +47,13 @@ bookmark_label=المنظور الحالي # Secondary toolbar and context menu tools.title=الأدوات tools_label=الأدوات -first_page.title=اذهب إلى الصفحة الأولى -first_page.label=اذهب إلى الصفحة الأولى -first_page_label=اذهب إلى الصفحة الأولى -last_page.title=اذهب إلى الصفحة الأخيرة -last_page.label=اذهب إلى الصفحة الأخيرة -last_page_label=اذهب إلى الصفحة الأخيرة +first_page.title=انتقل إلى الصفحة الأولى +first_page_label=انتقل إلى الصفحة الأولى +last_page.title=انتقل إلى الصفحة الأخيرة +last_page_label=انتقل إلى الصفحة الأخيرة page_rotate_cw.title=أدر باتجاه عقارب الساعة -page_rotate_cw.label=أدر باتجاه عقارب الساعة page_rotate_cw_label=أدر باتجاه عقارب الساعة page_rotate_ccw.title=أدر بعكس اتجاه عقارب الساعة -page_rotate_ccw.label=أدر بعكس اتجاه عقارب الساعة page_rotate_ccw_label=أدر بعكس اتجاه عقارب الساعة cursor_text_select_tool.title=فعّل أداة اختيار النص @@ -137,17 +133,22 @@ print_progress_close=ألغِ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=بدّل ظهور الشريط الجانبي -toggle_sidebar_notification.title=بدّل ظهور الشريط الجانبي (يحتوي المستند على مخطط أو مرفقات) +toggle_sidebar_notification2.title=بدّل ظهور الشريط الجانبي (يحتوي المستند على مخطط أو مرفقات أو طبقات) toggle_sidebar_label=بدّل ظهور الشريط الجانبي document_outline.title=اعرض فهرس المستند (نقر مزدوج لتمديد أو تقليص كل العناصر) document_outline_label=مخطط المستند attachments.title=اعرض المرفقات attachments_label=المُرفقات +layers.title=اعرض الطبقات (انقر مرتين لتصفير كل الطبقات إلى الحالة المبدئية) +layers_label=‏‏الطبقات thumbs.title=اعرض مُصغرات thumbs_label=مُصغّرات findbar.title=ابحث في المستند findbar_label=ابحث +additional_layers=الطبقات الإضافية +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=صفحة {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -220,7 +221,7 @@ page_scale_actual=الحجم الفعلي page_scale_percent={{scale}}٪ # Loading indicator messages -loading_error_indicator=عطل +loading=يحمّل… loading_error=حدث عطل أثناء تحميل ملف PDF. invalid_file_error=ملف PDF تالف أو غير صحيح. missing_file_error=ملف PDF غير موجود. @@ -243,4 +244,3 @@ password_cancel=ألغِ printing_not_supported=تحذير: لا يدعم هذا المتصفح الطباعة بشكل كامل. printing_not_ready=تحذير: ملف PDF لم يُحمّل كاملًا للطباعة. web_fonts_disabled=خطوط الوب مُعطّلة: تعذّر استخدام خطوط PDF المُضمّنة. -document_colors_not_allowed=ليس مسموحًا لملفات PDF باستخدام ألوانها الخاصة: خيار ”اسمح للصفحات باختيار ألوانها الخاصة“ ليس مُفعّلًا في المتصفح. diff --git a/addons/web/static/lib/pdfjs/web/locale/as/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/as/viewer.properties deleted file mode 100644 index ea3ecc790f5..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/as/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=পূৰ্বৱৰ্তী পৃষ্ঠা -previous_label=পূৰ্বৱৰ্তী -next.title=পৰৱৰ্তী পৃষ্ঠা -next_label=পৰৱৰ্তী - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom_out.title=জুম আউট -zoom_out_label=জুম আউট -zoom_in.title=জুম ইন -zoom_in_label=জুম ইন -zoom.title=জুম কৰক -presentation_mode.title=উপস্থাপন অৱস্থালে যাওক -presentation_mode_label=উপস্থাপন অৱস্থা -open_file.title=ফাইল খোলক -open_file_label=খোলক -print.title=প্ৰিন্ট কৰক -print_label=প্ৰিন্ট কৰক -download.title=ডাউনল'ড কৰক -download_label=ডাউনল'ড কৰক -bookmark.title=বৰ্তমান দৃশ্য (কপি কৰক অথবা নতুন উইন্ডোত খোলক) -bookmark_label=বৰ্তমান দৃশ্য - -# Secondary toolbar and context menu -tools.title=সঁজুলিসমূহ -tools_label=সঁজুলিসমূহ -first_page.title=প্ৰথম পৃষ্ঠাত যাওক -first_page.label=প্ৰথম পৃষ্ঠাত যাওক -first_page_label=প্ৰথম পৃষ্ঠাত যাওক -last_page.title=সৰ্বশেষ পৃষ্ঠাত যাওক -last_page.label=সৰ্বশেষ পৃষ্ঠাত যাওক -last_page_label=সৰ্বশেষ পৃষ্ঠাত যাওক -page_rotate_cw.title=ঘড়ীৰ দিশত ঘুৰাওক -page_rotate_cw.label=ঘড়ীৰ দিশত ঘুৰাওক -page_rotate_cw_label=ঘড়ীৰ দিশত ঘুৰাওক -page_rotate_ccw.title=ঘড়ীৰ ওলোটা দিশত ঘুৰাওক -page_rotate_ccw.label=ঘড়ীৰ ওলোটা দিশত ঘুৰাওক -page_rotate_ccw_label=ঘড়ীৰ ওলোটা দিশত ঘুৰাওক - - -# Document properties dialog box -document_properties.title=দস্তাবেজৰ বৈশিষ্ট্যসমূহ… -document_properties_label=দস্তাবেজৰ বৈশিষ্ট্যসমূহ… -document_properties_file_name=ফাইল নাম: -document_properties_file_size=ফাইলৰ আকাৰ: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=শীৰ্ষক: -document_properties_author=লেখক: -document_properties_subject=বিষয়: -document_properties_keywords=কিৱাৰ্ডসমূহ: -document_properties_creation_date=সৃষ্টিৰ তাৰিখ: -document_properties_modification_date=পৰিবৰ্তনৰ তাৰিখ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=সৃষ্টিকৰ্তা: -document_properties_producer=PDF উৎপাদক: -document_properties_version=PDF সংস্কৰণ: -document_properties_page_count=পৃষ্ঠাৰ গণনা: -document_properties_close=বন্ধ কৰক - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=কাষবাৰ টগল কৰক -toggle_sidebar_label=কাষবাৰ টগল কৰক -document_outline_label=দস্তাবেজ আউটলাইন -attachments.title=এটাচমেন্টসমূহ দেখুৱাওক -attachments_label=এটাচমেন্টসমূহ -thumbs.title=থাম্বনেইলসমূহ দেখুৱাওক -thumbs_label=থাম্বনেইলসমূহ -findbar.title=দস্তাবেজত সন্ধান কৰক - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=পৃষ্ঠা {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=পৃষ্ঠাৰ থাম্বনেইল {{page}} - -# Find panel button title and messages -find_previous.title=বাক্যাংশৰ পূৰ্বৱৰ্তী উপস্থিতি সন্ধান কৰক -find_previous_label=পূৰ্বৱৰ্তী -find_next.title=বাক্যাংশৰ পৰৱৰ্তী উপস্থিতি সন্ধান কৰক -find_next_label=পৰৱৰ্তী -find_highlight=সকলো উজ্জ্বল কৰক -find_match_case_label=ফলা মিলাওক -find_reached_top=তলৰ পৰা আৰম্ভ কৰি, দস্তাবেজৰ ওপৰলৈ অহা হৈছে -find_reached_bottom=ওপৰৰ পৰা আৰম্ভ কৰি, দস্তাবেজৰ তললৈ অহা হৈছে -find_not_found=বাক্যাংশ পোৱা নগল - -# Error panel labels -error_more_info=অধিক তথ্য -error_less_info=কম তথ্য -error_close=বন্ধ কৰক -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=বাৰ্তা: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=স্টেক: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ফাইল: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=শাৰী: {{line}} -rendering_error=এই পৃষ্ঠা ৰেণ্ডাৰ কৰোতে এটা ত্ৰুটি দেখা দিলে। - -# Predefined zoom values -page_scale_width=পৃষ্ঠাৰ প্ৰস্থ -page_scale_fit=পৃষ্ঠা খাপ -page_scale_auto=স্বচালিত জুম -page_scale_actual=প্ৰকৃত আকাৰ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=ত্ৰুটি -loading_error=PDF ল'ড কৰোতে এটা ত্ৰুটি দেখা দিলে। -invalid_file_error=অবৈধ অথবা ক্ষতিগ্ৰস্থ PDF file। -missing_file_error=সন্ধানহিন PDF ফাইল। -unexpected_response_error=অপ্ৰত্যাশিত চাৰ্ভাৰ প্ৰতিক্ৰিয়া। - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} টোকা] -password_label=এই PDF ফাইল খোলিবলৈ পাছৱৰ্ড সুমুৱাওক। -password_invalid=অবৈধ পাছৱৰ্ড। অনুগ্ৰহ কৰি পুনৰ চেষ্টা কৰক। -password_ok=ঠিক আছে - -printing_not_supported=সতৰ্কবাৰ্তা: প্ৰিন্টিং এই ব্ৰাউছাৰ দ্বাৰা সম্পূৰ্ণভাৱে সমৰ্থিত নহয়। -printing_not_ready=সতৰ্কবাৰ্তা: PDF প্ৰিন্টিংৰ বাবে সম্পূৰ্ণভাৱে ল'ডেড নহয়। -web_fonts_disabled=ৱেব ফন্টসমূহ অসামৰ্থবান কৰা আছে: অন্তৰ্ভুক্ত PDF ফন্টসমূহ ব্যৱহাৰ কৰিবলে অক্ষম। -document_colors_not_allowed=PDF দস্তাবেজসমূহৰ সিহতৰ নিজস্ব ৰঙ ব্যৱহাৰ কৰাৰ অনুমতি নাই: ব্ৰাউছাৰত 'পৃষ্ঠাসমূহক সিহতৰ নিজস্ব ৰঙ নিৰ্বাচন কৰাৰ অনুমতি দিয়ক' অসামৰ্থবান কৰা আছে। diff --git a/addons/web/static/lib/pdfjs/web/locale/ast/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ast/viewer.properties index f973a9b2216..1f8bb2e57a8 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ast/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ast/viewer.properties @@ -28,42 +28,51 @@ of_pages=de {{pagesCount}} # respectively a number representing the total number of pages in the document. page_of_pages=({{pageNumber}} de {{pagesCount}}) -zoom_out.title=Reducir -zoom_out_label=Reducir -zoom_in.title=Aumentar -zoom_in_label=Aumentar -zoom.title=Tamañu -open_file.title=Abrir ficheru +zoom_out.title=Alloñar +zoom_out_label=Alloña +zoom_in.title=Averar +zoom_in_label=Avera +zoom.title=Zoom +presentation_mode.title=Cambiar al mou de presentación +presentation_mode_label=Mou de presentación open_file_label=Abrir print.title=Imprentar print_label=Imprentar -download.title=Descargar -download_label=Descargar -bookmark.title=Vista actual (copiar o abrir nuna nueva ventana) +download.title=Baxar +download_label=Baxar bookmark_label=Vista actual # Secondary toolbar and context menu tools.title=Ferramientes tools_label=Ferramientes -first_page.title=Dir a la primer páxina -first_page.label=Dir a la primer páxina first_page_label=Dir a la primer páxina -last_page.title=Dir a la postrer páxina -last_page.label=Dir a la cabera páxina -last_page_label=Dir a la postrer páxina -page_rotate_cw.title=Xirar en sen horariu -page_rotate_cw_label=Xirar en sen horariu -page_rotate_ccw.title=Xirar en sen antihorariu -page_rotate_ccw_label=Xirar en sen antihorariu +last_page_label=Dir a la última páxina +page_rotate_cw.title=Voltia a la derecha +page_rotate_cw_label=Voltiar a la derecha +page_rotate_ccw.title=Voltia a la esquierda +page_rotate_ccw_label=Voltiar a la esquierda +cursor_text_select_tool.title=Activa la ferramienta d'esbilla de testu +cursor_text_select_tool_label=Ferramienta d'esbilla de testu +cursor_hand_tool.title=Activa la ferramienta de mano +cursor_hand_tool_label=Ferramienta de mano +scroll_vertical.title=Usa'l desplazamientu vertical +scroll_vertical_label=Desplazamientu vertical +scroll_horizontal.title=Usa'l desplazamientu horizontal +scroll_horizontal_label=Desplazamientu horizontal +scroll_wrapped.title=Usa'l desplazamientu continuu +scroll_wrapped_label=Desplazamientu continuu +spread_none_label=Fueyes individuales +spread_odd_label=Fueyes pares +spread_even_label=Fueyes impares # Document properties dialog box document_properties.title=Propiedaes del documentu… document_properties_label=Propiedaes del documentu… -document_properties_file_name=Nome de ficheru: -document_properties_file_size=Tamañu de ficheru: +document_properties_file_name=Nome del ficheru: +document_properties_file_size=Tamañu del ficheru: # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # will be replaced by the PDF file size in kilobytes, respectively in bytes. document_properties_kb={{size_kb}} KB ({{size_b}} bytes) @@ -71,20 +80,20 @@ document_properties_kb={{size_kb}} KB ({{size_b}} bytes) # will be replaced by the PDF file size in megabytes, respectively in bytes. document_properties_mb={{size_mb}} MB ({{size_b}} bytes) document_properties_title=Títulu: -document_properties_author=Autor: -document_properties_subject=Asuntu: document_properties_keywords=Pallabres clave: document_properties_creation_date=Data de creación: document_properties_modification_date=Data de modificación: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creador: -document_properties_producer=Productor PDF: -document_properties_version=Versión PDF: +document_properties_producer=Productor del PDF: +document_properties_version=Versión del PDF: document_properties_page_count=Númberu de páxines: +document_properties_page_size=Tamañu de páxina: document_properties_page_size_unit_inches=in document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=horizontal document_properties_page_size_name_a3=A3 document_properties_page_size_name_a4=A4 # LOCALIZATION NOTE (document_properties_page_size_dimension_string): @@ -97,11 +106,11 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) # LOCALIZATION NOTE (document_properties_linearized): The linearization status of # the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web rápida: document_properties_linearized_yes=Sí document_properties_linearized_no=Non document_properties_close=Zarrar -print_progress_message=Tresnando documentu pa imprentar… # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. print_progress_percent={{progress}}% @@ -110,53 +119,56 @@ print_progress_close=Encaboxar # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) -toggle_sidebar.title=Camudar barra llateral -toggle_sidebar_label=Camudar barra llateral -document_outline.title=Amosar esquema del documentu (duble clic pa espander/contrayer tolos elementos) -document_outline_label=Esquema del documentu -attachments.title=Amosar axuntos +toggle_sidebar.title=Alternar la barra llateral +attachments.title=Amosar los axuntos attachments_label=Axuntos -thumbs.title=Amosar miniatures +layers_label=Capes +thumbs.title=Amosar les miniatures thumbs_label=Miniatures -findbar.title=Guetar nel documentu -findbar_label=Guetar +findbar_label=Atopar +additional_layers=Capes adicionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Páxina {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. thumb_page_title=Páxina {{page}} # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. -thumb_page_canvas=Miniatura de la páxina {{page}} # Find panel button title and messages -find_input.title=Guetar -find_input.placeholder=Guetar nel documentu… -find_previous.title=Alcontrar l'anterior apaición de la fras find_previous_label=Anterior -find_next.title=Alcontrar la siguiente apaición d'esta fras find_next_label=Siguiente -find_highlight=Remarcar toos -find_match_case_label=Coincidencia de mayús./minús. -find_reached_top=Algamóse'l principiu del documentu, siguir dende'l final -find_reached_bottom=Algamóse'l final del documentu, siguir dende'l principiu +find_entire_word_label=Pallabres completes +find_reached_top=Algamóse'l comienzu de la páxina, síguese dende abaxo +find_reached_bottom=Algamóse la fin del documentu, síguese dende arriba # LOCALIZATION NOTE (find_match_count): The supported plural forms are # [one|two|few|many|other], with [other] as the default value. # "{{current}}" and "{{total}}" will be replaced by a number representing the # index of the currently active find result, respectively a number representing # the total number of matches in the document. +find_match_count[one]={{current}} de {{total}} coincidencia +find_match_count[two]={{current}} de {{total}} coincidencies +find_match_count[few]={{current}} de {{total}} coincidencies +find_match_count[many]={{current}} de {{total}} coincidencies +find_match_count[other]={{current}} de {{total}} coincidencies # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # [zero|one|two|few|many|other], with [other] as the default value. # "{{limit}}" will be replaced by a numerical value. -find_not_found=Frase non atopada +find_match_count_limit[zero]=Más de {{limit}} coincidencies +find_match_count_limit[one]=Más de {{limit}} coincidencia +find_match_count_limit[two]=Más de {{limit}} coincidencies +find_match_count_limit[few]=Más de {{limit}} coincidencies +find_match_count_limit[many]=Más de {{limit}} coincidencies +find_match_count_limit[other]=Más de {{limit}} coincidencies # Error panel labels error_more_info=Más información error_less_info=Menos información -error_close=Zarrar # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be # replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) +error_version_info=PDF.js v{{version}} (compilación: {{build}}) # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an # english string describing the error. error_message=Mensaxe: {{message}} @@ -167,35 +179,29 @@ error_stack=Pila: {{stack}} error_file=Ficheru: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Llinia: {{line}} -rendering_error=Hebo un fallu al renderizar la páxina. # Predefined zoom values -page_scale_width=Anchor de la páxina -page_scale_fit=Axuste de la páxina -page_scale_auto=Tamañu automáticu -page_scale_actual=Tamañu actual +page_scale_auto=Zoom automáticu +page_scale_actual=Tamañu real # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Fallu -loading_error=Hebo un fallu al cargar el PDF. -invalid_file_error=Ficheru PDF inválidu o corruptu. -missing_file_error=Nun hai ficheru PDF. -unexpected_response_error=Rempuesta inesperada del sirvidor. +loading=Cargando… +loading_error=Asocedió un fallu mentanto se cargaba'l PDF. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotación {{type}}] -password_label=Introduz la contraseña p'abrir esti ficheru PDF -password_invalid=Contraseña non válida. Vuelvi a intentalo. -password_ok=Aceutar +password_ok=Aceptar password_cancel=Encaboxar -printing_not_supported=Alvertencia: La imprentación entá nun ta sofitada dafechu nesti restolador. -printing_not_ready=Avisu: Esti PDF nun se cargó completamente pa poder imprentase. -web_fonts_disabled=Les fontes web tán desactivaes: ye imposible usar les fontes PDF embebíes. -document_colors_not_allowed=Los documentos PDF nun tienen permisu pa usar les sos colores: «Permitir que les páxines escueyan les sos colores» ta desactivao nel restolador. +# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same +# exact string as in the `chrome.properties` file. + diff --git a/addons/web/static/lib/pdfjs/web/locale/az/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/az/viewer.properties index 46fb51c0c54..bdc0ce615c4 100644 --- a/addons/web/static/lib/pdfjs/web/locale/az/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/az/viewer.properties @@ -39,8 +39,8 @@ open_file.title=Fayl Aç open_file_label=Aç print.title=Yazdır print_label=Yazdır -download.title=Yüklə -download_label=Yüklə +download.title=Endir +download_label=Endir bookmark.title=Hazırkı görünüş (köçür və ya yeni pəncərədə aç) bookmark_label=Hazırkı görünüş @@ -48,16 +48,12 @@ bookmark_label=Hazırkı görünüş tools.title=Alətlər tools_label=Alətlər first_page.title=İlk Səhifəyə get -first_page.label=İlk Səhifəyə get first_page_label=İlk Səhifəyə get last_page.title=Son Səhifəyə get -last_page.label=Son Səhifəyə get last_page_label=Son Səhifəyə get page_rotate_cw.title=Saat İstiqamətində Fırlat -page_rotate_cw.label=Saat İstiqamətində Fırlat page_rotate_cw_label=Saat İstiqamətində Fırlat page_rotate_ccw.title=Saat İstiqamətinin Əksinə Fırlat -page_rotate_ccw.label=Saat İstiqamətinin Əksinə Fırlat page_rotate_ccw_label=Saat İstiqamətinin Əksinə Fırlat cursor_text_select_tool.title=Yazı seçmə alətini aktivləşdir @@ -137,17 +133,20 @@ print_progress_close=Ləğv et # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Yan Paneli Aç/Bağla -toggle_sidebar_notification.title=Yan paneli çevir (sənəddə icmal/bağlama var) +toggle_sidebar_notification2.title=Yan paneli çevir (sənəddə icmal/bağlamalar/laylar mövcuddur) toggle_sidebar_label=Yan Paneli Aç/Bağla document_outline.title=Sənədin eskizini göstər (bütün bəndləri açmaq/yığmaq üçün iki dəfə klikləyin) document_outline_label=Sənəd strukturu attachments.title=Bağlamaları göstər attachments_label=Bağlamalar +layers.title=Layları göstər (bütün layları ilkin halına sıfırlamaq üçün iki dəfə klikləyin) +layers_label=Laylar thumbs.title=Kiçik şəkilləri göstər thumbs_label=Kiçik şəkillər findbar.title=Sənəddə Tap findbar_label=Tap +additional_layers=Əlavə laylar # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -219,13 +218,15 @@ page_scale_actual=Hazırkı Həcm # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Səhv loading_error=PDF yüklenərkən bir səhv yarandı. invalid_file_error=Səhv və ya zədələnmiş olmuş PDF fayl. missing_file_error=PDF fayl yoxdur. unexpected_response_error=Gözlənilməz server cavabı. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -239,4 +240,3 @@ password_cancel=Ləğv et printing_not_supported=Xəbərdarlıq: Çap bu səyyah tərəfindən tam olaraq dəstəklənmir. printing_not_ready=Xəbərdarlıq: PDF çap üçün tam yüklənməyib. web_fonts_disabled=Web Şriftlər söndürülüb: yerləşdirilmiş PDF şriftlərini istifadə etmək mümkün deyil. -document_colors_not_allowed=PDF sənədlərə öz rənglərini işlətməyə icazə verilmir: “Səhifələrə öz rənglərini istifadə etməyə icazə ver”mə səyyahda söndürülüb. diff --git a/addons/web/static/lib/pdfjs/web/locale/be/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/be/viewer.properties index d3f81887e69..5c006b96cdd 100644 --- a/addons/web/static/lib/pdfjs/web/locale/be/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/be/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Цяперашняя праява tools.title=Прылады tools_label=Прылады first_page.title=Перайсці на першую старонку -first_page.label=Перайсці на першую старонку first_page_label=Перайсці на першую старонку last_page.title=Перайсці на апошнюю старонку -last_page.label=Перайсці на апошнюю старонку last_page_label=Перайсці на апошнюю старонку page_rotate_cw.title=Павярнуць па сонцу -page_rotate_cw.label=Павярнуць па сонцу page_rotate_cw_label=Павярнуць па сонцу page_rotate_ccw.title=Павярнуць супраць сонца -page_rotate_ccw.label=Павярнуць супраць сонца page_rotate_ccw_label=Павярнуць супраць сонца cursor_text_select_tool.title=Уключыць прыладу выбару тэксту @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Прылада выбару тэксту cursor_hand_tool.title=Уключыць ручную прыладу cursor_hand_tool_label=Ручная прылада +scroll_page.title=Выкарыстоўваць пракрутку старонкi +scroll_page_label=Пракрутка старонкi scroll_vertical.title=Ужываць вертыкальную пракрутку scroll_vertical_label=Вертыкальная пракрутка scroll_horizontal.title=Ужываць гарызантальную пракрутку @@ -137,17 +135,24 @@ print_progress_close=Скасаваць # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Паказаць/схаваць бакавую панэль -toggle_sidebar_notification.title=Паказаць/схаваць бакавую панэль (дакумент мае змест/укладанні) +toggle_sidebar_notification2.title=Паказаць/схаваць бакавую панэль (дакумент мае змест/укладанні/пласты) toggle_sidebar_label=Паказаць/схаваць бакавую панэль document_outline.title=Паказаць структуру дакумента (двайная пстрычка, каб разгарнуць /згарнуць усе элементы) document_outline_label=Структура дакумента attachments.title=Паказаць далучэнні attachments_label=Далучэнні +layers.title=Паказаць пласты (двойчы пстрыкніце, каб скінуць усе пласты да прадвызначанага стану) +layers_label=Пласты thumbs.title=Паказ мініяцюр thumbs_label=Мініяцюры +current_outline_item.title=Знайсці бягучы элемент структуры +current_outline_item_label=Бягучы элемент структуры findbar.title=Пошук у дакуменце findbar_label=Знайсці +additional_layers=Дадатковыя пласты +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Старонка {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Знайсці наступны выпадак выразу find_next_label=Наступны find_highlight=Падфарбаваць усе find_match_case_label=Адрозніваць вялікія/малыя літары +find_match_diacritics_label=З улікам дыякрытык find_entire_word_label=Словы цалкам find_reached_top=Дасягнуты пачатак дакумента, працяг з канца find_reached_bottom=Дасягнуты канец дакумента, працяг з пачатку @@ -220,8 +226,8 @@ page_scale_actual=Сапраўдны памер page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Памылка -loading_error=Здарылася памылка падчас загрузкі PDF. +loading=Чытаецца… +loading_error=Здарылася памылка ў часе загрузкі PDF. invalid_file_error=Няспраўны або пашкоджаны файл PDF. missing_file_error=Адсутны файл PDF. unexpected_response_error=Нечаканы адказ сервера. @@ -243,4 +249,33 @@ password_cancel=Скасаваць printing_not_supported=Папярэджанне: друк не падтрымліваецца цалкам гэтым браўзерам. printing_not_ready=Увага: PDF не сцягнуты цалкам для друкавання. web_fonts_disabled=Шрыфты Сеціва забаронены: немагчыма ўжываць укладзеныя шрыфты PDF. -document_colors_not_allowed=PDF-дакументам не дазволена выкарыстоўваць свае колеры: у браўзеры адключаны параметр "Дазволіць вэб-сайтам выкарыстоўваць свае колеры". + +# Editor +editor_none.title=Адключыць рэдагаванне анатацый +editor_none_label=Адключыць рэдагаванне +editor_free_text.title=Дадаць анатацыю FreeText +editor_free_text_label=Анатацыя FreeText +editor_ink.title=Дадаць анатацыю чарнілам +editor_ink_label=Анатацыя чарнілам + +freetext_default_content=Увядзіце тэкст… + +free_text_default_content=Увядзіце тэкст… + +# Editor Parameters +editor_free_text_font_color=Колер шрыфту +editor_free_text_font_size=Памер шрыфту +editor_ink_line_color=Колер лініі +editor_ink_line_thickness=Таўшчыня лініі + +# Editor Parameters +editor_free_text_color=Колер +editor_free_text_size=Памер +editor_ink_color=Колер +editor_ink_thickness=Таўшчыня +editor_ink_opacity=Непразрыстасць + +# Editor aria +editor_free_text_aria_label=Рэдактар FreeText +editor_ink_aria_label=Рэдактар чарнілаў +editor_ink_canvas_aria_label=Відарыс, створаны карыстальнікам diff --git a/addons/web/static/lib/pdfjs/web/locale/bg/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/bg/viewer.properties index 713b1138ddd..0ec7649c691 100644 --- a/addons/web/static/lib/pdfjs/web/locale/bg/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/bg/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Текущ изглед tools.title=Инструменти tools_label=Инструменти first_page.title=Към първата страница -first_page.label=Към първата страница first_page_label=Към първата страница last_page.title=Към последната страница -last_page.label=Към последната страница last_page_label=Към последната страница page_rotate_cw.title=Завъртане по час. стрелка -page_rotate_cw.label=Завъртане по часовниковата стрелка page_rotate_cw_label=Завъртане по часовниковата стрелка page_rotate_ccw.title=Завъртане обратно на час. стрелка -page_rotate_ccw.label=Завъртане обратно на часовниковата стрелка page_rotate_ccw_label=Завъртане обратно на часовниковата стрелка cursor_text_select_tool.title=Включване на инструмента за избор на текст @@ -137,7 +133,6 @@ print_progress_close=Отказ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Превключване на страничната лента -toggle_sidebar_notification.title=Превключване на страничната лента (документи със структура/прикачени файлове) toggle_sidebar_label=Превключване на страничната лента document_outline.title=Показване на структурата на документа (двукратно щракване за свиване/разгъване на всичко) document_outline_label=Структура на документа @@ -219,8 +214,6 @@ page_scale_actual=Действителен размер # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Грешка loading_error=Получи се грешка при зареждане на PDF-а. invalid_file_error=Невалиден или повреден PDF файл. missing_file_error=Липсващ PDF файл. @@ -239,4 +232,3 @@ password_cancel=Отказ printing_not_supported=Внимание: Този четец няма пълна поддръжка на отпечатване. printing_not_ready=Внимание: Този PDF файл не е напълно зареден за печат. web_fonts_disabled=Уеб-шрифтовете са забранени: разрешаване на използването на вградените PDF шрифтове. -document_colors_not_allowed=На документите от вид PDF не е разрешено да използват собствени цветове: „Разрешаване на страниците да избират собствени цветове“ е изключено в четеца. diff --git a/addons/web/static/lib/pdfjs/web/locale/bn-IN/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/bn-IN/viewer.properties deleted file mode 100644 index 550cefff3fe..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/bn-IN/viewer.properties +++ /dev/null @@ -1,242 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=পূর্ববর্তী পৃষ্ঠা -previous_label=পূর্ববর্তী -next.title=পরবর্তী পৃষ্ঠা -next_label=পরবর্তী - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=পেজ -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pagesCount}} এর {{pageNumber}}) - -zoom_out.title=ছোট মাপে প্রদর্শন -zoom_out_label=ছোট মাপে প্রদর্শন -zoom_in.title=বড় মাপে প্রদর্শন -zoom_in_label=বড় মাপে প্রদর্শন -zoom.title=প্রদর্শনের মাপ -presentation_mode.title=উপস্থাপনা মোড স্যুইচ করুন -presentation_mode_label=উপস্থাপনা মোড -open_file.title=ফাইল খুলুন -open_file_label=খুলুন -print.title=প্রিন্ট করুন -print_label=প্রিন্ট করুন -download.title=ডাউনলোড করুন -download_label=ডাউনলোড করুন -bookmark.title=বর্তমান প্রদর্শন (কপি করুন অথবা নতুন উইন্ডোতে খুলুন) -bookmark_label=বর্তমান প্রদর্শন - -# Secondary toolbar and context menu -tools.title=সরঞ্জাম -tools_label=সরঞ্জাম -first_page.title=প্রথম পৃষ্ঠায় চলুন -first_page.label=প্রথম পৃষ্ঠায় চলুন -first_page_label=প্রথম পৃষ্ঠায় চলুন -last_page.title=সর্বশেষ পৃষ্ঠায় চলুন -last_page.label=সর্বশেষ পৃষ্ঠায় চলুন -last_page_label=সর্বশেষ পৃষ্ঠায় চলুন -page_rotate_cw.title=ডানদিকে ঘোরানো হবে -page_rotate_cw.label=ডানদিকে ঘোরানো হবে -page_rotate_cw_label=ডানদিকে ঘোরানো হবে -page_rotate_ccw.title=বাঁদিকে ঘোরানো হবে -page_rotate_ccw.label=বাঁদিকে ঘোরানো হবে -page_rotate_ccw_label=বাঁদিকে ঘোরানো হবে - -cursor_text_select_tool.title=টেক্সট নির্বাচন সরঞ্জাম সক্রিয় করুন -cursor_text_select_tool_label=টেক্সট নির্বাচনের সরঞ্জাম -cursor_hand_tool.title=হ্যান্ড টুল সক্রিয় করুন -cursor_hand_tool_label=হ্যান্ড টুল - -scroll_vertical.title=উল্লম্ব স্ক্রোলিং ব্যবহার করুন -scroll_vertical_label=উল্লম্ব স্ক্রোলিং -scroll_horizontal.title=অনুভূমিক স্ক্রোলিং ব্যবহার করুন -scroll_horizontal_label=অনুভূমিক স্ক্রোলিং -scroll_wrapped.title=আবৃত স্ক্রোলিং ব্যবহার করুন -scroll_wrapped_label=আবৃত স্ক্রোলিং - -spread_none.title=ছড়িয়ে পরা পাতাকে যোগ করবেন না -spread_none_label=ছড়ানো নয় -spread_odd.title=বিজোড়-সংখ্যার পৃষ্ঠাগুলির সাথে শুরু হওয়া পৃষ্ঠা স্প্রেডগুলিতে যোগদান করুন -spread_odd_label=বিজোড় স্প্রেডস -spread_even.title=জোড়-সংখ্যার পৃষ্ঠাগুলির সাথে শুরু হওয়া পৃষ্ঠা স্প্রেডগুলিতে যোগদান করুন -spread_even_label=জোড় স্প্রেড - -# Document properties dialog box -document_properties.title=নথির বৈশিষ্ট্য… -document_properties_label=নথির বৈশিষ্ট্য… -document_properties_file_name=ফাইলের নাম: -document_properties_file_size=ফাইলের মাপ: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} মেগাবাইট ({{size_b}} bytes) -document_properties_title=শিরোনাম: -document_properties_author=লেখক: -document_properties_subject=বিষয়: -document_properties_keywords=নির্দেশক শব্দ: -document_properties_creation_date=নির্মাণের তারিখ: -document_properties_modification_date=পরিবর্তনের তারিখ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=নির্মাতা: -document_properties_producer=PDF নির্মাতা: -document_properties_version=PDF সংস্করণ: -document_properties_page_count=মোট পৃষ্ঠা: -document_properties_page_size=পৃষ্ঠার সাইজ: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=উলম্ব -document_properties_page_size_orientation_landscape=আড়াআড়ি -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=লেটার -document_properties_page_size_name_legal=লিগাল -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=দ্রুত ওয়েব প্রদর্শন: -document_properties_linearized_yes=হ্যাঁ -document_properties_linearized_no=না -document_properties_close=বন্ধ করুন - -print_progress_message=ডকুমেন্ট প্রিন্টিং-র জন্য তৈরি করা হচ্ছে... -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=বাতিল - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=সাইডবার টগল করুন -toggle_sidebar_notification.title=সাইডবার টগল করুন (নথিতে রয়েছে আউটলাইন/সংযুক্তি) -toggle_sidebar_label=সাইডবার টগল করুন -document_outline.title=ডকুমেন্ট আউটলাইন দেখান (দুবার ক্লিক করুন বাড়াতে//collapse সমস্ত আইটেম) -document_outline_label=ডকুমেন্ট আউটলাইন -attachments.title=সংযুক্তিসমূহ দেখান -attachments_label=সংযুক্ত বস্তু -thumbs.title=থাম্ব-নেইল প্রদর্শন -thumbs_label=থাম্ব-নেইল প্রদর্শন -findbar.title=নথিতে খুঁজুন -findbar_label=অনুসন্ধান করুন - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=পৃষ্ঠা {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=পৃষ্ঠা {{page}}-র থাম্ব-নেইল - -# Find panel button title and messages -find_input.title=খুঁজুন -find_input.placeholder=নথির মধ্যে খুঁজুন… -find_previous.title=চিহ্নিত পংক্তির পূর্ববর্তী উপস্থিতি অনুসন্ধান করুন -find_previous_label=পূর্ববর্তী -find_next.title=চিহ্নিত পংক্তির পরবর্তী উপস্থিতি অনুসন্ধান করুন -find_next_label=পরবর্তী -find_highlight=সমগ্র উজ্জ্বল করুন -find_match_case_label=হরফের ছাঁদ মেলানো হবে -find_entire_word_label=সম্পূর্ণ শব্দগুলি -find_reached_top=পৃষ্ঠার প্রারম্ভে পৌছে গেছে, নীচের অংশ থেকে আরম্ভ করা হবে -find_reached_bottom=পৃষ্ঠার অন্তিম প্রান্তে পৌছে গেছে, প্রথম অংশ থেকে আরম্ভ করা হবে -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{total}} এর {{current}} এ মিল -find_match_count[two]={{total}} এর {{current}} মিলছে -find_match_count[few]={{total}} এর {{current}} মিলছে -find_match_count[many]={{total}} এর {{current}} মিলছে -find_match_count[other]={{total}} এর {{current}} মিলছে -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]={{limit}} এর বেশি মিলছে -find_match_count_limit[one]={{limit}} এর থেকে বেশি মিলছে -find_match_count_limit[two]={{limit}} এর থেকে বেশি মিলছে -find_match_count_limit[few]={{limit}} এর থেকে বেশি মিলছে -find_match_count_limit[many]={{limit}} এর থেকে বেশি মিলছে -find_match_count_limit[other]={{limit}} এর থেকে বেশি মিলছে -find_not_found=পংক্তি পাওয়া যায়নি - -# Error panel labels -error_more_info=অতিরিক্ত তথ্য -error_less_info=কম তথ্য -error_close=বন্ধ করুন -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Message: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Line: {{line}} -rendering_error=পৃষ্ঠা প্রদর্শনকালে একটি সমস্যা দেখা দিয়েছে। - -# Predefined zoom values -page_scale_width=পৃষ্ঠার প্রস্থ অনুযায়ী -page_scale_fit=পৃষ্ঠার মাপ অনুযায়ী -page_scale_auto=স্বয়ংক্রিয় মাপ নির্ধারণ -page_scale_actual=প্রকৃত মাপ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=ত্রুটি -loading_error=PDF লোড করার সময় সমস্যা দেখা দিয়েছে। -invalid_file_error=অবৈধ বা ক্ষতিগ্রস্ত পিডিএফ ফাইল। -missing_file_error=অনুপস্থিত PDF ফাইল -unexpected_response_error=সার্ভার থেকে অপ্রত্যাশিত সাড়া পাওয়া গেছে। - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=এই PDF ফাইল খোলার জন্য পাসওয়ার্ড দিন। -password_invalid=পাসওয়ার্ড সঠিক নয়। অনুগ্রহ করে পুনরায় প্রচেষ্টা করুন। -password_ok=OK -password_cancel=বাতিল করুন - -printing_not_supported=সতর্কবার্তা: এই ব্রাউজার দ্বারা প্রিন্ট ব্যবস্থা সম্পূর্ণরূপে সমর্থিত নয়। -printing_not_ready=সতর্কবাণী: পিডিএফ সম্পূর্ণরূপে মুদ্রণের জন্য লোড করা হয় না. -web_fonts_disabled=ওয়েব ফন্ট নিষ্ক্রিয় করা হয়েছে: এমবেডেড পিডিএফ ফন্ট ব্যবহার করতে অক্ষম. -document_colors_not_allowed=পিডিএফ নথি তাদের নিজস্ব রং ব্যবহার করার জন্য অনুমতিপ্রাপ্ত নয়: ব্রাউজারে নিষ্ক্রিয় করা হয়েছে য়েন 'পেজ তাদের নিজস্ব রং নির্বাচন করার অনুমতি প্রদান করা য়ায়।' diff --git a/addons/web/static/lib/pdfjs/web/locale/bn-BD/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/bn/viewer.properties similarity index 93% rename from addons/web/static/lib/pdfjs/web/locale/bn-BD/viewer.properties rename to addons/web/static/lib/pdfjs/web/locale/bn/viewer.properties index 9fc785d6343..e31c135fd15 100644 --- a/addons/web/static/lib/pdfjs/web/locale/bn-BD/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/bn/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=বর্তমান অবস্থা tools.title=টুল tools_label=টুল first_page.title=প্রথম পাতায় যাও -first_page.label=প্রথম পাতায় যাও first_page_label=প্রথম পাতায় যাও last_page.title=শেষ পাতায় যাও -last_page.label=শেষ পাতায় যাও last_page_label=শেষ পাতায় যাও page_rotate_cw.title=ঘড়ির কাঁটার দিকে ঘোরাও -page_rotate_cw.label=ঘড়ির কাঁটার দিকে ঘোরাও page_rotate_cw_label=ঘড়ির কাঁটার দিকে ঘোরাও page_rotate_ccw.title=ঘড়ির কাঁটার বিপরীতে ঘোরাও -page_rotate_ccw.label=ঘড়ির কাঁটার বিপরীতে ঘোরাও page_rotate_ccw_label=ঘড়ির কাঁটার বিপরীতে ঘোরাও cursor_text_select_tool.title=লেখা নির্বাচক টুল সক্রিয় করুন @@ -69,7 +65,13 @@ scroll_vertical.title=উলম্ব স্ক্রলিং ব্যবহ scroll_vertical_label=উলম্ব স্ক্রলিং scroll_horizontal.title=অনুভূমিক স্ক্রলিং ব্যবহার করুন scroll_horizontal_label=অনুভূমিক স্ক্রলিং +scroll_wrapped.title=Wrapped স্ক্রোলিং ব্যবহার করুন +scroll_wrapped_label=Wrapped স্ক্রোলিং +spread_none.title=পেজ স্প্রেডগুলোতে যোগদান করবেন না +spread_none_label=Spreads নেই +spread_odd_label=বিজোড় Spreads +spread_even_label=জোড় Spreads # Document properties dialog box document_properties.title=নথি বৈশিষ্ট্য… @@ -114,6 +116,7 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) # LOCALIZATION NOTE (document_properties_linearized): The linearization status of # the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: document_properties_linearized_yes=হ্যাঁ document_properties_linearized_no=না document_properties_close=বন্ধ @@ -128,7 +131,6 @@ print_progress_close=বাতিল # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=সাইডবার টগল করুন -toggle_sidebar_notification.title=সাইডবার টগল (নথিতে আউটলাইন/এটাচমেন্ট রয়েছে) toggle_sidebar_label=সাইডবার টগল করুন document_outline.title=নথির আউটলাইন দেখাও (সব আইটেম প্রসারিত/সঙ্কুচিত করতে ডবল ক্লিক করুন) document_outline_label=নথির রূপরেখা @@ -139,6 +141,7 @@ thumbs_label=থাম্বনেইল সমূহ findbar.title=নথির মধ্যে খুঁজুন findbar_label=খুঁজুন +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -154,8 +157,9 @@ find_previous.title=বাক্যাংশের পূর্ববর্ত find_previous_label=পূর্ববর্তী find_next.title=বাক্যাংশের পরবর্তী উপস্থিতি অনুসন্ধান find_next_label=পরবর্তী -find_highlight=সব হাইলাইট করা হবে +find_highlight=সব হাইলাইট করুন find_match_case_label=অক্ষরের ছাঁদ মেলানো +find_entire_word_label=সম্পূর্ণ শব্দ find_reached_top=পাতার শুরুতে পৌছে গেছে, নীচ থেকে আরম্ভ করা হয়েছে find_reached_bottom=পাতার শেষে পৌছে গেছে, উপর থেকে আরম্ভ করা হয়েছে # LOCALIZATION NOTE (find_match_count): The supported plural forms are @@ -210,12 +214,15 @@ page_scale_actual=প্রকৃত আকার page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=ত্রুটি loading_error=পিডিএফ লোড করার সময় ত্রুটি দেখা দিয়েছে। invalid_file_error=অকার্যকর অথবা ক্ষতিগ্রস্ত পিডিএফ ফাইল। missing_file_error=নিখোঁজ PDF ফাইল। unexpected_response_error=অপ্রত্যাশীত সার্ভার প্রতিক্রিয়া। +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -229,4 +236,3 @@ password_cancel=বাতিল printing_not_supported=সতর্কতা: এই ব্রাউজারে মুদ্রণ সম্পূর্ণভাবে সমর্থিত নয়। printing_not_ready=সতর্কীকরণ: পিডিএফটি মুদ্রণের জন্য সম্পূর্ণ লোড হয়নি। web_fonts_disabled=ওয়েব ফন্ট নিষ্ক্রিয়: সংযুক্ত পিডিএফ ফন্ট ব্যবহার করা যাচ্ছে না। -document_colors_not_allowed=পিডিএফ ডকুমেন্টকে তাদের নিজস্ব রঙ ব্যবহারে অনুমতি নেই: 'পাতা তাদের নিজেস্ব রঙ নির্বাচন করতে অনুমতি দিন' এই ব্রাউজারে নিষ্ক্রিয় রয়েছে। diff --git a/addons/web/static/lib/pdfjs/web/locale/en-ZA/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/bo/viewer.properties similarity index 61% rename from addons/web/static/lib/pdfjs/web/locale/en-ZA/viewer.properties rename to addons/web/static/lib/pdfjs/web/locale/bo/viewer.properties index 832d5586464..bba049082d3 100644 --- a/addons/web/static/lib/pdfjs/web/locale/en-ZA/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/bo/viewer.properties @@ -13,18 +13,20 @@ # limitations under the License. # Main toolbar buttons (tooltips and alt text for images) -previous.title=Previous Page -previous_label=Previous -next.title=Next Page -next_label=Next +previous.title=དྲ་ངོས་སྔོན་མ +previous_label=སྔོན་མ +next.title=དྲ་ངོས་རྗེས་མ +next_label=རྗེས་མ # LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ཤོག་ངོས # LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number # representing the total number of pages in the document. of_pages=of {{pagesCount}} # LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" # will be replaced by a number representing the currently visible page, # respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) zoom_out.title=Zoom Out zoom_out_label=Zoom Out @@ -46,18 +48,32 @@ bookmark_label=Current View tools.title=Tools tools_label=Tools first_page.title=Go to First Page -first_page.label=Go to First Page first_page_label=Go to First Page last_page.title=Go to Last Page -last_page.label=Go to Last Page last_page_label=Go to Last Page page_rotate_cw.title=Rotate Clockwise -page_rotate_cw.label=Rotate Clockwise page_rotate_cw_label=Rotate Clockwise page_rotate_ccw.title=Rotate Counterclockwise -page_rotate_ccw.label=Rotate Counterclockwise page_rotate_ccw_label=Rotate Counterclockwise +cursor_text_select_tool.title=Enable Text Selection Tool +cursor_text_select_tool_label=Text Selection Tool +cursor_hand_tool.title=Enable Hand Tool +cursor_hand_tool_label=Hand Tool + +scroll_vertical.title=Use Vertical Scrolling +scroll_vertical_label=Vertical Scrolling +scroll_horizontal.title=Use Horizontal Scrolling +scroll_horizontal_label=Horizontal Scrolling +scroll_wrapped.title=Use Wrapped Scrolling +scroll_wrapped_label=Wrapped Scrolling + +spread_none.title=Do not join page spreads +spread_none_label=No Spreads +spread_odd.title=Join page spreads starting with odd-numbered pages +spread_odd_label=Odd Spreads +spread_even.title=Join page spreads starting with even-numbered pages +spread_even_label=Even Spreads # Document properties dialog box document_properties.title=Document Properties… @@ -83,10 +99,35 @@ document_properties_creator=Creator: document_properties_producer=PDF Producer: document_properties_version=PDF Version: document_properties_page_count=Page Count: +document_properties_page_size=Page Size: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portrait +document_properties_page_size_orientation_landscape=landscape +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Yes +document_properties_linearized_no=No document_properties_close=Close +print_progress_message=Preparing document for printing… # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancel # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are @@ -100,6 +141,7 @@ attachments_label=Attachments thumbs.title=Show Thumbnails thumbs_label=Thumbnails findbar.title=Find in Document +findbar_label=Find # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page @@ -110,14 +152,38 @@ thumb_page_title=Page {{page}} thumb_page_canvas=Thumbnail of Page {{page}} # Find panel button title and messages +find_input.title=Find +find_input.placeholder=Find in document… find_previous.title=Find the previous occurrence of the phrase find_previous_label=Previous find_next.title=Find the next occurrence of the phrase find_next_label=Next find_highlight=Highlight all find_match_case_label=Match case +find_entire_word_label=Whole words find_reached_top=Reached top of document, continued from bottom find_reached_bottom=Reached end of document, continued from top +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} of {{total}} match +find_match_count[two]={{current}} of {{total}} matches +find_match_count[few]={{current}} of {{total}} matches +find_match_count[many]={{current}} of {{total}} matches +find_match_count[other]={{current}} of {{total}} matches +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=More than {{limit}} matches +find_match_count_limit[one]=More than {{limit}} match +find_match_count_limit[two]=More than {{limit}} matches +find_match_count_limit[few]=More than {{limit}} matches +find_match_count_limit[many]=More than {{limit}} matches +find_match_count_limit[other]=More than {{limit}} matches find_not_found=Phrase not found # Error panel labels @@ -148,13 +214,14 @@ page_scale_actual=Actual Size # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Error loading_error=An error occurred while loading the PDF. invalid_file_error=Invalid or corrupted PDF file. missing_file_error=Missing PDF file. unexpected_response_error=Unexpected server response. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -163,8 +230,8 @@ text_annotation_type.alt=[{{type}} Annotation] password_label=Enter the password to open this PDF file. password_invalid=Invalid password. Please try again. password_ok=OK +password_cancel=Cancel printing_not_supported=Warning: Printing is not fully supported by this browser. printing_not_ready=Warning: The PDF is not fully loaded for printing. web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. -document_colors_not_allowed=PDF documents are not allowed to use their own colours: “Allow pages to choose their own colours” is deactivated in the browser. diff --git a/addons/web/static/lib/pdfjs/web/locale/br/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/br/viewer.properties index ac2558e1204..c26ca681022 100644 --- a/addons/web/static/lib/pdfjs/web/locale/br/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/br/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Gwel bremanel tools.title=Ostilhoù tools_label=Ostilhoù first_page.title=Mont d'ar bajenn gentañ -first_page.label=Mont d'ar bajenn gentañ first_page_label=Mont d'ar bajenn gentañ last_page.title=Mont d'ar bajenn diwezhañ -last_page.label=Mont d'ar bajenn diwezhañ last_page_label=Mont d'ar bajenn diwezhañ page_rotate_cw.title=C'hwelañ gant roud ar bizied -page_rotate_cw.label=C'hwelañ gant roud ar bizied page_rotate_cw_label=C'hwelañ gant roud ar bizied page_rotate_ccw.title=C'hwelañ gant roud gin ar bizied -page_rotate_ccw.label=C'hwelañ gant roud gin ar bizied page_rotate_ccw_label=C'hwelañ gant roud gin ar bizied cursor_text_select_tool.title=Gweredekaat an ostilh diuzañ testenn @@ -82,27 +78,27 @@ spread_even_label=Pajennoù par # Document properties dialog box document_properties.title=Perzhioù an teul… document_properties_label=Perzhioù an teul… -document_properties_file_name=Anv restr : -document_properties_file_size=Ment ar restr : +document_properties_file_name=Anv restr: +document_properties_file_size=Ment ar restr: # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # will be replaced by the PDF file size in kilobytes, respectively in bytes. document_properties_kb={{size_kb}} Ke ({{size_b}} eizhbit) # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" # will be replaced by the PDF file size in megabytes, respectively in bytes. document_properties_mb={{size_mb}} Me ({{size_b}} eizhbit) -document_properties_title=Titl : -document_properties_author=Aozer : -document_properties_subject=Danvez : -document_properties_keywords=Gerioù-alc'hwez : -document_properties_creation_date=Deiziad krouiñ : -document_properties_modification_date=Deiziad kemmañ : +document_properties_title=Titl: +document_properties_author=Aozer: +document_properties_subject=Danvez: +document_properties_keywords=Gerioù-alc'hwez: +document_properties_creation_date=Deiziad krouiñ: +document_properties_modification_date=Deiziad kemmañ: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. document_properties_date_string={{date}}, {{time}} -document_properties_creator=Krouer : -document_properties_producer=Kenderc'her PDF : -document_properties_version=Handelv PDF : -document_properties_page_count=Niver a bajennoù : +document_properties_creator=Krouer: +document_properties_producer=Kenderc'her PDF: +document_properties_version=Handelv PDF: +document_properties_page_count=Niver a bajennoù: document_properties_page_size=Ment ar bajenn: document_properties_page_size_unit_inches=in document_properties_page_size_unit_millimeters=mm @@ -137,17 +133,22 @@ print_progress_close=Nullañ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Diskouez/kuzhat ar varrenn gostez -toggle_sidebar_notification.title=Trec'haoliñ ar verrenn-gostez (ur steuñv pe stagadennoù a zo en teul) +toggle_sidebar_notification2.title=Trec'haoliñ ar varrenn-gostez (ur steuñv pe stagadennoù a zo en teul) toggle_sidebar_label=Diskouez/kuzhat ar varrenn gostez document_outline.title=Diskouez steuñv an teul (daouglikit evit brasaat/bihanaat an holl elfennoù) document_outline_label=Sinedoù an teuliad attachments.title=Diskouez ar c'henstagadurioù attachments_label=Kenstagadurioù +layers.title=Diskouez ar gwiskadoù (daou-glikañ evit adderaouekaat an holl gwiskadoù d'o stad dre ziouer) +layers_label=Gwiskadoù thumbs.title=Diskouez ar melvennoù thumbs_label=Melvennoù findbar.title=Klask e-barzh an teuliad findbar_label=Klask +additional_layers=Gwiskadoù ouzhpenn +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pajenn {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -197,17 +198,17 @@ error_less_info=Nebeutoc'h a ditouroù error_close=Serriñ # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be # replaced by the PDF.JS version and build ID. -error_version_info=PDF.js handelv {{version}} (kempunadur : {{build}}) +error_version_info=PDF.js handelv {{version}} (kempunadur: {{build}}) # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an # english string describing the error. -error_message=Kemennadenn : {{message}} +error_message=Kemennadenn: {{message}} # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack # trace. -error_stack=Torn : {{stack}} +error_stack=Torn: {{stack}} # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Restr : {{file}} +error_file=Restr: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linenn : {{line}} +error_line=Linenn: {{line}} rendering_error=Degouezhet ez eus bet ur fazi e-pad skrammañ ar bajennad. # Predefined zoom values @@ -220,7 +221,7 @@ page_scale_actual=Ment wir page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Fazi +loading=O kargañ… loading_error=Degouezhet ez eus bet ur fazi e-pad kargañ ar PDF. invalid_file_error=Restr PDF didalvoudek pe kontronet. missing_file_error=Restr PDF o vankout. @@ -240,7 +241,6 @@ password_invalid=Ger-tremen didalvoudek. Klaskit en-dro mar plij. password_ok=Mat eo password_cancel=Nullañ -printing_not_supported=Kemenn : N'eo ket skoret penn-da-benn ar moullañ gant ar merdeer-mañ. -printing_not_ready=Kemenn : N'hall ket bezañ moullet ar restr PDF rak n'eo ket karget penn-da-benn. -web_fonts_disabled=Diweredekaet eo an nodrezhoù web : n'haller ket arverañ an nodrezhoù PDF enframmet. -document_colors_not_allowed=N'eo ket aotreet an teuliadoù PDF da arverañ o livioù dezho : diweredekaet eo “Aotren ar pajennoù da zibab o livioù dezho” e-barzh ar merdeer. +printing_not_supported=Kemenn: N'eo ket skoret penn-da-benn ar moullañ gant ar merdeer-mañ. +printing_not_ready=Kemenn: N'hall ket bezañ moullet ar restr PDF rak n'eo ket karget penn-da-benn. +web_fonts_disabled=Diweredekaet eo an nodrezhoù web: n'haller ket arverañ an nodrezhoù PDF enframmet. diff --git a/addons/web/static/lib/pdfjs/web/locale/brx/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/brx/viewer.properties index 2ddc52c1ff8..3d1c92ddd91 100644 --- a/addons/web/static/lib/pdfjs/web/locale/brx/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/brx/viewer.properties @@ -19,11 +19,14 @@ next.title=उननि बिलाइ next_label=उननि # LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=बिलाइ # LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number # representing the total number of pages in the document. +of_pages={{pagesCount}} नि # LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" # will be replaced by a number representing the currently visible page, # respectively a number representing the total number of pages in the document. +page_of_pages=({{pagesCount}} नि {{pageNumber}}) zoom_out.title=फिसायै जुम खालाम zoom_out_label=फिसायै जुम खालाम @@ -45,19 +48,17 @@ bookmark_label=दानि नुथाय tools.title=टुल tools_label=टुल first_page.title=गिबि बिलाइआव थां -first_page.label=गिबि बिलाइआव थां first_page_label=गिबि बिलाइआव थां last_page.title=जोबथा बिलाइआव थां -last_page.label=जोबथा बिलाइआव थां last_page_label=जोबथा बिलाइआव थां page_rotate_cw.title=घरि गिदिंनाय फार्से फिदिं -page_rotate_cw.label=घरि गिदिंनाय फार्से फिदिं page_rotate_cw_label=घरि गिदिंनाय फार्से फिदिं page_rotate_ccw.title=घरि गिदिंनाय उल्था फार्से फिदिं -page_rotate_ccw.label=घरि गिदिंनाय उल्था फार्से फिदिं page_rotate_ccw_label=घरि गिदिंनाय उल्था फार्से फिदिं + + # Document properties dialog box document_properties.title=फोरमान बिलाइनि आखुथाय... document_properties_label=फोरमान बिलाइनि आखुथाय... @@ -82,10 +83,31 @@ document_properties_creator=सोरजिग्रा: document_properties_producer=PDF दिहुनग्रा: document_properties_version=PDF बिसान: document_properties_page_count=बिलाइनि हिसाब: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=प'र्ट्रेट +document_properties_page_size_orientation_landscape=लेण्डस्केप +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=लायजाम +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=नंगौ +document_properties_linearized_no=नङा document_properties_close=बन्द खालाम # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=नेवसि # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are @@ -98,6 +120,7 @@ attachments_label=नांजाब होनाय thumbs.title=थामनेइलखौ दिन्थि thumbs_label=थामनेइल findbar.title=फोरमान बिलाइआव नागिरना दिहुन +findbar_label=नायगिरना दिहुन # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page @@ -108,6 +131,8 @@ thumb_page_title=बिलाइ {{page}} thumb_page_canvas=बिलाइ {{page}} नि थामनेइल # Find panel button title and messages +find_input.title=नायगिरना दिहुन +find_input.placeholder=फोरमान बिलाइआव नागिरना दिहुन... find_previous.title=बाथ्रा खोन्दोबनि सिगांनि नुजाथिनायखौ नागिर find_previous_label=आगोलनि find_next.title=बाथ्रा खोन्दोबनि उननि नुजाथिनायखौ नागिर @@ -116,6 +141,15 @@ find_highlight=गासैखौबो हाइलाइट खालाम find_match_case_label=गोरोबनाय केस find_reached_top=थालो निफ्राय जागायनानै फोरमान बिलाइनि बिजौआव सौहैबाय find_reached_bottom=बिजौ निफ्राय जागायनानै फोरमान बिलाइनि बिजौआव सौहैबाय +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} find_not_found=बाथ्रा खोन्दोब मोनाखै # Error panel labels @@ -144,14 +178,17 @@ page_scale_auto=गावनोगाव जुम page_scale_actual=थार महर # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. +page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=गोरोन्थि loading_error=PDF ल'ड खालामनाय समाव मोनसे गोरोन्थि जाबाय। invalid_file_error=बाहायजायै एबा गाज्रि जानाय PDF फाइल missing_file_error=गोमानाय PDF फाइल unexpected_response_error=मिजिंथियै सार्भार फिननाय। +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -160,8 +197,8 @@ text_annotation_type.alt=[{{type}} सोदोब बेखेवनाय] password_label=बे PDF फाइलखौ खेवनो पासवार्ड हाबहो। password_invalid=बाहायजायै पासवार्ड। अननानै फिन नाजा। password_ok=OK +password_cancel=नेवसि printing_not_supported=सांग्रांथि: साफायनाया बे ब्राउजारजों आबुङै हेफाजाब होजाया। printing_not_ready=सांग्रांथि: PDF खौ साफायनायनि थाखाय फुरायै ल'ड खालामाखै। web_fonts_disabled=वेब फन्टखौ लोरबां खालामबाय: अरजाबहोनाय PDF फन्टखौ बाहायनो हायाखै। -document_colors_not_allowed=PDF फोरमान बिलाइखौ बिसोरनि निजि गाब बाहायनो गनायथि होनाय जाया: 'बिसोरनि निजि गाब बासिखनो बिलाइखौ गनायथि हो'-खौ ब्राउजारआव लोरबां खालामनाय जायो। diff --git a/addons/web/static/lib/pdfjs/web/locale/bs/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/bs/viewer.properties index 6c2122b8203..ec115d03cc2 100644 --- a/addons/web/static/lib/pdfjs/web/locale/bs/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/bs/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Trenutni prikaz tools.title=Alati tools_label=Alati first_page.title=Idi na prvu stranu -first_page.label=Idi na prvu stranu first_page_label=Idi na prvu stranu last_page.title=Idi na zadnju stranu -last_page.label=Idi na zadnju stranu last_page_label=Idi na zadnju stranu page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu -page_rotate_cw.label=Rotiraj u smjeru kazaljke na satu page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu page_rotate_ccw.title=Rotiraj suprotno smjeru kazaljke na satu -page_rotate_ccw.label=Rotiraj suprotno smjeru kazaljke na satu page_rotate_ccw_label=Rotiraj suprotno smjeru kazaljke na satu cursor_text_select_tool.title=Omogući alat za označavanje teksta @@ -118,7 +114,6 @@ print_progress_close=Otkaži # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Uključi/isključi bočnu traku -toggle_sidebar_notification.title=Uključi/isključi sidebar (dokument sadrži outline/priloge) toggle_sidebar_label=Uključi/isključi bočnu traku document_outline.title=Prikaži outline dokumenta (dvoklik za skupljanje/širenje svih stavki) document_outline_label=Konture dokumenta @@ -178,8 +173,6 @@ page_scale_actual=Stvarna veličina # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Greška loading_error=Došlo je do greške prilikom učitavanja PDF-a. invalid_file_error=Neispravan ili oštećen PDF fajl. missing_file_error=Nedostaje PDF fajl. @@ -198,4 +191,3 @@ password_cancel=Otkaži printing_not_supported=Upozorenje: Štampanje nije u potpunosti podržano u ovom browseru. printing_not_ready=Upozorenje: PDF nije u potpunosti učitan za štampanje. web_fonts_disabled=Web fontovi su onemogućeni: nemoguće koristiti ubačene PDF fontove. -document_colors_not_allowed=PDF dokumentima nije dozvoljeno da koriste vlastite boje: 'Dozvoli stranicama da izaberu vlastite boje' je deaktivirano u browseru. diff --git a/addons/web/static/lib/pdfjs/web/locale/ca/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ca/viewer.properties index 77f421a486f..21e7dff9264 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ca/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ca/viewer.properties @@ -28,10 +28,10 @@ of_pages=de {{pagesCount}} # respectively a number representing the total number of pages in the document. page_of_pages=({{pageNumber}} de {{pagesCount}}) -zoom_out.title=Allunya -zoom_out_label=Allunya -zoom_in.title=Apropa -zoom_in_label=Apropa +zoom_out.title=Redueix +zoom_out_label=Redueix +zoom_in.title=Amplia +zoom_in_label=Amplia zoom.title=Escala presentation_mode.title=Canvia al mode de presentació presentation_mode_label=Mode de presentació @@ -48,16 +48,12 @@ bookmark_label=Vista actual tools.title=Eines tools_label=Eines first_page.title=Vés a la primera pàgina -first_page.label=Vés a la primera pàgina first_page_label=Vés a la primera pàgina last_page.title=Vés a l'última pàgina -last_page.label=Vés a l'última pàgina last_page_label=Vés a l'última pàgina page_rotate_cw.title=Gira cap a la dreta -page_rotate_cw.label=Gira cap a la dreta page_rotate_cw_label=Gira cap a la dreta page_rotate_ccw.title=Gira cap a l'esquerra -page_rotate_ccw.label=Gira cap a l'esquerra page_rotate_ccw_label=Gira cap a l'esquerra cursor_text_select_tool.title=Habilita l'eina de selecció de text @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Eina de selecció de text cursor_hand_tool.title=Habilita l'eina de mà cursor_hand_tool_label=Eina de mà +scroll_page.title=Usa el desplaçament de pàgina +scroll_page_label=Desplaçament de pàgina scroll_vertical.title=Utilitza el desplaçament vertical scroll_vertical_label=Desplaçament vertical scroll_horizontal.title=Utilitza el desplaçament horitzontal @@ -72,6 +70,12 @@ scroll_horizontal_label=Desplaçament horitzontal scroll_wrapped.title=Activa el desplaçament continu scroll_wrapped_label=Desplaçament continu +spread_none.title=No agrupis les pàgines de dues en dues +spread_none_label=Una sola pàgina +spread_odd.title=Mostra dues pàgines començant per les pàgines de numeració senar +spread_odd_label=Doble pàgina (senar) +spread_even.title=Mostra dues pàgines començant per les pàgines de numeració parell +spread_even_label=Doble pàgina (parell) # Document properties dialog box document_properties.title=Propietats del document… @@ -131,17 +135,24 @@ print_progress_close=Cancel·la # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Mostra/amaga la barra lateral -toggle_sidebar_notification.title=Mostra/amaga la barra lateral (el document conté un esquema o adjuncions) +toggle_sidebar_notification2.title=Mostra/amaga la barra lateral (el document conté un esquema, adjuncions o capes) toggle_sidebar_label=Mostra/amaga la barra lateral document_outline.title=Mostra l'esquema del document (doble clic per ampliar/reduir tots els elements) -document_outline_label=Contorn del document +document_outline_label=Esquema del document attachments.title=Mostra les adjuncions attachments_label=Adjuncions +layers.title=Mostra les capes (doble clic per restablir totes les capes al seu estat per defecte) +layers_label=Capes thumbs.title=Mostra les miniatures thumbs_label=Miniatures +current_outline_item.title=Cerca l'element d'esquema actual +current_outline_item_label=Element d'esquema actual findbar.title=Cerca al document findbar_label=Cerca +additional_layers=Capes addicionals +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pàgina {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -205,7 +216,7 @@ error_line=Línia: {{line}} rendering_error=S'ha produït un error mentre es renderitzava la pàgina. # Predefined zoom values -page_scale_width=Amplària de la pàgina +page_scale_width=Amplada de la pàgina page_scale_fit=Ajusta la pàgina page_scale_auto=Zoom automàtic page_scale_actual=Mida real @@ -214,12 +225,16 @@ page_scale_actual=Mida real page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=S'està carregant… loading_error=S'ha produït un error en carregar el PDF. invalid_file_error=El fitxer PDF no és vàlid o està malmès. missing_file_error=Falta el fitxer PDF. unexpected_response_error=Resposta inesperada del servidor. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -233,4 +248,3 @@ password_cancel=Cancel·la printing_not_supported=Avís: la impressió no és plenament funcional en aquest navegador. printing_not_ready=Atenció: el PDF no s'ha acabat de carregar per imprimir-lo. web_fonts_disabled=Els tipus de lletra web estan desactivats: no es poden utilitzar els tipus de lletra incrustats al PDF. -document_colors_not_allowed=Els documents PDF no poden usar els seus colors propis: «Permet a les pàgines triar els colors propis» es troba desactivat al navegador. diff --git a/addons/web/static/lib/pdfjs/web/locale/cak/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/cak/viewer.properties index 8086f32aa24..1828641ea05 100644 --- a/addons/web/static/lib/pdfjs/web/locale/cak/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/cak/viewer.properties @@ -14,7 +14,7 @@ # Main toolbar buttons (tooltips and alt text for images) previous.title=Jun kan ruxaq -previous_label=Chuwäch +previous_label=Jun kan next.title=Jun chik ruxaq next_label=Jun chik @@ -35,7 +35,7 @@ zoom_in_label=Tinimirisäx zoom.title=Sum presentation_mode.title=Tijal ri rub'anikil niwachin presentation_mode_label=Pa rub'eyal niwachin -open_file.title=Tijaq yakb'äl +open_file.title=Tijaq Yakb'äl open_file_label=Tijaq print.title=Titz'ajb'äx print_label=Titz'ajb'äx @@ -48,16 +48,12 @@ bookmark_label=Rutzub'al wakami tools.title=Samajib'äl tools_label=Samajib'äl first_page.title=Tib'e pa nab'ey ruxaq -first_page.label=Tib'e pa nab'ey ruxaq first_page_label=Tib'e pa nab'ey ruxaq last_page.title=Tib'e pa ruk'isib'äl ruxaq -last_page.label=Tib'e pa ruk'isib'äl ruxaq last_page_label=Tib'e pa ruk'isib'äl ruxaq page_rotate_cw.title=Tisutïx pan ajkiq'a' -page_rotate_cw.label=Tisutïx pan ajkiq'a' page_rotate_cw_label=Tisutïx pan ajkiq'a' page_rotate_ccw.title=Tisutïx pan ajxokon -page_rotate_ccw.label=Tisutïx pan ajxokon page_rotate_ccw_label=Tisutïx pan ajxokon cursor_text_select_tool.title=Titzij ri rusamajib'al Rucha'ik Rucholajem Tzij @@ -111,7 +107,7 @@ document_properties_page_size_orientation_landscape=rukotz'olem document_properties_page_size_name_a3=A3 document_properties_page_size_name_a4=A4 document_properties_page_size_name_letter=Loman wuj -document_properties_page_size_name_legal=Nïm wuj +document_properties_page_size_name_legal=Taqanel tzijol # LOCALIZATION NOTE (document_properties_page_size_dimension_string): # "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by # the size, respectively their unit of measurement and orientation, of the (current) page. @@ -137,17 +133,24 @@ print_progress_close=Tiq'at # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Tijal ri ajxikin kajtz'ik -toggle_sidebar_notification.title=Tik'ex ri ajxikin yuqkajtz'ik (ri wuj eruk'wan taq ruchi'/taqoj taq yakb'äl) +toggle_sidebar_notification2.title=Tik'ex ri ajxikin yuqkajtz'ik (ri wuj eruk'wan taq ruchi'/taqo/kuchuj) toggle_sidebar_label=Tijal ri ajxikin kajtz'ik document_outline.title=Tik'ut pe ruch'akulal wuj (kamul-pitz'oj richin nirik'/nich'utinirisäx ronojel ruch'akulal) document_outline_label=Ruch'akulal wuj -attachments.title=Kek'ut pe taq taqoj +attachments.title=Kek'ut pe ri taq taqoj attachments_label=Taq taqoj +layers.title=Kek'ut taq Kuchuj (ka'i'-pitz' richin yetzolïx ronojel ri taq kuchuj e k'o wi) +layers_label=Taq kuchuj thumbs.title=Kek'ut pe taq ch'utiq thumbs_label=Koköj +current_outline_item.title=Kekanöx Taq Ch'akulal Kik'wan Chib'äl +current_outline_item_label=Taq Ch'akulal Kik'wan Chib'äl findbar.title=Tikanöx chupam ri wuj findbar_label=Tikanöx +additional_layers=Tz'aqat ta Kuchuj +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Ruxaq {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -214,13 +217,13 @@ rendering_error=Xk'ulwachitäj jun sachoj toq ninuk'wachij ri ruxaq. page_scale_width=Ruwa ruxaq page_scale_fit=Tinuk' ruxaq page_scale_auto=Yonil chi nimilem -page_scale_actual=Runimilem +page_scale_actual=Runimilem Wakami # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Sachoj +loading=Nisamäj… loading_error=\u0020Xk'ulwachitäj jun sach'oj toq xnuk'ux ri PDF . invalid_file_error=Man oke ta o yujtajinäq ri PDF yakb'äl. missing_file_error=Man xilitäj ta ri PDF yakb'äl. @@ -243,4 +246,3 @@ password_cancel=Tiq'at printing_not_supported=Rutzijol k'ayewal: Ri rutz'ajb'axik man koch'el ta ronojel pa re okik'amaya'l re'. printing_not_ready=Rutzijol k'ayewal: Ri PDF man xusamajij ta ronojel richin nitz'ajb'äx. web_fonts_disabled=E chupül ri taq ajk'amaya'l tz'ib': man tikirel ta nokisäx ri taq tz'ib' PDF pa ch'ikenïk -document_colors_not_allowed=Ri taq wuj pa PDF man ya'on ta q'ij chi ke richin nikokisaj ri taq kib'onil: “Tiya' q'ij chi ke ri taq ruxaq chi kekicha' ri taq kib'onil” chupun pa ri awokik'amaya'l. diff --git a/addons/web/static/lib/pdfjs/web/locale/ckb/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ckb/viewer.properties new file mode 100644 index 00000000000..b30cb76720a --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/locale/ckb/viewer.properties @@ -0,0 +1,233 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=پەڕەی پێشوو +previous_label=پێشوو +next.title=پەڕەی دوواتر +next_label=دوواتر + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=پەرە +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=لە {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} لە {{pagesCount}}) + +zoom_out.title=ڕۆچوونی +zoom_out_label=ڕۆچوونی +zoom_in.title=هێنانەپێش +zoom_in_label=هێنانەپێش +zoom.title=زووم +presentation_mode.title=گۆڕین بۆ دۆخی پێشکەشکردن +presentation_mode_label=دۆخی پێشکەشکردن +open_file.title=پەڕگە بکەرەوە +open_file_label=کردنەوە +print.title=چاپکردن +print_label=چاپکردن +download.title=داگرتن +download_label=داگرتن +bookmark.title=پێشبینینی ئێستا(لەبەریبگرەوە یان پەنجەرەیەکی نوێ بکەرەوە) +bookmark_label=پیشبینینی ئێستا + +# Secondary toolbar and context menu +tools.title=ئامرازەکان +tools_label=ئامرازەکان +first_page.title=برۆ بۆ یەکەم پەڕە +first_page_label=بڕۆ بۆ یەکەم پەڕە +last_page.title=بڕۆ بۆ کۆتا پەڕە +last_page_label=بڕۆ بۆ کۆتا پەڕە +page_rotate_cw.title=ئاڕاستەی میلی کاتژمێر +page_rotate_cw_label=ئاڕاستەی میلی کاتژمێر +page_rotate_ccw.title=پێچەوانەی میلی کاتژمێر +page_rotate_ccw_label=پێچەوانەی میلی کاتژمێر + +cursor_text_select_tool.title=توڵامرازی نیشانکەری دەق چالاک بکە +cursor_text_select_tool_label=توڵامرازی نیشانکەری دەق +cursor_hand_tool.title=توڵامرازی دەستی چالاک بکە +cursor_hand_tool_label=توڵامرازی دەستی + +scroll_vertical.title=ناردنی ئەستوونی بەکاربێنە +scroll_vertical_label=ناردنی ئەستوونی +scroll_horizontal.title=ناردنی ئاسۆیی بەکاربێنە +scroll_horizontal_label=ناردنی ئاسۆیی +scroll_wrapped.title=ناردنی لوولکراو بەکاربێنە +scroll_wrapped_label=ناردنی لوولکراو + + +# Document properties dialog box +document_properties.title=تایبەتمەندییەکانی بەڵگەنامە... +document_properties_label=تایبەتمەندییەکانی بەڵگەنامە... +document_properties_file_name=ناوی پەڕگە: +document_properties_file_size=قەبارەی پەڕگە: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} کب ({{size_b}} بایت) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} مب ({{size_b}} بایت) +document_properties_title=سەردێڕ: +document_properties_author=نووسەر +document_properties_subject=بابەت: +document_properties_keywords=کلیلەوشە: +document_properties_creation_date=بەرواری درووستکردن: +document_properties_modification_date=بەرواری دەستکاریکردن: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=درووستکەر: +document_properties_producer=بەرهەمهێنەری PDF: +document_properties_version=وەشانی PDF: +document_properties_page_count=ژمارەی پەرەکان: +document_properties_page_size=قەبارەی پەڕە: +document_properties_page_size_unit_inches=ئینچ +document_properties_page_size_unit_millimeters=ملم +document_properties_page_size_orientation_portrait=پۆرترەیت(درێژ) +document_properties_page_size_orientation_landscape=پانیی +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=نامە +document_properties_page_size_name_legal=یاسایی +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=پیشاندانی وێبی خێرا: +document_properties_linearized_yes=بەڵێ +document_properties_linearized_no=نەخێر +document_properties_close=داخستن + +print_progress_message=بەڵگەنامە ئامادەدەکرێت بۆ چاپکردن... +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=پاشگەزبوونەوە + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=لاتەنیشت پیشاندان/شاردنەوە +toggle_sidebar_label=لاتەنیشت پیشاندان/شاردنەوە +document_outline_label=سنووری چوارچێوە +attachments.title=پاشکۆکان پیشان بدە +attachments_label=پاشکۆکان +layers_label=چینەکان +thumbs.title=وێنۆچکە پیشان بدە +thumbs_label=وێنۆچکە +findbar.title=لە بەڵگەنامە بگەرێ +findbar_label=دۆزینەوە + +additional_layers=چینی زیاتر +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=پەڕەی {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=وێنۆچکەی پەڕەی {{page}} + +# Find panel button title and messages +find_input.title=دۆزینەوە +find_input.placeholder=لە بەڵگەنامە بگەرێ... +find_previous.title=هەبوونی پێشوو بدۆزرەوە لە ڕستەکەدا +find_previous_label=پێشوو +find_next.title=هەبوونی داهاتوو بدۆزەرەوە لە ڕستەکەدا +find_next_label=دوواتر +find_highlight=هەمووی نیشانە بکە +find_match_case_label=دۆخی لەیەکچوون +find_entire_word_label=هەموو وشەکان +find_reached_top=گەشتیتە سەرەوەی بەڵگەنامە، لە خوارەوە دەستت پێکرد +find_reached_bottom=گەشتیتە کۆتایی بەڵگەنامە. لەسەرەوە دەستت پێکرد +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} لە کۆی {{total}} لەیەکچوو +find_match_count[two]={{current}} لە کۆی {{total}} لەیەکچوو +find_match_count[few]={{current}} لە کۆی {{total}} لەیەکچوو +find_match_count[many]={{current}} لە کۆی {{total}} لەیەکچوو +find_match_count[other]={{current}} لە کۆی {{total}} لەیەکچوو +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=زیاتر لە {{limit}} لەیەکچوو +find_match_count_limit[one]=زیاتر لە {{limit}} لەیەکچوو +find_match_count_limit[two]=زیاتر لە {{limit}} لەیەکچوو +find_match_count_limit[few]=زیاتر لە {{limit}} لەیەکچوو +find_match_count_limit[many]=زیاتر لە {{limit}} لەیەکچوو +find_match_count_limit[other]=زیاتر لە {{limit}} لەیەکچوو +find_not_found=نووسین نەدۆزرایەوە + +# Error panel labels +error_more_info=زانیاری زیاتر +error_less_info=زانیاری کەمتر +error_close=داخستن +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=پەیام: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=لەسەریەک: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=پەڕگە: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=هێڵ: {{line}} +rendering_error=هەڵەیەک ڕوویدا لە کاتی پوختەکردنی (ڕێندەر) پەڕە. + +# Predefined zoom values +page_scale_width=پانی پەڕە +page_scale_fit=پڕبوونی پەڕە +page_scale_auto=زوومی خۆکار +page_scale_actual=قەبارەی ڕاستی +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=هەڵەیەک ڕوویدا لە کاتی بارکردنی PDF. +invalid_file_error=پەڕگەی pdf تێکچووە یان نەگونجاوە. +missing_file_error=پەڕگەی pdf بوونی نیە. +unexpected_response_error=وەڵامی ڕاژەخوازی نەخوازراو. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} سەرنج] +password_label=وشەی تێپەڕ بنووسە بۆ کردنەوەی پەڕگەی pdf. +password_invalid=وشەی تێپەڕ هەڵەیە. تکایە دووبارە هەوڵ بدەرەوە. +password_ok=باشە +password_cancel=پاشگەزبوونەوە + +printing_not_supported=ئاگاداربە: چاپکردن بە تەواوی پشتگیر ناکرێت لەم وێبگەڕە. +printing_not_ready=ئاگاداربە: PDF بە تەواوی بارنەبووە بۆ چاپکردن. +web_fonts_disabled=جۆرەپیتی وێب ناچالاکە: نەتوانی جۆرەپیتی تێخراوی ناو pdfـەکە بەکاربێت. diff --git a/addons/web/static/lib/pdfjs/web/locale/crh/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/crh/viewer.properties deleted file mode 100644 index c6ba334d263..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/crh/viewer.properties +++ /dev/null @@ -1,242 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Evvelki Saife -previous_label=Evvelki -next.title=Soñraki Saife -next_label=Soñraki - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Saife -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=/ {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} / {{pagesCount}}) - -zoom_out.title=Uzaqlaștır -zoom_out_label=Uzaqlaștır -zoom_in.title=Yaqınlaştır -zoom_in_label=Yaqınlaştır -zoom.title=Miqyasla -presentation_mode.title=Taqdim Tarzına Almaş -presentation_mode_label=Taqdim Tarzı -open_file.title=Dosye Aç -open_file_label=Aç -print.title=Bastır -print_label=Bastır -download.title=Endir -download_label=Endir -bookmark.title=Cari körünim (kopiyala yaki yañı pencerede aç) -bookmark_label=Cari körünim - -# Secondary toolbar and context menu -tools.title=Aletler -tools_label=Aletler -first_page.title=İlk Saifege Bar -first_page.label=İlk Saifege Bar -first_page_label=İlk Saifege Bar -last_page.title=Soñ Saifege Bar -last_page.label=Soñ Saifege Bar -last_page_label=Soñ Saifege Bar -page_rotate_cw.title=Saat Yönünde Devrettir -page_rotate_cw.label=Saat Yönünde Aylandır -page_rotate_cw_label=Saat Yönünde Aylandır -page_rotate_ccw.title=Saat Yönüniñ Tersine Devrettir -page_rotate_ccw.label=Saat Yönüniñ Tersine Aylandır -page_rotate_ccw_label=Saat Yönüniñ Tersine Aylandır - -cursor_text_select_tool.title=Metin Saylamı Aletini Qabilleştir -cursor_text_select_tool_label=Metin Saylamı Aleti -cursor_hand_tool.title=El Aletini Qabilleştir -cursor_hand_tool_label=El Aleti - -scroll_vertical.title=Şaquliy Taydırmanı Qullan -scroll_vertical_label=Şaquliy Taydırma -scroll_horizontal.title=Ufqiy Taydırmanı Qullan -scroll_horizontal_label=Ufqiy Taydırma -scroll_wrapped.title=Türülgen Taydırmanı Qullan -scroll_wrapped_label=Türülgen Taydırma - -spread_none.title=Saife yaymalarını qoşma -spread_none_label=Yaymasız -spread_odd.title=Saife yaymalarını tek-sayılı saifeler ile başlayaraq qoş -spread_odd_label=Tek Yaymalar -spread_even.title=Saife yaymalarını çift-sayılı saifeler ile başlayaraq qoş -spread_even_label=Çift Yaymalar - -# Document properties dialog box -document_properties.title=Vesiqa Hasiyetleri… -document_properties_label=Vesiqa Hasiyetleri… -document_properties_file_name=Dosye adı: -document_properties_file_size=Dosye ölçüsi: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bayt) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bayt) -document_properties_title=Serleva: -document_properties_author=Müellif: -document_properties_subject=Mevzu: -document_properties_keywords=Anahtar-sözler: -document_properties_creation_date=İcat Tarihı: -document_properties_modification_date=Başqalaştırma Tarihi: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Mücit: -document_properties_producer=PDF İstisalcısı: -document_properties_version=PDF Sürümi: -document_properties_page_count=Saife Adedi: -document_properties_page_size=Saife Ölçüsi: -document_properties_page_size_unit_inches=düym -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=portret -document_properties_page_size_orientation_landscape=manzara -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Mektüp -document_properties_page_size_name_legal=Uquqiy -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Tez Ağ Körünimi: -document_properties_linearized_yes=Ebet -document_properties_linearized_no=Hayır -document_properties_close=Qapat - -print_progress_message=Vesiqa bastırılmağa azırlanıla… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent=%{{progress}} -print_progress_close=Vazgeç - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Yan-çubuqnı Tönter -toggle_sidebar_notification.title=Yançubuqnı Tönter (vesiqa tış-hizanı/ilişiklerni ihtiva ete) -toggle_sidebar_label=Yan-çubuqnı Tönter -document_outline.title=Vesiqa Tış-hizasını Köster (unsurlarnıñ episini cayıldırmaq/eştirmek içün çifte-çertiñiz) -document_outline_label=Vesiqa Tış-hizası -attachments.title=İlişiklerni Köster -attachments_label=İlişikler -thumbs.title=Tırnaq-Resimlerni Köster -thumbs_label=Tırnaq-Resimler -findbar.title=Vesiqada Tap -findbar_label=Tap - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Saife {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}}. Saifeniñ Tırnaq-Resmi - -# Find panel button title and messages -find_input.title=Tap -find_input.placeholder=Vesiqada tap… -find_previous.title=İbareniñ evvelki rastkelişini tap -find_previous_label=Evvelki -find_next.title=İbareniñ soñraki rastkelişini tap -find_next_label=Soñraki -find_highlight=Episini ışıqlandır -find_match_case_label=Büyük-ufaq hassasiyeti -find_entire_word_label=Bütün sözler -find_reached_top=Saifeniñ töpesi irişildi, tüpten devam etildi -find_reached_bottom=Saifeniñ soñu irişildi, töpeden devam etildi -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{total}} eşleşmeden {{current}} eşleşme -find_match_count[two]={{total}} eşleşmeden {{current}}. eşleşme -find_match_count[few]={{total}} eşleşmeden {{current}}. eşleşme -find_match_count[many]={{total}} eşleşmeden {{current}}. eşleşme -find_match_count[other]={{total}} eşleşmeden {{current}}. eşleşme -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]={{limit}} eşleşmeden fazla -find_match_count_limit[one]={{limit}} eşleşmeden fazla -find_match_count_limit[two]={{limit}} eşleşmeden fazla -find_match_count_limit[few]={{limit}} eşleşmeden fazla -find_match_count_limit[many]={{limit}} eşleşmeden fazla -find_match_count_limit[other]={{limit}} eşleşmeden fazla -find_not_found=İbare tapılmadı - -# Error panel labels -error_more_info=Daa Çoq Malümat -error_less_info=Daa Az Malümat -error_close=Qapat -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js s{{version}} (inşa: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mesaj: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Çeren: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Dosye: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Satır: {{line}} -rendering_error=Saife qılınğanda bir hata ortağa çıqtı. - -# Predefined zoom values -page_scale_width=Saife Kenişligi -page_scale_fit=Saifeni Sığdır -page_scale_auto=Öz-özünden Miqyasla -page_scale_actual=Fiiliy Ölçü -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent=%{{scale}} - -# Loading indicator messages -loading_error_indicator=Hata -loading_error=PDF yüklengende bir hata ortağa çıqtı. -invalid_file_error=Keçersiz yaki ifsat etilgen PDF dosyesi. -missing_file_error=Eksik PDF dosyesi. -unexpected_response_error=Beklenmegen sunucı cevabı. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Notlandırması] -password_label=Bu PDF dosyesini açmaq içün sır-sözni kirsetiñiz. -password_invalid=Keçersiz sır-söz. Lütfen yañıdan deñeñiz. -password_ok=Tamam -password_cancel=Vazgeç - -printing_not_supported=Tenbi: Bastıruv bu kezici tarafından tam olaraq desteklenmey. -printing_not_ready=Tenbi: PDF bastıruv içün bütünley yüklengen degildir. -web_fonts_disabled=Ağ urufatları naqabildir: içeri-yatqızılğan PDF urufatları qullanılalmay. -document_colors_not_allowed=PDF vesiqalarınıñ öz tüslerini qullanması caiz degildir: “Saifelerge öz tüslerini seçmege izin ber” kezicide ğayrıfaalleştirilgendir. diff --git a/addons/web/static/lib/pdfjs/web/locale/cs/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/cs/viewer.properties index 1dd8a36cad3..1bf8f00b399 100644 --- a/addons/web/static/lib/pdfjs/web/locale/cs/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/cs/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Současný pohled tools.title=Nástroje tools_label=Nástroje first_page.title=Přejde na první stránku -first_page.label=Přejít na první stránku first_page_label=Přejít na první stránku last_page.title=Přejde na poslední stránku -last_page.label=Přejít na poslední stránku last_page_label=Přejít na poslední stránku page_rotate_cw.title=Otočí po směru hodin -page_rotate_cw.label=Otočit po směru hodin page_rotate_cw_label=Otočit po směru hodin page_rotate_ccw.title=Otočí proti směru hodin -page_rotate_ccw.label=Otočit proti směru hodin page_rotate_ccw_label=Otočit proti směru hodin cursor_text_select_tool.title=Povolí výběr textu @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Výběr textu cursor_hand_tool.title=Povolí nástroj ručička cursor_hand_tool_label=Nástroj ručička +scroll_page.title=Posouvat po stránkách +scroll_page_label=Posouvání po stránkách scroll_vertical.title=Použít svislé posouvání scroll_vertical_label=Svislé posouvání scroll_horizontal.title=Použít vodorovné posouvání @@ -137,17 +135,24 @@ print_progress_close=Zrušit # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Postranní lišta -toggle_sidebar_notification.title=Přepne postranní lištu (dokument obsahuje osnovu/přílohy) +toggle_sidebar_notification2.title=Přepnout postranní lištu (dokument obsahuje osnovu/přílohy/vrstvy) toggle_sidebar_label=Postranní lišta -document_outline.title=Zobrazí osnovu dokumentu (dvojité klepnutí rozbalí/sbalí všechny položky) +document_outline.title=Zobrazí osnovu dokumentu (poklepání přepne zobrazení všech položek) document_outline_label=Osnova dokumentu attachments.title=Zobrazí přílohy attachments_label=Přílohy +layers.title=Zobrazit vrstvy (poklepáním obnovíte všechny vrstvy do výchozího stavu) +layers_label=Vrstvy thumbs.title=Zobrazí náhledy thumbs_label=Náhledy +current_outline_item.title=Najít aktuální položku v osnově +current_outline_item_label=Aktuální položka v osnově findbar.title=Najde v dokumentu findbar_label=Najít +additional_layers=Další vrstvy +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Strana {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Najde další výskyt hledaného textu find_next_label=Další find_highlight=Zvýraznit find_match_case_label=Rozlišovat velikost +find_match_diacritics_label=Rozlišovat diakritiku find_entire_word_label=Celá slova find_reached_top=Dosažen začátek dokumentu, pokračuje se od konce find_reached_bottom=Dosažen konec dokumentu, pokračuje se od začátku @@ -217,10 +223,10 @@ page_scale_auto=Automatická velikost page_scale_actual=Skutečná velikost # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. -page_scale_percent={{scale}}% +page_scale_percent={{scale}} % # Loading indicator messages -loading_error_indicator=Chyba +loading=Načítání… loading_error=Při nahrávání PDF nastala chyba. invalid_file_error=Neplatný nebo chybný soubor PDF. missing_file_error=Chybí soubor PDF. @@ -243,4 +249,31 @@ password_cancel=Zrušit printing_not_supported=Upozornění: Tisk není v tomto prohlížeči plně podporován. printing_not_ready=Upozornění: Dokument PDF není kompletně načten. web_fonts_disabled=Webová písma jsou zakázána, proto není možné použít vložená písma PDF. -document_colors_not_allowed=PDF dokumenty nemají povoleno používat vlastní barvy: volba 'Povolit stránkám používat vlastní barvy' je v prohlížeči deaktivována. + +# Editor +editor_none.title=Zakázat úpravy anotací +editor_none_label=Zakázat úpravy +editor_free_text.title=Přidat textovou anotaci +editor_free_text_label=Textová anotace +editor_ink.title=Přidat psanou anotaci +editor_ink_label=Psaná anotace + +free_text_default_content=Zadejte text… + +# Editor Parameters +editor_free_text_font_color=Barva písma +editor_free_text_font_size=Velikost písma +editor_ink_line_color=Barva čáry +editor_ink_line_thickness=Tloušťka čáry + +# Editor Parameters +editor_free_text_color=Barva +editor_free_text_size=Velikost +editor_ink_color=Barva +editor_ink_thickness=Tloušťka +editor_ink_opacity=Průhlednost + +# Editor aria +editor_free_text_aria_label=Editor textu +editor_ink_aria_label=Editor psaní rukou +editor_ink_canvas_aria_label=Uživatelem vytvořený obrázek diff --git a/addons/web/static/lib/pdfjs/web/locale/csb/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/csb/viewer.properties deleted file mode 100644 index 293a353c149..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/csb/viewer.properties +++ /dev/null @@ -1,134 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pòprzédnô strona -previous_label=Pòprzédnô -next.title=Nôslédnô strona -next_label=Nôslédnô - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Strona: -page_of=z {{pageCount}} - -zoom_out.title=Zmniészë -zoom_out_label=Zmniészë -zoom_in.title=Zwikszë -zoom_in_label=Wiôlgòsc -zoom.title=Wiôlgòsc -print.title=Drëkùjë -print_label=Drëkùjë -presentation_mode.title=Przéńdzë w trib prezentacje -presentation_mode_label=Trib prezentacje -open_file.title=Òtemkni lopk -open_file_label=Òtemkni -download.title=Zladënk -download_label=Zladënk -bookmark.title=Spamiãtôj wëzdrzatk (kòpérëje, abò òtemkni w nowim òknnie) -bookmark_label=Aktualny wëzdrzatk - -find_label=Szëkôj: -find_previous.title=Biéj do pòprzédnégò wënikù szëkbë -find_previous_label=Pòprzédny -find_next.title=Biéj do nôslédnégò wënikù szëkbë -find_next_label=Nôslédny -find_highlight=Pòdszkrzëni wszëtczé -find_match_case_label=Rozeznôwôj miarã lëterów -find_not_found=Nie nalôzł tekstu -find_reached_bottom=Doszedł do kùńca dokùmentu, zaczinającë òd górë -find_reached_top=Doszedł do pòczątkù dokùmentu, zaczinającë òd dołù - -toggle_sidebar.title=Pòsuwk wëbiérkù -toggle_sidebar_label=Pòsuwk wëbiérkù - -outline.title=Wëskrzëni òbcéch dokùmentu -outline_label=Òbcéch dokùmentu -thumbs.title=Wëskrzëni miniaturë -thumbs_label=Miniaturë -findbar.title=Przeszëkôj dokùment -findbar_label=Nalezë -tools_label=Nôrzãdła -first_page.title=Biéj do pierszi stronë -first_page.label=Biéj do pierszi stronë -last_page.label=Biéj do òstatny stronë -invalid_file_error=Lëchi ôrt, abò pòpsëti lopk PDF. - - - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Strona {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura stronë {{page}} - -# Error panel labels -error_more_info=Wicy infòrmacje -error_less_info=Mni infòrmacje -error_close=Close -error_version_info=PDF.js v{{version}} (build: {{build}}) - - -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Message: {{wiadło}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stóg}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{lopk}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Line: {{line}} -rendering_error=Pòkôza sã fela przë renderowanim stronë. - -# Predefined zoom values -page_scale_width=Szérzawa stronë -page_scale_fit=Dopasëje stronã -page_scale_auto=Aùtomatnô wiôlgòsc -page_scale_actual=Naturalnô wiôlgòsc - -# Loading indicator messages -# LOCALIZATION NOTE (error_line): "{{[percent}}" will be replaced with a percentage -loading_error_indicator=Fela -loading_error=Pòkôza sã fela przë wczëtiwanim PDFù. - -# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip. -# "{{[type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" - -request_password=PDF je zabezpieczony parolą: -printing_not_supported = Òstrzéga: przezérnik nie je do kùńca wspieróny przez drëkôrze - -# Context menu -page_rotate_cw.label=Òbkrãcë w prawò -page_rotate_ccw.label=Òbkrãcë w lewò - - -last_page.title=Biéj do pòprzédny stronë -last_page_label=Biéj do pòprzédny stronë -page_rotate_cw.title=Òbkrãcë w prawò -page_rotate_cw_label=Òbkrãcë w prawò -page_rotate_ccw.title=Òbkrãcë w lewò -page_rotate_ccw_label=Òbkrãcë w lewò - - -web_fonts_disabled=Sécowé czconczi są wëłączoné: włączë je, bë móc ùżiwac òsadzonëch czconków w lopkach PDF. - - -missing_file_error=Felëje lopka PDF. -printing_not_ready = Òstrzéga: lopk mùszi sã do kùńca wczëtac zanim gò mòże drëkòwac - -document_colors_disabled=Dokùmentë PDF nie mògą ù swòjich farwów: \'Pòzwòlë stronóm wëbierac swòje farwë\' je wëłączoné w przezérnikù. -invalid_password=Lëchô parola. -text_annotation_type.alt=[Adnotacjô {{type}}] - -tools.title=Tools -first_page_label=Go to First Page - - diff --git a/addons/web/static/lib/pdfjs/web/locale/cy/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/cy/viewer.properties index 45493a545c3..b5d06470918 100644 --- a/addons/web/static/lib/pdfjs/web/locale/cy/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/cy/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Golwg Gyfredol tools.title=Offer tools_label=Offer first_page.title=Mynd i'r Dudalen Gyntaf -first_page.label=Mynd i'r Dudalen Gyntaf first_page_label=Mynd i'r Dudalen Gyntaf last_page.title=Mynd i'r Dudalen Olaf -last_page.label=Mynd i'r Dudalen Olaf last_page_label=Mynd i'r Dudalen Olaf page_rotate_cw.title=Cylchdroi Clocwedd -page_rotate_cw.label=Cylchdroi Clocwedd page_rotate_cw_label=Cylchdroi Clocwedd page_rotate_ccw.title=Cylchdroi Gwrthglocwedd -page_rotate_ccw.label=Cylchdroi Gwrthglocwedd page_rotate_ccw_label=Cylchdroi Gwrthglocwedd cursor_text_select_tool.title=Galluogi Dewis Offeryn Testun @@ -65,19 +61,21 @@ cursor_text_select_tool_label=Offeryn Dewis Testun cursor_hand_tool.title=Galluogi Offeryn Llaw cursor_hand_tool_label=Offeryn Llaw +scroll_page.title=Defnyddio Sgrolio Tudalen +scroll_page_label=Sgrolio Tudalen scroll_vertical.title=Defnyddio Sgrolio Fertigol scroll_vertical_label=Sgrolio Fertigol -scroll_horizontal.title=Defnyddio Sgrolio Fertigol -scroll_horizontal_label=Sgrolio Fertigol +scroll_horizontal.title=Defnyddio Sgrolio Llorweddol +scroll_horizontal_label=Sgrolio Llorweddol scroll_wrapped.title=Defnyddio Sgrolio Amlapio scroll_wrapped_label=Sgrolio Amlapio -spread_none.title=Peidio uno taeniadau canol -spread_none_label=Dim Taeniadau -spread_odd.title=Uno taeniadau tudalen yn cychwyn gyda thudalennau odrif -spread_odd_label=Taeniadau Odrifau -spread_even.title=Uno taeniadau tudalen yn cychwyn gyda thudalennau eilrif -spread_even_label=Taeniadau Eilrif +spread_none.title=Peidio uno trawsdaleniadau +spread_none_label=Dim Trawsdaleniadau +spread_odd.title=Uno trawsdaleniadau gan gychwyn gyda thudalennau odrif +spread_odd_label=Trawsdaleniadau Odrif +spread_even.title=Uno trawsdaleniadau gan gychwyn gyda thudalennau eilrif +spread_even_label=Trawsdaleniadau Eilrif # Document properties dialog box document_properties.title=Priodweddau Dogfen… @@ -137,17 +135,24 @@ print_progress_close=Diddymu # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Toglo'r Bar Ochr -toggle_sidebar_notification.title=Toglo'r Bar Ochr (mae'r ddogfen yn cynnwys outline/attachments) +toggle_sidebar_notification2.title=Toglo'r Bar Ochr (mae'r ddogfen yn cynnwys amlinelliadau/atodiadau/haenau) toggle_sidebar_label=Toglo'r Bar Ochr document_outline.title=Dangos Amlinell Dogfen (clic dwbl i ymestyn/cau pob eitem) document_outline_label=Amlinelliad Dogfen attachments.title=Dangos Atodiadau attachments_label=Atodiadau +layers.title=Dangos Haenau (cliciwch ddwywaith i ailosod yr holl haenau i'r cyflwr rhagosodedig) +layers_label=Haenau thumbs.title=Dangos Lluniau Bach thumbs_label=Lluniau Bach +current_outline_item.title=Canfod yr Eitem Amlinellol Gyfredol +current_outline_item_label=Yr Eitem Amlinellol Gyfredol findbar.title=Canfod yn y Ddogfen findbar_label=Canfod +additional_layers=Haenau Ychwanegol +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Tudalen {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Canfod enghraifft nesaf yr ymadrodd find_next_label=Nesaf find_highlight=Amlygu popeth find_match_case_label=Cydweddu maint +find_match_diacritics_label=Diacritigau Cyfatebol find_entire_word_label=Geiriau cyfan find_reached_top=Wedi cyrraedd brig y dudalen, parhau o'r gwaelod find_reached_bottom=Wedi cyrraedd diwedd y dudalen, parhau o'r brig @@ -220,7 +226,7 @@ page_scale_actual=Maint Gwirioneddol page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Gwall +loading=Yn llwytho… loading_error=Digwyddodd gwall wrth lwytho'r PDF. invalid_file_error=Ffeil PDF annilys neu llwgr. missing_file_error=Ffeil PDF coll. @@ -243,4 +249,33 @@ password_cancel=Diddymu printing_not_supported=Rhybudd: Nid yw argraffu yn cael ei gynnal yn llawn gan y porwr. printing_not_ready=Rhybudd: Nid yw'r PDF wedi ei lwytho'n llawn ar gyfer argraffu. web_fonts_disabled=Ffontiau gwe wedi eu hanalluogi: methu defnyddio ffontiau PDF mewnblanedig. -document_colors_not_allowed=Nid oes caniatâd i ddogfennau PDF i ddefnyddio eu lliwiau eu hunain: Mae “Caniatáu i dudalennau ddefnyddio eu lliwiau eu hunain” wedi ei atal yn y porwr. + +# Editor +editor_none.title=Analluogi Golygu Anodi +editor_none_label=Analluogi Golygu +editor_free_text.title=Ychwanegu Anodiad Testun Rhydd +editor_free_text_label=Anodi Testun Rhydd +editor_ink.title=Ychwanegu Anodiad Inc +editor_ink_label=Ychwanegu Anodiad Inc + +freetext_default_content=Rhowch ychydig o destun… + +free_text_default_content=Rhowch destun… + +# Editor Parameters +editor_free_text_font_color=Lliw Ffont +editor_free_text_font_size=Maint Ffont +editor_ink_line_color=Lliw Llinell +editor_ink_line_thickness=Trwch Llinell + +# Editor Parameters +editor_free_text_color=Lliw +editor_free_text_size=Maint +editor_ink_color=Lliw +editor_ink_thickness=Trwch +editor_ink_opacity=Didreiddedd + +# Editor aria +editor_free_text_aria_label=Golygydd FreeText +editor_ink_aria_label=Golygydd Inc +editor_ink_canvas_aria_label=Delwedd wedi'i chreu gan ddefnyddwyr diff --git a/addons/web/static/lib/pdfjs/web/locale/da/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/da/viewer.properties index dce46725b63..213f4314f00 100644 --- a/addons/web/static/lib/pdfjs/web/locale/da/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/da/viewer.properties @@ -33,12 +33,12 @@ zoom_out_label=Zoom ud zoom_in.title=Zoom ind zoom_in_label=Zoom ind zoom.title=Zoom -print.title=Udskriv -print_label=Udskriv presentation_mode.title=Skift til fuldskærmsvisning presentation_mode_label=Fuldskærmsvisning open_file.title=Åbn fil open_file_label=Åbn +print.title=Udskriv +print_label=Udskriv download.title=Hent download_label=Hent bookmark.title=Aktuel visning (kopier eller åbn i et nyt vindue) @@ -48,16 +48,12 @@ bookmark_label=Aktuel visning tools.title=Funktioner tools_label=Funktioner first_page.title=Gå til første side -first_page.label=Gå til første side first_page_label=Gå til første side last_page.title=Gå til sidste side -last_page.label=Gå til sidste side last_page_label=Gå til sidste side page_rotate_cw.title=Roter med uret -page_rotate_cw.label=Roter med uret page_rotate_cw_label=Roter med uret page_rotate_ccw.title=Roter mod uret -page_rotate_ccw.label=Roter mod uret page_rotate_ccw_label=Roter mod uret cursor_text_select_tool.title=Aktiver markeringsværktøj @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Markeringsværktøj cursor_hand_tool.title=Aktiver håndværktøj cursor_hand_tool_label=Håndværktøj +scroll_page.title=Brug sidescrolling +scroll_page_label=Sidescrolling scroll_vertical.title=Brug vertikal scrolling scroll_vertical_label=Vertikal scrolling scroll_horizontal.title=Brug horisontal scrolling @@ -137,17 +135,24 @@ print_progress_close=Annuller # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Slå sidepanel til eller fra -toggle_sidebar_notification.title=Slå sidepanel til eller fra (dokumentet indeholder disposition/vedhæftede filer) +toggle_sidebar_notification2.title=Slå sidepanel til eller fra (dokumentet indeholder disposition/vedhæftede filer/lag) toggle_sidebar_label=Slå sidepanel til eller fra document_outline.title=Vis dokumentets disposition (dobbeltklik for at vise/skjule alle elementer) document_outline_label=Dokument-disposition attachments.title=Vis vedhæftede filer attachments_label=Vedhæftede filer +layers.title=Vis lag (dobbeltklik for at nulstille alle lag til standard-tilstanden) +layers_label=Lag thumbs.title=Vis miniaturer thumbs_label=Miniaturer +current_outline_item.title=Find det aktuelle dispositions-element +current_outline_item_label=Aktuelt dispositions-element findbar.title=Find i dokument findbar_label=Find +additional_layers=Yderligere lag +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Side {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Find den næste forekomst find_next_label=Næste find_highlight=Fremhæv alle find_match_case_label=Forskel på store og små bogstaver +find_match_diacritics_label=Diakritiske tegn find_entire_word_label=Hele ord find_reached_top=Toppen af siden blev nået, fortsatte fra bunden find_reached_bottom=Bunden af siden blev nået, fortsatte fra toppen @@ -220,7 +226,7 @@ page_scale_actual=Faktisk størrelse page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Fejl +loading=Indlæser… loading_error=Der opstod en fejl ved indlæsning af PDF-filen. invalid_file_error=PDF-filen er ugyldig eller ødelagt. missing_file_error=Manglende PDF-fil. @@ -243,4 +249,19 @@ password_cancel=Fortryd printing_not_supported=Advarsel: Udskrivning er ikke fuldt understøttet af browseren. printing_not_ready=Advarsel: PDF-filen er ikke fuldt indlæst til udskrivning. web_fonts_disabled=Webskrifttyper er deaktiverede. De indlejrede skrifttyper i PDF-filen kan ikke anvendes. -document_colors_not_allowed=PDF-dokumenter må ikke bruge deres egne farver: 'Tillad sider at vælge deres egne farver' er deaktiveret i browseren. + +# Editor +editor_none.title=Deaktiver redigering af anmærkninger +editor_none_label=Deaktiver redigering +editor_ink.title=Tilføj håndskreven anmærkning +editor_ink_label=Håndskreven anmærkning + +freetext_default_content=Indtast noget tekst… + +free_text_default_content=Indtast tekst… + +# Editor Parameters +editor_free_text_font_color=Skriftfarve +editor_free_text_font_size=Skriftstørrelse +editor_ink_line_color=Linjefarve +editor_ink_line_thickness=Linjetykkelse diff --git a/addons/web/static/lib/pdfjs/web/locale/de/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/de/viewer.properties index cea73190e6f..5afa6db2647 100644 --- a/addons/web/static/lib/pdfjs/web/locale/de/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/de/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Aktuelle Ansicht tools.title=Werkzeuge tools_label=Werkzeuge first_page.title=Erste Seite anzeigen -first_page.label=Erste Seite anzeigen first_page_label=Erste Seite anzeigen last_page.title=Letzte Seite anzeigen -last_page.label=Letzte Seite anzeigen last_page_label=Letzte Seite anzeigen page_rotate_cw.title=Im Uhrzeigersinn drehen -page_rotate_cw.label=Im Uhrzeigersinn drehen page_rotate_cw_label=Im Uhrzeigersinn drehen page_rotate_ccw.title=Gegen Uhrzeigersinn drehen -page_rotate_ccw.label=Gegen Uhrzeigersinn drehen page_rotate_ccw_label=Gegen Uhrzeigersinn drehen cursor_text_select_tool.title=Textauswahl-Werkzeug aktivieren @@ -65,11 +61,13 @@ cursor_text_select_tool_label=Textauswahl-Werkzeug cursor_hand_tool.title=Hand-Werkzeug aktivieren cursor_hand_tool_label=Hand-Werkzeug +scroll_page.title=Seiten einzeln anordnen +scroll_page_label=Einzelseitenanordnung scroll_vertical.title=Seiten übereinander anordnen scroll_vertical_label=Vertikale Seitenanordnung scroll_horizontal.title=Seiten nebeneinander anordnen scroll_horizontal_label=Horizontale Seitenanordnung -scroll_wrapped.title=Seiten neben- und übereinander anordnen, anhängig vom Platz +scroll_wrapped.title=Seiten neben- und übereinander anordnen, abhängig vom Platz scroll_wrapped_label=Kombinierte Seitenanordnung spread_none.title=Seiten nicht nebeneinander anzeigen @@ -130,24 +128,31 @@ document_properties_close=Schließen print_progress_message=Dokument wird für Drucken vorbereitet… # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. -print_progress_percent={{progress}}% +print_progress_percent={{progress}} % print_progress_close=Abbrechen # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Sidebar umschalten -toggle_sidebar_notification.title=Sidebar umschalten (Dokument enthält Dokumentstruktur/Anhänge) +toggle_sidebar_notification2.title=Sidebar umschalten (Dokument enthält Dokumentstruktur/Anhänge/Ebenen) toggle_sidebar_label=Sidebar umschalten document_outline.title=Dokumentstruktur anzeigen (Doppelklicken, um alle Einträge aus- bzw. einzuklappen) document_outline_label=Dokumentstruktur attachments.title=Anhänge anzeigen attachments_label=Anhänge +layers.title=Ebenen anzeigen (Doppelklicken, um alle Ebenen auf den Standardzustand zurückzusetzen) +layers_label=Ebenen thumbs.title=Miniaturansichten anzeigen thumbs_label=Miniaturansichten +current_outline_item.title=Aktuelles Struktur-Element finden +current_outline_item_label=Aktuelles Struktur-Element findbar.title=Dokument durchsuchen findbar_label=Suchen +additional_layers=Zusätzliche Ebenen +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Seite {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Nächstes Vorkommen des Suchbegriffs finden find_next_label=Weiter find_highlight=Alle hervorheben find_match_case_label=Groß-/Kleinschreibung beachten +find_match_diacritics_label=Akzente find_entire_word_label=Ganze Wörter find_reached_top=Anfang des Dokuments erreicht, fahre am Ende fort find_reached_bottom=Ende des Dokuments erreicht, fahre am Anfang fort @@ -217,10 +223,10 @@ page_scale_auto=Automatischer Zoom page_scale_actual=Originalgröße # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. -page_scale_percent={{scale}}% +page_scale_percent={{scale}} % # Loading indicator messages -loading_error_indicator=Fehler +loading=Wird geladen… loading_error=Beim Laden der PDF-Datei trat ein Fehler auf. invalid_file_error=Ungültige oder beschädigte PDF-Datei missing_file_error=Fehlende PDF-Datei @@ -243,4 +249,33 @@ password_cancel=Abbrechen printing_not_supported=Warnung: Die Drucken-Funktion wird durch diesen Browser nicht vollständig unterstützt. printing_not_ready=Warnung: Die PDF-Datei ist nicht vollständig geladen, dies ist für das Drucken aber empfohlen. web_fonts_disabled=Web-Schriftarten sind deaktiviert: Eingebettete PDF-Schriftarten konnten nicht geladen werden. -document_colors_not_allowed=PDF-Dokumenten ist es nicht erlaubt, ihre eigenen Farben zu verwenden: 'Seiten das Verwenden von eigenen Farben erlauben' ist im Browser deaktiviert. + +# Editor +editor_none.title=Bearbeiten von Annotationen deaktivieren +editor_none_label=Bearbeiten deaktivieren +editor_free_text.title=FreeText-Annotation hinzufügen +editor_free_text_label=FreeText-Annotation +editor_ink.title=Ink-Annotation hinzufügen +editor_ink_label=Ink-Annotation + +freetext_default_content=Text eingeben… + +free_text_default_content=Text eingeben… + +# Editor Parameters +editor_free_text_font_color=Schriftfarbe +editor_free_text_font_size=Schriftgröße +editor_ink_line_color=Linienfarbe +editor_ink_line_thickness=Liniendicke + +# Editor Parameters +editor_free_text_color=Farbe +editor_free_text_size=Größe +editor_ink_color=Farbe +editor_ink_thickness=Dicke +editor_ink_opacity=Deckkraft + +# Editor aria +editor_free_text_aria_label=FreeText-Editor +editor_ink_aria_label=Ink-Editor +editor_ink_canvas_aria_label=Vom Benutzer erstelltes Bild diff --git a/addons/web/static/lib/pdfjs/web/locale/dsb/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/dsb/viewer.properties new file mode 100644 index 00000000000..d7e5f1a4f13 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/locale/dsb/viewer.properties @@ -0,0 +1,281 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pjerwjejšny bok +previous_label=Slědk +next.title=Pśiducy bok +next_label=Dalej + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Bok +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=z {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} z {{pagesCount}}) + +zoom_out.title=Pómjeńšyś +zoom_out_label=Pómjeńšyś +zoom_in.title=Pówětšyś +zoom_in_label=Pówětšyś +zoom.title=Skalěrowanje +presentation_mode.title=Do prezentaciskego modusa pśejś +presentation_mode_label=Prezentaciski modus +open_file.title=Dataju wócyniś +open_file_label=Wócyniś +print.title=Śišćaś +print_label=Śišćaś +download.title=Ześěgnuś +download_label=Ześěgnuś +bookmark.title=Aktualny naglěd (kopěrowaś abo w nowem woknje wócyniś) +bookmark_label=Aktualny naglěd + +# Secondary toolbar and context menu +tools.title=Rědy +tools_label=Rědy +first_page.title=K prědnemu bokoju +first_page_label=K prědnemu bokoju +last_page.title=K slědnemu bokoju +last_page_label=K slědnemu bokoju +page_rotate_cw.title=Wobwjertnuś ako špěra źo +page_rotate_cw_label=Wobwjertnuś ako špěra źo +page_rotate_ccw.title=Wobwjertnuś nawopaki ako špěra źo +page_rotate_ccw_label=Wobwjertnuś nawopaki ako špěra źo + +cursor_text_select_tool.title=Rěd za wuběranje teksta zmóžniś +cursor_text_select_tool_label=Rěd za wuběranje teksta +cursor_hand_tool.title=Rucny rěd zmóžniś +cursor_hand_tool_label=Rucny rěd + +scroll_page.title=Kulanje boka wužywaś +scroll_page_label=Kulanje boka +scroll_vertical.title=Wertikalne suwanje wužywaś +scroll_vertical_label=Wertikalne suwanje +scroll_horizontal.title=Horicontalne suwanje wužywaś +scroll_horizontal_label=Horicontalne suwanje +scroll_wrapped.title=Pózlažke suwanje wužywaś +scroll_wrapped_label=Pózlažke suwanje + +spread_none.title=Boki njezwězaś +spread_none_label=Žeden dwójny bok +spread_odd.title=Boki zachopinajucy z njerownymi bokami zwězaś +spread_odd_label=Njerowne boki +spread_even.title=Boki zachopinajucy z rownymi bokami zwězaś +spread_even_label=Rowne boki + +# Document properties dialog box +document_properties.title=Dokumentowe kakosći… +document_properties_label=Dokumentowe kakosći… +document_properties_file_name=Mě dataje: +document_properties_file_size=Wjelikosć dataje: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bajtow) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajtow) +document_properties_title=Titel: +document_properties_author=Awtor: +document_properties_subject=Tema: +document_properties_keywords=Klucowe słowa: +document_properties_creation_date=Datum napóranja: +document_properties_modification_date=Datum změny: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Awtor: +document_properties_producer=PDF-gótowaŕ: +document_properties_version=PDF-wersija: +document_properties_page_count=Licba bokow: +document_properties_page_size=Wjelikosć boka: +document_properties_page_size_unit_inches=col +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=wusoki format +document_properties_page_size_orientation_landscape=prěcny format +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Jo +document_properties_linearized_no=Ně +document_properties_close=Zacyniś + +print_progress_message=Dokument pśigótujo se za śišćanje… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Pśetergnuś + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Bócnicu pokazaś/schowaś +toggle_sidebar_notification2.title=Bocnicu pśešaltowaś (dokument rozrědowanje/pśipiski/warstwy wopśimujo) +toggle_sidebar_label=Bócnicu pokazaś/schowaś +document_outline.title=Dokumentowe naraźenje pokazaś (dwójne kliknjenje, aby se wšykne zapiski pokazali/schowali) +document_outline_label=Dokumentowa struktura +attachments.title=Pśidanki pokazaś +attachments_label=Pśidanki +layers.title=Warstwy pokazaś (klikniśo dwójcy, aby wšykne warstwy na standardny staw slědk stajił) +layers_label=Warstwy +thumbs.title=Miniatury pokazaś +thumbs_label=Miniatury +current_outline_item.title=Aktualny rozrědowański zapisk pytaś +current_outline_item_label=Aktualny rozrědowański zapisk +findbar.title=W dokumenśe pytaś +findbar_label=Pytaś + +additional_layers=Dalšne warstwy +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Bok {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Bok {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura boka {{page}} + +# Find panel button title and messages +find_input.title=Pytaś +find_input.placeholder=W dokumenśe pytaś… +find_previous.title=Pjerwjejšne wustupowanje pytańskego wuraza pytaś +find_previous_label=Slědk +find_next.title=Pśidujuce wustupowanje pytańskego wuraza pytaś +find_next_label=Dalej +find_highlight=Wšykne wuzwignuś +find_match_case_label=Na wjelikopisanje źiwaś +find_match_diacritics_label=Diakritiske znamuška wužywaś +find_entire_word_label=Cełe słowa +find_reached_top=Zachopjeńk dokumenta dostany, pókšacujo se z kóńcom +find_reached_bottom=Kóńc dokumenta dostany, pókšacujo se ze zachopjeńkom +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} z {{total}} wótpowědnika +find_match_count[two]={{current}} z {{total}} wótpowědnikowu +find_match_count[few]={{current}} z {{total}} wótpowědnikow +find_match_count[many]={{current}} z {{total}} wótpowědnikow +find_match_count[other]={{current}} z {{total}} wótpowědnikow +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Wěcej ako {{limit}} wótpowědnikow +find_match_count_limit[one]=Wěcej ako {{limit}} wótpowědnik +find_match_count_limit[two]=Wěcej ako {{limit}} wótpowědnika +find_match_count_limit[few]=Wěcej ako {{limit}} wótpowědniki +find_match_count_limit[many]=Wěcej ako {{limit}} wótpowědnikow +find_match_count_limit[other]=Wěcej ako {{limit}} wótpowědnikow +find_not_found=Pytański wuraz njejo se namakał + +# Error panel labels +error_more_info=Wěcej informacijow +error_less_info=Mjenjej informacijow +error_close=Zacyniś +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Powěźenka: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Lisćina zawołanjow: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Dataja: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Smužka: {{line}} +rendering_error=Pśi zwobraznjanju boka jo zmólka nastała. + +# Predefined zoom values +page_scale_width=Šyrokosć boka +page_scale_fit=Wjelikosć boka +page_scale_auto=Awtomatiske skalěrowanje +page_scale_actual=Aktualna wjelikosć +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Zacytujo se… +loading_error=Pśi zacytowanju PDF jo zmólka nastała. +invalid_file_error=Njepłaśiwa abo wobškóźona PDF-dataja. +missing_file_error=Felujuca PDF-dataja. +unexpected_response_error=Njewócakane serwerowe wótegrono. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Typ pśipiskow: {{type}}] +password_label=Zapódajśo gronidło, aby PDF-dataju wócynił. +password_invalid=Njepłaśiwe gronidło. Pšosym wopytajśo hyšći raz. +password_ok=W pórěźe +password_cancel=Pśetergnuś + +printing_not_supported=Warnowanje: Śišćanje njepódpěra se połnje pśez toś ten wobglědowak. +printing_not_ready=Warnowanje: PDF njejo se za śišćanje dopołnje zacytał. +web_fonts_disabled=Webpisma su znjemóžnjone: njejo móžno, zasajźone PDF-pisma wužywaś. + +# Editor +editor_none.title=Wobźěłowanje anotacijow znjemóžniś +editor_none_label=Wobźěłowanje znjemóžniś +editor_free_text.title=Anotaciju FreeText pśidaś +editor_free_text_label=Anotacija FreeText +editor_ink.title=Tintowu anotaciju pśidaś +editor_ink_label=Tintowa anotacija + +freetext_default_content=Zapódajśo pitśku teksta… + +free_text_default_content=Tekst zapódaś… + +# Editor Parameters +editor_free_text_font_color=Pismowa barwa +editor_free_text_font_size=Pismowe wjelikosć +editor_ink_line_color=Linijowa barwa +editor_ink_line_thickness=Linijowa tłustosć + +# Editor Parameters +editor_free_text_color=Barwa +editor_free_text_size=Wjelikosć +editor_ink_color=Barwa +editor_ink_thickness=Tłustosć +editor_ink_opacity=Opacita + +# Editor aria +editor_free_text_aria_label=Dermotny tekstowy editor +editor_ink_aria_label=Tintowy editor +editor_ink_canvas_aria_label=Wobraz napórany wót wužywarja diff --git a/addons/web/static/lib/pdfjs/web/locale/el/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/el/viewer.properties index d7a6abc1069..cf60407f6c0 100644 --- a/addons/web/static/lib/pdfjs/web/locale/el/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/el/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Τρέχουσα προβολή tools.title=Εργαλεία tools_label=Εργαλεία first_page.title=Μετάβαση στην πρώτη σελίδα -first_page.label=Μετάβαση στην πρώτη σελίδα first_page_label=Μετάβαση στην πρώτη σελίδα last_page.title=Μετάβαση στην τελευταία σελίδα -last_page.label=Μετάβαση στην τελευταία σελίδα last_page_label=Μετάβαση στην τελευταία σελίδα page_rotate_cw.title=Δεξιόστροφη περιστροφή -page_rotate_cw.label=Δεξιόστροφη περιστροφή page_rotate_cw_label=Δεξιόστροφη περιστροφή page_rotate_ccw.title=Αριστερόστροφη περιστροφή -page_rotate_ccw.label=Αριστερόστροφη περιστροφή page_rotate_ccw_label=Αριστερόστροφη περιστροφή cursor_text_select_tool.title=Ενεργοποίηση εργαλείου επιλογής κειμένου @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Εργαλείο επιλογής κειμένου cursor_hand_tool.title=Ενεργοποίηση εργαλείου χεριού cursor_hand_tool_label=Εργαλείο χεριού +scroll_page.title=Χρήση κύλισης σελίδας +scroll_page_label=Κύλιση σελίδας scroll_vertical.title=Χρήση κάθετης κύλισης scroll_vertical_label=Κάθετη κύλιση scroll_horizontal.title=Χρήση οριζόντιας κύλισης @@ -93,7 +91,7 @@ document_properties_mb={{size_mb}} MB ({{size_b}} bytes) document_properties_title=Τίτλος: document_properties_author=Συγγραφέας: document_properties_subject=Θέμα: -document_properties_keywords=Λέξεις κλειδιά: +document_properties_keywords=Λέξεις-κλειδιά: document_properties_creation_date=Ημερομηνία δημιουργίας: document_properties_modification_date=Ημερομηνία τροποποίησης: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" @@ -105,7 +103,7 @@ document_properties_version=Έκδοση PDF: document_properties_page_count=Αριθμός σελίδων: document_properties_page_size=Μέγεθος σελίδας: document_properties_page_size_unit_inches=ίντσες -document_properties_page_size_unit_millimeters=χιλιοστά +document_properties_page_size_unit_millimeters=mm document_properties_page_size_orientation_portrait=κατακόρυφα document_properties_page_size_orientation_landscape=οριζόντια document_properties_page_size_name_a3=A3 @@ -131,30 +129,37 @@ print_progress_message=Προετοιμασία του εγγράφου για # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. print_progress_percent={{progress}}% -print_progress_close=Άκυρο +print_progress_close=Ακύρωση # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) -toggle_sidebar.title=(Απ)ενεργοποίηση πλευρικής στήλης -toggle_sidebar_notification.title=(Απ)ενεργοποίηση πλευρικής στήλης (το έγγραφο περιέχει περίγραμμα/συνημμένα) -toggle_sidebar_label=(Απ)ενεργοποίηση πλευρικής στήλης +toggle_sidebar.title=(Απ)ενεργοποίηση πλαϊνής γραμμής +toggle_sidebar_notification2.title=(Απ)ενεργοποίηση πλαϊνής γραμμής (το έγγραφο περιέχει περίγραμμα/συνημμένα/επίπεδα) +toggle_sidebar_label=(Απ)ενεργοποίηση πλαϊνής γραμμής document_outline.title=Εμφάνιση διάρθρωσης εγγράφου (διπλό κλικ για ανάπτυξη/σύμπτυξη όλων των στοιχείων) document_outline_label=Διάρθρωση εγγράφου -attachments.title=Προβολή συνημμένων +attachments.title=Εμφάνιση συνημμένων attachments_label=Συνημμένα -thumbs.title=Προβολή μικρογραφιών +layers.title=Εμφάνιση επιπέδων (διπλό κλικ για επαναφορά όλων των επιπέδων στην προεπιλεγμένη κατάσταση) +layers_label=Επίπεδα +thumbs.title=Εμφάνιση μικρογραφιών thumbs_label=Μικρογραφίες +current_outline_item.title=Εύρεση τρέχοντος στοιχείου διάρθρωσης +current_outline_item_label=Τρέχον στοιχείο διάρθρωσης findbar.title=Εύρεση στο έγγραφο findbar_label=Εύρεση +additional_layers=Επιπρόσθετα επίπεδα +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Σελίδα {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. thumb_page_title=Σελίδα {{page}} # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. -thumb_page_canvas=Μικρογραφία της σελίδας {{page}} +thumb_page_canvas=Μικρογραφία σελίδας {{page}} # Find panel button title and messages find_input.title=Εύρεση @@ -164,10 +169,11 @@ find_previous_label=Προηγούμενο find_next.title=Εύρεση της επόμενης εμφάνισης της φράσης find_next_label=Επόμενο find_highlight=Επισήμανση όλων -find_match_case_label=Ταίριασμα χαρακτήρα +find_match_case_label=Συμφωνία πεζών/κεφαλαίων +find_match_diacritics_label=Αντιστοίχιση διακριτικών find_entire_word_label=Ολόκληρες λέξεις -find_reached_top=Έλευση στην αρχή του εγγράφου, συνέχεια από το τέλος -find_reached_bottom=Έλευση στο τέλος του εγγράφου, συνέχεια από την αρχή +find_reached_top=Φτάσατε στην αρχή του εγγράφου, συνέχεια από το τέλος +find_reached_bottom=Φτάσατε στο τέλος του εγγράφου, συνέχεια από την αρχή # LOCALIZATION NOTE (find_match_count): The supported plural forms are # [one|two|few|many|other], with [other] as the default value. # "{{current}}" and "{{total}}" will be replaced by a number representing the @@ -197,7 +203,7 @@ error_less_info=Λιγότερες πληροφορίες error_close=Κλείσιμο # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be # replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) +error_version_info=PDF.js v{{version}} (έκδοση: {{build}}) # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an # english string describing the error. error_message=Μήνυμα: {{message}} @@ -208,7 +214,7 @@ error_stack=Στοίβα: {{stack}} error_file=Αρχείο: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Γραμμή: {{line}} -rendering_error=Προέκυψε σφάλμα κατά την ανάλυση της σελίδας. +rendering_error=Προέκυψε σφάλμα κατά την εμφάνιση της σελίδας. # Predefined zoom values page_scale_width=Πλάτος σελίδας @@ -220,8 +226,8 @@ page_scale_actual=Πραγματικό μέγεθος page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Σφάλμα -loading_error=Προέκυψε ένα σφάλμα κατά τη φόρτωση του PDF. +loading=Φόρτωση… +loading_error=Προέκυψε σφάλμα κατά τη φόρτωση του PDF. invalid_file_error=Μη έγκυρο ή κατεστραμμένο αρχείο PDF. missing_file_error=Λείπει αρχείο PDF. unexpected_response_error=Μη αναμενόμενη απόκριση από το διακομιστή. @@ -234,13 +240,42 @@ annotation_date_string={{date}}, {{time}} # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Σχόλιο] -password_label=Εισαγωγή κωδικού για το άνοιγμα του PDF αρχείου. -password_invalid=Μη έγκυρος κωδικός. Προσπαθείστε ξανά. -password_ok=ΟΚ +text_annotation_type.alt=[Σχόλιο «{{type}}»] +password_label=Εισαγάγετε τον κωδικό πρόσβασης για να ανοίξετε αυτό το αρχείο PDF. +password_invalid=Μη έγκυρος κωδικός πρόσβασης. Παρακαλώ δοκιμάστε ξανά. +password_ok=OK password_cancel=Ακύρωση -printing_not_supported=Προειδοποίηση: Η εκτύπωση δεν υποστηρίζεται πλήρως από αυτόν τον περιηγητή. +printing_not_supported=Προειδοποίηση: Η εκτύπωση δεν υποστηρίζεται πλήρως από το πρόγραμμα περιήγησης. printing_not_ready=Προειδοποίηση: Το PDF δεν φορτώθηκε πλήρως για εκτύπωση. -web_fonts_disabled=Οι γραμματοσειρές Web απενεργοποιημένες: αδυναμία χρήσης των ενσωματωμένων γραμματοσειρών PDF. -document_colors_not_allowed=Στα PDF έγγραφα δεν επιτρέπεται να χρησιμοποιούν τα δικά τους χρώματα: Το “Να επιτρέπεται στις σελίδες να επιλέγουν τα δικά τους χρώματα” είναι απενεργοποιημένο στον περιηγητή. +web_fonts_disabled=Οι γραμματοσειρές ιστού είναι ανενεργές: δεν είναι δυνατή η χρήση των ενσωματωμένων γραμματοσειρών PDF. + +# Editor +editor_none.title=Απενεργοποίηση επεξεργασίας σχολίων +editor_none_label=Απενεργοποίηση επεξεργασίας +editor_free_text.title=Προσθήκη σχολίου ελεύθερου κειμένου +editor_free_text_label=Σχόλιο ελεύθερου κειμένου +editor_ink.title=Προσθήκη σχολίου με μελάνι +editor_ink_label=Σχόλιο με μελάνι + +freetext_default_content=Εισαγάγετε κάποιο κείμενο… + +free_text_default_content=Εισαγάγετε κείμενο… + +# Editor Parameters +editor_free_text_font_color=Χρώμα γραμματοσειράς +editor_free_text_font_size=Μέγεθος γραμματοσειράς +editor_ink_line_color=Χρώμα γραμμής +editor_ink_line_thickness=Πάχος γραμμής + +# Editor Parameters +editor_free_text_color=Χρώμα +editor_free_text_size=Μέγεθος +editor_ink_color=Χρώμα +editor_ink_thickness=Πάχος +editor_ink_opacity=Αδιαφάνεια + +# Editor aria +editor_free_text_aria_label=Επεξεργασία ελεύθερου κειμένου +editor_ink_aria_label=Επεξεργασία γραφής μελανιού +editor_ink_canvas_aria_label=Εικόνα από τον χρήστη diff --git a/addons/web/static/lib/pdfjs/web/locale/en-CA/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/en-CA/viewer.properties index e52573b1067..786ad3a4b25 100644 --- a/addons/web/static/lib/pdfjs/web/locale/en-CA/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/en-CA/viewer.properties @@ -48,23 +48,21 @@ bookmark_label=Current View tools.title=Tools tools_label=Tools first_page.title=Go to First Page -first_page.label=Go to First Page first_page_label=Go to First Page last_page.title=Go to Last Page -last_page.label=Go to Last Page last_page_label=Go to Last Page page_rotate_cw.title=Rotate Clockwise -page_rotate_cw.label=Rotate Clockwise page_rotate_cw_label=Rotate Clockwise -page_rotate_ccw.title=Rotate Anti-Clockwise -page_rotate_ccw.label=Rotate Anti-Clockwise -page_rotate_ccw_label=Rotate Anti-Clockwise +page_rotate_ccw.title=Rotate Counterclockwise +page_rotate_ccw_label=Rotate Counterclockwise cursor_text_select_tool.title=Enable Text Selection Tool cursor_text_select_tool_label=Text Selection Tool cursor_hand_tool.title=Enable Hand Tool cursor_hand_tool_label=Hand Tool +scroll_page.title=Use Page Scrolling +scroll_page_label=Page Scrolling scroll_vertical.title=Use Vertical Scrolling scroll_vertical_label=Vertical Scrolling scroll_horizontal.title=Use Horizontal Scrolling @@ -137,17 +135,24 @@ print_progress_close=Cancel # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Toggle Sidebar -toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments) +toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers) toggle_sidebar_label=Toggle Sidebar document_outline.title=Show Document Outline (double-click to expand/collapse all items) document_outline_label=Document Outline attachments.title=Show Attachments attachments_label=Attachments +layers.title=Show Layers (double-click to reset all layers to the default state) +layers_label=Layers thumbs.title=Show Thumbnails thumbs_label=Thumbnails +current_outline_item.title=Find Current Outline Item +current_outline_item_label=Current Outline Item findbar.title=Find in Document findbar_label=Find +additional_layers=Additional Layers +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Page {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -163,9 +168,10 @@ find_previous.title=Find the previous occurrence of the phrase find_previous_label=Previous find_next.title=Find the next occurrence of the phrase find_next_label=Next -find_highlight=Highlight all -find_match_case_label=Match case -find_entire_word_label=Whole words +find_highlight=Highlight All +find_match_case_label=Match Case +find_match_diacritics_label=Match Diacritics +find_entire_word_label=Whole Words find_reached_top=Reached top of document, continued from bottom find_reached_bottom=Reached end of document, continued from top # LOCALIZATION NOTE (find_match_count): The supported plural forms are @@ -220,7 +226,7 @@ page_scale_actual=Actual Size page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Loading… loading_error=An error occurred while loading the PDF. invalid_file_error=Invalid or corrupted PDF file. missing_file_error=Missing PDF file. @@ -243,4 +249,21 @@ password_cancel=Cancel printing_not_supported=Warning: Printing is not fully supported by this browser. printing_not_ready=Warning: The PDF is not fully loaded for printing. web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. -document_colors_not_allowed=PDF documents are not allowed to use their own colours: “Allow pages to choose their own colours” is deactivated in the browser. + +# Editor +editor_none.title=Disable Annotation Editing +editor_none_label=Disable Editing +editor_free_text.title=Add FreeText Annotation +editor_free_text_label=FreeText Annotation +editor_ink.title=Add Ink Annotation +editor_ink_label=Ink Annotation + +freetext_default_content=Enter some text… + +free_text_default_content=Enter text… + +# Editor Parameters +editor_free_text_font_color=Font Colour +editor_free_text_font_size=Font Size +editor_ink_line_color=Line Colour +editor_ink_line_thickness=Line Thickness diff --git a/addons/web/static/lib/pdfjs/web/locale/en-GB/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/en-GB/viewer.properties index e52573b1067..c8cdaeeeed0 100644 --- a/addons/web/static/lib/pdfjs/web/locale/en-GB/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/en-GB/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Current View tools.title=Tools tools_label=Tools first_page.title=Go to First Page -first_page.label=Go to First Page first_page_label=Go to First Page last_page.title=Go to Last Page -last_page.label=Go to Last Page last_page_label=Go to Last Page page_rotate_cw.title=Rotate Clockwise -page_rotate_cw.label=Rotate Clockwise page_rotate_cw_label=Rotate Clockwise page_rotate_ccw.title=Rotate Anti-Clockwise -page_rotate_ccw.label=Rotate Anti-Clockwise page_rotate_ccw_label=Rotate Anti-Clockwise cursor_text_select_tool.title=Enable Text Selection Tool @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Text Selection Tool cursor_hand_tool.title=Enable Hand Tool cursor_hand_tool_label=Hand Tool +scroll_page.title=Use Page Scrolling +scroll_page_label=Page Scrolling scroll_vertical.title=Use Vertical Scrolling scroll_vertical_label=Vertical Scrolling scroll_horizontal.title=Use Horizontal Scrolling @@ -137,17 +135,24 @@ print_progress_close=Cancel # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Toggle Sidebar -toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments) +toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers) toggle_sidebar_label=Toggle Sidebar document_outline.title=Show Document Outline (double-click to expand/collapse all items) document_outline_label=Document Outline attachments.title=Show Attachments attachments_label=Attachments +layers.title=Show Layers (double-click to reset all layers to the default state) +layers_label=Layers thumbs.title=Show Thumbnails thumbs_label=Thumbnails +current_outline_item.title=Find Current Outline Item +current_outline_item_label=Current Outline Item findbar.title=Find in Document findbar_label=Find +additional_layers=Additional Layers +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Page {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -163,9 +168,10 @@ find_previous.title=Find the previous occurrence of the phrase find_previous_label=Previous find_next.title=Find the next occurrence of the phrase find_next_label=Next -find_highlight=Highlight all -find_match_case_label=Match case -find_entire_word_label=Whole words +find_highlight=Highlight All +find_match_case_label=Match Case +find_match_diacritics_label=Match Diacritics +find_entire_word_label=Whole Words find_reached_top=Reached top of document, continued from bottom find_reached_bottom=Reached end of document, continued from top # LOCALIZATION NOTE (find_match_count): The supported plural forms are @@ -220,7 +226,7 @@ page_scale_actual=Actual Size page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Loading… loading_error=An error occurred while loading the PDF. invalid_file_error=Invalid or corrupted PDF file. missing_file_error=Missing PDF file. @@ -243,4 +249,33 @@ password_cancel=Cancel printing_not_supported=Warning: Printing is not fully supported by this browser. printing_not_ready=Warning: The PDF is not fully loaded for printing. web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. -document_colors_not_allowed=PDF documents are not allowed to use their own colours: “Allow pages to choose their own colours” is deactivated in the browser. + +# Editor +editor_none.title=Disable Annotation Editing +editor_none_label=Disable Editing +editor_free_text.title=Add FreeText Annotation +editor_free_text_label=FreeText Annotation +editor_ink.title=Add Ink Annotation +editor_ink_label=Ink Annotation + +freetext_default_content=Enter some text… + +free_text_default_content=Enter text… + +# Editor Parameters +editor_free_text_font_color=Font Colour +editor_free_text_font_size=Font Size +editor_ink_line_color=Line Colour +editor_ink_line_thickness=Line Thickness + +# Editor Parameters +editor_free_text_color=Colour +editor_free_text_size=Size +editor_ink_color=Colour +editor_ink_thickness=Thickness +editor_ink_opacity=Opacity + +# Editor aria +editor_free_text_aria_label=FreeText Editor +editor_ink_aria_label=Ink Editor +editor_ink_canvas_aria_label=User-created image diff --git a/addons/web/static/lib/pdfjs/web/locale/en-US/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/en-US/viewer.properties index 2dd7751aaeb..4a95b937d89 100644 --- a/addons/web/static/lib/pdfjs/web/locale/en-US/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/en-US/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Current View tools.title=Tools tools_label=Tools first_page.title=Go to First Page -first_page.label=Go to First Page first_page_label=Go to First Page last_page.title=Go to Last Page -last_page.label=Go to Last Page last_page_label=Go to Last Page page_rotate_cw.title=Rotate Clockwise -page_rotate_cw.label=Rotate Clockwise page_rotate_cw_label=Rotate Clockwise page_rotate_ccw.title=Rotate Counterclockwise -page_rotate_ccw.label=Rotate Counterclockwise page_rotate_ccw_label=Rotate Counterclockwise cursor_text_select_tool.title=Enable Text Selection Tool @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Text Selection Tool cursor_hand_tool.title=Enable Hand Tool cursor_hand_tool_label=Hand Tool +scroll_page.title=Use Page Scrolling +scroll_page_label=Page Scrolling scroll_vertical.title=Use Vertical Scrolling scroll_vertical_label=Vertical Scrolling scroll_horizontal.title=Use Horizontal Scrolling @@ -137,17 +135,24 @@ print_progress_close=Cancel # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Toggle Sidebar -toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments) +toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers) toggle_sidebar_label=Toggle Sidebar document_outline.title=Show Document Outline (double-click to expand/collapse all items) document_outline_label=Document Outline attachments.title=Show Attachments attachments_label=Attachments +layers.title=Show Layers (double-click to reset all layers to the default state) +layers_label=Layers thumbs.title=Show Thumbnails thumbs_label=Thumbnails +current_outline_item.title=Find Current Outline Item +current_outline_item_label=Current Outline Item findbar.title=Find in Document findbar_label=Find +additional_layers=Additional Layers +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Page {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -163,9 +168,10 @@ find_previous.title=Find the previous occurrence of the phrase find_previous_label=Previous find_next.title=Find the next occurrence of the phrase find_next_label=Next -find_highlight=Highlight all -find_match_case_label=Match case -find_entire_word_label=Whole words +find_highlight=Highlight All +find_match_case_label=Match Case +find_match_diacritics_label=Match Diacritics +find_entire_word_label=Whole Words find_reached_top=Reached top of document, continued from bottom find_reached_bottom=Reached end of document, continued from top # LOCALIZATION NOTE (find_match_count): The supported plural forms are @@ -220,7 +226,7 @@ page_scale_actual=Actual Size page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Loading… loading_error=An error occurred while loading the PDF. invalid_file_error=Invalid or corrupted PDF file. missing_file_error=Missing PDF file. @@ -243,4 +249,23 @@ password_cancel=Cancel printing_not_supported=Warning: Printing is not fully supported by this browser. printing_not_ready=Warning: The PDF is not fully loaded for printing. web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. -document_colors_not_allowed=PDF documents are not allowed to use their own colors: “Allow pages to choose their own colors” is deactivated in the browser. + +# Editor +editor_free_text.title=Add FreeText Annotation +editor_free_text_label=FreeText Annotation +editor_ink.title=Add Ink Annotation +editor_ink_label=Ink Annotation + +free_text_default_content=Enter text… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Size +editor_ink_color=Color +editor_ink_thickness=Thickness +editor_ink_opacity=Opacity + +# Editor aria +editor_free_text_aria_label=FreeText Editor +editor_ink_aria_label=Ink Editor +editor_ink_canvas_aria_label=User-created image diff --git a/addons/web/static/lib/pdfjs/web/locale/eo/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/eo/viewer.properties index eb29495526b..77f8b9af79a 100644 --- a/addons/web/static/lib/pdfjs/web/locale/eo/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/eo/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Nuna vido tools.title=Iloj tools_label=Iloj first_page.title=Iri al la unua paĝo -first_page.label=Iri al la unua paĝo first_page_label=Iri al la unua paĝo last_page.title=Iri al la lasta paĝo -last_page.label=Iri al la lasta paĝo last_page_label=Iri al la lasta paĝo page_rotate_cw.title=Rotaciigi dekstrume -page_rotate_cw.label=Rotaciigi dekstrume page_rotate_cw_label=Rotaciigi dekstrume page_rotate_ccw.title=Rotaciigi maldekstrume -page_rotate_ccw.label=Rotaciigi maldekstrume page_rotate_ccw_label=Rotaciigi maldekstrume cursor_text_select_tool.title=Aktivigi tekstan elektilon @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Teksta elektilo cursor_hand_tool.title=Aktivigi ilon de mano cursor_hand_tool_label=Ilo de mano +scroll_page.title=Uzi ŝovadon de paĝo +scroll_page_label=Ŝovado de paĝo scroll_vertical.title=Uzi vertikalan ŝovadon scroll_vertical_label=Vertikala ŝovado scroll_horizontal.title=Uzi horizontalan ŝovadon @@ -137,17 +135,24 @@ print_progress_close=Nuligi # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Montri/kaŝi flankan strion -toggle_sidebar_notification.title=Montri/kaŝi flankan strion (la dokumento enhavas konturon/aneksaĵojn) +toggle_sidebar_notification2.title=Montri/kaŝi flankan strion (la dokumento enhavas konturon/kunsendaĵojn/tavolojn) toggle_sidebar_label=Montri/kaŝi flankan strion document_outline.title=Montri la konturon de dokumento (alklaku duoble por faldi/malfaldi ĉiujn elementojn) document_outline_label=Konturo de dokumento attachments.title=Montri kunsendaĵojn attachments_label=Kunsendaĵojn +layers.title=Montri tavolojn (duoble alklaku por remeti ĉiujn tavolojn en la norman staton) +layers_label=Tavoloj thumbs.title=Montri miniaturojn thumbs_label=Miniaturoj +current_outline_item.title=Trovi nunan konturan elementon +current_outline_item_label=Nuna kontura elemento findbar.title=Serĉi en dokumento findbar_label=Serĉi +additional_layers=Aldonaj tavoloj +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Paĝo {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Serĉi la venontan aperon de la frazo find_next_label=Antaŭen find_highlight=Elstarigi ĉiujn find_match_case_label=Distingi inter majuskloj kaj minuskloj +find_match_diacritics_label=Respekti supersignojn find_entire_word_label=Tutaj vortoj find_reached_top=Komenco de la dokumento atingita, daŭrigado ekde la fino find_reached_bottom=Fino de la dokumento atingita, daŭrigado ekde la komenco @@ -220,7 +226,7 @@ page_scale_actual=Reala grando page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Eraro +loading=Ŝargado… loading_error=Okazis eraro dum la ŝargado de la PDF dosiero. invalid_file_error=Nevalida aŭ difektita PDF dosiero. missing_file_error=Mankas dosiero PDF. @@ -243,4 +249,33 @@ password_cancel=Nuligi printing_not_supported=Averto: tiu ĉi retumilo ne plene subtenas presadon. printing_not_ready=Averto: la PDF dosiero ne estas plene ŝargita por presado. web_fonts_disabled=Neaktivaj teksaĵaj tiparoj: ne elbas uzi enmetitajn tiparojn de PDF. -document_colors_not_allowed=PDF dokumentoj ne rajtas uzi siajn proprajn kolorojn: 'Permesi al paĝoj uzi siajn proprajn kolorojn' ne estas aktiva en la retumilo. + +# Editor +editor_none.title=Malaktivigi modifon de notoj +editor_none_label=Malaktivigi modifon +editor_free_text.title=Aldoni tekstan noton +editor_free_text_label=Teksta noto +editor_ink.title=Aldoni desegnan noton +editor_ink_label=Desegna noto + +freetext_default_content=Tajpu tekston… + +free_text_default_content=Tajpu tekston… + +# Editor Parameters +editor_free_text_font_color=Tipara koloro +editor_free_text_font_size=Tipara grando +editor_ink_line_color=Linia koloro +editor_ink_line_thickness=Linia larĝo + +# Editor Parameters +editor_free_text_color=Koloro +editor_free_text_size=Grando +editor_ink_color=Koloro +editor_ink_thickness=Dikeco +editor_ink_opacity=Maldiafaneco + +# Editor aria +editor_free_text_aria_label=Teksta redaktilo +editor_ink_aria_label=Inka redaktilo +editor_ink_canvas_aria_label=Bildo kreita de uzanto diff --git a/addons/web/static/lib/pdfjs/web/locale/es-AR/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/es-AR/viewer.properties index 6f3662c7fed..6782eb869a3 100644 --- a/addons/web/static/lib/pdfjs/web/locale/es-AR/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/es-AR/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Vista actual tools.title=Herramientas tools_label=Herramientas first_page.title=Ir a primera página -first_page.label=Ir a primera página first_page_label=Ir a primera página last_page.title=Ir a última página -last_page.label=Ir a última página last_page_label=Ir a última página page_rotate_cw.title=Rotar horario -page_rotate_cw.label=Rotar horario page_rotate_cw_label=Rotar horario page_rotate_ccw.title=Rotar antihorario -page_rotate_ccw.label=Rotar antihorario page_rotate_ccw_label=Rotar antihorario cursor_text_select_tool.title=Habilitar herramienta de selección de texto @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Herramienta de selección de texto cursor_hand_tool.title=Habilitar herramienta mano cursor_hand_tool_label=Herramienta mano +scroll_page.title=Usar desplazamiento de página +scroll_page_label=Desplazamiento de página scroll_vertical.title=Usar desplazamiento vertical scroll_vertical_label=Desplazamiento vertical scroll_horizontal.title=Usar desplazamiento vertical @@ -137,17 +135,24 @@ print_progress_close=Cancelar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Alternar barra lateral -toggle_sidebar_notification.title=Intercambiar barra lateral (el documento contiene esquema/adjuntos) +toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) toggle_sidebar_label=Alternar barra lateral document_outline.title=Mostrar esquema del documento (doble clic para expandir/colapsar todos los ítems) document_outline_label=Esquema del documento attachments.title=Mostrar adjuntos attachments_label=Adjuntos +layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) +layers_label=Capas thumbs.title=Mostrar miniaturas thumbs_label=Miniaturas +current_outline_item.title=Buscar elemento de esquema actual +current_outline_item_label=Elemento de esquema actual findbar.title=Buscar en documento findbar_label=Buscar +additional_layers=Capas adicionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Buscar la siguiente aparición de la frase find_next_label=Siguiente find_highlight=Resaltar todo find_match_case_label=Coincidir mayúsculas +find_match_diacritics_label=Coincidir diacríticos find_entire_word_label=Palabras completas find_reached_top=Inicio de documento alcanzado, continuando desde abajo find_reached_bottom=Fin de documento alcanzando, continuando desde arriba @@ -220,7 +226,7 @@ page_scale_actual=Tamaño real page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Cargando… loading_error=Ocurrió un error al cargar el PDF. invalid_file_error=Archivo PDF no válido o cocrrupto. missing_file_error=Archivo PDF faltante. @@ -243,4 +249,33 @@ password_cancel=Cancelar printing_not_supported=Advertencia: La impresión no está totalmente soportada por este navegador. printing_not_ready=Advertencia: El PDF no está completamente cargado para impresión. web_fonts_disabled=Tipografía web deshabilitada: no se pueden usar tipos incrustados en PDF. -document_colors_not_allowed=Los documentos PDF no tienen permitido usar sus propios colores: 'Permitir a las páginas elegir sus propios colores' está desactivado en el navegador. + +# Editor +editor_none.title=Deshabilitar la edición de anotaciones +editor_none_label=Deshabilitar edición +editor_free_text.title=Agregar anotación FreeText +editor_free_text_label=Anotación FreeText +editor_ink.title=Agregar anotación de tinta +editor_ink_label=Anotación de tinta + +freetext_default_content=Ingresar algún texto… + +free_text_default_content=Ingresar texto… + +# Editor Parameters +editor_free_text_font_color=Color de letra +editor_free_text_font_size=Tamaño de letra +editor_ink_line_color=Color de linea +editor_ink_line_thickness=Grosor de línea + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Tamaño +editor_ink_color=Color +editor_ink_thickness=Espesor +editor_ink_opacity=Opacidad + +# Editor aria +editor_free_text_aria_label=Editor de FreeText +editor_ink_aria_label=Editor de tinta +editor_ink_canvas_aria_label=Imagen creada por el usuario diff --git a/addons/web/static/lib/pdfjs/web/locale/es-CL/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/es-CL/viewer.properties index 7691ed7f326..7f375f4d2a2 100644 --- a/addons/web/static/lib/pdfjs/web/locale/es-CL/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/es-CL/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Vista actual tools.title=Herramientas tools_label=Herramientas first_page.title=Ir a la primera página -first_page.label=Ir a la primera página first_page_label=Ir a la primera página last_page.title=Ir a la última página -last_page.label=Ir a la última página last_page_label=Ir a la última página page_rotate_cw.title=Girar a la derecha -page_rotate_cw.label=Girar a la derecha page_rotate_cw_label=Girar a la derecha page_rotate_ccw.title=Girar a la izquierda -page_rotate_ccw.label=Girar a la izquierda page_rotate_ccw_label=Girar a la izquierda cursor_text_select_tool.title=Activar la herramienta de selección de texto @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Herramienta de selección de texto cursor_hand_tool.title=Activar la herramienta de mano cursor_hand_tool_label=Herramienta de mano +scroll_page.title=Usar desplazamiento de página +scroll_page_label=Desplazamiento de página scroll_vertical.title=Usar desplazamiento vertical scroll_vertical_label=Desplazamiento vertical scroll_horizontal.title=Usar desplazamiento horizontal @@ -137,17 +135,24 @@ print_progress_close=Cancelar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Barra lateral -toggle_sidebar_notification.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos) +toggle_sidebar_notification2.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos/capas) toggle_sidebar_label=Mostrar u ocultar la barra lateral document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos) document_outline_label=Esquema del documento attachments.title=Mostrar adjuntos attachments_label=Adjuntos +layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) +layers_label=Capas thumbs.title=Mostrar miniaturas thumbs_label=Miniaturas +current_outline_item.title=Buscar elemento de esquema actual +current_outline_item_label=Elemento de esquema actual findbar.title=Buscar en el documento findbar_label=Buscar +additional_layers=Capas adicionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Buscar la siguiente aparición de la frase find_next_label=Siguiente find_highlight=Destacar todos find_match_case_label=Coincidir mayús./minús. +find_match_diacritics_label=Coincidir diacríticos find_entire_word_label=Palabras completas find_reached_top=Se alcanzó el inicio del documento, continuando desde el final find_reached_bottom=Se alcanzó el final del documento, continuando desde el inicio @@ -174,11 +180,11 @@ find_reached_bottom=Se alcanzó el final del documento, continuando desde el ini # index of the currently active find result, respectively a number representing # the total number of matches in the document. find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} de {{total}} coincidencia -find_match_count[two]={{current}} de {{total}} coincidencias -find_match_count[few]={{current}} de {{total}} coincidencias -find_match_count[many]={{current}} de {{total}} coincidencias -find_match_count[other]={{current}} de {{total}} coincidencias +find_match_count[one]=Coincidencia {{current}} de {{total}} +find_match_count[two]=Coincidencia {{current}} de {{total}} +find_match_count[few]=Coincidencia {{current}} de {{total}} +find_match_count[many]=Coincidencia {{current}} de {{total}} +find_match_count[other]=Coincidencia {{current}} de {{total}} # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # [zero|one|two|few|many|other], with [other] as the default value. # "{{limit}}" will be replaced by a numerical value. @@ -208,7 +214,7 @@ error_stack=Pila: {{stack}} error_file=Archivo: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Línea: {{line}} -rendering_error=Ha ocurrido un error al renderizar la página. +rendering_error=Ocurrió un error al renderizar la página. # Predefined zoom values page_scale_width=Ancho de página @@ -220,8 +226,8 @@ page_scale_actual=Tamaño actual page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error -loading_error=Ha ocurrido un error al cargar el PDF. +loading=Cargando… +loading_error=Ocurrió un error al cargar el PDF. invalid_file_error=Archivo PDF inválido o corrupto. missing_file_error=Falta el archivo PDF. unexpected_response_error=Respuesta del servidor inesperada. @@ -243,4 +249,33 @@ password_cancel=Cancelar printing_not_supported=Advertencia: Imprimir no está soportado completamente por este navegador. printing_not_ready=Advertencia: El PDF no está completamente cargado para ser impreso. web_fonts_disabled=Las tipografías web están desactivadas: imposible usar las fuentes PDF embebidas. -document_colors_not_allowed=Los documentos PDF no tienen permitido usar sus propios colores: 'Permitir a las páginas elegir sus propios colores' está desactivado en el navegador. + +# Editor +editor_none.title=Deshabilitar la edición de anotaciones +editor_none_label=Deshabilitar edición +editor_free_text.title=Agregar anotación FreeText +editor_free_text_label=Anotación FreeText +editor_ink.title=Agregar anotación de tinta +editor_ink_label=Anotación de tinta + +freetext_default_content=Ingresar algún texto… + +free_text_default_content=Ingresar texto… + +# Editor Parameters +editor_free_text_font_color=Color de la fuente +editor_free_text_font_size=Tamaño de la fuente +editor_ink_line_color=Color de la línea +editor_ink_line_thickness=Grosor de la línea + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Tamaño +editor_ink_color=Color +editor_ink_thickness=Grosor +editor_ink_opacity=Opacidad + +# Editor aria +editor_free_text_aria_label=Editor FreeText +editor_ink_aria_label=Editor de tinta +editor_ink_canvas_aria_label=Imagen creada por el usuario diff --git a/addons/web/static/lib/pdfjs/web/locale/es-ES/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/es-ES/viewer.properties index 0a632ecedcd..9bc7d607b3e 100644 --- a/addons/web/static/lib/pdfjs/web/locale/es-ES/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/es-ES/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Vista actual tools.title=Herramientas tools_label=Herramientas first_page.title=Ir a la primera página -first_page.label=Ir a la primera página first_page_label=Ir a la primera página last_page.title=Ir a la última página -last_page.label=Ir a la última página last_page_label=Ir a la última página page_rotate_cw.title=Rotar en sentido horario -page_rotate_cw.label=Rotar en sentido horario page_rotate_cw_label=Rotar en sentido horario page_rotate_ccw.title=Rotar en sentido antihorario -page_rotate_ccw.label=Rotar en sentido antihorario page_rotate_ccw_label=Rotar en sentido antihorario cursor_text_select_tool.title=Activar herramienta de selección de texto @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Herramienta de selección de texto cursor_hand_tool.title=Activar herramienta de mano cursor_hand_tool_label=Herramienta de mano +scroll_page.title=Usar desplazamiento de página +scroll_page_label=Desplazamiento de página scroll_vertical.title=Usar desplazamiento vertical scroll_vertical_label=Desplazamiento vertical scroll_horizontal.title=Usar desplazamiento horizontal @@ -137,17 +135,24 @@ print_progress_close=Cancelar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Cambiar barra lateral -toggle_sidebar_notification.title=Alternar panel lateral (el documento contiene un esquema o adjuntos) +toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) toggle_sidebar_label=Cambiar barra lateral document_outline.title=Mostrar resumen del documento (doble clic para expandir/contraer todos los elementos) document_outline_label=Resumen de documento attachments.title=Mostrar adjuntos attachments_label=Adjuntos +layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) +layers_label=Capas thumbs.title=Mostrar miniaturas thumbs_label=Miniaturas +current_outline_item.title=Encontrar elemento de esquema actual +current_outline_item_label=Elemento de esquema actual findbar.title=Buscar en el documento findbar_label=Buscar +additional_layers=Capas adicionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Encontrar la siguiente aparición de esta frase find_next_label=Siguiente find_highlight=Resaltar todos find_match_case_label=Coincidencia de mayús./minús. +find_match_diacritics_label=Coincidir diacríticos find_entire_word_label=Palabras completas find_reached_top=Se alcanzó el inicio del documento, se continúa desde el final find_reached_bottom=Se alcanzó el final del documento, se continúa desde el inicio @@ -220,7 +226,7 @@ page_scale_actual=Tamaño real page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Cargando… loading_error=Ocurrió un error al cargar el PDF. invalid_file_error=Fichero PDF no válido o corrupto. missing_file_error=No hay fichero PDF. @@ -243,4 +249,21 @@ password_cancel=Cancelar printing_not_supported=Advertencia: Imprimir no está totalmente soportado por este navegador. printing_not_ready=Advertencia: Este PDF no se ha cargado completamente para poder imprimirse. web_fonts_disabled=Las tipografías web están desactivadas: es imposible usar las tipografías PDF embebidas. -document_colors_not_allowed=Los documentos PDF no tienen permitido usar sus propios colores: 'Permitir a las páginas elegir sus propios colores' está desactivado en el navegador. + +# Editor +editor_none.title=Desactivar la edición de anotaciones +editor_none_label=Desactivar edición +editor_free_text.title=Añadir anotación FreeText +editor_free_text_label=Anotación FreeText +editor_ink.title=Añadir anotación de tinta +editor_ink_label=Anotación de tinta + +freetext_default_content=Introduzca algún texto… + +free_text_default_content=Introducir texto… + +# Editor Parameters +editor_free_text_font_color=Color de la fuente +editor_free_text_font_size=Tamaño de la fuente +editor_ink_line_color=Color de la línea +editor_ink_line_thickness=Grosor de la línea diff --git a/addons/web/static/lib/pdfjs/web/locale/es-MX/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/es-MX/viewer.properties index 211b19e46d6..03dfaa11446 100644 --- a/addons/web/static/lib/pdfjs/web/locale/es-MX/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/es-MX/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Vista actual tools.title=Herramientas tools_label=Herramientas first_page.title=Ir a la primera página -first_page.label=Ir a la primera página first_page_label=Ir a la primera página last_page.title=Ir a la última página -last_page.label=Ir a la última página last_page_label=Ir a la última página page_rotate_cw.title=Girar a la derecha -page_rotate_cw.label=Girar a la derecha page_rotate_cw_label=Girar a la derecha page_rotate_ccw.title=Girar a la izquierda -page_rotate_ccw.label=Girar a la izquierda page_rotate_ccw_label=Girar a la izquierda cursor_text_select_tool.title=Activar la herramienta de selección de texto @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Herramienta de selección de texto cursor_hand_tool.title=Activar la herramienta de mano cursor_hand_tool_label=Herramienta de mano +scroll_page.title=Usar desplazamiento de página +scroll_page_label=Desplazamiento de página scroll_vertical.title=Usar desplazamiento vertical scroll_vertical_label=Desplazamiento vertical scroll_horizontal.title=Usar desplazamiento horizontal @@ -137,17 +135,24 @@ print_progress_close=Cancelar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Cambiar barra lateral -toggle_sidebar_notification.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos) +toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) toggle_sidebar_label=Cambiar barra lateral document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos) document_outline_label=Esquema del documento attachments.title=Mostrar adjuntos attachments_label=Adjuntos +layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) +layers_label=Capas thumbs.title=Mostrar miniaturas thumbs_label=Miniaturas +current_outline_item.title=Buscar elemento de esquema actual +current_outline_item_label=Elemento de esquema actual findbar.title=Buscar en el documento findbar_label=Buscar +additional_layers=Capas adicionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Ir a la siguiente frase encontrada find_next_label=Siguiente find_highlight=Resaltar todo find_match_case_label=Coincidir con mayúsculas y minúsculas +find_match_diacritics_label=Coincidir diacríticos find_entire_word_label=Palabras completas find_reached_top=Se alcanzó el inicio del documento, se buscará al final find_reached_bottom=Se alcanzó el final del documento, se buscará al inicio @@ -220,12 +226,16 @@ page_scale_actual=Tamaño real page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Cargando… loading_error=Un error ocurrió al cargar el PDF. invalid_file_error=Archivo PDF invalido o dañado. missing_file_error=Archivo PDF no encontrado. unexpected_response_error=Respuesta inesperada del servidor. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -239,4 +249,33 @@ password_cancel=Cancelar printing_not_supported=Advertencia: La impresión no esta completamente soportada por este navegador. printing_not_ready=Advertencia: El PDF no cargo completamente para impresión. web_fonts_disabled=Las fuentes web están desactivadas: es imposible usar las fuentes PDF embebidas. -document_colors_not_allowed=Los documentos PDF no tienen permiso de usar sus propios colores: 'Permitir que las páginas elijan sus propios colores' esta desactivada en el navegador. + +# Editor +editor_none.title=Deshabilitar la edición de anotaciones +editor_none_label=Deshabilitar edición +editor_free_text.title=Agregar anotación FreeText +editor_free_text_label=Anotación FreeText +editor_ink.title=Agregar anotación de tinta +editor_ink_label=Anotación de tinta + +freetext_default_content=Ingresar algún texto… + +free_text_default_content=Ingresar texto… + +# Editor Parameters +editor_free_text_font_color=Color de fuente +editor_free_text_font_size=Tamaño de la fuente +editor_ink_line_color=Color de línea +editor_ink_line_thickness=Grosor de la línea + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Tamaño +editor_ink_color=Color +editor_ink_thickness=Grossor +editor_ink_opacity=Opacidad + +# Editor aria +editor_free_text_aria_label=Editor de FreeText +editor_ink_aria_label=Editor de tinta +editor_ink_canvas_aria_label=Imagen creada por el usuario diff --git a/addons/web/static/lib/pdfjs/web/locale/et/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/et/viewer.properties index 11f47c1c234..2d2f7da5c32 100644 --- a/addons/web/static/lib/pdfjs/web/locale/et/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/et/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Praegune vaade tools.title=Tööriistad tools_label=Tööriistad first_page.title=Mine esimesele leheküljele -first_page.label=Mine esimesele leheküljele first_page_label=Mine esimesele leheküljele last_page.title=Mine viimasele leheküljele -last_page.label=Mine viimasele leheküljele last_page_label=Mine viimasele leheküljele page_rotate_cw.title=Pööra päripäeva -page_rotate_cw.label=Pööra päripäeva page_rotate_cw_label=Pööra päripäeva page_rotate_ccw.title=Pööra vastupäeva -page_rotate_ccw.label=Pööra vastupäeva page_rotate_ccw_label=Pööra vastupäeva cursor_text_select_tool.title=Luba teksti valimise tööriist @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Teksti valimise tööriist cursor_hand_tool.title=Luba sirvimistööriist cursor_hand_tool_label=Sirvimistööriist +scroll_page.title=Kasutatakse lehe kaupa kerimist +scroll_page_label=Lehe kaupa kerimine scroll_vertical.title=Kasuta vertikaalset kerimist scroll_vertical_label=Vertikaalne kerimine scroll_horizontal.title=Kasuta horisontaalset kerimist @@ -137,17 +135,24 @@ print_progress_close=Loobu # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Näita külgriba -toggle_sidebar_notification.title=Näita külgriba (dokument sisaldab sisukorda/manuseid) +toggle_sidebar_notification2.title=Näita külgriba (dokument sisaldab sisukorda/manuseid/kihte) toggle_sidebar_label=Näita külgriba document_outline.title=Näita sisukorda (kõigi punktide laiendamiseks/ahendamiseks topeltklõpsa) document_outline_label=Näita sisukorda attachments.title=Näita manuseid attachments_label=Manused +layers.title=Näita kihte (kõikide kihtide vaikeolekusse lähtestamiseks topeltklõpsa) +layers_label=Kihid thumbs.title=Näita pisipilte thumbs_label=Pisipildid +current_outline_item.title=Otsi üles praegune kontuuriüksus +current_outline_item_label=Praegune kontuuriüksus findbar.title=Otsi dokumendist findbar_label=Otsi +additional_layers=Täiendavad kihid +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Lehekülg {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Otsi fraasi järgmine esinemiskoht find_next_label=Järgmine find_highlight=Too kõik esile find_match_case_label=Tõstutundlik +find_match_diacritics_label=Otsitakse diakriitiliselt find_entire_word_label=Täissõnad find_reached_top=Jõuti dokumendi algusesse, jätkati lõpust find_reached_bottom=Jõuti dokumendi lõppu, jätkati algusest @@ -220,7 +226,7 @@ page_scale_actual=Tegelik suurus page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Viga +loading=Laadimine… loading_error=PDFi laadimisel esines viga. invalid_file_error=Vigane või rikutud PDF-fail. missing_file_error=PDF-fail puudub. @@ -243,4 +249,21 @@ password_cancel=Loobu printing_not_supported=Hoiatus: printimine pole selle brauseri poolt täielikult toetatud. printing_not_ready=Hoiatus: PDF pole printimiseks täielikult laaditud. web_fonts_disabled=Veebifondid on keelatud: PDFiga kaasatud fonte pole võimalik kasutada. -document_colors_not_allowed=PDF-dokumentidel pole oma värvide kasutamine lubatud: “Veebilehtedel on lubatud kasutada oma värve” on brauseris deaktiveeritud. + +# Editor +editor_none.title=Keela annotatsioonide muutmine +editor_none_label=Keela muutmine +editor_free_text.title=Lisa vabateksti annotatsioon +editor_free_text_label=Vabateksti annotatsioon +editor_ink.title=Lisa tindiannotatsioon +editor_ink_label=Tindiannotatsioon + +freetext_default_content=Sisesta mingi tekst… + +free_text_default_content=Sisesta tekst… + +# Editor Parameters +editor_free_text_font_color=Fondi värv +editor_free_text_font_size=Fondi suurus +editor_ink_line_color=Joone värv +editor_ink_line_thickness=Joone paksus diff --git a/addons/web/static/lib/pdfjs/web/locale/eu/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/eu/viewer.properties index a3f230a5c00..66444593582 100644 --- a/addons/web/static/lib/pdfjs/web/locale/eu/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/eu/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Uneko ikuspegia tools.title=Tresnak tools_label=Tresnak first_page.title=Joan lehen orrira -first_page.label=Joan lehen orrira first_page_label=Joan lehen orrira last_page.title=Joan azken orrira -last_page.label=Joan azken orrira last_page_label=Joan azken orrira page_rotate_cw.title=Biratu erlojuaren norantzan -page_rotate_cw.label=Biratu erlojuaren norantzan page_rotate_cw_label=Biratu erlojuaren norantzan page_rotate_ccw.title=Biratu erlojuaren aurkako norantzan -page_rotate_ccw.label=Biratu erlojuaren aurkako norantzan page_rotate_ccw_label=Biratu erlojuaren aurkako norantzan cursor_text_select_tool.title=Gaitu testuaren hautapen tresna @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Testuaren hautapen tresna cursor_hand_tool.title=Gaitu eskuaren tresna cursor_hand_tool_label=Eskuaren tresna +scroll_page.title=Erabili orriaren korritzea +scroll_page_label=Orriaren korritzea scroll_vertical.title=Erabili korritze bertikala scroll_vertical_label=Korritze bertikala scroll_horizontal.title=Erabili korritze horizontala @@ -137,17 +135,24 @@ print_progress_close=Utzi # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Txandakatu alboko barra -toggle_sidebar_notification.title=Txandakatu alboko barra (dokumentuak eskema/eranskinak ditu) +toggle_sidebar_notification2.title=Txandakatu alboko barra (dokumentuak eskema/eranskinak/geruzak ditu) toggle_sidebar_label=Txandakatu alboko barra document_outline.title=Erakutsi dokumentuaren eskema (klik bikoitza elementu guztiak zabaltzeko/tolesteko) document_outline_label=Dokumentuaren eskema attachments.title=Erakutsi eranskinak attachments_label=Eranskinak +layers.title=Erakutsi geruzak (klik bikoitza geruza guztiak egoera lehenetsira berrezartzeko) +layers_label=Geruzak thumbs.title=Erakutsi koadro txikiak thumbs_label=Koadro txikiak +current_outline_item.title=Bilatu uneko eskemaren elementua +current_outline_item_label=Uneko eskemaren elementua findbar.title=Bilatu dokumentuan findbar_label=Bilatu +additional_layers=Geruza gehigarriak +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}}. orria # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Bilatu esaldiaren hurrengo parekatzea find_next_label=Hurrengoa find_highlight=Nabarmendu guztia find_match_case_label=Bat etorri maiuskulekin/minuskulekin +find_match_diacritics_label=Bereizi diakritikoak find_entire_word_label=Hitz osoak find_reached_top=Dokumentuaren hasierara heldu da, bukaeratik jarraitzen find_reached_bottom=Dokumentuaren bukaerara heldu da, hasieratik jarraitzen @@ -220,7 +226,7 @@ page_scale_actual=Benetako tamaina page_scale_percent=%{{scale}} # Loading indicator messages -loading_error_indicator=Errorea +loading=Kargatzen… loading_error=Errorea gertatu da PDFa kargatzean. invalid_file_error=PDF fitxategi baliogabe edo hondatua. missing_file_error=PDF fitxategia falta da. @@ -243,4 +249,21 @@ password_cancel=Utzi printing_not_supported=Abisua: inprimatzeko euskarria ez da erabatekoa nabigatzaile honetan. printing_not_ready=Abisua: PDFa ez dago erabat kargatuta inprimatzeko. web_fonts_disabled=Webeko letra-tipoak desgaituta daude: ezin dira kapsulatutako PDF letra-tipoak erabili. -document_colors_not_allowed=PDF dokumentuek ez dute beraien koloreak erabiltzeko baimenik: 'Baimendu orriak beraien letra-tipoak aukeratzea' desaktibatuta dago nabigatzailean. + +# Editor +editor_none.title=Desgaitu oharren edizioa +editor_none_label=Desgaitu edizioa +editor_free_text.title=Gehitu testu-oharra +editor_free_text_label=Testu-oharra +editor_ink.title=Gehitu esku-oharra +editor_ink_label=Esku-oharra + +freetext_default_content=Idatzi testua… + +free_text_default_content=Idatzi testua… + +# Editor Parameters +editor_free_text_font_color=Letra-kolorea +editor_free_text_font_size=Letra-tamaina +editor_ink_line_color=Lerroaren kolorea +editor_ink_line_thickness=Lerroaren lodiera diff --git a/addons/web/static/lib/pdfjs/web/locale/fa/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/fa/viewer.properties index e95738c6e10..2c28f01b5bd 100644 --- a/addons/web/static/lib/pdfjs/web/locale/fa/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/fa/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=نمای فعلی tools.title=ابزارها tools_label=ابزارها first_page.title=برو به اولین صفحه -first_page.label=برو یه اولین صفحه first_page_label=برو به اولین صفحه last_page.title=برو به آخرین صفحه -last_page.label=برو به آخرین صفحه last_page_label=برو به آخرین صفحه page_rotate_cw.title=چرخش ساعتگرد -page_rotate_cw.label=چرخش ساعتگرد page_rotate_cw_label=چرخش ساعتگرد page_rotate_ccw.title=چرخش پاد ساعتگرد -page_rotate_ccw.label=چرخش پاد ساعتگرد page_rotate_ccw_label=چرخش پاد ساعتگرد cursor_text_select_tool.title=فعال کردن ابزارِ انتخابِ متن @@ -126,7 +122,6 @@ print_progress_close=لغو # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=باز و بسته کردن نوار کناری -toggle_sidebar_notification.title=تغییر وضعیت نوار کناری (سند حاوی طرح/پیوست است) toggle_sidebar_label=تغییرحالت نوارکناری document_outline.title=نمایش رئوس مطالب مدارک(برای بازشدن/جمع شدن همه موارد دوبار کلیک کنید) document_outline_label=طرح نوشتار @@ -200,8 +195,6 @@ page_scale_actual=اندازه واقعی‌ # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=خطا loading_error=هنگام بارگیری پرونده PDF خطایی رخ داد. invalid_file_error=پرونده PDF نامعتبر یامعیوب می‌باشد. missing_file_error=پرونده PDF یافت نشد. @@ -220,4 +213,3 @@ password_cancel=لغو printing_not_supported=هشدار: قابلیت چاپ به‌طور کامل در این مرورگر پشتیبانی نمی‌شود. printing_not_ready=اخطار: پرونده PDF بطور کامل بارگیری نشده و امکان چاپ وجود ندارد. web_fonts_disabled=فونت های تحت وب غیر فعال شده اند: امکان استفاده از نمایش دهنده داخلی PDF وجود ندارد. -document_colors_not_allowed=فایلهای PDF اجازه ندارند تا از رنگ‌های خود استفاده کنند: گزینه «به صفحات اجازه بده تا از رنگ‌های خود استفاده کنند» در مرورگر غیر فعال است. diff --git a/addons/web/static/lib/pdfjs/web/locale/ff/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ff/viewer.properties index 2e94346aa23..bc954578dc0 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ff/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ff/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Jiytol Gonangol tools.title=Kuutorɗe tools_label=Kuutorɗe first_page.title=Yah to hello adanngo -first_page.label=Yah to hello adanngo first_page_label=Yah to hello adanngo last_page.title=Yah to hello wattindiingo -last_page.label=Yah to hello wattindiingo last_page_label=Yah to hello wattindiingo page_rotate_cw.title=Yiiltu Faya Ñaamo -page_rotate_cw.label=Yiiltu Faya Ñaamo page_rotate_cw_label=Yiiltu Faya Ñaamo page_rotate_ccw.title=Yiiltu Faya Nano -page_rotate_ccw.label=Yiiltu Faya Nano page_rotate_ccw_label=Yiiltu Faya Nano cursor_text_select_tool.title=Gollin kaɓirgel cuɓirgel binndi @@ -137,7 +133,6 @@ print_progress_close=Haaytu # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Toggilo Palal Sawndo -toggle_sidebar_notification.title=Palal sawndo (dokimaa oo ina waɗi taarngo/cinnde) toggle_sidebar_label=Toggilo Palal Sawndo document_outline.title=Hollu Ƴiyal Fiilannde (dobdobo ngam wertude/taggude teme fof) document_outline_label=Toɓɓe Fiilannde @@ -219,8 +214,6 @@ page_scale_actual=Ɓetol Jaati # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Juumre loading_error=Juumre waɗii tuma nde loowata PDF oo. invalid_file_error=Fiilde PDF moƴƴaani walla jiibii. missing_file_error=Fiilde PDF ena ŋakki. @@ -239,4 +232,3 @@ password_cancel=Haaytu printing_not_supported=Reentino: Winnditagol tammbitaaka no feewi e ndee wanngorde. printing_not_ready=Reentino: PDF oo loowaaki haa timmi ngam winnditagol. web_fonts_disabled=Ponte geese ko daaƴaaɗe: horiima huutoraade ponte PDF coomtoraaɗe. -document_colors_not_allowed=Piilanɗe PDF njamiraaka yoo kuutoro goobuuji mum'en keeriiɗi: 'Yamir kello yoo kuutoro goobuuki keeriiɗi' koko daaƴaa e wanngorde ndee. diff --git a/addons/web/static/lib/pdfjs/web/locale/fi/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/fi/viewer.properties index bb4d44ae38a..77123edef0d 100644 --- a/addons/web/static/lib/pdfjs/web/locale/fi/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/fi/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Avoin ikkuna tools.title=Tools tools_label=Tools first_page.title=Siirry ensimmäiselle sivulle -first_page.label=Siirry ensimmäiselle sivulle first_page_label=Siirry ensimmäiselle sivulle last_page.title=Siirry viimeiselle sivulle -last_page.label=Siirry viimeiselle sivulle last_page_label=Siirry viimeiselle sivulle page_rotate_cw.title=Kierrä oikealle -page_rotate_cw.label=Kierrä oikealle page_rotate_cw_label=Kierrä oikealle page_rotate_ccw.title=Kierrä vasemmalle -page_rotate_ccw.label=Kierrä vasemmalle page_rotate_ccw_label=Kierrä vasemmalle cursor_text_select_tool.title=Käytä tekstinvalintatyökalua @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Tekstinvalintatyökalu cursor_hand_tool.title=Käytä käsityökalua cursor_hand_tool_label=Käsityökalu +scroll_page.title=Käytä sivun vieritystä +scroll_page_label=Sivun vieritys scroll_vertical.title=Käytä pystysuuntaista vieritystä scroll_vertical_label=Pystysuuntainen vieritys scroll_horizontal.title=Käytä vaakasuuntaista vieritystä @@ -137,17 +135,24 @@ print_progress_close=Peruuta # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Näytä/piilota sivupaneeli -toggle_sidebar_notification.title=Näytä/piilota sivupaneeli (dokumentissa on sisällys tai liitteitä) +toggle_sidebar_notification2.title=Näytä/piilota sivupaneeli (dokumentissa on sisällys/liitteitä/tasoja) toggle_sidebar_label=Näytä/piilota sivupaneeli document_outline.title=Näytä dokumentin sisällys (laajenna tai kutista kohdat kaksoisnapsauttamalla) document_outline_label=Dokumentin sisällys attachments.title=Näytä liitteet attachments_label=Liitteet +layers.title=Näytä tasot (kaksoisnapsauta palauttaaksesi kaikki tasot oletustilaan) +layers_label=Tasot thumbs.title=Näytä pienoiskuvat thumbs_label=Pienoiskuvat +current_outline_item.title=Etsi nykyinen sisällyksen kohta +current_outline_item_label=Nykyinen sisällyksen kohta findbar.title=Etsi dokumentista findbar_label=Etsi +additional_layers=Lisätasot +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Sivu {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,9 +170,10 @@ find_next.title=Etsi hakusanan seuraava osuma find_next_label=Seuraava find_highlight=Korosta kaikki find_match_case_label=Huomioi kirjainkoko +find_match_diacritics_label=Erota tarkkeet find_entire_word_label=Kokonaiset sanat find_reached_top=Päästiin dokumentin alkuun, jatketaan lopusta -find_reached_bottom=Päästiin sivun loppuun, jatketaan alusta +find_reached_bottom=Päästiin dokumentin loppuun, jatketaan alusta # LOCALIZATION NOTE (find_match_count): The supported plural forms are # [one|two|few|many|other], with [other] as the default value. # "{{current}}" and "{{total}}" will be replaced by a number representing the @@ -220,7 +226,7 @@ page_scale_actual=Todellinen koko page_scale_percent={{scale}} % # Loading indicator messages -loading_error_indicator=Virhe +loading=Ladataan… loading_error=Tapahtui virhe ladattaessa PDF-tiedostoa. invalid_file_error=Virheellinen tai vioittunut PDF-tiedosto. missing_file_error=Puuttuva PDF-tiedosto. @@ -243,4 +249,19 @@ password_cancel=Peruuta printing_not_supported=Varoitus: Selain ei tue kaikkia tulostustapoja. printing_not_ready=Varoitus: PDF-tiedosto ei ole vielä latautunut kokonaan, eikä sitä voi vielä tulostaa. web_fonts_disabled=Verkkosivujen omat kirjasinlajit on estetty: ei voida käyttää upotettuja PDF-kirjasinlajeja. -document_colors_not_allowed=PDF-dokumenttien ei ole sallittua käyttää omia värejään: Asetusta ”Sivut saavat käyttää omia värejään oletusten sijaan” ei ole valittu selaimen asetuksissa. + +# Editor +editor_none_label=Poista muokkaus käytöstä + + +free_text_default_content=Kirjoita tekstiä… + +# Editor Parameters + +# Editor Parameters +editor_free_text_color=Väri +editor_free_text_size=Koko +editor_ink_color=Väri + +# Editor aria +editor_ink_canvas_aria_label=Käyttäjän luoma kuva diff --git a/addons/web/static/lib/pdfjs/web/locale/fr/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/fr/viewer.properties index 10559f7086f..1d358c2fe66 100644 --- a/addons/web/static/lib/pdfjs/web/locale/fr/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/fr/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Affichage actuel tools.title=Outils tools_label=Outils first_page.title=Aller à la première page -first_page.label=Aller à la première page first_page_label=Aller à la première page last_page.title=Aller à la dernière page -last_page.label=Aller à la dernière page last_page_label=Aller à la dernière page page_rotate_cw.title=Rotation horaire -page_rotate_cw.label=Rotation horaire page_rotate_cw_label=Rotation horaire page_rotate_ccw.title=Rotation antihoraire -page_rotate_ccw.label=Rotation antihoraire page_rotate_ccw_label=Rotation antihoraire cursor_text_select_tool.title=Activer l’outil de sélection de texte @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Outil de sélection de texte cursor_hand_tool.title=Activer l’outil main cursor_hand_tool_label=Outil main +scroll_page.title=Utiliser le défilement par page +scroll_page_label=Défilement par page scroll_vertical.title=Utiliser le défilement vertical scroll_vertical_label=Défilement vertical scroll_horizontal.title=Utiliser le défilement horizontal @@ -137,17 +135,24 @@ print_progress_close=Annuler # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Afficher/Masquer le panneau latéral -toggle_sidebar_notification.title=Afficher/Masquer le panneau latéral (le document contient des signets/pièces jointes) +toggle_sidebar_notification2.title=Afficher/Masquer le panneau latéral (le document contient des signets/pièces jointes/calques) toggle_sidebar_label=Afficher/Masquer le panneau latéral document_outline.title=Afficher les signets du document (double-cliquer pour développer/réduire tous les éléments) document_outline_label=Signets du document attachments.title=Afficher les pièces jointes attachments_label=Pièces jointes +layers.title=Afficher les calques (double-cliquer pour réinitialiser tous les calques à l’état par défaut) +layers_label=Calques thumbs.title=Afficher les vignettes thumbs_label=Vignettes +current_outline_item.title=Trouver l’élément de plan actuel +current_outline_item_label=Élément de plan actuel findbar.title=Rechercher dans le document findbar_label=Rechercher +additional_layers=Calques additionnels +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Page {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -159,12 +164,13 @@ thumb_page_canvas=Vignette de la page {{page}} # Find panel button title and messages find_input.title=Rechercher find_input.placeholder=Rechercher dans le document… -find_previous.title=Trouver l’occurrence précédente de la phrase +find_previous.title=Trouver l’occurrence précédente de l’expression find_previous_label=Précédent -find_next.title=Trouver la prochaine occurrence de la phrase +find_next.title=Trouver la prochaine occurrence de l’expression find_next_label=Suivant find_highlight=Tout surligner find_match_case_label=Respecter la casse +find_match_diacritics_label=Respecter les accents et diacritiques find_entire_word_label=Mots entiers find_reached_top=Haut de la page atteint, poursuite depuis la fin find_reached_bottom=Bas de la page atteint, poursuite au début @@ -189,7 +195,7 @@ find_match_count_limit[two]=Plus de {{limit}} correspondances find_match_count_limit[few]=Plus de {{limit}} correspondances find_match_count_limit[many]=Plus de {{limit}} correspondances find_match_count_limit[other]=Plus de {{limit}} correspondances -find_not_found=Phrase introuvable +find_not_found=Expression non trouvée # Error panel labels error_more_info=Plus d’informations @@ -220,7 +226,7 @@ page_scale_actual=Taille réelle page_scale_percent={{scale}} % # Loading indicator messages -loading_error_indicator=Erreur +loading=Chargement… loading_error=Une erreur s’est produite lors du chargement du fichier PDF. invalid_file_error=Fichier PDF invalide ou corrompu. missing_file_error=Fichier PDF manquant. @@ -243,4 +249,31 @@ password_cancel=Annuler printing_not_supported=Attention : l’impression n’est pas totalement prise en charge par ce navigateur. printing_not_ready=Attention : le PDF n’est pas entièrement chargé pour pouvoir l’imprimer. web_fonts_disabled=Les polices web sont désactivées : impossible d’utiliser les polices intégrées au PDF. -document_colors_not_allowed=Les documents PDF ne peuvent pas utiliser leurs propres couleurs : « Autoriser les pages web à utiliser leurs propres couleurs » est désactivé dans le navigateur. + +# Editor +editor_none.title=Désactiver l’édition d’annotations +editor_none_label=Désactiver l’édition +editor_free_text.title=Ajouter du texte +editor_free_text_label=Texte +editor_ink.title=Dessiner +editor_ink_label=Dessin + +free_text_default_content=Saisissez du texte… + +# Editor Parameters +editor_free_text_font_color=Couleur de police +editor_free_text_font_size=Taille de police +editor_ink_line_color=Couleur de la ligne +editor_ink_line_thickness=Épaisseur de la ligne + +# Editor Parameters +editor_free_text_color=Couleur +editor_free_text_size=Taille +editor_ink_color=Couleur +editor_ink_thickness=Épaisseur +editor_ink_opacity=Opacité + +# Editor aria +editor_free_text_aria_label=Éditeur de texte +editor_ink_aria_label=Dessin +editor_ink_canvas_aria_label=Image créée par l’utilisateur·trice diff --git a/addons/web/static/lib/pdfjs/web/locale/fy-NL/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/fy-NL/viewer.properties index ddba4cc086f..d6ecbb6e919 100644 --- a/addons/web/static/lib/pdfjs/web/locale/fy-NL/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/fy-NL/viewer.properties @@ -22,7 +22,7 @@ next_label=Folgjende page.title=Side # LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number # representing the total number of pages in the document. -of_pages=fa {{pagesCount}} +of_pages=fan {{pagesCount}} # LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" # will be replaced by a number representing the currently visible page, # respectively a number representing the total number of pages in the document. @@ -48,16 +48,12 @@ bookmark_label=Aktuele finster tools.title=Ark tools_label=Ark first_page.title=Gean nei earste side -first_page.label=Nei earste side gean first_page_label=Gean nei earste side last_page.title=Gean nei lêste side -last_page.label=Nei lêste side gean last_page_label=Gean nei lêste side page_rotate_cw.title=Rjochtsom draaie -page_rotate_cw.label=Rjochtsom draaie page_rotate_cw_label=Rjochtsom draaie page_rotate_ccw.title=Loftsom draaie -page_rotate_ccw.label=Loftsom draaie page_rotate_ccw_label=Loftsom draaie cursor_text_select_tool.title=Tekstseleksjehelpmiddel ynskeakelje @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Tekstseleksjehelpmiddel cursor_hand_tool.title=Hânhelpmiddel ynskeakelje cursor_hand_tool_label=Hânhelpmiddel +scroll_page.title=Sideskowen brûke +scroll_page_label=Sideskowen scroll_vertical.title=Fertikaal skowe brûke scroll_vertical_label=Fertikaal skowe scroll_horizontal.title=Horizontaal skowe brûke @@ -137,17 +135,24 @@ print_progress_close=Annulearje # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Sidebalke yn-/útskeakelje -toggle_sidebar_notification.title=Sidebalke yn-/útskeakelje (dokumint befettet outline/bylagen) +toggle_sidebar_notification2.title=Sidebalke yn-/útskeakelje (dokumint befettet oersjoch/bylagen/lagen) toggle_sidebar_label=Sidebalke yn-/útskeakelje document_outline.title=Dokumintoersjoch toane (dûbelklik om alle items út/yn te klappen) document_outline_label=Dokumintoersjoch attachments.title=Bylagen toane attachments_label=Bylagen +layers.title=Lagen toane (dûbelklik om alle lagen nei de standertsteat werom te setten) +layers_label=Lagen thumbs.title=Foarbylden toane thumbs_label=Foarbylden +current_outline_item.title=Aktueel item yn ynhâldsopjefte sykje +current_outline_item_label=Aktueel item yn ynhâldsopjefte findbar.title=Sykje yn dokumint findbar_label=Sykje +additional_layers=Oanfoljende lagen +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Side {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=It folgjende foarkommen fan de tekst sykje find_next_label=Folgjende find_highlight=Alles markearje find_match_case_label=Haadlettergefoelich +find_match_diacritics_label=Diakrityske tekens brûke find_entire_word_label=Hiele wurden find_reached_top=Boppekant fan dokumint berikt, trochgien fan ûnder ôf find_reached_bottom=Ein fan dokumint berikt, trochgien fan boppe ôf @@ -220,7 +226,7 @@ page_scale_actual=Werklike grutte page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Flater +loading=Lade… loading_error=Der is in flater bard by it laden fan de PDF. invalid_file_error=Ynfalide of korruptearre PDF-bestân. missing_file_error=PDF-bestân ûntbrekt. @@ -243,4 +249,33 @@ password_cancel=Annulearje printing_not_supported=Warning: Printen is net folslein stipe troch dizze browser. printing_not_ready=Warning: PDF is net folslein laden om ôf te drukken. web_fonts_disabled=Weblettertypen binne útskeakele: gebrûk fan ynsluten PDF-lettertypen is net mooglik. -document_colors_not_allowed=PDF-dokuminten meie harren eigen kleuren net brûke: ‘Siden tastean om harren eigen kleuren te kiezen’ is útskeakele yn de browser. + +# Editor +editor_none.title=Bewurkjen fan annotaasjes útskeakelje +editor_none_label=Bewurkjen útskeakelje +editor_free_text.title=FreeText-annotaasje tafoegje +editor_free_text_label=FreeText-annotaasje +editor_ink.title=Ink-annotaasje tafoegje +editor_ink_label=Ink-annotaasje + +freetext_default_content=Fier wat tekst yn… + +free_text_default_content=Fier tekst yn… + +# Editor Parameters +editor_free_text_font_color=Letterkleur +editor_free_text_font_size=Lettergrutte +editor_ink_line_color=Linekleur +editor_ink_line_thickness=Linedikte + +# Editor Parameters +editor_free_text_color=Kleur +editor_free_text_size=Grutte +editor_ink_color=Kleur +editor_ink_thickness=Tsjokte +editor_ink_opacity=Transparânsje + +# Editor aria +editor_free_text_aria_label=FreeText-bewurker +editor_ink_aria_label=Ink-bewurker +editor_ink_canvas_aria_label=Troch brûker makke ôfbylding diff --git a/addons/web/static/lib/pdfjs/web/locale/ga-IE/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ga-IE/viewer.properties index 62f1a551b0b..e82e55b14b8 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ga-IE/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ga-IE/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=An tAmharc Reatha tools.title=Uirlisí tools_label=Uirlisí first_page.title=Go dtí an chéad leathanach -first_page.label=Go dtí an chéad leathanach first_page_label=Go dtí an chéad leathanach last_page.title=Go dtí an leathanach deiridh -last_page.label=Go dtí an leathanach deiridh last_page_label=Go dtí an leathanach deiridh page_rotate_cw.title=Rothlaigh ar deiseal -page_rotate_cw.label=Rothlaigh ar deiseal page_rotate_cw_label=Rothlaigh ar deiseal page_rotate_ccw.title=Rothlaigh ar tuathal -page_rotate_ccw.label=Rothlaigh ar tuathal page_rotate_ccw_label=Rothlaigh ar tuathal cursor_text_select_tool.title=Cumasaigh an Uirlis Roghnaithe Téacs @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Uirlis Roghnaithe Téacs cursor_hand_tool.title=Cumasaigh an Uirlis Láimhe cursor_hand_tool_label=Uirlis Láimhe + + # Document properties dialog box document_properties.title=Airíonna na Cáipéise… document_properties_label=Airíonna na Cáipéise… @@ -89,6 +87,14 @@ document_properties_creator=Cruthaitheoir: document_properties_producer=Cruthaitheoir an PDF: document_properties_version=Leagan PDF: document_properties_page_count=Líon Leathanach: +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. document_properties_close=Dún print_progress_message=Cáipéis á hullmhú le priontáil… @@ -101,7 +107,6 @@ print_progress_close=Cealaigh # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Scoránaigh an Barra Taoibh -toggle_sidebar_notification.title=Scoránaigh an Barra Taoibh (achoimre/iatáin sa cháipéis) toggle_sidebar_label=Scoránaigh an Barra Taoibh document_outline.title=Taispeáin Imlíne na Cáipéise (déchliceáil chun chuile rud a leathnú nó a laghdú) document_outline_label=Creatlach na Cáipéise @@ -112,6 +117,7 @@ thumbs_label=Mionsamhlacha findbar.title=Aimsigh sa Cháipéis findbar_label=Aimsigh +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -129,8 +135,18 @@ find_next.title=Aimsigh an chéad sampla eile den nath sin find_next_label=Ar aghaidh find_highlight=Aibhsigh uile find_match_case_label=Cásíogair +find_entire_word_label=Focail iomlána find_reached_top=Ag barr na cáipéise, ag leanúint ón mbun find_reached_bottom=Ag bun na cáipéise, ag leanúint ón mbarr +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. find_not_found=Frása gan aimsiú # Error panel labels @@ -162,12 +178,14 @@ page_scale_actual=Fíormhéid page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Earráid loading_error=Tharla earráid agus an cháipéis PDF á lódáil. invalid_file_error=Comhad neamhbhailí nó truaillithe PDF. missing_file_error=Comhad PDF ar iarraidh. unexpected_response_error=Freagra ón bhfreastalaí nach rabhthas ag súil leis. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -181,4 +199,3 @@ password_cancel=Cealaigh printing_not_supported=Rabhadh: Ní thacaíonn an brabhsálaí le priontáil go hiomlán. printing_not_ready=Rabhadh: Ní féidir an PDF a phriontáil go dtí go mbeidh an cháipéis iomlán lódáilte. web_fonts_disabled=Tá clófhoirne Gréasáin díchumasaithe: ní féidir clófhoirne leabaithe PDF a úsáid. -document_colors_not_allowed=Níl cead ag cáipéisí PDF a ndathanna féin a roghnú: tá “Tabhair cead do leathanaigh a ndathanna féin a roghnú” díchumasaithe sa mbrabhsálaí. diff --git a/addons/web/static/lib/pdfjs/web/locale/gd/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/gd/viewer.properties index 2712568e845..4f056b1e0b7 100644 --- a/addons/web/static/lib/pdfjs/web/locale/gd/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/gd/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=An sealladh làithreach tools.title=Innealan tools_label=Innealan first_page.title=Rach gun chiad duilleag -first_page.label=Rach gun chiad duilleag first_page_label=Rach gun chiad duilleag last_page.title=Rach gun duilleag mu dheireadh -last_page.label=Rach gun duilleag mu dheireadh last_page_label=Rach gun duilleag mu dheireadh page_rotate_cw.title=Cuairtich gu deiseil -page_rotate_cw.label=Cuairtich gu deiseil page_rotate_cw_label=Cuairtich gu deiseil page_rotate_ccw.title=Cuairtich gu tuathail -page_rotate_ccw.label=Cuairtich gu tuathail page_rotate_ccw_label=Cuairtich gu tuathail cursor_text_select_tool.title=Cuir an comas inneal taghadh an teacsa @@ -137,17 +133,24 @@ print_progress_close=Sguir dheth # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Toglaich am bàr-taoibh -toggle_sidebar_notification.title=Toglaich am bàr-taoibh (tha oir-loidhne/ceanglachain aig an sgrìobhainn) +toggle_sidebar_notification2.title=Toglaich am bàr-taoibh (tha oir-loidhne/ceanglachain/breathan aig an sgrìobhainn) toggle_sidebar_label=Toglaich am bàr-taoibh document_outline.title=Seall oir-loidhne na sgrìobhainn (dèan briogadh dùbailte airson a h-uile nì a leudachadh/a cho-theannadh) document_outline_label=Oir-loidhne na sgrìobhainne attachments.title=Seall na ceanglachain attachments_label=Ceanglachain +layers.title=Seall na breathan (dèan briogadh dùbailte airson a h-uile breath ath-shuidheachadh dhan staid bhunaiteach) +layers_label=Breathan thumbs.title=Seall na dealbhagan thumbs_label=Dealbhagan +current_outline_item.title=Lorg nì làithreach na h-oir-loidhne +current_outline_item_label=Nì làithreach na h-oir-loidhne findbar.title=Lorg san sgrìobhainn findbar_label=Lorg +additional_layers=Barrachd breathan +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Duilleag {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -220,12 +223,16 @@ page_scale_actual=Am fìor-mheud page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Mearachd +loading=’Ga luchdadh… loading_error=Thachair mearachd rè luchdadh a' PDF. invalid_file_error=Faidhle PDF a tha mì-dhligheach no coirbte. missing_file_error=Faidhle PDF a tha a dhìth. unexpected_response_error=Freagairt on fhrithealaiche ris nach robh dùil. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -233,10 +240,9 @@ unexpected_response_error=Freagairt on fhrithealaiche ris nach robh dùil. text_annotation_type.alt=[Nòtachadh {{type}}] password_label=Cuir a-steach am facal-faire gus am faidhle PDF seo fhosgladh. password_invalid=Tha am facal-faire cearr. Nach fheuch thu ris a-rithist? -password_ok=Ceart ma-tha +password_ok=Ceart ma-thà password_cancel=Sguir dheth printing_not_supported=Rabhadh: Chan eil am brabhsair seo a' cur làn-taic ri clò-bhualadh. printing_not_ready=Rabhadh: Cha deach am PDF a luchdadh gu tur airson clò-bhualadh. web_fonts_disabled=Tha cruthan-clò lìn à comas: Chan urrainn dhuinn cruthan-clò PDF leabaichte a chleachdadh. -document_colors_not_allowed=Chan fhaod sgrìobhainnean PDF na dathan aca fhèin a chleachdadh: Tha “Leig le duilleagan na dathan aca fhèin a chleachdadh” à comas sa bhrabhsair. diff --git a/addons/web/static/lib/pdfjs/web/locale/gl/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/gl/viewer.properties index 187dbf1553e..d4ea8174f10 100644 --- a/addons/web/static/lib/pdfjs/web/locale/gl/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/gl/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Vista actual tools.title=Ferramentas tools_label=Ferramentas first_page.title=Ir á primeira páxina -first_page.label=Ir á primeira páxina first_page_label=Ir á primeira páxina last_page.title=Ir á última páxina -last_page.label=Ir á última páxina last_page_label=Ir á última páxina page_rotate_cw.title=Rotar no sentido das agullas do reloxo -page_rotate_cw.label=Rotar no sentido das agullas do reloxo page_rotate_cw_label=Rotar no sentido das agullas do reloxo page_rotate_ccw.title=Rotar no sentido contrario ás agullas do reloxo -page_rotate_ccw.label=Rotar no sentido contrario ás agullas do reloxo page_rotate_ccw_label=Rotar no sentido contrario ás agullas do reloxo cursor_text_select_tool.title=Activar a ferramenta de selección de texto @@ -137,17 +133,24 @@ print_progress_close=Cancelar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Amosar/agochar a barra lateral -toggle_sidebar_notification.title=Amosar/agochar a barra lateral (o documento contén un esquema ou anexos) +toggle_sidebar_notification2.title=Alternar barra lateral (o documento contén esquema/anexos/capas) toggle_sidebar_label=Amosar/agochar a barra lateral document_outline.title=Amosar o esquema do documento (prema dúas veces para expandir/contraer todos os elementos) document_outline_label=Esquema do documento attachments.title=Amosar anexos attachments_label=Anexos +layers.title=Mostrar capas (prema dúas veces para restaurar todas as capas o estado predeterminado) +layers_label=Capas thumbs.title=Amosar miniaturas thumbs_label=Miniaturas +current_outline_item.title=Atopar o elemento delimitado actualmente +current_outline_item_label=Elemento delimitado actualmente findbar.title=Atopar no documento findbar_label=Atopar +additional_layers=Capas adicionais +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Páxina {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -220,12 +223,16 @@ page_scale_actual=Tamaño actual page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Erro +loading=A cargar… loading_error=Produciuse un erro ao cargar o PDF. invalid_file_error=Ficheiro PDF danado ou non válido. missing_file_error=Falta o ficheiro PDF. unexpected_response_error=Resposta inesperada do servidor. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -239,4 +246,3 @@ password_cancel=Cancelar printing_not_supported=Aviso: A impresión non é compatíbel de todo con este navegador. printing_not_ready=Aviso: O PDF non se cargou completamente para imprimirse. web_fonts_disabled=Desactiváronse as fontes web: foi imposíbel usar as fontes incrustadas no PDF. -document_colors_not_allowed=Os documentos PDF non poden usar as súas propias cores: «Permitir que as páxinas escollan as súas propias cores» está desactivado no navegador. diff --git a/addons/web/static/lib/pdfjs/web/locale/gn/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/gn/viewer.properties index 692d1d726bd..566e361bb58 100644 --- a/addons/web/static/lib/pdfjs/web/locale/gn/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/gn/viewer.properties @@ -48,23 +48,21 @@ bookmark_label=Ag̃agua jehecha tools.title=Tembipuru tools_label=Tembipuru first_page.title=Kuatiarogue ñepyrũme jeho -first_page.label=Kuatiarogue ñepyrũme jeho first_page_label=Kuatiarogue ñepyrũme jeho last_page.title=Kuatiarogue pahápe jeho -last_page.label=Kuatiarogue pahápe jeho last_page_label=Kuatiarogue pahápe jeho page_rotate_cw.title=Aravóicha mbojere -page_rotate_cw.label=Aravóicha mbojere page_rotate_cw_label=Aravóicha mbojere page_rotate_ccw.title=Aravo rapykue gotyo mbojere -page_rotate_ccw.label=Aravo rapykue gotyo mbojere page_rotate_ccw_label=Aravo rapykue gotyo mbojere -cursor_text_select_tool.title=Emyandy moñe'ẽrã jeporavo rembipuru -cursor_text_select_tool_label=Moñe'ẽrã jeporavo rembipuru +cursor_text_select_tool.title=Emyandy moñe’ẽrã jeporavo rembipuru +cursor_text_select_tool_label=Moñe’ẽrã jeporavo rembipuru cursor_hand_tool.title=Tembipuru po pegua myandy cursor_hand_tool_label=Tembipuru po pegua +scroll_page.title=Eipuru kuatiarogue jeku’e +scroll_page_label=Kuatiarogue jeku’e scroll_vertical.title=Eipuru jeku’e ykeguáva scroll_vertical_label=Jeku’e ykeguáva scroll_horizontal.title=Eipuru jeku’e yvate gotyo @@ -80,8 +78,8 @@ spread_even.title=Embojuaju kuatiarogue jepysokue eñepyrũvo kuatiarogue par-va spread_even_label=Ipukuve uvei # Document properties dialog box -document_properties.title=Kuatia mba'etee… -document_properties_label=Kuatia mba'etee… +document_properties.title=Kuatia mba’etee… +document_properties_label=Kuatia mba’etee… document_properties_file_name=Marandurenda réra: document_properties_file_size=Marandurenda tuichakue: # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" @@ -92,15 +90,15 @@ document_properties_kb={{size_kb}} KB ({{size_b}} bytes) document_properties_mb={{size_mb}} MB ({{size_b}} bytes) document_properties_title=Teratee: document_properties_author=Apohára: -document_properties_subject=Mba'egua: +document_properties_subject=Mba’egua: document_properties_keywords=Jehero: document_properties_creation_date=Teñoihague arange: document_properties_modification_date=Iñambue hague arange: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. document_properties_date_string={{date}}, {{time}} -document_properties_creator=Apo'ypyha: -document_properties_producer=PDF mbosako'iha: +document_properties_creator=Apo’ypyha: +document_properties_producer=PDF mbosako’iha: document_properties_version=PDF mbojuehegua: document_properties_page_count=Kuatiarogue papapy: document_properties_page_size=Kuatiarogue tuichakue: @@ -110,7 +108,7 @@ document_properties_page_size_orientation_portrait=Oĩháicha document_properties_page_size_orientation_landscape=apaisado document_properties_page_size_name_a3=A3 document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Kuatiañe'ẽ +document_properties_page_size_name_letter=Kuatiañe’ẽ document_properties_page_size_name_legal=Tee # LOCALIZATION NOTE (document_properties_page_size_dimension_string): # "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by @@ -127,7 +125,7 @@ document_properties_linearized_yes=Añete document_properties_linearized_no=Ahániri document_properties_close=Mboty -print_progress_message=Embosako'i kuatia emonguatia hag̃ua… +print_progress_message=Embosako’i kuatia emonguatia hag̃ua… # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. print_progress_percent={{progress}}% @@ -137,37 +135,45 @@ print_progress_close=Heja # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Tenda yke moambue -toggle_sidebar_notification.title=Embojopyru tenda ykegua (kuatia oguereko kora/marandurenda moirũha) +toggle_sidebar_notification2.title=Embojopyru tenda ykegua (kuatia oguereko kuaakaha/moirũha/ñuãha) toggle_sidebar_label=Tenda yke moambue -document_outline.title=Ehechauka kuatia rape (eikutu mokõi jey embotuicha/emomichĩ hag̃ua opavavete mba'epuru) +document_outline.title=Ehechauka kuatia rape (eikutu mokõi jey embotuicha/emomichĩ hag̃ua opavavete mba’epuru) document_outline_label=Kuatia apopyre attachments.title=Moirũha jehechauka attachments_label=Moirũha -thumbs.title=Mba'emirĩ jehechauka -thumbs_label=Mba'emirĩ +layers.title=Ehechauka ñuãha (eikutu jo’a emomba’apo hag̃ua opaite ñuãha tekoypýpe) +layers_label=Ñuãha +thumbs.title=Mba’emirĩ jehechauka +thumbs_label=Mba’emirĩ +current_outline_item.title=Eheka mba’epuru ag̃aguaitéva +current_outline_item_label=Mba’epuru ag̃aguaitéva findbar.title=Kuatiápe jeheka findbar_label=Juhu +additional_layers=Ñuãha moirũguáva +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Kuatiarogue {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. thumb_page_title=Kuatiarogue {{page}} # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. -thumb_page_canvas=Kuatiarogue mba'emirĩ {{page}} +thumb_page_canvas=Kuatiarogue mba’emirĩ {{page}} # Find panel button title and messages find_input.title=Juhu find_input.placeholder=Kuatiápe jejuhu… -find_previous.title=Ejuhu ñe'ẽrysýi osẽ'ypy hague +find_previous.title=Ejuhu ñe’ẽrysýi osẽ’ypy hague find_previous_label=Mboyvegua -find_next.title=Eho ñe'ẽ juhupyre upeiguávape +find_next.title=Eho ñe’ẽ juhupyre upeiguávape find_next_label=Upeigua find_highlight=Embojekuaavepa find_match_case_label=Ejesareko taiguasu/taimichĩre +find_match_diacritics_label=Diacrítico moñondive find_entire_word_label=Ñe’ẽ oĩmbáva -find_reached_top=Ojehupyty kuatia ñepyrũ, oku'ejeýta kuatia paha guive -find_reached_bottom=Ojehupyty kuatia paha, oku'ejeýta kuatia ñepyrũ guive +find_reached_top=Ojehupyty kuatia ñepyrũ, oku’ejeýta kuatia paha guive +find_reached_bottom=Ojehupyty kuatia paha, oku’ejeýta kuatia ñepyrũ guive # LOCALIZATION NOTE (find_match_count): The supported plural forms are # [one|two|few|many|other], with [other] as the default value. # "{{current}}" and "{{total}}" will be replaced by a number representing the @@ -189,21 +195,21 @@ find_match_count_limit[two]=Hetave {{limit}} ojojoguáva find_match_count_limit[few]=Hetave {{limit}} ojojoguáva find_match_count_limit[many]=Hetave {{limit}} ojojoguáva find_match_count_limit[other]=Hetave {{limit}} ojojoguáva -find_not_found=Ñe'ẽrysýi ojejuhu'ỹva +find_not_found=Ñe’ẽrysýi ojejuhu’ỹva # Error panel labels error_more_info=Maranduve -error_less_info=Sa'ive marandu +error_less_info=Sa’ive marandu error_close=Mboty # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be # replaced by the PDF.JS version and build ID. error_version_info=PDF.js v{{version}} (build: {{build}}) # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an # english string describing the error. -error_message=Ñe'ẽmondo: {{message}} +error_message=Ñe’ẽmondo: {{message}} # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack # trace. -error_stack=Mbojo'apy: {{stack}} +error_stack=Mbojo’apy: {{stack}} # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename error_file=Marandurenda: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number @@ -220,11 +226,11 @@ page_scale_actual=Tuichakue ag̃agua page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Oĩvaíva +loading=Henyhẽhína… loading_error=Oiko jejavy PDF oñemyeñyhẽnguévo. invalid_file_error=PDF marandurenda ndoikóiva térã ivaipyréva. missing_file_error=Ndaipóri PDF marandurenda -unexpected_response_error=Mohendahavusu mbohovái ñeha'arõ'ỹva. +unexpected_response_error=Mohendahavusu mbohovái ñeha’arõ’ỹva. # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. @@ -235,12 +241,41 @@ annotation_date_string={{date}}, {{time}} # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" text_annotation_type.alt=[Jehaipy {{type}}] -password_label=Emoinge ñe'ẽñemi eipe'a hag̃ua ko marandurenda PDF. -password_invalid=Ñe'ẽñemi ndoikóiva. Eha'ã jey. +password_label=Emoinge ñe’ẽñemi eipe’a hag̃ua ko marandurenda PDF. +password_invalid=Ñe’ẽñemi ndoikóiva. Eha’ã jey. password_ok=MONEĨ password_cancel=Heja printing_not_supported=Kyhyjerã: Ñembokuatia ndojokupytypái ko kundahára ndive. printing_not_ready=Kyhyjerã: Ko PDF nahenyhẽmbái oñembokuatia hag̃uáicha. -web_fonts_disabled=Ñanduti taity oñemongéma: ndaikatumo'ãi eipuru PDF jehai'íva taity. -document_colors_not_allowed=Kuatiakuéra PDF ndaikatúi oipuru isa'ykuéra tee: “Emoneĩ kuatiaroguépe toiporavo isa'ykuéra tee” oñemongehína kundahárape. +web_fonts_disabled=Ñanduti taity oñemongéma: ndaikatumo’ãi eipuru PDF jehai’íva taity. + +# Editor +editor_none.title=Eipe’a jehaiha ñembosako’i +editor_none_label=Eipe’a ñembosako’i +editor_free_text.title=Embojuaju FreeText jehaiha +editor_free_text_label=FreeTextjehaiha +editor_ink.title=Embojuaju mbokuatiarã jehaiha +editor_ink_label=Mbokuatiarã jehaiha + +freetext_default_content=Emoinge moñe’ẽrã… + +free_text_default_content=Emoinge moñe’ẽrã… + +# Editor Parameters +editor_free_text_font_color=Teñoiha Sa’y +editor_free_text_font_size=Tai tuichakue +editor_ink_line_color=Tairenda sa’y +editor_ink_line_thickness=Tairenda poguasukue + +# Editor Parameters +editor_free_text_color=Sa’y +editor_free_text_size=Tuichakue +editor_ink_color=Sa’y +editor_ink_thickness=Anambusu +editor_ink_opacity=Pytũngy + +# Editor aria +editor_free_text_aria_label=FreeText Moheñoiha +editor_ink_aria_label=Jehaiha moheñoiha +editor_ink_canvas_aria_label=Ta’ãnga omoheñóiva puruhára diff --git a/addons/web/static/lib/pdfjs/web/locale/gu-IN/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/gu-IN/viewer.properties index cce4bec11f7..174d4648c53 100644 --- a/addons/web/static/lib/pdfjs/web/locale/gu-IN/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/gu-IN/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=વર્તમાન દૃશ્ય tools.title=સાધનો tools_label=સાધનો first_page.title=પહેલાં પાનામાં જાવ -first_page.label=પહેલાં પાનામાં જાવ first_page_label=પ્રથમ પાનાં પર જાવ last_page.title=છેલ્લા પાનાં પર જાવ -last_page.label=છેલ્લા પાનામાં જાવ last_page_label=છેલ્લા પાનાં પર જાવ page_rotate_cw.title=ઘડિયાળનાં કાંટા તરફ ફેરવો -page_rotate_cw.label=ઘડિયાળનાં કાંટાની જેમ ફેરવો page_rotate_cw_label=ઘડિયાળનાં કાંટા તરફ ફેરવો page_rotate_ccw.title=ઘડિયાળનાં કાંટાની ઉલટી દિશામાં ફેરવો -page_rotate_ccw.label=ઘડિયાળનાં કાંટાની ઉલટી દિશામાં ફેરવો page_rotate_ccw_label=ઘડિયાળનાં કાંટાની વિરુદ્દ ફેરવો cursor_text_select_tool.title=ટેક્સ્ટ પસંદગી ટૂલ સક્ષમ કરો @@ -137,7 +133,6 @@ print_progress_close=રદ કરો # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=ટૉગલ બાજુપટ્ટી -toggle_sidebar_notification.title=સાઇડબારને ટૉગલ કરો(દસ્તાવેજની રૂપરેખા/જોડાણો શામેલ છે) toggle_sidebar_label=ટૉગલ બાજુપટ્ટી document_outline.title=દસ્તાવેજની રૂપરેખા બતાવો(બધી આઇટમ્સને વિસ્તૃત/સંકુચિત કરવા માટે ડબલ-ક્લિક કરો) document_outline_label=દસ્તાવેજ રૂપરેખા @@ -219,8 +214,6 @@ page_scale_actual=ચોક્કસ માપ # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=ભૂલ loading_error=ભૂલ ઉદ્ભવી જ્યારે PDF ને લાવી રહ્યા હોય. invalid_file_error=અયોગ્ય અથવા ભાંગેલ PDF ફાઇલ. missing_file_error=ગુમ થયેલ PDF ફાઇલ. @@ -239,4 +232,3 @@ password_cancel=રદ કરો printing_not_supported=ચેતવણી: છાપવાનું આ બ્રાઉઝર દ્દારા સંપૂર્ણપણે આધારભૂત નથી. printing_not_ready=Warning: PDF એ છાપવા માટે સંપૂર્ણપણે લાવેલ છે. web_fonts_disabled=વેબ ફોન્ટ નિષ્ક્રિય થયેલ છે: ઍમ્બેડ થયેલ PDF ફોન્ટને વાપરવાનું અસમર્થ. -document_colors_not_allowed=PDF દસ્તાવેજો તેનાં પોતાના રંગોને વાપરવા પરવાનગી આપતા નથી: 'તેનાં પોતાનાં રંગોને પસંદ કરવા માટે પાનાંને પરવાનગી આપો' બ્રાઉઝરમાં નિષ્ક્રિય થયેલ છે. diff --git a/addons/web/static/lib/pdfjs/web/locale/he/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/he/viewer.properties index f0259f7919d..65f35edef23 100644 --- a/addons/web/static/lib/pdfjs/web/locale/he/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/he/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=תצוגה נוכחית tools.title=כלים tools_label=כלים first_page.title=מעבר לעמוד הראשון -first_page.label=מעבר לעמוד הראשון first_page_label=מעבר לעמוד הראשון last_page.title=מעבר לעמוד האחרון -last_page.label=מעבר לעמוד האחרון last_page_label=מעבר לעמוד האחרון page_rotate_cw.title=הטיה עם כיוון השעון -page_rotate_cw.label=הטיה עם כיוון השעון page_rotate_cw_label=הטיה עם כיוון השעון page_rotate_ccw.title=הטיה כנגד כיוון השעון -page_rotate_ccw.label=הטיה כנגד כיוון השעון page_rotate_ccw_label=הטיה כנגד כיוון השעון cursor_text_select_tool.title=הפעלת כלי בחירת טקסט @@ -65,6 +61,8 @@ cursor_text_select_tool_label=כלי בחירת טקסט cursor_hand_tool.title=הפעלת כלי היד cursor_hand_tool_label=כלי יד +scroll_page.title=שימוש בגלילת עמוד +scroll_page_label=גלילת עמוד scroll_vertical.title=שימוש בגלילה אנכית scroll_vertical_label=גלילה אנכית scroll_horizontal.title=שימוש בגלילה אופקית @@ -137,17 +135,24 @@ print_progress_close=ביטול # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=הצגה/הסתרה של סרגל הצד -toggle_sidebar_notification.title=החלפת תצוגת סרגל צד (מסמך שמכיל מתאר/צרופות) +toggle_sidebar_notification2.title=החלפת תצוגת סרגל צד (מסמך שמכיל תוכן עניינים/קבצים מצורפים/שכבות) toggle_sidebar_label=הצגה/הסתרה של סרגל הצד -document_outline.title=הצגת מתאר מסמך (לחיצה כפולה כדי להרחיב או לצמצם את כל הפריטים) -document_outline_label=מתאר מסמך +document_outline.title=הצגת תוכן העניינים של המסמך (לחיצה כפולה כדי להרחיב או לצמצם את כל הפריטים) +document_outline_label=תוכן העניינים של המסמך attachments.title=הצגת צרופות attachments_label=צרופות +layers.title=הצגת שכבות (יש ללחוץ לחיצה כפולה כדי לאפס את כל השכבות למצב ברירת המחדל) +layers_label=שכבות thumbs.title=הצגת תצוגה מקדימה thumbs_label=תצוגה מקדימה +current_outline_item.title=מציאת פריט תוכן העניינים הנוכחי +current_outline_item_label=פריט תוכן העניינים הנוכחי findbar.title=חיפוש במסמך findbar_label=חיפוש +additional_layers=שכבות נוספות +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=עמוד {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -159,12 +164,13 @@ thumb_page_canvas=תצוגה מקדימה של עמוד {{page}} # Find panel button title and messages find_input.title=חיפוש find_input.placeholder=חיפוש במסמך… -find_previous.title=חיפוש מופע קודם של הביטוי +find_previous.title=מציאת המופע הקודם של הביטוי find_previous_label=קודם -find_next.title=חיפוש המופע הבא של הביטוי +find_next.title=מציאת המופע הבא של הביטוי find_next_label=הבא find_highlight=הדגשת הכול find_match_case_label=התאמת אותיות +find_match_diacritics_label=התאמה דיאקריטית find_entire_word_label=מילים שלמות find_reached_top=הגיע לראש הדף, ממשיך מלמטה find_reached_bottom=הגיע לסוף הדף, ממשיך מלמעלה @@ -214,13 +220,13 @@ rendering_error=אירעה שגיאה בעת עיבוד הדף. page_scale_width=רוחב העמוד page_scale_fit=התאמה לעמוד page_scale_auto=מרחק מתצוגה אוטומטי -page_scale_actual=גודל אמתי +page_scale_actual=גודל אמיתי # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=שגיאה +loading=בטעינה… loading_error=אירעה שגיאה בעת טעינת ה־PDF. invalid_file_error=קובץ PDF פגום או לא תקין. missing_file_error=קובץ PDF חסר. @@ -241,6 +247,35 @@ password_ok=אישור password_cancel=ביטול printing_not_supported=אזהרה: הדפסה אינה נתמכת במלואה בדפדפן זה. -printing_not_ready=אזהרה: ה־PDF לא ניתן לחלוטין עד מצב שמאפשר הדפסה. +printing_not_ready=אזהרה: מסמך ה־PDF לא נטען לחלוטין עד מצב שמאפשר הדפסה. web_fonts_disabled=גופני רשת מנוטרלים: לא ניתן להשתמש בגופני PDF מוטבעים. -document_colors_not_allowed=מסמכי PDF אינם מורשים להשתמש בצבעים משלהם: האפשרות „אפשר לעמודים לבחור צבעים משלהם” אינה פעילה בדפדפן. + +# Editor +editor_none.title=השבתת עריכת ההערות +editor_none_label=השבתת עריכה +editor_free_text.title=הוספת הערת FreeText +editor_free_text_label=הערת FreeText +editor_ink.title=הוספת הערת דיו +editor_ink_label=הערת דיו + +freetext_default_content=נא להזין טקסט… + +free_text_default_content=נא להקליד טקסט… + +# Editor Parameters +editor_free_text_font_color=צבע גופן +editor_free_text_font_size=גודל גופן +editor_ink_line_color=צבע קו +editor_ink_line_thickness=עובי קו + +# Editor Parameters +editor_free_text_color=צבע +editor_free_text_size=גודל +editor_ink_color=צבע +editor_ink_thickness=עובי +editor_ink_opacity=אטימות + +# Editor aria +editor_free_text_aria_label=עורך FreeText +editor_ink_aria_label=עורך דיו +editor_ink_canvas_aria_label=תמונה שנוצרה על־ידי משתמש diff --git a/addons/web/static/lib/pdfjs/web/locale/hi-IN/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/hi-IN/viewer.properties index 67d000538dc..27064ee936e 100644 --- a/addons/web/static/lib/pdfjs/web/locale/hi-IN/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/hi-IN/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=\u0020मौजूदा दृश्य tools.title=औज़ार tools_label=औज़ार first_page.title=प्रथम पृष्ठ पर जाएँ -first_page.label=\u0020प्रथम पृष्ठ पर जाएँ first_page_label=प्रथम पृष्ठ पर जाएँ last_page.title=अंतिम पृष्ठ पर जाएँ -last_page.label=\u0020अंतिम पृष्ठ पर जाएँ last_page_label=\u0020अंतिम पृष्ठ पर जाएँ page_rotate_cw.title=घड़ी की दिशा में घुमाएँ -page_rotate_cw.label=घड़ी की दिशा में घुमाएँ page_rotate_cw_label=घड़ी की दिशा में घुमाएँ page_rotate_ccw.title=घड़ी की दिशा से उल्टा घुमाएँ -page_rotate_ccw.label=घड़ी की दिशा से उल्टा घुमाएँ page_rotate_ccw_label=\u0020घड़ी की दिशा से उल्टा घुमाएँ cursor_text_select_tool.title=पाठ चयन उपकरण सक्षम करें @@ -72,6 +68,7 @@ scroll_horizontal_label=क्षितिजिय स्क्रॉलिं scroll_wrapped.title=व्राप्पेड स्क्रॉलिंग का उपयोग करें spread_none_label=कोई स्प्रेड उपलब्ध नहीं +spread_odd.title=विषम-क्रमांकित पृष्ठों से प्रारंभ होने वाले पृष्ठ स्प्रेड में शामिल हों spread_odd_label=विषम फैलाव # Document properties dialog box @@ -132,7 +129,6 @@ print_progress_close=रद्द करें # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=\u0020स्लाइडर टॉगल करें -toggle_sidebar_notification.title=साइडबार टॉगल करें (दस्तावेज़ में रूपरेखा शामिल है/attachments) toggle_sidebar_label=स्लाइडर टॉगल करें document_outline.title=दस्तावेज़ की रूपरेखा दिखाइए (सारी वस्तुओं को फलने अथवा समेटने के लिए दो बार क्लिक करें) document_outline_label=दस्तावेज़ आउटलाइन @@ -168,9 +164,22 @@ find_reached_bottom=पृष्ठ के नीचे में जा पह # "{{current}}" and "{{total}}" will be replaced by a number representing the # index of the currently active find result, respectively a number representing # the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} में {{current}} मेल +find_match_count[two]={{total}} में {{current}} मेल +find_match_count[few]={{total}} में {{current}} मेल +find_match_count[many]={{total}} में {{current}} मेल +find_match_count[other]={{total}} में {{current}} मेल # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # [zero|one|two|few|many|other], with [other] as the default value. # "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} से अधिक मेल +find_match_count_limit[one]={{limit}} से अधिक मेल +find_match_count_limit[two]={{limit}} से अधिक मेल +find_match_count_limit[few]={{limit}} से अधिक मेल +find_match_count_limit[many]={{limit}} से अधिक मेल +find_match_count_limit[other]={{limit}} से अधिक मेल find_not_found=वाक्यांश नहीं मिला # Error panel labels @@ -201,8 +210,6 @@ page_scale_actual=वास्तविक आकार # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=त्रुटि loading_error=PDF लोड करते समय एक त्रुटि हुई. invalid_file_error=अमान्य या भ्रष्ट PDF फ़ाइल. missing_file_error=\u0020अनुपस्थित PDF फ़ाइल. @@ -225,4 +232,3 @@ password_cancel=रद्द करें printing_not_supported=चेतावनी: इस ब्राउज़र पर छपाई पूरी तरह से समर्थित नहीं है. printing_not_ready=चेतावनी: PDF छपाई के लिए पूरी तरह से लोड नहीं है. web_fonts_disabled=वेब फॉन्ट्स निष्क्रिय हैं: अंतःस्थापित PDF फॉन्टस के उपयोग में असमर्थ. -document_colors_not_allowed=PDF दस्तावेज़ उनके अपने रंग को उपयोग करने के लिए अनुमति प्राप्त नहीं है: "पृष्ठों को उनके अपने रंग को चुनने के लिए स्वीकृति दें" कि वह उस ब्राउज़र में निष्क्रिय है. diff --git a/addons/web/static/lib/pdfjs/web/locale/hr/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/hr/viewer.properties index 4f1f3c498eb..1ccf441cb5a 100644 --- a/addons/web/static/lib/pdfjs/web/locale/hr/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/hr/viewer.properties @@ -28,36 +28,32 @@ of_pages=od {{pagesCount}} # respectively a number representing the total number of pages in the document. page_of_pages=({{pageNumber}} od {{pagesCount}}) -zoom_out.title=Uvećaj -zoom_out_label=Smanji +zoom_out.title=Umanji +zoom_out_label=Umanji zoom_in.title=Uvećaj -zoom_in_label=Smanji -zoom.title=Uvećanje +zoom_in_label=Uvećaj +zoom.title=Zumiranje presentation_mode.title=Prebaci u prezentacijski način rada presentation_mode_label=Prezentacijski način rada open_file.title=Otvori datoteku open_file_label=Otvori -print.title=Ispis -print_label=Ispis +print.title=Ispiši +print_label=Ispiši download.title=Preuzmi download_label=Preuzmi -bookmark.title=Trenutni prikaz (kopiraj ili otvori u novom prozoru) -bookmark_label=Trenutni prikaz +bookmark.title=Trenutačni prikaz (kopiraj ili otvori u novom prozoru) +bookmark_label=Trenutačni prikaz # Secondary toolbar and context menu tools.title=Alati tools_label=Alati first_page.title=Idi na prvu stranicu -first_page.label=Idi na prvu stranicu first_page_label=Idi na prvu stranicu last_page.title=Idi na posljednju stranicu -last_page.label=Idi na posljednju stranicu last_page_label=Idi na posljednju stranicu page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu -page_rotate_cw.label=Rotiraj u smjeru kazaljke na satu page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu page_rotate_ccw.title=Rotiraj obrnutno od smjera kazaljke na satu -page_rotate_ccw.label=Rotiraj obrnutno od smjera kazaljke na satu page_rotate_ccw_label=Rotiraj obrnutno od smjera kazaljke na satu cursor_text_select_tool.title=Omogući alat za označavanje teksta @@ -69,19 +65,19 @@ scroll_vertical.title=Koristi okomito pomicanje scroll_vertical_label=Okomito pomicanje scroll_horizontal.title=Koristi vodoravno pomicanje scroll_horizontal_label=Vodoravno pomicanje -scroll_wrapped.title=Koristi omotano pomicanje -scroll_wrapped_label=Omotano pomicanje +scroll_wrapped.title=Koristi kontinuirani raspored stranica +scroll_wrapped_label=Kontinuirani raspored stranica -spread_none.title=Ne pridružuj razmake stranica -spread_none_label=Bez razmaka -spread_odd.title=Pridruži razmake stranica počinjući od neparnih stranica -spread_odd_label=Neparni razmaci -spread_even.title=Pridruži razmake stranica počinjući od parnih stranica -spread_even_label=Parni razmaci +spread_none.title=Ne izrađuj duplerice +spread_none_label=Pojedinačne stranice +spread_odd.title=Izradi duplerice koje počinju s neparnim stranicama +spread_odd_label=Neparne duplerice +spread_even.title=Izradi duplerice koje počinju s parnim stranicama +spread_even_label=Parne duplerice # Document properties dialog box -document_properties.title=Svojstva dokumenta... -document_properties_label=Svojstva dokumenta... +document_properties.title=Svojstva dokumenta … +document_properties_label=Svojstva dokumenta … document_properties_file_name=Naziv datoteke: document_properties_file_size=Veličina datoteke: # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" @@ -101,17 +97,17 @@ document_properties_modification_date=Datum promjene: document_properties_date_string={{date}}, {{time}} document_properties_creator=Stvaratelj: document_properties_producer=PDF stvaratelj: -document_properties_version=PDF inačica: +document_properties_version=PDF verzija: document_properties_page_count=Broj stranica: document_properties_page_size=Dimenzije stranice: document_properties_page_size_unit_inches=in document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=portret -document_properties_page_size_orientation_landscape=pejzaž +document_properties_page_size_orientation_portrait=uspravno +document_properties_page_size_orientation_landscape=položeno document_properties_page_size_name_a3=A3 document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Pismo -document_properties_page_size_name_legal=Pravno +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal # LOCALIZATION NOTE (document_properties_page_size_dimension_string): # "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by # the size, respectively their unit of measurement and orientation, of the (current) page. @@ -137,37 +133,44 @@ print_progress_close=Odustani # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Prikaži/sakrij bočnu traku -toggle_sidebar_notification.title=Prikazivanje i sklanjanje bočne trake (dokument sadrži konturu/privitke) +toggle_sidebar_notification2.title=Prikazivanje i sklanjanje bočne trake (dokument sadrži strukturu/privitke/slojeve) toggle_sidebar_label=Prikaži/sakrij bočnu traku -document_outline.title=Prikaži obris dokumenta (dvostruki klik za proširivanje/skupljanje svih stavki) -document_outline_label=Obris dokumenta +document_outline.title=Prikaži strukturu dokumenta (dvostruki klik za rasklapanje/sklapanje svih stavki) +document_outline_label=Struktura dokumenta attachments.title=Prikaži privitke attachments_label=Privitci -thumbs.title=Prikaži sličice -thumbs_label=Sličice -findbar.title=Traži u dokumentu -findbar_label=Traži +layers.title=Prikaži slojeve (dvoklik za vraćanje svih slojeva u zadano stanje) +layers_label=Slojevi +thumbs.title=Prikaži minijature +thumbs_label=Minijature +current_outline_item.title=Pronađi trenutačni element strukture +current_outline_item_label=Trenutačni element strukture +findbar.title=Pronađi u dokumentu +findbar_label=Pronađi +additional_layers=Dodatni slojevi +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Stranica {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. thumb_page_title=Stranica {{page}} # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. -thumb_page_canvas=Sličica stranice {{page}} +thumb_page_canvas=Minijatura stranice {{page}} # Find panel button title and messages -find_input.title=Traži -find_input.placeholder=Traži u dokumentu… -find_previous.title=Pronađi prethodno javljanje ovog izraza +find_input.title=Pronađi +find_input.placeholder=Pronađi u dokumentu … +find_previous.title=Pronađi prethodno pojavljivanje ovog izraza find_previous_label=Prethodno -find_next.title=Pronađi iduće javljanje ovog izraza +find_next.title=Pronađi sljedeće pojavljivanje ovog izraza find_next_label=Sljedeće find_highlight=Istankni sve -find_match_case_label=Slučaj podudaranja +find_match_case_label=Razlikovanje velikih i malih slova find_entire_word_label=Cijele riječi -find_reached_top=Dosegnut vrh dokumenta, nastavak od dna -find_reached_bottom=Dosegnut vrh dokumenta, nastavak od vrha +find_reached_top=Dosegnut početak dokumenta, nastavak s kraja +find_reached_bottom=Dosegnut kraj dokumenta, nastavak s početka # LOCALIZATION NOTE (find_match_count): The supported plural forms are # [one|two|few|many|other], with [other] as the default value. # "{{current}}" and "{{total}}" will be replaced by a number representing the @@ -211,18 +214,18 @@ error_line=Redak: {{line}} rendering_error=Došlo je do greške prilikom iscrtavanja stranice. # Predefined zoom values -page_scale_width=Širina stranice -page_scale_fit=Pristajanje stranici -page_scale_auto=Automatsko uvećanje -page_scale_actual=Prava veličina +page_scale_width=Prilagodi širini prozora +page_scale_fit=Prilagodi veličini prozora +page_scale_auto=Automatsko zumiranje +page_scale_actual=Stvarna veličina # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. -page_scale_percent={{scale}}% +page_scale_percent={{scale}} % # Loading indicator messages -loading_error_indicator=Greška +loading=Učitavanje… loading_error=Došlo je do greške pri učitavanju PDF-a. -invalid_file_error=Kriva ili oštećena PDF datoteka. +invalid_file_error=Neispravna ili oštećena PDF datoteka. missing_file_error=Nedostaje PDF datoteka. unexpected_response_error=Neočekivani odgovor poslužitelja. @@ -235,12 +238,11 @@ annotation_date_string={{date}}, {{time}} # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" text_annotation_type.alt=[{{type}} Bilješka] -password_label=Upišite lozinku da biste otvorili ovu PDF datoteku. -password_invalid=Neispravna lozinka. Pokušajte ponovo. +password_label=Za otvoranje ove PDF datoteku upiši lozinku. +password_invalid=Neispravna lozinka. Pokušaj ponovo. password_ok=U redu password_cancel=Odustani -printing_not_supported=Upozorenje: Ispisivanje nije potpuno podržano u ovom pregledniku. +printing_not_supported=Upozorenje: Ovaj preglednik ne podržava u potpunosti ispisivanje. printing_not_ready=Upozorenje: PDF nije u potpunosti učitan za ispis. -web_fonts_disabled=Web fontovi su onemogućeni: nije moguće koristiti umetnute PDF fontove. -document_colors_not_allowed=PDF dokumenti nemaju dopuštene koristiti vlastite boje: opcija 'Dopusti stranicama da koriste vlastite boje' je deaktivirana. +web_fonts_disabled=Web fontovi su deaktivirani: nije moguće koristiti ugrađene PDF fontove. diff --git a/addons/web/static/lib/pdfjs/web/locale/hsb/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/hsb/viewer.properties index 790f7235067..86c2d79f0d6 100644 --- a/addons/web/static/lib/pdfjs/web/locale/hsb/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/hsb/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Aktualny napohlad tools.title=Nastroje tools_label=Nastroje first_page.title=K prěnjej stronje -first_page.label=K prěnjej stronje first_page_label=K prěnjej stronje last_page.title=K poslednjej stronje -last_page.label=K poslednjej stronje last_page_label=K poslednjej stronje page_rotate_cw.title=K směrej časnika wjerćeć -page_rotate_cw.label=K směrej časnika wjerćeć page_rotate_cw_label=K směrej časnika wjerćeć page_rotate_ccw.title=Přećiwo směrej časnika wjerćeć -page_rotate_ccw.label=Přećiwo směrej časnika wjerćeć page_rotate_ccw_label=Přećiwo směrej časnika wjerćeć cursor_text_select_tool.title=Nastroj za wuběranje teksta zmóžnić @@ -65,8 +61,10 @@ cursor_text_select_tool_label=Nastroj za wuběranje teksta cursor_hand_tool.title=Ručny nastroj zmóžnić cursor_hand_tool_label=Ručny nastroj +scroll_page.title=Kulenje strony wužiwać +scroll_page_label=Kulenje strony scroll_vertical.title=Wertikalne suwanje wužiwać -scroll_vertical_label=Wertikalnje suwanje +scroll_vertical_label=Wertikalne suwanje scroll_horizontal.title=Horicontalne suwanje wužiwać scroll_horizontal_label=Horicontalne suwanje scroll_wrapped.title=Postupne suwanje wužiwać @@ -137,17 +135,24 @@ print_progress_close=Přetorhnyć # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Bóčnicu pokazać/schować -toggle_sidebar_notification.title=Bóčnicu přepinać (dokument wobsahuje wobrys/přiwěški) +toggle_sidebar_notification2.title=Bóčnicu přepinać (dokument rozrjad/přiwěški/woršty wobsahuje) toggle_sidebar_label=Bóčnicu pokazać/schować document_outline.title=Dokumentowy naćisk pokazać (dwójne kliknjenje, zo bychu so wšě zapiski pokazali/schowali) document_outline_label=Dokumentowa struktura attachments.title=Přiwěški pokazać attachments_label=Přiwěški +layers.title=Woršty pokazać (klikńće dwójce, zo byšće wšě woršty na standardny staw wróćo stajił) +layers_label=Woršty thumbs.title=Miniatury pokazać thumbs_label=Miniatury +current_outline_item.title=Aktualny rozrjadowy zapisk pytać +current_outline_item_label=Aktualny rozrjadowy zapisk findbar.title=W dokumenće pytać findbar_label=Pytać +additional_layers=Dalše woršty +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Strona {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Přichodne wustupowanje pytanskeho wuraza pytać find_next_label=Dale find_highlight=Wšě wuzběhnyć find_match_case_label=Wulkopisanje wobkedźbować +find_match_diacritics_label=Diakritiske znamješka wužiwać find_entire_word_label=Cyłe słowa find_reached_top=Spočatk dokumenta docpěty, pokročuje so z kóncom find_reached_bottom=Kónc dokument docpěty, pokročuje so ze spočatkom @@ -220,7 +226,7 @@ page_scale_actual=Aktualna wulkosć page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Zmylk +loading=Začituje so… loading_error=Při začitowanju PDF je zmylk wustupił. invalid_file_error=Njepłaćiwa abo wobškodźena PDF-dataja. missing_file_error=Falowaca PDF-dataja. @@ -243,4 +249,33 @@ password_cancel=Přetorhnyć printing_not_supported=Warnowanje: Ćišćenje so přez tutón wobhladowak połnje njepodpěruje. printing_not_ready=Warnowanje: PDF njeje so za ćišćenje dospołnje začitał. web_fonts_disabled=Webpisma su znjemóžnjene: njeje móžno, zasadźene PDF-pisma wužiwać. -document_colors_not_allowed=PDF-dokumenty njesmědźa swoje barby wužiwać: 'Stronam dowolić, swoje barby wužiwać' je we wobhladowaku znjemóžnjene. + +# Editor +editor_none.title=Wobdźěłowanje anotacijow znjemóžnić +editor_none_label=Wobdźěłowanje znjemóžnić +editor_free_text.title=Anotaciju FreeText přidać +editor_free_text_label=Anotacija FreeText +editor_ink.title=Tintowu anotaciju přidać +editor_ink_label=Tintowa anotacija + +freetext_default_content=Zapodajće trochu teksta… + +free_text_default_content=Tekst zapodać… + +# Editor Parameters +editor_free_text_font_color=Pismowa barba +editor_free_text_font_size=Pismowa wulkosć +editor_ink_line_color=Linijowa barba +editor_ink_line_thickness=Linijowa tołstosć + +# Editor Parameters +editor_free_text_color=Barba +editor_free_text_size=Wulkosć +editor_ink_color=Barba +editor_ink_thickness=Tołstosć +editor_ink_opacity=Opacita + +# Editor aria +editor_free_text_aria_label=Darmotny tekstowy editor +editor_ink_aria_label=Tintowy editor +editor_ink_canvas_aria_label=Wobraz wutworjeny wot wužiwarja diff --git a/addons/web/static/lib/pdfjs/web/locale/hto/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/hto/viewer.properties deleted file mode 100644 index ed984ea5945..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/hto/viewer.properties +++ /dev/null @@ -1,127 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -open_file_label=Tuide -print.title=Rábe fɨnoraɨma -print_label=Rábe fɨnoraɨma -download.title=Yúnua -download_label=Yúnua -bookmark.title=Bírui éroika (kómue éroirafo tuño fakayena) -bookmark_label=Bírui éroika - -# Secondary toolbar and context menu -tools.title=Ránɨaɨ táɨjɨyena -tools_label=Ránɨaɨ táɨjɨyena -first_page.title=Nano fueñe rabemo jaíri -first_page.label=Nano fueñe rabemo jaíri -first_page_label=Nano fueñe rabemo jaíri -last_page.title=Ɨ́kóɨ fueñe rabemo jaíri -last_page.label=Ɨ́kóɨ fueñe rabemo jaíri -last_page_label=Ɨ́kóɨ fueñe rabemo jaíri -page_rotate_cw.title=Nabene jɨrekai -page_rotate_cw.label=Nabene jɨrekai -page_rotate_cw_label=Nabene jɨrekai -page_rotate_ccw.title=Jarɨ́fene jirekaɨ -page_rotate_ccw.label=Jarɨ́fene jirekaɨ -page_rotate_ccw_label=Jarɨ́fene jirekaɨ - - -# Document properties dialog box -document_properties_file_name=Ráanɨ mamékɨ: -document_properties_file_size=Ráanɨ dɨeze: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Kúega mámekɨ: -document_properties_author=Fɨnokamɨe: -document_properties_subject=Mɨnɨka: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Fɨnoraɨma: -document_properties_version=Yóga ráfue PDF: -document_properties_close=Ɨ́baide - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -attachments.title=Dájemo jónega akatairi -attachments_label=Dano jónega -thumbs.title=Dúe íya akatairi -thumbs_label=Dúe íya - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Rabe {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Dúe íya rabe {{page}} - -# Find panel button title and messages -find_previous_label=Jɨáɨkena\u0020 -find_next_label=Báɨfene -find_highlight=Nana rɨgɨno -find_not_found=Daɨna báñeiga - -# Error panel labels -error_more_info=Jamano ráfue -error_less_info=Dúe ráfue -error_close=Ɨ́bai -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Úaina: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Jónia ráa: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Ida: {{line}} - -# Predefined zoom values -page_scale_auto=Zoom dama fɨnode -page_scale_actual=Bírui dɨeze -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Fɨgòñede - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} baítade] -password_ok=Jɨɨ - diff --git a/addons/web/static/lib/pdfjs/web/locale/hu/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/hu/viewer.properties index fb5e35f4dfb..f7a48511fc8 100644 --- a/addons/web/static/lib/pdfjs/web/locale/hu/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/hu/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Aktuális nézet tools.title=Eszközök tools_label=Eszközök first_page.title=Ugrás az első oldalra -first_page.label=Ugrás az első oldalra first_page_label=Ugrás az első oldalra last_page.title=Ugrás az utolsó oldalra -last_page.label=Ugrás az utolsó oldalra last_page_label=Ugrás az utolsó oldalra page_rotate_cw.title=Forgatás az óramutató járásával egyezően -page_rotate_cw.label=Forgatás az óramutató járásával egyezően page_rotate_cw_label=Forgatás az óramutató járásával egyezően page_rotate_ccw.title=Forgatás az óramutató járásával ellentétesen -page_rotate_ccw.label=Forgatás az óramutató járásával ellentétesen page_rotate_ccw_label=Forgatás az óramutató járásával ellentétesen cursor_text_select_tool.title=Szövegkijelölő eszköz bekapcsolása @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Szövegkijelölő eszköz cursor_hand_tool.title=Kéz eszköz bekapcsolása cursor_hand_tool_label=Kéz eszköz +scroll_page.title=Oldalgörgetés használata +scroll_page_label=Oldalgörgetés scroll_vertical.title=Függőleges görgetés használata scroll_vertical_label=Függőleges görgetés scroll_horizontal.title=Vízszintes görgetés használata @@ -137,17 +135,24 @@ print_progress_close=Mégse # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Oldalsáv be/ki -toggle_sidebar_notification.title=Oldalsáv be/ki (a dokumentum vázlatot/mellékleteket tartalmaz) +toggle_sidebar_notification2.title=Oldalsáv be/ki (a dokumentum vázlatot/mellékleteket/rétegeket tartalmaz) toggle_sidebar_label=Oldalsáv be/ki document_outline.title=Dokumentum megjelenítése online (dupla kattintás minden elem kinyitásához/összecsukásához) document_outline_label=Dokumentumvázlat attachments.title=Mellékletek megjelenítése attachments_label=Van melléklet +layers.title=Rétegek megjelenítése (dupla kattintás az összes réteg alapértelmezett állapotra visszaállításához) +layers_label=Rétegek thumbs.title=Bélyegképek megjelenítése thumbs_label=Bélyegképek +current_outline_item.title=Jelenlegi vázlatelem megkeresése +current_outline_item_label=Jelenlegi vázlatelem findbar.title=Keresés a dokumentumban findbar_label=Keresés +additional_layers=További rétegek +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}}. oldal # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=A kifejezés következő előfordulásának keresése find_next_label=Tovább find_highlight=Összes kiemelése find_match_case_label=Kis- és nagybetűk megkülönböztetése +find_match_diacritics_label=Diakritikus jelek find_entire_word_label=Teljes szavak find_reached_top=A dokumentum eleje elérve, folytatás a végétől find_reached_bottom=A dokumentum vége elérve, folytatás az elejétől @@ -220,7 +226,7 @@ page_scale_actual=Valódi méret page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Hiba +loading=Betöltés… loading_error=Hiba történt a PDF betöltésekor. invalid_file_error=Érvénytelen vagy sérült PDF fájl. missing_file_error=Hiányzó PDF fájl. @@ -243,4 +249,33 @@ password_cancel=Mégse printing_not_supported=Figyelmeztetés: Ez a böngésző nem teljesen támogatja a nyomtatást. printing_not_ready=Figyelmeztetés: A PDF nincs teljesen betöltve a nyomtatáshoz. web_fonts_disabled=Webes betűkészletek letiltva: nem használhatók a beágyazott PDF betűkészletek. -document_colors_not_allowed=A PDF dokumentumok nem használhatják saját színeiket: „Az oldalak a saját maguk által kiválasztott színeket használhatják” beállítás ki van kapcsolva a böngészőben. + +# Editor +editor_none.title=Kommentárszerkesztés letiltása +editor_none_label=Szerkesztés letiltása +editor_free_text.title=FreeText kommentár hozzáadása +editor_free_text_label=FreeText kommentár +editor_ink.title=Tintajegyzet hozzáadása +editor_ink_label=Tintajegyzet + +freetext_default_content=Írj be egy szöveget… + +free_text_default_content=Írjon be szöveget… + +# Editor Parameters +editor_free_text_font_color=Betűszín +editor_free_text_font_size=Betűméret +editor_ink_line_color=Vonalszín +editor_ink_line_thickness=Vonalvastagság + +# Editor Parameters +editor_free_text_color=Szín +editor_free_text_size=Méret +editor_ink_color=Szín +editor_ink_thickness=Vastagság +editor_ink_opacity=Átlátszatlanság + +# Editor aria +editor_free_text_aria_label=Szabad szöveges szerkesztő +editor_ink_aria_label=Tollat használó szerkesztő +editor_ink_canvas_aria_label=Felhasználó által készített kép diff --git a/addons/web/static/lib/pdfjs/web/locale/hy-AM/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/hy-AM/viewer.properties index e94633c0946..a97ae3cef08 100644 --- a/addons/web/static/lib/pdfjs/web/locale/hy-AM/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/hy-AM/viewer.properties @@ -35,7 +35,7 @@ zoom_in_label=Խոշորացնել zoom.title=Մասշտաբը\u0020 presentation_mode.title=Անցնել Ներկայացման եղանակին presentation_mode_label=Ներկայացման եղանակ -open_file.title=Բացել Ֆայլ +open_file.title=Բացել նիշք open_file_label=Բացել print.title=Տպել print_label=Տպել @@ -48,28 +48,38 @@ bookmark_label=Ընթացիկ տեսքը tools.title=Գործիքներ tools_label=Գործիքներ first_page.title=Անցնել առաջին էջին -first_page.label=Անցնել առաջին էջին first_page_label=Անցնել առաջին էջին last_page.title=Անցնել վերջին էջին -last_page.label=Անցնել վերջին էջին last_page_label=Անցնել վերջին էջին page_rotate_cw.title=Պտտել ըստ ժամացույցի սլաքի -page_rotate_cw.label=Պտտել ըստ ժամացույցի սլաքի page_rotate_cw_label=Պտտել ըստ ժամացույցի սլաքի page_rotate_ccw.title=Պտտել հակառակ ժամացույցի սլաքի -page_rotate_ccw.label=Պտտել հակառակ ժամացույցի սլաքի page_rotate_ccw_label=Պտտել հակառակ ժամացույցի սլաքի -cursor_text_select_tool.title=Միացնել Տեքստը ընտրելու գործիքը -cursor_text_select_tool_label=Տեքստը ընտրելու գործիք +cursor_text_select_tool.title=Միացնել գրույթ ընտրելու գործիքը +cursor_text_select_tool_label=Գրույթը ընտրելու գործիք cursor_hand_tool.title=Միացնել Ձեռքի գործիքը cursor_hand_tool_label=Ձեռքի գործիք +scroll_vertical.title=Օգտագործել ուղղահայաց ոլորում +scroll_vertical_label=Ուղղահայաց ոլորում +scroll_horizontal.title=Օգտագործել հորիզոնական ոլորում +scroll_horizontal_label=Հորիզոնական ոլորում +scroll_wrapped.title=Օգտագործել փաթաթված ոլորում +scroll_wrapped_label=Փաթաթված ոլորում + +spread_none.title=Մի միացեք էջի վերածածկերին +spread_none_label=Չկա վերածածկեր +spread_odd.title=Միացեք էջի վերածածկերին սկսելով՝ կենտ համարակալված էջերով +spread_odd_label=Կենտ վերածածկեր +spread_even.title=Միացեք էջի վերածածկերին սկսելով՝ զույգ համարակալված էջերով +spread_even_label=Զույգ վերածածկեր + # Document properties dialog box -document_properties.title=Փաստաթղթի հատկությունները... -document_properties_label=Փաստաթղթի հատկությունները... -document_properties_file_name=Ֆայլի անունը. -document_properties_file_size=Ֆայլի չափը. +document_properties.title=Փաստաթղթի հատկությունները… +document_properties_label=Փաստաթղթի հատկությունները… +document_properties_file_name=Նիշքի անունը. +document_properties_file_size=Նիշք չափը. # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # will be replaced by the PDF file size in kilobytes, respectively in bytes. document_properties_kb={{size_kb}} ԿԲ ({{size_b}} բայթ) @@ -90,7 +100,7 @@ document_properties_producer=PDF-ի հեղինակը. document_properties_version=PDF-ի տարբերակը. document_properties_page_count=Էջերի քանակը. document_properties_page_size=Էջի չափը. -document_properties_page_size_unit_inches=դյ. +document_properties_page_size_unit_inches=ում document_properties_page_size_unit_millimeters=մմ document_properties_page_size_orientation_portrait=ուղղաձիգ document_properties_page_size_orientation_landscape=հորիզոնական @@ -106,6 +116,11 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} # "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by # the size, respectively their unit of measurement, name, and orientation, of the (current) page. document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Արագ վեբ դիտում․ +document_properties_linearized_yes=Այո +document_properties_linearized_no=Ոչ document_properties_close=Փակել print_progress_message=Նախապատրաստում է փաստաթուղթը տպելուն... @@ -118,9 +133,8 @@ print_progress_close=Չեղարկել # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Բացել/Փակել Կողային վահանակը -toggle_sidebar_notification.title=Փոխանջատել Կողային գոտին (փաստաթուղթը պարունակում է ուրվագիծ/կցորդ) toggle_sidebar_label=Բացել/Փակել Կողային վահանակը -document_outline.title=Ցուցադրել փաստաթղթի ուրվագիծը (կրկնակի սեղմեք՝ միույթները ընդարձակելու/կոծկելու համար) +document_outline.title=Ցուցադրել փաստաթղթի ուրվագիծը (կրկնակի սեղմեք՝ միավորները ընդարձակելու/կոծկելու համար) document_outline_label=Փաստաթղթի բովանդակությունը attachments.title=Ցուցադրել կցորդները attachments_label=Կցորդներ @@ -146,8 +160,30 @@ find_next.title=Գտիր արտահայտության հաջորդ հանդիպ find_next_label=Հաջորդը find_highlight=Գունանշել բոլորը find_match_case_label=Մեծ(փոքր)ատառ հաշվի առնել +find_entire_word_label=Ամբողջ բառերը find_reached_top=Հասել եք փաստաթղթի վերևին, կշարունակվի ներքևից find_reached_bottom=Հասել եք փաստաթղթի վերջին, կշարունակվի վերևից +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ հոգնակի(ընդհանուր) ]} +find_match_count[one]={{current}} {{total}}-ի համընկնումից +find_match_count[two]={{current}} {{total}}-ի համընկնումներից +find_match_count[few]={{current}} {{total}}-ի համընկնումներից +find_match_count[many]={{current}} {{total}}-ի համընկնումներից +find_match_count[other]={{current}} {{total}}-ի համընկնումներից +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ հոգնակի (սահմանը) ]} +find_match_count_limit[zero]=Ավելին քան {{limit}} համընկնումները +find_match_count_limit[one]=Ավելին քան {{limit}} համընկնումը +find_match_count_limit[two]=Ավելին քան {{limit}} համընկնումներներ +find_match_count_limit[few]=Ավելին քան {{limit}} համընկնումներներ +find_match_count_limit[many]=Ավելին քան {{limit}} համընկնումներներ +find_match_count_limit[other]=Ավելին քան {{limit}} համընկնումներներ find_not_found=Արտահայտությունը չգտնվեց # Error panel labels @@ -178,13 +214,15 @@ page_scale_actual=Իրական չափը # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Սխալ loading_error=Սխալ՝ PDF ֆայլը բացելիս։ -invalid_file_error=Սխալ կամ բնասված PDF ֆայլ: +invalid_file_error=Սխալ կամ վնասված PDF ֆայլ: missing_file_error=PDF ֆայլը բացակայում է: unexpected_response_error=Սպասարկիչի անսպասելի պատասխան: +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -198,4 +236,3 @@ password_cancel=Չեղարկել printing_not_supported=Զգուշացում. Տպելը ամբողջությամբ չի աջակցվում դիտարկիչի կողմից։ printing_not_ready=Զգուշացում. PDF-ը ամբողջությամբ չի բեռնավորվել տպելու համար: web_fonts_disabled=Վեբ-տառատեսակները անջատված են. հնարավոր չէ օգտագործել ներկառուցված PDF տառատեսակները: -document_colors_not_allowed=PDF փաստաթղթերին թույլատրված չէ օգտագործել իրենց սեփական գույները: “Թույլատրել էջերին ընտրել իրենց սեփական գույները“ ընտրանքը անջատված է դիտարկիչում: diff --git a/addons/web/static/lib/pdfjs/web/locale/hye/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/hye/viewer.properties new file mode 100644 index 00000000000..d531b9d280c --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/locale/hye/viewer.properties @@ -0,0 +1,251 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Նախորդ էջ +previous_label=Նախորդը +next.title=Յաջորդ էջ +next_label=Յաջորդը + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=էջ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}}-ից\u0020 +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}}-ը {{pagesCount}})-ից + +zoom_out.title=Փոքրացնել +zoom_out_label=Փոքրացնել +zoom_in.title=Խոշորացնել +zoom_in_label=Խոշորացնել +zoom.title=Խոշորացում +presentation_mode.title=Անցնել ներկայացման եղանակին +presentation_mode_label=Ներկայացման եղանակ +open_file.title=Բացել նիշքը +open_file_label=Բացել +print.title=Տպել +print_label=Տպել +download.title=Բեռնել +download_label=Բեռնել +bookmark.title=Ընթացիկ տեսքով (պատճէնել կամ բացել նոր պատուհանում) +bookmark_label=Ընթացիկ տեսք + +# Secondary toolbar and context menu +tools.title=Գործիքներ +tools_label=Գործիքներ +first_page.title=Գնալ դէպի առաջին էջ +first_page_label=Գնալ դէպի առաջին էջ +last_page.title=Գնալ դէպի վերջին էջ +last_page_label=Գնալ դէպի վերջին էջ +page_rotate_cw.title=Պտտել ժամացոյցի սլաքի ուղղութեամբ +page_rotate_cw_label=Պտտել ժամացոյցի սլաքի ուղղութեամբ +page_rotate_ccw.title=Պտտել ժամացոյցի սլաքի հակառակ ուղղութեամբ +page_rotate_ccw_label=Պտտել ժամացոյցի սլաքի հակառակ ուղղութեամբ + +cursor_text_select_tool.title=Միացնել գրոյթ ընտրելու գործիքը +cursor_text_select_tool_label=Գրուածք ընտրելու գործիք +cursor_hand_tool.title=Միացնել ձեռքի գործիքը +cursor_hand_tool_label=Ձեռքի գործիք + +scroll_page.title=Աւգտագործել էջի ոլորում +scroll_page_label=Էջի ոլորում +scroll_vertical.title=Աւգտագործել ուղղահայեաց ոլորում +scroll_vertical_label=Ուղղահայեաց ոլորում +scroll_horizontal.title=Աւգտագործել հորիզոնական ոլորում +scroll_horizontal_label=Հորիզոնական ոլորում +scroll_wrapped.title=Աւգտագործել փաթաթուած ոլորում +scroll_wrapped_label=Փաթաթուած ոլորում + +spread_none.title=Մի միացէք էջի կոնտեքստում +spread_none_label=Չկայ կոնտեքստ +spread_odd.title=Միացէք էջի կոնտեքստին սկսելով՝ կենտ համարակալուած էջերով +spread_odd_label=Տարաւրինակ կոնտեքստ +spread_even.title=Միացէք էջի կոնտեքստին սկսելով՝ զոյգ համարակալուած էջերով +spread_even_label=Հաւասար վերածածկեր + +# Document properties dialog box +document_properties.title=Փաստաթղթի հատկութիւնները… +document_properties_label=Փաստաթղթի յատկութիւնները… +document_properties_file_name=Նիշքի անունը․ +document_properties_file_size=Նիշք չափը. +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} ԿԲ ({{size_b}} բայթ) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} ՄԲ ({{size_b}} բայթ) +document_properties_title=Վերնագիր +document_properties_author=Հեղինակ․ +document_properties_subject=առարկայ +document_properties_keywords=Հիմնաբառեր +document_properties_creation_date=Ստեղծման ամսաթիւ +document_properties_modification_date=Փոփոխութեան ամսաթիւ. +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Ստեղծող +document_properties_producer=PDF-ի Արտադրողը. +document_properties_version=PDF-ի տարբերակը. +document_properties_page_count=Էջերի քանակը. +document_properties_page_size=Էջի չափը. +document_properties_page_size_unit_inches=ում +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=ուղղաձիգ +document_properties_page_size_orientation_landscape=հորիզոնական +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Նամակ +document_properties_page_size_name_legal=Աւրինական +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Արագ վեբ դիտում․ +document_properties_linearized_yes=Այո +document_properties_linearized_no=Ոչ +document_properties_close=Փակել + +print_progress_message=Նախապատրաստում է փաստաթուղթը տպելուն… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Չեղարկել + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Փոխարկել կողային վահանակը +toggle_sidebar_notification2.title=Փոխանջատել կողմնասիւնը (փաստաթուղթը պարունակում է ուրուագիծ/կցորդներ/շերտեր) +toggle_sidebar_label=Փոխարկել կողային վահանակը +document_outline.title=Ցուցադրել փաստաթղթի ուրուագիծը (կրկնակի սեղմէք՝ միաւորները ընդարձակելու/կոծկելու համար) +document_outline_label=Փաստաթղթի ուրուագիծ +attachments.title=Ցուցադրել կցորդները +attachments_label=Կցորդներ +layers.title=Ցուցադրել շերտերը (կրկնահպել վերակայելու բոլոր շերտերը սկզբնադիր վիճակի) +layers_label=Շերտեր +thumbs.title=Ցուցադրել մանրապատկերը +thumbs_label=Մանրապատկեր +current_outline_item.title=Գտէք ընթացիկ գծագրման տարրը +current_outline_item_label=Ընթացիկ գծագրման տարր +findbar.title=Գտնել փաստաթղթում +findbar_label=Որոնում + +additional_layers=Լրացուցիչ շերտեր +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Էջ {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Էջը {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Էջի մանրապատկերը {{page}} + +# Find panel button title and messages +find_input.title=Որոնում +find_input.placeholder=Գտնել փաստաթղթում… +find_previous.title=Գտնել արտայայտութեան նախորդ արտայայտութիւնը +find_previous_label=Նախորդը +find_next.title=Գտիր արտայայտութեան յաջորդ արտայայտութիւնը +find_next_label=Հաջորդը +find_highlight=Գունանշել բոլորը +find_match_case_label=Հաշուի առնել հանգամանքը +find_match_diacritics_label=Հնչիւնատարբերիչ նշանների համապատասխանեցում +find_entire_word_label=Ամբողջ բառերը +find_reached_top=Հասել եք փաստաթղթի վերեւին,շարունակել ներքեւից +find_reached_bottom=Հասել էք փաստաթղթի վերջին, շարունակել վերեւից +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} {{total}}-ի համընկնումից +find_match_count[two]={{current}} {{total}}-ի համընկնումներից +find_match_count[few]={{current}} {{total}}-ի համընկնումներից +find_match_count[many]={{current}} {{total}}-ի համընկնումներից +find_match_count[other]={{current}} {{total}}-ի համընկնումներից +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Աւելին քան {{limit}} համընկնումները +find_match_count_limit[one]=Աւելին քան {{limit}} համընկնումը +find_match_count_limit[two]=Աւելին քան {{limit}} համընկնումները +find_match_count_limit[few]=Աւելին քան {{limit}} համընկնումները +find_match_count_limit[many]=Աւելին քան {{limit}} համընկնումները +find_match_count_limit[other]=Աւելին քան {{limit}} համընկնումները +find_not_found=Արտայայտութիւնը չգտնուեց + +# Error panel labels +error_more_info=Աւելի շատ տեղեկութիւն +error_less_info=Քիչ տեղեկութիւն +error_close=Փակել +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (կառուցումը. {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Գրութիւնը. {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Շեղջ. {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=նիշք․ {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Տողը. {{line}} +rendering_error=Սխալ է տեղի ունեցել էջի մեկնաբանման ժամանակ + +# Predefined zoom values +page_scale_width=Էջի լայնութիւն +page_scale_fit=Հարմարեցնել էջը +page_scale_auto=Ինքնաշխատ խոշորացում +page_scale_actual=Իրական չափը +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Բեռնում… +loading_error=PDF նիշքը բացելիս սխալ է տեղի ունեցել։ +invalid_file_error=Սխալ կամ վնասուած PDF նիշք։ +missing_file_error=PDF նիշքը բացակաիւմ է։ +unexpected_response_error=Սպասարկիչի անսպասելի պատասխան։ + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Ծանոթութիւն] +password_label=Մուտքագրէք գաղտնաբառը այս PDF նիշքը բացելու համար +password_invalid=Գաղտնաբառը սխալ է: Կրկին փորձէք: +password_ok=Լաւ +password_cancel=Չեղարկել + +printing_not_supported=Զգուշացում. Տպելը ամբողջութեամբ չի աջակցուում զննարկիչի կողմից։ +printing_not_ready=Զգուշացում. PDF֊ը ամբողջութեամբ չի բեռնաւորուել տպելու համար։ +web_fonts_disabled=Վեբ-տառատեսակները անջատուած են. հնարաւոր չէ աւգտագործել ներկառուցուած PDF տառատեսակները։ diff --git a/addons/web/static/lib/pdfjs/web/locale/ia/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ia/viewer.properties index ee8842cf639..d64acf6ff3b 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ia/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ia/viewer.properties @@ -46,18 +46,14 @@ bookmark_label=Vista actual # Secondary toolbar and context menu tools.title=Instrumentos -tools_label=Intrumentos +tools_label=Instrumentos first_page.title=Ir al prime pagina -first_page.label=Ir al prime pagina first_page_label=Ir al prime pagina last_page.title=Ir al prime pagina -last_page.label=Ir al prime pagina last_page_label=Ir al prime pagina page_rotate_cw.title=Rotar in senso horari -page_rotate_cw.label=Rotar in senso horari page_rotate_cw_label=Rotar in senso horari page_rotate_ccw.title=Rotar in senso antihorari -page_rotate_ccw.label=Rotar in senso antihorari page_rotate_ccw_label=Rotar in senso antihorari cursor_text_select_tool.title=Activar le instrumento de selection de texto @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Instrumento de selection de texto cursor_hand_tool.title=Activar le instrumento mano cursor_hand_tool_label=Instrumento mano +scroll_page.title=Usar rolamento de pagina +scroll_page_label=Rolamento de pagina scroll_vertical.title=Usar rolamento vertical scroll_vertical_label=Rolamento vertical scroll_horizontal.title=Usar rolamento horizontal @@ -137,17 +135,24 @@ print_progress_close=Cancellar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Monstrar/celar le barra lateral -toggle_sidebar_notification.title=Monstrar/celar le barra lateral (le documento contine structura/attachamentos) +toggle_sidebar_notification2.title=Monstrar/celar le barra lateral (le documento contine structura/attachamentos/stratos) toggle_sidebar_label=Monstrar/celar le barra lateral document_outline.title=Monstrar le schema del documento (clic duple pro expander/contraher tote le elementos) document_outline_label=Schema del documento attachments.title=Monstrar le annexos attachments_label=Annexos +layers.title=Monstrar stratos (clicca duple pro remontar tote le stratos al stato predefinite) +layers_label=Stratos thumbs.title=Monstrar le vignettes thumbs_label=Vignettes -findbar.title=Recercar in le documento +current_outline_item.title=Trovar le elemento de structura actual +current_outline_item_label=Elemento de structura actual +findbar.title=Cercar in le documento findbar_label=Cercar +additional_layers=Altere stratos +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pagina {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -164,10 +169,11 @@ find_previous_label=Previe find_next.title=Trovar le successive occurrentia del phrase find_next_label=Sequente find_highlight=Evidentiar toto -find_match_case_label=Distinger majusculas/minusculas +find_match_case_label=Distinguer majusculas/minusculas +find_match_diacritics_label=Differentiar diacriticos find_entire_word_label=Parolas integre -find_reached_top=Le initio del documento ha essite attingite, on continua ab le fin -find_reached_bottom=Le fin del documento ha essite attingite, on continua ab le initio +find_reached_top=Initio del documento attingite, continuation ab fin +find_reached_bottom=Fin del documento attingite, continuation ab initio # LOCALIZATION NOTE (find_match_count): The supported plural forms are # [one|two|few|many|other], with [other] as the default value. # "{{current}}" and "{{total}}" will be replaced by a number representing the @@ -187,7 +193,7 @@ find_match_count_limit[zero]=Plus de {{limit}} concordantias find_match_count_limit[one]=Plus de {{limit}} concordantia find_match_count_limit[two]=Plus de {{limit}} concordantias find_match_count_limit[few]=Plus de {{limit}} concordantias -find_match_count_limit[many]=Plus de {{limit}} concordantias +find_match_count_limit[many]=Plus de {{limit}} correspondentias find_match_count_limit[other]=Plus de {{limit}} concordantias find_not_found=Phrase non trovate @@ -211,16 +217,16 @@ error_line=Linea: {{line}} rendering_error=Un error occurreva durante que on processava le pagina. # Predefined zoom values -page_scale_width=Largessa pagina plen +page_scale_width=Plen largor del pagina page_scale_fit=Pagina integre page_scale_auto=Zoom automatic -page_scale_actual=Dimension actual +page_scale_actual=Dimension real # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Cargante… loading_error=Un error occurreva durante que on cargava le file PDF. invalid_file_error=File PDF corrumpite o non valide. missing_file_error=File PDF mancante. @@ -242,5 +248,34 @@ password_cancel=Cancellar printing_not_supported=Attention : le impression non es totalmente supportate per ce navigator. printing_not_ready=Attention: le file PDF non es integremente cargate pro lo poter imprimer. -web_fonts_disabled=Le typos de character de web es inactive: incapace de usar le typos de character incorporate al PDF. -document_colors_not_allowed=Le documentos PDF non pote utilisar lor proprie colores: “Autorisar le paginas web a utilisar lor proprie colores” es disactivate in le navigator. +web_fonts_disabled=Le typos de litteras web es disactivate: impossibile usar le typos de litteras PDF incorporate. + +# Editor +editor_none.title=Disactivar modificationes del annotationes +editor_none_label=Disactivar redaction +editor_free_text.title=Add annotation FreeText +editor_free_text_label=Annotation FreeText +editor_ink.title=Adder annotation Ink +editor_ink_label=Annotation Ink + +freetext_default_content=Scribe alcun texto… + +free_text_default_content=Insere le texto… + +# Editor Parameters +editor_free_text_font_color=Color de character +editor_free_text_font_size=Dimension del characteres +editor_ink_line_color=Colores del linea +editor_ink_line_thickness=Spissor del linea + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Dimension +editor_ink_color=Color +editor_ink_thickness=Spissor +editor_ink_opacity=Opacitate + +# Editor aria +editor_free_text_aria_label=Redactor de texto libere +editor_ink_aria_label=Editor penna +editor_ink_canvas_aria_label=Imagine create per le usator diff --git a/addons/web/static/lib/pdfjs/web/locale/id/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/id/viewer.properties index 58ebc40d796..83ab3532412 100644 --- a/addons/web/static/lib/pdfjs/web/locale/id/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/id/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Tampilan Sekarang tools.title=Alat tools_label=Alat first_page.title=Buka Halaman Pertama -first_page.label=Ke Halaman Pertama first_page_label=Buka Halaman Pertama last_page.title=Buka Halaman Terakhir -last_page.label=Ke Halaman Terakhir last_page_label=Buka Halaman Terakhir page_rotate_cw.title=Putar Searah Jarum Jam -page_rotate_cw.label=Putar Searah Jarum Jam page_rotate_cw_label=Putar Searah Jarum Jam page_rotate_ccw.title=Putar Berlawanan Arah Jarum Jam -page_rotate_ccw.label=Putar Berlawanan Arah Jarum Jam page_rotate_ccw_label=Putar Berlawanan Arah Jarum Jam cursor_text_select_tool.title=Aktifkan Alat Seleksi Teks @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Alat Seleksi Teks cursor_hand_tool.title=Aktifkan Alat Tangan cursor_hand_tool_label=Alat Tangan +scroll_page.title=Gunakan Pengguliran Laman +scroll_page_label=Pengguliran Laman scroll_vertical.title=Gunakan Penggeseran Vertikal scroll_vertical_label=Penggeseran Vertikal scroll_horizontal.title=Gunakan Penggeseran Horizontal @@ -137,17 +135,24 @@ print_progress_close=Batalkan # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Aktif/Nonaktifkan Bilah Samping -toggle_sidebar_notification.title=Aktif/Nonaktifkan Bilah Samping (dokumen berisi kerangka/lampiran) +toggle_sidebar_notification2.title=Aktif/Nonaktifkan Bilah Samping (dokumen berisi kerangka/lampiran/lapisan) toggle_sidebar_label=Aktif/Nonaktifkan Bilah Samping document_outline.title=Tampilkan Kerangka Dokumen (klik ganda untuk membentangkan/menciutkan semua item) document_outline_label=Kerangka Dokumen attachments.title=Tampilkan Lampiran attachments_label=Lampiran +layers.title=Tampilkan Lapisan (klik ganda untuk mengatur ulang semua lapisan ke keadaan baku) +layers_label=Lapisan thumbs.title=Tampilkan Miniatur thumbs_label=Miniatur +current_outline_item.title=Cari Butir Ikhtisar Saat Ini +current_outline_item_label=Butir Ikhtisar Saat Ini findbar.title=Temukan di Dokumen findbar_label=Temukan +additional_layers=Lapisan Tambahan +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Halaman {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Temukan lebih lanjut find_next_label=Selanjutnya find_highlight=Sorot semuanya find_match_case_label=Cocokkan BESAR/kecil +find_match_diacritics_label=Pencocokan Diakritik find_entire_word_label=Seluruh teks find_reached_top=Sampai di awal dokumen, dilanjutkan dari bawah find_reached_bottom=Sampai di akhir dokumen, dilanjutkan dari atas @@ -220,7 +226,7 @@ page_scale_actual=Ukuran Asli page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Galat +loading=Memuat… loading_error=Galat terjadi saat memuat PDF. invalid_file_error=Berkas PDF tidak valid atau rusak. missing_file_error=Berkas PDF tidak ada. @@ -243,4 +249,33 @@ password_cancel=Batal printing_not_supported=Peringatan: Pencetakan tidak didukung secara lengkap pada peramban ini. printing_not_ready=Peringatan: Berkas PDF masih belum dimuat secara lengkap untuk dapat dicetak. web_fonts_disabled=Font web dinonaktifkan: tidak dapat menggunakan font PDF yang tersemat. -document_colors_not_allowed=Dokumen PDF tidak diizinkan untuk menggunakan warnanya sendiri karena setelan 'Izinkan laman memilih warna sendiri' dinonaktifkan pada pengaturan. + +# Editor +editor_none.title=Nonaktifkan Penyuntingan Anotasi +editor_none_label=Nonaktifkan Penyuntingan +editor_free_text.title=Tambahkan Notasi FreeText +editor_free_text_label=Notasi FreeText +editor_ink.title=Tambahkan Notasi Tinta +editor_ink_label=Notasi Tinta + +freetext_default_content=Masukkan beberapa teks… + +free_text_default_content=Masukkan teks… + +# Editor Parameters +editor_free_text_font_color=Warna Fon +editor_free_text_font_size=Ukuran Fon +editor_ink_line_color=Warna Garis +editor_ink_line_thickness=Ketebalan Garis + +# Editor Parameters +editor_free_text_color=Warna +editor_free_text_size=Ukuran +editor_ink_color=Warna +editor_ink_thickness=Ketebalan +editor_ink_opacity=Opasitas + +# Editor aria +editor_free_text_aria_label=Editor FreeText +editor_ink_aria_label=Editor Tinta +editor_ink_canvas_aria_label=Gambar yang dibuat pengguna diff --git a/addons/web/static/lib/pdfjs/web/locale/is/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/is/viewer.properties index d24c2adf554..b150f2eacfd 100644 --- a/addons/web/static/lib/pdfjs/web/locale/is/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/is/viewer.properties @@ -28,10 +28,10 @@ of_pages=af {{pagesCount}} # respectively a number representing the total number of pages in the document. page_of_pages=({{pageNumber}} af {{pagesCount}}) -zoom_out.title=Minnka -zoom_out_label=Minnka -zoom_in.title=Stækka -zoom_in_label=Stækka +zoom_out.title=Minnka aðdrátt +zoom_out_label=Minnka aðdrátt +zoom_in.title=Auka aðdrátt +zoom_in_label=Auka aðdrátt zoom.title=Aðdráttur presentation_mode.title=Skipta yfir á kynningarham presentation_mode_label=Kynningarhamur @@ -48,16 +48,12 @@ bookmark_label=Núverandi sýn tools.title=Verkfæri tools_label=Verkfæri first_page.title=Fara á fyrstu síðu -first_page.label=Fara á fyrstu síðu first_page_label=Fara á fyrstu síðu last_page.title=Fara á síðustu síðu -last_page.label=Fara á síðustu síðu last_page_label=Fara á síðustu síðu page_rotate_cw.title=Snúa réttsælis -page_rotate_cw.label=Snúa réttsælis page_rotate_cw_label=Snúa réttsælis page_rotate_ccw.title=Snúa rangsælis -page_rotate_ccw.label=Snúa rangsælis page_rotate_ccw_label=Snúa rangsælis cursor_text_select_tool.title=Virkja textavalsáhald @@ -65,10 +61,14 @@ cursor_text_select_tool_label=Textavalsáhald cursor_hand_tool.title=Virkja handarverkfæri cursor_hand_tool_label=Handarverkfæri +scroll_page.title=Nota síðuskrun +scroll_page_label=Síðuskrun scroll_vertical.title=Nota lóðrétt skrun scroll_vertical_label=Lóðrétt skrun scroll_horizontal.title=Nota lárétt skrun scroll_horizontal_label=Lárétt skrun +scroll_wrapped.title=Nota línuskipt síðuskrun +scroll_wrapped_label=Línuskipt síðuskrun spread_none.title=Ekki taka þátt í dreifingu síðna spread_none_label=Engin dreifing @@ -120,6 +120,7 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) # LOCALIZATION NOTE (document_properties_linearized): The linearization status of # the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fljótleg vefskoðun: document_properties_linearized_yes=Já document_properties_linearized_no=Nei document_properties_close=Loka @@ -133,18 +134,25 @@ print_progress_close=Hætta við # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) -toggle_sidebar.title=Víxla hliðslá -toggle_sidebar_notification.title=Víxla hliðarslá (skjal inniheldur yfirlit/viðhengi) -toggle_sidebar_label=Víxla hliðslá +toggle_sidebar.title=Víxla hliðarspjaldi af/á +toggle_sidebar_notification2.title=Víxla hliðarslá (skjal inniheldur yfirlit/viðhengi/lög) +toggle_sidebar_label=Víxla hliðarspjaldi af/á document_outline.title=Sýna yfirlit skjals (tvísmelltu til að opna/loka öllum hlutum) document_outline_label=Efnisskipan skjals attachments.title=Sýna viðhengi attachments_label=Viðhengi +layers.title=Birta lög (tvísmelltu til að endurstilla öll lög í sjálfgefna stöðu) +layers_label=Lög thumbs.title=Sýna smámyndir thumbs_label=Smámyndir +current_outline_item.title=Finna núverandi atriði efnisskipunar +current_outline_item_label=Núverandi atriði efnisskipunar findbar.title=Leita í skjali findbar_label=Leita +additional_layers=Viðbótarlög +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Síða {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -162,6 +170,7 @@ find_next.title=Leita að næsta tilfelli þessara orða find_next_label=Næsti find_highlight=Lita allt find_match_case_label=Passa við stafstöðu +find_match_diacritics_label=Passa við broddstafi find_entire_word_label=Heil orð find_reached_top=Náði efst í skjal, held áfram neðst find_reached_bottom=Náði enda skjals, held áfram efst @@ -217,12 +226,16 @@ page_scale_actual=Raunstærð page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Villa +loading=Hleður… loading_error=Villa kom upp við að hlaða inn PDF. invalid_file_error=Ógild eða skemmd PDF skrá. missing_file_error=Vantar PDF skrá. unexpected_response_error=Óvænt svar frá netþjóni. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -236,4 +249,33 @@ password_cancel=Hætta við printing_not_supported=Aðvörun: Prentun er ekki með fyllilegan stuðning á þessum vafra. printing_not_ready=Aðvörun: Ekki er búið að hlaða inn allri PDF skránni fyrir prentun. web_fonts_disabled=Vef leturgerðir eru óvirkar: get ekki notað innbyggðar PDF leturgerðir. -document_colors_not_allowed=PDF skjöl hafa ekki leyfi til að nota sína eigin liti: “Leyfa síðum að velja eigin liti” er óvirkt í vafranum. + +# Editor +editor_none.title=Gera breytingar á glósum óvirkar +editor_none_label=Gera breytingar óvirkar +editor_free_text.title=Bæta við FreeText-glósu +editor_free_text_label=FreeText-glósa +editor_ink.title=Bæta við Ink-glósu +editor_ink_label=Ink-glósa + +freetext_default_content=Settu inn einhvern texta… + +free_text_default_content=Settu inn texta… + +# Editor Parameters +editor_free_text_font_color=Litur leturs +editor_free_text_font_size=Leturstærð +editor_ink_line_color=Línulitur +editor_ink_line_thickness=Línubreidd + +# Editor Parameters +editor_free_text_color=Litur +editor_free_text_size=Stærð +editor_ink_color=Litur +editor_ink_thickness=Þykkt +editor_ink_opacity=Ógegnsæi + +# Editor aria +editor_free_text_aria_label=FreeText-ritill +editor_ink_aria_label=Ink-ritill +editor_ink_canvas_aria_label=Mynd gerð af notanda diff --git a/addons/web/static/lib/pdfjs/web/locale/it/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/it/viewer.properties index cff0258b8c7..6a2ef4d7f04 100644 --- a/addons/web/static/lib/pdfjs/web/locale/it/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/it/viewer.properties @@ -2,13 +2,29 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + previous.title = Pagina precedente previous_label = Precedente next.title = Pagina successiva next_label = Successiva + page.title = Pagina of_pages = di {{pagesCount}} page_of_pages = ({{pageNumber}} di {{pagesCount}}) + zoom_out.title = Riduci zoom zoom_out_label = Riduci zoom zoom_in.title = Aumenta zoom @@ -24,36 +40,39 @@ download.title = Scarica questo documento download_label = Download bookmark.title = Visualizzazione corrente (copia o apri in una nuova finestra) bookmark_label = Visualizzazione corrente + tools.title = Strumenti tools_label = Strumenti first_page.title = Vai alla prima pagina -first_page.label = Vai alla prima pagina first_page_label = Vai alla prima pagina last_page.title = Vai all’ultima pagina -last_page.label = Vai all’ultima pagina last_page_label = Vai all’ultima pagina page_rotate_cw.title = Ruota in senso orario -page_rotate_cw.label = Ruota in senso orario page_rotate_cw_label = Ruota in senso orario page_rotate_ccw.title = Ruota in senso antiorario -page_rotate_ccw.label = Ruota in senso antiorario page_rotate_ccw_label = Ruota in senso antiorario + cursor_text_select_tool.title = Attiva strumento di selezione testo cursor_text_select_tool_label = Strumento di selezione testo cursor_hand_tool.title = Attiva strumento mano cursor_hand_tool_label = Strumento mano + +scroll_page.title = Utilizza scorrimento pagine +scroll_page_label = Scorrimento pagine scroll_vertical.title = Scorri le pagine in verticale scroll_vertical_label = Scorrimento verticale scroll_horizontal.title = Scorri le pagine in orizzontale scroll_horizontal_label = Scorrimento orizzontale scroll_wrapped.title = Scorri le pagine in verticale, disponendole da sinistra a destra e andando a capo automaticamente scroll_wrapped_label = Scorrimento con a capo automatico + spread_none.title = Non raggruppare pagine spread_none_label = Nessun raggruppamento spread_odd.title = Crea gruppi di pagine che iniziano con numeri di pagina dispari spread_odd_label = Raggruppamento dispari spread_even.title = Crea gruppi di pagine che iniziano con numeri di pagina pari spread_even_label = Raggruppamento pari + document_properties.title = Proprietà del documento… document_properties_label = Proprietà del documento… document_properties_file_name = Nome file: @@ -86,22 +105,32 @@ document_properties_linearized = Visualizzazione web veloce: document_properties_linearized_yes = Sì document_properties_linearized_no = No document_properties_close = Chiudi + print_progress_message = Preparazione documento per la stampa… print_progress_percent = {{progress}}% print_progress_close = Annulla + toggle_sidebar.title = Attiva/disattiva barra laterale -toggle_sidebar_notification.title = Attiva/disattiva barra laterale (il documento contiene struttura/allegati) +toggle_sidebar_notification2.title = Attiva/disattiva barra laterale (il documento contiene struttura/allegati/livelli) toggle_sidebar_label = Attiva/disattiva barra laterale document_outline.title = Visualizza la struttura del documento (doppio clic per visualizzare/comprimere tutti gli elementi) document_outline_label = Struttura documento attachments.title = Visualizza allegati attachments_label = Allegati +layers.title = Visualizza livelli (doppio clic per ripristinare tutti i livelli allo stato predefinito) +layers_label = Livelli thumbs.title = Mostra le miniature thumbs_label = Miniature +current_outline_item.title = Trova elemento struttura corrente +current_outline_item_label = Elemento struttura corrente findbar.title = Trova nel documento findbar_label = Trova + +additional_layers = Livelli aggiuntivi +page_landmark = Pagina {{page}} thumb_page_title = Pagina {{page}} thumb_page_canvas = Miniatura della pagina {{page}} + find_input.title = Trova find_input.placeholder = Trova nel documento… find_previous.title = Trova l’occorrenza precedente del testo da cercare @@ -110,6 +139,7 @@ find_next.title = Trova l’occorrenza successiva del testo da cercare find_next_label = Successivo find_highlight = Evidenzia find_match_case_label = Maiuscole/minuscole +find_match_diacritics_label = Segni diacritici find_entire_word_label = Parole intere find_reached_top = Raggiunto l’inizio della pagina, continua dalla fine find_reached_bottom = Raggiunta la fine della pagina, continua dall’inizio @@ -127,6 +157,7 @@ find_match_count_limit[few] = Più di {{limit}} corrispondenze find_match_count_limit[many] = Più di {{limit}} corrispondenze find_match_count_limit[other] = Più di {{limit}} corrispondenze find_not_found = Testo non trovato + error_more_info = Ulteriori informazioni error_less_info = Nascondi dettagli error_close = Chiudi @@ -136,23 +167,53 @@ error_stack = Stack: {{stack}} error_file = File: {{file}} error_line = Riga: {{line}} rendering_error = Si è verificato un errore durante il rendering della pagina. + page_scale_width = Larghezza pagina page_scale_fit = Adatta a una pagina page_scale_auto = Zoom automatico page_scale_actual = Dimensioni effettive page_scale_percent = {{scale}}% -loading_error_indicator = Errore + +loading = Caricamento in corso… loading_error = Si è verificato un errore durante il caricamento del PDF. invalid_file_error = File PDF non valido o danneggiato. missing_file_error = File PDF non disponibile. unexpected_response_error = Risposta imprevista del server + annotation_date_string = {{date}}, {{time}} + text_annotation_type.alt = [Annotazione: {{type}}] password_label = Inserire la password per aprire questo file PDF. password_invalid = Password non corretta. Riprovare. password_ok = OK password_cancel = Annulla + printing_not_supported = Attenzione: la stampa non è completamente supportata da questo browser. printing_not_ready = Attenzione: il PDF non è ancora stato caricato completamente per la stampa. -web_fonts_disabled = I web font risultano disattivati: impossibile utilizzare i caratteri inclusi nel PDF. -document_colors_not_allowed = Non è possibile visualizzare i colori originali definiti nel file PDF: l’opzione del browser “Consenti alle pagine di scegliere i propri colori invece di quelli impostati” è disattivata. +web_fonts_disabled = I web font risultano disattivati: impossibile utilizzare i caratteri incorporati nel PDF. + +# Editor +editor_none.title = Disattiva modifica annotazioni +editor_none_label = Disattiva modifica +editor_free_text.title = Aggiungi annotazione testo libero +editor_free_text_label = Annotazione testo libero +editor_ink.title = Aggiungi annotazione a penna +editor_ink_label = Annotazione a penna + +free_text_default_content = Inserisci testo… + +# Editor Parameters +editor_free_text_font_color = Colore carattere +editor_free_text_font_size = Dimensione carattere +editor_ink_line_color = Colore linea +editor_ink_line_thickness = Spessore linea +editor_free_text_color = Colore +editor_free_text_size = Dimensione +editor_ink_color = Colore +editor_ink_thickness = Spessore +editor_ink_opacity = Opacità + +# Editor aria +editor_free_text_aria_label = Editor testo libero +editor_ink_aria_label = Editor penna +editor_ink_canvas_aria_label = Immagine creata dall’utente diff --git a/addons/web/static/lib/pdfjs/web/locale/ja/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ja/viewer.properties index 3a90b47bc95..88a9de2a8c1 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ja/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ja/viewer.properties @@ -48,35 +48,33 @@ bookmark_label=現在のビュー tools.title=ツール tools_label=ツール first_page.title=最初のページへ移動します -first_page.label=最初のページへ移動 first_page_label=最初のページへ移動 last_page.title=最後のページへ移動します -last_page.label=最後のページへ移動 last_page_label=最後のページへ移動 page_rotate_cw.title=ページを右へ回転します -page_rotate_cw.label=右回転 page_rotate_cw_label=右回転 page_rotate_ccw.title=ページを左へ回転します -page_rotate_ccw.label=左回転 page_rotate_ccw_label=左回転 -cursor_text_select_tool.title=テキスト選択ツールを有効にする +cursor_text_select_tool.title=テキスト選択ツールを有効にします cursor_text_select_tool_label=テキスト選択ツール -cursor_hand_tool.title=手のひらツールを有効にする +cursor_hand_tool.title=手のひらツールを有効にします cursor_hand_tool_label=手のひらツール -scroll_vertical.title=縦スクロールにする +scroll_page.title=ページ単位でスクロールします +scroll_page_label=ページ単位でスクロール +scroll_vertical.title=縦スクロールにします scroll_vertical_label=縦スクロール -scroll_horizontal.title=横スクロールにする +scroll_horizontal.title=横スクロールにします scroll_horizontal_label=横スクロール -scroll_wrapped.title=折り返しスクロールにする +scroll_wrapped.title=折り返しスクロールにします scroll_wrapped_label=折り返しスクロール -spread_none.title=見開きにしない +spread_none.title=見開きにしません spread_none_label=見開きにしない -spread_odd.title=奇数ページ開始で見開きにする +spread_odd.title=奇数ページ開始で見開きにします spread_odd_label=奇数ページ見開き -spread_even.title=偶数ページ開始で見開きにする +spread_even.title=偶数ページ開始で見開きにします spread_even_label=偶数ページ見開き # Document properties dialog box @@ -86,10 +84,10 @@ document_properties_file_name=ファイル名: document_properties_file_size=ファイルサイズ: # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +document_properties_kb={{size_kb}} KB ({{size_b}} バイト) # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" # will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_mb={{size_mb}} MB ({{size_b}} バイト) document_properties_title=タイトル: document_properties_author=作成者: document_properties_subject=件名: @@ -137,24 +135,31 @@ print_progress_close=キャンセル # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=サイドバー表示を切り替えます -toggle_sidebar_notification.title=サイドバー表示を切り替えます (文書に含まれるアウトライン / 添付) +toggle_sidebar_notification2.title=サイドバー表示を切り替えます (文書に含まれるアウトライン / 添付 / レイヤー) toggle_sidebar_label=サイドバーの切り替え document_outline.title=文書の目次を表示します (ダブルクリックで項目を開閉します) document_outline_label=文書の目次 attachments.title=添付ファイルを表示します attachments_label=添付ファイル +layers.title=レイヤーを表示します (ダブルクリックですべてのレイヤーが初期状態に戻ります) +layers_label=レイヤー thumbs.title=縮小版を表示します thumbs_label=縮小版 +current_outline_item.title=現在のアウトライン項目を検索 +current_outline_item_label=現在のアウトライン項目 findbar.title=文書内を検索します findbar_label=検索 +additional_layers=追加レイヤー +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}} ページ # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. thumb_page_title={{page}} ページ # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. -thumb_page_canvas=ページの縮小版 {{page}} +thumb_page_canvas={{page}} ページの縮小版 # Find panel button title and messages find_input.title=検索 @@ -165,6 +170,7 @@ find_next.title=現在より後の位置で指定文字列が現れる部分を find_next_label=次へ find_highlight=すべて強調表示 find_match_case_label=大文字/小文字を区別 +find_match_diacritics_label=発音区別符号を区別 find_entire_word_label=単語一致 find_reached_top=文書先頭に到達したので末尾から続けて検索します find_reached_bottom=文書末尾に到達したので先頭から続けて検索します @@ -220,7 +226,7 @@ page_scale_actual=実際のサイズ page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=エラー +loading=読み込み中... loading_error=PDF の読み込み中にエラーが発生しました。 invalid_file_error=無効または破損した PDF ファイル。 missing_file_error=PDF ファイルが見つかりません。 @@ -243,4 +249,33 @@ password_cancel=キャンセル printing_not_supported=警告: このブラウザーでは印刷が完全にサポートされていません。 printing_not_ready=警告: PDF を印刷するための読み込みが終了していません。 web_fonts_disabled=ウェブフォントが無効になっています: 埋め込まれた PDF のフォントを使用できません。 -document_colors_not_allowed=PDF 文書は、ウェブページが指定した配色を使用することができません: 'ウェブページが指定した配色' はブラウザーで無効になっています。 + +# Editor +editor_none.title=注釈の編集を無効にする +editor_none_label=編集を無効にする +editor_free_text.title=フリーテキスト注釈を追加 +editor_free_text_label=フリーテキスト注釈 +editor_ink.title=インク注釈を追加 +editor_ink_label=インク注釈 + +freetext_default_content=テキストを入力してください... + +free_text_default_content=テキストを入力してください... + +# Editor Parameters +editor_free_text_font_color=フォントの色 +editor_free_text_font_size=フォントサイズ +editor_ink_line_color=線の色 +editor_ink_line_thickness=線の太さ + +# Editor Parameters +editor_free_text_color=色 +editor_free_text_size=サイズ +editor_ink_color=色 +editor_ink_thickness=太さ +editor_ink_opacity=不透明度 + +# Editor aria +editor_free_text_aria_label=フリーテキスト注釈エディター +editor_ink_aria_label=インク注釈エディター +editor_ink_canvas_aria_label=ユーザー作成画像 diff --git a/addons/web/static/lib/pdfjs/web/locale/ka/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ka/viewer.properties index c7b2da8dda0..14bddd42d5a 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ka/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ka/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=მიმდინარე ხედი tools.title=ხელსაწყოები tools_label=ხელსაწყოები first_page.title=პირველ გვერდზე გადასვლა -first_page.label=პირველ გვერდზე გადასვლა first_page_label=პირველ გვერდზე გადასვლა last_page.title=ბოლო გვერდზე გადასვლა -last_page.label=ბოლო გვერდზე გადასვლა last_page_label=ბოლო გვერდზე გადასვლა page_rotate_cw.title=საათის ისრის მიმართულებით შებრუნება -page_rotate_cw.label=მარჯვნივ გადაბრუნება page_rotate_cw_label=მარჯვნივ გადაბრუნება page_rotate_ccw.title=საათის ისრის საპირისპიროდ შებრუნება -page_rotate_ccw.label=მარცხნივ გადაბრუნება page_rotate_ccw_label=მარცხნივ გადაბრუნება cursor_text_select_tool.title=მოსანიშნი მაჩვენებლის გამოყენება @@ -65,6 +61,8 @@ cursor_text_select_tool_label=მოსანიშნი მაჩვენე cursor_hand_tool.title=გადასაადგილებელი მაჩვენებლის გამოყენება cursor_hand_tool_label=გადასაადგილებელი +scroll_page.title=გვერდზე გადაადგილების გამოყენება +scroll_page_label=გვერდზე გადაადგილება scroll_vertical.title=გვერდების შვეულად ჩვენება scroll_vertical_label=შვეული გადაადგილება scroll_horizontal.title=გვერდების თარაზულად ჩვენება @@ -94,15 +92,15 @@ document_properties_title=სათაური: document_properties_author=შემქმნელი: document_properties_subject=თემა: document_properties_keywords=საკვანძო სიტყვები: -document_properties_creation_date=შექმნის თარიღი: -document_properties_modification_date=ჩასწორების თარიღი: +document_properties_creation_date=შექმნის დრო: +document_properties_modification_date=ჩასწორების დრო: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. document_properties_date_string={{date}}, {{time}} document_properties_creator=გამომშვები: document_properties_producer=PDF-გამომშვები: document_properties_version=PDF-ვერსია: -document_properties_page_count=გვერდების რაოდენობა: +document_properties_page_count=გვერდები: document_properties_page_size=გვერდის ზომა: document_properties_page_size_unit_inches=დუიმი document_properties_page_size_unit_millimeters=მმ @@ -122,7 +120,7 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) # LOCALIZATION NOTE (document_properties_linearized): The linearization status of # the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=სწრაფი შეთვალიერება: +document_properties_linearized=მსუბუქი ვებჩვენება: document_properties_linearized_yes=დიახ document_properties_linearized_no=არა document_properties_close=დახურვა @@ -137,17 +135,24 @@ print_progress_close=გაუქმება # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=გვერდითა ზოლის გამოჩენა/დამალვა -toggle_sidebar_notification.title=გვერდითა ზოლის ჩართვა/გამორთვა (დოკუმენტი შეიცავს სარჩევს/დანართს) +toggle_sidebar_notification2.title=გვერდითი ზოლის გამოჩენა (შეიცავს სარჩევს/დანართს/ფენებს) toggle_sidebar_label=გვერდითა ზოლის გამოჩენა/დამალვა -document_outline.title=დოკუმენტის სარჩევის ჩვენება (ორჯერ დაწკაპებით ყველა ელემენტის ჩამოშლა/აკეცვა) +document_outline.title=დოკუმენტის სარჩევის ჩვენება (ორმაგი წკაპით თითოეულის ჩამოშლა/აკეცვა) document_outline_label=დოკუმენტის სარჩევი attachments.title=დანართების ჩვენება attachments_label=დანართები +layers.title=ფენების გამოჩენა (ორმაგი წკაპით ყველა ფენის ნაგულისხმევზე დაბრუნება) +layers_label=ფენები thumbs.title=შეთვალიერება thumbs_label=ესკიზები +current_outline_item.title=მიმდინარე გვერდის მონახვა სარჩევში +current_outline_item_label=მიმდინარე გვერდი სარჩევში findbar.title=პოვნა დოკუმენტში findbar_label=ძიება +additional_layers=დამატებითი ფენები +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=გვერდი {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -164,7 +169,8 @@ find_previous_label=წინა find_next.title=ფრაზის შემდეგი კონტექსტის პოვნა find_next_label=შემდეგი find_highlight=ყველას მონიშვნა -find_match_case_label=მთავრულის გათვალისწინება +find_match_case_label=მთავრულით +find_match_diacritics_label=ნიშნებით find_entire_word_label=მთლიანი სიტყვები find_reached_top=მიღწეულია დოკუმენტის დასაწყისი, გრძელდება ბოლოდან find_reached_bottom=მიღწეულია დოკუმენტის ბოლო, გრძელდება დასაწყისიდან @@ -183,12 +189,12 @@ find_match_count[other]={{current}} / {{total}} თანხვედრიდ # [zero|one|two|few|many|other], with [other] as the default value. # "{{limit}}" will be replaced by a numerical value. find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]={{limit}}-ზე მეტი თანხვედრა -find_match_count_limit[one]={{limit}}-ზე მეტი თანხვედრა -find_match_count_limit[two]={{limit}}-ზე მეტი თანხვედრა -find_match_count_limit[few]={{limit}}-ზე მეტი თანხვედრა -find_match_count_limit[many]={{limit}}-ზე მეტი თანხვედრა -find_match_count_limit[other]={{limit}}-ზე მეტი თანხვედრა +find_match_count_limit[zero]=არანაკლებ {{limit}} თანხვედრა +find_match_count_limit[one]=არანაკლებ {{limit}} თანხვედრა +find_match_count_limit[two]=არანაკლებ {{limit}} თანხვედრა +find_match_count_limit[few]=არანაკლებ {{limit}} თანხვედრა +find_match_count_limit[many]=არანაკლებ {{limit}} თანხვედრა +find_match_count_limit[other]=არანაკლებ {{limit}} თანხვედრა find_not_found=ფრაზა ვერ მოიძებნა # Error panel labels @@ -220,7 +226,7 @@ page_scale_actual=საწყისი ზომა page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=შეცდომა +loading=ჩატვირთვა… loading_error=შეცდომა, PDF-ფაილის ჩატვირთვისას. invalid_file_error=არამართებული ან დაზიანებული PDF-ფაილი. missing_file_error=ნაკლული PDF-ფაილი. @@ -243,4 +249,33 @@ password_cancel=გაუქმება printing_not_supported=გაფრთხილება: ამობეჭდვა ამ ბრაუზერში არაა სრულად მხარდაჭერილი. printing_not_ready=გაფრთხილება: PDF სრულად ჩატვირთული არაა, ამობეჭდვის დასაწყებად. web_fonts_disabled=ვებშრიფტები გამორთულია: ჩაშენებული PDF-შრიფტების გამოყენება ვერ ხერხდება. -document_colors_not_allowed=PDF-დოკუმენტებს არ აქვს საკუთარი ფერების გამოყენების ნებართვა: ბრაუზერში გამორთულია “გვერდებისთვის საკუთარი ფერების გამოყენების უფლება”. + +# Editor +editor_none.title=შენიშვნის ჩასწორების გათიშვა +editor_none_label=ჩასწორების გათიშვა +editor_free_text.title=FreeText-სახის შენიშვნის დართვა +editor_free_text_label=FreeText-სახის შენიშვნა +editor_ink.title=ხელნაწერი შენიშვნის დართვა +editor_ink_label=ხელნაწერი შენიშვნა + +freetext_default_content=შეიყვანეთ რამე ტექსტი… + +free_text_default_content=შეიყვანეთ ტექსტი… + +# Editor Parameters +editor_free_text_font_color=შრიფტის ფერი +editor_free_text_font_size=შრიფტის ზომა +editor_ink_line_color=ხაზის ფერი +editor_ink_line_thickness=ხაზის სისქე + +# Editor Parameters +editor_free_text_color=ფერი +editor_free_text_size=ზომა +editor_ink_color=ფერი +editor_ink_thickness=სისქე +editor_ink_opacity=გაუმჭვირვალობა + +# Editor aria +editor_free_text_aria_label=FreeText-ჩამსწორებელი +editor_ink_aria_label=ხელნაწერის ჩამსწორებელი +editor_ink_canvas_aria_label=მომხმარებლის შექმნილი სურათი diff --git a/addons/web/static/lib/pdfjs/web/locale/kab/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/kab/viewer.properties index db59ef712cf..1b538551752 100644 --- a/addons/web/static/lib/pdfjs/web/locale/kab/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/kab/viewer.properties @@ -39,7 +39,7 @@ open_file.title=Ldi Afaylu open_file_label=Ldi print.title=Siggez print_label=Siggez -download.title=Sider +download.title=Sader download_label=Azdam bookmark.title=Timeẓri tamirant (nɣel neɣ ldi ɣef usfaylu amaynut) bookmark_label=Askan amiran @@ -48,16 +48,12 @@ bookmark_label=Askan amiran tools.title=Ifecka tools_label=Ifecka first_page.title=Ddu ɣer usebter amezwaru -first_page.label=Ddu ɣer usebter amezwaru first_page_label=Ddu ɣer usebter amezwaru last_page.title=Ddu ɣer usebter aneggaru -last_page.label=Ddu ɣer usebter aneggaru last_page_label=Ddu ɣer usebter aneggaru page_rotate_cw.title=Tuzzya tusrigt -page_rotate_cw.label=Tuzzya tusrigt page_rotate_cw_label=Tuzzya tusrigt page_rotate_ccw.title=Tuzzya amgal-usrig -page_rotate_ccw.label=Tuzzya amgal-usrig page_rotate_ccw_label=Tuzzya amgal-usrig cursor_text_select_tool.title=Rmed afecku n tefrant n uḍris @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Afecku n tefrant n uḍris cursor_hand_tool.title=Rmed afecku afus cursor_hand_tool_label=Afecku afus +scroll_page.title=Seqdec adrurem n usebter +scroll_page_label=Adrurem n usebter scroll_vertical.title=Seqdec adrurem ubdid scroll_vertical_label=Adrurem ubdid scroll_horizontal.title=Seqdec adrurem aglawan @@ -102,7 +100,7 @@ document_properties_date_string={{date}}, {{time}} document_properties_creator=Yerna-t: document_properties_producer=Afecku n uselket PDF: document_properties_version=Lqem PDF: -document_properties_page_count=Amḍan n isebtar: +document_properties_page_count=Amḍan n yisebtar: document_properties_page_size=Tuγzi n usebter: document_properties_page_size_unit_inches=deg document_properties_page_size_unit_millimeters=mm @@ -137,17 +135,24 @@ print_progress_close=Sefsex # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Sken/Fer agalis adisan -toggle_sidebar_notification.title=Ffer/Sken agalis adisan (isemli yegber aɣawas/imeddayen) +toggle_sidebar_notification2.title=Ffer/Sekn agalis adisan (isemli yegber aɣawas/ticeqqufin yeddan/tissiwin) toggle_sidebar_label=Sken/Fer agalis adisan document_outline.title=Sken isemli (Senned snat tikal i wesemɣer/Afneẓ n iferdisen meṛṛa) document_outline_label=Isɣalen n isebtar attachments.title=Sken ticeqqufin yeddan attachments_label=Ticeqqufin yeddan +layers.title=Skeen tissiwin (sit sin yiberdan i uwennez n meṛṛa tissiwin ɣer waddad amezwer) +layers_label=Tissiwin thumbs.title=Sken tanfult. thumbs_label=Tinfulin +current_outline_item.title=Af-d aferdis n uɣawas amiran +current_outline_item_label=Aferdis n uɣawas amiran findbar.title=Nadi deg isemli findbar_label=Nadi +additional_layers=Tissiwin-nniḍen +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Asebter {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Aff-d timseḍriwt n twinest d-iteddun find_next_label=Ddu ɣer zdat find_highlight=Err izirig imaṛṛa find_match_case_label=Qadeṛ amasal n isekkilen +find_match_diacritics_label=Qadeṛ ifeskilen find_entire_word_label=Awalen iččuranen find_reached_top=Yabbeḍ s afella n usebter, tuɣalin s wadda find_reached_bottom=Tebḍeḍ s adda n usebter, tuɣalin s afella @@ -220,7 +226,7 @@ page_scale_actual=Teɣzi tilawt page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Asali… loading_error=Teḍra-d tuccḍa deg alluy n PDF: invalid_file_error=Afaylu PDF arameɣtu neɣ yexṣeṛ. missing_file_error=Ulac afaylu PDF. @@ -243,4 +249,33 @@ password_cancel=Sefsex printing_not_supported=Ɣuṛ-k: Asiggez ur ittusefrak ara yakan imaṛṛa deg iminig-a. printing_not_ready=Ɣuṛ-k: Afaylu PDF ur d-yuli ara imeṛṛa akken ad ittusiggez. web_fonts_disabled=Tisefsiyin web ttwassensent; D awezɣi useqdec n tsefsiyin yettwarnan ɣer PDF. -document_colors_not_allowed=Isemliyen PDF ur zmiren ara ad sqedcen initen-nsen: 'Sireg isebtar akken ad fernen initen-nsen' ur yermid ara deg iminig. + +# Editor +editor_none.title=Sens aseẓreg n telɣut +editor_none_label=Sens aseẓreg +editor_free_text.title=Rnu talɣut i FreeText +editor_free_text_label=Talɣut n FreeText +editor_ink.title=Suneɣ +editor_ink_label=Asuneɣ + +freetext_default_content=Sekcem kra n uḍris… + +free_text_default_content=Sekcem aḍris… + +# Editor Parameters +editor_free_text_font_color=Ini n tsefsit +editor_free_text_font_size=Teɣzi n tsefsit +editor_ink_line_color=Ini n yizirig +editor_ink_line_thickness=Tuzert n yizirig + +# Editor Parameters +editor_free_text_color=Initen +editor_free_text_size=Teɣzi +editor_ink_color=Ini +editor_ink_thickness=Tuzert +editor_ink_opacity=Tebrek + +# Editor aria +editor_free_text_aria_label=Amaẓrag n FreeText +editor_ink_aria_label=Amaẓrag n lmidad +editor_ink_canvas_aria_label=Tugna yettwarnan sɣur useqdac diff --git a/addons/web/static/lib/pdfjs/web/locale/kk/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/kk/viewer.properties index cc1b4f6a6ca..7c9876d96c2 100644 --- a/addons/web/static/lib/pdfjs/web/locale/kk/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/kk/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Ағымдағы көрініс tools.title=Құралдар tools_label=Құралдар first_page.title=Алғашқы параққа өту -first_page.label=Алғашқы параққа өту first_page_label=Алғашқы параққа өту last_page.title=Соңғы параққа өту -last_page.label=Соңғы параққа өту last_page_label=Соңғы параққа өту page_rotate_cw.title=Сағат тілі бағытымен айналдыру -page_rotate_cw.label=Сағат тілі бағытымен бұру page_rotate_cw_label=Сағат тілі бағытымен бұру page_rotate_ccw.title=Сағат тілі бағытына қарсы бұру -page_rotate_ccw.label=Сағат тілі бағытына қарсы бұру page_rotate_ccw_label=Сағат тілі бағытына қарсы бұру cursor_text_select_tool.title=Мәтінді таңдау құралын іске қосу @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Мәтінді таңдау құралы cursor_hand_tool.title=Қол құралын іске қосу cursor_hand_tool_label=Қол құралы +scroll_page.title=Беттерді айналдыруды пайдалану +scroll_page_label=Беттерді айналдыру scroll_vertical.title=Вертикалды айналдыруды қолдану scroll_vertical_label=Вертикалды айналдыру scroll_horizontal.title=Горизонталды айналдыруды қолдану @@ -137,17 +135,24 @@ print_progress_close=Бас тарту # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Бүйір панелін көрсету/жасыру -toggle_sidebar_notification.title=Бүйір панелін көрсету/жасыру (құжатта құрылымы/салынымдар бар) +toggle_sidebar_notification2.title=Бүйір панелін көрсету/жасыру (құжатта құрылымы/салынымдар/қабаттар бар) toggle_sidebar_label=Бүйір панелін көрсету/жасыру document_outline.title=Құжат құрылымын көрсету (барлық нәрселерді жазық қылу/жинау үшін қос шерту керек) document_outline_label=Құжат құрамасы attachments.title=Салынымдарды көрсету attachments_label=Салынымдар +layers.title=Қабаттарды көрсету (барлық қабаттарды бастапқы күйге келтіру үшін екі рет шертіңіз) +layers_label=Қабаттар thumbs.title=Кіші көріністерді көрсету thumbs_label=Кіші көріністер +current_outline_item.title=Құрылымның ағымдағы элементін табу +current_outline_item_label=Құрылымның ағымдағы элементі findbar.title=Құжаттан табу findbar_label=Табу +additional_layers=Қосымша қабаттар +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Бет {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Осы сөздердің мәтіннен келесі кезд find_next_label=Келесі find_highlight=Барлығын түспен ерекшелеу find_match_case_label=Регистрді ескеру +find_match_diacritics_label=Диакритиканы ескеру find_entire_word_label=Сөздер толығымен find_reached_top=Құжаттың басына жеттік, соңынан бастап жалғастырамыз find_reached_bottom=Құжаттың соңына жеттік, басынан бастап жалғастырамыз @@ -220,7 +226,7 @@ page_scale_actual=Нақты өлшемі page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Қате +loading=Жүктелуде… loading_error=PDF жүктеу кезінде қате кетті. invalid_file_error=Зақымдалған немесе қате PDF файл. missing_file_error=PDF файлы жоқ. @@ -243,4 +249,32 @@ password_cancel=Бас тарту printing_not_supported=Ескерту: Баспаға шығаруды бұл браузер толығымен қолдамайды. printing_not_ready=Ескерту: Баспаға шығару үшін, бұл PDF толығымен жүктеліп алынбады. web_fonts_disabled=Веб қаріптері сөндірілген: құрамына енгізілген PDF қаріптерін қолдану мүмкін емес. -document_colors_not_allowed=PDF құжаттарына өздік түстерді қолдану рұқсат етілмеген: бұл браузерде 'Веб-сайттарға өздерінің түстерін қолдануға рұқсат беру' мүмкіндігі сөндірулі тұр. + +# Editor +editor_none.title=Аңдатпаларды түзету мүмкіндігін сөндіру +editor_none_label=Түзету мүмкіндігін сөндіру +editor_free_text.title=FreeText аңдатпасын қосу +editor_free_text_label=FreeText аңдатпасы +editor_ink.title=Қолдан аңдатпаны қосу +editor_ink_label=Қолдан аңдатпа + +freetext_default_content=Мәтінді енгізіңіз… + +free_text_default_content=Мәтінді енгізу… + +# Editor Parameters +editor_free_text_font_color=Қаріп түсі +editor_free_text_font_size=Қаріп өлшемі +editor_ink_line_color=Сызық түсі +editor_ink_line_thickness=Сызық қалыңдығы + +# Editor Parameters +editor_free_text_color=Түс +editor_free_text_size=Өлшемі +editor_ink_color=Түс +editor_ink_thickness=Қалыңдығы +editor_ink_opacity=Мөлдірсіздігі + +# Editor aria +editor_free_text_aria_label=FreeText түзеткіші +editor_ink_aria_label=Сия түзеткіші diff --git a/addons/web/static/lib/pdfjs/web/locale/km/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/km/viewer.properties index e5403cc1614..3dcac78d7f9 100644 --- a/addons/web/static/lib/pdfjs/web/locale/km/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/km/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=ទិដ្ឋភាព​បច្ចុប្បន្ន tools.title=ឧបករណ៍ tools_label=ឧបករណ៍ first_page.title=ទៅកាន់​ទំព័រ​ដំបូង​ -first_page.label=ទៅកាន់​ទំព័រ​ដំបូង​ first_page_label=ទៅកាន់​ទំព័រ​ដំបូង​ last_page.title=ទៅកាន់​ទំព័រ​ចុងក្រោយ​ -last_page.label=ទៅកាន់​ទំព័រ​ចុងក្រោយ​ last_page_label=ទៅកាន់​ទំព័រ​ចុងក្រោយ page_rotate_cw.title=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា -page_rotate_cw.label=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា page_rotate_cw_label=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា page_rotate_ccw.title=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​ -page_rotate_ccw.label=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​ page_rotate_ccw_label=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​ cursor_text_select_tool.title=បើក​ឧបករណ៍​ជ្រើស​អត្ថបទ @@ -65,6 +61,8 @@ cursor_text_select_tool_label=ឧបករណ៍​ជ្រើស​អត្ cursor_hand_tool.title=បើក​ឧបករណ៍​ដៃ cursor_hand_tool_label=ឧបករណ៍​ដៃ + + # Document properties dialog box document_properties.title=លក្ខណ​សម្បត្តិ​ឯកសារ… document_properties_label=លក្ខណ​សម្បត្តិ​ឯកសារ… @@ -89,6 +87,25 @@ document_properties_creator=អ្នក​បង្កើត៖ document_properties_producer=កម្មវិធី​បង្កើត PDF ៖ document_properties_version=កំណែ PDF ៖ document_properties_page_count=ចំនួន​ទំព័រ៖ +document_properties_page_size_unit_inches=អ៊ីញ +document_properties_page_size_unit_millimeters=មម +document_properties_page_size_orientation_portrait=បញ្ឈរ +document_properties_page_size_orientation_landscape=ផ្តេក +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=សំបុត្រ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=បាទ/ចាស +document_properties_linearized_no=ទេ document_properties_close=បិទ print_progress_message=កំពុង​រៀបចំ​ឯកសារ​សម្រាប់​បោះពុម្ព… @@ -101,7 +118,6 @@ print_progress_close=បោះបង់ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=បិទ/បើក​គ្រាប់​រំកិល -toggle_sidebar_notification.title=បិទ/បើក​របារ​ចំហៀង (ឯកសារ​មាន​មាតិកា​នៅ​ក្រៅ/attachments) toggle_sidebar_label=បិទ/បើក​គ្រាប់​រំកិល document_outline.title=បង្ហាញ​គ្រោង​ឯកសារ (ចុច​ទ្វេ​ដង​ដើម្បី​ពង្រីក/បង្រួម​ធាតុ​ទាំងអស់) document_outline_label=គ្រោង​ឯកសារ @@ -112,6 +128,7 @@ thumbs_label=រួបភាព​តូចៗ findbar.title=រក​នៅ​ក្នុង​ឯកសារ findbar_label=រក +# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -131,6 +148,14 @@ find_highlight=បន្លិច​ទាំងអស់ find_match_case_label=ករណី​ដំណូច find_reached_top=បាន​បន្ត​ពី​ខាង​ក្រោម ទៅ​ដល់​ខាង​​លើ​នៃ​ឯកសារ find_reached_bottom=បាន​បន្ត​ពី​ខាងលើ ទៅដល់​ចុង​​នៃ​ឯកសារ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. find_not_found=រក​មិន​ឃើញ​ពាក្យ ឬ​ឃ្លា # Error panel labels @@ -161,13 +186,14 @@ page_scale_actual=ទំហំ​ជាក់ស្ដែង # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=កំហុស loading_error=មាន​កំហុស​បាន​កើតឡើង​ពេល​កំពុង​ផ្ទុក PDF ។ invalid_file_error=ឯកសារ PDF ខូច ឬ​មិន​ត្រឹមត្រូវ ។ missing_file_error=បាត់​ឯកសារ PDF unexpected_response_error=ការ​ឆ្លើយ​តម​ម៉ាស៊ីន​មេ​ដែល​មិន​បាន​រំពឹង។ +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -181,4 +207,3 @@ password_cancel=បោះបង់ printing_not_supported=ការ​ព្រមាន ៖ កា​រ​បោះពុម្ព​មិន​ត្រូវ​បាន​គាំទ្រ​ពេញលេញ​ដោយ​កម្មវិធី​រុករក​នេះ​ទេ ។ printing_not_ready=ព្រមាន៖ PDF មិន​ត្រូវ​បាន​ផ្ទុក​ទាំងស្រុង​ដើម្បី​បោះពុម្ព​ទេ។ web_fonts_disabled=បាន​បិទ​ពុម្ពអក្សរ​បណ្ដាញ ៖ មិន​អាច​ប្រើ​ពុម្ពអក្សរ PDF ដែល​បាន​បង្កប់​បាន​ទេ ។ -document_colors_not_allowed=ឯកសារ PDF មិន​ត្រូវ​បាន​អនុញ្ញាត​ឲ្យ​ប្រើ​ពណ៌​ផ្ទាល់​របស់​វា​ទេ៖ 'អនុញ្ញាត​​ឲ្យ​ទំព័រ​ជ្រើស​ពណ៌​ផ្ទាល់​ខ្លួន' ត្រូវ​បាន​ធ្វើ​ឲ្យ​អសកម្ម​ក្នុង​​កម្មវិធី​រុករក។ diff --git a/addons/web/static/lib/pdfjs/web/locale/kn/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/kn/viewer.properties index cf3d0041cfe..79c043753fa 100644 --- a/addons/web/static/lib/pdfjs/web/locale/kn/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/kn/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=ಪ್ರಸಕ್ತ ನೋಟ tools.title=ಉಪಕರಣಗಳು tools_label=ಉಪಕರಣಗಳು first_page.title=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು -first_page.label=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು first_page_label=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು last_page.title=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು -last_page.label=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು last_page_label=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು page_rotate_cw.title=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು -page_rotate_cw.label=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು page_rotate_cw_label=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು page_rotate_ccw.title=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು -page_rotate_ccw.label=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು page_rotate_ccw_label=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು cursor_text_select_tool.title=ಪಠ್ಯ ಆಯ್ಕೆ ಉಪಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ @@ -170,8 +166,6 @@ page_scale_actual=ನಿಜವಾದ ಗಾತ್ರ # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=ದೋಷ loading_error=PDF ಅನ್ನು ಲೋಡ್ ಮಾಡುವಾಗ ಒಂದು ದೋಷ ಎದುರಾಗಿದೆ. invalid_file_error=ಅಮಾನ್ಯವಾದ ಅಥವ ಹಾಳಾದ PDF ಕಡತ. missing_file_error=PDF ಕಡತ ಇಲ್ಲ. @@ -190,4 +184,3 @@ password_cancel=ರದ್ದು ಮಾಡು printing_not_supported=ಎಚ್ಚರಿಕೆ: ಈ ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ ಮುದ್ರಣಕ್ಕೆ ಸಂಪೂರ್ಣ ಬೆಂಬಲವಿಲ್ಲ. printing_not_ready=ಎಚ್ಚರಿಕೆ: PDF ಕಡತವು ಮುದ್ರಿಸಲು ಸಂಪೂರ್ಣವಾಗಿ ಲೋಡ್ ಆಗಿಲ್ಲ. web_fonts_disabled=ಜಾಲ ಅಕ್ಷರಶೈಲಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ: ಅಡಕಗೊಳಿಸಿದ PDF ಅಕ್ಷರಶೈಲಿಗಳನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ. -document_colors_not_allowed=PDF ದಸ್ತಾವೇಜುಗಳು ತಮ್ಮದೆ ಆದ ಬಣ್ಣಗಳನ್ನು ಬಳಸಲು ಅನುಮತಿ ಇರುವುದಿಲ್ಲ: 'ಪುಟಗಳು ತಮ್ಮದೆ ಆದ ಬಣ್ಣವನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಅನುಮತಿಸು' ಅನ್ನು ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿರುತ್ತದೆ. diff --git a/addons/web/static/lib/pdfjs/web/locale/ko/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ko/viewer.properties index d173a242625..218dd73b0e7 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ko/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ko/viewer.properties @@ -22,7 +22,7 @@ next_label=다음 page.title=페이지 # LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number # representing the total number of pages in the document. -of_pages=전체 {{pagesCount}} +of_pages=/ {{pagesCount}} # LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" # will be replaced by a number representing the currently visible page, # respectively a number representing the total number of pages in the document. @@ -41,23 +41,19 @@ print.title=인쇄 print_label=인쇄 download.title=다운로드 download_label=다운로드 -bookmark.title=현재 뷰 (복사하거나 새 창에 열기) -bookmark_label=현재 뷰 +bookmark.title=현재 보기 (복사 또는 새 창에서 열기) +bookmark_label=현재 보기 # Secondary toolbar and context menu tools.title=도구 tools_label=도구 first_page.title=첫 페이지로 이동 -first_page.label=첫 페이지로 이동 first_page_label=첫 페이지로 이동 last_page.title=마지막 페이지로 이동 -last_page.label=마지막 페이지로 이동 last_page_label=마지막 페이지로 이동 page_rotate_cw.title=시계방향으로 회전 -page_rotate_cw.label=시계방향으로 회전 page_rotate_cw_label=시계방향으로 회전 page_rotate_ccw.title=시계 반대방향으로 회전 -page_rotate_ccw.label=시계 반대방향으로 회전 page_rotate_ccw_label=시계 반대방향으로 회전 cursor_text_select_tool.title=텍스트 선택 도구 활성화 @@ -65,18 +61,20 @@ cursor_text_select_tool_label=텍스트 선택 도구 cursor_hand_tool.title=손 도구 활성화 cursor_hand_tool_label=손 도구 +scroll_page.title=페이지 스크롤 사용 +scroll_page_label=페이지 스크롤 scroll_vertical.title=세로 스크롤 사용 scroll_vertical_label=세로 스크롤 scroll_horizontal.title=가로 스크롤 사용 scroll_horizontal_label=가로 스크롤 -scroll_wrapped.title=감싼 스크롤 사용 -scroll_wrapped_label=감싼 스크롤 +scroll_wrapped.title=래핑(자동 줄 바꿈) 스크롤 사용 +scroll_wrapped_label=래핑 스크롤 -spread_none.title=펼쳐진 페이지를 합치지 않음 +spread_none.title=한 페이지 보기 spread_none_label=펼쳐짐 없음 -spread_odd.title=홀수 페이지로 시작하게 펼쳐진 페이지 합침 +spread_odd.title=홀수 페이지로 시작하는 두 페이지 보기 spread_odd_label=홀수 펼쳐짐 -spread_even.title=짝수 페이지로 시작하게 펼쳐진 페이지 합침 +spread_even.title=짝수 페이지로 시작하는 두 페이지 보기 spread_even_label=짝수 펼쳐짐 # Document properties dialog box @@ -106,8 +104,8 @@ document_properties_page_count=페이지 수: document_properties_page_size=페이지 크기: document_properties_page_size_unit_inches=in document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=세로 -document_properties_page_size_orientation_landscape=가로 +document_properties_page_size_orientation_portrait=세로 방향 +document_properties_page_size_orientation_landscape=가로 방향 document_properties_page_size_name_a3=A3 document_properties_page_size_name_a4=A4 document_properties_page_size_name_letter=레터 @@ -127,7 +125,7 @@ document_properties_linearized_yes=예 document_properties_linearized_no=아니오 document_properties_close=닫기 -print_progress_message=인쇄 문서 준비중… +print_progress_message=인쇄 문서 준비 중… # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. print_progress_percent={{progress}}% @@ -136,18 +134,25 @@ print_progress_close=취소 # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) -toggle_sidebar.title=탐색창 열고 닫기 -toggle_sidebar_notification.title=탐색창 열고 닫기 (문서에 아웃라인이나 첨부파일이 들어있음) -toggle_sidebar_label=탐색창 열고 닫기 -document_outline.title=문서 아웃라인 보기(더블 클릭해서 모든 항목 열고 닫기) +toggle_sidebar.title=탐색창 표시/숨기기 +toggle_sidebar_notification2.title=탐색창 표시/숨기기 (문서에 아웃라인/첨부파일/레이어 포함됨) +toggle_sidebar_label=탐색창 표시/숨기기 +document_outline.title=문서 아웃라인 보기 (더블 클릭해서 모든 항목 펼치기/접기) document_outline_label=문서 아웃라인 attachments.title=첨부파일 보기 attachments_label=첨부파일 +layers.title=레이어 보기 (더블 클릭해서 모든 레이어를 기본 상태로 재설정) +layers_label=레이어 thumbs.title=미리보기 thumbs_label=미리보기 +current_outline_item.title=현재 아웃라인 항목 찾기 +current_outline_item_label=현재 아웃라인 항목 findbar.title=검색 findbar_label=검색 +additional_layers=추가 레이어 +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}} 페이지 # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,7 +170,8 @@ find_next.title=지정 문자열에 일치하는 다음 부분을 검색 find_next_label=다음 find_highlight=모두 강조 표시 find_match_case_label=대/소문자 구분 -find_entire_word_label=전체 단어 +find_match_diacritics_label=분음 부호 일치 +find_entire_word_label=단어 단위로 find_reached_top=문서 처음까지 검색하고 끝으로 돌아와 검색했습니다. find_reached_bottom=문서 끝까지 검색하고 앞으로 돌아와 검색했습니다. # LOCALIZATION NOTE (find_match_count): The supported plural forms are @@ -192,7 +198,7 @@ find_match_count_limit[other]={{limit}} 이상 일치 find_not_found=검색 결과 없음 # Error panel labels -error_more_info=정보 더 보기 +error_more_info=자세한 정보 error_less_info=정보 간단히 보기 error_close=닫기 # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be @@ -208,22 +214,22 @@ error_stack=스택: {{stack}} error_file=파일: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=줄 번호: {{line}} -rendering_error=페이지를 렌더링하는 중 오류가 발생했습니다. +rendering_error=페이지를 렌더링하는 동안 오류가 발생했습니다. # Predefined zoom values -page_scale_width=페이지 너비에 맞춤 -page_scale_fit=페이지에 맞춤 -page_scale_auto=자동 맞춤 -page_scale_actual=실제 크기에 맞춤 +page_scale_width=페이지 너비에 맞추기 +page_scale_fit=페이지에 맞추기 +page_scale_auto=자동 +page_scale_actual=실제 크기 # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=오류 -loading_error=PDF를 로드하는 중 오류가 발생했습니다. -invalid_file_error=유효하지 않거나 파손된 PDF 파일 -missing_file_error=PDF 파일이 없습니다. +loading=로드 중… +loading_error=PDF를 로드하는 동안 오류가 발생했습니다. +invalid_file_error=잘못되었거나 손상된 PDF 파일. +missing_file_error=PDF 파일 없음. unexpected_response_error=예상치 못한 서버 응답입니다. # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be @@ -235,12 +241,39 @@ annotation_date_string={{date}} {{time}} # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" text_annotation_type.alt=[{{type}} 주석] -password_label=이 PDF 파일을 열 수 있는 비밀번호를 입력하십시오. -password_invalid=잘못된 비밀번호입니다. 다시 시도해 주십시오. +password_label=이 PDF 파일을 열 수 있는 비밀번호를 입력하세요. +password_invalid=잘못된 비밀번호입니다. 다시 시도하세요. password_ok=확인 password_cancel=취소 printing_not_supported=경고: 이 브라우저는 인쇄를 완전히 지원하지 않습니다. printing_not_ready=경고: 이 PDF를 인쇄를 할 수 있을 정도로 읽어들이지 못했습니다. web_fonts_disabled=웹 폰트가 비활성화됨: 내장된 PDF 글꼴을 사용할 수 없습니다. -document_colors_not_allowed=PDF 문서의 자체 색상 허용 안됨: “페이지 자체 색상 허용”이 브라우저에서 비활성화 되어 있습니다. + +# Editor +editor_none.title=주석 편집 사용 안 함 +editor_none_label=편집 비활성화 +editor_free_text.title=텍스트 주석 추가 +editor_free_text_label=텍스트 주석 +editor_ink.title=잉크 주석 추가 +editor_ink_label=잉크 주석 + +free_text_default_content=텍스트를 입력하세요… + +# Editor Parameters +editor_free_text_font_color=글꼴 색상 +editor_free_text_font_size=글꼴 크기 +editor_ink_line_color=선 색상 +editor_ink_line_thickness=선 두께 + +# Editor Parameters +editor_free_text_color=색상 +editor_free_text_size=크기 +editor_ink_color=색상 +editor_ink_thickness=두께 +editor_ink_opacity=불투명도 + +# Editor aria +editor_free_text_aria_label=텍스트 편집기 +editor_ink_aria_label=잉크 편집기 +editor_ink_canvas_aria_label=사용자 생성 이미지 diff --git a/addons/web/static/lib/pdfjs/web/locale/kok/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/kok/viewer.properties deleted file mode 100644 index dbdd3df1dda..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/kok/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=फाटले पान -previous_label=फाटले -next.title=फुडले पान -next_label=फुडें - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom_out.title=ल्हान करात -zoom_out_label=ल्हान करात -zoom_in.title=व्हड करात -zoom_in_label=व्हड करात -zoom.title=व्हड -presentation_mode.title=सादरीकरण स्थितींत वचात -presentation_mode_label=सादरीकरण स्थिती -open_file.title=फायल उगडात -open_file_label=उगडात -print.title=छापात -print_label=छापात -download.title=डावनलोड -download_label=डावनलोड -bookmark.title=सद्याचे दृश्य (नव्या जनेलांत प्रत करात वो उगडात) -bookmark_label=सद्याचे दृश्य - -# Secondary toolbar and context menu -tools.title=साधनां -tools_label=साधनां -first_page.title=पयल्या पानार वचात -first_page.label=पयल्या पानार वचात -first_page_label=पयल्या पानार वचात -last_page.title=निमण्या पानार वचात -last_page.label=निमण्या पानार वचात -last_page_label=निमण्या पानार वचात -page_rotate_cw.title=घड्याळाच्या दिकेन घुंवडायात -page_rotate_cw.label=घड्याळाच्या दिकेन घुंवडायात -page_rotate_cw_label=घड्याळाच्या दिकेन घुंवडायात -page_rotate_ccw.title=घड्याळाच्या उलट्या दिकेन घुंवडायात -page_rotate_ccw.label=घड्याळाच्या उलट्या दिकेन घुंवडायात -page_rotate_ccw_label=घड्याळाच्या उलट्या दिकेन घुंवडायात - - -# Document properties dialog box -document_properties.title=दस्तावेज वैशिश्ट्यां... -document_properties_label=दस्तावेज वैशिश्ट्यां... -document_properties_file_name=फायलीचे नाव: -document_properties_file_size=फायलीचो आकार: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{आकार_kb}} KB ({{आकार_b}} बायटस्) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{आकार_mb}} MB ({{आकार_b}} बायटस्) -document_properties_title=मथळो: -document_properties_author=बरोवपी: -document_properties_subject=विशय: -document_properties_keywords=कीवर्डस्: -document_properties_creation_date=निर्मणी तारीक: -document_properties_modification_date=सुदार तारीक: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{तारीक}}, {{वेळ}} -document_properties_creator=निर्मातो: -document_properties_producer=\u0020PDF निर्मातो: -document_properties_version=PDF आवृत्ती: -document_properties_page_count=पान गणन: -document_properties_close=बंद - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=सायडबार अदलाबदल -toggle_sidebar_label=सायडबार अदलाबदल -document_outline_label=दस्तावेज आउटलायन -attachments.title=जोड दाखयात -attachments_label=जोडी -thumbs.title=थंबनेल दाखयात -thumbs_label=थंबनेल -findbar.title=दस्तावेजांत सोदात - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=पान {{पान}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{पान}} पानाचे थंबनेल - -# Find panel button title and messages -find_previous.title=वाक्याचो पयलीचो अंश सोदात -find_previous_label=फाटले -find_next.title=वाक्याचो मुखावेलो अंश सोदात -find_next_label=फुडें -find_highlight=सगळे ठळक करात -find_match_case_label=केस जुळयात -find_reached_top=दस्तावेजाच्या वयर पावले. सकयल्यान सुरू करात -find_reached_bottom=दस्तावेजाच्या शेवटाक पावले, वयल्यान सुरू करात -find_not_found=वाक्य मेळूंक ना - -# Error panel labels -error_more_info=अदिक माहिती -error_less_info=कमी माहिती -error_close=बंद -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{आवृत्ती}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=संदेश : {{संदेश}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=दाळ: {{दाळ}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=फायल: {{फायल}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=ओळ: {{ओळ}} -rendering_error=पान रेंडरिंग करतास्तना एरर आयलो - -# Predefined zoom values -page_scale_width=पानाची रुंदाय -page_scale_fit=पानार बसयात -page_scale_auto=आपशीच व्हड -page_scale_actual=मूळचो आकार -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=एरर -loading_error=पीडीएफ चालू जातना एरर आयलो -invalid_file_error=अवैध वो वाट लागिल्ली PDF फायल -missing_file_error=शेणिल्ली PDF फायल. -unexpected_response_error=अनपेक्षित सर्व्हर प्रतिसाद - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{प्रकार}} टिप्पणी] -password_label=ही PDF फायल उगडपाक पासवर्ड दियात -password_invalid=अवैध पासवर्ड. परतून यत्न करात. -password_ok=बरें आसा - -printing_not_supported=शिटकावणी : हे ब्रावजर छापपाक फांटबळ दिना -printing_not_ready=शिटकावणी: PDF मुद्रणाखातीर पुराय लोड जावना. -web_fonts_disabled=वेब अक्षरसंच निश्क्रिय केल्यात: एम्बेडेड PDF अक्षरसंच वापरपाक शकना. -document_colors_not_allowed=PDF दस्तावेजांक तांचे स्वतःचे रंग वापरपाक अनुमती ना: 'पानांक तांचे स्वतःचे रंग निवडुपाक दियात' ब्रावजरान निश्क्रीय केला. diff --git a/addons/web/static/lib/pdfjs/web/locale/ks/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ks/viewer.properties deleted file mode 100644 index 63a9192e441..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/ks/viewer.properties +++ /dev/null @@ -1,168 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=پتِم صفحە -previous_label=پتِم -next.title=برونٹھِم صفحە -next_label=برونٹھ - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom_out.title=نەبر كڈیەو -zoom_out_label=نەبر كڈیەو -zoom_in.title=اندر ژٓانیو -zoom_in_label=اندر ژٓانیو -zoom.title=زوم -presentation_mode.title=پریزینٹیشن موڈس کُن کْریو سوچ -presentation_mode_label=پریزینٹیشن موڈ -open_file.title=فایل كھولیو -open_file_label=كھولیو -print.title=پرینٹ -print_label=پرینٹ -download.title=ڈاونلوڈ -download_label=ڈاونلوڈ -bookmark.title=حالُك نظارء (نقل كریو نتە كھولیەو بدل وِنڈو منز) -bookmark_label=حالُك نظارء - -# Secondary toolbar and context menu -tools.title=ٹول -tools_label=ٹول -first_page.title=گوڈنیکِس پیجس کُن گْژھیو\u0020 -first_page.label=گوڈنیکِس پیجس کُن گْژھیو\u0020 -first_page_label=گوڈنیکِس پیجس کُن گْژھیو\u0020 -last_page.title=\u0020پْتمِس پیجس کُن گْژھیو\u0020 -last_page.label=\u0020پْتمِس پیجس کُن گْژھیو\u0020 -last_page_label=\u0020پْتمِس پیجس کُن گْژھیو\u0020 -page_rotate_cw.title=کُلاک وایِز کْریو روٹیٹ\u0020 -page_rotate_cw.label=کُلاک وایِز کْریو روٹیٹ\u0020 -page_rotate_cw_label=کُلاک وایِز کْریو روٹیٹ\u0020 -page_rotate_ccw.title=\u0020کاونٹر کُلاک وایِز کْریو روٹیٹ -page_rotate_ccw.label=\u0020کاونٹر کُلاک وایِز کْریو روٹیٹ -page_rotate_ccw_label=\u0020کاونٹر کُلاک وایِز کْریو روٹیٹ - - -# Document properties dialog box -document_properties.title=دستاویز خصوصیات ۔ ۔ ۔ -document_properties_label=دستاویز خصوصیات ۔ ۔ ۔ -document_properties_file_name=فایل ناو: -document_properties_file_size=فایل سایِز: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_kb}} KB ({{size_b}} bytes) -document_properties_title=عنوان: -document_properties_author=آتھر -document_properties_subject=موضوع: -document_properties_keywords=كی وٲرڈ: -document_properties_creation_date=بناونُک تأریخ -document_properties_modification_date=تبدیلی ہُند ڈاٹا -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{تأریخ}}, {{ٹایم}} -document_properties_creator=بناون وول: -document_properties_producer=پی ڈی ایف پروڈوسر: -document_properties_version=پی ڈی ایف وْرجن: -document_properties_page_count=پیج کاوُنٹ: -document_properties_close=بند - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=ٹوگل سایِڈ بار -toggle_sidebar_label=ٹوگل سایِڈ بار -document_outline_label=دستاەیزن ھِنز آوٹلاین -attachments.title=اٹیچمینٹ ہأیو -attachments_label=اٹیچمینٹ -thumbs.title=تھمبنیلس ھآویو -thumbs_label=تھمبنیلس\u0020 -findbar.title=دستاویزس منز وْچھیو - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=صفحە {{صفحە }} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=صفحُك تھمبنیل\u0020 - -# Find panel button title and messages -find_previous.title=جملُك پت۪یوم واقعئ ژئھنڈیو\u0020 -find_previous_label=پتِم -find_next.title=جملُك بیٲكھ واقعئ ژئھنڈیو\u0020 -find_next_label=برونٹھ -find_highlight=تمام کْریو ہاے لایِٹ -find_match_case_label=کیس کْریو میچ -find_reached_top=صفحہ كس ٹاپس پیٹھ وئت، بوْنئ پیٹھئ تھأیو جٲری -find_reached_bottom=صفحہ كس آخرس پیٹھ وئت، ہ۪یرئ پیٹھئ تھأو جئری -find_not_found=جملئ آو نئ اتھ۪ی - -# Error panel labels -error_more_info=مزید مولومات -error_less_info=كم مولەومات -error_close=بند -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=شیچھ: {{شیچھ}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=سٹیك: {{سٹیك}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=فایل: {{fileفایل}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=ريخ: {{ریخ}} -rendering_error=صفحئ كھولُن ویز۪ی گئی غلطی - -# Predefined zoom values -page_scale_width=صفحُك كھَجَر -page_scale_fit=صفحئ برابر -page_scale_auto=پٲنٲی بڈٲویو -page_scale_actual=اصلی سایز -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=غلطی -loading_error=پی ڈی ایف كھولَن ویز۪ی گئی غلطی -invalid_file_error=ناکار یا خراب گأمْژ پی ڈی ایف فایل۔ -missing_file_error=میسینگ پی ڈی ایف فایل۔ -unexpected_response_error=غیر متوقع سْرور جواب۔ - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{قئسم}} اینوٹیشن] -password_label=پاس وأرڈ کْریو اینٹر یہ پی ڈی ایف فایل اوپْن کرنْہ باپت۔ -password_invalid=ناکار پاس وأرڈ۔ مہربأنی کْرتھ کْریو دوبار کوشش۔ -password_ok=\u0020OK - -printing_not_supported=آگہی۔ یتَھ براویزرَس چھُنَ چھَپاونئ خٲطرئ پورئ پٲٹھ تعاوُن -printing_not_ready=آگأہی: یہ پی ڈی ایف چُھ نْہ پورْ پأٹھ لوڈ پرینٹینگ باپت۔ -web_fonts_disabled=ویب فانٹ چھ ڈیسیبلْڈ: ایمبیڈیڈ پی ڈی ایف فانٹ استعمال کرنْہ باپت کْریو انیبْل۔ -document_colors_not_allowed=پی ڈی ایف دستاویز ہیکن نْہ پنْنئ رنگ استعمال کْرتھ: پیجن دِیو اجازت پنْنئ رنگ استعمال کرنس چُھ ڈی ایکٹیویٹ کرنْہ آمُت براوزرس منز۔ diff --git a/addons/web/static/lib/pdfjs/web/locale/ku/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ku/viewer.properties deleted file mode 100644 index c3462f67d29..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/ku/viewer.properties +++ /dev/null @@ -1,146 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Rûpela berê -previous_label=Paşve -next.title=Rûpela pêş -next_label=Pêş - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom_out.title=Dûr bike -zoom_out_label=Dûr bike -zoom_in.title=Nêzîk bike -zoom_in_label=Nêzîk bike -zoom.title=Nêzîk Bike -presentation_mode.title=Derbasî mûda pêşkêşkariyê bibe -presentation_mode_label=Moda Pêşkêşkariyê -open_file.title=Pelî veke -open_file_label=Veke -print.title=Çap bike -print_label=Çap bike -download.title=Jêbar bike -download_label=Jêbar bike -bookmark.title=Xuyakirina niha (kopî yan jî di pencereyeke nû de veke) -bookmark_label=Xuyakirina niha - -# Secondary toolbar and context menu -tools.title=Amûr -tools_label=Amûr -first_page.title=Here rûpela yekemîn -first_page.label=Here rûpela yekemîn -first_page_label=Here rûpela yekemîn -last_page.title=Here rûpela dawîn -last_page.label=Here rûpela dawîn -last_page_label=Here rûpela dawîn -page_rotate_cw.title=Bi aliyê saetê ve bizivirîne -page_rotate_cw.label=Bi aliyê saetê ve bizivirîne -page_rotate_cw_label=Bi aliyê saetê ve bizivirîne -page_rotate_ccw.title=Berevajî aliyê saetê ve bizivirîne -page_rotate_ccw.label=Berevajî aliyê saetê ve bizivirîne -page_rotate_ccw_label=Berevajî aliyê saetê ve bizivirîne - - -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Sernav: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Darikê kêlekê veke/bigire -toggle_sidebar_label=Darikê kêlekê veke/bigire -document_outline_label=Şemaya belgeyê -thumbs.title=Wênekokan nîşan bide -thumbs_label=Wênekok -findbar.title=Di belgeyê de bibîne - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Rûpel {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Wênekoka rûpelê {{page}} - -# Find panel button title and messages -find_previous.title=Peyva berê bibîne -find_previous_label=Paşve -find_next.title=Peyya pêş bibîne -find_next_label=Pêşve -find_highlight=Tevî beloq bike -find_match_case_label=Ji bo tîpên hûrdek-girdek bihîstyar -find_reached_top=Gihîşt serê rûpelê, ji dawiya rûpelê bidomîne -find_reached_bottom=Gihîşt dawiya rûpelê, ji serê rûpelê bidomîne -find_not_found=Peyv nehat dîtin - -# Error panel labels -error_more_info=Zêdetir agahî -error_less_info=Zêdetir agahî -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js versiyon {{version}} (avanî: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Peyam: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Komik: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Pel: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rêzik: {{line}} -rendering_error=Di vehûrandina rûpelê de çewtî çêbû. - -# Predefined zoom values -page_scale_width=Firehiya rûpelê -page_scale_fit=Di rûpelê de bicî bike -page_scale_auto=Xweber nêzîk bike -page_scale_actual=Mezinahiya rastîn -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Xeletî -loading_error=Dema ku PDF dihat barkirin çewtiyek çêbû. -invalid_file_error=Pelê PDFê nederbasdar yan jî xirabe ye. -missing_file_error=Pelê PDFê kêm e. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Nîşaneya {{type}}ê] -password_label=Ji bo PDFê vekî şîfreyê binivîse. -password_invalid=Şîfre çewt e. Tika ye dîsa biceribîne. -password_ok=Temam - -printing_not_supported=Hişyarî: Çapkirin ji hêla vê gerokê ve bi temamî nayê destekirin. -printing_not_ready=Hişyarî: PDF bi temamî nehat barkirin û ji bo çapê ne amade ye. -web_fonts_disabled=Fontên Webê neçalak in: Fontên PDFê yên veşartî nayên bikaranîn. -document_colors_not_allowed=Destûr tune ye ku belgeyên PDFê rengên xwe bi kar bînin: Di gerokê de 'destûrê bide rûpelan ku rengên xwe bi kar bînin' nehatiye çalakirin. diff --git a/addons/web/static/lib/pdfjs/web/locale/lij/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/lij/viewer.properties index 71a53062d3e..b89981c281f 100644 --- a/addons/web/static/lib/pdfjs/web/locale/lij/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/lij/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Vixon corente tools.title=Atressi tools_label=Atressi first_page.title=Vanni a-a primma pagina -first_page.label=Vanni a-a primma pagina first_page_label=Vanni a-a primma pagina last_page.title=Vanni a l'urtima pagina -last_page.label=Vanni a l'urtima pagina last_page_label=Vanni a l'urtima pagina page_rotate_cw.title=Gia into verso oraio -page_rotate_cw.label=Gia in senso do releuio page_rotate_cw_label=Gia into verso oraio page_rotate_ccw.title=Gia into verso antioraio -page_rotate_ccw.label=Gia in senso do releuio a-a reversa page_rotate_ccw_label=Gia into verso antioraio cursor_text_select_tool.title=Abilita strumento de seleçion do testo @@ -137,7 +133,6 @@ print_progress_close=Anulla # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Ativa/dizativa bara de scianco -toggle_sidebar_notification.title=Cangia bara de löo (o documento o contegne di alegæ) toggle_sidebar_label=Ativa/dizativa bara de scianco document_outline.title=Fanni vedde o contorno do documento (scicca doggio pe espande/ridue tutti i elementi) document_outline_label=Contorno do documento @@ -219,8 +214,6 @@ page_scale_actual=Dimenscioin efetive # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Erô loading_error=S'é verificou 'n'erô itno caregamento do PDF. invalid_file_error=O schedaio PDF o l'é no valido ò aroinou. missing_file_error=O schedaio PDF o no gh'é. @@ -239,4 +232,3 @@ password_cancel=Anulla printing_not_supported=Atençion: a stanpa a no l'é conpletamente soportâ da sto navegatô. printing_not_ready=Atençion: o PDF o no l'é ancon caregou conpletamente pe-a stanpa. web_fonts_disabled=I font do web en dizativæ: inposcibile adeuviâ i carateri do PDF. -document_colors_not_allowed=No l'é poscibile adeuviâ i pròpi coî pe-i documenti PDF: l'opçion do navegatô “Permetti a-e pagine de çerne i pròpi coî in cangio de quelli inpostæ” a l'é dizativâ. diff --git a/addons/web/static/lib/pdfjs/web/locale/lo/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/lo/viewer.properties index 00d3309c0fe..8b877d00a48 100644 --- a/addons/web/static/lib/pdfjs/web/locale/lo/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/lo/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=ມຸມມອງປະຈຸບັນ tools.title=ເຄື່ອງມື tools_label=ເຄື່ອງມື first_page.title=ໄປທີ່ຫນ້າທຳອິດ -first_page.label=ໄປທີ່ຫນ້າທຳອິດ first_page_label=ໄປທີ່ຫນ້າທຳອິດ last_page.title=ໄປທີ່ຫນ້າສຸດທ້າຍ -last_page.label=ໄປທີ່ຫນ້າສຸດທ້າຍ last_page_label=ໄປທີ່ຫນ້າສຸດທ້າຍ page_rotate_cw.title=ຫມູນຕາມເຂັມໂມງ -page_rotate_cw.label=ຫມູນຕາມເຂັມໂມງ page_rotate_cw_label=ຫມູນຕາມເຂັມໂມງ page_rotate_ccw.title=ຫມູນທວນເຂັມໂມງ -page_rotate_ccw.label=ຫມູນທວນເຂັມໂມງ page_rotate_ccw_label=ຫມູນທວນເຂັມໂມງ @@ -98,7 +94,6 @@ print_progress_close=ຍົກເລີກ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=ເປີດ/ປິດແຖບຂ້າງ -toggle_sidebar_notification.title=ເປີດ/ປິດແຖບຂ້າງ (ເອກະສານມີເຄົ້າຮ່າງ/ໄຟລ໌ແນບ) toggle_sidebar_label=ເປີດ/ປິດແຖບຂ້າງ document_outline_label=ເຄົ້າຮ່າງເອກະສານ findbar_label=ຄົ້ນຫາ @@ -138,8 +133,6 @@ rendering_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະ # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. -# Loading indicator messages -loading_error_indicator=ຂໍ້ຜິດພາດ loading_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະນະທີ່ກຳລັງໂຫລດ PDF. invalid_file_error=ໄຟລ໌ PDF ບໍ່ຖືກຕ້ອງຫລືເສຍຫາຍ. diff --git a/addons/web/static/lib/pdfjs/web/locale/locale.properties b/addons/web/static/lib/pdfjs/web/locale/locale.properties index 1ae959f5420..ae79f4739b7 100644 --- a/addons/web/static/lib/pdfjs/web/locale/locale.properties +++ b/addons/web/static/lib/pdfjs/web/locale/locale.properties @@ -4,18 +4,12 @@ [af] @import url(af/viewer.properties) -[ak] -@import url(ak/viewer.properties) - [an] @import url(an/viewer.properties) [ar] @import url(ar/viewer.properties) -[as] -@import url(as/viewer.properties) - [ast] @import url(ast/viewer.properties) @@ -28,11 +22,11 @@ [bg] @import url(bg/viewer.properties) -[bn-BD] -@import url(bn-BD/viewer.properties) +[bn] +@import url(bn/viewer.properties) -[bn-IN] -@import url(bn-IN/viewer.properties) +[bo] +@import url(bo/viewer.properties) [br] @import url(br/viewer.properties) @@ -49,15 +43,12 @@ [cak] @import url(cak/viewer.properties) -[crh] -@import url(crh/viewer.properties) +[ckb] +@import url(ckb/viewer.properties) [cs] @import url(cs/viewer.properties) -[csb] -@import url(csb/viewer.properties) - [cy] @import url(cy/viewer.properties) @@ -67,6 +58,9 @@ [de] @import url(de/viewer.properties) +[dsb] +@import url(dsb/viewer.properties) + [el] @import url(el/viewer.properties) @@ -79,9 +73,6 @@ [en-US] @import url(en-US/viewer.properties) -[en-ZA] -@import url(en-ZA/viewer.properties) - [eo] @import url(eo/viewer.properties) @@ -145,15 +136,15 @@ [hsb] @import url(hsb/viewer.properties) -[hto] -@import url(hto/viewer.properties) - [hu] @import url(hu/viewer.properties) [hy-AM] @import url(hy-AM/viewer.properties) +[hye] +@import url(hye/viewer.properties) + [ia] @import url(ia/viewer.properties) @@ -187,18 +178,6 @@ [ko] @import url(ko/viewer.properties) -[kok] -@import url(kok/viewer.properties) - -[ks] -@import url(ks/viewer.properties) - -[ku] -@import url(ku/viewer.properties) - -[lg] -@import url(lg/viewer.properties) - [lij] @import url(lij/viewer.properties) @@ -214,21 +193,12 @@ [lv] @import url(lv/viewer.properties) -[mai] -@import url(mai/viewer.properties) - [meh] @import url(meh/viewer.properties) [mk] @import url(mk/viewer.properties) -[ml] -@import url(ml/viewer.properties) - -[mn] -@import url(mn/viewer.properties) - [mr] @import url(mr/viewer.properties) @@ -250,15 +220,9 @@ [nn-NO] @import url(nn-NO/viewer.properties) -[nso] -@import url(nso/viewer.properties) - [oc] @import url(oc/viewer.properties) -[or] -@import url(or/viewer.properties) - [pa-IN] @import url(pa-IN/viewer.properties) @@ -280,15 +244,18 @@ [ru] @import url(ru/viewer.properties) -[rw] -@import url(rw/viewer.properties) - -[sah] -@import url(sah/viewer.properties) - [sat] @import url(sat/viewer.properties) +[sc] +@import url(sc/viewer.properties) + +[scn] +@import url(scn/viewer.properties) + +[sco] +@import url(sco/viewer.properties) + [si] @import url(si/viewer.properties) @@ -310,32 +277,29 @@ [sv-SE] @import url(sv-SE/viewer.properties) -[sw] -@import url(sw/viewer.properties) +[szl] +@import url(szl/viewer.properties) [ta] @import url(ta/viewer.properties) -[ta-LK] -@import url(ta-LK/viewer.properties) - [te] @import url(te/viewer.properties) +[tg] +@import url(tg/viewer.properties) + [th] @import url(th/viewer.properties) [tl] @import url(tl/viewer.properties) -[tn] -@import url(tn/viewer.properties) - [tr] @import url(tr/viewer.properties) -[tsz] -@import url(tsz/viewer.properties) +[trs] +@import url(trs/viewer.properties) [uk] @import url(uk/viewer.properties) @@ -355,15 +319,9 @@ [xh] @import url(xh/viewer.properties) -[zam] -@import url(zam/viewer.properties) - [zh-CN] @import url(zh-CN/viewer.properties) [zh-TW] @import url(zh-TW/viewer.properties) -[zu] -@import url(zu/viewer.properties) - diff --git a/addons/web/static/lib/pdfjs/web/locale/lt/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/lt/viewer.properties index 45ec303595f..390fa092c7d 100644 --- a/addons/web/static/lib/pdfjs/web/locale/lt/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/lt/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Esamasis rodinys tools.title=Priemonės tools_label=Priemonės first_page.title=Eiti į pirmą puslapį -first_page.label=Eiti į pirmą puslapį first_page_label=Eiti į pirmą puslapį last_page.title=Eiti į paskutinį puslapį -last_page.label=Eiti į paskutinį puslapį last_page_label=Eiti į paskutinį puslapį page_rotate_cw.title=Pasukti pagal laikrodžio rodyklę -page_rotate_cw.label=Pasukti pagal laikrodžio rodyklę page_rotate_cw_label=Pasukti pagal laikrodžio rodyklę page_rotate_ccw.title=Pasukti prieš laikrodžio rodyklę -page_rotate_ccw.label=Pasukti prieš laikrodžio rodyklę page_rotate_ccw_label=Pasukti prieš laikrodžio rodyklę cursor_text_select_tool.title=Įjungti teksto žymėjimo įrankį @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Teksto žymėjimo įrankis cursor_hand_tool.title=Įjungti vilkimo įrankį cursor_hand_tool_label=Vilkimo įrankis +scroll_page.title=Naudoti puslapio slinkimą +scroll_page_label=Puslapio slinkimas scroll_vertical.title=Naudoti vertikalų slinkimą scroll_vertical_label=Vertikalus slinkimas scroll_horizontal.title=Naudoti horizontalų slinkimą @@ -72,12 +70,12 @@ scroll_horizontal_label=Horizontalus slinkimas scroll_wrapped.title=Naudoti išklotą slinkimą scroll_wrapped_label=Išklotas slinkimas -spread_none.title=Nesujungti puslapių sklaidų -spread_none_label=Be sklaidų -spread_odd.title=Sujungti puslapių sklaidas pradedant nelyginiais puslapiais -spread_odd_label=Nelyginės sklaidos -spread_even.title=Sujungti puslapių sklaidas pradedant lyginiais puslapiais -spread_even_label=Lyginės sklaidos +spread_none.title=Nejungti puslapių į dvilapius +spread_none_label=Be dvilapių +spread_odd.title=Sujungti į dvilapius pradedant nelyginiais puslapiais +spread_odd_label=Nelyginiai dvilapiai +spread_even.title=Sujungti į dvilapius pradedant lyginiais puslapiais +spread_even_label=Lyginiai dvilapiai # Document properties dialog box document_properties.title=Dokumento savybės… @@ -137,17 +135,24 @@ print_progress_close=Atsisakyti # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Rodyti / slėpti šoninį polangį -toggle_sidebar_notification.title=Parankinė (dokumentas turi struktūrą / priedų) +toggle_sidebar_notification2.title=Parankinė (dokumentas turi struktūrą / priedų / sluoksnių) toggle_sidebar_label=Šoninis polangis document_outline.title=Rodyti dokumento struktūrą (spustelėkite dukart norėdami išplėsti/suskleisti visus elementus) document_outline_label=Dokumento struktūra attachments.title=Rodyti priedus attachments_label=Priedai +layers.title=Rodyti sluoksnius (spustelėkite dukart, norėdami atstatyti visus sluoksnius į numatytąją būseną) +layers_label=Sluoksniai thumbs.title=Rodyti puslapių miniatiūras thumbs_label=Miniatiūros +current_outline_item.title=Rasti dabartinį struktūros elementą +current_outline_item_label=Dabartinis struktūros elementas findbar.title=Ieškoti dokumente findbar_label=Rasti +additional_layers=Papildomi sluoksniai +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}} puslapis # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Ieškoti tolesnio frazės egzemplioriaus find_next_label=Tolesnis find_highlight=Viską paryškinti find_match_case_label=Skirti didžiąsias ir mažąsias raides +find_match_diacritics_label=Skirti diakritinius ženklus find_entire_word_label=Ištisi žodžiai find_reached_top=Pasiekus dokumento pradžią, paieška pratęsta nuo pabaigos find_reached_bottom=Pasiekus dokumento pabaigą, paieška pratęsta nuo pradžios @@ -220,7 +226,7 @@ page_scale_actual=Tikras dydis page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Klaida +loading=Įkeliama… loading_error=Įkeliant PDF failą įvyko klaida. invalid_file_error=Tai nėra PDF failas arba jis yra sugadintas. missing_file_error=PDF failas nerastas. @@ -243,4 +249,13 @@ password_cancel=Atsisakyti printing_not_supported=Dėmesio! Spausdinimas šioje naršyklėje nėra pilnai realizuotas. printing_not_ready=Dėmesio! PDF failas dar nėra pilnai įkeltas spausdinimui. web_fonts_disabled=Saityno šriftai išjungti – PDF faile esančių šriftų naudoti negalima. -document_colors_not_allowed=PDF dokumentams neleidžiama nurodyti savo spalvų, nes išjungta naršyklės nuostata „Leisti tinklalapiams nurodyti spalvas“. + +# Editor +editor_none.title=Išjungti komentarų redagavimą +editor_none_label=Išjungti redagavimą +editor_free_text.title=Pridėti „FreeText“ komentarą +editor_free_text_label=„FreeText“ komentaras +editor_ink.title=Pridėti laisvo stiliaus komentarą +editor_ink_label=Laisvo stiliaus komentaras + +freetext_default_content=Įveskite tekstą… diff --git a/addons/web/static/lib/pdfjs/web/locale/ltg/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ltg/viewer.properties index ecdb72352ad..b0e202d2ebe 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ltg/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ltg/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Pošreizejais skots tools.title=Reiki tools_label=Reiki first_page.title=Īt iz pyrmū lopu -first_page.label=Īt iz pyrmū lopu first_page_label=Īt iz pyrmū lopu last_page.title=Īt iz piedejū lopu -last_page.label=Īt iz piedejū lopu last_page_label=Īt iz piedejū lopu page_rotate_cw.title=Pagrīzt pa pulksteni -page_rotate_cw.label=Pagrīzt pa pulksteni page_rotate_cw_label=Pagrīzt pa pulksteni page_rotate_ccw.title=Pagrīzt pret pulksteni -page_rotate_ccw.label=Pagrīzt pret pulksteni page_rotate_ccw_label=Pagrīzt pret pulksteni cursor_text_select_tool.title=Aktivizēt teksta izvieles reiku @@ -137,7 +133,6 @@ print_progress_close=Atceļt # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Puorslēgt suonu jūslu -toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments) toggle_sidebar_label=Puorslēgt suonu jūslu document_outline.title=Show Document Outline (double-click to expand/collapse all items) document_outline_label=Dokumenta saturs @@ -197,8 +192,6 @@ page_scale_actual=Patīsais izmārs # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Klaida loading_error=Īluodejūt PDF nūtyka klaida. invalid_file_error=Nadereigs voi būjuots PDF fails. missing_file_error=PDF fails nav atrosts. @@ -217,4 +210,3 @@ password_cancel=Atceļt printing_not_supported=Uzmaneibu: Drukuošona nu itei puorlūka dorbojās tikai daleji. printing_not_ready=Uzmaneibu: PDF nav pilneibā īluodeits drukuošonai. web_fonts_disabled=Šķārsteikla fonti nav aktivizāti: Navar īgult PDF fontus. -document_colors_not_allowed=PDF dokumentym nav atļauts izmantuot pošym sovys kruosys: „Atļaut lopom izavieleit pošom sovys kruosys“ ir deaktiveits puorlyukā. diff --git a/addons/web/static/lib/pdfjs/web/locale/lv/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/lv/viewer.properties index 18ed55efbc1..b9b5c03364f 100644 --- a/addons/web/static/lib/pdfjs/web/locale/lv/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/lv/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Pašreizējais skats tools.title=Rīki tools_label=Rīki first_page.title=Iet uz pirmo lapu -first_page.label=Iet uz pirmo lapu first_page_label=Iet uz pirmo lapu last_page.title=Iet uz pēdējo lapu -last_page.label=Iet uz pēdējo lapu last_page_label=Iet uz pēdējo lapu page_rotate_cw.title=Pagriezt pa pulksteni -page_rotate_cw.label=Pagriezt pa pulksteni page_rotate_cw_label=Pagriezt pa pulksteni page_rotate_ccw.title=Pagriezt pret pulksteni -page_rotate_ccw.label=Pagriezt pret pulksteni page_rotate_ccw_label=Pagriezt pret pulksteni cursor_text_select_tool.title=Aktivizēt teksta izvēles rīku @@ -137,7 +133,6 @@ print_progress_close=Atcelt # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Pārslēgt sānu joslu -toggle_sidebar_notification.title=Pārslēgt sānu joslu (dokumenta saturu un pielikumus) toggle_sidebar_label=Pārslēgt sānu joslu document_outline.title=Rādīt dokumenta struktūru (veiciet dubultklikšķi lai izvērstu/sakļautu visus vienumus) document_outline_label=Dokumenta saturs @@ -219,8 +214,6 @@ page_scale_actual=Patiesais izmērs # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Kļūda loading_error=Ielādējot PDF notika kļūda. invalid_file_error=Nederīgs vai bojāts PDF fails. missing_file_error=PDF fails nav atrasts. @@ -239,4 +232,3 @@ password_cancel=Atcelt printing_not_supported=Uzmanību: Drukāšana no šī pārlūka darbojas tikai daļēji. printing_not_ready=Uzmanību: PDF nav pilnībā ielādēts drukāšanai. web_fonts_disabled=Tīmekļa fonti nav aktivizēti: Nevar iegult PDF fontus. -document_colors_not_allowed=PDF dokumentiem nav atļauts izmantot pašiem savas krāsas: „Atļaut lapām izvēlēties pašām savas krāsas“ ir deaktivēts pārlūkā. diff --git a/addons/web/static/lib/pdfjs/web/locale/mai/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/mai/viewer.properties deleted file mode 100644 index 356223fe75e..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/mai/viewer.properties +++ /dev/null @@ -1,168 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=पछिला पृष्ठ -previous_label=पछिला -next.title=अगिला पृष्ठ -next_label=आगाँ - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom_out.title=छोट करू -zoom_out_label=छोट करू -zoom_in.title=पैघ करू -zoom_in_label=जूम इन -zoom.title=छोट-पैघ करू\u0020 -presentation_mode.title=प्रस्तुति अवस्थामे जाउ -presentation_mode_label=प्रस्तुति अवस्था -open_file.title=फाइल खोलू -open_file_label=खोलू -print.title=छापू -print_label=छापू -download.title=डाउनलोड -download_label=डाउनलोड -bookmark.title=मोजुदा दृश्य (नव विंडोमे नकल लिअ अथवा खोलू) -bookmark_label=वर्तमान दृश्य - -# Secondary toolbar and context menu -tools.title=अओजार -tools_label=अओजार -first_page.title=प्रथम पृष्ठ पर जाउ -first_page.label=प्रथम पृष्ठ पर जाउ -first_page_label=प्रथम पृष्ठ पर जाउ -last_page.title=अंतिम पृष्ठ पर जाउ -last_page.label=अंतिम पृष्ठ पर जाउ -last_page_label=अंतिम पृष्ठ पर जाउ -page_rotate_cw.title=घड़ीक दिशा मे घुमाउ -page_rotate_cw.label=घड़ीक दिशा मे घुमाउ -page_rotate_cw_label=घड़ीक दिशा मे घुमाउ -page_rotate_ccw.title=घड़ीक दिशा सँ उनटा घुमाउ -page_rotate_ccw.label=घड़ीक दिशा सँ उनटा घुमाउ -page_rotate_ccw_label=घड़ीक दिशा सँ उनटा घुमाउ - - -# Document properties dialog box -document_properties.title=दस्तावेज़ विशेषता... -document_properties_label=दस्तावेज़ विशेषता... -document_properties_file_name=फाइल नाम: -document_properties_file_size=फ़ाइल आकार: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} बाइट) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} बाइट) -document_properties_title=शीर्षक: -document_properties_author=लेखकः -document_properties_subject=विषय -document_properties_keywords=बीजशब्द -document_properties_creation_date=निर्माण तिथि: -document_properties_modification_date=संशोधन दिनांक: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=सृजक: -document_properties_producer=PDF उत्पादक: -document_properties_version=PDF संस्करण: -document_properties_page_count=पृष्ठ गिनती: -document_properties_close=बन्न करू - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=स्लाइडर टागल -toggle_sidebar_label=स्लाइडर टागल -document_outline_label=दस्तावेज खाका -attachments.title=संलग्नक देखाबू -attachments_label=संलग्नक -thumbs.title=लघु-छवि देखाउ -thumbs_label=लघु छवि -findbar.title=दस्तावेजमे ढूँढू - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=पृष्ठ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=पृष्ठ {{page}} का लघु-चित्र - -# Find panel button title and messages -find_previous.title=खोजक पछिला उपस्थिति ताकू -find_previous_label=पछिला -find_next.title=खोजक अगिला उपस्थिति ताकू -find_next_label=आगाँ -find_highlight=सभटा आलोकित करू -find_match_case_label=मिलान स्थिति -find_reached_top=पृष्ठक शीर्ष जाए पहुँचल, तल सँ जारी -find_reached_bottom=पृष्ठक तल मे जाए पहुँचल, शीर्ष सँ जारी -find_not_found=वाकींश नहि भेटल - -# Error panel labels -error_more_info=बेसी सूचना -error_less_info=कम सूचना -error_close=बन्न करू -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=संदेश: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=स्टैक: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=फ़ाइल: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=पंक्ति: {{line}} -rendering_error=पृष्ठ रेंडरिंगक समय त्रुटि आएल. - -# Predefined zoom values -page_scale_width=पृष्ठ चओड़ाइ -page_scale_fit=पृष्ठ फिट -page_scale_auto=स्वचालित जूम -page_scale_actual=सही आकार -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=त्रुटि -loading_error=पीडीएफ लोड करैत समय एकटा त्रुटि भेल. -invalid_file_error=अमान्य अथवा भ्रष्ट PDF फाइल. -missing_file_error=अनुपस्थित PDF फाइल. -unexpected_response_error=सर्वर सँ अप्रत्याशित प्रतिक्रिया. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=एहि पीडीएफ फ़ाइल केँ खोलबाक लेल कृपया कूटशब्द भरू. -password_invalid=अवैध कूटशब्द, कृपया फिनु कोशिश करू. -password_ok=बेस - -printing_not_supported=चेतावनी: ई ब्राउजर पर छपाइ पूर्ण तरह सँ समर्थित नहि अछि. -printing_not_ready=चेतावनी: पीडीएफ छपाइक लेल पूर्ण तरह सँ लोड नहि अछि. -web_fonts_disabled=वेब फॉन्ट्स निष्क्रिय अछि: अंतःस्थापित PDF फान्टसक उपयोगमे असमर्थ. -document_colors_not_allowed=PDF दस्तावेज़ हुकर अपन रंग केँ उपयोग करबाक लेल अनुमति प्राप्त नहि अछि: 'पृष्ठ केँ हुकर अपन रंग केँ चुनबाक लेल स्वीकृति दिअ जे ओ ओहि ब्राउज़र मे निष्क्रिय अछि. diff --git a/addons/web/static/lib/pdfjs/web/locale/meh/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/meh/viewer.properties index 1d069866999..7a1bf04a674 100644 --- a/addons/web/static/lib/pdfjs/web/locale/meh/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/meh/viewer.properties @@ -13,6 +13,7 @@ # limitations under the License. # Main toolbar buttons (tooltips and alt text for images) +previous.title=Página yata # LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. # LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number @@ -22,10 +23,13 @@ # respectively a number representing the total number of pages in the document. zoom.title=Nasa´a ka´nu/Nasa´a luli +open_file_label=Síne # Secondary toolbar and context menu + + # Document properties dialog box # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # will be replaced by the PDF file size in kilobytes, respectively in bytes. @@ -33,13 +37,29 @@ zoom.title=Nasa´a ka´nu/Nasa´a luli # will be replaced by the PDF file size in megabytes, respectively in bytes. # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=Kuvi +document_properties_close=Nakasɨ # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Nkuvi-ka # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) +findbar_label=Nánuku # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page @@ -48,10 +68,23 @@ zoom.title=Nasa´a ka´nu/Nasa´a luli # number. # Find panel button title and messages +find_input.title=Nánuku +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} # Error panel labels +error_close=Nakasɨ # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be # replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an # english string describing the error. # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack @@ -62,11 +95,17 @@ zoom.title=Nasa´a ka´nu/Nasa´a luli # Predefined zoom values # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. +page_scale_percent={{scale}}% # Loading indicator messages +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_cancel=Nkuvi-ka diff --git a/addons/web/static/lib/pdfjs/web/locale/mk/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/mk/viewer.properties index 85350255a12..24ff730b6a4 100644 --- a/addons/web/static/lib/pdfjs/web/locale/mk/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/mk/viewer.properties @@ -43,10 +43,6 @@ bookmark_label=Овој преглед # Secondary toolbar and context menu tools.title=Алатки -first_page.label=Оди до првата страница -last_page.label=Оди до последната страница -page_rotate_cw.label=Ротирај по стрелките на часовникот -page_rotate_ccw.label=Ротирај спротивно од стрелките на часовникот @@ -127,8 +123,6 @@ page_scale_actual=Вистинска големина # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. -# Loading indicator messages -loading_error_indicator=Грешка loading_error=Настана грешка при вчитувањето на PDF-от. invalid_file_error=Невалидна или корумпирана PDF датотека. missing_file_error=Недостасува PDF документ. @@ -142,4 +136,3 @@ password_cancel=Откажи printing_not_supported=Предупредување: Печатењето не е целосно поддржано во овој прелистувач. printing_not_ready=Предупредување: PDF документот не е целосно вчитан за печатење. web_fonts_disabled=Интернет фонтовите се оневозможени: не може да се користат вградените PDF фонтови. -document_colors_not_allowed=PDF-документите немаат дозвола да користат сопствени бои: Поставката „Дозволи страниците сами да ги избираат своите бои“ е деактивирана од прелистувачот. diff --git a/addons/web/static/lib/pdfjs/web/locale/ml/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ml/viewer.properties deleted file mode 100644 index d4a9eb4762e..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/ml/viewer.properties +++ /dev/null @@ -1,184 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=മുമ്പുള്ള താള്‍ -previous_label=മുമ്പു് -next.title=അടുത്ത താള്‍ -next_label=അടുത്തതു് - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=താള്‍ -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}} ലെ -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pagesCount}} ലെ {{pageNumber}}) - -zoom_out.title=ചെറുതാക്കുക -zoom_out_label=ചെറുതാക്കുക -zoom_in.title=വലുതാക്കുക -zoom_in_label=വലുതാക്കുക -zoom.title=വ്യാപ്തി മാറ്റുക -presentation_mode.title=പ്രസന്റേഷന്‍ രീതിയിലേക്കു് മാറ്റുക -presentation_mode_label=പ്രസന്റേഷന്‍ രീതി -open_file.title=ഫയല്‍ തുറക്കുക -open_file_label=തുറക്കുക -print.title=പ്രിന്റ് ചെയ്യുക -print_label=പ്രിന്റ് ചെയ്യുക -download.title=ഡൌണ്‍ലോഡ് ചെയ്യുക -download_label=ഡൌണ്‍ലോഡ് ചെയ്യുക -bookmark.title=നിലവിലുള്ള കാഴ്ച (പുതിയ ജാലകത്തില്‍ പകര്‍ത്തുക അല്ലെങ്കില്‍ തുറക്കുക) -bookmark_label=നിലവിലുള്ള കാഴ്ച - -# Secondary toolbar and context menu -tools.title=ഉപകരണങ്ങള്‍ -tools_label=ഉപകരണങ്ങള്‍ -first_page.title=ആദ്യത്തെ താളിലേയ്ക്കു് പോകുക -first_page.label=ആദ്യത്തെ താളിലേയ്ക്കു് പോകുക -first_page_label=ആദ്യത്തെ താളിലേയ്ക്കു് പോകുക -last_page.title=അവസാന താളിലേയ്ക്കു് പോകുക -last_page.label=അവസാന താളിലേയ്ക്കു് പോകുക -last_page_label=അവസാന താളിലേയ്ക്കു് പോകുക -page_rotate_cw.title=ഘടികാരദിശയില്‍ കറക്കുക -page_rotate_cw.label=ഘടികാരദിശയില്‍ കറക്കുക -page_rotate_cw_label=ഘടികാരദിശയില്‍ കറക്കുക -page_rotate_ccw.title=ഘടികാര ദിശയ്ക്കു് വിപരീതമായി കറക്കുക -page_rotate_ccw.label=ഘടികാര ദിശയ്ക്കു് വിപരീതമായി കറക്കുക -page_rotate_ccw_label=ഘടികാര ദിശയ്ക്കു് വിപരീതമായി കറക്കുക - -cursor_text_select_tool.title=ടെക്സ്റ്റ് തിരഞ്ഞെടുക്കൽ ടൂള്‍ പ്രാപ്തമാക്കുക -cursor_text_select_tool_label=ടെക്സ്റ്റ് തിരഞ്ഞെടുക്കൽ ടൂള്‍ -cursor_hand_tool.title=ഹാന്റ് ടൂള്‍ പ്രാപ്തമാക്കുക -cursor_hand_tool_label=ഹാന്റ് ടൂള്‍ - -# Document properties dialog box -document_properties.title=രേഖയുടെ വിശേഷതകള്‍... -document_properties_label=രേഖയുടെ വിശേഷതകള്‍... -document_properties_file_name=ഫയലിന്റെ പേര്‌: -document_properties_file_size=ഫയലിന്റെ വലിപ്പം:‌‌ -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} കെബി ({{size_b}} ബൈറ്റുകള്‍) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} എംബി ({{size_b}} ബൈറ്റുകള്‍) -document_properties_title=തലക്കെട്ട്‌\u0020 -document_properties_author=രചയിതാവ്: -document_properties_subject=വിഷയം: -document_properties_keywords=കീവേര്‍ഡുകള്‍: -document_properties_creation_date=പൂര്‍ത്തിയാകുന്ന തീയതി: -document_properties_modification_date=മാറ്റം വരുത്തിയ തീയതി: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=സൃഷ്ടികര്‍ത്താവ്: -document_properties_producer=പിഡിഎഫ് പ്രൊഡ്യൂസര്‍: -document_properties_version=പിഡിഎഫ് പതിപ്പ്: -document_properties_page_count=താളിന്റെ എണ്ണം: -document_properties_close=അടയ്ക്കുക - -print_progress_message=പ്രിന്റുചെയ്യുന്നതിന് ഡോക്യുമെന്റ് തയ്യാറാക്കുന്നു… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=റദ്ദാക്കുക - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=സൈഡ് ബാറിലേക്കു് മാറ്റുക -toggle_sidebar_notification.title=ടോഗിൾ സൈഡ്ബാർ (ഡോക്യുമെന്റില്‍ ഔട്ട്ലൈൻ/അറ്റാച്ചുമെന്റുകൾ അടങ്ങിയിരിക്കുന്നു) -toggle_sidebar_label=സൈഡ് ബാറിലേക്കു് മാറ്റുക -document_outline.title=ഡോക്യുമെന്റിന്റെ ബാഹ്യരേഖ കാണിക്കുക (എല്ലാ ഇനങ്ങളും വിപുലീകരിക്കാനും ചുരുക്കാനും ഇരട്ട ക്ലിക്കുചെയ്യുക) -document_outline_label=രേഖയുടെ ഔട്ട്ലൈന്‍ -attachments.title=അറ്റാച്മെന്റുകള്‍ കാണിയ്ക്കുക -attachments_label=അറ്റാച്മെന്റുകള്‍ -thumbs.title=തംബ്നെയിലുകള്‍ കാണിയ്ക്കുക -thumbs_label=തംബ്നെയിലുകള്‍ -findbar.title=രേഖയില്‍ കണ്ടുപിടിയ്ക്കുക -findbar_label=കണ്ടെത്തുക - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=താള്‍ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} താളിനുള്ള തംബ്നെയില്‍ - -# Find panel button title and messages -find_input.title=കണ്ടെത്തുക -find_input.placeholder=ഡോക്യുമെന്റില്‍ കണ്ടെത്തുക… -find_previous.title=വാചകം ഇതിനു മുന്‍പ്‌ ആവര്‍ത്തിച്ചത്‌ കണ്ടെത്തുക\u0020 -find_previous_label=മുമ്പു് -find_next.title=വാചകം വീണ്ടും ആവര്‍ത്തിക്കുന്നത്‌ കണ്ടെത്തുക\u0020 -find_next_label=അടുത്തതു് -find_highlight=എല്ലാം എടുത്തുകാണിയ്ക്കുക -find_match_case_label=അക്ഷരങ്ങള്‍ ഒത്തുനോക്കുക -find_reached_top=രേഖയുടെ മുകളില്‍ എത്തിയിരിക്കുന്നു, താഴെ നിന്നും തുടരുന്നു -find_reached_bottom=രേഖയുടെ അവസാനം വരെ എത്തിയിരിക്കുന്നു, മുകളില്‍ നിന്നും തുടരുന്നു\u0020 -find_not_found=വാചകം കണ്ടെത്താനായില്ല\u0020 - -# Error panel labels -error_more_info=കൂടുതല്‍ വിവരം -error_less_info=കുറച്ച് വിവരം -error_close=അടയ്ക്കുക -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=സന്ദേശം: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=സ്റ്റാക്ക്: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ഫയല്‍: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=വരി: {{line}} -rendering_error=താള്‍ റെണ്ടര്‍ ചെയ്യുമ്പോള്‍‌ പിശകുണ്ടായിരിയ്ക്കുന്നു. - -# Predefined zoom values -page_scale_width=താളിന്റെ വീതി -page_scale_fit=താള്‍ പാകത്തിനാക്കുക -page_scale_auto=സ്വയമായി വലുതാക്കുക -page_scale_actual=യഥാര്‍ത്ഥ വ്യാപ്തി -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=പിശക് -loading_error=പിഡിഎഫ് ലഭ്യമാക്കുമ്പോള്‍ പിശക് ഉണ്ടായിരിയ്ക്കുന്നു. -invalid_file_error=തെറ്റായ അല്ലെങ്കില്‍ തകരാറുള്ള പിഡിഎഫ് ഫയല്‍. -missing_file_error=പിഡിഎഫ് ഫയല്‍ ലഭ്യമല്ല. -unexpected_response_error=പ്രതീക്ഷിക്കാത്ത സെര്‍വര്‍ മറുപടി. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=ഈ പിഡിഎഫ് ഫയല്‍ തുറക്കുന്നതിനു് രഹസ്യവാക്ക് നല്‍കുക. -password_invalid=തെറ്റായ രഹസ്യവാക്ക്, ദയവായി വീണ്ടും ശ്രമിയ്ക്കുക. -password_ok=ശരി -password_cancel=റദ്ദാക്കുക - -printing_not_supported=മുന്നറിയിപ്പു്: ഈ ബ്രൌസര്‍ പൂര്‍ണ്ണമായി പ്രിന്റിങ് പിന്തുണയ്ക്കുന്നില്ല. -printing_not_ready=മുന്നറിയിപ്പു്: പ്രിന്റ് ചെയ്യുന്നതിനു് പിഡിഎഫ് പൂര്‍ണ്ണമായി ലഭ്യമല്ല. -web_fonts_disabled=വെബിനുള്ള അക്ഷരസഞ്ചയങ്ങള്‍ പ്രവര്‍ത്തന രഹിതം: എംബഡ്ഡ് ചെയ്ത പിഡിഎഫ് അക്ഷരസഞ്ചയങ്ങള്‍ ഉപയോഗിയ്ക്കുവാന്‍ സാധ്യമല്ല. -document_colors_not_allowed=സ്വന്തം നിറങ്ങള്‍ ഉപയോഗിയ്ക്കുവാന്‍ പിഡിഎഫ് രേഖകള്‍ക്കു് അനുവാദമില്ല: 'സ്വന്തം നിറങ്ങള്‍ ഉപയോഗിയ്ക്കുവാന്‍ താളുകളെ അനുവദിയ്ക്കുക' എന്നതു് ബ്രൌസറില്‍ നിര്‍ജീവമാണു്. diff --git a/addons/web/static/lib/pdfjs/web/locale/mn/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/mn/viewer.properties deleted file mode 100644 index 39edeb2b533..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/mn/viewer.properties +++ /dev/null @@ -1,82 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom.title=Тэлэлт -open_file.title=Файл нээ -open_file_label=Нээ - -# Secondary toolbar and context menu - - -# Document properties dialog box -document_properties_file_name=Файлын нэр: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Гарчиг: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. - -# Find panel button title and messages -find_previous.title=Хайлтын өмнөх олдцыг харуулна -find_next.title=Хайлтын дараагийн олдцыг харуулна -find_not_found=Олдсонгүй - -# Error panel labels -error_more_info=Нэмэлт мэдээлэл -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number - -# Predefined zoom values -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Алдаа - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_ok=OK - diff --git a/addons/web/static/lib/pdfjs/web/locale/mr/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/mr/viewer.properties index 67e419ec6ea..697c2a3f3bd 100644 --- a/addons/web/static/lib/pdfjs/web/locale/mr/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/mr/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=सध्याचे अवलोकन tools.title=साधने tools_label=साधने first_page.title=पहिल्या पृष्ठावर जा -first_page.label=पहिल्या पृष्ठावर जा first_page_label=पहिल्या पृष्ठावर जा last_page.title=शेवटच्या पृष्ठावर जा -last_page.label=शेवटच्या पृष्ठावर जा last_page_label=शेवटच्या पृष्ठावर जा page_rotate_cw.title=घड्याळाच्या काट्याच्या दिशेने फिरवा -page_rotate_cw.label=घड्याळाच्या काट्याच्या दिशेने फिरवा page_rotate_cw_label=घड्याळाच्या काट्याच्या दिशेने फिरवा page_rotate_ccw.title=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा -page_rotate_ccw.label=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा page_rotate_ccw_label=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा cursor_text_select_tool.title=मजकूर निवड साधन कार्यान्वयीत करा @@ -129,7 +125,6 @@ print_progress_close=रद्द करा # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=बाजूचीपट्टी टॉगल करा -toggle_sidebar_notification.title=बाजूची पट्टी टॉगल करा (दस्तऐवजामध्ये रुपरेषा/जोडण्या आहेत) toggle_sidebar_label=बाजूचीपट्टी टॉगल करा document_outline.title=दस्तऐवज बाह्यरेखा दर्शवा (विस्तृत करण्यासाठी दोनवेळा क्लिक करा /सर्व घटक दाखवा) document_outline_label=दस्तऐवज रूपरेषा @@ -166,10 +161,17 @@ find_reached_bottom=दस्तऐवजाच्या तळाला पो # index of the currently active find result, respectively a number representing # the total number of matches in the document. find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} पैकी {{current}} सुसंगत +find_match_count[two]={{total}} पैकी {{current}} सुसंगत +find_match_count[few]={{total}} पैकी {{current}} सुसंगत +find_match_count[many]={{total}} पैकी {{current}} सुसंगत +find_match_count[other]={{total}} पैकी {{current}} सुसंगत # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # [zero|one|two|few|many|other], with [other] as the default value. # "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} find_match_count_limit[zero]={{limit}} पेक्षा अधिक जुळण्या +find_match_count_limit[one]={{limit}} पेक्षा अधिक जुळण्या find_match_count_limit[two]={{limit}} पेक्षा अधिक जुळण्या find_match_count_limit[few]={{limit}} पेक्षा अधिक जुळण्या find_match_count_limit[many]={{limit}} पेक्षा अधिक जुळण्या @@ -204,13 +206,15 @@ page_scale_actual=प्रत्यक्ष आकार # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=त्रुटी loading_error=PDF लोड करतेवेळी त्रुटी आढळली. invalid_file_error=अवैध किंवा दोषीत PDF फाइल. missing_file_error=न आढळणारी PDF फाइल. unexpected_response_error=अनपेक्षित सर्व्हर प्रतिसाद. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -224,4 +228,3 @@ password_cancel=रद्द करा printing_not_supported=सावधानता: या ब्राउझरतर्फे छपाइ पूर्णपणे समर्थीत नाही. printing_not_ready=सावधानता: छपाईकरिता PDF पूर्णतया लोड झाले नाही. web_fonts_disabled=वेब टंक असमर्थीत आहेत: एम्बेडेड PDF टंक वापर अशक्य. -document_colors_not_allowed=PDF दस्तऐवजांना त्यांचे रंग वापरण्यास अनुमती नाही: ब्राउझरमध्ये ' पृष्ठांना त्यांचे रंग निवडण्यास अनुमती द्या' बंद केले आहे. diff --git a/addons/web/static/lib/pdfjs/web/locale/ms/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ms/viewer.properties index 3bc7907b80c..a6d4ce8b623 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ms/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ms/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Paparan Semasa tools.title=Alatan tools_label=Alatan first_page.title=Pergi ke Halaman Pertama -first_page.label=Pergi ke Halaman Pertama first_page_label=Pergi ke Halaman Pertama last_page.title=Pergi ke Halaman Terakhir -last_page.label=Pergi ke Halaman Terakhir last_page_label=Pergi ke Halaman Terakhir page_rotate_cw.title=Berputar ikut arah Jam -page_rotate_cw.label=Berputar ikut arah Jam page_rotate_cw_label=Berputar ikut arah Jam page_rotate_ccw.title=Pusing berlawan arah jam -page_rotate_ccw.label=Pusing berlawan arah jam page_rotate_ccw_label=Pusing berlawan arah jam cursor_text_select_tool.title=Dayakan Alatan Pilihan Teks @@ -137,7 +133,6 @@ print_progress_close=Batal # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Togol Bar Sisi -toggle_sidebar_notification.title=Togol Sidebar (dokumen mengandungi rangka/attachments) toggle_sidebar_label=Togol Bar Sisi document_outline.title=Papar Rangka Dokumen (klik-dua-kali untuk kembangkan/kolaps semua item) document_outline_label=Rangka Dokumen @@ -219,8 +214,6 @@ page_scale_actual=Saiz Sebenar # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Ralat loading_error=Masalah berlaku semasa menuatkan sebuah PDF. invalid_file_error=Tidak sah atau fail PDF rosak. missing_file_error=Fail PDF Hilang. @@ -239,4 +232,3 @@ password_cancel=Batal printing_not_supported=Amaran: Cetakan ini tidak sepenuhnya disokong oleh pelayar ini. printing_not_ready=Amaran: PDF tidak sepenuhnya dimuatkan untuk dicetak. web_fonts_disabled=Fon web dinyahdayakan: tidak dapat menggunakan fon terbenam PDF. -document_colors_not_allowed=Dokumen PDF tidak dibenarkan untuk menggunakan warna sendiri: “Izinkan halaman untuk memilih warna sendiri” telah dinyahaktifkan dalam pelayar. diff --git a/addons/web/static/lib/pdfjs/web/locale/my/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/my/viewer.properties index f5676198f95..39944cdded7 100644 --- a/addons/web/static/lib/pdfjs/web/locale/my/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/my/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=လက်ရှိ မြင်ကွင်း tools.title=ကိရိယာများ tools_label=ကိရိယာများ first_page.title=ပထမ စာမျက်နှာသို့ -first_page.label=ပထမ စာမျက်နှာသို့ first_page_label=ပထမ စာမျက်နှာသို့ last_page.title=နောက်ဆုံး စာမျက်နှာသို့ -last_page.label=နောက်ဆုံး စာမျက်နှာသို့ last_page_label=နောက်ဆုံး စာမျက်နှာသို့ page_rotate_cw.title=နာရီလက်တံ အတိုင်း -page_rotate_cw.label=နာရီလက်တံ အတိုင်း page_rotate_cw_label=နာရီလက်တံ အတိုင်း page_rotate_ccw.title=နာရီလက်တံ ပြောင်းပြန် -page_rotate_ccw.label=နာရီလက်တံ ပြောင်းပြန် page_rotate_ccw_label=နာရီလက်တံ ပြောင်းပြန် @@ -107,7 +103,6 @@ print_progress_close=ပယ်​ဖျက်ပါ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=ဘေးတန်းဖွင့်ပိတ် -toggle_sidebar_notification.title=ဘေးဘားတန်းကို အဖွင့်/အပိတ် လုပ်ရန် (စာတမ်းတွင် outline/attachments ပါဝင်နိုင်သည်) toggle_sidebar_label=ဖွင့်ပိတ် ဆလိုက်ဒါ document_outline.title=စာတမ်းအကျဉ်းချုပ်ကို ပြပါ (စာရင်းအားလုံးကို ချုံ့/ချဲ့ရန် ကလစ်နှစ်ချက်နှိပ်ပါ) document_outline_label=စာတမ်းအကျဉ်းချုပ် @@ -175,8 +170,6 @@ page_scale_actual=အမှန်တကယ်ရှိတဲ့ အရွယ် # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=အမှား loading_error=PDF ဖိုင် ကိုဆွဲတင်နေချိန်မှာ အမှားတစ်ခုတွေ့ရပါတယ်။ invalid_file_error=မရသော သို့ ပျက်နေသော PDF ဖိုင် missing_file_error=PDF ပျောက်ဆုံး @@ -195,4 +188,3 @@ password_cancel=ပယ်​ဖျက်ပါ printing_not_supported=သတိပေးချက်၊ပရင့်ထုတ်ခြင်းကိုဤဘယောက်ဆာသည် ပြည့်ဝစွာထောက်ပံ့မထားပါ ။ printing_not_ready=သတိပေးချက်: ယခု PDF ဖိုင်သည် ပုံနှိပ်ရန် မပြည့်စုံပါ web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. -document_colors_not_allowed=PDF ဖိုင်အား ၎င်းဤ ကိုယ်ပိုင်အရောင်များကို အသုံးပြုခွင့်မပေးထားပါ ။ 'စာမျက်နှာအားလုံးအားအရောင်ရွေးချယ်ခွင့်' အား ယခု ဘယောက်ဆာတွင် ပိတ်ထားခြင်းကြောင့်ဖြစ် သှ် diff --git a/addons/web/static/lib/pdfjs/web/locale/nb-NO/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/nb-NO/viewer.properties index 8656cb4ff0c..5a72650a1ec 100644 --- a/addons/web/static/lib/pdfjs/web/locale/nb-NO/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/nb-NO/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Nåværende visning tools.title=Verktøy tools_label=Verktøy first_page.title=Gå til første side -first_page.label=Gå til første side first_page_label=Gå til første side last_page.title=Gå til siste side -last_page.label=Gå til siste side last_page_label=Gå til siste side page_rotate_cw.title=Roter med klokken -page_rotate_cw.label=Roter med klokken page_rotate_cw_label=Roter med klokken page_rotate_ccw.title=Roter mot klokken -page_rotate_ccw.label=Roter mot klokken page_rotate_ccw_label=Roter mot klokken cursor_text_select_tool.title=Aktiver tekstmarkeringsverktøy @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Tekstmarkeringsverktøy cursor_hand_tool.title=Aktiver handverktøy cursor_hand_tool_label=Handverktøy +scroll_page.title=Bruk siderulling +scroll_page_label=Siderulling scroll_vertical.title=Bruk vertikal rulling scroll_vertical_label=Vertikal rulling scroll_horizontal.title=Bruk horisontal rulling @@ -137,17 +135,24 @@ print_progress_close=Avbryt # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Slå av/på sidestolpe -toggle_sidebar_notification.title=Vis/gjem sidestolpe (dokumentet inneholder oversikt/vedlegg) +toggle_sidebar_notification2.title=Vis/gjem sidestolpe (dokumentet inneholder oversikt/vedlegg/lag) toggle_sidebar_label=Slå av/på sidestolpe document_outline.title=Vis dokumentdisposisjonen (dobbeltklikk for å utvide/skjule alle elementer) document_outline_label=Dokumentdisposisjon attachments.title=Vis vedlegg attachments_label=Vedlegg +layers.title=Vis lag (dobbeltklikk for å tilbakestille alle lag til standardtilstand) +layers_label=Lag thumbs.title=Vis miniatyrbilde thumbs_label=Miniatyrbilde +current_outline_item.title=Finn gjeldende disposisjonselement +current_outline_item_label=Gjeldende disposisjonselement findbar.title=Finn i dokumentet findbar_label=Finn +additional_layers=Ytterligere lag +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Side {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Finn neste forekomst av frasen find_next_label=Neste find_highlight=Uthev alle find_match_case_label=Skill store/små bokstaver +find_match_diacritics_label=Samsvar diakritiske tegn find_entire_word_label=Hele ord find_reached_top=Nådde toppen av dokumentet, fortsetter fra bunnen find_reached_bottom=Nådde bunnen av dokumentet, fortsetter fra toppen @@ -220,7 +226,7 @@ page_scale_actual=Virkelig størrelse page_scale_percent={{scale}} % # Loading indicator messages -loading_error_indicator=Feil +loading=Laster… loading_error=En feil oppstod ved lasting av PDF. invalid_file_error=Ugyldig eller skadet PDF-fil. missing_file_error=Manglende PDF-fil. @@ -243,4 +249,33 @@ password_cancel=Avbryt printing_not_supported=Advarsel: Utskrift er ikke fullstendig støttet av denne nettleseren. printing_not_ready=Advarsel: PDF er ikke fullstendig innlastet for utskrift. web_fonts_disabled=Web-fonter er avslått: Kan ikke bruke innbundne PDF-fonter. -document_colors_not_allowed=PDF-dokumenter tillates ikke å bruke deres egne farger: "Tillat sider å velge egne farger" er deaktivert i nettleseren. + +# Editor +editor_none.title=Slå av kommentarredigering +editor_none_label=Slå av redigering +editor_free_text.title=Legg til fritekstkommentar +editor_free_text_label=Fritekstkommentar +editor_ink.title=Legg til håndskreven kommentar +editor_ink_label=Håndskreven kommentar + +freetext_default_content=Skriv inn litt tekst… + +free_text_default_content=Skriv inn tekst… + +# Editor Parameters +editor_free_text_font_color=Skriftfarge +editor_free_text_font_size=Skriftstørrelse +editor_ink_line_color=Linjefarge +editor_ink_line_thickness=Linjetykkelse + +# Editor Parameters +editor_free_text_color=Farge +editor_free_text_size=Størrelse +editor_ink_color=Farge +editor_ink_thickness=Tykkelse +editor_ink_opacity=Ugjennomsiktighet + +# Editor aria +editor_free_text_aria_label=FreeText-redigerer +editor_ink_aria_label=Ink-redigerer +editor_ink_canvas_aria_label=Brukerskapt bilde diff --git a/addons/web/static/lib/pdfjs/web/locale/ne-NP/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ne-NP/viewer.properties index 13bf69ba9a6..004416745a6 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ne-NP/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ne-NP/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=हालको दृश्य tools.title=औजारहरू tools_label=औजारहरू first_page.title=पहिलो पृष्ठमा जानुहोस् -first_page.label=पहिलो पृष्ठमा जानुहोस् first_page_label=पहिलो पृष्ठमा जानुहोस् last_page.title=पछिल्लो पृष्ठमा जानुहोस् -last_page.label=पछिल्लो पृष्ठमा जानुहोस् last_page_label=पछिल्लो पृष्ठमा जानुहोस् page_rotate_cw.title=घडीको दिशामा घुमाउनुहोस् -page_rotate_cw.label=घडीको दिशामा घुमाउनुहोस् page_rotate_cw_label=घडीको दिशामा घुमाउनुहोस् page_rotate_ccw.title=घडीको विपरित दिशामा घुमाउनुहोस् -page_rotate_ccw.label=घडीको विपरित दिशामा घुमाउनुहोस् page_rotate_ccw_label=घडीको विपरित दिशामा घुमाउनुहोस् cursor_text_select_tool.title=पाठ चयन उपकरण सक्षम गर्नुहोस् @@ -65,6 +61,16 @@ cursor_text_select_tool_label=पाठ चयन उपकरण cursor_hand_tool.title=हाते उपकरण सक्षम गर्नुहोस् cursor_hand_tool_label=हाते उपकरण +scroll_vertical.title=ठाडो स्क्रोलिङ्ग प्रयोग गर्नुहोस् +scroll_vertical_label=ठाडो स्क्र्रोलिङ्ग +scroll_horizontal.title=तेर्सो स्क्रोलिङ्ग प्रयोग गर्नुहोस् +scroll_horizontal_label=तेर्सो स्क्रोलिङ्ग +scroll_wrapped.title=लिपि स्क्रोलिङ्ग प्रयोग गर्नुहोस् +scroll_wrapped_label=लिपि स्क्रोलिङ्ग + +spread_none.title=पृष्ठ स्प्रेडमा सामेल हुनुहुन्न +spread_none_label=स्प्रेड छैन + # Document properties dialog box document_properties.title=कागजात विशेषताहरू... document_properties_label=कागजात विशेषताहरू... @@ -89,6 +95,23 @@ document_properties_creator=सर्जक: document_properties_producer=PDF निर्माता: document_properties_version=PDF संस्करण document_properties_page_count=पृष्ठ गणना: +document_properties_page_size=पृष्ठ आकार: +document_properties_page_size_unit_inches=इन्च +document_properties_page_size_unit_millimeters=मि.मि. +document_properties_page_size_orientation_portrait=पोट्रेट +document_properties_page_size_orientation_landscape=परिदृश्य +document_properties_page_size_name_letter=अक्षर +document_properties_page_size_name_legal=कानूनी +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=हो +document_properties_linearized_no=होइन document_properties_close=बन्द गर्नुहोस् print_progress_message=मुद्रणका लागि कागजात तयारी गरिदै… @@ -101,7 +124,6 @@ print_progress_close=रद्द गर्नुहोस् # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=टगल साइडबार -toggle_sidebar_notification.title=साइडबार टगल गर्नुहोस् (कागजातमा समावेश भएको कुराहरू रूपरेखा/attachments) toggle_sidebar_label=टगल साइडबार document_outline.title=कागजातको रूपरेखा देखाउनुहोस् (सबै वस्तुहरू विस्तार/पतन गर्न डबल-क्लिक गर्नुहोस्) document_outline_label=दस्तावेजको रूपरेखा @@ -112,6 +134,7 @@ thumbs_label=थम्बनेलहरू findbar.title=कागजातमा फेला पार्नुहोस् findbar_label=फेला पार्नुहोस् +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -129,8 +152,17 @@ find_next.title=यस वाक्यांशको पछिल्लो घ find_next_label=अर्को find_highlight=सबै हाइलाइट गर्ने find_match_case_label=केस जोडा मिलाउनुहोस् +find_entire_word_label=पुरा शब्दहरु find_reached_top=पृष्ठको शिर्षमा पुगीयो, तलबाट जारी गरिएको थियो find_reached_bottom=पृष्ठको अन्त्यमा पुगीयो, शिर्षबाट जारी गरिएको थियो +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. find_not_found=वाक्यांश फेला परेन # Error panel labels @@ -162,12 +194,14 @@ page_scale_actual=वास्तविक आकार page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=त्रुटि loading_error=यो PDF लोड गर्दा एउटा त्रुटि देखापर्‍यो। invalid_file_error=अवैध वा दुषित PDF फाइल। missing_file_error=हराईरहेको PDF फाइल। unexpected_response_error=अप्रत्याशित सर्भर प्रतिक्रिया। +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -181,4 +215,3 @@ password_cancel=रद्द गर्नुहोस् printing_not_supported=चेतावनी: यो ब्राउजरमा मुद्रण पूर्णतया समर्थित छैन। printing_not_ready=चेतावनी: PDF मुद्रणका लागि पूर्णतया लोड भएको छैन। web_fonts_disabled=वेब फन्ट असक्षम छन्: एम्बेडेड PDF फन्ट प्रयोग गर्न असमर्थ। -document_colors_not_allowed=PDF कागजातहरूलाई आफ्नै रङ प्रयोग गर्न अनुमति छैन: 'पृष्ठलाई आफ्नै रङ चयन गर्न अनुमति दिने' ब्राउजरमा निष्क्रिय गरिएको छ। diff --git a/addons/web/static/lib/pdfjs/web/locale/nl/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/nl/viewer.properties index c62110a46d8..eb659b6f121 100644 --- a/addons/web/static/lib/pdfjs/web/locale/nl/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/nl/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Huidige weergave tools.title=Hulpmiddelen tools_label=Hulpmiddelen first_page.title=Naar eerste pagina gaan -first_page.label=Naar eerste pagina gaan first_page_label=Naar eerste pagina gaan last_page.title=Naar laatste pagina gaan -last_page.label=Naar laatste pagina gaan last_page_label=Naar laatste pagina gaan page_rotate_cw.title=Rechtsom draaien -page_rotate_cw.label=Rechtsom draaien page_rotate_cw_label=Rechtsom draaien page_rotate_ccw.title=Linksom draaien -page_rotate_ccw.label=Linksom draaien page_rotate_ccw_label=Linksom draaien cursor_text_select_tool.title=Tekstselectiehulpmiddel inschakelen @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Tekstselectiehulpmiddel cursor_hand_tool.title=Handhulpmiddel inschakelen cursor_hand_tool_label=Handhulpmiddel +scroll_page.title=Paginascrollen gebruiken +scroll_page_label=Paginascrollen scroll_vertical.title=Verticaal scrollen gebruiken scroll_vertical_label=Verticaal scrollen scroll_horizontal.title=Horizontaal scrollen gebruiken @@ -93,7 +91,7 @@ document_properties_mb={{size_mb}} MB ({{size_b}} bytes) document_properties_title=Titel: document_properties_author=Auteur: document_properties_subject=Onderwerp: -document_properties_keywords=Trefwoorden: +document_properties_keywords=Sleutelwoorden: document_properties_creation_date=Aanmaakdatum: document_properties_modification_date=Wijzigingsdatum: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" @@ -137,17 +135,24 @@ print_progress_close=Annuleren # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Zijbalk in-/uitschakelen -toggle_sidebar_notification.title=Zijbalk in-/uitschakelen (document bevat overzicht/bijlagen) +toggle_sidebar_notification2.title=Zijbalk in-/uitschakelen (document bevat overzicht/bijlagen/lagen) toggle_sidebar_label=Zijbalk in-/uitschakelen document_outline.title=Documentoverzicht tonen (dubbelklik om alle items uit/samen te vouwen) document_outline_label=Documentoverzicht attachments.title=Bijlagen tonen attachments_label=Bijlagen +layers.title=Lagen tonen (dubbelklik om alle lagen naar de standaardstatus terug te zetten) +layers_label=Lagen thumbs.title=Miniaturen tonen thumbs_label=Miniaturen +current_outline_item.title=Huidig item in inhoudsopgave zoeken +current_outline_item_label=Huidig item in inhoudsopgave findbar.title=Zoeken in document findbar_label=Zoeken +additional_layers=Aanvullende lagen +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pagina {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=De volgende overeenkomst van de tekst zoeken find_next_label=Volgende find_highlight=Alles markeren find_match_case_label=Hoofdlettergevoelig +find_match_diacritics_label=Diakritische tekens gebruiken find_entire_word_label=Hele woorden find_reached_top=Bovenkant van document bereikt, doorgegaan vanaf onderkant find_reached_bottom=Onderkant van document bereikt, doorgegaan vanaf bovenkant @@ -220,7 +226,7 @@ page_scale_actual=Werkelijke grootte page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Fout +loading=Laden… loading_error=Er is een fout opgetreden bij het laden van de PDF. invalid_file_error=Ongeldig of beschadigd PDF-bestand. missing_file_error=PDF-bestand ontbreekt. @@ -243,4 +249,26 @@ password_cancel=Annuleren printing_not_supported=Waarschuwing: afdrukken wordt niet volledig ondersteund door deze browser. printing_not_ready=Waarschuwing: de PDF is niet volledig geladen voor afdrukken. web_fonts_disabled=Weblettertypen zijn uitgeschakeld: gebruik van ingebedde PDF-lettertypen is niet mogelijk. -document_colors_not_allowed=PDF-documenten mogen hun eigen kleuren niet gebruiken: ‘Pagina’s toestaan om hun eigen kleuren te kiezen’ is uitgeschakeld in de browser. + +# Editor +editor_none.title=Bewerken van annotaties uitschakelen +editor_none_label=Bewerken uitschakelen +editor_free_text.title=FreeText-annotatie toevoegen +editor_free_text_label=FreeText-annotatie +editor_ink.title=Ink-annotatie toevoegen +editor_ink_label=Ink-annotatie + +freetext_default_content=Voer wat tekst in… + +free_text_default_content=Voer tekst in… + +# Editor Parameters +editor_free_text_font_color=Letterkleur +editor_free_text_font_size=Lettergrootte +editor_ink_line_color=Lijnkleur +editor_ink_line_thickness=Lijndikte + +# Editor aria +editor_free_text_aria_label=FreeText-bewerker +editor_ink_aria_label=Ink-bewerker +editor_ink_canvas_aria_label=Door gebruiker gemaakte afbeelding diff --git a/addons/web/static/lib/pdfjs/web/locale/nn-NO/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/nn-NO/viewer.properties index f0feeb40e11..e93a7adb4de 100644 --- a/addons/web/static/lib/pdfjs/web/locale/nn-NO/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/nn-NO/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Gjeldande vising tools.title=Verktøy tools_label=Verktøy first_page.title=Gå til første side -first_page.label=Gå til første side first_page_label=Gå til første side last_page.title=Gå til siste side -last_page.label=Gå til siste side last_page_label=Gå til siste side page_rotate_cw.title=Roter med klokka -page_rotate_cw.label=Roter med klokka page_rotate_cw_label=Roter med klokka page_rotate_ccw.title=Roter mot klokka -page_rotate_ccw.label=Roter mot klokka page_rotate_ccw_label=Roter mot klokka cursor_text_select_tool.title=Aktiver tekstmarkeringsverktøy @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Tekstmarkeringsverktøy cursor_hand_tool.title=Aktiver handverktøy cursor_hand_tool_label=Handverktøy +scroll_page.title=Bruk siderulling +scroll_page_label=Siderulling scroll_vertical.title=Bruk vertikal rulling scroll_vertical_label=Vertikal rulling scroll_horizontal.title=Bruk horisontal rulling @@ -137,17 +135,24 @@ print_progress_close=Avbryt # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Slå av/på sidestolpe -toggle_sidebar_notification.title=Vis/gøym sidestolpen (dokumentet inneheld oversikt/vedlegg) +toggle_sidebar_notification2.title=Vis/gøym sidestolpe (dokumentet inneheld oversikt/vedlegg/lag) toggle_sidebar_label=Slå av/på sidestolpe document_outline.title=Vis dokumentdisposisjonen (dobbelklikk for å utvide/gøyme alle elementa) document_outline_label=Dokumentdisposisjon attachments.title=Vis vedlegg attachments_label=Vedlegg +layers.title=Vis lag (dobbeltklikk for å tilbakestille alle lag til standardtilstand) +layers_label=Lag thumbs.title=Vis miniatyrbilde thumbs_label=Miniatyrbilde +current_outline_item.title=Finn gjeldande disposisjonselement +current_outline_item_label=Gjeldande disposisjonselement findbar.title=Finn i dokumentet findbar_label=Finn +additional_layers=Ytterlegare lag +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Side {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Finn neste førekomst av frasen find_next_label=Neste find_highlight=Uthev alle find_match_case_label=Skil store/små bokstavar +find_match_diacritics_label=Samsvar diakritiske teikn find_entire_word_label=Heile ord find_reached_top=Nådde toppen av dokumentet, fortset frå botnen find_reached_bottom=Nådde botnen av dokumentet, fortset frå toppen @@ -220,7 +226,7 @@ page_scale_actual=Verkeleg storleik page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Feil +loading=Lastar… loading_error=Ein feil oppstod ved lasting av PDF. invalid_file_error=Ugyldig eller korrupt PDF-fil. missing_file_error=Manglande PDF-fil. @@ -243,4 +249,33 @@ password_cancel=Avbryt printing_not_supported=Åtvaring: Utskrift er ikkje fullstendig støtta av denne nettlesaren. printing_not_ready=Åtvaring: PDF ikkje fullstendig innlasta for utskrift. web_fonts_disabled=Web-skrifter er slått av: Kan ikkje bruke innbundne PDF-skrifter. -document_colors_not_allowed=PDF-dokument kan ikkje bruke eigne fargar: «Tillat sider å velje eigne fargar» er deaktivert i nettlesaren. + +# Editor +editor_none.title=Slå av kommentarredigering +editor_none_label=Slå av redigering +editor_free_text.title=Legg til fritekstkommentar +editor_free_text_label=Fritekstkommentar +editor_ink.title=Legg til handskriven kommentar +editor_ink_label=Handskriven kommentar + +freetext_default_content=Skriv inn litt tekst… + +free_text_default_content=Skriv inn tekst… + +# Editor Parameters +editor_free_text_font_color=Skriftfarge +editor_free_text_font_size=Skriftstorleik +editor_ink_line_color=Linjefarge +editor_ink_line_thickness=Linjetjukkleik + +# Editor Parameters +editor_free_text_color=Farge +editor_free_text_size=Storleik +editor_ink_color=Farge +editor_ink_thickness=Tjukkleik +editor_ink_opacity=Ugjennomskinleg + +# Editor aria +editor_free_text_aria_label=FreeText-redigerar +editor_ink_aria_label=Ink-redigerar +editor_ink_canvas_aria_label=Brukarskapt bilde diff --git a/addons/web/static/lib/pdfjs/web/locale/nso/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/nso/viewer.properties deleted file mode 100644 index d95406c9913..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/nso/viewer.properties +++ /dev/null @@ -1,130 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Letlakala le fetilego -previous_label=Fetilego -next.title=Letlakala le latelago -next_label=Latelago - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom_out.title=Bušetša ka gare -zoom_out_label=Bušetša ka gare -zoom_in.title=Godišetša ka ntle -zoom_in_label=Godišetša ka ntle -zoom.title=Godiša -presentation_mode.title=Fetogela go mokgwa wa tlhagišo -presentation_mode_label=Mokgwa wa tlhagišo -open_file.title=Bula faele -open_file_label=Bula -print.title=Gatiša -print_label=Gatiša -download.title=Laolla -download_label=Laolla -bookmark.title=Pono ya bjale (kopiša le go bula lefasetereng le leswa) -bookmark_label=Tebelelo ya gona bjale - -# Secondary toolbar and context menu - - -# Document properties dialog box -document_properties_file_name=Leina la faele: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Thaetlele: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Šielanya para ya ka thoko -toggle_sidebar_label=Šielanya para ya ka thoko -document_outline_label=Kakaretšo ya tokumente -thumbs.title=Laetša dikhutšofatšo -thumbs_label=Dikhutšofatšo -findbar.title=Hwetša go tokumente - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Letlakala {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Khutšofatšo ya letlakala {{page}} - -# Find panel button title and messages -find_previous.title=Hwetša tiragalo e fetilego ya sekafoko -find_previous_label=Fetilego -find_next.title=Hwetša tiragalo e latelago ya sekafoko -find_next_label=Latelago -find_highlight=Bonagatša tšohle -find_match_case_label=Swantšha kheisi -find_reached_top=Fihlile godimo ga tokumente, go tšwetšwe pele go tloga tlase -find_reached_bottom=Fihlile mafelelong a tokumente, go tšwetšwe pele go tloga godimo -find_not_found=Sekafoko ga sa hwetšwa - -# Error panel labels -error_more_info=Tshedimošo e oketšegilego -error_less_info=Tshedimošo ya tlasana -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Molaetša: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Mokgobo: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Faele: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Mothaladi: {{line}} -rendering_error=Go diregile phošo ge go be go gafelwa letlakala. - -# Predefined zoom values -page_scale_width=Bophara bja letlakala -page_scale_fit=Go lekana ga letlakala -page_scale_auto=Kgodišo ya maitirišo -page_scale_actual=Bogolo bja kgonthe -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Phošo -loading_error=Go diregile phošo ge go hlahlelwa PDF. -invalid_file_error=Faele ye e sa šomego goba e senyegilego ya PDF. -missing_file_error=Faele yeo e sego gona ya PDF. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Tlhaloso] -password_ok=LOKILE - -printing_not_supported=Temošo: Go gatiša ga go thekgwe ke praosara ye ka botlalo. -printing_not_ready=Temošo: PDF ga ya hlahlelwa ka botlalo bakeng sa go gatišwa. -web_fonts_disabled=Difonte tša wepe di šitišitšwe: ga e kgone go diriša difonte tša PDF tše khutišitšwego. diff --git a/addons/web/static/lib/pdfjs/web/locale/oc/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/oc/viewer.properties index 2c520c255c9..c3356a4c444 100644 --- a/addons/web/static/lib/pdfjs/web/locale/oc/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/oc/viewer.properties @@ -26,7 +26,7 @@ of_pages=sus {{pagesCount}} # LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" # will be replaced by a number representing the currently visible page, # respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} sus {{pagesCount}}) +page_of_pages=({{pageNumber}} de {{pagesCount}}) zoom_out.title=Zoom arrièr zoom_out_label=Zoom arrièr @@ -48,16 +48,12 @@ bookmark_label=Afichatge actual tools.title=Aisinas tools_label=Aisinas first_page.title=Anar a la primièra pagina -first_page.label=Anar a la primièra pagina first_page_label=Anar a la primièra pagina last_page.title=Anar a la darrièra pagina -last_page.label=Anar a la darrièra pagina last_page_label=Anar a la darrièra pagina page_rotate_cw.title=Rotacion orària -page_rotate_cw.label=Rotacion orària page_rotate_cw_label=Rotacion orària page_rotate_ccw.title=Rotacion antiorària -page_rotate_ccw.label=Rotacion antiorària page_rotate_ccw_label=Rotacion antiorària cursor_text_select_tool.title=Activar l'aisina de seleccion de tèxte @@ -65,11 +61,21 @@ cursor_text_select_tool_label=Aisina de seleccion de tèxte cursor_hand_tool.title=Activar l’aisina man cursor_hand_tool_label=Aisina man +scroll_page.title=Activar lo desfilament per pagina +scroll_page_label=Desfilament per pagina scroll_vertical.title=Utilizar lo desfilament vertical scroll_vertical_label=Desfilament vertical scroll_horizontal.title=Utilizar lo desfilament orizontal scroll_horizontal_label=Desfilament orizontal +scroll_wrapped.title=Activar lo desfilament continú +scroll_wrapped_label=Desfilament continú +spread_none.title=Agropar pas las paginas doas a doas +spread_none_label=Una sola pagina +spread_odd.title=Mostrar doas paginas en començant per las paginas imparas a esquèrra +spread_odd_label=Dobla pagina, impara a drecha +spread_even.title=Mostrar doas paginas en començant per las paginas paras a esquèrra +spread_even_label=Dobla pagina, para a drecha # Document properties dialog box document_properties.title=Proprietats del document… @@ -78,10 +84,10 @@ document_properties_file_name=Nom del fichièr : document_properties_file_size=Talha del fichièr : # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} Ko ({{size_b}} octets) +document_properties_kb={{size_kb}} Ko ({{size_b}} octets) # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" # will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} Mo ({{size_b}} octets) +document_properties_mb={{size_mb}} Mo ({{size_b}} octets) document_properties_title=Títol : document_properties_author=Autor : document_properties_subject=Subjècte : @@ -90,14 +96,15 @@ document_properties_creation_date=Data de creacion : document_properties_modification_date=Data de modificacion : # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} +document_properties_date_string={{date}}, a {{time}} document_properties_creator=Creator : document_properties_producer=Aisina de conversion PDF : document_properties_version=Version PDF : document_properties_page_count=Nombre de paginas : document_properties_page_size=Talha de la pagina : +document_properties_page_size_unit_inches=in document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=retrait +document_properties_page_size_orientation_portrait=retrach document_properties_page_size_orientation_landscape=païsatge document_properties_page_size_name_a3=A3 document_properties_page_size_name_a4=A4 @@ -113,6 +120,7 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) # LOCALIZATION NOTE (document_properties_linearized): The linearization status of # the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web rapida : document_properties_linearized_yes=Òc document_properties_linearized_no=Non document_properties_close=Tampar @@ -127,17 +135,24 @@ print_progress_close=Anullar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Afichar/amagar lo panèl lateral -toggle_sidebar_notification.title=Afichar/amagar lo panèl lateral (lo document conten esquèmas/pèças juntas) +toggle_sidebar_notification2.title=Afichar/amagar lo panèl lateral (lo document conten esquèmas/pèças juntas/calques) toggle_sidebar_label=Afichar/amagar lo panèl lateral document_outline.title=Mostrar los esquèmas del document (dobleclicar per espandre/reduire totes los elements) document_outline_label=Marcapaginas del document attachments.title=Visualizar las pèças juntas attachments_label=Pèças juntas +layers.title=Afichar los calques (doble-clicar per reïnicializar totes los calques a l’estat per defaut) +layers_label=Calques thumbs.title=Afichar las vinhetas thumbs_label=Vinhetas -findbar.title=Trobar dins lo document +current_outline_item.title=Trobar l’element de plan actual +current_outline_item_label=Element de plan actual +findbar.title=Cercar dins lo document findbar_label=Recercar +additional_layers=Calques suplementaris +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pagina {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -155,8 +170,31 @@ find_next.title=Tròba l'ocurréncia venenta de la frasa find_next_label=Seguent find_highlight=Suslinhar tot find_match_case_label=Respectar la cassa +find_match_diacritics_label=Respectar los diacritics +find_entire_word_label=Mots entièrs find_reached_top=Naut de la pagina atenh, perseguida del bas find_reached_bottom=Bas de la pagina atench, perseguida al començament +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=Ocuréncia {{current}} sus {{total}} +find_match_count[two]=Ocuréncia {{current}} sus {{total}} +find_match_count[few]=Ocuréncia {{current}} sus {{total}} +find_match_count[many]=Ocuréncia {{current}} sus {{total}} +find_match_count[other]=Ocuréncia {{current}} sus {{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mai de {{limit}} ocuréncias +find_match_count_limit[one]=Mai de {{limit}} ocuréncia +find_match_count_limit[two]=Mai de {{limit}} ocuréncias +find_match_count_limit[few]=Mai de {{limit}} ocuréncias +find_match_count_limit[many]=Mai de {{limit}} ocuréncias +find_match_count_limit[other]=Mai de {{limit}} ocuréncias find_not_found=Frasa pas trobada # Error panel labels @@ -176,7 +214,7 @@ error_stack=Pila : {{stack}} error_file=Fichièr : {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Linha : {{line}} -rendering_error=Una error s'es produita pendent l'afichatge de la pagina. +rendering_error=Una error s'es producha pendent l'afichatge de la pagina. # Predefined zoom values page_scale_width=Largor plena @@ -188,12 +226,16 @@ page_scale_actual=Talha vertadièra page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error -loading_error=Una error s'es produita pendent lo cargament del fichièr PDF. +loading=Cargament… +loading_error=Una error s'es producha pendent lo cargament del fichièr PDF. invalid_file_error=Fichièr PDF invalid o corromput. missing_file_error=Fichièr PDF mancant. unexpected_response_error=Responsa de servidor imprevista. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}} a {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -206,5 +248,30 @@ password_cancel=Anullar printing_not_supported=Atencion : l'impression es pas completament gerida per aqueste navegador. printing_not_ready=Atencion : lo PDF es pas entièrament cargat per lo poder imprimir. -web_fonts_disabled=Las poliças web son desactivadas : impossible d'utilizar las poliças integradas al PDF. -document_colors_not_allowed=Los documents PDF pòdon pas utilizar lors pròprias colors : « Autorizar las paginas web d'utilizar lors pròprias colors » es desactivat dins lo navegador. +web_fonts_disabled=Las polissas web son desactivadas : impossible d'utilizar las polissas integradas al PDF. + +# Editor +editor_none.title=Desactivar l’edicion d’anotacions +editor_none_label=Desactivar l’edicion +editor_free_text.title=Apondre de tèxte +editor_free_text_label=Tèxte +editor_ink.title=Dessenhar +editor_ink_label=Dessenh + +freetext_default_content=Picatz de tèxte… + +free_text_default_content=Picatz de tèxt… + +# Editor Parameters +editor_free_text_font_color=Color de polissa +editor_free_text_font_size=Talha de polissa +editor_ink_line_color=Color de linha +editor_ink_line_thickness=Espessor de la linha + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Talha +editor_ink_color=Color +editor_ink_opacity=Opacitat + +# Editor aria diff --git a/addons/web/static/lib/pdfjs/web/locale/or/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/or/viewer.properties deleted file mode 100644 index 831eaceeed1..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/or/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=ପୂର୍ବ ପୃଷ୍ଠା -previous_label=ପୂର୍ବ -next.title=ପର ପୃଷ୍ଠା -next_label=ପର - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom_out.title=ଛୋଟ କରନ୍ତୁ -zoom_out_label=ଛୋଟ କରନ୍ତୁ -zoom_in.title=ବଡ଼ କରନ୍ତୁ -zoom_in_label=ବଡ଼ କରନ୍ତୁ -zoom.title=ଛୋଟ ବଡ଼ କରନ୍ତୁ -presentation_mode.title=ଉପସ୍ଥାପନ ଧାରାକୁ ବଦଳାନ୍ତୁ -presentation_mode_label=ଉପସ୍ଥାପନ ଧାରା -open_file.title=ଫାଇଲ ଖୋଲନ୍ତୁ -open_file_label=ଖୋଲନ୍ତୁ -print.title=ମୁଦ୍ରଣ -print_label=ମୁଦ୍ରଣ -download.title=ଆହରଣ -download_label=ଆହରଣ -bookmark.title=ପ୍ରଚଳିତ ଦୃଶ୍ୟ (ନକଲ କରନ୍ତୁ କିମ୍ବା ଏକ ନୂତନ ୱିଣ୍ଡୋରେ ଖୋଲନ୍ତୁ) -bookmark_label=ପ୍ରଚଳିତ ଦୃଶ୍ୟ - -# Secondary toolbar and context menu -tools.title=ସାଧନଗୁଡ଼ିକ -tools_label=ସାଧନଗୁଡ଼ିକ -first_page.title=ପ୍ରଥମ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ -first_page.label=ପ୍ରଥମ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ -first_page_label=ପ୍ରଥମ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ -last_page.title=ଶେଷ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ -last_page.label=ଶେଷ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ -last_page_label=ଶେଷ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ -page_rotate_cw.title=ଦକ୍ଷିଣାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ -page_rotate_cw.label=ଦକ୍ଷିଣାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ -page_rotate_cw_label=ଦକ୍ଷିଣାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ -page_rotate_ccw.title=ବାମାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ -page_rotate_ccw.label=ବାମାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ -page_rotate_ccw_label=ବାମାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ - - -# Document properties dialog box -document_properties.title=ଦଲିଲ ଗୁଣଧର୍ମ… -document_properties_label=ଦଲିଲ ଗୁଣଧର୍ମ… -document_properties_file_name=ଫାଇଲ ନାମ: -document_properties_file_size=ଫାଇଲ ଆକାର: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=ଶୀର୍ଷକ: -document_properties_author=ଲେଖକ: -document_properties_subject=ବିଷୟ: -document_properties_keywords=ସୂଚକ ଶବ୍ଦ: -document_properties_creation_date=ନିର୍ମାଣ ତାରିଖ: -document_properties_modification_date=ପରିବର୍ତ୍ତନ ତାରିଖ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=ନିର୍ମାତା: -document_properties_producer=PDF ପ୍ରଯୋଜକ: -document_properties_version=PDF ସଂସ୍କରଣ: -document_properties_page_count=ପୃଷ୍ଠା ଗଣନା: -document_properties_close=ବନ୍ଦ କରନ୍ତୁ - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=ପାର୍ଶ୍ୱପଟିକୁ ଆଗପଛ କରନ୍ତୁ -toggle_sidebar_label=ପାର୍ଶ୍ୱପଟିକୁ ଆଗପଛ କରନ୍ତୁ -document_outline_label=ଦଲିଲ ସାରାଂଶ -attachments.title=ସଂଲଗ୍ନକଗୁଡ଼ିକୁ ଦର୍ଶାନ୍ତୁ -attachments_label=ସଲଗ୍ନକଗୁଡିକ -thumbs.title=ସଂକ୍ଷିପ୍ତ ବିବରଣୀ ଦର୍ଶାନ୍ତୁ -thumbs_label=ସଂକ୍ଷିପ୍ତ ବିବରଣୀ -findbar.title=ଦଲିଲରେ ଖୋଜନ୍ତୁ - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=ପୃଷ୍ଠା {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=ପୃଷ୍ଠାର ସଂକ୍ଷିପ୍ତ ବିବରଣୀ {{page}} - -# Find panel button title and messages -find_previous.title=ଏହି ବାକ୍ୟାଂଶର ପୂର୍ବ ଉପସ୍ଥିତିକୁ ଖୋଜନ୍ତୁ -find_previous_label=ପୂର୍ବବର୍ତ୍ତୀ -find_next.title=ଏହି ବାକ୍ୟାଂଶର ପରବର୍ତ୍ତୀ ଉପସ୍ଥିତିକୁ ଖୋଜନ୍ତୁ -find_next_label=ପରବର୍ତ୍ତୀ\u0020 -find_highlight=ସମସ୍ତଙ୍କୁ ଆଲୋକିତ କରନ୍ତୁ -find_match_case_label=ଅକ୍ଷର ମେଳାନ୍ତୁ -find_reached_top=ତଳୁ ଉପରକୁ ଗତି କରି ଦଲିଲର ଉପର ଭାଗରେ ପହଞ୍ଚି ଯାଇଛି -find_reached_bottom=ଉପରୁ ତଳକୁ ଗତି କରି ଦଲିଲର ଶେଷ ଭାଗରେ ପହଞ୍ଚି ଯାଇଛି -find_not_found=ବାକ୍ୟାଂଶ ମିଳିଲା ନାହିଁ - -# Error panel labels -error_more_info=ଅଧିକ ସୂଚନା -error_less_info=ସ୍ୱଳ୍ପ ସୂଚନା -error_close=ବନ୍ଦ କରନ୍ତୁ -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=ସନ୍ଦେଶ: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=ଷ୍ଟାକ: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ଫାଇଲ: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=ଧାଡ଼ି: {{line}} -rendering_error=ପୃଷ୍ଠା ଚିତ୍ରଣ କରିବା ସମୟରେ ତ୍ରୁଟି ଘଟିଲା। - -# Predefined zoom values -page_scale_width=ପୃଷ୍ଠା ଓସାର -page_scale_fit=ପୃଷ୍ଠା ମେଳନ -page_scale_auto=ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଛୋଟବଡ଼ କରିବା -page_scale_actual=ପ୍ରକୃତ ଆକାର -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=ତ୍ରୁଟି -loading_error=PDF ଧାରଣ କରିବା ସମୟରେ ଏକ ତ୍ରୁଟି ଘଟିଲା। -invalid_file_error=ଅବୈଧ କିମ୍ବା ତ୍ରୁଟିଯୁକ୍ତ PDF ଫାଇଲ। -missing_file_error=ହଜିଯାଇଥିବା PDF ଫାଇଲ। -unexpected_response_error=ଅପ୍ରତ୍ୟାଶିତ ସର୍ଭର ଉତ୍ତର। - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=ଏହି PDF ଫାଇଲକୁ ଖୋଲିବା ପାଇଁ ପ୍ରବେଶ ସଂକେତ ଭରଣ କରନ୍ତୁ। -password_invalid=ଭୁଲ ପ୍ରବେଶ ସଂକେତ। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ। -password_ok=ଠିକ ଅଛି - -printing_not_supported=ଚେତାବନୀ: ଏହି ବ୍ରାଉଜର ଦ୍ୱାରା ମୁଦ୍ରଣ କ୍ରିୟା ସମ୍ପୂର୍ଣ୍ଣ ଭାବରେ ସହାୟତା ପ୍ରାପ୍ତ ନୁହଁ। -printing_not_ready=ଚେତାବନୀ: PDF ଟି ମୁଦ୍ରଣ ପାଇଁ ସମ୍ପୂର୍ଣ୍ଣ ଭାବରେ ଧାରଣ ହୋଇ ନାହିଁ। -web_fonts_disabled=ୱେବ ଅକ୍ଷରରୂପଗୁଡ଼ିକୁ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି: ସନ୍ନିହିତ PDF ଅକ୍ଷରରୂପଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିବାରେ ଅସମର୍ଥ। -document_colors_not_allowed=PDF ଦଲିଲଗୁଡ଼ିକ ସେମାନଙ୍କର ନିଜର ରଙ୍ଗ ବ୍ୟବହାର କରିବା ପାଇଁ ଅନୁମତି ପ୍ରାପ୍ତ ନୁହଁ: 'ସେମାନଙ୍କର ନିଜ ରଙ୍ଗ ବାଛିବା ପାଇଁ ପୃଷ୍ଠାଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ' କୁ ବ୍ରାଉଜରରେ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି। diff --git a/addons/web/static/lib/pdfjs/web/locale/pa-IN/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/pa-IN/viewer.properties index 8c624375c29..153bf5c4f51 100644 --- a/addons/web/static/lib/pdfjs/web/locale/pa-IN/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/pa-IN/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=ਮੌਜੂਦਾ ਝਲਕ tools.title=ਟੂਲ tools_label=ਟੂਲ first_page.title=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ -first_page.label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ first_page_label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ last_page.title=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ -last_page.label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ last_page_label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ page_rotate_cw.title=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ -page_rotate_cw.label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਉ page_rotate_cw_label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ page_rotate_ccw.title=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਓ -page_rotate_ccw.label=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਉ page_rotate_ccw_label=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਓ cursor_text_select_tool.title=ਲਿਖਤ ਚੋਣ ਟੂਲ ਸਮਰੱਥ ਕਰੋ @@ -65,6 +61,8 @@ cursor_text_select_tool_label=ਲਿਖਤ ਚੋਣ ਟੂਲ cursor_hand_tool.title=ਹੱਥ ਟੂਲ ਸਮਰੱਥ ਕਰੋ cursor_hand_tool_label=ਹੱਥ ਟੂਲ +scroll_page.title=ਸਫ਼ਾ ਖਿਸਕਾਉਣ ਨੂੰ ਵਰਤੋਂ +scroll_page_label=ਸਫ਼ਾ ਖਿਸਕਾਉਣਾ scroll_vertical.title=ਖੜ੍ਹਵੇਂ ਸਕਰਾਉਣ ਨੂੰ ਵਰਤੋਂ scroll_vertical_label=ਖੜ੍ਹਵਾਂ ਸਰਕਾਉਣਾ scroll_horizontal.title=ਲੇਟਵੇਂ ਸਰਕਾਉਣ ਨੂੰ ਵਰਤੋਂ @@ -72,6 +70,12 @@ scroll_horizontal_label=ਲੇਟਵਾਂ ਸਰਕਾਉਣਾ scroll_wrapped.title=ਸਮੇਟੇ ਸਰਕਾਉਣ ਨੂੰ ਵਰਤੋਂ scroll_wrapped_label=ਸਮੇਟਿਆ ਸਰਕਾਉਣਾ +spread_none.title=ਸਫ਼ਾ ਫੈਲਾਅ ਵਿੱਚ ਸ਼ਾਮਲ ਨਾ ਹੋਵੋ +spread_none_label=ਕੋਈ ਫੈਲਾਅ ਨਹੀਂ +spread_odd.title=ਟਾਂਕ ਅੰਕ ਵਾਲੇ ਸਫ਼ਿਆਂ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ ਸਫਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ +spread_odd_label=ਟਾਂਕ ਫੈਲਾਅ +spread_even.title=ਜਿਸਤ ਅੰਕ ਵਾਲੇ ਸਫ਼ਿਆਂ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ ਸਫਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ +spread_even_label=ਜਿਸਤ ਫੈਲਾਅ # Document properties dialog box document_properties.title=…ਦਸਤਾਵੇਜ਼ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ @@ -131,17 +135,24 @@ print_progress_close=ਰੱਦ ਕਰੋ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=ਬਾਹੀ ਬਦਲੋ -toggle_sidebar_notification.title=ਬਾਹੀ ਨੂੰ ਬਦਲੋ (ਦਸਤਾਵੇਜ਼ ਖਾਕਾ/ਅਟੈਚਮੈਂਟਾਂ ਰੱਖਦਾ ਹੈ) +toggle_sidebar_notification2.title=ਬਾਹੀ ਨੂੰ ਬਦਲੋ (ਦਸਤਾਵੇਜ਼ ਖਾਕਾ/ਅਟੈਚਮੈਂਟ/ਪਰਤਾਂ ਰੱਖਦਾ ਹੈ) toggle_sidebar_label=ਬਾਹੀ ਬਦਲੋ document_outline.title=ਦਸਤਾਵੇਜ਼ ਖਾਕਾ ਦਿਖਾਓ (ਸਾਰੀਆਂ ਆਈਟਮਾਂ ਨੂੰ ਫੈਲਾਉਣ/ਸਮੇਟਣ ਲਈ ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰੋ) document_outline_label=ਦਸਤਾਵੇਜ਼ ਖਾਕਾ attachments.title=ਅਟੈਚਮੈਂਟ ਵੇਖਾਓ attachments_label=ਅਟੈਚਮੈਂਟਾਂ +layers.title=ਪਰਤਾਂ ਵੇਖਾਓ (ਸਾਰੀਆਂ ਪਰਤਾਂ ਨੂੰ ਮੂਲ ਹਾਲਤ ਉੱਤੇ ਮੁੜ-ਸੈੱਟ ਕਰਨ ਲਈ ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰੋ) +layers_label=ਪਰਤਾਂ thumbs.title=ਥੰਮਨੇਲ ਨੂੰ ਵੇਖਾਓ thumbs_label=ਥੰਮਨੇਲ +current_outline_item.title=ਮੌੌਜੂਦਾ ਖਾਕਾ ਚੀਜ਼ ਲੱਭੋ +current_outline_item_label=ਮੌਜੂਦਾ ਖਾਕਾ ਚੀਜ਼ findbar.title=ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਲੱਭੋ findbar_label=ਲੱਭੋ +additional_layers=ਵਾਧੂ ਪਰਤਾਂ +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=ਸਫ਼ਾ {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -159,6 +170,7 @@ find_next.title=ਵਾਕ ਦੀ ਅਗਲੀ ਮੌਜੂਦਗੀ ਲੱਭੋ find_next_label=ਅੱਗੇ find_highlight=ਸਭ ਉਭਾਰੋ find_match_case_label=ਅੱਖਰ ਆਕਾਰ ਨੂੰ ਮਿਲਾਉ +find_match_diacritics_label=ਭੇਦਸੂਚਕ ਮੇਲ find_entire_word_label=ਪੂਰੇ ਸ਼ਬਦ find_reached_top=ਦਸਤਾਵੇਜ਼ ਦੇ ਉੱਤੇ ਆ ਗਏ ਹਾਂ, ਥੱਲੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ find_reached_bottom=ਦਸਤਾਵੇਜ਼ ਦੇ ਅੰਤ ਉੱਤੇ ਆ ਗਏ ਹਾਂ, ਉੱਤੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ @@ -214,12 +226,16 @@ page_scale_actual=ਆਟੋਮੈਟਿਕ ਆਕਾਰ page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=ਗਲਤੀ +loading=…ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ loading_error=PDF ਲੋਡ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ। invalid_file_error=ਗਲਤ ਜਾਂ ਨਿਕਾਰਾ PDF ਫਾਈਲ ਹੈ। missing_file_error=ਨਾ-ਮੌਜੂਦ PDF ਫਾਈਲ। unexpected_response_error=ਅਣਜਾਣ ਸਰਵਰ ਜਵਾਬ। +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -233,4 +249,33 @@ password_cancel=ਰੱਦ ਕਰੋ printing_not_supported=ਸਾਵਧਾਨ: ਇਹ ਬਰਾਊਜ਼ਰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਹਾਇਕ ਨਹੀਂ ਹੈ। printing_not_ready=ਸਾਵਧਾਨ: PDF ਨੂੰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਲੋਡ ਨਹੀਂ ਹੈ। web_fonts_disabled=ਵੈਬ ਫੋਂਟ ਬੰਦ ਹਨ: ਇੰਬੈਡ PDF ਫੋਂਟ ਨੂੰ ਵਰਤਣ ਲਈ ਅਸਮਰੱਥ ਹੈ। -document_colors_not_allowed=PDF ਦਸਤਾਵੇਜ਼ਾਂ ਨੂੰ ਆਪਣੇ ਰੰਗ ਵਰਤਣ ਦੀ ਇਜ਼ਾਜ਼ਤ ਨਹੀਂ ਹੈ।: ਬਰਾਊਜ਼ਰ ਵਿੱਚ “ਸਫ਼ਿਆਂ ਨੂੰ ਆਪਣੇ ਰੰਗ ਚੁਣਨ ਦੀ ਇਜ਼ਾਜ਼ਤ ਦਿਓ” ਨਾ-ਸਰਗਰਮ ਹੈ। + +# Editor +editor_none.title=ਟਿੱਪਣੀ ਸੋਧਣਾ ਅਸਮਰੱਥ +editor_none_label=ਸੋਧਣਾ ਅਸਮਰੱਥ +editor_free_text.title=FreeText ਟਿੱਪਣੀ ਜੋੜੋ +editor_free_text_label=FreeText ਟਿੱਪਣੀ +editor_ink.title=ਸਿਆਹੀ ਟਿੱਪਣੀ ਜੋੜੋ +editor_ink_label=ਸਿਆਹੀ ਟਿੱਪਣੀ + +freetext_default_content=…ਕੁਝ ਲਿਖੋ + +free_text_default_content=…ਲਿਖੋ + +# Editor Parameters +editor_free_text_font_color=ਫੌਂਟ ਦਾ ਰੰਗ +editor_free_text_font_size=ਫ਼ੋਂਟ ਦਾ ਆਕਾਰ +editor_ink_line_color=ਲਾਈਨ ਦਾ ਰੰਗ +editor_ink_line_thickness=ਲਾਈਨ ਦੀ ਮੋਟਾਈ + +# Editor Parameters +editor_free_text_color=ਰੰਗ +editor_free_text_size=ਆਕਾਰ +editor_ink_color=ਰੰਗ +editor_ink_thickness=ਮੋਟਾਈ +editor_ink_opacity=ਧੁੰਦਲਾਪਨ + +# Editor aria +editor_free_text_aria_label=FreeText ਸੰਪਾਦਕ +editor_ink_aria_label=ਸਿਆਹੀ ਸੰਪਾਦਕ +editor_ink_canvas_aria_label=ਵਰਤੋਂਕਾਰ ਵਲੋਂ ਬਣਾਇਆ ਚਿੱਤਰ diff --git a/addons/web/static/lib/pdfjs/web/locale/pl/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/pl/viewer.properties index 64a6504f430..9df1996d739 100644 --- a/addons/web/static/lib/pdfjs/web/locale/pl/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/pl/viewer.properties @@ -28,18 +28,18 @@ of_pages=z {{pagesCount}} # respectively a number representing the total number of pages in the document. page_of_pages=({{pageNumber}} z {{pagesCount}}) -zoom_out.title=Pomniejszenie +zoom_out.title=Pomniejsz zoom_out_label=Pomniejsz -zoom_in.title=Powiększenie +zoom_in.title=Powiększ zoom_in_label=Powiększ zoom.title=Skala presentation_mode.title=Przełącz na tryb prezentacji presentation_mode_label=Tryb prezentacji -open_file.title=Otwieranie pliku +open_file.title=Otwórz plik open_file_label=Otwórz -print.title=Drukowanie +print.title=Drukuj print_label=Drukuj -download.title=Pobieranie +download.title=Pobierz download_label=Pobierz bookmark.title=Bieżąca pozycja (skopiuj lub otwórz jako odnośnik w nowym oknie) bookmark_label=Bieżąca pozycja @@ -47,27 +47,25 @@ bookmark_label=Bieżąca pozycja # Secondary toolbar and context menu tools.title=Narzędzia tools_label=Narzędzia -first_page.title=Przechodzenie do pierwszej strony -first_page.label=Przejdź do pierwszej strony +first_page.title=Przejdź do pierwszej strony first_page_label=Przejdź do pierwszej strony -last_page.title=Przechodzenie do ostatniej strony -last_page.label=Przejdź do ostatniej strony +last_page.title=Przejdź do ostatniej strony last_page_label=Przejdź do ostatniej strony -page_rotate_cw.title=Obracanie zgodnie z ruchem wskazówek zegara -page_rotate_cw.label=Obróć zgodnie z ruchem wskazówek zegara +page_rotate_cw.title=Obróć zgodnie z ruchem wskazówek zegara page_rotate_cw_label=Obróć zgodnie z ruchem wskazówek zegara -page_rotate_ccw.title=Obracanie przeciwnie do ruchu wskazówek zegara -page_rotate_ccw.label=Obróć przeciwnie do ruchu wskazówek zegara +page_rotate_ccw.title=Obróć przeciwnie do ruchu wskazówek zegara page_rotate_ccw_label=Obróć przeciwnie do ruchu wskazówek zegara -cursor_text_select_tool.title=Włącza narzędzie zaznaczania tekstu +cursor_text_select_tool.title=Włącz narzędzie zaznaczania tekstu cursor_text_select_tool_label=Narzędzie zaznaczania tekstu -cursor_hand_tool.title=Włącza narzędzie rączka +cursor_hand_tool.title=Włącz narzędzie rączka cursor_hand_tool_label=Narzędzie rączka -scroll_vertical.title=Przewijaj dokument w pionie +scroll_page.title=Przewijaj strony +scroll_page_label=Przewijanie stron +scroll_vertical.title=Przewijaj dokument w pionie scroll_vertical_label=Przewijanie pionowe -scroll_horizontal.title=Przewijaj dokument w poziomie +scroll_horizontal.title=Przewijaj dokument w poziomie scroll_horizontal_label=Przewijanie poziome scroll_wrapped.title=Strony dokumentu wyświetlaj i przewijaj w kolumnach scroll_wrapped_label=Widok dwóch stron @@ -136,28 +134,35 @@ print_progress_close=Anuluj # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) -toggle_sidebar.title=Przełączanie panelu bocznego -toggle_sidebar_notification.title=Przełączanie panelu bocznego (dokument zawiera konspekt/załączniki) +toggle_sidebar.title=Przełącz panel boczny +toggle_sidebar_notification2.title=Przełącz panel boczny (dokument zawiera konspekt/załączniki/warstwy) toggle_sidebar_label=Przełącz panel boczny -document_outline.title=Wyświetlanie zarysu dokumentu (podwójne kliknięcie rozwija lub zwija wszystkie pozycje) -document_outline_label=Zarys dokumentu -attachments.title=Wyświetlanie załączników +document_outline.title=Konspekt dokumentu (podwójne kliknięcie rozwija lub zwija wszystkie pozycje) +document_outline_label=Konspekt dokumentu +attachments.title=Załączniki attachments_label=Załączniki -thumbs.title=Wyświetlanie miniaturek -thumbs_label=Miniaturki +layers.title=Warstwy (podwójne kliknięcie przywraca wszystkie warstwy do stanu domyślnego) +layers_label=Warstwy +thumbs.title=Miniatury +thumbs_label=Miniatury +current_outline_item.title=Znajdź bieżący element konspektu +current_outline_item_label=Bieżący element konspektu findbar.title=Znajdź w dokumencie findbar_label=Znajdź +additional_layers=Dodatkowe warstwy +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}}. strona # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. -thumb_page_title=Strona {{page}} +thumb_page_title={{page}}. strona # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. -thumb_page_canvas=Miniaturka strony {{page}} +thumb_page_canvas=Miniatura {{page}}. strony # Find panel button title and messages -find_input.title=Wyszukiwanie +find_input.title=Znajdź find_input.placeholder=Znajdź w dokumencie… find_previous.title=Znajdź poprzednie wystąpienie tekstu find_previous_label=Poprzednie @@ -165,6 +170,7 @@ find_next.title=Znajdź następne wystąpienie tekstu find_next_label=Następne find_highlight=Wyróżnianie wszystkich find_match_case_label=Rozróżnianie wielkości liter +find_match_diacritics_label=Rozróżnianie liter diakrytyzowanych find_entire_word_label=Całe słowa find_reached_top=Początek dokumentu. Wyszukiwanie od końca. find_reached_bottom=Koniec dokumentu. Wyszukiwanie od początku. @@ -200,7 +206,7 @@ error_close=Zamknij error_version_info=PDF.js v{{version}} (kompilacja: {{build}}) # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an # english string describing the error. -error_message=Wiadomość: {{message}} +error_message=Komunikat: {{message}} # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack # trace. error_stack=Stos: {{stack}} @@ -214,13 +220,13 @@ rendering_error=Podczas renderowania strony wystąpił błąd. page_scale_width=Szerokość strony page_scale_fit=Dopasowanie strony page_scale_auto=Skala automatyczna -page_scale_actual=Rozmiar rzeczywisty +page_scale_actual=Rozmiar oryginalny # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Błąd +loading=Wczytywanie… loading_error=Podczas wczytywania dokumentu PDF wystąpił błąd. invalid_file_error=Nieprawidłowy lub uszkodzony plik PDF. missing_file_error=Brak pliku PDF. @@ -234,13 +240,42 @@ annotation_date_string={{date}}, {{time}} # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Adnotacja: {{type}}] +text_annotation_type.alt=[Przypis: {{type}}] password_label=Wprowadź hasło, aby otworzyć ten dokument PDF. password_invalid=Nieprawidłowe hasło. Proszę spróbować ponownie. password_ok=OK password_cancel=Anuluj -printing_not_supported=Ostrzeżenie: drukowanie nie jest w pełni obsługiwane przez przeglądarkę. +printing_not_supported=Ostrzeżenie: drukowanie nie jest w pełni obsługiwane przez tę przeglądarkę. printing_not_ready=Ostrzeżenie: dokument PDF nie jest całkowicie wczytany, więc nie można go wydrukować. web_fonts_disabled=Czcionki sieciowe są wyłączone: nie można użyć osadzonych czcionek PDF. -document_colors_not_allowed=Dokumenty PDF nie mogą używać własnych kolorów: opcja „Pozwalaj stronom stosować inne kolory” w przeglądarce jest nieaktywna. + +# Editor +editor_none.title=Wyłącz edycję przypisów +editor_none_label=Wyłącz edycję +editor_free_text.title=Dodaj przypis tekstowy +editor_free_text_label=Przypis tekstowy +editor_ink.title=Dodaj zakreślenie +editor_ink_label=Zakreślenie + +freetext_default_content=Wpisz tekst… + +free_text_default_content=Wpisz tekst… + +# Editor Parameters +editor_free_text_font_color=Kolor czcionki +editor_free_text_font_size=Rozmiar czcionki +editor_ink_line_color=Kolor zakreślenia +editor_ink_line_thickness=Grubość zakreślenia + +# Editor Parameters +editor_free_text_color=Kolor +editor_free_text_size=Rozmiar +editor_ink_color=Kolor +editor_ink_thickness=Grubość +editor_ink_opacity=Nieprzezroczystość + +# Editor aria +editor_free_text_aria_label=Edytor tekstu +editor_ink_aria_label=Edytor zakreślenia +editor_ink_canvas_aria_label=Obraz utworzony przez użytkownika diff --git a/addons/web/static/lib/pdfjs/web/locale/pt-BR/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/pt-BR/viewer.properties index d62dd5f96e5..7b4727beb36 100644 --- a/addons/web/static/lib/pdfjs/web/locale/pt-BR/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/pt-BR/viewer.properties @@ -33,50 +33,48 @@ zoom_out_label=Reduzir zoom_in.title=Ampliar zoom_in_label=Ampliar zoom.title=Zoom -presentation_mode.title=Alternar para o modo de apresentação +presentation_mode.title=Mudar para o modo de apresentação presentation_mode_label=Modo de apresentação open_file.title=Abrir arquivo open_file_label=Abrir print.title=Imprimir print_label=Imprimir -download.title=Download -download_label=Download -bookmark.title=Visualização atual (copiar ou abrir em uma nova janela) +download.title=Baixar +download_label=Baixar +bookmark.title=Visão atual (copiar ou abrir em nova janela) bookmark_label=Visualização atual # Secondary toolbar and context menu tools.title=Ferramentas tools_label=Ferramentas first_page.title=Ir para a primeira página -first_page.label=Ir para a primeira página first_page_label=Ir para a primeira página last_page.title=Ir para a última página -last_page.label=Ir para a última página last_page_label=Ir para a última página page_rotate_cw.title=Girar no sentido horário -page_rotate_cw.label=Girar no sentido horário page_rotate_cw_label=Girar no sentido horário page_rotate_ccw.title=Girar no sentido anti-horário -page_rotate_ccw.label=Girar no sentido anti-horário page_rotate_ccw_label=Girar no sentido anti-horário cursor_text_select_tool.title=Ativar a ferramenta de seleção de texto cursor_text_select_tool_label=Ferramenta de seleção de texto -cursor_hand_tool.title=Ativar ferramenta de mão -cursor_hand_tool_label=Ferramenta de mão +cursor_hand_tool.title=Ativar ferramenta de deslocamento +cursor_hand_tool_label=Ferramenta de deslocamento -scroll_vertical.title=Usar rolagem vertical -scroll_vertical_label=Rolagem vertical -scroll_horizontal.title=Usar rolagem horizontal -scroll_horizontal_label=Rolagem horizontal -scroll_wrapped.title=Usar rolagem contida -scroll_wrapped_label=Rolagem contida +scroll_page.title=Usar rolagem de página +scroll_page_label=Rolagem de página +scroll_vertical.title=Usar deslocamento vertical +scroll_vertical_label=Deslocamento vertical +scroll_horizontal.title=Usar deslocamento horizontal +scroll_horizontal_label=Deslocamento horizontal +scroll_wrapped.title=Usar deslocamento contido +scroll_wrapped_label=Deslocamento contido -spread_none.title=Não associar à página estendidas +spread_none.title=Não reagrupar páginas spread_none_label=Não estender -spread_odd.title=Associar página estendida a partir de páginas com números ímpares +spread_odd.title=Agrupar páginas começando em páginas com números ímpares spread_odd_label=Estender ímpares -spread_even.title=Associar página estendida a partir de páginas com números pares +spread_even.title=Agrupar páginas começando em páginas com números pares spread_even_label=Estender pares # Document properties dialog box @@ -122,7 +120,7 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) # LOCALIZATION NOTE (document_properties_linearized): The linearization status of # the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Visualização rápida da Web: +document_properties_linearized=Exibição web rápida: document_properties_linearized_yes=Sim document_properties_linearized_no=Não document_properties_close=Fechar @@ -136,18 +134,25 @@ print_progress_close=Cancelar # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) -toggle_sidebar.title=Alternar painel -toggle_sidebar_notification.title=Alternar o painel (documento contém marcadores e anexos) -toggle_sidebar_label=Alternar painel -document_outline.title=Mostrar a estrutura do documento (duplo-clique para expandir/recolher todos os ítens) +toggle_sidebar.title=Exibir/ocultar painel lateral +toggle_sidebar_notification2.title=Exibir/ocultar painel (documento contém estrutura/anexos/camadas) +toggle_sidebar_label=Exibir/ocultar painel +document_outline.title=Mostrar a estrutura do documento (dê um duplo-clique para expandir/recolher todos os itens) document_outline_label=Estrutura do documento attachments.title=Mostrar anexos attachments_label=Anexos +layers.title=Exibir camadas (duplo-clique para redefinir todas as camadas ao estado predefinido) +layers_label=Camadas thumbs.title=Mostrar miniaturas thumbs_label=Miniaturas +current_outline_item.title=Encontrar item atual da estrutura +current_outline_item_label=Item atual da estrutura findbar.title=Procurar no documento findbar_label=Procurar +additional_layers=Camadas adicionais +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -163,8 +168,9 @@ find_previous.title=Procurar a ocorrência anterior da frase find_previous_label=Anterior find_next.title=Procurar a próxima ocorrência da frase find_next_label=Próxima -find_highlight=Realçar tudo +find_highlight=Destacar tudo find_match_case_label=Diferenciar maiúsculas/minúsculas +find_match_diacritics_label=Considerar acentuação find_entire_word_label=Palavras completas find_reached_top=Início do documento alcançado, continuando do fim find_reached_bottom=Fim do documento alcançado, continuando do início @@ -220,7 +226,7 @@ page_scale_actual=Tamanho real page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Erro +loading=Carregando… loading_error=Ocorreu um erro ao carregar o PDF. invalid_file_error=Arquivo PDF corrompido ou inválido. missing_file_error=Arquivo PDF ausente. @@ -243,4 +249,33 @@ password_cancel=Cancelar printing_not_supported=Aviso: a impressão não é totalmente suportada neste navegador. printing_not_ready=Aviso: o PDF não está totalmente carregado para impressão. web_fonts_disabled=As fontes web estão desativadas: não foi possível usar fontes incorporadas do PDF. -document_colors_not_allowed=Documentos PDF não estão autorizados a usar as próprias cores: a opção “Permitir que as páginas escolham suas próprias cores” está desativada no navegador. + +# Editor +editor_none.title=Desativar edição de anotações +editor_none_label=Desativar edição +editor_free_text.title=Adicionar anotação FreeText +editor_free_text_label=Anotação FreeText +editor_ink.title=Adicionar anotação à tinta +editor_ink_label=Anotação à tinta + +freetext_default_content=Digite algum texto… + +free_text_default_content=Digite o texto… + +# Editor Parameters +editor_free_text_font_color=Cor da fonte +editor_free_text_font_size=Tamanho da fonte +editor_ink_line_color=Cor da linha +editor_ink_line_thickness=Espessura da linha + +# Editor Parameters +editor_free_text_color=Cor +editor_free_text_size=Tamanho +editor_ink_color=Cor +editor_ink_thickness=Espessura +editor_ink_opacity=Opacidade + +# Editor aria +editor_free_text_aria_label=Editor FreeText +editor_ink_aria_label=Editor de tinta +editor_ink_canvas_aria_label=Imagem criada pelo usuário diff --git a/addons/web/static/lib/pdfjs/web/locale/pt-PT/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/pt-PT/viewer.properties index 6fec54d9b1b..9fcfdf394c8 100644 --- a/addons/web/static/lib/pdfjs/web/locale/pt-PT/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/pt-PT/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Visão atual tools.title=Ferramentas tools_label=Ferramentas first_page.title=Ir para a primeira página -first_page.label=Ir para a primeira página first_page_label=Ir para a primeira página last_page.title=Ir para a última página -last_page.label=Ir para a última página last_page_label=Ir para a última página page_rotate_cw.title=Rodar à direita -page_rotate_cw.label=Rodar à direita page_rotate_cw_label=Rodar à direita page_rotate_ccw.title=Rodar à esquerda -page_rotate_ccw.label=Rodar à esquerda page_rotate_ccw_label=Rodar à esquerda cursor_text_select_tool.title=Ativar ferramenta de seleção de texto @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Ferramenta de seleção de texto cursor_hand_tool.title=Ativar ferramenta de mão cursor_hand_tool_label=Ferramenta de mão +scroll_page.title=Utilizar deslocamento da página +scroll_page_label=Deslocamento da página scroll_vertical.title=Utilizar deslocação vertical scroll_vertical_label=Deslocação vertical scroll_horizontal.title=Utilizar deslocação horizontal @@ -72,11 +70,11 @@ scroll_horizontal_label=Deslocação horizontal scroll_wrapped.title=Utilizar deslocação encapsulada scroll_wrapped_label=Deslocação encapsulada -spread_none.title=Não juntar spreads de páginas +spread_none.title=Não juntar páginas dispersas spread_none_label=Sem spreads -spread_odd.title=Juntar spreads de páginas a partir de páginas com números ímpares +spread_odd.title=Juntar páginas dispersas a partir de páginas com números ímpares spread_odd_label=Spreads ímpares -spread_even.title=Juntar spreads de páginas a partir de páginas com números pares +spread_even.title=Juntar páginas dispersas a partir de páginas com números pares spread_even_label=Spreads pares # Document properties dialog box @@ -137,17 +135,24 @@ print_progress_close=Cancelar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Alternar barra lateral -toggle_sidebar_notification.title=Alternar barra lateral (documento contém contorno/anexos) +toggle_sidebar_notification2.title=Alternar barra lateral (o documento contém contornos/anexos/camadas) toggle_sidebar_label=Alternar barra lateral document_outline.title=Mostrar esquema do documento (duplo clique para expandir/colapsar todos os itens) document_outline_label=Esquema do documento attachments.title=Mostrar anexos attachments_label=Anexos +layers.title=Mostrar camadas (clique duas vezes para repor todas as camadas para o estado predefinido) +layers_label=Camadas thumbs.title=Mostrar miniaturas thumbs_label=Miniaturas +current_outline_item.title=Encontrar o item atualmente destacado +current_outline_item_label=Item atualmente destacado findbar.title=Localizar em documento findbar_label=Localizar +additional_layers=Camadas adicionais +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Localizar ocorrência seguinte da frase find_next_label=Seguinte find_highlight=Destacar tudo find_match_case_label=Correspondência +find_match_diacritics_label=Corresponder diacríticos find_entire_word_label=Palavras completas find_reached_top=Topo do documento atingido, a continuar a partir do fundo find_reached_bottom=Fim do documento atingido, a continuar a partir do topo @@ -220,7 +226,7 @@ page_scale_actual=Tamanho real page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Erro +loading=A carregar… loading_error=Ocorreu um erro ao carregar o PDF. invalid_file_error=Ficheiro PDF inválido ou danificado. missing_file_error=Ficheiro PDF inexistente. @@ -242,5 +248,34 @@ password_cancel=Cancelar printing_not_supported=Aviso: a impressão não é totalmente suportada por este navegador. printing_not_ready=Aviso: o PDF ainda não está totalmente carregado. -web_fonts_disabled=Os tipos de letra web estão desativados: não é possível utilizar os tipos de letra PDF incorporados. -document_colors_not_allowed=Os documentos PDF não permitem a utilização das suas próprias cores: “Permitir às páginas escolher as suas próprias cores” está desativado no navegador. +web_fonts_disabled=Os tipos de letra web estão desativados: não é possível utilizar os tipos de letra PDF embutidos. + +# Editor +editor_none.title=Desativar Edição de Anotações +editor_none_label=Desativar Edição +editor_free_text.title=Adicionar Anotação FreeText +editor_free_text_label=Anotação FreeText +editor_ink.title=Adicionar Anotação a Tinta +editor_ink_label=Anotação a Tinta + +freetext_default_content=Introduza algum texto… + +free_text_default_content=Introduza o texto… + +# Editor Parameters +editor_free_text_font_color=Cor da Fonte +editor_free_text_font_size=Tamanho da Fonte +editor_ink_line_color=Cor da Linha +editor_ink_line_thickness=Espessura da Linha + +# Editor Parameters +editor_free_text_color=Cor +editor_free_text_size=Tamanho +editor_ink_color=Cor +editor_ink_thickness=Espessura +editor_ink_opacity=Opacidade + +# Editor aria +editor_free_text_aria_label=Editor de texto livre +editor_ink_aria_label=Editor de tinta +editor_ink_canvas_aria_label=Imagem criada pelo utilizador diff --git a/addons/web/static/lib/pdfjs/web/locale/rm/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/rm/viewer.properties index 4ab7b7ce0c3..5f1954a2847 100644 --- a/addons/web/static/lib/pdfjs/web/locale/rm/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/rm/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Vista actuala tools.title=Utensils tools_label=Utensils first_page.title=Siglir a l'emprima pagina -first_page.label=Siglir a l'emprima pagina first_page_label=Siglir a l'emprima pagina last_page.title=Siglir a la davosa pagina -last_page.label=Siglir a la davosa pagina last_page_label=Siglir a la davosa pagina page_rotate_cw.title=Rotar en direcziun da l'ura -page_rotate_cw.label=Rotar en direcziun da l'ura page_rotate_cw_label=Rotar en direcziun da l'ura page_rotate_ccw.title=Rotar en direcziun cuntraria a l'ura -page_rotate_ccw.label=Rotar en direcziun cuntraria a l'ura page_rotate_ccw_label=Rotar en direcziun cuntraria a l'ura cursor_text_select_tool.title=Activar l'utensil per selecziunar text @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Utensil per selecziunar text cursor_hand_tool.title=Activar l'utensil da maun cursor_hand_tool_label=Utensil da maun +scroll_page.title=Utilisar la defilada per pagina +scroll_page_label=Defilada per pagina scroll_vertical.title=Utilisar il defilar vertical scroll_vertical_label=Defilar vertical scroll_horizontal.title=Utilisar il defilar orizontal @@ -137,17 +135,24 @@ print_progress_close=Interrumper # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Activar/deactivar la trav laterala -toggle_sidebar_notification.title=Activar/deactivar la trav laterala (structura dal document/agiuntas) +toggle_sidebar_notification2.title=Activar/deactivar la trav laterala (il document cuntegna structura dal document/agiuntas/nivels) toggle_sidebar_label=Activar/deactivar la trav laterala document_outline.title=Mussar la structura dal document (cliccar duas giadas per extender/cumprimer tut ils elements) document_outline_label=Structura dal document attachments.title=Mussar agiuntas attachments_label=Agiuntas +layers.title=Mussar ils nivels (cliccar dubel per restaurar il stadi da standard da tut ils nivels) +layers_label=Nivels thumbs.title=Mussar las miniaturas thumbs_label=Miniaturas +current_outline_item.title=Tschertgar l'element da structura actual +current_outline_item_label=Element da structura actual findbar.title=Tschertgar en il document findbar_label=Tschertgar +additional_layers=Nivels supplementars +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pagina {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Tschertgar la proxima posiziun da l'expressiun find_next_label=Enavant find_highlight=Relevar tuts find_match_case_label=Resguardar maiusclas/minusclas +find_match_diacritics_label=Resguardar ils segns diacritics find_entire_word_label=Pleds entirs find_reached_top=Il cumenzament dal document è cuntanschì, la tschertga cuntinuescha a la fin dal document find_reached_bottom=La fin dal document è cuntanschì, la tschertga cuntinuescha al cumenzament dal document @@ -220,12 +226,16 @@ page_scale_actual=Grondezza actuala page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Errur +loading=Chargiar… loading_error=Ina errur è cumparida cun chargiar il PDF. invalid_file_error=Datoteca PDF nunvalida u donnegiada. missing_file_error=Datoteca PDF manconta. unexpected_response_error=Resposta nunspetgada dal server. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -239,4 +249,13 @@ password_cancel=Interrumper printing_not_supported=Attenziun: Il stampar na funcziunescha anc betg dal tut en quest navigatur. printing_not_ready=Attenziun: Il PDF n'è betg chargià cumplettamain per stampar. web_fonts_disabled=Scrittiras dal web èn deactivadas: impussibel dad utilisar las scrittiras integradas en il PDF. -document_colors_not_allowed=Documents da PDF na dastgan betg duvrar las atgnas colurs: 'Permetter a paginas da tscherner lur atgna colur' è deactivà en il navigatur. + +# Editor +editor_none.title=Deactivar la modificaziun dad annotaziuns +editor_none_label=Deactivar la modificaziun +editor_free_text.title=Agiuntar ina annotaziun da text liber +editor_free_text_label=Annotaziun da text liber +editor_ink.title=Agiuntar ina annotaziun stilograf +editor_ink_label=Annotaziun stilograf + +freetext_default_content=Endatar text… diff --git a/addons/web/static/lib/pdfjs/web/locale/ro/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ro/viewer.properties index f3a6b83cf51..7c4ed2836f8 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ro/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ro/viewer.properties @@ -48,17 +48,13 @@ bookmark_label=Vizualizare actuală tools.title=Instrumente tools_label=Instrumente first_page.title=Mergi la prima pagină -first_page.label=Mergi la prima pagină first_page_label=Mergi la prima pagină last_page.title=Mergi la ultima pagină -last_page.label=Mergi la ultima pagină last_page_label=Mergi la ultima pagină -page_rotate_cw.title=Rotește în sensul acelor de ceasornic -page_rotate_cw.label=Rotește în sensul acelor de ceasornic -page_rotate_cw_label=Rotește în sensul acelor de ceasornic -page_rotate_ccw.title=Rotește în sens invers al acelor de ceasornic -page_rotate_ccw.label=Rotește în sens invers al acelor de ceasornic -page_rotate_ccw_label=Rotește în sens invers al acelor de ceasornic +page_rotate_cw.title=Rotește în sensul acelor de ceas +page_rotate_cw_label=Rotește în sensul acelor de ceas +page_rotate_ccw.title=Rotește în sens invers al acelor de ceas +page_rotate_ccw_label=Rotește în sens invers al acelor de ceas cursor_text_select_tool.title=Activează instrumentul de selecție a textului cursor_text_select_tool_label=Instrumentul de selecție a textului @@ -106,8 +102,8 @@ document_properties_page_count=Număr de pagini: document_properties_page_size=Mărimea paginii: document_properties_page_size_unit_inches=in document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=portret -document_properties_page_size_orientation_landscape=peisaj +document_properties_page_size_orientation_portrait=verticală +document_properties_page_size_orientation_landscape=orizontală document_properties_page_size_name_a3=A3 document_properties_page_size_name_a4=A4 document_properties_page_size_name_letter=Literă @@ -137,7 +133,6 @@ print_progress_close=Renunță # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Comută bara laterală -toggle_sidebar_notification.title=Comută bara laterală (documentul conține schițe/atașamente) toggle_sidebar_label=Comută bara laterală document_outline.title=Afișează schița documentului (dublu-clic pentru a extinde/restrânge toate elementele) document_outline_label=Schița documentului @@ -145,9 +140,10 @@ attachments.title=Afișează atașamentele attachments_label=Atașamente thumbs.title=Afișează miniaturi thumbs_label=Miniaturi -findbar.title=Găsește în document +findbar.title=Caută în document findbar_label=Caută +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -159,12 +155,12 @@ thumb_page_canvas=Miniatura paginii {{page}} # Find panel button title and messages find_input.title=Caută find_input.placeholder=Caută în document… -find_previous.title=Găsește instanța anterioară în frază -find_previous_label=Anterior -find_next.title=Găsește instanța următoare în frază -find_next_label=Următor +find_previous.title=Mergi la apariția anterioară a textului +find_previous_label=Înapoi +find_next.title=Mergi la apariția următoare a textului +find_next_label=Înainte find_highlight=Evidențiază toate aparițiile -find_match_case_label=Corelează literele mari și mici +find_match_case_label=Ține cont de majuscule și minuscule find_entire_word_label=Cuvinte întregi find_reached_top=Am ajuns la începutul documentului, continuă de la sfârșit find_reached_bottom=Am ajuns la sfârșitul documentului, continuă de la început @@ -211,7 +207,7 @@ error_line=Rând: {{line}} rendering_error=A intervenit o eroare la randarea paginii. # Predefined zoom values -page_scale_width=Lățimea paginii +page_scale_width=Lățime pagină page_scale_fit=Potrivire la pagină page_scale_auto=Zoom automat page_scale_actual=Mărime reală @@ -220,7 +216,6 @@ page_scale_actual=Mărime reală page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Eroare loading_error=A intervenit o eroare la încărcarea PDF-ului. invalid_file_error=Fișier PDF nevalid sau corupt. missing_file_error=Fișier PDF lipsă. @@ -237,10 +232,9 @@ annotation_date_string={{date}}, {{time}} text_annotation_type.alt=[Adnotare {{type}}] password_label=Introdu parola pentru a deschide acest fișier PDF. password_invalid=Parolă nevalidă. Te rugăm să încerci din nou. -password_ok=Ok +password_ok=OK password_cancel=Renunță printing_not_supported=Avertisment: Tipărirea nu este suportată în totalitate de acest browser. printing_not_ready=Avertisment: PDF-ul nu este încărcat complet pentru tipărire. web_fonts_disabled=Fonturile web sunt dezactivate: nu se pot folosi fonturile PDF încorporate. -document_colors_not_allowed=Documentele PDF nu sunt autorizate să folosească propriile culori: „Permite paginilor să aleagă propriile culori” este dezactivat în browser. diff --git a/addons/web/static/lib/pdfjs/web/locale/ru/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ru/viewer.properties index be8aa5b033d..70c898a5285 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ru/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ru/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Текущий вид tools.title=Инструменты tools_label=Инструменты first_page.title=Перейти на первую страницу -first_page.label=Перейти на первую страницу first_page_label=Перейти на первую страницу last_page.title=Перейти на последнюю страницу -last_page.label=Перейти на последнюю страницу last_page_label=Перейти на последнюю страницу page_rotate_cw.title=Повернуть по часовой стрелке -page_rotate_cw.label=Повернуть по часовой стрелке page_rotate_cw_label=Повернуть по часовой стрелке page_rotate_ccw.title=Повернуть против часовой стрелки -page_rotate_ccw.label=Повернуть против часовой стрелки page_rotate_ccw_label=Повернуть против часовой стрелки cursor_text_select_tool.title=Включить Инструмент «Выделение текста» @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Инструмент «Выделение текс cursor_hand_tool.title=Включить Инструмент «Рука» cursor_hand_tool_label=Инструмент «Рука» +scroll_page.title=Использовать прокрутку страниц +scroll_page_label=Прокрутка страниц scroll_vertical.title=Использовать вертикальную прокрутку scroll_vertical_label=Вертикальная прокрутка scroll_horizontal.title=Использовать горизонтальную прокрутку @@ -137,17 +135,24 @@ print_progress_close=Отмена # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Показать/скрыть боковую панель -toggle_sidebar_notification.title=Показать/скрыть боковую панель (документ имеет содержание/вложения) +toggle_sidebar_notification2.title=Показать/скрыть боковую панель (документ имеет содержание/вложения/слои) toggle_sidebar_label=Показать/скрыть боковую панель document_outline.title=Показать содержание документа (двойной щелчок, чтобы развернуть/свернуть все элементы) document_outline_label=Содержание документа attachments.title=Показать вложения attachments_label=Вложения +layers.title=Показать слои (дважды щёлкните, чтобы сбросить все слои к состоянию по умолчанию) +layers_label=Слои thumbs.title=Показать миниатюры thumbs_label=Миниатюры +current_outline_item.title=Найти текущий элемент структуры +current_outline_item_label=Текущий элемент структуры findbar.title=Найти в документе findbar_label=Найти +additional_layers=Дополнительные слои +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Страница {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Найти следующее вхождение фразы в find_next_label=Далее find_highlight=Подсветить все find_match_case_label=С учётом регистра +find_match_diacritics_label=С учётом диакритических знаков find_entire_word_label=Слова целиком find_reached_top=Достигнут верх документа, продолжено снизу find_reached_bottom=Достигнут конец документа, продолжено сверху @@ -220,7 +226,7 @@ page_scale_actual=Реальный размер page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Ошибка +loading=Загрузка… loading_error=При загрузке PDF произошла ошибка. invalid_file_error=Некорректный или повреждённый PDF-файл. missing_file_error=PDF-файл отсутствует. @@ -242,5 +248,34 @@ password_cancel=Отмена printing_not_supported=Предупреждение: В этом браузере не полностью поддерживается печать. printing_not_ready=Предупреждение: PDF не полностью загружен для печати. -web_fonts_disabled=Веб-шрифты отключены: невозможно использовать встроенные PDF-шрифты. -document_colors_not_allowed=PDF-документам не разрешено использовать свои цвета: в браузере отключён параметр «Разрешить веб-сайтам использовать свои цвета». +web_fonts_disabled=Веб-шрифты отключены: не удалось задействовать встроенные PDF-шрифты. + +# Editor +editor_none.title=Отключить редактирование аннотаций +editor_none_label=Отключить редактирование +editor_free_text.title=Добавить аннотацию FreeText +editor_free_text_label=Аннотация FreeText +editor_ink.title=Добавить рукописную аннотацию +editor_ink_label=Рукописная аннотация + +freetext_default_content=Введите текст… + +free_text_default_content=Введите текст… + +# Editor Parameters +editor_free_text_font_color=Цвет шрифта +editor_free_text_font_size=Размер шрифта +editor_ink_line_color=Цвет линии +editor_ink_line_thickness=Толщина линии + +# Editor Parameters +editor_free_text_color=Цвет +editor_free_text_size=Размер +editor_ink_color=Цвет +editor_ink_thickness=Толщина +editor_ink_opacity=Прозрачность + +# Editor aria +editor_free_text_aria_label=Редактор FreeText +editor_ink_aria_label=Редактор чернил +editor_ink_canvas_aria_label=Созданное пользователем изображение diff --git a/addons/web/static/lib/pdfjs/web/locale/rw/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/rw/viewer.properties deleted file mode 100644 index 68a893d300e..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/rw/viewer.properties +++ /dev/null @@ -1,81 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom.title=Ihindurangano -open_file.title=Gufungura Dosiye -open_file_label=Gufungura - -# Secondary toolbar and context menu - - -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Umutwe: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. - -# Find panel button title and messages -find_previous.title=Gushaka aho uyu murongo ugaruka mbere y'aha -find_next.title=Gushaka aho uyu murongo wongera kugaruka -find_not_found=Umurongo ntubonetse - -# Error panel labels -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number - -# Predefined zoom values -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Ikosa - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_invalid=Ijambo ry'ibanga ridahari. Wakongera ukagerageza -password_ok=YEGO - diff --git a/addons/web/static/lib/pdfjs/web/locale/sah/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/sah/viewer.properties deleted file mode 100644 index 1786c40dc61..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/sah/viewer.properties +++ /dev/null @@ -1,166 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Инники сирэй -previous_label=Иннинээҕи -next.title=Аныгыскы сирэй -next_label=Аныгыскы - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom_out.title=Куччат -zoom_out_label=Куччат -zoom_in.title=Улаатыннар -zoom_in_label=Улаатыннар -zoom.title=Улаатыннар -presentation_mode.title=Көрдөрөр эрэсиимҥэ -presentation_mode_label=Көрдөрөр эрэсиим -open_file.title=Билэни арый -open_file_label=Ас -print.title=Бэчээт -print_label=Бэчээт -download.title=Хачайдааһын -download_label=Хачайдааһын -bookmark.title=Билиҥҥи көстүүтэ (хатылаа эбэтэр саҥа түннүккэ арый) -bookmark_label=Билиҥҥи көстүүтэ - -# Secondary toolbar and context menu -tools.title=Тэриллэр -tools_label=Тэриллэр -first_page.title=Бастакы сирэйгэ көс -first_page.label=Бастакы сирэйгэ көс -first_page_label=Бастакы сирэйгэ көс -last_page.title=Тиһэх сирэйгэ көс -last_page.label=Тиһэх сирэйгэ көс -last_page_label=Тиһэх сирэйгэ көс -page_rotate_cw.title=Чаһы хоту эргит -page_rotate_cw.label=Чаһы хоту эргит -page_rotate_cw_label=Чаһы хоту эргит -page_rotate_ccw.title=Чаһы утары эргит -page_rotate_ccw.label=Чаһы утары эргит -page_rotate_ccw_label=Чаһы утары эргит - - -# Document properties dialog box -document_properties.title=Докумуон туруоруулара... -document_properties_label=Докумуон туруоруулара...\u0020 -document_properties_file_name=Билэ аата: -document_properties_file_size=Билэ кээмэйэ: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} КБ ({{size_b}} баайт) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} МБ ({{size_b}} баайт) -document_properties_title=Баһа: -document_properties_author=Ааптар: -document_properties_subject=Тиэмэ: -document_properties_keywords=Күлүүс тыл: -document_properties_creation_date=Оҥоһуллубут кэмэ: -document_properties_modification_date=Уларытыллыбыт кэмэ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_producer=PDF оҥорооччу: -document_properties_version=PDF барыла: -document_properties_page_count=Сирэй ахсаана: -document_properties_close=Сап - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Ойоҕос хапталы арый/сап -toggle_sidebar_label=Ойоҕос хапталы арый/сап -document_outline_label=Дөкүмүөн иһинээҕитэ -attachments.title=Кыбытыктары көрдөр -attachments_label=Кыбытык -thumbs.title=Ойуучааннары көрдөр -thumbs_label=Ойуучааннар -findbar.title=Дөкүмүөнтэн бул - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Сирэй {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Сирэй ойуучаана {{page}} - -# Find panel button title and messages -find_previous.title=Этии тиэкискэ бу иннинээҕи киириитин бул -find_previous_label=Иннинээҕи -find_next.title=Этии тиэкискэ бу кэннинээҕи киириитин бул -find_next_label=Аныгыскы -find_highlight=Барытын сырдатан көрдөр -find_match_case_label=Буукуба улаханын-кыратын араар -find_reached_top=Сирэй үрдүгэр тиийдиҥ, салгыыта аллара -find_reached_bottom=Сирэй бүттэ, үөһэ салҕанна -find_not_found=Этии көстүбэтэ - -# Error panel labels -error_more_info=Сиһилии -error_less_info=Сиһилиитин кистээ -error_close=Сап -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (хомуйуута: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Этии: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Стeк: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Билэ: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Устуруока: {{line}} -rendering_error=Сирэйи айарга алҕас таҕыста. - -# Predefined zoom values -page_scale_width=Сирэй кэтитинэн -page_scale_fit=Сирэй кээмэйинэн -page_scale_auto=Аптамаатынан -page_scale_actual=Дьиҥнээх кээмэйэ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Алҕас -loading_error=PDF-билэни хачайдыырга алҕас таҕыста. -invalid_file_error=Туох эрэ алҕастаах эбэтэр алдьаммыт PDF-билэ. -missing_file_error=PDF-билэ суох. -unexpected_response_error=Сиэрбэр хоруйдаабат. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} туһунан] -password_label=Бу PDF-билэни арыйарга көмүскэл тылы киллэриэхтээхин. -password_invalid=Киирии тыл алҕастаах. Бука диэн, хатылаан көр. -password_ok=СӨП - -printing_not_supported=Сэрэтии: Бу браузер бэчээттиири толору өйөөбөт. -printing_not_ready=Сэрэтии: PDF бэчээттииргэ толору хачайдана илик. -web_fonts_disabled=Ситим-бичиктэр араарыллыахтара: PDF бичиктэрэ кыайан көстүбэттэр. -document_colors_not_allowed=PDF-дөкүмүөүннэргэ бэйэлэрин өҥнөрүн туттар көҥүллэммэтэ: "Ситим-сирдэр бэйэлэрин өҥнөрүн тутталларын көҥүллүүргэ" диэн браузерга арахса сылдьар эбит. diff --git a/addons/web/static/lib/pdfjs/web/locale/sat/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/sat/viewer.properties index 6734095805d..9cfa1f5a8ca 100644 --- a/addons/web/static/lib/pdfjs/web/locale/sat/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/sat/viewer.properties @@ -13,49 +13,101 @@ # limitations under the License. # Main toolbar buttons (tooltips and alt text for images) -previous.title=पा़हिलाक् साहटा -next.title=इना़ तायोम साहटा +previous.title=ᱢᱟᱲᱟᱝ ᱥᱟᱦᱴᱟ +previous_label=ᱢᱟᱲᱟᱝᱟᱜ +next.title=ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ ᱥᱟᱦᱴᱟ +next_label=ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ # LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ᱥᱟᱦᱴᱟ # LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number # representing the total number of pages in the document. +of_pages=ᱨᱮᱭᱟᱜ {{pagesCount}} # LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" # will be replaced by a number representing the currently visible page, # respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} ᱠᱷᱚᱱ {{pagesCount}}) -zoom.title=हुडिञ ला़टु तेयार -presentation_mode.title=उदुक् सोदोर ओबोसता रे ओताय मे -presentation_mode_label=उदुक् सोदोर ओबोसता -open_file.title=रेत् झिज मे -open_file_label=झिज मे झिच् -bookmark.title=नितोगाक् ञेल (नावा विंडो रे नोकोल आर बाङ झिज मे ) -bookmark_label=नितोगाक् ञेंल +zoom_out.title=ᱦᱤᱲᱤᱧ ᱛᱮᱭᱟᱨ +zoom_out_label=ᱦᱤᱲᱤᱧ ᱛᱮᱭᱟᱨ +zoom_in.title=ᱢᱟᱨᱟᱝ ᱛᱮᱭᱟᱨ +zoom_in_label=ᱢᱟᱨᱟᱝ ᱛᱮᱭᱟᱨ +zoom.title=ᱡᱩᱢ +presentation_mode.title=ᱩᱫᱩᱜ ᱥᱚᱫᱚᱨ ᱚᱵᱚᱥᱛᱟ ᱨᱮ ᱚᱛᱟᱭ ᱢᱮ +presentation_mode_label=ᱩᱫᱩᱜ ᱥᱚᱫᱚᱨ ᱚᱵᱚᱥᱛᱟ ᱨᱮ +open_file.title=ᱨᱮᱫ ᱡᱷᱤᱡᱽ ᱢᱮ +open_file_label=ᱡᱷᱤᱡᱽ ᱢᱮ +print.title=ᱪᱷᱟᱯᱟ +print_label=ᱪᱷᱟᱯᱟ +download.title=ᱰᱟᱩᱱᱞᱚᱰ +download_label=ᱰᱟᱩᱱᱞᱚᱰ +bookmark.title=ᱱᱤᱛᱚᱜᱟᱜ ᱧᱮᱞ (ᱱᱚᱶᱟ ᱡᱷᱚᱨᱠᱟ ᱨᱮ ᱱᱚᱠᱚᱞ ᱟᱨ ᱵᱟᱝ ᱡᱷᱤᱡᱽ ᱢᱮ ) +bookmark_label=ᱱᱤᱛᱚᱜᱟᱜ ᱧᱮᱞ # Secondary toolbar and context menu +tools.title=ᱦᱟᱹᱛᱤᱭᱟᱹᱨ ᱠᱚ +tools_label=ᱦᱟᱹᱛᱤᱭᱟᱹᱨ ᱠᱚ +first_page.title=ᱯᱩᱭᱞᱩ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ +first_page_label=ᱯᱩᱭᱞᱩ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ +last_page.title=ᱢᱩᱪᱟᱹᱫ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ +last_page_label=ᱢᱩᱪᱟᱹᱫ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ +page_rotate_cw.title=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱟᱹᱪᱩᱨ +page_rotate_cw_label=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱟᱹᱪᱩᱨ +page_rotate_ccw.title=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱩᱞᱴᱟᱹ ᱟᱹᱪᱩᱨ +page_rotate_ccw_label=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱩᱞᱴᱟᱹ ᱟᱹᱪᱩᱨ + +cursor_text_select_tool.title=ᱚᱞ ᱵᱟᱪᱷᱟᱣ ᱦᱟᱹᱛᱤᱭᱟᱨ ᱮᱢ ᱪᱷᱚᱭ ᱢᱮ +cursor_text_select_tool_label=ᱚᱞ ᱵᱟᱪᱷᱟᱣ ᱦᱟᱹᱛᱤᱭᱟᱨ +cursor_hand_tool.title=ᱛᱤ ᱦᱟᱹᱛᱤᱭᱟᱨ ᱮᱢ ᱪᱷᱚᱭ ᱢᱮ +cursor_hand_tool_label=ᱛᱤ ᱦᱟᱹᱛᱤᱭᱟᱨ + +scroll_page.title=ᱥᱟᱦᱴᱟ ᱜᱩᱲᱟᱹᱣ ᱵᱮᱵᱷᱟᱨ ᱢᱮ +scroll_page_label=ᱥᱟᱦᱴᱟ ᱜᱩᱲᱟᱹᱣ +scroll_vertical.title=ᱥᱤᱫᱽ ᱜᱩᱲᱟᱹᱣ ᱵᱮᱵᱷᱟᱨ ᱢᱮ +scroll_vertical_label=ᱥᱤᱫᱽ ᱜᱩᱲᱟᱹᱣ +scroll_horizontal.title=ᱜᱤᱛᱤᱡ ᱛᱮ ᱜᱩᱲᱟᱹᱣ ᱵᱮᱵᱷᱟᱨ ᱢᱮ # Document properties dialog box -document_properties_file_name=रेत् ञुतुम: -document_properties_file_size=रेत् माराङ तेत्: +document_properties_file_name=ᱨᱮᱫᱽ ᱧᱩᱛᱩᱢ : +document_properties_file_size=ᱨᱮᱫᱽ ᱢᱟᱯ : # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{माराङ तेत्_kb}} KB ({{माराङ तेत्_b}} बाइट्स) +document_properties_kb={{size_kb}} KB ({{size_b}} ᱵᱟᱭᱤᱴ ᱠᱚ) # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" # will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{माराङ तेत्_mb}} MB ({{माराङ तेत्_b}} बाइट्स) -document_properties_title=एम ञुतुम: -document_properties_author=ओनोलिया़: -document_properties_subject=बिसोय: -document_properties_keywords=का़ठी बोर्ड: -document_properties_creation_date=तेयार मा़हित्: -document_properties_modification_date=बोदोल होचो मा़हित्: +document_properties_mb={{size_mb}} MB ({{size_b}} ᱵᱟᱭᱤᱴ ᱠᱚ) +document_properties_title=ᱧᱩᱛᱩᱢ : +document_properties_author=ᱚᱱᱚᱞᱤᱭᱟᱹ : +document_properties_subject=ᱵᱤᱥᱚᱭ : +document_properties_keywords=ᱠᱟᱹᱴᱷᱤ ᱥᱟᱵᱟᱫᱽ : +document_properties_creation_date=ᱛᱮᱭᱟᱨ ᱢᱟᱸᱦᱤᱛ : +document_properties_modification_date=ᱵᱚᱫᱚᱞ ᱦᱚᱪᱚ ᱢᱟᱹᱦᱤᱛ : # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{मा़हित्}}, {{ओकतो}} -document_properties_creator=बेनाविच्: -document_properties_producer=PDF तेयार ओडोकिच्: -document_properties_version=PDF बार्सान: -document_properties_page_count=साहटा लेखा: +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ᱵᱮᱱᱟᱣᱤᱡ : +document_properties_producer=PDF ᱛᱮᱭᱟᱨ ᱚᱰᱚᱠᱤᱡ : +document_properties_version=PDF ᱵᱷᱟᱹᱨᱥᱚᱱ : +document_properties_page_count=ᱥᱟᱦᱴᱟ ᱞᱮᱠᱷᱟ : +document_properties_page_size=ᱥᱟᱦᱴᱟ ᱢᱟᱯ : +document_properties_page_size_unit_inches=ᱤᱧᱪ +document_properties_page_size_unit_millimeters=ᱢᱤᱢᱤ +document_properties_page_size_orientation_portrait=ᱯᱚᱴᱨᱮᱴ +document_properties_page_size_orientation_landscape=ᱞᱮᱱᱰᱥᱠᱮᱯ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=ᱪᱤᱴᱷᱤ +document_properties_page_size_name_legal=ᱠᱟᱹᱱᱩᱱᱤ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. @@ -63,72 +115,83 @@ document_properties_page_count=साहटा लेखा: # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) -document_outline_label=दोलिल तेयार तेत् -attachments.title=लाठा सेलेद को उदुक् मे -attachments_label=लाठा सेलेद को -thumbs.title=चिता़र आहला को उदुगा मे -thumbs_label=चिता़र आहला को -findbar.title=दोलिल रे ञाम +document_outline_label=ᱫᱚᱞᱤᱞ ᱛᱮᱭᱟᱨ ᱛᱮᱫ +attachments.title=ᱞᱟᱴᱷᱟ ᱥᱮᱞᱮᱫ ᱠᱚ ᱩᱫᱩᱜᱽ ᱢᱮ +attachments_label=ᱞᱟᱴᱷᱟ ᱥᱮᱞᱮᱫ ᱠᱚ +thumbs.title=ᱪᱤᱛᱟᱹᱨ ᱟᱦᱞᱟ ᱠᱚ ᱩᱫᱩᱜᱽ ᱢᱮ +thumbs_label=ᱪᱤᱛᱟᱹᱨ ᱟᱦᱞᱟ ᱠᱚ +findbar.title=ᱫᱚᱞᱤᱞ ᱨᱮ ᱯᱟᱱᱛᱮ +findbar_label=ᱥᱮᱸᱫᱽᱨᱟᱭ ᱢᱮ +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. -thumb_page_title=साहटा {{साहटा}} +thumb_page_title={{page}} ᱥᱟᱦᱴᱟ # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. -thumb_page_canvas=साहटा रेयाक् चिता़र आहला {{साहटा}} +thumb_page_canvas={{page}} ᱥᱟᱦᱴᱟ ᱨᱮᱭᱟᱜ ᱪᱤᱛᱟᱹᱨ ᱟᱦᱞᱟ # Find panel button title and messages -find_previous.title=आयात् हिंस रेयाक् पा़हिल सेदाक् ओडोक् ञाम मे -find_next.title=आयात् हिंस रेयाक् इना़ तायोम ओडोक् ञाम मे -find_highlight=जोतो उदुक् राकाब -find_match_case_label=जोड़ मामला -find_reached_top=दोलिल रेयाक् चोट रे सेटेर, लातार खोन लेताड़ -find_reached_bottom=दोलिल रेयाक् मुचा़त् रे सेटेर, चोट खोन लेताड़ -find_not_found=आयात् हिंस बाय ञाम लेना +find_previous.title=ᱟᱭᱟᱛ ᱦᱤᱸᱥ ᱨᱮᱭᱟᱜ ᱯᱟᱹᱦᱤᱞ ᱥᱮᱫᱟᱜ ᱚᱰᱚᱠ ᱧᱟᱢ ᱢᱮ +find_next.title=ᱟᱭᱟᱛ ᱦᱤᱸᱥ ᱨᱮᱭᱟᱜ ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ ᱚᱰᱚᱠ ᱧᱟᱢ ᱢᱮ +find_highlight=ᱡᱷᱚᱛᱚ ᱩᱫᱩᱜ ᱨᱟᱠᱟᱵ +find_match_case_label=ᱡᱚᱲ ᱠᱟᱛᱷᱟ +find_reached_top=ᱫᱚᱞᱤᱞ ᱨᱮᱭᱟᱜ ᱪᱤᱴ ᱨᱮ ᱥᱮᱴᱮᱨ, ᱞᱟᱛᱟᱨ ᱠᱷᱚᱱ ᱞᱮᱛᱟᱲ +find_reached_bottom=ᱫᱚᱞᱤᱞ ᱨᱮᱭᱟᱜ ᱢᱩᱪᱟᱹᱫ ᱨᱮ ᱥᱮᱴᱮᱨ, ᱪᱚᱴ ᱠᱷᱚᱱ ᱞᱮᱛᱟᱲ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_not_found=ᱛᱚᱯᱚᱞ ᱫᱚᱱᱚᱲ ᱵᱟᱝ ᱧᱟᱢ ᱞᱮᱱᱟ # Error panel labels -error_more_info=बाड़ती ला़य सोदोरढेर ला़य सोदोर -error_less_info=कोम ला़य सोदोर +error_more_info=ᱵᱟᱹᱲᱛᱤ ᱞᱟᱹᱭ ᱥᱚᱫᱚᱨ +error_less_info=ᱠᱚᱢ ᱞᱟᱹᱭ ᱥᱚᱫᱚᱨ # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be # replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{बार्सान}} (तेयार: {{तेयार}}) +error_version_info=PDF.js v{{version}} (build: {{build}}) # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an # english string describing the error. -error_message=खोबोर: {{खोबोर}} +error_message=ᱠᱷᱚᱵᱚᱨ : {{message}} # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack # trace. -error_stack=डांग: {{डांग}} +error_stack=ᱵᱟᱝ : {{stack}} # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=रेत्: {{रेत्}} +error_file=ᱨᱮᱫᱽ : {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=गार: {{गार}} -rendering_error=साहटा एम जोहोक मित् भुल हुय एना . +error_line=ᱜᱟᱨ : {{line}} +rendering_error=ᱥᱟᱦᱴᱟ ᱮᱢ ᱡᱚᱦᱚᱠ ᱢᱤᱫ ᱵᱷᱩᱞ ᱦᱩᱭ ᱮᱱᱟ ᱾ # Predefined zoom values -page_scale_width=साहटा ओसार -page_scale_fit=साहटा खाप -page_scale_auto=आच् आच् ते हुडिञ ला़टु तेयार -page_scale_actual=ठिक माराङ तेत् +page_scale_width=ᱥᱟᱦᱴᱟ ᱚᱥᱟᱨ +page_scale_fit=ᱥᱟᱦᱴᱟ ᱠᱷᱟᱯ +page_scale_auto=ᱟᱡᱼᱟᱡ ᱛᱮ ᱦᱩᱰᱤᱧ ᱞᱟᱹᱴᱩ ᱛᱮᱭᱟᱨ +page_scale_actual=ᱴᱷᱤᱠ ᱢᱟᱨᱟᱝ ᱛᱮᱫ # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. # Loading indicator messages -loading_error_indicator=भुल -loading_error=\u0020PDFलादे जोहोक् मित् भुल हुय एना. -invalid_file_error=बाङ बाताव आर बाङ PDF रेत्. -missing_file_error=आदाक् PDF रेत्. +loading_error=PDF ᱞᱟᱫᱮ ᱡᱚᱦᱚᱜ ᱢᱤᱫ ᱵᱷᱩᱞ ᱦᱩᱭ ᱮᱱᱟ ᱾ +invalid_file_error=ᱵᱟᱝ ᱵᱟᱛᱟᱣ ᱟᱨᱵᱟᱝᱠᱷᱟᱱ ᱰᱤᱜᱟᱹᱣ PDF ᱨᱮᱫᱽ ᱾ +missing_file_error=ᱟᱫᱟᱜ PDF ᱨᱮᱫᱽ ᱾ + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{लेकान}} बेयान एम] -password_label=नोवा PDF रेत् झिज ला़गित् दानाङ साबाद आदेर मे. -password_invalid=बाङ बातावाक् दानाङ साबाद. दोहड़ा कुरुमुटुय मे. -password_ok=OK +text_annotation_type.alt=[{{type}} ᱢᱚᱱᱛᱚ ᱮᱢ] +password_label=ᱱᱚᱶᱟ PDF ᱨᱮᱫᱽ ᱡᱷᱤᱡᱽ ᱞᱟᱹᱜᱤᱫ ᱫᱟᱱᱟᱝ ᱥᱟᱵᱟᱫᱽ ᱟᱫᱮᱨ ᱢᱮ ᱾ +password_invalid=ᱵᱷᱩᱞ ᱫᱟᱱᱟᱝ ᱥᱟᱵᱟᱫᱽ ᱾ ᱫᱟᱭᱟᱠᱟᱛᱮ ᱫᱩᱦᱲᱟᱹ ᱪᱮᱥᱴᱟᱭ ᱢᱮ ᱾ +password_ok=ᱴᱷᱤᱠ -printing_not_supported=होसियार: छापा नोवा पानतेयाक् दाराय ते पुरा़व बाय गोड़ोवाकाना . -printing_not_ready=होंसिया़र: छापा ला़गित् PDF पुरा़ बाय लादे आकाना. -web_fonts_disabled=वेब फॉन्ट बाङ हुय होचो आकाना: भितिर थापोन PDF फॉन्ट्स बेभार बाङ हुय केया. -document_colors_not_allowed=PDF दोलिल को आजाक् निजे रोङ बेभार बाताव बाय एमागाक् आ: 'आजाक् निजे रोङ को बाछाव ला़गित् बाताव एम साहटा कोदो ब्राउजार रे बाय चोगोड़ होचोवा. +printing_not_supported=ᱦᱚᱥᱤᱭᱟᱨ : ᱪᱷᱟᱯᱟ ᱱᱚᱣᱟ ᱯᱟᱱᱛᱮᱭᱟᱜ ᱫᱟᱨᱟᱭ ᱛᱮ ᱯᱩᱨᱟᱹᱣ ᱵᱟᱭ ᱜᱚᱲᱚᱣᱟᱠᱟᱱᱟ ᱾ +printing_not_ready=ᱦᱩᱥᱤᱭᱟᱹᱨ : ᱪᱷᱟᱯᱟ ᱞᱟᱹᱜᱤᱫ PDF ᱯᱩᱨᱟᱹ ᱵᱟᱭ ᱞᱟᱫᱮ ᱟᱠᱟᱱᱟ ᱾ +web_fonts_disabled=ᱣᱮᱵᱽ ᱪᱤᱠᱤ ᱵᱟᱝ ᱦᱩᱭ ᱦᱚᱪᱚ ᱠᱟᱱᱟ : ᱵᱷᱤᱛᱤᱨ ᱛᱷᱟᱯᱚᱱ PDF ᱪᱤᱠᱤ ᱵᱮᱵᱷᱟᱨ ᱵᱟᱝ ᱦᱩᱭ ᱠᱮᱭᱟ ᱾ diff --git a/addons/web/static/lib/pdfjs/web/locale/sc/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/sc/viewer.properties new file mode 100644 index 00000000000..5a6f46cfe55 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/locale/sc/viewer.properties @@ -0,0 +1,239 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pàgina anteriore +previous_label=S'ischeda chi b'est primu +next.title=Pàgina imbeniente +next_label=Imbeniente + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pàgina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Impitica +zoom_out_label=Impitica +zoom_in.title=Ismànnia +zoom_in_label=Ismànnia +zoom.title=Ismànnia +presentation_mode.title=Cola a sa modalidade de presentatzione +presentation_mode_label=Modalidade de presentatzione +open_file.title=Aberi s'archìviu +open_file_label=Abertu +print.title=Imprenta +print_label=Imprenta +download.title=Iscàrriga +download_label=Iscàrriga +bookmark.title=Visualizatzione atuale (còpia o aberi in una ventana noa) +bookmark_label=Visualizatzione atuale + +# Secondary toolbar and context menu +tools.title=Istrumentos +tools_label=Istrumentos +first_page.title=Bae a sa prima pàgina +first_page_label=Bae a sa prima pàgina +last_page.title=Bae a s'ùrtima pàgina +last_page_label=Bae a s'ùrtima pàgina +page_rotate_cw.title=Gira in sensu oràriu +page_rotate_cw_label=Gira in sensu oràriu +page_rotate_ccw.title=Gira in sensu anti-oràriu +page_rotate_ccw_label=Gira in sensu anti-oràriu + +cursor_text_select_tool.title=Ativa s'aina de seletzione de testu +cursor_text_select_tool_label=Aina de seletzione de testu +cursor_hand_tool.title=Ativa s'aina de manu +cursor_hand_tool_label=Aina de manu + +scroll_page.title=Imprea s'iscurrimentu de pàgina +scroll_page_label=Iscurrimentu de pàgina +scroll_vertical.title=Imprea s'iscurrimentu verticale +scroll_vertical_label=Iscurrimentu verticale +scroll_horizontal.title=Imprea s'iscurrimentu orizontale +scroll_horizontal_label=Iscurrimentu orizontale +scroll_wrapped.title=Imprea s'iscurrimentu continu +scroll_wrapped_label=Iscurrimentu continu + + +# Document properties dialog box +document_properties.title=Propiedades de su documentu… +document_properties_label=Propiedades de su documentu… +document_properties_file_name=Nòmine de s'archìviu: +document_properties_file_size=Mannària de s'archìviu: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Tìtulu: +document_properties_author=Autoria: +document_properties_subject=Ogetu: +document_properties_keywords=Faeddos crae: +document_properties_creation_date=Data de creatzione: +document_properties_modification_date=Data de modìfica: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creatzione: +document_properties_producer=Produtore de PDF: +document_properties_version=Versione de PDF: +document_properties_page_count=Contu de pàginas: +document_properties_page_size=Mannària de sa pàgina: +document_properties_page_size_unit_inches=pòddighes +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=verticale +document_properties_page_size_orientation_landscape=orizontale +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Lìtera +document_properties_page_size_name_legal=Legale +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Visualizatzione web lestra: +document_properties_linearized_yes=Eja +document_properties_linearized_no=Nono +document_properties_close=Serra + +print_progress_message=Aparitzende s'imprenta de su documentu… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cantzella + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Ativa/disativa sa barra laterale +toggle_sidebar_notification2.title=Ativa/disativa sa barra laterale (su documentu cuntenet un'ischema, alligongiados o livellos) +toggle_sidebar_label=Ativa/disativa sa barra laterale +document_outline_label=Ischema de su documentu +attachments.title=Ammustra alligongiados +attachments_label=Alliongiados +layers.title=Ammustra livellos (clic dòpiu pro ripristinare totu is livellos a s'istadu predefinidu) +layers_label=Livellos +thumbs.title=Ammustra miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Agata s'elementu atuale de s'ischema +current_outline_item_label=Elementu atuale de s'ischema +findbar.title=Agata in su documentu +findbar_label=Agata + +additional_layers=Livellos additzionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pàgina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pàgina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura de sa pàgina {{page}} + +# Find panel button title and messages +find_input.title=Agata +find_input.placeholder=Agata in su documentu… +find_previous.title=Agata s'ocurrèntzia pretzedente de sa fràsia +find_previous_label=S'ischeda chi b'est primu +find_next.title=Agata s'ocurrèntzia imbeniente de sa fràsia +find_next_label=Imbeniente +find_highlight=Evidèntzia totu +find_match_case_label=Distinghe intre majùsculas e minùsculas +find_match_diacritics_label=Respeta is diacrìticos +find_entire_word_label=Faeddos intreos +find_reached_top=S'est lòmpidu a su cumintzu de su documentu, si sighit dae su bàsciu +find_reached_bottom=S'est lòmpidu a s'acabbu de su documentu, si sighit dae s'artu +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} dae {{total}} currispondèntzia +find_match_count[two]={{current}} dae {{total}} currispondèntzias +find_match_count[few]={{current}} dae {{total}} currispondèntzias +find_match_count[many]={{current}} dae {{total}} currispondèntzias +find_match_count[other]={{current}} dae {{total}} currispondèntzias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Prus de {{limit}} currispondèntzias +find_match_count_limit[one]=Prus de {{limit}} currispondèntzia +find_match_count_limit[two]=Prus de {{limit}} currispondèntzias +find_match_count_limit[few]=Prus de {{limit}} currispondèntzias +find_match_count_limit[many]=Prus de {{limit}} currispondèntzias +find_match_count_limit[other]=Prus de {{limit}} currispondèntzias +find_not_found=Testu no agatadu + +# Error panel labels +error_more_info=Àteras informatziones +error_less_info=Prus pagu informatziones +error_close=Serra +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Messàgiu: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Archìviu: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Lìnia: {{line}} +rendering_error=Faddina in sa visualizatzione de sa pàgina. + +# Predefined zoom values +page_scale_auto=Ingrandimentu automàticu +page_scale_actual=Mannària reale +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Carrighende… +loading_error=Faddina in sa càrriga de su PDF. +invalid_file_error=Archìviu PDF non vàlidu o corrùmpidu. +missing_file_error=Ammancat s'archìviu PDF. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_label=Inserta sa crae pro abèrrere custu archìviu PDF. +password_invalid=Sa crae no est curreta. Torra·bi a proare. +password_ok=Andat bene +password_cancel=Cantzella + +printing_not_supported=Atentzione: s'imprenta no est funtzionende de su totu in custu navigadore. +printing_not_ready=Atentzione: su PDF no est istadu carrigadu de su totu pro s'imprenta. +web_fonts_disabled=Is tipografias web sunt disativadas: is tipografias incrustadas a su PDF non podent èssere impreadas. diff --git a/addons/web/static/lib/pdfjs/web/locale/lg/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/scn/viewer.properties similarity index 65% rename from addons/web/static/lib/pdfjs/web/locale/lg/viewer.properties rename to addons/web/static/lib/pdfjs/web/locale/scn/viewer.properties index 5658d5448a6..e9a650a914e 100644 --- a/addons/web/static/lib/pdfjs/web/locale/lg/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/scn/viewer.properties @@ -13,34 +13,24 @@ # limitations under the License. # Main toolbar buttons (tooltips and alt text for images) -previous.title=Omuko Ogubadewo -next.title=Omuko Oguddako # LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. # LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number # representing the total number of pages in the document. -of_pages=ku {{pagesCount}} # LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" # will be replaced by a number representing the currently visible page, # respectively a number representing the total number of pages in the document. -zoom_out.title=Zimbulukusa -zoom_out_label=Zimbulukusa -zoom_in.title=Funza Munda -zoom_in_label=Funza Munda -zoom.title=Gezzamu -open_file.title=Bikula Fayiro -open_file_label=Ggulawo -print.title=Fulumya -print_label=Fulumya -download.title=Tikula -download_label=Tikula -bookmark.title=Endabika eriwo (koppa oba gulawo mu diriisa epya) -bookmark_label=Endabika Eriwo +zoom_out.title=Cchiù nicu +zoom_out_label=Cchiù nicu +zoom_in.title=Cchiù granni +zoom_in_label=Cchiù granni # Secondary toolbar and context menu + + # Document properties dialog box # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # will be replaced by the PDF file size in kilobytes, respectively in bytes. @@ -48,65 +38,64 @@ bookmark_label=Endabika Eriwo # will be replaced by the PDF file size in megabytes, respectively in bytes. # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web lesta: +document_properties_linearized_yes=Se # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. +print_progress_close=Sfai # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) -document_outline_label=Ensalo ze Ekiwandiko -thumbs.title=Laga Ekifanyi Mubufunze -thumbs_label=Ekifanyi Mubufunze # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. -thumb_page_title=Omuko {{page}} # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. -thumb_page_canvas=Ekifananyi kyo Omuko Mubufunze {{page}} # Find panel button title and messages -find_previous.title=Zuula awayise mukweddamu mumiteddera -find_next.title=Zuula ekidako mukweddamu mumiteddera -find_highlight=Londa byonna -find_not_found=Emiteddera tezuuliddwa +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. # Error panel labels -error_more_info=Ebisingawo -error_less_info=Mubumpimpi # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be # replaced by the PDF.JS version and build ID. # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an # english string describing the error. -error_message=Obubaaka: {{message}} # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack # trace. -error_stack=Ebipangiddwa: {{stack}} # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fayiro {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Layini: {{line}} -rendering_error=Wabadewo ensobi muku tekawo omuko. # Predefined zoom values -page_scale_width=Obugazi bwo Omuko -page_scale_fit=Okutuka kwo Omuko -page_scale_auto=Okwefunza no Kwegeza -page_scale_actual=Obunene Obutufu +page_scale_width=Larghizza dâ pàggina # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. # Loading indicator messages -loading_error_indicator=Ensobi -loading_error=Wabadewo ensobi mukutika PDF. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Enyonyola] -password_ok=OK +password_cancel=Sfai -printing_not_supported=Okulaabula: Okulumya empapula tekuwagirwa enonyeso enno. diff --git a/addons/web/static/lib/pdfjs/web/locale/sco/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/sco/viewer.properties new file mode 100644 index 00000000000..656f9950b54 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/locale/sco/viewer.properties @@ -0,0 +1,248 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Page Afore +previous_label=Previous +next.title=Page Efter +next_label=Neist + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Page +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=o {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} o {{pagesCount}}) + +zoom_out.title=Zoom Oot +zoom_out_label=Zoom Oot +zoom_in.title=Zoom In +zoom_in_label=Zoom In +zoom.title=Zoom +presentation_mode.title=Flit tae Presentation Mode +presentation_mode_label=Presentation Mode +open_file.title=Open File +open_file_label=Open +print.title=Prent +print_label=Prent +download.title=Doonload +download_label=Doonload +bookmark.title=View the noo (copy or open in new windae) +bookmark_label=View The Noo + +# Secondary toolbar and context menu +tools.title=Tools +tools_label=Tools +first_page.title=Gang tae First Page +first_page_label=Gang tae First Page +last_page.title=Gang tae Lest Page +last_page_label=Gang tae Lest Page +page_rotate_cw.title=Rotate Clockwise +page_rotate_cw_label=Rotate Clockwise +page_rotate_ccw.title=Rotate Coonterclockwise +page_rotate_ccw_label=Rotate Coonterclockwise + +cursor_text_select_tool.title=Enable Text Walin Tool +cursor_text_select_tool_label=Text Walin Tool +cursor_hand_tool.title=Enable Haun Tool +cursor_hand_tool_label=Haun Tool + +scroll_vertical.title=Yaise Vertical Scrollin +scroll_vertical_label=Vertical Scrollin +scroll_horizontal.title=Yaise Horizontal Scrollin +scroll_horizontal_label=Horizontal Scrollin +scroll_wrapped.title=Yaise Wrapped Scrollin +scroll_wrapped_label=Wrapped Scrollin + +spread_none.title=Dinnae jyn page spreids +spread_none_label=Nae Spreids +spread_odd.title=Jyn page spreids stertin wi odd-numbered pages +spread_odd_label=Odd Spreids +spread_even.title=Jyn page spreids stertin wi even-numbered pages +spread_even_label=Even Spreids + +# Document properties dialog box +document_properties.title=Document Properties… +document_properties_label=Document Properties… +document_properties_file_name=File nemme: +document_properties_file_size=File size: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Title: +document_properties_author=Author: +document_properties_subject=Subjeck: +document_properties_keywords=Keywirds: +document_properties_creation_date=Date o Makkin: +document_properties_modification_date=Date o Chynges: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Makker: +document_properties_producer=PDF Producer: +document_properties_version=PDF Version: +document_properties_page_count=Page Coont: +document_properties_page_size=Page Size: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portrait +document_properties_page_size_orientation_landscape=landscape +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Wab View: +document_properties_linearized_yes=Aye +document_properties_linearized_no=Naw +document_properties_close=Sneck + +print_progress_message=Reddin document fur prentin… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Stap + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toggle Sidebaur +toggle_sidebar_notification2.title=Toggle Sidebaur (document conteens ootline/attachments/layers) +toggle_sidebar_label=Toggle Sidebaur +document_outline.title=Kythe Document Ootline (double-click fur tae oot-fauld/in-fauld aw items) +document_outline_label=Document Ootline +attachments.title=Kythe Attachments +attachments_label=Attachments +layers.title=Kythe Layers (double-click fur tae reset aw layers tae the staunart state) +layers_label=Layers +thumbs.title=Kythe Thumbnails +thumbs_label=Thumbnails +current_outline_item.title=Find Current Ootline Item +current_outline_item_label=Current Ootline Item +findbar.title=Find in Document +findbar_label=Find + +additional_layers=Mair Layers +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Page {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Page {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Thumbnail o Page {{page}} + +# Find panel button title and messages +find_input.title=Find +find_input.placeholder=Find in document… +find_previous.title=Airt oot the last time this phrase occurred +find_previous_label=Previous +find_next.title=Airt oot the neist time this phrase occurs +find_next_label=Neist +find_highlight=Highlicht aw +find_match_case_label=Match case +find_entire_word_label=Hale Wirds +find_reached_top=Raxed tap o document, went on fae the dowp end +find_reached_bottom=Raxed end o document, went on fae the tap +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} o {{total}} match +find_match_count[two]={{current}} o {{total}} matches +find_match_count[few]={{current}} o {{total}} matches +find_match_count[many]={{current}} o {{total}} matches +find_match_count[other]={{current}} o {{total}} matches +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mair nor {{limit}} matches +find_match_count_limit[one]=Mair nor {{limit}} match +find_match_count_limit[two]=Mair nor {{limit}} matches +find_match_count_limit[few]=Mair nor {{limit}} matches +find_match_count_limit[many]=Mair nor {{limit}} matches +find_match_count_limit[other]=Mair nor {{limit}} matches +find_not_found=Phrase no fund + +# Error panel labels +error_more_info=Mair Information +error_less_info=Less Information +error_close=Sneck +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Message: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Line: {{line}} +rendering_error=A mishanter tuik place while renderin the page. + +# Predefined zoom values +page_scale_width=Page Width +page_scale_fit=Page Fit +page_scale_auto=Automatic Zoom +page_scale_actual=Actual Size +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Loadin… +loading_error=An mishanter tuik place while loadin the PDF. +invalid_file_error=No suithfest or camshauchlet PDF file. +missing_file_error=PDF file tint. +unexpected_response_error=Unexpectit server repone. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Inpit the passwird fur tae open this PDF file. +password_invalid=Passwird no suithfest. Gonnae gie it anither shot. +password_ok=OK +password_cancel=Stap + +printing_not_supported=Tak tent: Prentin isnae richt supportit by this stravaiger. +printing_not_ready=Tak tent: The PDF isnae richt loadit fur prentin. +web_fonts_disabled=Wab fonts are disabled: cannae yaise embeddit PDF fonts. diff --git a/addons/web/static/lib/pdfjs/web/locale/si/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/si/viewer.properties index 9a1d1e8bcdc..88e6efb21ca 100644 --- a/addons/web/static/lib/pdfjs/web/locale/si/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/si/viewer.properties @@ -13,10 +13,10 @@ # limitations under the License. # Main toolbar buttons (tooltips and alt text for images) -previous.title=මීට පෙර පිටුව -previous_label=පෙර -next.title=මීළඟ පිටුව -next_label=මීළඟ +previous.title=කලින් පිටුව +previous_label=කලින් +next.title=ඊළඟ පිටුව +next_label=ඊළඟ # LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. page.title=පිටුව @@ -26,69 +26,61 @@ page.title=පිටුව # will be replaced by a number representing the currently visible page, # respectively a number representing the total number of pages in the document. -zoom_out.title=කුඩා කරන්න -zoom_out_label=කුඩා කරන්න -zoom_in.title=විශාල කරන්න -zoom_in_label=විශාල කරන්න -zoom.title=විශාලණය -presentation_mode.title=ඉදිරිපත්කිරීම් ප්‍රකාරය වෙත මාරුවන්න -presentation_mode_label=ඉදිරිපත්කිරීම් ප්‍රකාරය -open_file.title=ගොනුව විවෘත කරන්න -open_file_label=විවෘත කරන්න +zoom_out.title=කුඩාලනය +zoom_out_label=කුඩාලනය +zoom_in.title=විශාලනය +zoom_in_label=විශාලනය +zoom.title=විශාල කරන්න +presentation_mode.title=සමර්පණ ප්‍රකාරය වෙත මාරුවන්න +presentation_mode_label=සමර්පණ ප්‍රකාරය +open_file.title=ගොනුව අරින්න +open_file_label=අරින්න print.title=මුද්‍රණය print_label=මුද්‍රණය download.title=බාගන්න download_label=බාගන්න -bookmark.title=දැනට ඇති දසුන (පිටපත් කරන්න හෝ නව කවුළුවක විවෘත කරන්න) -bookmark_label=දැනට ඇති දසුන +bookmark.title=වත්මන් දැක්ම (පිටපත් කරන්න හෝ නව කවුළුවක අරින්න) +bookmark_label=වත්මන් දැක්ම # Secondary toolbar and context menu tools.title=මෙවලම් tools_label=මෙවලම් first_page.title=මුල් පිටුවට යන්න -first_page.label=මුල් පිටුවට යන්න first_page_label=මුල් පිටුවට යන්න last_page.title=අවසන් පිටුවට යන්න -last_page.label=අවසන් පිටුවට යන්න last_page_label=අවසන් පිටුවට යන්න -page_rotate_cw.title=දක්ශිණාවර්තව භ්‍රමණය -page_rotate_cw.label=දක්ශිණාවර්තව භ්‍රමණය -page_rotate_cw_label=දක්ශිණාවර්තව භ්‍රමණය -page_rotate_ccw.title=වාමාවර්තව භ්‍රමණය -page_rotate_ccw.label=වාමාවර්තව භ්‍රමණය -page_rotate_ccw_label=වාමාවර්තව භ්‍රමණය cursor_hand_tool_label=අත් මෙවලම # Document properties dialog box -document_properties.title=ලේඛන වත්කම්... -document_properties_label=ලේඛන වත්කම්... -document_properties_file_name=ගොනු නම: -document_properties_file_size=ගොනු ප්‍රමාණය: +document_properties.title=ලේඛනයේ ගුණාංග… +document_properties_label=ලේඛනයේ ගුණාංග… +document_properties_file_name=ගොනුවේ නම: +document_properties_file_size=ගොනුවේ ප්‍රමාණය: # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} බයිට) +document_properties_kb=කි.බ. {{size_kb}} (බයිට {{size_b}}) # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" # will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} බයිට) -document_properties_title=සිරස්තලය: -document_properties_author=කතෲ +document_properties_mb=මෙ.බ. {{size_mb}} (බයිට {{size_b}}) +document_properties_title=සිරැසිය: +document_properties_author=කතෘ: document_properties_subject=මාතෘකාව: -document_properties_keywords=යතුරු වදන්: -document_properties_creation_date=නිර්මිත දිනය: -document_properties_modification_date=වෙනස්කල දිනය: +document_properties_keywords=මූල පද: +document_properties_creation_date=සෑදූ දිනය: +document_properties_modification_date=සංශෝධිත දිනය: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. document_properties_date_string={{date}}, {{time}} -document_properties_creator=නිර්මාපක: -document_properties_producer=PDF නිශ්පාදක: -document_properties_version=PDF නිකුතුව: +document_properties_creator=නිර්මාතෘ: +document_properties_producer=පීඩීඑෆ් සම්පාදක: +document_properties_version=පීඩීඑෆ් අනුවාදය: document_properties_page_count=පිටු ගණන: -document_properties_page_size=පිටුවේ විශාලත්වය: +document_properties_page_size=පිටුවේ තරම: document_properties_page_size_unit_inches=අඟල් -document_properties_page_size_unit_millimeters=මිමි +document_properties_page_size_unit_millimeters=මි.මී. document_properties_page_size_orientation_portrait=සිරස් document_properties_page_size_orientation_landscape=තිරස් document_properties_page_size_name_a3=A3 @@ -103,12 +95,12 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} document_properties_page_size_dimension_name_string={{width}}×{{height}}{{unit}}{{name}}{{orientation}} # LOCALIZATION NOTE (document_properties_linearized): The linearization status of # the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=වේගවත් ජාල දසුන: +document_properties_linearized=වේගවත් වියමන දැක්ම: document_properties_linearized_yes=ඔව් document_properties_linearized_no=නැහැ document_properties_close=වසන්න -print_progress_message=ලේඛනය මුද්‍රණය සඳහා සූදානම් කරමින්… +print_progress_message=මුද්‍රණය සඳහා ලේඛනය සූදානම් වෙමින්… # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. print_progress_percent={{progress}}% @@ -117,35 +109,33 @@ print_progress_close=අවලංගු කරන්න # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) -toggle_sidebar.title=පැති තීරුවට මාරුවන්න -toggle_sidebar_label=පැති තීරුවට මාරුවන්න -document_outline_label=ලේඛනයේ පිට මායිම -attachments.title=ඇමිණුම් පෙන්වන්න -attachments_label=ඇමිණුම් +document_outline_label=ලේඛනයේ වටසන +attachments.title=ඇමුණුම් පෙන්වන්න +attachments_label=ඇමුණුම් thumbs.title=සිඟිති රූ පෙන්වන්න thumbs_label=සිඟිති රූ -findbar.title=ලේඛනය තුළ සොයන්න +findbar.title=ලේඛනයෙහි සොයන්න findbar_label=සොයන්න +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. thumb_page_title=පිටුව {{page}} # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. -thumb_page_canvas=පිටුවෙ සිඟිත රූව {{page}} +thumb_page_canvas=පිටුවේ සිඟිත රූව {{page}} # Find panel button title and messages find_input.title=සොයන්න -find_previous.title=මේ වාක්‍ය ඛණ්ඩය මීට පෙර යෙදුණු ස්ථානය සොයන්න -find_previous_label=පෙර: -find_next.title=මේ වාක්‍ය ඛණ්ඩය මීළඟට යෙදෙන ස්ථානය සොයන්න -find_next_label=මීළඟ +find_previous.title=මෙම වැකිකඩ කලින් යෙදුණු ස්ථානය සොයන්න +find_previous_label=කලින් +find_next.title=මෙම වැකිකඩ ඊළඟට යෙදෙන ස්ථානය සොයන්න +find_next_label=ඊළඟ find_highlight=සියල්ල උද්දීපනය -find_match_case_label=අකුරු ගළපන්න -find_entire_word_label=සම්පූර්ණ වචන -find_reached_top=පිටුවේ ඉහළ කෙළවරට ලගාවිය, පහළ සිට ඉදිරියට යමින් -find_reached_bottom=පිටුවේ පහළ කෙළවරට ලගාවිය, ඉහළ සිට ඉදිරියට යමින් +find_entire_word_label=සමස්ත වචන +find_reached_top=ලේඛනයේ මුදුනට ළඟා විය, පහළ සිට ඉහළට +find_reached_bottom=ලේඛනයේ අවසානයට ළඟා විය, ඉහළ සිට පහළට # LOCALIZATION NOTE (find_match_count): The supported plural forms are # [one|two|few|many|other], with [other] as the default value. # "{{current}}" and "{{total}}" will be replaced by a number representing the @@ -154,54 +144,61 @@ find_reached_bottom=පිටුවේ පහළ කෙළවරට ලගාව # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # [zero|one|two|few|many|other], with [other] as the default value. # "{{limit}}" will be replaced by a numerical value. -find_match_count_limit[zero]=ගැලපුම් {{limit}} ට වඩා -find_not_found=ඔබ සෙව් වචන හමු නොවීය +find_match_count_limit[zero]=ගැළපීම් {{limit}} කට වඩා +find_not_found=වැකිකඩ හමු නොවිණි # Error panel labels -error_more_info=බොහෝ තොරතුරු +error_more_info=තව තොරතුරු error_less_info=අවම තොරතුරු error_close=වසන්න # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be # replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (නිකුතුව: {{build}}) +error_version_info=පීඩීඑෆ්.js v{{version}} (තැනීම: {{build}}) # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an # english string describing the error. error_message=පණිවිඩය: {{message}} # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack # trace. -error_stack=Stack: {{stack}} # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename error_file=ගොනුව: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=පේළිය: {{line}} -rendering_error=පිටුව රෙන්ඩර් විමේදි ගැටලුවක් හට ගැනුණි. # Predefined zoom values page_scale_width=පිටුවේ පළල -page_scale_fit=පිටුවට සුදුසු ලෙස -page_scale_auto=ස්වයංක්‍රීය විශාලණය -page_scale_actual=නියමිත ප්‍රමාණය +page_scale_auto=ස්වයංක්‍රීය විශාලනය +page_scale_actual=සැබෑ ප්‍රමාණය # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=දෝෂය -loading_error=PDF පූරණය විමේදි දෝෂයක් හට ගැනුණි. -invalid_file_error=දූශිත හෝ සාවද්‍ය PDF ගොනුව. -missing_file_error=නැතිවූ PDF ගොනුව. -unexpected_response_error=බලාපොරොත්තු නොවූ සේවාදායක ප්‍රතිචාරය. +loading_error=පීඩීඑෆ් පූරණය කිරීමේදී දෝෂයක් සිදු විය. +invalid_file_error=වලංගු නොවන හෝ හානිවූ පීඩීඑෆ් ගොනුවකි. +missing_file_error=මඟහැරුණු පීඩීඑෆ් ගොනුවකි. +unexpected_response_error=අනපේක්‍ෂිත සේවාදායක ප්‍රතිචාරයකි. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} විස්තරය] -password_label=මෙම PDF ගොනුව විවෘත කිරීමට මුරපදය ඇතුළත් කරන්න. -password_invalid=වැරදි මුරපදයක්. කරුණාකර නැවත උත්සහ කරන්න. +password_label=මෙම පීඩීඑෆ් ගොනුව විවෘත කිරීමට මුරපදය යොදන්න. +password_invalid=වැරදි මුරපදයකි. නැවත උත්සාහ කරන්න. password_ok=හරි -password_cancel=එපා +password_cancel=අවලංගු -printing_not_supported=අවවාදයයි: මෙම ගවේශකය මුද්‍රණය සඳහා සම්පූර්ණයෙන් සහය නොදක්වයි. -printing_not_ready=අවවාදයයි: මුද්‍රණය සඳහා PDF සම්පූර්ණයෙන් පූර්ණය වී නොමැත. -web_fonts_disabled=ජාල අකුරු අක්‍රීයයි: තිළැලි PDF අකුරු භාවිත කළ නොහැක. +printing_not_supported=අවවාදයයි: මෙම අතිරික්සුව මුද්‍රණය සඳහා හොඳින් සහාය නොදක්වයි. +printing_not_ready=අවවාදයයි: මුද්‍රණයට පීඩීඑෆ් ගොනුව සම්පූර්ණයෙන් පූරණය වී නැත. +web_fonts_disabled=වියමන අකුරු අබලයි: පීඩීඑෆ් වෙත කාවැද්දූ අකුරු භාවිතා කළ නොහැකිය. + +# Editor + + +# Editor Parameters + +# Editor Parameters + +# Editor aria diff --git a/addons/web/static/lib/pdfjs/web/locale/sk/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/sk/viewer.properties index 00cf62e3bf4..85449684989 100644 --- a/addons/web/static/lib/pdfjs/web/locale/sk/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/sk/viewer.properties @@ -39,8 +39,8 @@ open_file.title=Otvoriť súbor open_file_label=Otvoriť print.title=Tlačiť print_label=Tlačiť -download.title=Prevziať -download_label=Prevziať +download.title=Stiahnuť +download_label=Stiahnuť bookmark.title=Aktuálne zobrazenie (kopírovať alebo otvoriť v novom okne) bookmark_label=Aktuálne zobrazenie @@ -48,16 +48,12 @@ bookmark_label=Aktuálne zobrazenie tools.title=Nástroje tools_label=Nástroje first_page.title=Prejsť na prvú stranu -first_page.label=Prejsť na prvú stranu first_page_label=Prejsť na prvú stranu last_page.title=Prejsť na poslednú stranu -last_page.label=Prejsť na poslednú stranu last_page_label=Prejsť na poslednú stranu page_rotate_cw.title=Otočiť v smere hodinových ručičiek -page_rotate_cw.label=Otočiť v smere hodinových ručičiek page_rotate_cw_label=Otočiť v smere hodinových ručičiek page_rotate_ccw.title=Otočiť proti smeru hodinových ručičiek -page_rotate_ccw.label=Otočiť proti smeru hodinových ručičiek page_rotate_ccw_label=Otočiť proti smeru hodinových ručičiek cursor_text_select_tool.title=Povoliť výber textu @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Výber textu cursor_hand_tool.title=Povoliť nástroj ruka cursor_hand_tool_label=Nástroj ruka +scroll_page.title=Použiť rolovanie po stránkach +scroll_page_label=Rolovanie po stránkach scroll_vertical.title=Používať zvislé posúvanie scroll_vertical_label=Zvislé posúvanie scroll_horizontal.title=Používať vodorovné posúvanie @@ -137,17 +135,24 @@ print_progress_close=Zrušiť # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Prepnúť bočný panel -toggle_sidebar_notification.title=Prepnúť bočný panel (dokument obsahuje osnovu/prílohy) +toggle_sidebar_notification2.title=Prepnúť bočný panel (dokument obsahuje osnovu/prílohy/vrstvy) toggle_sidebar_label=Prepnúť bočný panel document_outline.title=Zobraziť osnovu dokumentu (dvojitým kliknutím rozbalíte/zbalíte všetky položky) document_outline_label=Osnova dokumentu attachments.title=Zobraziť prílohy attachments_label=Prílohy +layers.title=Zobraziť vrstvy (dvojitým kliknutím uvediete všetky vrstvy do pôvodného stavu) +layers_label=Vrstvy thumbs.title=Zobraziť miniatúry thumbs_label=Miniatúry +current_outline_item.title=Nájsť aktuálnu položku v osnove +current_outline_item_label=Aktuálna položka v osnove findbar.title=Hľadať v dokumente findbar_label=Hľadať +additional_layers=Ďalšie vrstvy +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Strana {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Vyhľadať ďalší výskyt reťazca find_next_label=Ďalšie find_highlight=Zvýrazniť všetky find_match_case_label=Rozlišovať veľkosť písmen +find_match_diacritics_label=Rozlišovať diakritiku find_entire_word_label=Celé slová find_reached_top=Bol dosiahnutý začiatok stránky, pokračuje sa od konca find_reached_bottom=Bol dosiahnutý koniec stránky, pokračuje sa od začiatku @@ -192,7 +198,7 @@ find_match_count_limit[other]=Viac než {{limit}} výsledkov find_not_found=Výraz nebol nájdený # Error panel labels -error_more_info=Viac informácií +error_more_info=Ďalšie informácie error_less_info=Menej informácií error_close=Zavrieť # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be @@ -220,7 +226,7 @@ page_scale_actual=Skutočná veľkosť page_scale_percent={{scale}} % # Loading indicator messages -loading_error_indicator=Chyba +loading=Načítava sa… loading_error=Počas načítavania dokumentu PDF sa vyskytla chyba. invalid_file_error=Neplatný alebo poškodený súbor PDF. missing_file_error=Chýbajúci súbor PDF. @@ -243,4 +249,33 @@ password_cancel=Zrušiť printing_not_supported=Upozornenie: tlač nie je v tomto prehliadači plne podporovaná. printing_not_ready=Upozornenie: súbor PDF nie je plne načítaný pre tlač. web_fonts_disabled=Webové písma sú vypnuté: nie je možné použiť písma vložené do súboru PDF. -document_colors_not_allowed=Dokumenty PDF nemajú povolené používať vlastné farby, pretože voľba "Povoliť stránkam používať vlastné farby" je v nastaveniach prehliadača vypnutá. + +# Editor +editor_none.title=Zakázať úpravu poznámok +editor_none_label=Zakázať úpravy +editor_free_text.title=Pridať textovú poznámku +editor_free_text_label=Textová poznámka +editor_ink.title=Pridať poznámku písanú rukou +editor_ink_label=Poznámka písaná rukou + +freetext_default_content=Zadajte nejaký text… + +free_text_default_content=Zadajte text… + +# Editor Parameters +editor_free_text_font_color=Farba písma +editor_free_text_font_size=Veľkosť písma +editor_ink_line_color=Farba čiary +editor_ink_line_thickness=Hrúbka čiary + +# Editor Parameters +editor_free_text_color=Farba +editor_free_text_size=Veľkosť +editor_ink_color=Farba +editor_ink_thickness=Hrúbka +editor_ink_opacity=Priehľadnosť + +# Editor aria +editor_free_text_aria_label=Textový editor +editor_ink_aria_label=Editor pre písanie rukou +editor_ink_canvas_aria_label=Obrázok vytvorený používateľom diff --git a/addons/web/static/lib/pdfjs/web/locale/sl/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/sl/viewer.properties index 790205de73c..3b0052ceb5d 100644 --- a/addons/web/static/lib/pdfjs/web/locale/sl/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/sl/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Trenutni pogled tools.title=Orodja tools_label=Orodja first_page.title=Pojdi na prvo stran -first_page.label=Pojdi na prvo stran first_page_label=Pojdi na prvo stran last_page.title=Pojdi na zadnjo stran -last_page.label=Pojdi na zadnjo stran last_page_label=Pojdi na zadnjo stran page_rotate_cw.title=Zavrti v smeri urnega kazalca -page_rotate_cw.label=Zavrti v smeri urnega kazalca page_rotate_cw_label=Zavrti v smeri urnega kazalca page_rotate_ccw.title=Zavrti v nasprotni smeri urnega kazalca -page_rotate_ccw.label=Zavrti v nasprotni smeri urnega kazalca page_rotate_ccw_label=Zavrti v nasprotni smeri urnega kazalca cursor_text_select_tool.title=Omogoči orodje za izbor besedila @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Orodje za izbor besedila cursor_hand_tool.title=Omogoči roko cursor_hand_tool_label=Roka +scroll_page.title=Uporabi drsenje po strani +scroll_page_label=Drsenje po strani scroll_vertical.title=Uporabi navpično drsenje scroll_vertical_label=Navpično drsenje scroll_horizontal.title=Uporabi vodoravno drsenje @@ -137,17 +135,24 @@ print_progress_close=Prekliči # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Preklopi stransko vrstico -toggle_sidebar_notification.title=Preklopi stransko vrstico (dokument vsebuje oris/priponke) +toggle_sidebar_notification2.title=Preklopi stransko vrstico (dokument vsebuje oris/priponke/plasti) toggle_sidebar_label=Preklopi stransko vrstico document_outline.title=Prikaži oris dokumenta (dvokliknite za razširitev/strnitev vseh predmetov) document_outline_label=Oris dokumenta attachments.title=Prikaži priponke attachments_label=Priponke +layers.title=Prikaži plasti (dvokliknite za ponastavitev vseh plasti na privzeto stanje) +layers_label=Plasti thumbs.title=Prikaži sličice thumbs_label=Sličice +current_outline_item.title=Najdi trenutni predmet orisa +current_outline_item_label=Trenutni predmet orisa findbar.title=Iskanje po dokumentu findbar_label=Najdi +additional_layers=Dodatne plasti +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Stran {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Najdi naslednjo ponovitev iskanega find_next_label=Najdi naprej find_highlight=Označi vse find_match_case_label=Razlikuj velike/male črke +find_match_diacritics_label=Razlikuj diakritične znake find_entire_word_label=Cele besede find_reached_top=Dosežen začetek dokumenta iz smeri konca find_reached_bottom=Doseženo konec dokumenta iz smeri začetka @@ -220,7 +226,7 @@ page_scale_actual=Dejanska velikost page_scale_percent={{scale}} % # Loading indicator messages -loading_error_indicator=Napaka +loading=Nalaganje … loading_error=Med nalaganjem datoteke PDF je prišlo do napake. invalid_file_error=Neveljavna ali pokvarjena datoteka PDF. missing_file_error=Ni datoteke PDF. @@ -243,4 +249,33 @@ password_cancel=Prekliči printing_not_supported=Opozorilo: ta brskalnik ne podpira vseh možnosti tiskanja. printing_not_ready=Opozorilo: PDF ni v celoti naložen za tiskanje. web_fonts_disabled=Spletne pisave so onemogočene: vgradnih pisav za PDF ni mogoče uporabiti. -document_colors_not_allowed=Dokumenti PDF ne smejo uporabljati svojih lastnih barv: možnost 'Dovoli stranem uporabo lastnih barv' je v brskalniku onemogočena. + +# Editor +editor_none.title=Onemogoči urejanje pripomb +editor_none_label=Onemogoči urejanje +editor_free_text.title=Dodaj opombo FreeText +editor_free_text_label=Opomba FreeText +editor_ink.title=Dodaj opombo z rokopisom +editor_ink_label=Opomba z rokopisom + +freetext_default_content=Vnesite besedilo … + +free_text_default_content=Vnesite besedilo … + +# Editor Parameters +editor_free_text_font_color=Barva pisave +editor_free_text_font_size=Velikost pisave +editor_ink_line_color=Barva črte +editor_ink_line_thickness=Debelina črte + +# Editor Parameters +editor_free_text_color=Barva +editor_free_text_size=Velikost +editor_ink_color=Barva +editor_ink_thickness=Debelina +editor_ink_opacity=Neprosojnost + +# Editor aria +editor_free_text_aria_label=Urejevalnik FreeText +editor_ink_aria_label=Urejevalnik s črnilom +editor_ink_canvas_aria_label=Uporabnikova slika diff --git a/addons/web/static/lib/pdfjs/web/locale/son/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/son/viewer.properties index f5c1b46f5e5..bd5e5ac7edd 100644 --- a/addons/web/static/lib/pdfjs/web/locale/son/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/son/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Sohõ gunaroo tools.title=Goyjinawey tools_label=Goyjinawey first_page.title=Koy moo jinaa ga -first_page.label=Koy moo jinaa ga first_page_label=Koy moo jinaa ga last_page.title=Koy moo koraa ga -last_page.label=Koy moo koraa ga last_page_label=Koy moo koraa ga page_rotate_cw.title=Kuubi kanbe guma here -page_rotate_cw.label=Kuubi kanbe guma here page_rotate_cw_label=Kuubi kanbe guma here page_rotate_ccw.title=Kuubi kanbe wowa here -page_rotate_ccw.label=Kuubi kanbe wowa here page_rotate_ccw_label=Kuubi kanbe wowa here @@ -97,7 +93,6 @@ print_progress_close=Naŋ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Kanjari ceraw zuu -toggle_sidebar_notification.title=Kanjari ceraw-zuu (takaddaa goo nda filla-boŋ/hangandiyaŋ) toggle_sidebar_label=Kanjari ceraw zuu document_outline.title=Takaddaa korfur alhaaloo cebe (naagu cee hinka ka haya-izey kul hayandi/kankamandi) document_outline_label=Takadda filla-boŋ @@ -157,8 +152,6 @@ page_scale_actual=Adadu cimi # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Firka loading_error=Firka bangay kaŋ PDF goo ma zumandi. invalid_file_error=PDF tuku laala wala laybante. missing_file_error=PDF tuku kumante. @@ -177,4 +170,3 @@ password_cancel=Naŋ printing_not_supported=Yaamar: Karyan ši tee ka timme nda ceecikaa woo. printing_not_ready=Yaamar: PDF ši zunbu ka timme karyan še. web_fonts_disabled=Interneti šigirawey kay: ši hin ka goy nda PDF šigira hurantey. -document_colors_not_allowed=PDF takaddawey ši duu fondo ka ngey boŋ noonawey zaa: “Naŋ moɲey ma ngey boŋ noonawey suuba” ši dira ceecikaa ga. diff --git a/addons/web/static/lib/pdfjs/web/locale/sq/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/sq/viewer.properties index 153ab56e9cc..3ff4e4d249e 100644 --- a/addons/web/static/lib/pdfjs/web/locale/sq/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/sq/viewer.properties @@ -28,9 +28,9 @@ of_pages=nga {{pagesCount}} gjithsej # respectively a number representing the total number of pages in the document. page_of_pages=({{pageNumber}} nga {{pagesCount}}) -zoom_out.title=Zvogëlim -zoom_out_label=Zvogëlojini -zoom_in.title=Zmadhim +zoom_out.title=Zvogëlojeni +zoom_out_label=Zvogëlojeni +zoom_in.title=Zmadhojeni zoom_in_label=Zmadhojini zoom.title=Zoom presentation_mode.title=Kalo te Mënyra Paraqitje @@ -48,16 +48,12 @@ bookmark_label=Pamja e Tanishme tools.title=Mjete tools_label=Mjete first_page.title=Kaloni te Faqja e Parë -first_page.label=Kaloni te Faqja e Parë first_page_label=Kaloni te Faqja e Parë last_page.title=Kaloni te Faqja e Fundit -last_page.label=Kaloni te Faqja e Fundit last_page_label=Kaloni te Faqja e Fundit page_rotate_cw.title=Rrotullojeni Në Kahun Orar -page_rotate_cw.label=Rrotulloje Në Kahun Orar page_rotate_cw_label=Rrotulloje Në Kahun Orar page_rotate_ccw.title=Rrotullojeni Në Kahun Kundërorar -page_rotate_ccw.label=Rrotulloje Në Kahun Kundërorar page_rotate_ccw_label=Rrotulloje Në Kahun Kundërorar cursor_text_select_tool.title=Aktivizo Mjet Përzgjedhjeje Teksti @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Mjet Përzgjedhjeje Teksti cursor_hand_tool.title=Aktivizo Mjetin Dorë cursor_hand_tool_label=Mjeti Dorë +scroll_page.title=Përdor Rrëshqitje Në Faqe +scroll_page_label=Rrëshqitje Në Faqe scroll_vertical.title=Përdor Rrëshqitje Vertikale scroll_vertical_label=Rrëshqitje Vertikale scroll_horizontal.title=Përdor Rrëshqitje Horizontale @@ -98,7 +96,7 @@ document_properties_producer=Prodhues PDF-je: document_properties_version=Version PDF-je: document_properties_page_count=Numër Faqesh: document_properties_page_size=Madhësi Faqeje: -document_properties_page_size_unit_inches=in +document_properties_page_size_unit_inches=inç document_properties_page_size_unit_millimeters=mm document_properties_page_size_orientation_portrait=portret document_properties_page_size_orientation_landscape=së gjeri @@ -116,6 +114,7 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) # LOCALIZATION NOTE (document_properties_linearized): The linearization status of # the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Parje e Shpjetë në Web: document_properties_linearized_yes=Po document_properties_linearized_no=Jo document_properties_close=Mbylleni @@ -130,17 +129,24 @@ print_progress_close=Anuloje # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Shfaqni/Fshihni Anështyllën -toggle_sidebar_notification.title=Shfaqni Anështyllën (dokumenti përmban përvijim/bashkëngjitje) +toggle_sidebar_notification2.title=Hap/Mbyll Anështylë (dokumenti përmban përvijim/nashkëngjitje/shtresa) toggle_sidebar_label=Shfaq/Fshih Anështyllën document_outline.title=Shfaqni Përvijim Dokumenti (dyklikoni që të shfaqen/fshihen krejt elementët) document_outline_label=Përvijim Dokumenti attachments.title=Shfaqni Bashkëngjitje attachments_label=Bashkëngjitje +layers.title=Shfaq Shtresa (dyklikoni që të rikthehen krejt shtresat në gjendjen e tyre parazgjedhje) +layers_label=Shtresa thumbs.title=Shfaqni Miniatura thumbs_label=Miniatura +current_outline_item.title=Gjej Objektin e Tanishëm të Përvijuar +current_outline_item_label=Objekt i Tanishëm i Përvijuar findbar.title=Gjeni në Dokument findbar_label=Gjej +additional_layers=Shtresa Shtesë +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Faqja {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -150,7 +156,7 @@ thumb_page_title=Faqja {{page}} thumb_page_canvas=Miniaturë e Faqes {{page}} # Find panel button title and messages -find_input.title=Gjeje +find_input.title=Gjej find_input.placeholder=Gjeni në dokument… find_previous.title=Gjeni hasjen e mëparshme të togfjalëshit find_previous_label=E mëparshmja @@ -213,7 +219,7 @@ page_scale_actual=Madhësia Faktike page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Gabim +loading=Po ngarkohet… loading_error=Ndodhi një gabim gjatë ngarkimit të PDF-së. invalid_file_error=Kartelë PDF e pavlefshme ose e dëmtuar. missing_file_error=Kartelë PDF që mungon. @@ -236,4 +242,3 @@ password_cancel=Anuloje printing_not_supported=Kujdes: Shtypja s’mbulohet plotësisht nga ky shfletues. printing_not_ready=Kujdes: PDF-ja s’është ngarkuar plotësisht që ta shtypni. web_fonts_disabled=Shkronjat Web janë të çaktivizuara: s’arrihet të përdoren shkronja të trupëzuara në PDF. -document_colors_not_allowed=Dokumenteve PDF s’u lejohet të përdorin ngjyrat e tyre: 'Lejoji faqet t’i zgjedhin vetë ngjyrat' është e çaktivizuar te shfletuesi. diff --git a/addons/web/static/lib/pdfjs/web/locale/sr/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/sr/viewer.properties index 1b43b567e7e..3f38aebd038 100644 --- a/addons/web/static/lib/pdfjs/web/locale/sr/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/sr/viewer.properties @@ -41,23 +41,19 @@ print.title=Штампај print_label=Штампај download.title=Преузми download_label=Преузми -bookmark.title=Тренутни приказ (копирај или отвори нови прозор) +bookmark.title=Тренутни приказ (копирај или отвори у новом прозору) bookmark_label=Тренутни приказ # Secondary toolbar and context menu tools.title=Алатке tools_label=Алатке first_page.title=Иди на прву страницу -first_page.label=Иди на прву страницу first_page_label=Иди на прву страницу last_page.title=Иди на последњу страницу -last_page.label=Иди на последњу страницу last_page_label=Иди на последњу страницу page_rotate_cw.title=Ротирај у смеру казаљке на сату -page_rotate_cw.label=Ротирај у смеру казаљке на сату page_rotate_cw_label=Ротирај у смеру казаљке на сату page_rotate_ccw.title=Ротирај у смеру супротном од казаљке на сату -page_rotate_ccw.label=Ротирај у смеру супротном од казаљке на сату page_rotate_ccw_label=Ротирај у смеру супротном од казаљке на сату cursor_text_select_tool.title=Омогући алат за селектовање текста @@ -137,17 +133,24 @@ print_progress_close=Откажи # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Прикажи додатну палету -toggle_sidebar_notification.title=Прикажи додатну траку (докуменат садржи оквире/прилоге) +toggle_sidebar_notification2.title=Прикажи/сакриј бочну траку (документ садржи контуру/прилоге/слојеве) toggle_sidebar_label=Прикажи додатну палету -document_outline.title=Прикажи контуру документа (дупли клик за проширење/скупљање елемената) +document_outline.title=Прикажи структуру документа (двоструким кликом проширујете/скупљате све ставке) document_outline_label=Контура документа attachments.title=Прикажи прилоге attachments_label=Прилози +layers.title=Прикажи слојеве (дупли клик за враћање свих слојева у подразумевано стање) +layers_label=Слојеви thumbs.title=Прикажи сличице thumbs_label=Сличице +current_outline_item.title=Пронађите тренутни елемент структуре +current_outline_item_label=Тренутна контура findbar.title=Пронађи у документу findbar_label=Пронађи +additional_layers=Додатни слојеви +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Страница {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -159,14 +162,36 @@ thumb_page_canvas=Сличица од странице {{page}} # Find panel button title and messages find_input.title=Пронађи find_input.placeholder=Пронађи у документу… -find_previous.title=Пронађи претходну појаву фразе +find_previous.title=Пронађи претходно појављивање фразе find_previous_label=Претходна -find_next.title=Пронађи следећу појаву фразе +find_next.title=Пронађи следеће појављивање фразе find_next_label=Следећа find_highlight=Истакнути све find_match_case_label=Подударања +find_entire_word_label=Целе речи find_reached_top=Достигнут врх документа, наставио са дна find_reached_bottom=Достигнуто дно документа, наставио са врха +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} од {{total}} одговара +find_match_count[two]={{current}} од {{total}} одговара +find_match_count[few]={{current}} од {{total}} одговара +find_match_count[many]={{current}} од {{total}} одговара +find_match_count[other]={{current}} од {{total}} одговара +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Више од {{limit}} одговара +find_match_count_limit[one]=Више од {{limit}} одговара +find_match_count_limit[two]=Више од {{limit}} одговара +find_match_count_limit[few]=Више од {{limit}} одговара +find_match_count_limit[many]=Више од {{limit}} одговара +find_match_count_limit[other]=Више од {{limit}} одговара find_not_found=Фраза није пронађена # Error panel labels @@ -198,12 +223,16 @@ page_scale_actual=Стварна величина page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Грешка +loading=Учитавање… loading_error=Дошло је до грешке приликом учитавања PDF-а. -invalid_file_error=PDF датотека је оштећена или је неисправна. -missing_file_error=PDF датотека није пронађена. +invalid_file_error=PDF датотека је неважећа или је оштећена. +missing_file_error=Недостаје PDF датотека. unexpected_response_error=Неочекиван одговор од сервера. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -217,4 +246,10 @@ password_cancel=Откажи printing_not_supported=Упозорење: Штампање није у потпуности подржано у овом прегледачу. printing_not_ready=Упозорење: PDF није у потпуности учитан за штампу. web_fonts_disabled=Веб фонтови су онемогућени: не могу користити уграђене PDF фонтове. -document_colors_not_allowed=PDF документи не могу да користе сопствене боје: “Дозволи страницама да изаберу своје боје” је деактивирано у прегледачу. + +# Editor + + + +# Editor Parameters +editor_free_text_font_size=Величина фонта diff --git a/addons/web/static/lib/pdfjs/web/locale/sv-SE/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/sv-SE/viewer.properties index b1b60bd404c..94c0774349d 100644 --- a/addons/web/static/lib/pdfjs/web/locale/sv-SE/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/sv-SE/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Aktuell vy tools.title=Verktyg tools_label=Verktyg first_page.title=Gå till första sidan -first_page.label=Gå till första sidan first_page_label=Gå till första sidan last_page.title=Gå till sista sidan -last_page.label=Gå till sista sidan last_page_label=Gå till sista sidan page_rotate_cw.title=Rotera medurs -page_rotate_cw.label=Rotera medurs page_rotate_cw_label=Rotera medurs page_rotate_ccw.title=Rotera moturs -page_rotate_ccw.label=Rotera moturs page_rotate_ccw_label=Rotera moturs cursor_text_select_tool.title=Aktivera textmarkeringsverktyg @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Textmarkeringsverktyg cursor_hand_tool.title=Aktivera handverktyg cursor_hand_tool_label=Handverktyg +scroll_page.title=Använd sidrullning +scroll_page_label=Sidrullning scroll_vertical.title=Använd vertikal rullning scroll_vertical_label=Vertikal rullning scroll_horizontal.title=Använd horisontell rullning @@ -137,17 +135,24 @@ print_progress_close=Avbryt # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Visa/dölj sidofält -toggle_sidebar_notification.title=Visa/dölj sidofält (dokument innehåller översikt/bilagor) +toggle_sidebar_notification2.title=Växla sidofält (dokumentet innehåller dokumentstruktur/bilagor/lager) toggle_sidebar_label=Visa/dölj sidofält document_outline.title=Visa dokumentdisposition (dubbelklicka för att expandera/komprimera alla objekt) document_outline_label=Dokumentöversikt attachments.title=Visa Bilagor attachments_label=Bilagor +layers.title=Visa lager (dubbelklicka för att återställa alla lager till standardläge) +layers_label=Lager thumbs.title=Visa miniatyrer thumbs_label=Miniatyrer +current_outline_item.title=Hitta aktuellt dispositionsobjekt +current_outline_item_label=Aktuellt dispositionsobjekt findbar.title=Sök i dokument findbar_label=Sök +additional_layers=Ytterligare lager +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Sida {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Hitta nästa förekomst av frasen find_next_label=Nästa find_highlight=Markera alla find_match_case_label=Matcha versal/gemen +find_match_diacritics_label=Matcha diakritiska tecken find_entire_word_label=Hela ord find_reached_top=Nådde början av dokumentet, började från slutet find_reached_bottom=Nådde slutet på dokumentet, började från början @@ -220,7 +226,7 @@ page_scale_actual=Verklig storlek page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Fel +loading=Laddar… loading_error=Ett fel uppstod vid laddning av PDF-filen. invalid_file_error=Ogiltig eller korrupt PDF-fil. missing_file_error=Saknad PDF-fil. @@ -243,4 +249,33 @@ password_cancel=Avbryt printing_not_supported=Varning: Utskrifter stöds inte helt av den här webbläsaren. printing_not_ready=Varning: PDF:en är inte klar för utskrift. web_fonts_disabled=Webbtypsnitt är inaktiverade: kan inte använda inbäddade PDF-typsnitt. -document_colors_not_allowed=PDF-dokument tillåts inte använda egna färger: “Låt sidor använda egna färger” är inaktiverat i webbläsaren. + +# Editor +editor_none.title=Inaktivera redigering av anteckningar +editor_none_label=Inaktivera redigering +editor_free_text.title=Lägg till FreeText-kommentar +editor_free_text_label=FreeText-kommentar +editor_ink.title=Lägg till bläckanteckning +editor_ink_label=Bläckanteckning + +freetext_default_content=Skriv in lite text… + +free_text_default_content=Ange text… + +# Editor Parameters +editor_free_text_font_color=Textfärg +editor_free_text_font_size=Textstorlek +editor_ink_line_color=Linjefärg +editor_ink_line_thickness=Linjetjocklek + +# Editor Parameters +editor_free_text_color=Färg +editor_free_text_size=Storlek +editor_ink_color=Färg +editor_ink_thickness=Tjocklek +editor_ink_opacity=Opacitet + +# Editor aria +editor_free_text_aria_label=FreeText-redigerare +editor_ink_aria_label=Ink-redigerare +editor_ink_canvas_aria_label=Användarskapad bild diff --git a/addons/web/static/lib/pdfjs/web/locale/sw/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/sw/viewer.properties deleted file mode 100644 index 9ec4e2160a7..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/sw/viewer.properties +++ /dev/null @@ -1,128 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Ukurasa Uliotangulia -previous_label=Iliyotangulia -next.title=Ukurasa Ufuatao -next_label=Ifuatayo - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom_out.title=Kuza Nje -zoom_out_label=Kuza Nje -zoom_in.title=Kuza Ndani -zoom_in_label=Kuza Ndani -zoom.title=Kuza -presentation_mode.title=Badili kwa Hali ya Uwasilishaji -presentation_mode_label=Hali ya Uwasilishaji -open_file.title=Fungua Faili -open_file_label=Fungua -print.title=Chapisha -print_label=Chapisha -download.title=Pakua -download_label=Pakua -bookmark.title=Mwonekano wa sasa (nakili au ufungue katika dirisha mpya) -bookmark_label=Mwonekano wa Sasa - -# Secondary toolbar and context menu - - -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Kichwa: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Kibiano cha Upau wa Kando -toggle_sidebar_label=Kibiano cha Upau wa Kando -document_outline_label=Ufupisho wa Waraka -thumbs.title=Onyesha Kijipicha -thumbs_label=Vijipicha -findbar.title=Pata katika Waraka - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Ukurasa {{ukurasa}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Kijipicha cha ukurasa {{ukurasa}} - -# Find panel button title and messages -find_previous.title=Tafuta tukio kabla ya msemo huu -find_previous_label=Iliyotangulia -find_next.title=Tafuta tukio linalofuata la msemo -find_next_label=Ifuatayo -find_highlight=Angazia yote -find_match_case_label=Linganisha herufi -find_reached_top=Imefika juu ya waraka, imeendelea kutoka chini -find_reached_bottom=Imefika mwisho wa waraka, imeendelea kutoka juu -find_not_found=Msemo hukupatikana - -# Error panel labels -error_more_info=Maelezo Zaidi -error_less_info=Maelezo Kidogo -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (jenga: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Ujumbe: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Panganya: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Faili: {{faili}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Laini: {{laini}} -rendering_error=Hitilafu lilitokea wajati wa kutoa ukurasa - -# Predefined zoom values -page_scale_width=Upana wa Ukurasa -page_scale_fit=Usawa wa Ukurasa -page_scale_auto=Ukuzaji wa Kiotomatiki -page_scale_actual=Ukubwa Halisi -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Hitilafu -loading_error=Hitilafu lilitokea wakati wa kupakia PDF. -invalid_file_error=Faili ya PDF isiyohalali au potofu. -missing_file_error=Faili ya PDF isiyopo. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Ufafanuzi] -password_ok=SAWA - -printing_not_supported=Onyo: Uchapishaji hauauniwi kabisa kwa kivinjari hiki. -web_fonts_disabled=Fonti za tovuti zimelemazwa: haziwezi kutumia fonti za PDF zilizopachikwa. diff --git a/addons/web/static/lib/pdfjs/web/locale/szl/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/szl/viewer.properties new file mode 100644 index 00000000000..6706afc349e --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/locale/szl/viewer.properties @@ -0,0 +1,244 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Piyrwyjszo strōna +previous_label=Piyrwyjszo +next.title=Nastympno strōna +next_label=Dalij + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Strōna +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=ze {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} ze {{pagesCount}}) + +zoom_out.title=Zmyńsz +zoom_out_label=Zmyńsz +zoom_in.title=Zwiynksz +zoom_in_label=Zwiynksz +zoom.title=Srogość +presentation_mode.title=Przełōncz na tryb prezyntacyje +presentation_mode_label=Tryb prezyntacyje +open_file.title=Ôdewrzij zbiōr +open_file_label=Ôdewrzij +print.title=Durkuj +print_label=Durkuj +download.title=Pobier +download_label=Pobier +bookmark.title=Aktualny widok (kopiuj abo ôdewrzij w nowym ôknie) +bookmark_label=Aktualny widok + +# Secondary toolbar and context menu +tools.title=Noczynia +tools_label=Noczynia +first_page.title=Idź ku piyrszyj strōnie +first_page_label=Idź ku piyrszyj strōnie +last_page.title=Idź ku ôstatnij strōnie +last_page_label=Idź ku ôstatnij strōnie +page_rotate_cw.title=Zwyrtnij w prawo +page_rotate_cw_label=Zwyrtnij w prawo +page_rotate_ccw.title=Zwyrtnij w lewo +page_rotate_ccw_label=Zwyrtnij w lewo + +cursor_text_select_tool.title=Załōncz noczynie ôbiyranio tekstu +cursor_text_select_tool_label=Noczynie ôbiyranio tekstu +cursor_hand_tool.title=Załōncz noczynie rōnczka +cursor_hand_tool_label=Noczynie rōnczka + +scroll_vertical.title=Używej piōnowego przewijanio +scroll_vertical_label=Piōnowe przewijanie +scroll_horizontal.title=Używej poziōmego przewijanio +scroll_horizontal_label=Poziōme przewijanie +scroll_wrapped.title=Używej szichtowego przewijanio +scroll_wrapped_label=Szichtowe przewijanie + +spread_none.title=Niy dowej strōn w widoku po dwie +spread_none_label=Po jednyj strōnie +spread_odd.title=Pokoż strōny po dwie; niyporziste po lewyj +spread_odd_label=Niyporziste po lewyj +spread_even.title=Pokoż strōny po dwie; porziste po lewyj +spread_even_label=Porziste po lewyj + +# Document properties dialog box +document_properties.title=Włosności dokumyntu… +document_properties_label=Włosności dokumyntu… +document_properties_file_name=Miano zbioru: +document_properties_file_size=Srogość zbioru: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} B) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} B) +document_properties_title=Tytuł: +document_properties_author=Autōr: +document_properties_subject=Tymat: +document_properties_keywords=Kluczowe słowa: +document_properties_creation_date=Data zrychtowanio: +document_properties_modification_date=Data zmiany: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Zrychtowane ôd: +document_properties_producer=PDF ôd: +document_properties_version=Wersyjo PDF: +document_properties_page_count=Wielość strōn: +document_properties_page_size=Srogość strōny: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=piōnowo +document_properties_page_size_orientation_landscape=poziōmo +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Gibki necowy podglōnd: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Niy +document_properties_close=Zawrzij + +print_progress_message=Rychtowanie dokumyntu do durku… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Pociep + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Przełōncz posek na rancie +toggle_sidebar_notification2.title=Przełōncz posek na rancie (dokumynt mo struktura/przidowki/warstwy) +toggle_sidebar_label=Przełōncz posek na rancie +document_outline.title=Pokoż struktura dokumyntu (tuplowane klikniyncie rozszyrzo/swijo wszyskie elymynta) +document_outline_label=Struktura dokumyntu +attachments.title=Pokoż przidowki +attachments_label=Przidowki +layers.title=Pokoż warstwy (tuplowane klikniyncie resetuje wszyskie warstwy do bazowego stanu) +layers_label=Warstwy +thumbs.title=Pokoż miniatury +thumbs_label=Miniatury +findbar.title=Znojdź w dokumyncie +findbar_label=Znojdź + +additional_layers=Nadbytnie warstwy +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Strōna {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura strōny {{page}} + +# Find panel button title and messages +find_input.title=Znojdź +find_input.placeholder=Znojdź w dokumyncie… +find_previous.title=Znojdź piyrwyjsze pokozanie sie tyj frazy +find_previous_label=Piyrwyjszo +find_next.title=Znojdź nastympne pokozanie sie tyj frazy +find_next_label=Dalij +find_highlight=Zaznacz wszysko +find_match_case_label=Poznowej srogość liter +find_entire_word_label=Cołke słowa +find_reached_top=Doszło do samego wiyrchu strōny, dalij ôd spodku +find_reached_bottom=Doszło do samego spodku strōny, dalij ôd wiyrchu +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} ze {{total}}, co pasujōm +find_match_count[two]={{current}} ze {{total}}, co pasujōm +find_match_count[few]={{current}} ze {{total}}, co pasujōm +find_match_count[many]={{current}} ze {{total}}, co pasujōm +find_match_count[other]={{current}} ze {{total}}, co pasujōm +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(total) ]} +find_match_count_limit[zero]=Wiyncyj jak {{limit}}, co pasujōm +find_match_count_limit[one]=Wiyncyj jak {{limit}}, co pasuje +find_match_count_limit[two]=Wiyncyj jak {{limit}}, co pasujōm +find_match_count_limit[few]=Wiyncyj jak {{limit}}, co pasujōm +find_match_count_limit[many]=Wiyncyj jak {{limit}}, co pasujōm +find_match_count_limit[other]=Wiyncyj jak {{limit}}, co pasujōm +find_not_found=Fraza niy znaleziōno + +# Error panel labels +error_more_info=Wiyncyj informacyji +error_less_info=Mynij informacyji +error_close=Zawrzij +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Wiadōmość: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Sztapel: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Zbiōr: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linijo: {{line}} +rendering_error=Przi renderowaniu strōny pokozoł sie feler. + +# Predefined zoom values +page_scale_width=Szyrzka strōny +page_scale_fit=Napasowanie strōny +page_scale_auto=Autōmatyczno srogość +page_scale_actual=Aktualno srogość +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=Przi ladowaniu PDFa pokozoł sie feler. +invalid_file_error=Zły abo felerny zbiōr PDF. +missing_file_error=Chybio zbioru PDF. +unexpected_response_error=Niyôczekowano ôdpowiydź serwera. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotacyjo typu {{type}}] +password_label=Wkludź hasło, coby ôdewrzić tyn zbiōr PDF. +password_invalid=Hasło je złe. Sprōbuj jeszcze roz. +password_ok=OK +password_cancel=Pociep + +printing_not_supported=Pozōr: Ta przeglōndarka niy cołkiym ôbsuguje durk. +printing_not_ready=Pozōr: Tyn PDF niy ma za tela zaladowany do durku. +web_fonts_disabled=Necowe fōnty sōm zastawiōne: niy idzie użyć wkludzōnych fōntōw PDF. diff --git a/addons/web/static/lib/pdfjs/web/locale/ta-LK/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ta-LK/viewer.properties deleted file mode 100644 index f0b1f43e03a..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/ta-LK/viewer.properties +++ /dev/null @@ -1,77 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom.title=அளவு -open_file.title=கோப்பினைத் திறக்க -open_file_label=திறக்க - -# Secondary toolbar and context menu - - -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. - -# Find panel button title and messages -find_previous.title=இந்த சொற்றொடரின் முன்னைய நிகழ்வை தேடு -find_next.title=இந்த சொற்றொடரின் அடுத்த நிகழ்வைத் தேடு - -# Error panel labels -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number - -# Predefined zoom values -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_ok=ஆம் - diff --git a/addons/web/static/lib/pdfjs/web/locale/ta/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ta/viewer.properties index 19a8de432a6..d07a337d0cb 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ta/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ta/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=தற்போதைய காட்சி tools.title=கருவிகள் tools_label=கருவிகள் first_page.title=முதல் பக்கத்திற்கு செல்லவும் -first_page.label=முதல் பக்கத்திற்கு செல்லவும் first_page_label=முதல் பக்கத்திற்கு செல்லவும் last_page.title=கடைசி பக்கத்திற்கு செல்லவும் -last_page.label=கடைசி பக்கத்திற்கு செல்லவும் last_page_label=கடைசி பக்கத்திற்கு செல்லவும் page_rotate_cw.title=வலஞ்சுழியாக சுழற்று -page_rotate_cw.label=வலஞ்சுழியாக சுழற்று page_rotate_cw_label=வலஞ்சுழியாக சுழற்று page_rotate_ccw.title=இடஞ்சுழியாக சுழற்று -page_rotate_ccw.label=இடஞ்சுழியாக சுழற்று page_rotate_ccw_label=இடஞ்சுழியாக சுழற்று cursor_text_select_tool.title=உரைத் தெரிவு கருவியைச் செயல்படுத்து @@ -118,7 +114,6 @@ print_progress_close=ரத்து # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=பக்கப் பட்டியை நிலைமாற்று -toggle_sidebar_notification.title=பக்கப்பட்டையை நிலைமாற்று (வெளிக்கோடு/இணைப்புகளை ஆவணம் கொண்டுள்ளது) toggle_sidebar_label=பக்கப் பட்டியை நிலைமாற்று document_outline.title=ஆவண அடக்கத்தைக் காட்டு (இருமுறைச் சொடுக்கி அனைத்து உறுப்பிடிகளையும் விரி/சேர்) document_outline_label=ஆவண வெளிவரை @@ -178,8 +173,6 @@ page_scale_actual=உண்மையான அளவு # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=பிழை loading_error=PDF ஐ ஏற்றும் போது ஒரு பிழை ஏற்பட்டது. invalid_file_error=செல்லுபடியாகாத அல்லது சிதைந்த PDF கோப்பு. missing_file_error=PDF கோப்பு காணவில்லை. @@ -198,4 +191,3 @@ password_cancel=ரத்து printing_not_supported=எச்சரிக்கை: இந்த உலாவி அச்சிடுதலை முழுமையாக ஆதரிக்கவில்லை. printing_not_ready=எச்சரிக்கை: PDF அச்சிட முழுவதுமாக ஏற்றப்படவில்லை. web_fonts_disabled=வலை எழுத்துருக்கள் முடக்கப்பட்டுள்ளன: உட்பொதிக்கப்பட்ட PDF எழுத்துருக்களைப் பயன்படுத்த முடியவில்லை. -document_colors_not_allowed=PDF ஆவணங்களுக்குச் சொந்த நிறங்களைப் பயன்படுத்த அனுமதியில்லை: உலாவியில் "பக்கங்கள் தங்கள் சொந்த நிறங்களைத் தேர்வு செய்துகொள்ள அனுமதி" என்னும் விருப்பம் முடக்கப்பட்டுள்ளது. diff --git a/addons/web/static/lib/pdfjs/web/locale/te/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/te/viewer.properties index 56f954d43c4..6cd691a01af 100644 --- a/addons/web/static/lib/pdfjs/web/locale/te/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/te/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=ప్రస్తుత దర్శనం tools.title=పనిముట్లు tools_label=పనిముట్లు first_page.title=మొదటి పేజీకి వెళ్ళు -first_page.label=మొదటి పేజీకి వెళ్ళు first_page_label=మొదటి పేజీకి వెళ్ళు last_page.title=చివరి పేజీకి వెళ్ళు -last_page.label=చివరి పేజీకి వెళ్ళు last_page_label=చివరి పేజీకి వెళ్ళు page_rotate_cw.title=సవ్యదిశలో తిప్పు -page_rotate_cw.label=సవ్యదిశలో తిప్పు page_rotate_cw_label=సవ్యదిశలో తిప్పు page_rotate_ccw.title=అపసవ్యదిశలో తిప్పు -page_rotate_ccw.label=అపసవ్యదిశలో తిప్పు page_rotate_ccw_label=అపసవ్యదిశలో తిప్పు cursor_text_select_tool.title=టెక్స్ట్ ఎంపిక సాధనాన్ని ప్రారంభించండి @@ -130,11 +126,13 @@ document_outline.title=పత్రము రూపము చూపించు document_outline_label=పత్రము అవుట్‌లైన్ attachments.title=అనుబంధాలు చూపు attachments_label=అనుబంధాలు +layers_label=పొరలు thumbs.title=థంబ్‌నైల్స్ చూపు thumbs_label=థంబ్‌నైల్స్ findbar.title=పత్రములో కనుగొనుము findbar_label=కనుగొను +additional_layers=అదనపు పొరలు # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -195,8 +193,6 @@ page_scale_actual=యథార్ధ పరిమాణం # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=దోషం loading_error=PDF లోడవుచున్నప్పుడు ఒక దోషం ఎదురైంది. invalid_file_error=చెల్లని లేదా పాడైన PDF ఫైలు. missing_file_error=దొరకని PDF ఫైలు. @@ -219,4 +215,3 @@ password_cancel=రద్దుచేయి printing_not_supported=హెచ్చరిక: ఈ విహారిణి చేత ముద్రణ పూర్తిగా తోడ్పాటు లేదు. printing_not_ready=హెచ్చరిక: ముద్రణ కొరకు ఈ PDF పూర్తిగా లోడవలేదు. web_fonts_disabled=వెబ్ ఫాంట్లు అచేతనించబడెను: ఎంబెడెడ్ PDF ఫాంట్లు ఉపయోగించలేక పోయింది. -document_colors_not_allowed=PDF పత్రాలు వాటి స్వంత రంగులను ఉపయోగించుకొనుటకు అనుమతించబడవు: విహరణి నందు “పేజీలను వాటి స్వంత రంగులను ఎంచుకొనుటకు అనుమతించు” అచేతనం చేయబడివుంది. diff --git a/addons/web/static/lib/pdfjs/web/locale/tg/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/tg/viewer.properties new file mode 100644 index 00000000000..cac20477423 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/locale/tg/viewer.properties @@ -0,0 +1,281 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Саҳифаи қаблӣ +previous_label=Қаблӣ +next.title=Саҳифаи навбатӣ +next_label=Навбатӣ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Саҳифа +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=аз {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} аз {{pagesCount}}) + +zoom_out.title=Хурд кардан +zoom_out_label=Хурд кардан +zoom_in.title=Калон кардан +zoom_in_label=Калон кардан +zoom.title=Танзими андоза +presentation_mode.title=Гузариш ба реҷаи тақдим +presentation_mode_label=Реҷаи тақдим +open_file.title=Кушодани файл +open_file_label=Кушодан +print.title=Чоп кардан +print_label=Чоп кардан +download.title=Боргирӣ кардан +download_label=Боргирӣ кардан +bookmark.title=Намуди ҷорӣ (нусха бардоштан ё кушодан дар равзанаи нав) +bookmark_label=Намуди ҷорӣ + +# Secondary toolbar and context menu +tools.title=Абзорҳо +tools_label=Абзорҳо +first_page.title=Ба саҳифаи аввал гузаред +first_page_label=Ба саҳифаи аввал гузаред +last_page.title=Ба саҳифаи охирин гузаред +last_page_label=Ба саҳифаи охирин гузаред +page_rotate_cw.title=Ба самти ҳаракати ақрабаки соат давр задан +page_rotate_cw_label=Ба самти ҳаракати ақрабаки соат давр задан +page_rotate_ccw.title=Ба муқобили самти ҳаракати ақрабаки соат давр задан +page_rotate_ccw_label=Ба муқобили самти ҳаракати ақрабаки соат давр задан + +cursor_text_select_tool.title=Фаъол кардани «Абзори интихоби матн» +cursor_text_select_tool_label=Абзори интихоби матн +cursor_hand_tool.title=Фаъол кардани «Абзори даст» +cursor_hand_tool_label=Абзори даст + +scroll_page.title=Истифодаи варақзанӣ +scroll_page_label=Варақзанӣ +scroll_vertical.title=Истифодаи варақзании амудӣ +scroll_vertical_label=Варақзании амудӣ +scroll_horizontal.title=Истифодаи варақзании уфуқӣ +scroll_horizontal_label=Варақзании уфуқӣ +scroll_wrapped.title=Истифодаи варақзании миқёсбандӣ +scroll_wrapped_label=Варақзании миқёсбандӣ + +spread_none.title=Густариши саҳифаҳо истифода бурда нашавад +spread_none_label=Бе густурдани саҳифаҳо +spread_odd.title=Густариши саҳифаҳо аз саҳифаҳо бо рақамҳои тоқ оғоз карда мешавад +spread_odd_label=Саҳифаҳои тоқ аз тарафи чап +spread_even.title=Густариши саҳифаҳо аз саҳифаҳо бо рақамҳои ҷуфт оғоз карда мешавад +spread_even_label=Саҳифаҳои ҷуфт аз тарафи чап + +# Document properties dialog box +document_properties.title=Хусусиятҳои ҳуҷҷат… +document_properties_label=Хусусиятҳои ҳуҷҷат… +document_properties_file_name=Номи файл: +document_properties_file_size=Андозаи файл: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} КБ ({{size_b}} байт) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} МБ ({{size_b}} байт) +document_properties_title=Сарлавҳа: +document_properties_author=Муаллиф: +document_properties_subject=Мавзуъ: +document_properties_keywords=Калимаҳои калидӣ: +document_properties_creation_date=Санаи эҷод: +document_properties_modification_date=Санаи тағйирот: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Эҷодкунанда: +document_properties_producer=Таҳиякунандаи PDF: +document_properties_version=Версияи PDF: +document_properties_page_count=Шумораи саҳифаҳо: +document_properties_page_size=Андозаи саҳифа: +document_properties_page_size_unit_inches=дюйм +document_properties_page_size_unit_millimeters=мм +document_properties_page_size_orientation_portrait=амудӣ +document_properties_page_size_orientation_landscape=уфуқӣ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Мактуб +document_properties_page_size_name_legal=Ҳуқуқӣ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Намоиши тез дар Интернет: +document_properties_linearized_yes=Ҳа +document_properties_linearized_no=Не +document_properties_close=Пӯшидан + +print_progress_message=Омодасозии ҳуҷҷат барои чоп… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Бекор кардан + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Фаъол кардани навори ҷонибӣ +toggle_sidebar_notification2.title=Фаъол кардани навори ҷонибӣ (ҳуҷҷат дорои сохтор/замимаҳо/қабатҳо мебошад) +toggle_sidebar_label=Фаъол кардани навори ҷонибӣ +document_outline.title=Намоиш додани сохтори ҳуҷҷат (барои баркушодан/пеҷондани ҳамаи унсурҳо дубора зер кунед) +document_outline_label=Сохтори ҳуҷҷат +attachments.title=Намоиш додани замимаҳо +attachments_label=Замимаҳо +layers.title=Намоиш додани қабатҳо (барои барқарор кардани ҳамаи қабатҳо ба вазъияти пешфарз дубора зер кунед) +layers_label=Қабатҳо +thumbs.title=Намоиш додани тасвирчаҳо +thumbs_label=Тасвирчаҳо +current_outline_item.title=Ёфтани унсури сохтори ҷорӣ +current_outline_item_label=Унсури сохтори ҷорӣ +findbar.title=Ёфтан дар ҳуҷҷат +findbar_label=Ёфтан + +additional_layers=Қабатҳои иловагӣ +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Саҳифаи {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Саҳифаи {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Тасвирчаи саҳифаи {{page}} + +# Find panel button title and messages +find_input.title=Ёфтан +find_input.placeholder=Ёфтан дар ҳуҷҷат… +find_previous.title=Ҷустуҷӯи мавриди қаблии ибораи пешниҳодшуда +find_previous_label=Қаблӣ +find_next.title=Ҷустуҷӯи мавриди навбатии ибораи пешниҳодшуда +find_next_label=Навбатӣ +find_highlight=Ҳамаашро бо ранг ҷудо кардан +find_match_case_label=Бо дарназардошти ҳарфҳои хурду калон +find_match_diacritics_label=Бо дарназардошти аломатҳои диакритикӣ +find_entire_word_label=Калимаҳои пурра +find_reached_top=Ба болои ҳуҷҷат расид, аз поён идома ёфт +find_reached_bottom=Ба поёни ҳуҷҷат расид, аз боло идома ёфт +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} аз {{total}} мувофиқат +find_match_count[two]={{current}} аз {{total}} мувофиқат +find_match_count[few]={{current}} аз {{total}} мувофиқат +find_match_count[many]={{current}} аз {{total}} мувофиқат +find_match_count[other]={{current}} аз {{total}} мувофиқат +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Зиёда аз {{limit}} мувофиқат +find_match_count_limit[one]=Зиёда аз {{limit}} мувофиқат +find_match_count_limit[two]=Зиёда аз {{limit}} мувофиқат +find_match_count_limit[few]=Зиёда аз {{limit}} мувофиқат +find_match_count_limit[many]=Зиёда аз {{limit}} мувофиқат +find_match_count_limit[other]=Зиёда аз {{limit}} мувофиқат +find_not_found=Ибора ёфт нашуд + +# Error panel labels +error_more_info=Маълумоти бештар +error_less_info=Маълумоти камтар +error_close=Пӯшидан +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (сохт: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Паём: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Даста: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Файл: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Сатр: {{line}} +rendering_error=Ҳангоми шаклсозии саҳифа хато ба миён омад. + +# Predefined zoom values +page_scale_width=Аз рӯи паҳнои саҳифа +page_scale_fit=Аз рӯи андозаи саҳифа +page_scale_auto=Андозаи худкор +page_scale_actual=Андозаи воқеӣ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Бор шуда истодааст… +loading_error=Ҳангоми боркунии PDF хато ба миён омад. +invalid_file_error=Файли PDF нодуруст ё вайроншуда мебошад. +missing_file_error=Файли PDF ғоиб аст. +unexpected_response_error=Ҷавоби ногаҳон аз сервер. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Ҳошиянависӣ - {{type}}] +password_label=Барои кушодани ин файли PDF ниҳонвожаро ворид кунед. +password_invalid=Ниҳонвожаи нодуруст. Лутфан, аз нав кӯшиш кунед. +password_ok=ХУБ +password_cancel=Бекор кардан + +printing_not_supported=Диққат: Чопкунӣ аз тарафи ин браузер ба таври пурра дастгирӣ намешавад. +printing_not_ready=Диққат: Файли PDF барои чопкунӣ пурра бор карда нашуд. +web_fonts_disabled=Шрифтҳои интернетӣ ғайрифаъоланд: истифодаи шрифтҳои дарунсохти PDF ғайриимкон аст. + +# Editor +editor_none.title=Ғайрифаъол кардани таҳрири ҳошиянависӣ +editor_none_label=Ғайрифаъл кардани таҳрири матн +editor_free_text.title=Илова кардани ҳошиянависии «FreeText» +editor_free_text_label=Ҳошиянависии «FreeText» +editor_ink.title=Илова кардани ҳошиянависии дастнавис +editor_ink_label=Ҳошиянависии дастнавис + +freetext_default_content=Ягон матнро ворид намоед… + +free_text_default_content=Матнро ворид намоед… + +# Editor Parameters +editor_free_text_font_color=Ранги ҳуруф +editor_free_text_font_size=Андозаи ҳуруф +editor_ink_line_color=Ранги сатр +editor_ink_line_thickness=Ғафсии сатр + +# Editor Parameters +editor_free_text_color=Ранг +editor_free_text_size=Андоза +editor_ink_color=Ранг +editor_ink_thickness=Ғафсӣ +editor_ink_opacity=Шаффофӣ + +# Editor aria +editor_free_text_aria_label=Муҳаррири «FreeText» +editor_ink_aria_label=Муҳаррири ранг +editor_ink_canvas_aria_label=Тасвири эҷодкардаи корбар diff --git a/addons/web/static/lib/pdfjs/web/locale/th/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/th/viewer.properties index 34d46147e15..7612bedd45a 100644 --- a/addons/web/static/lib/pdfjs/web/locale/th/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/th/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=มุมมองปัจจุบัน tools.title=เครื่องมือ tools_label=เครื่องมือ first_page.title=ไปยังหน้าแรก -first_page.label=ไปยังหน้าแรก first_page_label=ไปยังหน้าแรก last_page.title=ไปยังหน้าสุดท้าย -last_page.label=ไปยังหน้าสุดท้าย last_page_label=ไปยังหน้าสุดท้าย page_rotate_cw.title=หมุนตามเข็มนาฬิกา -page_rotate_cw.label=หมุนตามเข็มนาฬิกา page_rotate_cw_label=หมุนตามเข็มนาฬิกา page_rotate_ccw.title=หมุนทวนเข็มนาฬิกา -page_rotate_ccw.label=หมุนทวนเข็มนาฬิกา page_rotate_ccw_label=หมุนทวนเข็มนาฬิกา cursor_text_select_tool.title=เปิดใช้งานเครื่องมือการเลือกข้อความ @@ -65,6 +61,8 @@ cursor_text_select_tool_label=เครื่องมือการเลื cursor_hand_tool.title=เปิดใช้งานเครื่องมือมือ cursor_hand_tool_label=เครื่องมือมือ +scroll_page.title=ใช้การเลื่อนหน้า +scroll_page_label=การเลื่อนหน้า scroll_vertical.title=ใช้การเลื่อนแนวตั้ง scroll_vertical_label=การเลื่อนแนวตั้ง scroll_horizontal.title=ใช้การเลื่อนแนวนอน @@ -137,17 +135,24 @@ print_progress_close=ยกเลิก # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=เปิด/ปิดแถบข้าง -toggle_sidebar_notification.title=เปิด/ปิดแถบข้าง (เอกสารมีเค้าร่าง/ไฟล์แนบ) +toggle_sidebar_notification2.title=เปิด/ปิดแถบข้าง (เอกสารมีเค้าร่าง/ไฟล์แนบ/เลเยอร์) toggle_sidebar_label=เปิด/ปิดแถบข้าง document_outline.title=แสดงเค้าร่างเอกสาร (คลิกสองครั้งเพื่อขยาย/ยุบรายการทั้งหมด) document_outline_label=เค้าร่างเอกสาร attachments.title=แสดงไฟล์แนบ attachments_label=ไฟล์แนบ +layers.title=แสดงเลเยอร์ (คลิกสองครั้งเพื่อรีเซ็ตเลเยอร์ทั้งหมดเป็นสถานะเริ่มต้น) +layers_label=เลเยอร์ thumbs.title=แสดงภาพขนาดย่อ thumbs_label=ภาพขนาดย่อ +current_outline_item.title=ค้นหารายการเค้าร่างปัจจุบัน +current_outline_item_label=รายการเค้าร่างปัจจุบัน findbar.title=ค้นหาในเอกสาร findbar_label=ค้นหา +additional_layers=เลเยอร์เพิ่มเติม +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=หน้า {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=หาตำแหน่งถัดไปของวลี find_next_label=ถัดไป find_highlight=เน้นสีทั้งหมด find_match_case_label=ตัวพิมพ์ใหญ่เล็กตรงกัน +find_match_diacritics_label=เครื่องหมายกำกับการออกเสียงตรงกัน find_entire_word_label=ทั้งคำ find_reached_top=ค้นหาถึงจุดเริ่มต้นของหน้า เริ่มค้นต่อจากด้านล่าง find_reached_bottom=ค้นหาถึงจุดสิ้นสุดหน้า เริ่มค้นต่อจากด้านบน @@ -220,7 +226,7 @@ page_scale_actual=ขนาดจริง page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=ข้อผิดพลาด +loading=กำลังโหลด… loading_error=เกิดข้อผิดพลาดขณะโหลด PDF invalid_file_error=ไฟล์ PDF ไม่ถูกต้องหรือเสียหาย missing_file_error=ไฟล์ PDF หายไป @@ -243,4 +249,18 @@ password_cancel=ยกเลิก printing_not_supported=คำเตือน: เบราว์เซอร์นี้ไม่ได้สนับสนุนการพิมพ์อย่างเต็มที่ printing_not_ready=คำเตือน: PDF ไม่ได้รับการโหลดอย่างเต็มที่สำหรับการพิมพ์ web_fonts_disabled=แบบอักษรเว็บถูกปิดใช้งาน: ไม่สามารถใช้แบบอักษร PDF ฝังตัว -document_colors_not_allowed=เอกสาร PDF ไม่ได้รับอนุญาตให้ใช้สีของตัวเอง: "อนุญาตให้หน้าเอกสารสามารถเลือกสีของตัวเอง" ถูกปิดใช้งานในเบราว์เซอร์ + +# Editor +editor_none_label=ปิดใช้งานการแก้ไข + + +free_text_default_content=ป้อนข้อความ… + +# Editor Parameters +editor_free_text_font_color=สีตัวอักษร +editor_free_text_font_size=ขนาดแบบอักษร + +# Editor Parameters +editor_ink_opacity=ความทึบ + +# Editor aria diff --git a/addons/web/static/lib/pdfjs/web/locale/tl/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/tl/viewer.properties index a3583a9c691..1e988e75ebc 100644 --- a/addons/web/static/lib/pdfjs/web/locale/tl/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/tl/viewer.properties @@ -28,60 +28,56 @@ of_pages=ng {{pagesCount}} # respectively a number representing the total number of pages in the document. page_of_pages=({{pageNumber}} ng {{pagesCount}}) -zoom_out.title=Mag-zoom Out +zoom_out.title=Paliitin zoom_out_label=Paliitin zoom_in.title=Palakihin zoom_in_label=Palakihin zoom.title=Mag-zoom -presentation_mode.title=Switch to Presentation Mode +presentation_mode.title=Lumipat sa Presentation Mode presentation_mode_label=Presentation Mode open_file.title=Magbukas ng file open_file_label=Buksan print.title=i-Print print_label=i-Print -download.title=Download -download_label=Download +download.title=i-Download +download_label=i-Download bookmark.title=Kasalukuyang tingin (kopyahin o buksan sa bagong window) bookmark_label=Kasalukuyang tingin # Secondary toolbar and context menu -tools.title=Mga Tool -tools_label=Mga Tool +tools.title=Mga Kagamitan +tools_label=Mga Kagamitan first_page.title=Pumunta sa Unang Pahina -first_page.label=Pumunta sa Unang Pahina first_page_label=Pumunta sa Unang Pahina last_page.title=Pumunta sa Huling Pahina -last_page.label=Pumunta sa Huling Pahina last_page_label=Pumunta sa Huling Pahina -page_rotate_cw.title=Paikutin ang Clockwise -page_rotate_cw.label=Paikutin ang Clockwise -page_rotate_cw_label=Paikutin ang Clockwise -page_rotate_ccw.title=Paikutin ang Counterclockwise -page_rotate_ccw.label=Paikutin ang Counterclockwise -page_rotate_ccw_label=Paikutin ang Counterclockwise +page_rotate_cw.title=Paikutin Pakanan +page_rotate_cw_label=Paikutin Pakanan +page_rotate_ccw.title=Paikutin Pakaliwa +page_rotate_ccw_label=Paikutin Pakaliwa -cursor_text_select_tool.title=Enable Text Selection Tool +cursor_text_select_tool.title=I-enable ang Text Selection Tool cursor_text_select_tool_label=Text Selection Tool -cursor_hand_tool.title=Enable Hand Tool +cursor_hand_tool.title=I-enable ang Hand Tool cursor_hand_tool_label=Hand Tool -scroll_vertical.title=Use Vertical Scrolling +scroll_vertical.title=Gumamit ng Vertical Scrolling scroll_vertical_label=Vertical Scrolling -scroll_horizontal.title=Use Horizontal Scrolling +scroll_horizontal.title=Gumamit ng Horizontal Scrolling scroll_horizontal_label=Horizontal Scrolling -scroll_wrapped.title=Use Wrapped Scrolling +scroll_wrapped.title=Gumamit ng Wrapped Scrolling scroll_wrapped_label=Wrapped Scrolling -spread_none.title=Do not join page spreads +spread_none.title=Huwag pagsamahin ang mga page spread spread_none_label=No Spreads spread_odd.title=Join page spreads starting with odd-numbered pages -spread_odd_label=Odd Spreads -spread_even.title=Join page spreads starting with even-numbered pages -spread_even_label=Even Spreads +spread_odd_label=Mga Odd Spread +spread_even.title=Pagsamahin ang mga page spread na nagsisimula sa mga even-numbered na pahina +spread_even_label=Mga Even Spread # Document properties dialog box -document_properties.title=Document Properties… -document_properties_label=Document Properties… +document_properties.title=Mga Katangian ng Dokumento… +document_properties_label=Mga Katangian ng Dokumento… document_properties_file_name=File name: document_properties_file_size=File size: # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" @@ -91,23 +87,23 @@ document_properties_kb={{size_kb}} KB ({{size_b}} bytes) # will be replaced by the PDF file size in megabytes, respectively in bytes. document_properties_mb={{size_mb}} MB ({{size_b}} bytes) document_properties_title=Pamagat: -document_properties_author=May Akda: -document_properties_subject=Subject: +document_properties_author=May-akda: +document_properties_subject=Paksa: document_properties_keywords=Mga keyword: -document_properties_creation_date=Creation Date: -document_properties_modification_date=Modification Date: +document_properties_creation_date=Petsa ng Pagkakagawa: +document_properties_modification_date=Petsa ng Pagkakabago: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creator: +document_properties_creator=Tagalikha: document_properties_producer=PDF Producer: document_properties_version=PDF Version: -document_properties_page_count=Page Count: -document_properties_page_size=Page Size: -document_properties_page_size_unit_inches=in +document_properties_page_count=Bilang ng Pahina: +document_properties_page_size=Laki ng Pahina: +document_properties_page_size_unit_inches=pulgada document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=portrait -document_properties_page_size_orientation_landscape=landscape +document_properties_page_size_orientation_portrait=patayo +document_properties_page_size_orientation_landscape=pahiga document_properties_page_size_name_a3=A3 document_properties_page_size_name_a4=A4 document_properties_page_size_name_letter=Letter @@ -127,7 +123,7 @@ document_properties_linearized_yes=Oo document_properties_linearized_no=Hindi document_properties_close=Isara -print_progress_message=Preparing document for printing… +print_progress_message=Inihahanda ang dokumento para sa pag-print… # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. print_progress_percent={{progress}}% @@ -136,18 +132,21 @@ print_progress_close=Kanselahin # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) -toggle_sidebar.title=Toggle Sidebar -toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments) -toggle_sidebar_label=Toggle Sidebar -document_outline.title=Show Document Outline (double-click to expand/collapse all items) -document_outline_label=Document Outline -attachments.title=Show Attachments -attachments_label=Attachments -thumbs.title=Ipakita ang mga Thumbnails -thumbs_label=Thumbnails -findbar.title=Find in Document +toggle_sidebar.title=Ipakita/Itago ang Sidebar +toggle_sidebar_notification2.title=Ipakita/Itago ang Sidebar (nagtataglay ang dokumento ng balangkas/mga attachment/mga layer) +toggle_sidebar_label=Ipakita/Itago ang Sidebar +document_outline.title=Ipakita ang Document Outline (mag-double-click para i-expand/collapse ang laman) +document_outline_label=Balangkas ng Dokumento +attachments.title=Ipakita ang mga Attachment +attachments_label=Mga attachment +layers.title=Ipakita ang mga Layer (mag-double click para mareset ang lahat ng layer sa orihinal na estado) +layers_label=Mga layer +thumbs.title=Ipakita ang mga Thumbnail +thumbs_label=Mga thumbnail +findbar.title=Hanapin sa Dokumento findbar_label=Hanapin +additional_layers=Mga Karagdagang Layer # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -158,43 +157,43 @@ thumb_page_canvas=Thumbnail ng Pahina {{page}} # Find panel button title and messages find_input.title=Hanapin -find_input.placeholder=Find in document… +find_input.placeholder=Hanapin sa dokumento… find_previous.title=Hanapin ang nakaraang pangyayari ng parirala -find_previous_label=Nakaraang +find_previous_label=Nakaraan find_next.title=Hanapin ang susunod na pangyayari ng parirala find_next_label=Susunod find_highlight=I-highlight lahat -find_match_case_label=Match case -find_entire_word_label=Whole words -find_reached_top=Reached top of document, continued from bottom -find_reached_bottom=Reached end of document, continued from top +find_match_case_label=Itugma ang case +find_entire_word_label=Buong salita +find_reached_top=Naabot na ang tuktok ng dokumento, ipinagpatuloy mula sa ilalim +find_reached_bottom=Naabot na ang dulo ng dokumento, ipinagpatuloy mula sa tuktok # LOCALIZATION NOTE (find_match_count): The supported plural forms are # [one|two|few|many|other], with [other] as the default value. # "{{current}}" and "{{total}}" will be replaced by a number representing the # index of the currently active find result, respectively a number representing # the total number of matches in the document. find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} of {{total}} match -find_match_count[two]={{current}} of {{total}} matches -find_match_count[few]={{current}} of {{total}} matches -find_match_count[many]={{current}} of {{total}} matches -find_match_count[other]={{current}} of {{total}} matches +find_match_count[one]={{current}} ng {{total}} tugma +find_match_count[two]={{current}} ng {{total}} tugma +find_match_count[few]={{current}} ng {{total}} tugma +find_match_count[many]={{current}} ng {{total}} tugma +find_match_count[other]={{current}} ng {{total}} tugma # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # [zero|one|two|few|many|other], with [other] as the default value. # "{{limit}}" will be replaced by a numerical value. find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=More than {{limit}} matches -find_match_count_limit[one]=More than {{limit}} match -find_match_count_limit[two]=More than {{limit}} matches -find_match_count_limit[few]=More than {{limit}} matches -find_match_count_limit[many]=More than {{limit}} matches -find_match_count_limit[other]=More than {{limit}} matches -find_not_found=Hindi nakita ang prasko +find_match_count_limit[zero]=Higit sa {{limit}} tugma +find_match_count_limit[one]=Higit sa {{limit}} tugma +find_match_count_limit[two]=Higit sa {{limit}} tugma +find_match_count_limit[few]=Higit sa {{limit}} tugma +find_match_count_limit[many]=Higit sa {{limit}} tugma +find_match_count_limit[other]=Higit sa {{limit}} tugma +find_not_found=Hindi natagpuan ang parirala # Error panel labels -error_more_info=Maraming Inpormasyon -error_less_info=Maikling Inpormasyon -error_close=Sarado +error_more_info=Karagdagang Impormasyon +error_less_info=Mas Kaunting Impormasyon +error_close=Isara # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be # replaced by the PDF.JS version and build ID. error_version_info=PDF.js v{{version}} (build: {{build}}) @@ -208,35 +207,36 @@ error_stack=Stack: {{stack}} error_file=File: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Linya: {{line}} -rendering_error=May naganap na pagkakamali habang pagsasalin sa pahina. +rendering_error=Nagkaproblema habang nirerender ang pahina. # Predefined zoom values -page_scale_width=Haba ng Pahina -page_scale_fit=ang pahina ay angkop -page_scale_auto=awtomatikong pag-imbulog +page_scale_width=Lapad ng Pahina +page_scale_fit=Pagkasyahin ang Pahina +page_scale_auto=Automatic Zoom page_scale_actual=Totoong sukat # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Error -loading_error=May maling nangyari habang kinakarga ang PDF. -invalid_file_error=Di-wasto o masira ang PDF file. +loading_error=Nagkaproblema habang niloload ang PDF. +invalid_file_error=Di-wasto o sira ang PDF file. missing_file_error=Nawawalang PDF file. unexpected_response_error=Hindi inaasahang tugon ng server. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" text_annotation_type.alt=[{{type}} Annotation] password_label=Ipasok ang password upang buksan ang PDF file na ito. -password_invalid=Invalid password. Please try again. +password_invalid=Maling password. Subukan uli. password_ok=OK password_cancel=Kanselahin -printing_not_supported=Warning: Printing is not fully supported by this browser. -printing_not_ready=Warning: The PDF is not fully loaded for printing. -web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. -document_colors_not_allowed=PDF documents are not allowed to use their own colors: “Allow pages to choose their own colors” is deactivated in the browser. +printing_not_supported=Babala: Hindi pa ganap na suportado ang pag-print sa browser na ito. +printing_not_ready=Babala: Hindi ganap na nabuksan ang PDF para sa pag-print. +web_fonts_disabled=Naka-disable ang mga Web font: hindi kayang gamitin ang mga naka-embed na PDF font. diff --git a/addons/web/static/lib/pdfjs/web/locale/tn/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/tn/viewer.properties deleted file mode 100644 index eda077c3fda..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/tn/viewer.properties +++ /dev/null @@ -1,83 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom.title=Zuma/gogela -open_file.title=Bula Faele -open_file_label=Bula - -# Secondary toolbar and context menu - - -# Document properties dialog box -document_properties_file_name=Leina la faele: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Leina: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. - -# Find panel button title and messages -find_previous.title=Batla tiragalo e e fetileng ya setlhopha sa mafoko -find_next.title=Batla tiragalo e e latelang ya setlhopha sa mafoko -find_not_found=Setlhopha sa mafoko ga se a bonwa - -# Error panel labels -error_more_info=Tshedimosetso e Nngwe -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number - -# Predefined zoom values -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Phoso - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_ok=Siame - -web_fonts_disabled=Mefutatlhaka ya Webo ga e dire: ga e kgone go dirisa mofutatlhaka wa PDF o tsentsweng. diff --git a/addons/web/static/lib/pdfjs/web/locale/tr/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/tr/viewer.properties index 792ea052eb5..09d5e72eaec 100644 --- a/addons/web/static/lib/pdfjs/web/locale/tr/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/tr/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Geçerli görünüm tools.title=Araçlar tools_label=Araçlar first_page.title=İlk sayfaya git -first_page.label=İlk sayfaya git first_page_label=İlk sayfaya git last_page.title=Son sayfaya git -last_page.label=Son sayfaya git last_page_label=Son sayfaya git page_rotate_cw.title=Saat yönünde döndür -page_rotate_cw.label=Saat yönünde döndür page_rotate_cw_label=Saat yönünde döndür page_rotate_ccw.title=Saat yönünün tersine döndür -page_rotate_ccw.label=Saat yönünün tersine döndür page_rotate_ccw_label=Saat yönünün tersine döndür cursor_text_select_tool.title=Metin seçme aracını etkinleştir @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Metin seçme aracı cursor_hand_tool.title=El aracını etkinleştir cursor_hand_tool_label=El aracı +scroll_page.title=Sayfa kaydırmayı kullan +scroll_page_label=Sayfa kaydırma scroll_vertical.title=Dikey kaydırma kullan scroll_vertical_label=Dikey kaydırma scroll_horizontal.title=Yatay kaydırma kullan @@ -137,17 +135,24 @@ print_progress_close=İptal # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Kenar çubuğunu aç/kapat -toggle_sidebar_notification.title=Kenar çubuğunu aç/kapat (Belge ana hat/ekler içeriyor) +toggle_sidebar_notification2.title=Kenar çubuğunu aç/kapat (Belge ana hat/ekler/katmanlar içeriyor) toggle_sidebar_label=Kenar çubuğunu aç/kapat document_outline.title=Belge ana hatlarını göster (Tüm öğeleri genişletmek/daraltmak için çift tıklayın) document_outline_label=Belge ana hatları attachments.title=Ekleri göster attachments_label=Ekler +layers.title=Katmanları göster (tüm katmanları varsayılan duruma sıfırlamak için çift tıklayın) +layers_label=Katmanlar thumbs.title=Küçük resimleri göster thumbs_label=Küçük resimler +current_outline_item.title=Mevcut ana hat öğesini bul +current_outline_item_label=Mevcut ana hat öğesi findbar.title=Belgede bul findbar_label=Bul +additional_layers=Ek katmanlar +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Sayfa {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Sonraki eşleşmeyi bul find_next_label=Sonraki find_highlight=Tümünü vurgula find_match_case_label=Büyük-küçük harfe duyarlı +find_match_diacritics_label=Fonetik işaretleri bul find_entire_word_label=Tam sözcükler find_reached_top=Belgenin başına ulaşıldı, sonundan devam edildi find_reached_bottom=Belgenin sonuna ulaşıldı, başından devam edildi @@ -220,7 +226,7 @@ page_scale_actual=Gerçek boyut page_scale_percent=%{{scale}} # Loading indicator messages -loading_error_indicator=Hata +loading=Yükleniyor… loading_error=PDF yüklenirken bir hata oluştu. invalid_file_error=Geçersiz veya bozulmuş PDF dosyası. missing_file_error=PDF dosyası eksik. @@ -243,4 +249,33 @@ password_cancel=İptal printing_not_supported=Uyarı: Yazdırma bu tarayıcı tarafından tam olarak desteklenmemektedir. printing_not_ready=Uyarı: PDF tamamen yüklenmedi ve yazdırmaya hazır değil. web_fonts_disabled=Web fontları devre dışı: Gömülü PDF fontları kullanılamıyor. -document_colors_not_allowed=PDF belgelerinin kendi renklerini kullanması için izin verilmiyor: “Sayfalara kendi renklerini seçmesi için izin ver” tarayıcıda etkinleştirilmemiş. + +# Editor +editor_none.title=Açıklama düzenlemeyi kapat +editor_none_label=Düzenlemeyi kapat +editor_free_text.title=FreeText açıklaması ekle +editor_free_text_label=FreeText açıklaması +editor_ink.title=Mürekkep açıklaması ekle +editor_ink_label=Mürekkep açıklaması + +freetext_default_content=Bir metin girin… + +free_text_default_content=Metni girin… + +# Editor Parameters +editor_free_text_font_color=Yazı tipi rengi +editor_free_text_font_size=Yazı tipi boyutu +editor_ink_line_color=Çizgi rengi +editor_ink_line_thickness=Çizgi kalınlığı + +# Editor Parameters +editor_free_text_color=Renk +editor_free_text_size=Boyut +editor_ink_color=Renk +editor_ink_thickness=Kalınlık +editor_ink_opacity=Saydamlık + +# Editor aria +editor_free_text_aria_label=Serbest metin düzenleyici +editor_ink_aria_label=Mürekkep düzenleyici +editor_ink_canvas_aria_label=Kullanıcı tarafından oluşturulan resim diff --git a/addons/web/static/lib/pdfjs/web/locale/trs/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/trs/viewer.properties new file mode 100644 index 00000000000..8bd1fe1dba9 --- /dev/null +++ b/addons/web/static/lib/pdfjs/web/locale/trs/viewer.properties @@ -0,0 +1,206 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pajinâ gunâj rukùu +previous_label=Sa gachin +next.title=Pajinâ 'na' ñaan +next_label=Ne' ñaan + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Ñanj +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=si'iaj {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=Nagi'iaj li' +zoom_out_label=Nagi'iaj li' +zoom_in.title=Nagi'iaj niko' +zoom_in_label=Nagi'iaj niko' +zoom.title=dàj nìko ma'an +presentation_mode.title=Naduno' daj ga ma +presentation_mode_label=Daj gà ma +open_file.title=Na'nïn' chrû ñanj +open_file_label=Na'nïn +print.title=Nari' ña du'ua +print_label=Nari' ñadu'ua +download.title=Nadunïnj +download_label=Nadunïnj +bookmark.title=Daj hua ma (Guxun' nej na'nïn' riña ventana nakàa) +bookmark_label=Daj hua ma + +# Secondary toolbar and context menu +tools.title=Rasun +tools_label=Nej rasùun +first_page.title=gun' riña pajina asiniin +first_page_label=Gun' riña pajina asiniin +last_page.title=Gun' riña pajina rukù ni'in +last_page_label=Gun' riña pajina rukù ni'inj +page_rotate_cw.title=Tanikaj ne' huat +page_rotate_cw_label=Tanikaj ne' huat +page_rotate_ccw.title=Tanikaj ne' chînt' +page_rotate_ccw_label=Tanikaj ne' chint + +cursor_text_select_tool.title=Dugi'iaj sun' sa ganahui texto +cursor_text_select_tool_label=Nej rasun arajsun' da' nahui' texto +cursor_hand_tool.title=Nachrun' nej rasun +cursor_hand_tool_label=Sa rajsun ro'o' + +scroll_vertical.title=Garasun' dukuán runūu +scroll_vertical_label=Dukuán runūu +scroll_horizontal.title=Garasun' dukuán nikin' nahui +scroll_horizontal_label=Dukuán nikin' nahui +scroll_wrapped.title=Garasun' sa nachree +scroll_wrapped_label=Sa nachree + +spread_none.title=Si nagi'iaj nugun'un' nej pagina hua ninin +spread_none_label=Ni'io daj hua pagina +spread_odd.title=Nagi'iaj nugua'ant nej pajina +spread_odd_label=Ni'io' daj hua libro gurin +spread_even.title=Nakāj dugui' ngà nej pajinâ ayi'ì ngà da' hùi hùi +spread_even_label=Nahuin nìko nej + +# Document properties dialog box +document_properties.title=Nej sa nikāj ñanj… +document_properties_label=Nej sa nikāj ñanj… +document_properties_file_name=Si yugui archîbo: +document_properties_file_size=Dàj yachìj archîbo: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Si yugui: +document_properties_author=Sí girirà: +document_properties_subject=Dugui': +document_properties_keywords=Nej nuguan' huìi: +document_properties_creation_date=Gui gurugui' man: +document_properties_modification_date=Nuguan' nahuin nakà: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Guiri ro' +document_properties_producer=Sa ri PDF: +document_properties_version=PDF Version: +document_properties_page_count=Si Guendâ Pâjina: +document_properties_page_size=Dàj yachìj pâjina: +document_properties_page_size_unit_inches=riña +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=nadu'ua +document_properties_page_size_orientation_landscape=dàj huaj +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Da'ngà'a +document_properties_page_size_name_legal=Nuguan' a'nï'ïn +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Nanèt chre ni'iajt riña Web: +document_properties_linearized_yes=Ga'ue +document_properties_linearized_no=Si ga'ue +document_properties_close=Narán + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Duyichin' + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Nadunā barrâ nù yi'nïn +toggle_sidebar_label=Nadunā barrâ nù yi'nïn +findbar_label=Narì' + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. + +# Find panel button title and messages +find_input.title=Narì' +find_previous_label=Sa gachîn +find_next_label=Ne' ñaan +find_highlight=Daran' sa ña'an +find_match_case_label=Match case +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} si'iaj {{total}} guña gè huaj +find_match_count[two]={{current}} si'iaj {{total}} guña gè huaj +find_match_count[few]={{current}} si'iaj {{total}} guña gè huaj +find_match_count[many]={{current}} si'iaj {{total}} guña gè huaj +find_match_count[other]={{current}} of {{total}} matches +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Doj ngà da' {{limit}} nej sa nari' dugui'i +find_match_count_limit[one]=Doj ngà da' {{limit}} sa nari' dugui'i +find_match_count_limit[two]=Doj ngà da' {{limit}} nej sa nari' dugui'i +find_match_count_limit[few]=Doj ngà da' {{limit}} nej sa nari' dugui'i +find_match_count_limit[many]=Doj ngà da' {{limit}} nej sa nari' dugui'i +find_match_count_limit[other]=Doj ngà da' {{limit}} nej sa nari' dugui'i +find_not_found=Nu narì'ij nugua'anj + +# Error panel labels +error_more_info=Doj nuguan' a'min rayi'î nan +error_less_info=Dòj nuguan' a'min rayi'î nan +error_close=Narán +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Message: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Naru'ui': {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Archîbo: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Lînia: {{line}} + +# Predefined zoom values +page_scale_actual=Dàj yàchi akuan' nín +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_ok=Ga'ue +password_cancel=Duyichin' + diff --git a/addons/web/static/lib/pdfjs/web/locale/tsz/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/tsz/viewer.properties deleted file mode 100644 index c50a9428416..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/tsz/viewer.properties +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom.title=jasi -open_file_label=Mitani - -# Secondary toolbar and context menu - - -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. - -# Find panel button title and messages - -# Error panel labels -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number - -# Predefined zoom values -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_ok=Jo - diff --git a/addons/web/static/lib/pdfjs/web/locale/uk/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/uk/viewer.properties index 6eb227726ee..e981adf731d 100644 --- a/addons/web/static/lib/pdfjs/web/locale/uk/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/uk/viewer.properties @@ -48,23 +48,21 @@ bookmark_label=Поточний вигляд tools.title=Інструменти tools_label=Інструменти first_page.title=На першу сторінку -first_page.label=На першу сторінку first_page_label=На першу сторінку last_page.title=На останню сторінку -last_page.label=На останню сторінку last_page_label=На останню сторінку page_rotate_cw.title=Повернути за годинниковою стрілкою -page_rotate_cw.label=Повернути за годинниковою стрілкою page_rotate_cw_label=Повернути за годинниковою стрілкою page_rotate_ccw.title=Повернути проти годинникової стрілки -page_rotate_ccw.label=Повернути проти годинникової стрілки page_rotate_ccw_label=Повернути проти годинникової стрілки cursor_text_select_tool.title=Увімкнути інструмент вибору тексту cursor_text_select_tool_label=Інструмент вибору тексту -cursor_hand_tool.title=Увімкнути інструмент «Рука» -cursor_hand_tool_label=Інструмент «Рука» +cursor_hand_tool.title=Увімкнути інструмент "Рука" +cursor_hand_tool_label=Інструмент "Рука" +scroll_page.title=Використовувати прокручування сторінки +scroll_page_label=Прокручування сторінки scroll_vertical.title=Використовувати вертикальне прокручування scroll_vertical_label=Вертикальне прокручування scroll_horizontal.title=Використовувати горизонтальне прокручування @@ -137,17 +135,24 @@ print_progress_close=Скасувати # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Бічна панель -toggle_sidebar_notification.title=Перемкнути бічну панель (документ має вміст/вкладення) +toggle_sidebar_notification2.title=Перемкнути бічну панель (документ містить ескіз/вкладення/шари) toggle_sidebar_label=Перемкнути бічну панель document_outline.title=Показати схему документу (подвійний клік для розгортання/згортання елементів) document_outline_label=Схема документа attachments.title=Показати прикріплення attachments_label=Прикріплення +layers.title=Показати шари (двічі клацніть, щоб скинути всі шари до типового стану) +layers_label=Шари thumbs.title=Показувати ескізи thumbs_label=Ескізи +current_outline_item.title=Знайти поточний елемент змісту +current_outline_item_label=Поточний елемент змісту findbar.title=Знайти в документі -findbar_label=Пошук +findbar_label=Знайти +additional_layers=Додаткові шари +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Сторінка {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Знайти наступне входження фрази find_next_label=Наступне find_highlight=Підсвітити все find_match_case_label=З урахуванням регістру +find_match_diacritics_label=Відповідність діакритичних знаків find_entire_word_label=Цілі слова find_reached_top=Досягнуто початку документу, продовжено з кінця find_reached_bottom=Досягнуто кінця документу, продовжено з початку @@ -212,15 +218,15 @@ rendering_error=Під час виведення сторінки сталася # Predefined zoom values page_scale_width=За шириною -page_scale_fit=Умістити -page_scale_auto=Авто-масштаб +page_scale_fit=Вмістити +page_scale_auto=Автомасштаб page_scale_actual=Дійсний розмір # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Помилка +loading=Завантаження… loading_error=Під час завантаження PDF сталася помилка. invalid_file_error=Недійсний або пошкоджений PDF-файл. missing_file_error=Відсутній PDF-файл. @@ -234,7 +240,7 @@ annotation_date_string={{date}}, {{time}} # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}}-аннотація] +text_annotation_type.alt=[{{type}}-анотація] password_label=Введіть пароль для відкриття цього PDF-файла. password_invalid=Невірний пароль. Спробуйте ще. password_ok=Гаразд @@ -243,4 +249,33 @@ password_cancel=Скасувати printing_not_supported=Попередження: Цей браузер не повністю підтримує друк. printing_not_ready=Попередження: PDF не повністю завантажений для друку. web_fonts_disabled=Веб-шрифти вимкнено: неможливо використати вбудовані у PDF шрифти. -document_colors_not_allowed=PDF-документам не дозволено використовувати власні кольори: в браузері вимкнено параметр «Дозволити сторінкам використовувати власні кольори». + +# Editor +editor_none.title=Вимкнути редагування анотацій +editor_none_label=Вимкнути редагування +editor_free_text.title=Додати анотацію FreeText +editor_free_text_label=Анотація FreeText +editor_ink.title=Додати анотацію чорнилом +editor_ink_label=Анотація чорнилом + +freetext_default_content=Введіть текст… + +free_text_default_content=Уведіть текст… + +# Editor Parameters +editor_free_text_font_color=Колір шрифту +editor_free_text_font_size=Розмір шрифту +editor_ink_line_color=Колір лінії +editor_ink_line_thickness=Товщина лінії + +# Editor Parameters +editor_free_text_color=Колір +editor_free_text_size=Розмір +editor_ink_color=Колір +editor_ink_thickness=Товщина +editor_ink_opacity=Прозорість + +# Editor aria +editor_free_text_aria_label=Редактор FreeText +editor_ink_aria_label=Рукописний редактор +editor_ink_canvas_aria_label=Зображення, створене користувачем diff --git a/addons/web/static/lib/pdfjs/web/locale/ur/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/ur/viewer.properties index 31928bcb479..6235c159f96 100644 --- a/addons/web/static/lib/pdfjs/web/locale/ur/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/ur/viewer.properties @@ -48,20 +48,28 @@ bookmark_label=حالیہ نظارہ tools.title=آلات tools_label=آلات first_page.title=پہلے صفحہ پر جائیں -first_page.label=پہلے صفحہ پر جائیں first_page_label=پہلے صفحہ پر جائیں last_page.title=آخری صفحہ پر جائیں -last_page.label=آخری صفحہ پر جائیں last_page_label=آخری صفحہ پر جائیں page_rotate_cw.title=گھڑی وار گھمائیں -page_rotate_cw.label=گھڑی وار گھمائیں page_rotate_cw_label=گھڑی وار گھمائیں page_rotate_ccw.title=ضد گھڑی وار گھمائیں -page_rotate_ccw.label=ضد گھڑی وار گھمائیں page_rotate_ccw_label=ضد گھڑی وار گھمائیں +cursor_text_select_tool.title=متن کے انتخاب کے ٹول کو فعال بناے +cursor_text_select_tool_label=متن کے انتخاب کا آلہ +cursor_hand_tool.title=ہینڈ ٹول کو فعال بناییں +cursor_hand_tool_label=ہاتھ کا آلہ +scroll_vertical.title=عمودی اسکرولنگ کا استعمال کریں +scroll_vertical_label=عمودی اسکرولنگ +scroll_horizontal.title=افقی سکرولنگ کا استعمال کریں +scroll_horizontal_label=افقی سکرولنگ +spread_none.title=صفحہ پھیلانے میں شامل نہ ہوں +spread_none_label=کوئی پھیلاؤ نہیں +spread_odd_label=تاک پھیلاؤ +spread_even_label=جفت پھیلاؤ # Document properties dialog box document_properties.title=دستاویز خواص… @@ -91,6 +99,7 @@ document_properties_page_size=صفہ کی لمبائ: document_properties_page_size_unit_inches=میں document_properties_page_size_unit_millimeters=mm document_properties_page_size_orientation_portrait=عمودی انداز +document_properties_page_size_orientation_landscape=افقى انداز document_properties_page_size_name_a3=A3 document_properties_page_size_name_a4=A4 document_properties_page_size_name_letter=خط @@ -102,8 +111,10 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} # LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): # "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by # the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} {{name}} {{orientation}} # LOCALIZATION NOTE (document_properties_linearized): The linearization status of # the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=تیز ویب دیکھیں: document_properties_linearized_yes=ہاں document_properties_linearized_no=نہیں document_properties_close=بند کریں @@ -128,6 +139,8 @@ thumbs_label=مجمل findbar.title=دستاویز میں ڈھونڈیں findbar_label=ڈھونڈیں +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=صفحہ {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -145,6 +158,7 @@ find_next.title=فقرے کا اگلہ وقوع ڈھونڈیں find_next_label=آگے find_highlight=تمام نمایاں کریں find_match_case_label=حروف مشابہ کریں +find_entire_word_label=تمام الفاظ find_reached_top=صفحہ کے شروع پر پہنچ گیا، نیچے سے جاری کیا find_reached_bottom=صفحہ کے اختتام پر پہنچ گیا، اوپر سے جاری کیا # LOCALIZATION NOTE (find_match_count): The supported plural forms are @@ -152,9 +166,21 @@ find_reached_bottom=صفحہ کے اختتام پر پہنچ گیا، اوپر # "{{current}}" and "{{total}}" will be replaced by a number representing the # index of the currently active find result, respectively a number representing # the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} میچ کا {{current}} +find_match_count[few]={{total}} میچوں میں سے {{current}} +find_match_count[many]={{total}} میچوں میں سے {{current}} +find_match_count[other]={{total}} میچوں میں سے {{current}} # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # [zero|one|two|few|many|other], with [other] as the default value. # "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(total) ]} +find_match_count_limit[zero]={{limit}} سے زیادہ میچ +find_match_count_limit[one]={{limit}} سے زیادہ میچ +find_match_count_limit[two]={{limit}} سے زیادہ میچ +find_match_count_limit[few]={{limit}} سے زیادہ میچ +find_match_count_limit[many]={{limit}} سے زیادہ میچ +find_match_count_limit[other]={{limit}} سے زیادہ میچ find_not_found=فقرا نہیں ملا # Error panel labels @@ -186,7 +212,6 @@ page_scale_actual=اصل سائز page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=نقص loading_error=PDF لوڈ کرتے وقت نقص آ گیا۔ invalid_file_error=ناجائز یا خراب PDF مسل missing_file_error=PDF مسل غائب ہے۔ @@ -194,6 +219,7 @@ unexpected_response_error=غیرمتوقع پیش کار جواب # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}.{{time}} # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in @@ -202,10 +228,11 @@ unexpected_response_error=غیرمتوقع پیش کار جواب text_annotation_type.alt=[{{type}} نوٹ] password_label=PDF مسل کھولنے کے لیے پاس ورڈ داخل کریں. password_invalid=ناجائز پاس ورڈ. براےؑ کرم دوبارہ کوشش کریں. -password_ok=سہی +password_ok=ٹھیک ہے password_cancel=منسوخ کریں printing_not_supported=تنبیہ:چھاپنا اس براؤزر پر پوری طرح معاونت شدہ نہیں ہے۔ printing_not_ready=تنبیہ: PDF چھپائی کے لیے پوری طرح لوڈ نہیں ہوئی۔ web_fonts_disabled=ویب فانٹ نا اہل ہیں: شامل PDF فانٹ استعمال کرنے میں ناکام۔ -document_colors_not_allowed=PDF دستاویزات کو اپنے رنگ استعمال کرنے کی اجازت نہیں: 'صفحات کو اپنے رنگ چنیں' کی اِجازت براؤزر میں بے عمل ہے۔ +# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same +# exact string as in the `chrome.properties` file. diff --git a/addons/web/static/lib/pdfjs/web/locale/uz/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/uz/viewer.properties index e451c74fff2..a17eb6b3b31 100644 --- a/addons/web/static/lib/pdfjs/web/locale/uz/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/uz/viewer.properties @@ -46,16 +46,12 @@ bookmark_label=Joriy koʻrinish tools.title=Vositalar tools_label=Vositalar first_page.title=Birinchi sahifaga oʻtish -first_page.label=Birinchi sahifaga oʻtish first_page_label=Birinchi sahifaga oʻtish last_page.title=Soʻnggi sahifaga oʻtish -last_page.label=Soʻnggi sahifaga oʻtish last_page_label=Soʻnggi sahifaga oʻtish page_rotate_cw.title=Soat yoʻnalishi boʻyicha burish -page_rotate_cw.label=Soat yoʻnalishi boʻyicha burish page_rotate_cw_label=Soat yoʻnalishi boʻyicha burish page_rotate_ccw.title=Soat yoʻnalishiga qarshi burish -page_rotate_ccw.label=Soat yoʻnalishiga qarshi burish page_rotate_ccw_label=Soat yoʻnalishiga qarshi burish @@ -147,8 +143,6 @@ page_scale_actual=Haqiqiy hajmi # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Xato loading_error=PDF yuklanayotganda xato yuz berdi. invalid_file_error=Xato yoki buzuq PDF fayli. missing_file_error=PDF fayl kerak. @@ -166,4 +160,3 @@ password_ok=OK printing_not_supported=Diqqat: chop qilish bruzer tomonidan toʻliq qoʻllab-quvvatlanmaydi. printing_not_ready=Diqqat: PDF fayl chop qilish uchun toʻliq yuklanmadi. web_fonts_disabled=Veb shriftlar oʻchirilgan: ichki PDF shriftlardan foydalanib boʻlmmaydi. -document_colors_not_allowed=PDF hujjat oʻzining ranglaridan foydalanishga ruxsat bermaydi: 'Sahifalarga oʻzining rangidan foydalanishga ruxsat berish' ushbu brauzerda oʻchirib qoʻyilgan. diff --git a/addons/web/static/lib/pdfjs/web/locale/vi/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/vi/viewer.properties index 39d4b2bd671..18ef487d3ca 100644 --- a/addons/web/static/lib/pdfjs/web/locale/vi/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/vi/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Chế độ xem hiện tại tools.title=Công cụ tools_label=Công cụ first_page.title=Về trang đầu -first_page.label=Về trang đầu first_page_label=Về trang đầu last_page.title=Đến trang cuối -last_page.label=Đến trang cuối last_page_label=Đến trang cuối page_rotate_cw.title=Xoay theo chiều kim đồng hồ -page_rotate_cw.label=Xoay theo chiều kim đồng hồ page_rotate_cw_label=Xoay theo chiều kim đồng hồ page_rotate_ccw.title=Xoay ngược chiều kim đồng hồ -page_rotate_ccw.label=Xoay ngược chiều kim đồng hồ page_rotate_ccw_label=Xoay ngược chiều kim đồng hồ cursor_text_select_tool.title=Kích hoạt công cụ chọn vùng văn bản @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Công cụ chọn vùng văn bản cursor_hand_tool.title=Kích hoạt công cụ con trỏ cursor_hand_tool_label=Công cụ con trỏ +scroll_page.title=Sử dụng cuộn trang hiện tại +scroll_page_label=Cuộn trang hiện tại scroll_vertical.title=Sử dụng cuộn dọc scroll_vertical_label=Cuộn dọc scroll_horizontal.title=Sử dụng cuộn ngang @@ -137,17 +135,24 @@ print_progress_close=Hủy bỏ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Bật/Tắt thanh lề -toggle_sidebar_notification.title=Bật tắt thanh lề (tài liệu bao gồm bản phác thảo/tập tin đính kèm) +toggle_sidebar_notification2.title=Bật tắt thanh lề (tài liệu bao gồm bản phác thảo/tập tin đính kèm/lớp) toggle_sidebar_label=Bật/Tắt thanh lề -document_outline.title=Hiện tài liệu phác thảo (nhấp đúp vào để mở rộng/thu gọn tất cả các mục) +document_outline.title=Hiển thị tài liệu phác thảo (nhấp đúp vào để mở rộng/thu gọn tất cả các mục) document_outline_label=Bản phác tài liệu attachments.title=Hiện nội dung đính kèm attachments_label=Nội dung đính kèm +layers.title=Hiển thị các lớp (nhấp đúp để đặt lại tất cả các lớp về trạng thái mặc định) +layers_label=Lớp thumbs.title=Hiển thị ảnh thu nhỏ thumbs_label=Ảnh thu nhỏ +current_outline_item.title=Tìm mục phác thảo hiện tại +current_outline_item_label=Mục phác thảo hiện tại findbar.title=Tìm trong tài liệu findbar_label=Tìm +additional_layers=Các lớp bổ sung +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Trang {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Tìm cụm từ ở phần sau find_next_label=Tiếp find_highlight=Tô sáng tất cả find_match_case_label=Phân biệt hoa, thường +find_match_diacritics_label=Khớp dấu phụ find_entire_word_label=Toàn bộ từ find_reached_top=Đã đến phần đầu tài liệu, quay trở lại từ cuối find_reached_bottom=Đã đến phần cuối của tài liệu, quay trở lại từ đầu @@ -220,7 +226,7 @@ page_scale_actual=Kích thước thực page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Lỗi +loading=Đang tải… loading_error=Lỗi khi tải tài liệu PDF. invalid_file_error=Tập tin PDF hỏng hoặc không hợp lệ. missing_file_error=Thiếu tập tin PDF. @@ -243,4 +249,33 @@ password_cancel=Hủy bỏ printing_not_supported=Cảnh báo: In ấn không được hỗ trợ đầy đủ ở trình duyệt này. printing_not_ready=Cảnh báo: PDF chưa được tải hết để in. web_fonts_disabled=Phông chữ Web bị vô hiệu hóa: không thể sử dụng các phông chữ PDF được nhúng. -document_colors_not_allowed=Tài liệu PDF không được cho phép dùng màu riêng: 'Cho phép trang chọn màu riêng' đã bị tắt trên trình duyệt. + +# Editor +editor_none.title=Tắt chỉnh sửa chú thích +editor_none_label=Tắt chỉnh sửa +editor_free_text.title=Thêm chú thích FreeText +editor_free_text_label=Chú thích FreeText +editor_ink.title=Thêm chú thích mực +editor_ink_label=Chú thích mực + +freetext_default_content=Nhập vài văn bản… + +free_text_default_content=Nhập văn bản… + +# Editor Parameters +editor_free_text_font_color=Màu chữ +editor_free_text_font_size=Cỡ chữ +editor_ink_line_color=Màu đường kẻ +editor_ink_line_thickness=Độ dày đường kẻ + +# Editor Parameters +editor_free_text_color=Màu +editor_free_text_size=Kích cỡ +editor_ink_color=Màu +editor_ink_thickness=Độ dày +editor_ink_opacity=Độ mờ + +# Editor aria +editor_free_text_aria_label=Trình chỉnh sửa FreeText +editor_ink_aria_label=Trình chỉnh sửa mực +editor_ink_canvas_aria_label=Hình ảnh do người dùng tạo diff --git a/addons/web/static/lib/pdfjs/web/locale/wo/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/wo/viewer.properties index 38c7bc18483..ca3f4c31609 100644 --- a/addons/web/static/lib/pdfjs/web/locale/wo/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/wo/viewer.properties @@ -108,8 +108,6 @@ page_scale_actual=Dayo bi am # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. -# Loading indicator messages -loading_error_indicator=Njumte loading_error=Am na njumte ci yebum dencukaay PDF bi. invalid_file_error=Dencukaay PDF bi baaxul walla mu sankar. diff --git a/addons/web/static/lib/pdfjs/web/locale/xh/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/xh/viewer.properties index 1fa394bbde9..541ddbfc9d7 100644 --- a/addons/web/static/lib/pdfjs/web/locale/xh/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/xh/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Imbonakalo ekhoyo tools.title=Izixhobo zemiyalelo tools_label=Izixhobo zemiyalelo first_page.title=Yiya kwiphepha lokuqala -first_page.label=Yiya kwiphepha lokuqala first_page_label=Yiya kwiphepha lokuqala last_page.title=Yiya kwiphepha lokugqibela -last_page.label=Yiya kwiphepha lokugqibela last_page_label=Yiya kwiphepha lokugqibela page_rotate_cw.title=Jikelisa ngasekunene -page_rotate_cw.label=Jikelisa ngasekunene page_rotate_cw_label=Jikelisa ngasekunene page_rotate_ccw.title=Jikelisa ngasekhohlo -page_rotate_ccw.label=Jikelisa ngasekhohlo page_rotate_ccw_label=Jikelisa ngasekhohlo cursor_text_select_tool.title=Vumela iSixhobo sokuKhetha iTeksti @@ -101,7 +97,6 @@ print_progress_close=Rhoxisa # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Togola ngebha eseCaleni -toggle_sidebar_notification.title=ISidebar yeQhosha (uxwebhu lunolwandlalo/iziqhotyoshelwa) toggle_sidebar_label=Togola ngebha eseCaleni document_outline.title=Bonisa uLwandlalo loXwebhu (cofa kabini ukuze wandise/diliza zonke izinto) document_outline_label=Isishwankathelo soxwebhu @@ -161,8 +156,6 @@ page_scale_actual=Ubungakanani bokwenene # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Imposiso loading_error=Imposiso yenzekile xa kulayishwa i-PDF. invalid_file_error=Ifayile ye-PDF engeyiyo okanye eyonakalisiweyo. missing_file_error=Ifayile ye-PDF edukileyo. @@ -181,4 +174,3 @@ password_cancel=Rhoxisa printing_not_supported=Isilumkiso: Ukuprinta akuxhaswa ngokupheleleyo yile bhrawuza. printing_not_ready=Isilumkiso: IPDF ayihlohlwanga ngokupheleleyo ukwenzela ukuprinta. web_fonts_disabled=Iifonti zewebhu ziqhwalelisiwe: ayikwazi ukusebenzisa iifonti ze-PDF ezincanyathelisiweyo. -document_colors_not_allowed=Amaxwebhu ePDF akavumelekanga ukuba asebenzise imibala yawo: 'Ukuvumela amaphepha ukuba asebenzise eyawo imibala' kuvaliwe ukuba kungasebenzi kwibhrawuza. diff --git a/addons/web/static/lib/pdfjs/web/locale/zam/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/zam/viewer.properties deleted file mode 100644 index b9a20557f65..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/zam/viewer.properties +++ /dev/null @@ -1,90 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom_out.title=Lii lut ah -zoom_out_label=Lii lut ah -zoom_in.title=Lii mach ah -zoom_in_label=Lii mach ah -zoom.title=Xha niey -open_file.title=Xhal yets ndedizh -open_file_label=Xhal - -# Secondary toolbar and context menu -tools.title=Koo lii chel -tools_label=Koo lii chel - - -# Document properties dialog box -document_properties.title=Sá nìe yêtz... -document_properties_label=Sá nìe yêtz... -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_close=TòɁw - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -attachments.title=Mb-&lòɁ yêtz -thumbs_label=Thumbnails -findbar.title=GòzăɁl lèɁn yêtz - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. - -# Find panel button title and messages - -# Error panel labels -error_close=TòɁw -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number - -# Predefined zoom values -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_ok=Bliy - diff --git a/addons/web/static/lib/pdfjs/web/locale/zh-CN/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/zh-CN/viewer.properties index 5c4c5367351..5a33d65b940 100644 --- a/addons/web/static/lib/pdfjs/web/locale/zh-CN/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/zh-CN/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=当前在看 tools.title=工具 tools_label=工具 first_page.title=转到第一页 -first_page.label=转到第一页 first_page_label=转到第一页 last_page.title=转到最后一页 -last_page.label=转到最后一页 last_page_label=转到最后一页 page_rotate_cw.title=顺时针旋转 -page_rotate_cw.label=顺时针旋转 page_rotate_cw_label=顺时针旋转 page_rotate_ccw.title=逆时针旋转 -page_rotate_ccw.label=逆时针旋转 page_rotate_ccw_label=逆时针旋转 cursor_text_select_tool.title=启用文本选择工具 @@ -65,6 +61,8 @@ cursor_text_select_tool_label=文本选择工具 cursor_hand_tool.title=启用手形工具 cursor_hand_tool_label=手形工具 +scroll_page.title=使用页面滚动 +scroll_page_label=页面滚动 scroll_vertical.title=使用垂直滚动 scroll_vertical_label=垂直滚动 scroll_horizontal.title=使用水平滚动 @@ -137,21 +135,28 @@ print_progress_close=取消 # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=切换侧栏 -toggle_sidebar_notification.title=切换侧栏(文档所含的大纲/附件) +toggle_sidebar_notification2.title=切换侧栏(文档所含的大纲/附件/图层) toggle_sidebar_label=切换侧栏 document_outline.title=显示文档大纲(双击展开/折叠所有项) document_outline_label=文档大纲 attachments.title=显示附件 attachments_label=附件 +layers.title=显示图层(双击即可将所有图层重置为默认状态) +layers_label=图层 thumbs.title=显示缩略图 thumbs_label=缩略图 +current_outline_item.title=查找当前大纲项目 +current_outline_item_label=当前大纲项目 findbar.title=在文档中查找 findbar_label=查找 +additional_layers=其他图层 +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=第 {{page}} 页 # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. -thumb_page_title=页码 {{page}} +thumb_page_title=第 {{page}} 页 # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. thumb_page_canvas=页面 {{page}} 的缩略图 @@ -165,6 +170,7 @@ find_next.title=查找词语后一次出现的位置 find_next_label=下一页 find_highlight=全部高亮显示 find_match_case_label=区分大小写 +find_match_diacritics_label=匹配变音符号 find_entire_word_label=字词匹配 find_reached_top=到达文档开头,从末尾继续 find_reached_bottom=到达文档末尾,从开头继续 @@ -220,7 +226,7 @@ page_scale_actual=实际大小 page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=错误 +loading=正在载入… loading_error=载入 PDF 时发生错误。 invalid_file_error=无效或损坏的 PDF 文件。 missing_file_error=缺少 PDF 文件。 @@ -243,4 +249,33 @@ password_cancel=取消 printing_not_supported=警告:此浏览器尚未完整支持打印功能。 printing_not_ready=警告:此 PDF 未完成载入,无法打印。 web_fonts_disabled=Web 字体已被禁用:无法使用嵌入的 PDF 字体。 -document_colors_not_allowed=PDF 文档无法使用自己的颜色:浏览器中“允许页面选择自己的颜色”的选项未被勾选。 + +# Editor +editor_none.title=禁用编辑注释 +editor_none_label=禁用编辑 +editor_free_text.title=添加文本注释 +editor_free_text_label=文本注释 +editor_ink.title=添加墨迹注释 +editor_ink_label=墨迹注释 + +freetext_default_content=输入一段文本… + +free_text_default_content=输入文本… + +# Editor Parameters +editor_free_text_font_color=字体颜色 +editor_free_text_font_size=字体大小 +editor_ink_line_color=线条颜色 +editor_ink_line_thickness=线条粗细 + +# Editor Parameters +editor_free_text_color=颜色 +editor_free_text_size=字号 +editor_ink_color=颜色 +editor_ink_thickness=粗细 +editor_ink_opacity=不透明度 + +# Editor aria +editor_free_text_aria_label=文本编辑器 +editor_ink_aria_label=墨迹编辑器 +editor_ink_canvas_aria_label=用户创建图像 diff --git a/addons/web/static/lib/pdfjs/web/locale/zh-TW/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/zh-TW/viewer.properties index 70e7a456f48..b673653e6d0 100644 --- a/addons/web/static/lib/pdfjs/web/locale/zh-TW/viewer.properties +++ b/addons/web/static/lib/pdfjs/web/locale/zh-TW/viewer.properties @@ -41,23 +41,19 @@ print.title=列印 print_label=列印 download.title=下載 download_label=下載 -bookmark.title=目前檢視的內容(複製或開啟於新視窗) +bookmark.title=目前畫面(複製或開啟於新視窗) bookmark_label=目前檢視 # Secondary toolbar and context menu tools.title=工具 tools_label=工具 first_page.title=跳到第一頁 -first_page.label=跳到第一頁 first_page_label=跳到第一頁 last_page.title=跳到最後一頁 -last_page.label=跳到最後一頁 last_page_label=跳到最後一頁 page_rotate_cw.title=順時針旋轉 -page_rotate_cw.label=順時針旋轉 page_rotate_cw_label=順時針旋轉 page_rotate_ccw.title=逆時針旋轉 -page_rotate_ccw.label=逆時針旋轉 page_rotate_ccw_label=逆時針旋轉 cursor_text_select_tool.title=開啟文字選擇工具 @@ -65,6 +61,8 @@ cursor_text_select_tool_label=文字選擇工具 cursor_hand_tool.title=開啟頁面移動工具 cursor_hand_tool_label=頁面移動工具 +scroll_page.title=使用頁面捲動功能 +scroll_page_label=頁面捲動功能 scroll_vertical.title=使用垂直捲動版面 scroll_vertical_label=垂直捲動 scroll_horizontal.title=使用水平捲動版面 @@ -98,7 +96,7 @@ document_properties_creation_date=建立日期: document_properties_modification_date=修改日期: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} +document_properties_date_string={{date}} {{time}} document_properties_creator=建立者: document_properties_producer=PDF 產生器: document_properties_version=PDF 版本: @@ -137,21 +135,28 @@ print_progress_close=取消 # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=切換側邊欄 -toggle_sidebar_notification.title=切換側邊攔(文件包含大綱或附件) +toggle_sidebar_notification2.title=切換側邊欄(包含大綱、附件、圖層的文件) toggle_sidebar_label=切換側邊欄 document_outline.title=顯示文件大綱(雙擊展開/摺疊所有項目) document_outline_label=文件大綱 attachments.title=顯示附件 attachments_label=附件 +layers.title=顯示圖層(滑鼠雙擊即可將所有圖層重設為預設狀態) +layers_label=圖層 thumbs.title=顯示縮圖 thumbs_label=縮圖 +current_outline_item.title=尋找目前的大綱項目 +current_outline_item_label=目前的大綱項目 findbar.title=在文件中尋找 findbar_label=尋找 +additional_layers=其他圖層 +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=第 {{page}} 頁 # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. -thumb_page_title=頁 {{page}} +thumb_page_title=第 {{page}} 頁 # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. thumb_page_canvas=頁 {{page}} 的縮圖 @@ -165,6 +170,7 @@ find_next.title=尋找文字下次出現的位置 find_next_label=下一個 find_highlight=全部強調標示 find_match_case_label=區分大小寫 +find_match_diacritics_label=符合變音符號 find_entire_word_label=符合整個字 find_reached_top=已搜尋至文件頂端,自底端繼續搜尋 find_reached_bottom=已搜尋至文件底端,自頂端繼續搜尋 @@ -220,7 +226,7 @@ page_scale_actual=實際大小 page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=錯誤 +loading=載入中… loading_error=載入 PDF 時發生錯誤。 invalid_file_error=無效或毀損的 PDF 檔案。 missing_file_error=找不到 PDF 檔案。 @@ -243,4 +249,33 @@ password_cancel=取消 printing_not_supported=警告: 此瀏覽器未完整支援列印功能。 printing_not_ready=警告: 此 PDF 未完成下載以供列印。 web_fonts_disabled=已停用網路字型 (Web fonts): 無法使用 PDF 內嵌字型。 -document_colors_not_allowed=瀏覽器的「優先使用網頁指定的色彩」未被勾選,PDF 文件無法使用自己的色彩。 + +# Editor +editor_none.title=停用編輯注釋 +editor_none_label=停用編輯 +editor_free_text.title=新增文字注釋 +editor_free_text_label=文字注釋 +editor_ink.title=新增圖形注釋 +editor_ink_label=圖形注釋 + +freetext_default_content=輸入一些文字… + +free_text_default_content=請輸入文字… + +# Editor Parameters +editor_free_text_font_color=字型顏色 +editor_free_text_font_size=字型大小 +editor_ink_line_color=線條色彩 +editor_ink_line_thickness=線條粗細 + +# Editor Parameters +editor_free_text_color=色彩 +editor_free_text_size=大小 +editor_ink_color=色彩 +editor_ink_thickness=線條粗細 +editor_ink_opacity=透​明度 + +# Editor aria +editor_free_text_aria_label=FreeText 編輯器 +editor_ink_aria_label=筆跡編輯器 +editor_ink_canvas_aria_label=使用者建立的圖片 diff --git a/addons/web/static/lib/pdfjs/web/locale/zu/viewer.properties b/addons/web/static/lib/pdfjs/web/locale/zu/viewer.properties deleted file mode 100644 index 8fc77f28f51..00000000000 --- a/addons/web/static/lib/pdfjs/web/locale/zu/viewer.properties +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Ikhasi eledlule -previous_label=Okudlule -next.title=Ikhasi elilandelayo -next_label=Okulandelayo - -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. - -zoom_out.title=Hlehlisela emuva -zoom_out_label=Hlehlisela emuva -zoom_in.title=Sondeza eduze -zoom_in_label=Sondeza eduze -zoom.title=Lwiza -presentation_mode.title=Guqulela kwindlela yesethulo -presentation_mode_label=Indlelo yesethulo -open_file.title=Vula ifayela -open_file_label=Vula -print.title=Phrinta -print_label=Phrinta -download.title=Landa -download_label=Landa -bookmark.title=Ukubuka kwamanje (kopisha noma vula kwifasitela elisha) -bookmark_label=Ukubuka kwamanje - -# Secondary toolbar and context menu - - -# Document properties dialog box -document_properties_file_name=Igama lefayela: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Isihloko: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=I-toggle yebha yaseceleni -toggle_sidebar_label=i-toggle yebha yaseceleni -document_outline_label=Umugqa waseceleni wedokhumenti -thumbs.title=Bonisa izithombe ezincane -thumbs_label=Izithonjana -findbar.title=Thola kwidokhumenti - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Ikhasi {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Isithonjana sekhasi {{page}} - -# Find panel button title and messages -find_previous.title=Thola indawo eyandulelayo okuvela kuyo lomshwana -find_previous_label=Okudlulile -find_next.title=Thola enye indawo okuvela kuyo lomshwana -find_next_label=Okulandelayo -find_highlight=Gqamisa konke -find_match_case_label=Fanisa ikheyisi -find_reached_top=Finyelele phezulu kwidokhumenti, qhubeka kusukaphansi -find_reached_bottom=Ifinyelele ekupheleni kwedokhumenti, qhubeka kusukaphezulu -find_not_found=Umshwana awutholakali - -# Error panel labels -error_more_info=Ukwaziswa Okwengeziwe -error_less_info=Ukwazi okuncane -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Umlayezo: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Isitaki: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Ifayela: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Umugqa: {{line}} -rendering_error=Iphutha lenzekile uma kunikwa ikhasi. - -# Predefined zoom values -page_scale_width=Ububanzi bekhasi -page_scale_fit=Ukulingana kwekhasi -page_scale_auto=Ukulwiza okuzenzekalelayo -page_scale_actual=Usayizi Wangempela -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Iphutha -loading_error=Kwenzeke iphutha uma kulayishwa i-PDF. -invalid_file_error=Ifayela le-PDF elingavumelekile noma elonakele. -missing_file_error=Ifayela le-PDF elilahlekile. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Amazwibela e-{{type}}] -password_ok=Kulungile - -printing_not_supported=Isixwayiso: Ukuphrinta akuxhasiwe yilesisiphequluli ngokugcwele. -printing_not_ready=Isixwayiso: I-PDF ayikalayishwa ngokuphelele yiPhrinta. -web_fonts_disabled=Amafonti e-webhu akutshaziwe: ayikwazi ukusebenzisa amafonti abekiwe e-PDF.\u0020 -document_colors_not_allowed=Amadokhumenti we-PDF awavumelekile ukusebenzisa imibalo yayo: 'Vumela amakhasi ukukhetha imibala yayo' ayisebenzi kusiphequluli. diff --git a/addons/web/static/lib/pdfjs/web/viewer.css b/addons/web/static/lib/pdfjs/web/viewer.css index 5835b309211..c357a9fdecb 100644 --- a/addons/web/static/lib/pdfjs/web/viewer.css +++ b/addons/web/static/lib/pdfjs/web/viewer.css @@ -15,74 +15,126 @@ .textLayer { position: absolute; + text-align: initial; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; opacity: 0.2; - line-height: 1.0; + line-height: 1; + -webkit-text-size-adjust: none; + -moz-text-size-adjust: none; + text-size-adjust: none; + forced-color-adjust: none; } -.textLayer > span { +.textLayer span, +.textLayer br { color: transparent; position: absolute; white-space: pre; cursor: text; - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; + transform-origin: 0% 0%; +} + +/* Only necessary in Google Chrome, see issue 14205, and most unfortunately + * the problem doesn't show up in "text" reference tests. */ +.textLayer span.markedContent { + top: 0; + height: 0; } .textLayer .highlight { margin: -1px; padding: 1px; - - background-color: rgb(180, 0, 170); + background-color: rgba(180, 0, 170, 1); border-radius: 4px; } +.textLayer .highlight.appended { + position: initial; +} + .textLayer .highlight.begin { - border-radius: 4px 0px 0px 4px; + border-radius: 4px 0 0 4px; } .textLayer .highlight.end { - border-radius: 0px 4px 4px 0px; + border-radius: 0 4px 4px 0; } .textLayer .highlight.middle { - border-radius: 0px; + border-radius: 0; } .textLayer .highlight.selected { - background-color: rgb(0, 100, 0); + background-color: rgba(0, 100, 0, 1); } -.textLayer ::-moz-selection { background: rgb(0,0,255); } +.textLayer ::-moz-selection { + background: rgba(0, 0, 255, 1); +} -.textLayer ::selection { background: rgb(0,0,255); } +.textLayer ::selection { + background: rgba(0, 0, 255, 1); +} + +/* Avoids https://github.com/mozilla/pdf.js/issues/13840 in Chrome */ +.textLayer br::-moz-selection { + background: transparent; +} +.textLayer br::selection { + background: transparent; +} .textLayer .endOfContent { display: block; position: absolute; - left: 0px; + left: 0; top: 100%; - right: 0px; - bottom: 0px; + right: 0; + bottom: 0; z-index: -1; cursor: default; -webkit-user-select: none; -moz-user-select: none; - -ms-user-select: none; user-select: none; } .textLayer .endOfContent.active { - top: 0px; + top: 0; } +:root { + --annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,"); +} + +@media (forced-colors: active) { + .annotationLayer .textWidgetAnnotation input:required, + .annotationLayer .textWidgetAnnotation textarea:required, + .annotationLayer .choiceWidgetAnnotation select:required, + .annotationLayer .buttonWidgetAnnotation.checkBox input:required, + .annotationLayer .buttonWidgetAnnotation.radioButton input:required { + outline: 1.5px solid selectedItem; + } +} + +.annotationLayer { + position: absolute; + top: 0; + left: 0; + pointer-events: none; + transform-origin: 0 0; +} + .annotationLayer section { position: absolute; + text-align: initial; + pointer-events: auto; + box-sizing: border-box; + transform-origin: 0 0; } .annotationLayer .linkAnnotation > a, @@ -95,16 +147,23 @@ height: 100%; } +.annotationLayer .buttonWidgetAnnotation.pushButton > canvas { + width: 100%; + height: 100%; +} + .annotationLayer .linkAnnotation > a:hover, .annotationLayer .buttonWidgetAnnotation.pushButton > a:hover { opacity: 0.2; - background: #ff0; - box-shadow: 0px 2px 10px #ff0; + background: rgba(255, 255, 0, 1); + box-shadow: 0 2px 10px rgba(255, 255, 0, 1); } .annotationLayer .textAnnotation img { position: absolute; cursor: pointer; + width: 100%; + height: 100%; } .annotationLayer .textWidgetAnnotation input, @@ -112,17 +171,24 @@ .annotationLayer .choiceWidgetAnnotation select, .annotationLayer .buttonWidgetAnnotation.checkBox input, .annotationLayer .buttonWidgetAnnotation.radioButton input { - background-color: rgba(0, 54, 255, 0.13); + background-image: var(--annotation-unfocused-field-background); border: 1px solid transparent; box-sizing: border-box; - font-size: 9px; + font: calc(9px * var(--scale-factor)) sans-serif; height: 100%; margin: 0; - padding: 0 3px; vertical-align: top; width: 100%; } +.annotationLayer .textWidgetAnnotation input:required, +.annotationLayer .textWidgetAnnotation textarea:required, +.annotationLayer .choiceWidgetAnnotation select:required, +.annotationLayer .buttonWidgetAnnotation.checkBox input:required, +.annotationLayer .buttonWidgetAnnotation.radioButton input:required { + outline: 1.5px solid red; +} + .annotationLayer .choiceWidgetAnnotation select option { padding: 0; } @@ -132,8 +198,6 @@ } .annotationLayer .textWidgetAnnotation textarea { - font: message-box; - font-size: 9px; resize: none; } @@ -152,7 +216,7 @@ .annotationLayer .choiceWidgetAnnotation select:hover, .annotationLayer .buttonWidgetAnnotation.checkBox input:hover, .annotationLayer .buttonWidgetAnnotation.radioButton input:hover { - border: 1px solid #000; + border: 1px solid rgba(0, 0, 0, 1); } .annotationLayer .textWidgetAnnotation input:focus, @@ -162,11 +226,21 @@ border: 1px solid transparent; } +.annotationLayer .textWidgetAnnotation input :focus, +.annotationLayer .textWidgetAnnotation textarea :focus, +.annotationLayer .choiceWidgetAnnotation select :focus, +.annotationLayer .buttonWidgetAnnotation.checkBox :focus, +.annotationLayer .buttonWidgetAnnotation.radioButton :focus { + background-image: none; + background-color: transparent; + outline: auto; +} + .annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before, .annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after, .annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before { - background-color: #000; - content: ''; + background-color: CanvasText; + content: ""; display: block; position: absolute; } @@ -179,13 +253,11 @@ } .annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before { - -webkit-transform: rotate(45deg); - transform: rotate(45deg); + transform: rotate(45deg); } .annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after { - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); + transform: rotate(-45deg); } .annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before { @@ -209,7 +281,7 @@ * area, causing horizontal scrolling. We avoid this by extending the width * when the element has focus and revert this when it loses focus. */ - width: 115%; + width: 103%; } .annotationLayer .buttonWidgetAnnotation.checkBox input, @@ -217,46 +289,59 @@ -webkit-appearance: none; -moz-appearance: none; appearance: none; - padding: 0; +} + +.annotationLayer .popupTriggerArea { + height: 100%; + width: 100%; } .annotationLayer .popupWrapper { position: absolute; - width: 20em; + font-size: calc(9px * var(--scale-factor)); + width: 100%; + min-width: calc(180px * var(--scale-factor)); + pointer-events: none; } .annotationLayer .popup { position: absolute; - z-index: 200; - max-width: 20em; - background-color: #FFFF99; - box-shadow: 0px 2px 5px #888; - border-radius: 2px; - padding: 6px; - margin-left: 5px; + max-width: calc(180px * var(--scale-factor)); + background-color: rgba(255, 255, 153, 1); + box-shadow: 0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor)) + rgba(136, 136, 136, 1); + border-radius: calc(2px * var(--scale-factor)); + padding: calc(6px * var(--scale-factor)); + margin-left: calc(5px * var(--scale-factor)); cursor: pointer; font: message-box; - font-size: 9px; + white-space: normal; word-wrap: break-word; + pointer-events: auto; } .annotationLayer .popup > * { - font-size: 9px; + font-size: calc(9px * var(--scale-factor)); } .annotationLayer .popup h1 { display: inline-block; } -.annotationLayer .popup span { +.annotationLayer .popupDate { display: inline-block; - margin-left: 5px; + margin-left: calc(5px * var(--scale-factor)); } -.annotationLayer .popup p { - border-top: 1px solid #333; - margin-top: 2px; - padding-top: 2px; +.annotationLayer .popupContent { + border-top: 1px solid rgba(51, 51, 51, 1); + margin-top: calc(2px * var(--scale-factor)); + padding-top: calc(2px * var(--scale-factor)); +} + +.annotationLayer .richText > * { + white-space: pre-wrap; + font-size: calc(9px * var(--scale-factor)); } .annotationLayer .highlightAnnotation, @@ -276,6 +361,527 @@ cursor: pointer; } +.annotationLayer section svg { + position: absolute; + width: 100%; + height: 100%; +} + +.annotationLayer .annotationTextContent { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + color: transparent; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + pointer-events: none; +} + +.annotationLayer .annotationTextContent span { + width: 100%; + display: inline-block; +} + + +:root { + --xfa-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,"); +} + +@media (forced-colors: active) { + .xfaLayer *:required { + outline: 1.5px solid selectedItem; + } +} + +.xfaLayer .highlight { + margin: -1px; + padding: 1px; + background-color: rgba(239, 203, 237, 1); + border-radius: 4px; +} + +.xfaLayer .highlight.appended { + position: initial; +} + +.xfaLayer .highlight.begin { + border-radius: 4px 0 0 4px; +} + +.xfaLayer .highlight.end { + border-radius: 0 4px 4px 0; +} + +.xfaLayer .highlight.middle { + border-radius: 0; +} + +.xfaLayer .highlight.selected { + background-color: rgba(203, 223, 203, 1); +} + +.xfaLayer ::-moz-selection { + background: rgba(0, 0, 255, 1); +} + +.xfaLayer ::selection { + background: rgba(0, 0, 255, 1); +} + +.xfaPage { + overflow: hidden; + position: relative; +} + +.xfaContentarea { + position: absolute; +} + +.xfaPrintOnly { + display: none; +} + +.xfaLayer { + position: absolute; + text-align: initial; + top: 0; + left: 0; + transform-origin: 0 0; + line-height: 1.2; +} + +.xfaLayer * { + color: inherit; + font: inherit; + font-style: inherit; + font-weight: inherit; + font-kerning: inherit; + letter-spacing: -0.01px; + text-align: inherit; + text-decoration: inherit; + box-sizing: border-box; + background-color: transparent; + padding: 0; + margin: 0; + pointer-events: auto; + line-height: inherit; +} + +.xfaLayer *:required { + outline: 1.5px solid red; +} + +.xfaLayer div { + pointer-events: none; +} + +.xfaLayer svg { + pointer-events: none; +} + +.xfaLayer svg * { + pointer-events: none; +} + +.xfaLayer a { + color: blue; +} + +.xfaRich li { + margin-left: 3em; +} + +.xfaFont { + color: black; + font-weight: normal; + font-kerning: none; + font-size: 10px; + font-style: normal; + letter-spacing: 0; + text-decoration: none; + vertical-align: 0; +} + +.xfaCaption { + overflow: hidden; + flex: 0 0 auto; +} + +.xfaCaptionForCheckButton { + overflow: hidden; + flex: 1 1 auto; +} + +.xfaLabel { + height: 100%; + width: 100%; +} + +.xfaLeft { + display: flex; + flex-direction: row; + align-items: center; +} + +.xfaRight { + display: flex; + flex-direction: row-reverse; + align-items: center; +} + +.xfaLeft > .xfaCaption, +.xfaLeft > .xfaCaptionForCheckButton, +.xfaRight > .xfaCaption, +.xfaRight > .xfaCaptionForCheckButton { + max-height: 100%; +} + +.xfaTop { + display: flex; + flex-direction: column; + align-items: flex-start; +} + +.xfaBottom { + display: flex; + flex-direction: column-reverse; + align-items: flex-start; +} + +.xfaTop > .xfaCaption, +.xfaTop > .xfaCaptionForCheckButton, +.xfaBottom > .xfaCaption, +.xfaBottom > .xfaCaptionForCheckButton { + width: 100%; +} + +.xfaBorder { + background-color: transparent; + position: absolute; + pointer-events: none; +} + +.xfaWrapped { + width: 100%; + height: 100%; +} + +.xfaTextfield:focus, +.xfaSelect:focus { + background-image: none; + background-color: transparent; + outline: auto; + outline-offset: -1px; +} + +.xfaCheckbox:focus, +.xfaRadio:focus { + outline: auto; +} + +.xfaTextfield, +.xfaSelect { + height: 100%; + width: 100%; + flex: 1 1 auto; + border: none; + resize: none; + background-image: var(--xfa-unfocused-field-background); +} + +.xfaTop > .xfaTextfield, +.xfaTop > .xfaSelect, +.xfaBottom > .xfaTextfield, +.xfaBottom > .xfaSelect { + flex: 0 1 auto; +} + +.xfaButton { + cursor: pointer; + width: 100%; + height: 100%; + border: none; + text-align: center; +} + +.xfaLink { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; +} + +.xfaCheckbox, +.xfaRadio { + width: 100%; + height: 100%; + flex: 0 0 auto; + border: none; +} + +.xfaRich { + white-space: pre-wrap; + width: 100%; + height: 100%; +} + +.xfaImage { + -o-object-position: left top; + object-position: left top; + -o-object-fit: contain; + object-fit: contain; + width: 100%; + height: 100%; +} + +.xfaLrTb, +.xfaRlTb, +.xfaTb { + display: flex; + flex-direction: column; + align-items: stretch; +} + +.xfaLr { + display: flex; + flex-direction: row; + align-items: stretch; +} + +.xfaRl { + display: flex; + flex-direction: row-reverse; + align-items: stretch; +} + +.xfaTb > div { + justify-content: left; +} + +.xfaPosition { + position: relative; +} + +.xfaArea { + position: relative; +} + +.xfaValignMiddle { + display: flex; + align-items: center; +} + +.xfaTable { + display: flex; + flex-direction: column; + align-items: stretch; +} + +.xfaTable .xfaRow { + display: flex; + flex-direction: row; + align-items: stretch; +} + +.xfaTable .xfaRlRow { + display: flex; + flex-direction: row-reverse; + align-items: stretch; + flex: 1; +} + +.xfaTable .xfaRlRow > div { + flex: 1; +} + +.xfaNonInteractive input, +.xfaNonInteractive textarea, +.xfaDisabled input, +.xfaDisabled textarea, +.xfaReadOnly input, +.xfaReadOnly textarea { + background: initial; +} + +@media print { + .xfaTextfield, + .xfaSelect { + background: transparent; + } + + .xfaSelect { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + text-indent: 1px; + text-overflow: ""; + } +} + + +:root { + --focus-outline: solid 2px blue; + --hover-outline: dashed 2px blue; + --freetext-line-height: 1.35; + --freetext-padding: 2px; + --editorInk-editing-cursor: url(images/toolbarButton-editorInk.svg) 0 16; +} + +@media (forced-colors: active) { + :root { + --focus-outline: solid 3px ButtonText; + --hover-outline: dashed 3px ButtonText; + } +} + +[data-editor-rotation="90"] { + transform: rotate(90deg); +} +[data-editor-rotation="180"] { + transform: rotate(180deg); +} +[data-editor-rotation="270"] { + transform: rotate(270deg); +} + +.annotationEditorLayer { + background: transparent; + position: absolute; + top: 0; + left: 0; + font-size: calc(100px * var(--scale-factor)); + transform-origin: 0 0; +} + +.annotationEditorLayer .selectedEditor { + outline: var(--focus-outline); + resize: none; +} + +.annotationEditorLayer .freeTextEditor { + position: absolute; + background: transparent; + border-radius: 3px; + padding: calc(var(--freetext-padding) * var(--scale-factor)); + resize: none; + width: auto; + height: auto; + z-index: 1; + transform-origin: 0 0; + touch-action: none; +} + +.annotationEditorLayer .freeTextEditor .internal { + background: transparent; + border: none; + top: 0; + left: 0; + overflow: visible; + white-space: nowrap; + resize: none; + font: 10px sans-serif; + line-height: var(--freetext-line-height); +} + +.annotationEditorLayer .freeTextEditor .overlay { + position: absolute; + display: none; + background: transparent; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.annotationEditorLayer .freeTextEditor .overlay.enabled { + display: block; +} + +.annotationEditorLayer .freeTextEditor .internal:empty::before { + content: attr(default-content); + color: gray; +} + +.annotationEditorLayer .freeTextEditor .internal:focus { + outline: none; +} + +.annotationEditorLayer .inkEditor.disabled { + resize: none; +} + +.annotationEditorLayer .inkEditor.disabled.selectedEditor { + resize: horizontal; +} + +.annotationEditorLayer .freeTextEditor:hover:not(.selectedEditor), +.annotationEditorLayer .inkEditor:hover:not(.selectedEditor) { + outline: var(--hover-outline); +} + +.annotationEditorLayer .inkEditor { + position: absolute; + background: transparent; + border-radius: 3px; + overflow: auto; + width: 100%; + height: 100%; + z-index: 1; + transform-origin: 0 0; + cursor: auto; +} + +.annotationEditorLayer .inkEditor.editing { + resize: none; + cursor: var(--editorInk-editing-cursor), pointer; +} + +.annotationEditorLayer .inkEditor .inkEditorCanvas { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + touch-action: none; +} + +:root { + --viewer-container-height: 0; + --pdfViewer-padding-bottom: 0; + --page-margin: 1px auto -8px; + --page-border: 9px solid transparent; + --page-border-image: url(images/shadow.png) 9 9 repeat; + --spreadHorizontalWrapped-margin-LR: -3.5px; + --scale-factor: 1; +} + +@media screen and (forced-colors: active) { + :root { + --pdfViewer-padding-bottom: 9px; + --page-margin: 8px auto -1px; + --page-border: 1px solid CanvasText; + --page-border-image: none; + --spreadHorizontalWrapped-margin-LR: 3.5px; + } +} + +[data-main-rotation="90"] { + transform: rotate(90deg) translateY(-100%); +} +[data-main-rotation="180"] { + transform: rotate(180deg) translate(-100%, -100%); +} +[data-main-rotation="270"] { + transform: rotate(270deg) translateX(-100%); +} + +.pdfViewer { + padding-bottom: var(--pdfViewer-padding-bottom); +} + .pdfViewer .canvasWrapper { overflow: hidden; } @@ -284,19 +890,24 @@ direction: ltr; width: 816px; height: 1056px; - margin: 1px auto -8px auto; + margin: var(--page-margin); position: relative; overflow: visible; - border: 9px solid transparent; + border: var(--page-border); + -o-border-image: var(--page-border-image); + border-image: var(--page-border-image); background-clip: content-box; - -webkit-border-image: url(images/shadow.png) 9 9 repeat; - -o-border-image: url(images/shadow.png) 9 9 repeat; - border-image: url(images/shadow.png) 9 9 repeat; - background-color: white; + background-color: rgba(255, 255, 255, 1); +} + +.pdfViewer .dummyPage { + position: relative; + width: 0; + height: var(--viewer-container-height); } .pdfViewer.removePageBorders .page { - margin: 0px auto 10px auto; + margin: 0 auto 10px; border: none; } @@ -309,13 +920,16 @@ border: none; } -.pdfViewer.scrollHorizontal, .pdfViewer.scrollWrapped, .spread { +.pdfViewer.scrollHorizontal, +.pdfViewer.scrollWrapped, +.spread { margin-left: 3.5px; margin-right: 3.5px; text-align: center; } -.pdfViewer.scrollHorizontal, .spread { +.pdfViewer.scrollHorizontal, +.spread { white-space: nowrap; } @@ -327,6 +941,7 @@ } .spread .page, +.spread .dummyPage, .pdfViewer.scrollHorizontal .page, .pdfViewer.scrollWrapped .page, .pdfViewer.scrollHorizontal .spread, @@ -338,8 +953,8 @@ .spread .page, .pdfViewer.scrollHorizontal .page, .pdfViewer.scrollWrapped .page { - margin-left: -3.5px; - margin-right: -3.5px; + margin-left: var(--spreadHorizontalWrapped-margin-LR); + margin-right: var(--spreadHorizontalWrapped-margin-LR); } .pdfViewer.removePageBorders .spread .page, @@ -365,46 +980,191 @@ top: 0; right: 0; bottom: 0; - background: url('images/loading-icon.gif') center no-repeat; + background: url("images/loading-icon.gif") center no-repeat; +} +.pdfViewer .page .loadingIcon.notVisible { + background: none; +} + +.pdfViewer.enablePermissions .textLayer span { + -webkit-user-select: none !important; + -moz-user-select: none !important; + user-select: none !important; + cursor: not-allowed; } .pdfPresentationMode .pdfViewer { - margin-left: 0; - margin-right: 0; + padding-bottom: 0; } -.pdfPresentationMode .pdfViewer .page, -.pdfPresentationMode .pdfViewer .spread { - display: block; +.pdfPresentationMode .spread { + margin: 0; } -.pdfPresentationMode .pdfViewer .page, -.pdfPresentationMode .pdfViewer.removePageBorders .page { - margin-left: auto; - margin-right: auto; -} - -.pdfPresentationMode:-ms-fullscreen .pdfViewer .page { - margin-bottom: 100% !important; -} - -.pdfPresentationMode:-webkit-full-screen .pdfViewer .page { - margin-bottom: 100%; - border: 0; -} - -.pdfPresentationMode:-moz-full-screen .pdfViewer .page { - margin-bottom: 100%; - border: 0; -} - -.pdfPresentationMode:fullscreen .pdfViewer .page { - margin-bottom: 100%; - border: 0; +.pdfPresentationMode .pdfViewer .page { + margin: 0 auto; + border: 2px solid transparent; } :root { + --dir-factor: 1; --sidebar-width: 200px; + --sidebar-transition-duration: 200ms; + --sidebar-transition-timing-function: ease; + --scale-select-container-width: 140px; + --scale-select-overflow: 22px; + + --toolbar-icon-opacity: 0.7; + --doorhanger-icon-opacity: 0.9; + + --main-color: rgba(12, 12, 13, 1); + --body-bg-color: rgba(237, 237, 240, 1); + --errorWrapper-bg-color: rgba(255, 110, 110, 1); + --progressBar-percent: 0%; + --progressBar-end-offset: 0; + --progressBar-color: rgba(10, 132, 255, 1); + --progressBar-indeterminate-bg-color: rgba(221, 221, 222, 1); + --progressBar-indeterminate-blend-color: rgba(116, 177, 239, 1); + --scrollbar-color: auto; + --scrollbar-bg-color: auto; + --toolbar-icon-bg-color: rgba(0, 0, 0, 1); + --toolbar-icon-hover-bg-color: rgba(0, 0, 0, 1); + + --sidebar-narrow-bg-color: rgba(237, 237, 240, 0.9); + --sidebar-toolbar-bg-color: rgba(245, 246, 247, 1); + --toolbar-bg-color: rgba(249, 249, 250, 1); + --toolbar-border-color: rgba(204, 204, 204, 1); + --button-hover-color: rgba(221, 222, 223, 1); + --toggled-btn-color: rgba(0, 0, 0, 1); + --toggled-btn-bg-color: rgba(0, 0, 0, 0.3); + --toggled-hover-active-btn-color: rgba(0, 0, 0, 0.4); + --dropdown-btn-bg-color: rgba(215, 215, 219, 1); + --separator-color: rgba(0, 0, 0, 0.3); + --field-color: rgba(6, 6, 6, 1); + --field-bg-color: rgba(255, 255, 255, 1); + --field-border-color: rgba(187, 187, 188, 1); + --treeitem-color: rgba(0, 0, 0, 0.8); + --treeitem-hover-color: rgba(0, 0, 0, 0.9); + --treeitem-selected-color: rgba(0, 0, 0, 0.9); + --treeitem-selected-bg-color: rgba(0, 0, 0, 0.25); + --sidebaritem-bg-color: rgba(0, 0, 0, 0.15); + --doorhanger-bg-color: rgba(255, 255, 255, 1); + --doorhanger-border-color: rgba(12, 12, 13, 0.2); + --doorhanger-hover-color: rgba(12, 12, 13, 1); + --doorhanger-hover-bg-color: rgba(237, 237, 237, 1); + --doorhanger-separator-color: rgba(222, 222, 222, 1); + --dialog-button-border: 0 none; + --dialog-button-bg-color: rgba(12, 12, 13, 0.1); + --dialog-button-hover-bg-color: rgba(12, 12, 13, 0.3); + + --loading-icon: url(images/loading.svg); + --treeitem-expanded-icon: url(images/treeitem-expanded.svg); + --treeitem-collapsed-icon: url(images/treeitem-collapsed.svg); + --toolbarButton-editorFreeText-icon: url(images/toolbarButton-editorFreeText.svg); + --toolbarButton-editorInk-icon: url(images/toolbarButton-editorInk.svg); + --toolbarButton-menuArrow-icon: url(images/toolbarButton-menuArrow.svg); + --toolbarButton-sidebarToggle-icon: url(images/toolbarButton-sidebarToggle.svg); + --toolbarButton-secondaryToolbarToggle-icon: url(images/toolbarButton-secondaryToolbarToggle.svg); + --toolbarButton-pageUp-icon: url(images/toolbarButton-pageUp.svg); + --toolbarButton-pageDown-icon: url(images/toolbarButton-pageDown.svg); + --toolbarButton-zoomOut-icon: url(images/toolbarButton-zoomOut.svg); + --toolbarButton-zoomIn-icon: url(images/toolbarButton-zoomIn.svg); + --toolbarButton-presentationMode-icon: url(images/toolbarButton-presentationMode.svg); + --toolbarButton-print-icon: url(images/toolbarButton-print.svg); + --toolbarButton-openFile-icon: url(images/toolbarButton-openFile.svg); + --toolbarButton-download-icon: url(images/toolbarButton-download.svg); + --toolbarButton-bookmark-icon: url(images/toolbarButton-bookmark.svg); + --toolbarButton-viewThumbnail-icon: url(images/toolbarButton-viewThumbnail.svg); + --toolbarButton-viewOutline-icon: url(images/toolbarButton-viewOutline.svg); + --toolbarButton-viewAttachments-icon: url(images/toolbarButton-viewAttachments.svg); + --toolbarButton-viewLayers-icon: url(images/toolbarButton-viewLayers.svg); + --toolbarButton-currentOutlineItem-icon: url(images/toolbarButton-currentOutlineItem.svg); + --toolbarButton-search-icon: url(images/toolbarButton-search.svg); + --findbarButton-previous-icon: url(images/findbarButton-previous.svg); + --findbarButton-next-icon: url(images/findbarButton-next.svg); + --secondaryToolbarButton-firstPage-icon: url(images/secondaryToolbarButton-firstPage.svg); + --secondaryToolbarButton-lastPage-icon: url(images/secondaryToolbarButton-lastPage.svg); + --secondaryToolbarButton-rotateCcw-icon: url(images/secondaryToolbarButton-rotateCcw.svg); + --secondaryToolbarButton-rotateCw-icon: url(images/secondaryToolbarButton-rotateCw.svg); + --secondaryToolbarButton-selectTool-icon: url(images/secondaryToolbarButton-selectTool.svg); + --secondaryToolbarButton-handTool-icon: url(images/secondaryToolbarButton-handTool.svg); + --secondaryToolbarButton-scrollPage-icon: url(images/secondaryToolbarButton-scrollPage.svg); + --secondaryToolbarButton-scrollVertical-icon: url(images/secondaryToolbarButton-scrollVertical.svg); + --secondaryToolbarButton-scrollHorizontal-icon: url(images/secondaryToolbarButton-scrollHorizontal.svg); + --secondaryToolbarButton-scrollWrapped-icon: url(images/secondaryToolbarButton-scrollWrapped.svg); + --secondaryToolbarButton-spreadNone-icon: url(images/secondaryToolbarButton-spreadNone.svg); + --secondaryToolbarButton-spreadOdd-icon: url(images/secondaryToolbarButton-spreadOdd.svg); + --secondaryToolbarButton-spreadEven-icon: url(images/secondaryToolbarButton-spreadEven.svg); + --secondaryToolbarButton-documentProperties-icon: url(images/secondaryToolbarButton-documentProperties.svg); +} + +[dir="rtl"]:root { + --dir-factor: -1; +} + +@media (prefers-color-scheme: dark) { + :root { + --main-color: rgba(249, 249, 250, 1); + --body-bg-color: rgba(42, 42, 46, 1); + --errorWrapper-bg-color: rgba(169, 14, 14, 1); + --progressBar-color: rgba(0, 96, 223, 1); + --progressBar-indeterminate-bg-color: rgba(40, 40, 43, 1); + --progressBar-indeterminate-blend-color: rgba(20, 68, 133, 1); + --scrollbar-color: rgba(121, 121, 123, 1); + --scrollbar-bg-color: rgba(35, 35, 39, 1); + --toolbar-icon-bg-color: rgba(255, 255, 255, 1); + --toolbar-icon-hover-bg-color: rgba(255, 255, 255, 1); + + --sidebar-narrow-bg-color: rgba(42, 42, 46, 0.9); + --sidebar-toolbar-bg-color: rgba(50, 50, 52, 1); + --toolbar-bg-color: rgba(56, 56, 61, 1); + --toolbar-border-color: rgba(12, 12, 13, 1); + --button-hover-color: rgba(102, 102, 103, 1); + --toggled-btn-color: rgba(255, 255, 255, 1); + --toggled-btn-bg-color: rgba(0, 0, 0, 0.3); + --toggled-hover-active-btn-color: rgba(0, 0, 0, 0.4); + --dropdown-btn-bg-color: rgba(74, 74, 79, 1); + --separator-color: rgba(0, 0, 0, 0.3); + --field-color: rgba(250, 250, 250, 1); + --field-bg-color: rgba(64, 64, 68, 1); + --field-border-color: rgba(115, 115, 115, 1); + --treeitem-color: rgba(255, 255, 255, 0.8); + --treeitem-hover-color: rgba(255, 255, 255, 0.9); + --treeitem-selected-color: rgba(255, 255, 255, 0.9); + --treeitem-selected-bg-color: rgba(255, 255, 255, 0.25); + --sidebaritem-bg-color: rgba(255, 255, 255, 0.15); + --doorhanger-bg-color: rgba(74, 74, 79, 1); + --doorhanger-border-color: rgba(39, 39, 43, 1); + --doorhanger-hover-color: rgba(249, 249, 250, 1); + --doorhanger-hover-bg-color: rgba(93, 94, 98, 1); + --doorhanger-separator-color: rgba(92, 92, 97, 1); + --dialog-button-bg-color: rgba(92, 92, 97, 1); + --dialog-button-hover-bg-color: rgba(115, 115, 115, 1); + + /* This image is used in elements, which unfortunately means that + * the `mask-image` approach used with all of the other images doesn't work + * here; hence why we still have two versions of this particular image. */ + --loading-icon: url(images/loading-dark.svg); + } +} + +@media screen and (forced-colors: active) { + :root { + --button-hover-color: Highlight; + --doorhanger-hover-bg-color: Highlight; + --toolbar-icon-opacity: 1; + --toolbar-icon-bg-color: ButtonText; + --toolbar-icon-hover-bg-color: ButtonFace; + --toggled-btn-color: HighlightText; + --toggled-btn-bg-color: LinkText; + --doorhanger-hover-color: ButtonFace; + --doorhanger-border-color-whcm: 1px solid ButtonText; + --doorhanger-triangle-opacity-whcm: 0; + --dialog-button-border: 1px solid Highlight; + --dialog-button-hover-bg-color: Highlight; + --dialog-button-hover-color: ButtonFace; + --field-border-color: ButtonText; + } } * { @@ -412,18 +1172,14 @@ margin: 0; } -html { - height: 100%; - width: 100%; - /* Font size is needed to make the activity bar the correct size. */ - font-size: 10px; -} - +html, body { height: 100%; width: 100%; - background-color: #404040; - background-image: url(images/texture.png); +} + +body { + background-color: var(--body-bg-color); } body, @@ -432,28 +1188,17 @@ button, select { font: message-box; outline: none; + scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color); } -.hidden { - display: none !important; -} +.hidden, [hidden] { display: none !important; } -#viewerContainer.pdfPresentationMode:-ms-fullscreen { - top: 0px !important; - overflow: hidden !important; -} - -#viewerContainer.pdfPresentationMode:-ms-fullscreen::-ms-backdrop { - background-color: #000; -} - #viewerContainer.pdfPresentationMode:-webkit-full-screen { - top: 0px; - border-top: 2px solid transparent; - background-color: #000; + top: 0; + background-color: rgba(0, 0, 0, 1); width: 100%; height: 100%; overflow: hidden; @@ -462,41 +1207,15 @@ select { user-select: none; } -#viewerContainer.pdfPresentationMode:-moz-full-screen { - top: 0px; - border-top: 2px solid transparent; - background-color: #000; - width: 100%; - height: 100%; - overflow: hidden; - cursor: none; - -moz-user-select: none; - user-select: none; -} - -#viewerContainer.pdfPresentationMode:-ms-fullscreen { - top: 0px; - border-top: 2px solid transparent; - background-color: #000; - width: 100%; - height: 100%; - overflow: hidden; - cursor: none; - -ms-user-select: none; - user-select: none; -} - #viewerContainer.pdfPresentationMode:fullscreen { - top: 0px; - border-top: 2px solid transparent; - background-color: #000; + top: 0; + background-color: rgba(0, 0, 0, 1); width: 100%; height: 100%; overflow: hidden; cursor: none; -webkit-user-select: none; -moz-user-select: none; - -ms-user-select: none; user-select: none; } @@ -504,36 +1223,20 @@ select { display: none; } -.pdfPresentationMode:-moz-full-screen a:not(.internalLink) { - display: none; -} - -.pdfPresentationMode:-ms-fullscreen a:not(.internalLink) { - display: none; -} - .pdfPresentationMode:fullscreen a:not(.internalLink) { display: none; } -.pdfPresentationMode:-webkit-full-screen .textLayer > span { +.pdfPresentationMode:-webkit-full-screen .textLayer span { cursor: none; } -.pdfPresentationMode:-moz-full-screen .textLayer > span { - cursor: none; -} - -.pdfPresentationMode:-ms-fullscreen .textLayer > span { - cursor: none; -} - -.pdfPresentationMode:fullscreen .textLayer > span { +.pdfPresentationMode:fullscreen .textLayer span { cursor: none; } .pdfPresentationMode.pdfPresentationModeControls > *, -.pdfPresentationMode.pdfPresentationModeControls .textLayer > span { +.pdfPresentationMode.pdfPresentationModeControls .textLayer span { cursor: default; } @@ -543,60 +1246,58 @@ select { position: relative; } +[dir="ltr"] #sidebarContainer { + left: calc(-1 * var(--sidebar-width)); +} + +[dir="rtl"] #sidebarContainer { + right: calc(-1 * var(--sidebar-width)); +} + +[dir="ltr"] #sidebarContainer { + border-right: var(--doorhanger-border-color-whcm); +} + +[dir="rtl"] #sidebarContainer { + border-left: var(--doorhanger-border-color-whcm); +} + +[dir="ltr"] #sidebarContainer { + transition-property: left; +} + +[dir="rtl"] #sidebarContainer { + transition-property: right; +} + #sidebarContainer { position: absolute; top: 32px; bottom: 0; - width: 200px; /* Here, and elsewhere below, keep the constant value for compatibility - with older browsers that lack support for CSS variables. */ + inset-inline-start: calc(-1 * var(--sidebar-width)); width: var(--sidebar-width); visibility: hidden; z-index: 100; - border-top: 1px solid #333; - - -webkit-transition-duration: 200ms; - - transition-duration: 200ms; - -webkit-transition-timing-function: ease; - transition-timing-function: ease; -} -html[dir='ltr'] #sidebarContainer { - -webkit-transition-property: left; - transition-property: left; - left: -200px; - left: calc(-1 * var(--sidebar-width)); -} -html[dir='rtl'] #sidebarContainer { - -webkit-transition-property: right; - transition-property: right; - right: -200px; - right: calc(-1 * var(--sidebar-width)); -} - -.loadingInProgress #sidebarContainer { - top: 36px; -} - -#outerContainer.sidebarResizing #sidebarContainer { - /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */ - -webkit-transition-duration: 0s; - transition-duration: 0s; - /* Prevent e.g. the thumbnails being selected when the sidebar is resized. */ - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + border-top: 1px solid rgba(51, 51, 51, 1); + -webkit-border-end: var(--doorhanger-border-color-whcm); + border-inline-end: var(--doorhanger-border-color-whcm); + transition-property: inset-inline-start; + transition-duration: var(--sidebar-transition-duration); + transition-timing-function: var(--sidebar-transition-timing-function); } #outerContainer.sidebarMoving #sidebarContainer, #outerContainer.sidebarOpen #sidebarContainer { visibility: visible; } -html[dir='ltr'] #outerContainer.sidebarOpen #sidebarContainer { - left: 0px; +[dir="ltr"] #outerContainer.sidebarOpen #sidebarContainer { + left: 0; } -html[dir='rtl'] #outerContainer.sidebarOpen #sidebarContainer { - right: 0px; +[dir="rtl"] #outerContainer.sidebarOpen #sidebarContainer { + right: 0; +} +#outerContainer.sidebarOpen #sidebarContainer { + inset-inline-start: 0; } #mainContainer { @@ -605,30 +1306,30 @@ html[dir='rtl'] #outerContainer.sidebarOpen #sidebarContainer { right: 0; bottom: 0; left: 0; - min-width: 320px; + min-width: 350px; +} + +[dir="ltr"] #sidebarContent { + left: 0; +} + +[dir="rtl"] #sidebarContent { + right: 0; } #sidebarContent { top: 32px; bottom: 0; + inset-inline-start: 0; overflow: auto; - -webkit-overflow-scrolling: touch; position: absolute; width: 100%; - background-color: hsla(0,0%,0%,.1); -} -html[dir='ltr'] #sidebarContent { - left: 0; - box-shadow: inset -1px 0 0 hsla(0,0%,0%,.25); -} -html[dir='rtl'] #sidebarContent { - right: 0; - box-shadow: inset 1px 0 0 hsla(0,0%,0%,.25); + background-color: rgba(0, 0, 0, 0.1); + box-shadow: inset calc(-1px * var(--dir-factor)) 0 0 rgba(0, 0, 0, 0.25); } #viewerContainer { overflow: auto; - -webkit-overflow-scrolling: touch; position: absolute; top: 32px; right: 0; @@ -637,37 +1338,31 @@ html[dir='rtl'] #sidebarContent { outline: none; } #viewerContainer:not(.pdfPresentationMode) { - -webkit-transition-duration: 200ms; - transition-duration: 200ms; - -webkit-transition-timing-function: ease; - transition-timing-function: ease; -} -html[dir='ltr'] #viewerContainer { - box-shadow: inset 1px 0 0 hsla(0,0%,100%,.05); -} -html[dir='rtl'] #viewerContainer { - box-shadow: inset -1px 0 0 hsla(0,0%,100%,.05); + transition-duration: var(--sidebar-transition-duration); + transition-timing-function: var(--sidebar-transition-timing-function); } -#outerContainer.sidebarResizing #viewerContainer { - /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */ - -webkit-transition-duration: 0s; - transition-duration: 0s; -} - -html[dir='ltr'] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) { - -webkit-transition-property: left; - transition-property: left; - left: 200px; +[dir="ltr"] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) { left: var(--sidebar-width); } -html[dir='rtl'] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) { - -webkit-transition-property: right; - transition-property: right; - right: 200px; + +[dir="rtl"] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) { right: var(--sidebar-width); } +[dir="ltr"] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) { + transition-property: left; +} + +[dir="rtl"] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) { + transition-property: right; +} + +#outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) { + inset-inline-start: var(--sidebar-width); + transition-property: inset-inline-start; +} + .toolbar { position: relative; left: 0; @@ -683,336 +1378,582 @@ html[dir='rtl'] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentatio #toolbarSidebar { width: 100%; height: 32px; - background-color: #424242; /* fallback */ - background-image: url(images/texture.png), - -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,30%,.99)), to(hsla(0,0%,25%,.95))); - background-image: url(images/texture.png), - linear-gradient(hsla(0,0%,30%,.99), hsla(0,0%,25%,.95)); + background-color: var(--sidebar-toolbar-bg-color); + box-shadow: inset calc(-1px * var(--dir-factor)) 0 0 rgba(0, 0, 0, 0.25), + 0 1px 0 rgba(0, 0, 0, 0.15), 0 0 1px rgba(0, 0, 0, 0.1); } -html[dir='ltr'] #toolbarSidebar { - box-shadow: inset -1px 0 0 rgba(0, 0, 0, 0.25), - inset 0 -1px 0 hsla(0,0%,100%,.05), - 0 1px 0 hsla(0,0%,0%,.15), - 0 0 1px hsla(0,0%,0%,.1); + +[dir="ltr"] #sidebarResizer { + right: -6px; } -html[dir='rtl'] #toolbarSidebar { - box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.25), - inset 0 1px 0 hsla(0,0%,100%,.05), - 0 1px 0 hsla(0,0%,0%,.15), - 0 0 1px hsla(0,0%,0%,.1); + +[dir="rtl"] #sidebarResizer { + left: -6px; } #sidebarResizer { position: absolute; top: 0; bottom: 0; + inset-inline-end: -6px; width: 6px; z-index: 200; cursor: ew-resize; } -html[dir='ltr'] #sidebarResizer { - right: -6px; -} -html[dir='rtl'] #sidebarResizer { - left: -6px; -} -#toolbarContainer, .findbar, .secondaryToolbar { +#toolbarContainer, +.findbar, +.secondaryToolbar, +.editorParamsToolbar { position: relative; height: 32px; - background-color: #474747; /* fallback */ - background-image: url(images/texture.png), - -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,32%,.99)), to(hsla(0,0%,27%,.95))); - background-image: url(images/texture.png), - linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95)); -} -html[dir='ltr'] #toolbarContainer, .findbar, .secondaryToolbar { - box-shadow: inset 0 1px 1px hsla(0,0%,0%,.15), - inset 0 -1px 0 hsla(0,0%,100%,.05), - 0 1px 0 hsla(0,0%,0%,.15), - 0 1px 1px hsla(0,0%,0%,.1); -} -html[dir='rtl'] #toolbarContainer, .findbar, .secondaryToolbar { - box-shadow: inset 0 1px 1px hsla(0,0%,0%,.15), - inset 0 -1px 0 hsla(0,0%,100%,.05), - 0 1px 0 hsla(0,0%,0%,.15), - 0 1px 1px hsla(0,0%,0%,.1); + background-color: var(--toolbar-bg-color); + box-shadow: 0 1px 0 var(--toolbar-border-color); } #toolbarViewer { height: 32px; } +[dir="ltr"] #loadingBar { + left: 0; + right: var(--progressBar-end-offset); +} + +[dir="rtl"] #loadingBar { + right: 0; + left: var(--progressBar-end-offset); +} + +[dir="ltr"] #loadingBar { + transition-property: left; +} + +[dir="rtl"] #loadingBar { + transition-property: right; +} + #loadingBar { - position: relative; - width: 100%; + position: absolute; + inset-inline: 0 var(--progressBar-end-offset); height: 4px; - background-color: #333; - border-bottom: 1px solid #333; + background-color: var(--body-bg-color); + border-bottom: 1px solid var(--toolbar-border-color); + transition-property: inset-inline-start; + transition-duration: var(--sidebar-transition-duration); + transition-timing-function: var(--sidebar-transition-timing-function); +} + +[dir="ltr"] #outerContainer.sidebarOpen #loadingBar { + left: var(--sidebar-width); +} + +[dir="rtl"] #outerContainer.sidebarOpen #loadingBar { + right: var(--sidebar-width); +} + +#outerContainer.sidebarOpen #loadingBar { + inset-inline-start: var(--sidebar-width); } #loadingBar .progress { position: absolute; top: 0; left: 0; - width: 0%; + width: 100%; + transform: scaleX(var(--progressBar-percent)); + transform-origin: 0 0; height: 100%; - background-color: #ddd; + background-color: var(--progressBar-color); overflow: hidden; - -webkit-transition: width 200ms; - transition: width 200ms; + transition: transform 200ms; } @-webkit-keyframes progressIndeterminate { - 0% { left: -142px; } - 100% { left: 0; } + 0% { + transform: translateX(-142px); + } + 100% { + transform: translateX(0); + } } @keyframes progressIndeterminate { - 0% { left: -142px; } - 100% { left: 0; } + 0% { + transform: translateX(-142px); + } + 100% { + transform: translateX(0); + } } -#loadingBar .progress.indeterminate { - background-color: #999; - -webkit-transition: none; +#loadingBar.indeterminate .progress { + transform: none; + background-color: var(--progressBar-indeterminate-bg-color); transition: none; } -#loadingBar .progress.indeterminate .glimmer { +#loadingBar.indeterminate .progress .glimmer { position: absolute; top: 0; left: 0; height: 100%; width: calc(100% + 150px); - - background: repeating-linear-gradient(135deg, - #bbb 0, #999 5px, - #999 45px, #ddd 55px, - #ddd 95px, #bbb 100px); - - -webkit-animation: progressIndeterminate 950ms linear infinite; - - animation: progressIndeterminate 950ms linear infinite; + background: repeating-linear-gradient( + 135deg, + var(--progressBar-indeterminate-blend-color) 0, + var(--progressBar-indeterminate-bg-color) 5px, + var(--progressBar-indeterminate-bg-color) 45px, + var(--progressBar-color) 55px, + var(--progressBar-color) 95px, + var(--progressBar-indeterminate-blend-color) 100px + ); + -webkit-animation: progressIndeterminate 1s linear infinite; + animation: progressIndeterminate 1s linear infinite; } -.findbar, .secondaryToolbar { +#outerContainer.sidebarResizing #sidebarContainer, +#outerContainer.sidebarResizing #viewerContainer, +#outerContainer.sidebarResizing #loadingBar { + /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */ + transition-duration: 0s; +} + +.findbar, +.secondaryToolbar, +.editorParamsToolbar { top: 32px; position: absolute; z-index: 10000; height: auto; - min-width: 16px; - padding: 0px 6px 0px 6px; - margin: 4px 2px 4px 2px; - color: hsl(0,0%,85%); + padding: 0 4px; + margin: 4px 2px; font-size: 12px; line-height: 14px; text-align: left; cursor: default; } +[dir="ltr"] .findbar { + left: 64px; +} + +[dir="rtl"] .findbar { + right: 64px; +} + .findbar { + inset-inline-start: 64px; min-width: 300px; + background-color: var(--toolbar-bg-color); } .findbar > div { height: 32px; } -.findbar.wrapContainers > div { +[dir="ltr"] .findbar > div#findbarInputContainer { + margin-right: 4px; +} +[dir="rtl"] .findbar > div#findbarInputContainer { + margin-left: 4px; +} +.findbar > div#findbarInputContainer { + -webkit-margin-end: 4px; + margin-inline-end: 4px; +} +.findbar.wrapContainers > div, +.findbar.wrapContainers > div#findbarMessageContainer > * { clear: both; } .findbar.wrapContainers > div#findbarMessageContainer { height: auto; } -html[dir='ltr'] .findbar { - left: 68px; -} -html[dir='rtl'] .findbar { - right: 68px; + +.findbar input[type="checkbox"] { + pointer-events: none; } .findbar label { -webkit-user-select: none; -moz-user-select: none; - -ms-user-select: none; user-select: none; } +.findbar label:hover, +.findbar input:focus-visible + label { + color: var(--toggled-btn-color); + background-color: var(--button-hover-color); +} + +.findbar .toolbarField[type="checkbox"]:checked + .toolbarLabel { + background-color: var(--toggled-btn-bg-color) !important; + color: var(--toggled-btn-color); +} + #findInput { width: 200px; } -#findInput::-webkit-input-placeholder { - color: hsl(0, 0%, 75%); -} #findInput::-moz-placeholder { - font-style: italic; -} -#findInput:-ms-input-placeholder { - font-style: italic; -} -#findInput::-ms-input-placeholder { - font-style: italic; + font-style: normal; } #findInput::placeholder { - font-style: italic; + font-style: normal; } #findInput[data-status="pending"] { - background-image: url(images/loading-small.png); + background-image: var(--loading-icon); background-repeat: no-repeat; - background-position: right; + background-position: calc(50% + 48% * var(--dir-factor)); } -html[dir='rtl'] #findInput[data-status="pending"] { - background-position: left; +#findInput[data-status="notFound"] { + background-color: rgba(255, 102, 102, 1); } -.secondaryToolbar { - padding: 6px; - height: auto; - z-index: 30000; -} -html[dir='ltr'] .secondaryToolbar { +[dir="ltr"] .secondaryToolbar,[dir="ltr"] +.editorParamsToolbar { right: 4px; } -html[dir='rtl'] .secondaryToolbar { + +[dir="rtl"] .secondaryToolbar,[dir="rtl"] +.editorParamsToolbar { left: 4px; } -#secondaryToolbarButtonContainer { - max-width: 200px; - max-height: 400px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; +.secondaryToolbar, +.editorParamsToolbar { + padding: 6px 0 10px; + inset-inline-end: 4px; + height: auto; + z-index: 30000; + background-color: var(--doorhanger-bg-color); +} + +.editorParamsToolbarContainer { + width: 220px; margin-bottom: -4px; } -#secondaryToolbarButtonContainer.hiddenScrollModeButtons > .scrollModeButtons, -#secondaryToolbarButtonContainer.hiddenSpreadModeButtons > .spreadModeButtons { - display: none !important; +.editorParamsToolbarContainer > .editorParamsSetter { + min-height: 26px; + display: flex; + align-items: center; + justify-content: space-between; + padding-left: 10px; + padding-right: 10px; + padding-inline: 10px; +} + +[dir="ltr"] .editorParamsToolbarContainer .editorParamsLabel { + padding-right: 10px; +} + +[dir="rtl"] .editorParamsToolbarContainer .editorParamsLabel { + padding-left: 10px; +} + +.editorParamsToolbarContainer .editorParamsLabel { + -webkit-padding-end: 10px; + padding-inline-end: 10px; + flex: none; + color: var(--main-color); +} + +.editorParamsToolbarContainer .editorParamsColor { + width: 32px; + height: 32px; + flex: none; +} + +.editorParamsToolbarContainer .editorParamsSlider { + background-color: transparent; + width: 90px; + flex: 0 1 0; +} + +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-progress { + background-color: black; +} + +.editorParamsToolbarContainer .editorParamsSlider::-webkit-slider-runnable-track, +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-track { + background-color: black; +} + +.editorParamsToolbarContainer .editorParamsSlider::-webkit-slider-thumb, +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-thumb { + background-color: white; +} + +#secondaryToolbarButtonContainer { + max-width: 220px; + min-height: 26px; + max-height: calc(var(--viewer-container-height) - 40px); + overflow-y: auto; + margin-bottom: -4px; +} + +[dir="ltr"] #editorInkParamsToolbar { + right: 40px; +} + +[dir="rtl"] #editorInkParamsToolbar { + left: 40px; +} + +#editorInkParamsToolbar { + inset-inline-end: 40px; + background-color: var(--toolbar-bg-color); +} + +[dir="ltr"] #editorFreeTextParamsToolbar { + right: 68px; +} + +[dir="rtl"] #editorFreeTextParamsToolbar { + left: 68px; +} + +#editorFreeTextParamsToolbar { + inset-inline-end: 68px; + background-color: var(--toolbar-bg-color); } .doorHanger, .doorHangerRight { - border: 1px solid hsla(0,0%,0%,.5); border-radius: 2px; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 5px var(--doorhanger-border-color), + 0 0 0 1px var(--doorhanger-border-color); + border: var(--doorhanger-border-color-whcm); } -.doorHanger:after, .doorHanger:before, -.doorHangerRight:after, .doorHangerRight:before { +.doorHanger:after, +.doorHanger:before, +.doorHangerRight:after, +.doorHangerRight:before { bottom: 100%; - border: solid transparent; + border: 8px solid rgba(0, 0, 0, 0); content: " "; height: 0; width: 0; position: absolute; pointer-events: none; + opacity: var(--doorhanger-triangle-opacity-whcm); +} +[dir="ltr"] .doorHanger:after { + left: 10px; +} +[dir="rtl"] .doorHanger:after { + right: 10px; +} +[dir="ltr"] .doorHanger:after { + margin-left: -8px; +} +[dir="rtl"] .doorHanger:after { + margin-right: -8px; +} +.doorHanger:after { + inset-inline-start: 10px; + -webkit-margin-start: -8px; + margin-inline-start: -8px; + border-bottom-color: var(--toolbar-bg-color); +} +[dir="ltr"] .doorHangerRight:after { + right: 10px; +} +[dir="rtl"] .doorHangerRight:after { + left: 10px; +} +[dir="ltr"] .doorHangerRight:after { + margin-right: -8px; +} +[dir="rtl"] .doorHangerRight:after { + margin-left: -8px; } -.doorHanger:after, .doorHangerRight:after { - border-bottom-color: hsla(0,0%,32%,.99); - border-width: 8px; + inset-inline-end: 10px; + -webkit-margin-end: -8px; + margin-inline-end: -8px; + border-bottom-color: var(--doorhanger-bg-color); } .doorHanger:before, .doorHangerRight:before { - border-bottom-color: hsla(0,0%,0%,.5); + border-bottom-color: var(--doorhanger-border-color); border-width: 9px; } - -html[dir='ltr'] .doorHanger:after, -html[dir='rtl'] .doorHangerRight:after { - left: 13px; - margin-left: -8px; +[dir="ltr"] .doorHanger:before { + left: 10px; } - -html[dir='ltr'] .doorHanger:before, -html[dir='rtl'] .doorHangerRight:before { - left: 13px; +[dir="rtl"] .doorHanger:before { + right: 10px; +} +[dir="ltr"] .doorHanger:before { margin-left: -9px; } - -html[dir='rtl'] .doorHanger:after, -html[dir='ltr'] .doorHangerRight:after { - right: 13px; - margin-right: -8px; -} - -html[dir='rtl'] .doorHanger:before, -html[dir='ltr'] .doorHangerRight:before { - right: 13px; +[dir="rtl"] .doorHanger:before { margin-right: -9px; } +.doorHanger:before { + inset-inline-start: 10px; + -webkit-margin-start: -9px; + margin-inline-start: -9px; +} +[dir="ltr"] .doorHangerRight:before { + right: 10px; +} +[dir="rtl"] .doorHangerRight:before { + left: 10px; +} +[dir="ltr"] .doorHangerRight:before { + margin-right: -9px; +} +[dir="rtl"] .doorHangerRight:before { + margin-left: -9px; +} +.doorHangerRight:before { + inset-inline-end: 10px; + -webkit-margin-end: -9px; + margin-inline-end: -9px; +} #findResultsCount { - background-color: hsl(0, 0%, 85%); - color: hsl(0, 0%, 32%); + background-color: rgba(217, 217, 217, 1); + color: rgba(82, 82, 82, 1); text-align: center; - padding: 3px 4px; + padding: 4px 5px; + margin: 5px; } #findMsg { - font-style: italic; - color: #A6B7D0; -} -#findMsg:empty { - display: none; + color: rgba(251, 0, 0, 1); } -#findInput.notFound { - background-color: rgb(255, 102, 102); +#findResultsCount:empty, +#findMsg:empty { + display: none; } #toolbarViewerMiddle { position: absolute; left: 50%; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); + transform: translateX(-50%); } -html[dir='ltr'] #toolbarViewerLeft, -html[dir='rtl'] #toolbarViewerRight { +[dir="ltr"] #toolbarViewerLeft,[dir="ltr"] +#toolbarSidebarLeft { float: left; } -html[dir='ltr'] #toolbarViewerRight, -html[dir='rtl'] #toolbarViewerLeft { - float: right; -} -html[dir='ltr'] #toolbarViewerLeft > *, -html[dir='ltr'] #toolbarViewerMiddle > *, -html[dir='ltr'] #toolbarViewerRight > *, -html[dir='ltr'] .findbar * { - position: relative; - float: left; -} -html[dir='rtl'] #toolbarViewerLeft > *, -html[dir='rtl'] #toolbarViewerMiddle > *, -html[dir='rtl'] #toolbarViewerRight > *, -html[dir='rtl'] .findbar * { - position: relative; + +[dir="rtl"] #toolbarViewerLeft,[dir="rtl"] +#toolbarSidebarLeft { float: right; } -html[dir='ltr'] .splitToolbarButton { - margin: 3px 2px 4px 0; - display: inline-block; +#toolbarViewerLeft, +#toolbarSidebarLeft { + float: inline-start; } -html[dir='rtl'] .splitToolbarButton { - margin: 3px 0 4px 2px; - display: inline-block; +[dir="ltr"] #toolbarViewerRight,[dir="ltr"] +#toolbarSidebarRight { + float: right; } -html[dir='ltr'] .splitToolbarButton > .toolbarButton { - border-radius: 0; +[dir="rtl"] #toolbarViewerRight,[dir="rtl"] +#toolbarSidebarRight { float: left; } -html[dir='rtl'] .splitToolbarButton > .toolbarButton { - border-radius: 0; +#toolbarViewerRight, +#toolbarSidebarRight { + float: inline-end; +} + +[dir="ltr"] #toolbarViewerLeft > *,[dir="ltr"] +#toolbarViewerMiddle > *,[dir="ltr"] +#toolbarViewerRight > *,[dir="ltr"] +#toolbarSidebarLeft *,[dir="ltr"] +#toolbarSidebarRight *,[dir="ltr"] +.findbar * { + float: left; +} + +[dir="rtl"] #toolbarViewerLeft > *,[dir="rtl"] +#toolbarViewerMiddle > *,[dir="rtl"] +#toolbarViewerRight > *,[dir="rtl"] +#toolbarSidebarLeft *,[dir="rtl"] +#toolbarSidebarRight *,[dir="rtl"] +.findbar * { float: right; } +#toolbarViewerLeft > *, +#toolbarViewerMiddle > *, +#toolbarViewerRight > *, +#toolbarSidebarLeft *, +#toolbarSidebarRight *, +.findbar * { + position: relative; + float: inline-start; +} + +[dir="ltr"] #toolbarViewerLeft { + padding-left: 1px; +} + +[dir="rtl"] #toolbarViewerLeft { + padding-right: 1px; +} + +#toolbarViewerLeft { + -webkit-padding-start: 1px; + padding-inline-start: 1px; +} +[dir="ltr"] #toolbarViewerRight { + padding-right: 1px; +} +[dir="rtl"] #toolbarViewerRight { + padding-left: 1px; +} +#toolbarViewerRight { + -webkit-padding-end: 1px; + padding-inline-end: 1px; +} +[dir="ltr"] #toolbarSidebarRight { + padding-right: 2px; +} +[dir="rtl"] #toolbarSidebarRight { + padding-left: 2px; +} +#toolbarSidebarRight { + -webkit-padding-end: 2px; + padding-inline-end: 2px; +} + +.splitToolbarButton { + margin: 2px; + display: inline-block; +} +[dir="ltr"] .splitToolbarButton > .toolbarButton { + float: left; +} +[dir="rtl"] .splitToolbarButton > .toolbarButton { + float: right; +} +.splitToolbarButton > .toolbarButton { + float: inline-start; +} + .toolbarButton, .secondaryToolbarButton, -.overlayButton { +.dialogButton { border: 0 none; background: none; - width: 32px; - height: 25px; + width: 28px; + height: 28px; +} + +.dialogButton:hover, +.dialogButton:focus-visible { + background-color: var(--dialog-button-hover-bg-color); +} + +.dialogButton:hover > span, +.dialogButton:focus-visible > span { + color: var(--dialog-button-hover-color); } .toolbarButton > span { @@ -1024,244 +1965,143 @@ html[dir='rtl'] .splitToolbarButton > .toolbarButton { .toolbarButton[disabled], .secondaryToolbarButton[disabled], -.overlayButton[disabled] { - opacity: .5; +.dialogButton[disabled] { + opacity: 0.5; } -.splitToolbarButton.toggled .toolbarButton { - margin: 0; -} - -.splitToolbarButton:hover > .toolbarButton, -.splitToolbarButton:focus > .toolbarButton, -.splitToolbarButton.toggled > .toolbarButton, -.toolbarButton.textButton { - background-color: hsla(0,0%,0%,.12); - background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0))); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - background-clip: padding-box; - border: 1px solid hsla(0,0%,0%,.35); - border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42); - box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, - 0 0 1px hsla(0,0%,100%,.15) inset, - 0 1px 0 hsla(0,0%,100%,.05); - -webkit-transition-property: background-color, border-color, box-shadow; - transition-property: background-color, border-color, box-shadow; - -webkit-transition-duration: 150ms; - transition-duration: 150ms; - -webkit-transition-timing-function: ease; - transition-timing-function: ease; - -} .splitToolbarButton > .toolbarButton:hover, -.splitToolbarButton > .toolbarButton:focus, -.dropdownToolbarButton:hover, -.overlayButton:hover, -.overlayButton:focus, -.toolbarButton.textButton:hover, -.toolbarButton.textButton:focus { - background-color: hsla(0,0%,0%,.2); - box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, - 0 0 1px hsla(0,0%,100%,.15) inset, - 0 0 1px hsla(0,0%,0%,.05); - z-index: 199; +.splitToolbarButton > .toolbarButton:focus-visible, +.dropdownToolbarButton:hover { + background-color: var(--button-hover-color); } .splitToolbarButton > .toolbarButton { position: relative; -} -html[dir='ltr'] .splitToolbarButton > .toolbarButton:first-child, -html[dir='rtl'] .splitToolbarButton > .toolbarButton:last-child { - position: relative; margin: 0; - margin-right: -1px; - border-top-left-radius: 2px; - border-bottom-left-radius: 2px; - border-right-color: transparent; } -html[dir='ltr'] .splitToolbarButton > .toolbarButton:last-child, -html[dir='rtl'] .splitToolbarButton > .toolbarButton:first-child { - position: relative; - margin: 0; - margin-left: -1px; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-left-color: transparent; +[dir="ltr"] #toolbarSidebar .splitToolbarButton > .toolbarButton { + margin-right: 2px; } -.splitToolbarButtonSeparator { - padding: 8px 0; - width: 1px; - background-color: hsla(0,0%,0%,.5); - z-index: 99; - box-shadow: 0 0 0 1px hsla(0,0%,100%,.08); - display: inline-block; - margin: 5px 0; +[dir="rtl"] #toolbarSidebar .splitToolbarButton > .toolbarButton { + margin-left: 2px; } -html[dir='ltr'] .splitToolbarButtonSeparator { +#toolbarSidebar .splitToolbarButton > .toolbarButton { + -webkit-margin-end: 2px; + margin-inline-end: 2px; +} + +[dir="ltr"] .splitToolbarButtonSeparator { float: left; } -html[dir='rtl'] .splitToolbarButtonSeparator { + +[dir="rtl"] .splitToolbarButtonSeparator { float: right; } -.splitToolbarButton:hover > .splitToolbarButtonSeparator, -.splitToolbarButton.toggled > .splitToolbarButtonSeparator { - padding: 12px 0; - margin: 1px 0; - box-shadow: 0 0 0 1px hsla(0,0%,100%,.03); - -webkit-transition-property: padding; - transition-property: padding; - -webkit-transition-duration: 10ms; - transition-duration: 10ms; - -webkit-transition-timing-function: ease; - transition-timing-function: ease; + +.splitToolbarButtonSeparator { + float: inline-start; + margin: 4px 0; + width: 1px; + height: 20px; + background-color: var(--separator-color); } .toolbarButton, .dropdownToolbarButton, .secondaryToolbarButton, -.overlayButton { +.dialogButton { min-width: 16px; + margin: 2px 1px; padding: 2px 6px 0; - border: 1px solid transparent; + border: none; border-radius: 2px; - color: hsla(0,0%,100%,.8); + color: var(--main-color); font-size: 12px; line-height: 14px; -webkit-user-select: none; -moz-user-select: none; - -ms-user-select: none; user-select: none; - /* Opera does not support user-select, use <... unselectable="on"> instead */ cursor: default; - -webkit-transition-property: background-color, border-color, box-shadow; - transition-property: background-color, border-color, box-shadow; - -webkit-transition-duration: 150ms; - transition-duration: 150ms; - -webkit-transition-timing-function: ease; - transition-timing-function: ease; -} - -html[dir='ltr'] .toolbarButton, -html[dir='ltr'] .overlayButton, -html[dir='ltr'] .dropdownToolbarButton { - margin: 3px 2px 4px 0; -} -html[dir='rtl'] .toolbarButton, -html[dir='rtl'] .overlayButton, -html[dir='rtl'] .dropdownToolbarButton { - margin: 3px 0 4px 2px; + box-sizing: border-box; } .toolbarButton:hover, -.toolbarButton:focus, -.dropdownToolbarButton, -.overlayButton, -.secondaryToolbarButton:hover, -.secondaryToolbarButton:focus { - background-color: hsla(0,0%,0%,.12); - background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0))); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - background-clip: padding-box; - border: 1px solid hsla(0,0%,0%,.35); - border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42); - box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, - 0 0 1px hsla(0,0%,100%,.15) inset, - 0 1px 0 hsla(0,0%,100%,.05); +.toolbarButton:focus-visible { + background-color: var(--button-hover-color); } - -.toolbarButton:hover:active, -.overlayButton:hover:active, -.dropdownToolbarButton:hover:active, -.secondaryToolbarButton:hover:active { - background-color: hsla(0,0%,0%,.2); - background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0))); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - border-color: hsla(0,0%,0%,.35) hsla(0,0%,0%,.4) hsla(0,0%,0%,.45); - box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset, - 0 0 1px hsla(0,0%,0%,.2) inset, - 0 1px 0 hsla(0,0%,100%,.05); - -webkit-transition-property: background-color, border-color, box-shadow; - transition-property: background-color, border-color, box-shadow; - -webkit-transition-duration: 10ms; - transition-duration: 10ms; - -webkit-transition-timing-function: linear; - transition-timing-function: linear; +.secondaryToolbarButton:hover, +.secondaryToolbarButton:focus-visible { + background-color: var(--doorhanger-hover-bg-color); + color: var(--doorhanger-hover-color); } .toolbarButton.toggled, .splitToolbarButton.toggled > .toolbarButton.toggled, .secondaryToolbarButton.toggled { - background-color: hsla(0,0%,0%,.3); - background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0))); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.45) hsla(0,0%,0%,.5); - box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset, - 0 0 1px hsla(0,0%,0%,.2) inset, - 0 1px 0 hsla(0,0%,100%,.05); - -webkit-transition-property: background-color, border-color, box-shadow; - transition-property: background-color, border-color, box-shadow; - -webkit-transition-duration: 10ms; - transition-duration: 10ms; - -webkit-transition-timing-function: linear; - transition-timing-function: linear; + background-color: var(--toggled-btn-bg-color); + color: var(--toggled-btn-color); +} + +.toolbarButton.toggled::before, +.secondaryToolbarButton.toggled::before { + background-color: var(--toggled-btn-color); } .toolbarButton.toggled:hover:active, .splitToolbarButton.toggled > .toolbarButton.toggled:hover:active, .secondaryToolbarButton.toggled:hover:active { - background-color: hsla(0,0%,0%,.4); - border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.5) hsla(0,0%,0%,.55); - box-shadow: 0 1px 1px hsla(0,0%,0%,.2) inset, - 0 0 1px hsla(0,0%,0%,.3) inset, - 0 1px 0 hsla(0,0%,100%,.05); + background-color: var(--toggled-hover-active-btn-color); } .dropdownToolbarButton { - width: 120px; - max-width: 120px; + width: var(--scale-select-container-width); padding: 0; overflow: hidden; - background: url(images/toolbarButton-menuArrows.png) no-repeat; + background-color: var(--dropdown-btn-bg-color); } -html[dir='ltr'] .dropdownToolbarButton { - background-position: 95%; +[dir="ltr"] .dropdownToolbarButton::after { + right: 7px; } -html[dir='rtl'] .dropdownToolbarButton { - background-position: 5%; +[dir="rtl"] .dropdownToolbarButton::after { + left: 7px; +} +.dropdownToolbarButton::after { + top: 6px; + inset-inline-end: 7px; + pointer-events: none; + -webkit-mask-image: var(--toolbarButton-menuArrow-icon); + mask-image: var(--toolbarButton-menuArrow-icon); +} + +[dir="ltr"] .dropdownToolbarButton > select { + padding-left: 4px; +} + +[dir="rtl"] .dropdownToolbarButton > select { + padding-right: 4px; } .dropdownToolbarButton > select { - min-width: 140px; + width: calc( + var(--scale-select-container-width) + var(--scale-select-overflow) + ); + height: 28px; font-size: 12px; - color: hsl(0,0%,95%); + color: var(--main-color); margin: 0; - padding: 3px 2px 2px; + padding: 1px 0 2px; + -webkit-padding-start: 4px; + padding-inline-start: 4px; border: none; - background: rgba(0,0,0,0); /* Opera does not support 'transparent' +
-
-
@@ -86,97 +99,138 @@ See https://github.com/adobe-type-tools/cmap-resources
- + - +
- - - + + + +
-
+
+
+ + + + -
+
-