Stirling-PDF/client-vanilla/dep/pdf.min.js
2023-11-07 01:40:00 +01:00

9996 lines
422 KiB
JavaScript

/**
* @licstart The following is the entire license notice for the
* Javascript code in this page
*
* Copyright 2020 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* @licend The above is the entire license notice for the
* Javascript code in this page
*/
!function webpackUniversalModuleDefinition(e, t) {
"object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define("pdfjs-dist/build/pdf", [], t) : "object" == typeof exports ? exports["pdfjs-dist/build/pdf"] = t() : e["pdfjs-dist/build/pdf"] = e.pdfjsLib = t()
}(this, (function() {
return function(e) {
var t = {};
function __w_pdfjs_require__(r) {
if (t[r])
return t[r].exports;
var n = t[r] = {
i: r,
l: !1,
exports: {}
};
e[r].call(n.exports, n, n.exports, __w_pdfjs_require__);
n.l = !0;
return n.exports
}
__w_pdfjs_require__.m = e;
__w_pdfjs_require__.c = t;
__w_pdfjs_require__.d = function(e, t, r) {
__w_pdfjs_require__.o(e, t) || Object.defineProperty(e, t, {
enumerable: !0,
get: r
})
}
;
__w_pdfjs_require__.r = function(e) {
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
value: "Module"
});
Object.defineProperty(e, "__esModule", {
value: !0
})
}
;
__w_pdfjs_require__.t = function(e, t) {
1 & t && (e = __w_pdfjs_require__(e));
if (8 & t)
return e;
if (4 & t && "object" == typeof e && e && e.__esModule)
return e;
var r = Object.create(null);
__w_pdfjs_require__.r(r);
Object.defineProperty(r, "default", {
enumerable: !0,
value: e
});
if (2 & t && "string" != typeof e)
for (var n in e)
__w_pdfjs_require__.d(r, n, function(t) {
return e[t]
}
.bind(null, n));
return r
}
;
__w_pdfjs_require__.n = function(e) {
var t = e && e.__esModule ? function getDefault() {
return e.default
}
: function getModuleExports() {
return e
}
;
__w_pdfjs_require__.d(t, "a", t);
return t
}
;
__w_pdfjs_require__.o = function(e, t) {
return Object.prototype.hasOwnProperty.call(e, t)
}
;
__w_pdfjs_require__.p = "";
return __w_pdfjs_require__(__w_pdfjs_require__.s = 0)
}([function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
Object.defineProperty(t, "addLinkAttributes", {
enumerable: !0,
get: function() {
return n.addLinkAttributes
}
});
Object.defineProperty(t, "getFilenameFromUrl", {
enumerable: !0,
get: function() {
return n.getFilenameFromUrl
}
});
Object.defineProperty(t, "LinkTarget", {
enumerable: !0,
get: function() {
return n.LinkTarget
}
});
Object.defineProperty(t, "loadScript", {
enumerable: !0,
get: function() {
return n.loadScript
}
});
Object.defineProperty(t, "PDFDateString", {
enumerable: !0,
get: function() {
return n.PDFDateString
}
});
Object.defineProperty(t, "RenderingCancelledException", {
enumerable: !0,
get: function() {
return n.RenderingCancelledException
}
});
Object.defineProperty(t, "build", {
enumerable: !0,
get: function() {
return s.build
}
});
Object.defineProperty(t, "getDocument", {
enumerable: !0,
get: function() {
return s.getDocument
}
});
Object.defineProperty(t, "LoopbackPort", {
enumerable: !0,
get: function() {
return s.LoopbackPort
}
});
Object.defineProperty(t, "PDFDataRangeTransport", {
enumerable: !0,
get: function() {
return s.PDFDataRangeTransport
}
});
Object.defineProperty(t, "PDFWorker", {
enumerable: !0,
get: function() {
return s.PDFWorker
}
});
Object.defineProperty(t, "version", {
enumerable: !0,
get: function() {
return s.version
}
});
Object.defineProperty(t, "CMapCompressionType", {
enumerable: !0,
get: function() {
return a.CMapCompressionType
}
});
Object.defineProperty(t, "createObjectURL", {
enumerable: !0,
get: function() {
return a.createObjectURL
}
});
Object.defineProperty(t, "createPromiseCapability", {
enumerable: !0,
get: function() {
return a.createPromiseCapability
}
});
Object.defineProperty(t, "createValidAbsoluteUrl", {
enumerable: !0,
get: function() {
return a.createValidAbsoluteUrl
}
});
Object.defineProperty(t, "InvalidPDFException", {
enumerable: !0,
get: function() {
return a.InvalidPDFException
}
});
Object.defineProperty(t, "MissingPDFException", {
enumerable: !0,
get: function() {
return a.MissingPDFException
}
});
Object.defineProperty(t, "OPS", {
enumerable: !0,
get: function() {
return a.OPS
}
});
Object.defineProperty(t, "PasswordResponses", {
enumerable: !0,
get: function() {
return a.PasswordResponses
}
});
Object.defineProperty(t, "PermissionFlag", {
enumerable: !0,
get: function() {
return a.PermissionFlag
}
});
Object.defineProperty(t, "removeNullCharacters", {
enumerable: !0,
get: function() {
return a.removeNullCharacters
}
});
Object.defineProperty(t, "shadow", {
enumerable: !0,
get: function() {
return a.shadow
}
});
Object.defineProperty(t, "UnexpectedResponseException", {
enumerable: !0,
get: function() {
return a.UnexpectedResponseException
}
});
Object.defineProperty(t, "UNSUPPORTED_FEATURES", {
enumerable: !0,
get: function() {
return a.UNSUPPORTED_FEATURES
}
});
Object.defineProperty(t, "Util", {
enumerable: !0,
get: function() {
return a.Util
}
});
Object.defineProperty(t, "VerbosityLevel", {
enumerable: !0,
get: function() {
return a.VerbosityLevel
}
});
Object.defineProperty(t, "AnnotationLayer", {
enumerable: !0,
get: function() {
return i.AnnotationLayer
}
});
Object.defineProperty(t, "apiCompatibilityParams", {
enumerable: !0,
get: function() {
return o.apiCompatibilityParams
}
});
Object.defineProperty(t, "GlobalWorkerOptions", {
enumerable: !0,
get: function() {
return l.GlobalWorkerOptions
}
});
Object.defineProperty(t, "renderTextLayer", {
enumerable: !0,
get: function() {
return c.renderTextLayer
}
});
Object.defineProperty(t, "SVGGraphics", {
enumerable: !0,
get: function() {
return h.SVGGraphics
}
});
var n = r(1)
, s = r(5)
, a = r(2)
, i = r(19)
, o = r(9)
, l = r(12)
, c = r(20)
, h = r(21);
{
const {isNodeJS: e} = r(4);
if (e) {
const e = r(22).PDFNodeStream;
(0,
s.setPDFNetworkStreamFactory)(t=>new e(t))
} else {
const e = r(25).PDFNetworkStream;
let t;
(0,
n.isFetchSupported)() && (t = r(26).PDFFetchStream);
(0,
s.setPDFNetworkStreamFactory)(r=>t && (0,
n.isValidFetchUrl)(r.url) ? new t(r) : new e(r))
}
}
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.addLinkAttributes = function addLinkAttributes(e, {url: t, target: r, rel: s, enabled: i=!0}={}) {
(0,
n.assert)(t && "string" == typeof t, 'addLinkAttributes: A valid "url" parameter must provided.');
const o = (0,
n.removeNullCharacters)(t);
if (i)
e.href = e.title = o;
else {
e.href = "";
e.title = "Disabled: " + o;
e.onclick = ()=>!1
}
let l = "";
switch (r) {
case a.NONE:
break;
case a.SELF:
l = "_self";
break;
case a.BLANK:
l = "_blank";
break;
case a.PARENT:
l = "_parent";
break;
case a.TOP:
l = "_top"
}
e.target = l;
e.rel = "string" == typeof s ? s : "noopener noreferrer nofollow"
}
;
t.getFilenameFromUrl = function getFilenameFromUrl(e) {
const t = e.indexOf("#")
, r = e.indexOf("?")
, n = Math.min(t > 0 ? t : e.length, r > 0 ? r : e.length);
return e.substring(e.lastIndexOf("/", n) + 1, n)
}
;
t.isFetchSupported = isFetchSupported;
t.isValidFetchUrl = isValidFetchUrl;
t.loadScript = function loadScript(e) {
return new Promise((t,r)=>{
const n = document.createElement("script");
n.src = e;
n.onload = t;
n.onerror = function() {
r(new Error("Cannot load script at: " + n.src))
}
;
(document.head || document.documentElement).appendChild(n)
}
)
}
;
t.deprecated = function deprecated(e) {
console.log("Deprecated API usage: " + e)
}
;
t.PDFDateString = t.StatTimer = t.DOMSVGFactory = t.DOMCMapReaderFactory = t.BaseCMapReaderFactory = t.DOMCanvasFactory = t.BaseCanvasFactory = t.DEFAULT_LINK_REL = t.LinkTarget = t.RenderingCancelledException = t.PageViewport = void 0;
var n = r(2);
t.DEFAULT_LINK_REL = "noopener noreferrer nofollow";
const s = "http://www.w3.org/2000/svg";
class BaseCanvasFactory {
constructor() {
this.constructor === BaseCanvasFactory && (0,
n.unreachable)("Cannot initialize BaseCanvasFactory.")
}
create(e, t) {
(0,
n.unreachable)("Abstract method `create` called.")
}
reset(e, t, r) {
if (!e.canvas)
throw new Error("Canvas is not specified");
if (t <= 0 || r <= 0)
throw new Error("Invalid canvas size");
e.canvas.width = t;
e.canvas.height = r
}
destroy(e) {
if (!e.canvas)
throw new Error("Canvas is not specified");
e.canvas.width = 0;
e.canvas.height = 0;
e.canvas = null;
e.context = null
}
}
t.BaseCanvasFactory = BaseCanvasFactory;
t.DOMCanvasFactory = class DOMCanvasFactory extends BaseCanvasFactory {
constructor({ownerDocument: e=globalThis.document}={}) {
super();
this._document = e
}
create(e, t) {
if (e <= 0 || t <= 0)
throw new Error("Invalid canvas size");
const r = this._document.createElement("canvas")
, n = r.getContext("2d");
r.width = e;
r.height = t;
return {
canvas: r,
context: n
}
}
}
;
class BaseCMapReaderFactory {
constructor({baseUrl: e=null, isCompressed: t=!1}) {
this.constructor === BaseCMapReaderFactory && (0,
n.unreachable)("Cannot initialize BaseCMapReaderFactory.");
this.baseUrl = e;
this.isCompressed = t
}
async fetch({name: e}) {
if (!this.baseUrl)
throw new Error('The CMap "baseUrl" parameter must be specified, ensure that the "cMapUrl" and "cMapPacked" API parameters are provided.');
if (!e)
throw new Error("CMap name must be specified.");
const t = this.baseUrl + e + (this.isCompressed ? ".bcmap" : "")
, r = this.isCompressed ? n.CMapCompressionType.BINARY : n.CMapCompressionType.NONE;
return this._fetchData(t, r).catch(e=>{
throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${t}`)
}
)
}
_fetchData(e, t) {
(0,
n.unreachable)("Abstract method `_fetchData` called.")
}
}
t.BaseCMapReaderFactory = BaseCMapReaderFactory;
t.DOMCMapReaderFactory = class DOMCMapReaderFactory extends BaseCMapReaderFactory {
_fetchData(e, t) {
return isFetchSupported() && isValidFetchUrl(e, document.baseURI) ? fetch(e).then(async e=>{
if (!e.ok)
throw new Error(e.statusText);
let r;
r = this.isCompressed ? new Uint8Array(await e.arrayBuffer()) : (0,
n.stringToBytes)(await e.text());
return {
cMapData: r,
compressionType: t
}
}
) : new Promise((r,s)=>{
const a = new XMLHttpRequest;
a.open("GET", e, !0);
this.isCompressed && (a.responseType = "arraybuffer");
a.onreadystatechange = ()=>{
if (a.readyState === XMLHttpRequest.DONE) {
if (200 === a.status || 0 === a.status) {
let e;
this.isCompressed && a.response ? e = new Uint8Array(a.response) : !this.isCompressed && a.responseText && (e = (0,
n.stringToBytes)(a.responseText));
if (e) {
r({
cMapData: e,
compressionType: t
});
return
}
}
s(new Error(a.statusText))
}
}
;
a.send(null)
}
)
}
}
;
t.DOMSVGFactory = class DOMSVGFactory {
create(e, t) {
(0,
n.assert)(e > 0 && t > 0, "Invalid SVG dimensions");
const r = document.createElementNS(s, "svg:svg");
r.setAttribute("version", "1.1");
r.setAttribute("width", e + "px");
r.setAttribute("height", t + "px");
r.setAttribute("preserveAspectRatio", "none");
r.setAttribute("viewBox", "0 0 " + e + " " + t);
return r
}
createElement(e) {
(0,
n.assert)("string" == typeof e, "Invalid SVG element type");
return document.createElementNS(s, e)
}
}
;
class PageViewport {
constructor({viewBox: e, scale: t, rotation: r, offsetX: n=0, offsetY: s=0, dontFlip: a=!1}) {
this.viewBox = e;
this.scale = t;
this.rotation = r;
this.offsetX = n;
this.offsetY = s;
const i = (e[2] + e[0]) / 2
, o = (e[3] + e[1]) / 2;
let l, c, h, d, u, p, f, g;
switch (r = (r %= 360) < 0 ? r + 360 : r) {
case 180:
l = -1;
c = 0;
h = 0;
d = 1;
break;
case 90:
l = 0;
c = 1;
h = 1;
d = 0;
break;
case 270:
l = 0;
c = -1;
h = -1;
d = 0;
break;
case 0:
l = 1;
c = 0;
h = 0;
d = -1;
break;
default:
throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")
}
if (a) {
h = -h;
d = -d
}
if (0 === l) {
u = Math.abs(o - e[1]) * t + n;
p = Math.abs(i - e[0]) * t + s;
f = Math.abs(e[3] - e[1]) * t;
g = Math.abs(e[2] - e[0]) * t
} else {
u = Math.abs(i - e[0]) * t + n;
p = Math.abs(o - e[1]) * t + s;
f = Math.abs(e[2] - e[0]) * t;
g = Math.abs(e[3] - e[1]) * t
}
this.transform = [l * t, c * t, h * t, d * t, u - l * t * i - h * t * o, p - c * t * i - d * t * o];
this.width = f;
this.height = g
}
clone({scale: e=this.scale, rotation: t=this.rotation, offsetX: r=this.offsetX, offsetY: n=this.offsetY, dontFlip: s=!1}={}) {
return new PageViewport({
viewBox: this.viewBox.slice(),
scale: e,
rotation: t,
offsetX: r,
offsetY: n,
dontFlip: s
})
}
convertToViewportPoint(e, t) {
return n.Util.applyTransform([e, t], this.transform)
}
convertToViewportRectangle(e) {
const t = n.Util.applyTransform([e[0], e[1]], this.transform)
, r = n.Util.applyTransform([e[2], e[3]], this.transform);
return [t[0], t[1], r[0], r[1]]
}
convertToPdfPoint(e, t) {
return n.Util.applyInverseTransform([e, t], this.transform)
}
}
t.PageViewport = PageViewport;
class RenderingCancelledException extends n.BaseException {
constructor(e, t) {
super(e);
this.type = t
}
}
t.RenderingCancelledException = RenderingCancelledException;
const a = {
NONE: 0,
SELF: 1,
BLANK: 2,
PARENT: 3,
TOP: 4
};
t.LinkTarget = a;
t.StatTimer = class StatTimer {
constructor() {
this.started = Object.create(null);
this.times = []
}
time(e) {
e in this.started && (0,
n.warn)("Timer is already running for " + e);
this.started[e] = Date.now()
}
timeEnd(e) {
e in this.started || (0,
n.warn)("Timer has not been started for " + e);
this.times.push({
name: e,
start: this.started[e],
end: Date.now()
});
delete this.started[e]
}
toString() {
const e = [];
let t = 0;
for (const e of this.times) {
const r = e.name;
r.length > t && (t = r.length)
}
for (const r of this.times) {
const n = r.end - r.start;
e.push(`${r.name.padEnd(t)} ${n}ms\n`)
}
return e.join("")
}
}
;
function isFetchSupported() {
return "undefined" != typeof fetch && "undefined" != typeof Response && "body"in Response.prototype && "undefined" != typeof ReadableStream
}
function isValidFetchUrl(e, t) {
try {
const {protocol: r} = t ? new URL(e,t) : new URL(e);
return "http:" === r || "https:" === r
} catch (e) {
return !1
}
}
let i;
t.PDFDateString = class PDFDateString {
static toDateObject(e) {
if (!e || !(0,
n.isString)(e))
return null;
i || (i = new RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+|-])?(\\d{2})?'?(\\d{2})?'?"));
const t = i.exec(e);
if (!t)
return null;
const r = parseInt(t[1], 10);
let s = parseInt(t[2], 10);
s = s >= 1 && s <= 12 ? s - 1 : 0;
let a = parseInt(t[3], 10);
a = a >= 1 && a <= 31 ? a : 1;
let o = parseInt(t[4], 10);
o = o >= 0 && o <= 23 ? o : 0;
let l = parseInt(t[5], 10);
l = l >= 0 && l <= 59 ? l : 0;
let c = parseInt(t[6], 10);
c = c >= 0 && c <= 59 ? c : 0;
const h = t[7] || "Z";
let d = parseInt(t[8], 10);
d = d >= 0 && d <= 23 ? d : 0;
let u = parseInt(t[9], 10) || 0;
u = u >= 0 && u <= 59 ? u : 0;
if ("-" === h) {
o += d;
l += u
} else if ("+" === h) {
o -= d;
l -= u
}
return new Date(Date.UTC(r, s, a, o, l, c))
}
}
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.arrayByteLength = arrayByteLength;
t.arraysToBytes = function arraysToBytes(e) {
const t = e.length;
if (1 === t && e[0]instanceof Uint8Array)
return e[0];
let r = 0;
for (let n = 0; n < t; n++)
r += arrayByteLength(e[n]);
let n = 0;
const s = new Uint8Array(r);
for (let r = 0; r < t; r++) {
let t = e[r];
t instanceof Uint8Array || (t = "string" == typeof t ? stringToBytes(t) : new Uint8Array(t));
const a = t.byteLength;
s.set(t, n);
n += a
}
return s
}
;
t.assert = assert;
t.bytesToString = function bytesToString(e) {
assert(null !== e && "object" == typeof e && void 0 !== e.length, "Invalid argument for bytesToString");
const t = e.length;
if (t < 8192)
return String.fromCharCode.apply(null, e);
const r = [];
for (let n = 0; n < t; n += 8192) {
const s = Math.min(n + 8192, t)
, a = e.subarray(n, s);
r.push(String.fromCharCode.apply(null, a))
}
return r.join("")
}
;
t.createPromiseCapability = function createPromiseCapability() {
const e = Object.create(null);
let t = !1;
Object.defineProperty(e, "settled", {
get: ()=>t
});
e.promise = new Promise((function(r, n) {
e.resolve = function(e) {
t = !0;
r(e)
}
;
e.reject = function(e) {
t = !0;
n(e)
}
}
));
return e
}
;
t.escapeString = function escapeString(e) {
return e.replace(/([\(\)\\])/g, "\\$1")
}
;
t.getModificationDate = function getModificationDate(e=new Date(Date.now())) {
return [e.getUTCFullYear().toString(), (e.getUTCMonth() + 1).toString().padStart(2, "0"), (e.getUTCDate() + 1).toString().padStart(2, "0"), e.getUTCHours().toString().padStart(2, "0"), e.getUTCMinutes().toString().padStart(2, "0"), e.getUTCSeconds().toString().padStart(2, "0")].join("")
}
;
t.getVerbosityLevel = function getVerbosityLevel() {
return s
}
;
t.info = function info(e) {
s >= n.INFOS && console.log("Info: " + e)
}
;
t.isArrayBuffer = function isArrayBuffer(e) {
return "object" == typeof e && null !== e && void 0 !== e.byteLength
}
;
t.isArrayEqual = function isArrayEqual(e, t) {
if (e.length !== t.length)
return !1;
return e.every((function(e, r) {
return e === t[r]
}
))
}
;
t.isBool = function isBool(e) {
return "boolean" == typeof e
}
;
t.isNum = function isNum(e) {
return "number" == typeof e
}
;
t.isString = function isString(e) {
return "string" == typeof e
}
;
t.isSameOrigin = function isSameOrigin(e, t) {
let r;
try {
r = new URL(e);
if (!r.origin || "null" === r.origin)
return !1
} catch (e) {
return !1
}
const n = new URL(t,r);
return r.origin === n.origin
}
;
t.createValidAbsoluteUrl = function createValidAbsoluteUrl(e, t) {
if (!e)
return null;
try {
const r = t ? new URL(e,t) : new URL(e);
if (function _isValidProtocol(e) {
if (!e)
return !1;
switch (e.protocol) {
case "http:":
case "https:":
case "ftp:":
case "mailto:":
case "tel:":
return !0;
default:
return !1
}
}(r))
return r
} catch (e) {}
return null
}
;
t.removeNullCharacters = function removeNullCharacters(e) {
if ("string" != typeof e) {
warn("The argument for removeNullCharacters must be a string.");
return e
}
return e.replace(i, "")
}
;
t.setVerbosityLevel = function setVerbosityLevel(e) {
Number.isInteger(e) && (s = e)
}
;
t.shadow = shadow;
t.string32 = function string32(e) {
return String.fromCharCode(e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e)
}
;
t.stringToBytes = stringToBytes;
t.stringToPDFString = function stringToPDFString(e) {
const t = e.length
, r = [];
if ("þ" === e[0] && "ÿ" === e[1])
for (let n = 2; n < t; n += 2)
r.push(String.fromCharCode(e.charCodeAt(n) << 8 | e.charCodeAt(n + 1)));
else if ("ÿ" === e[0] && "þ" === e[1])
for (let n = 2; n < t; n += 2)
r.push(String.fromCharCode(e.charCodeAt(n + 1) << 8 | e.charCodeAt(n)));
else
for (let n = 0; n < t; ++n) {
const t = h[e.charCodeAt(n)];
r.push(t ? String.fromCharCode(t) : e.charAt(n))
}
return r.join("")
}
;
t.stringToUTF8String = function stringToUTF8String(e) {
return decodeURIComponent(escape(e))
}
;
t.utf8StringToString = function utf8StringToString(e) {
return unescape(encodeURIComponent(e))
}
;
t.warn = warn;
t.unreachable = unreachable;
t.IsEvalSupportedCached = t.IsLittleEndianCached = t.createObjectURL = t.FormatError = t.Util = t.UnknownErrorException = t.UnexpectedResponseException = t.TextRenderingMode = t.StreamType = t.PermissionFlag = t.PasswordResponses = t.PasswordException = t.MissingPDFException = t.InvalidPDFException = t.AbortException = t.CMapCompressionType = t.ImageKind = t.FontType = t.AnnotationType = t.AnnotationStateModelType = t.AnnotationReviewState = t.AnnotationReplyType = t.AnnotationMarkedState = t.AnnotationFlag = t.AnnotationFieldFlag = t.AnnotationBorderStyleType = t.UNSUPPORTED_FEATURES = t.VerbosityLevel = t.OPS = t.IDENTITY_MATRIX = t.FONT_IDENTITY_MATRIX = t.BaseException = void 0;
r(3);
t.IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
t.FONT_IDENTITY_MATRIX = [.001, 0, 0, .001, 0, 0];
t.PermissionFlag = {
PRINT: 4,
MODIFY_CONTENTS: 8,
COPY: 16,
MODIFY_ANNOTATIONS: 32,
FILL_INTERACTIVE_FORMS: 256,
COPY_FOR_ACCESSIBILITY: 512,
ASSEMBLE: 1024,
PRINT_HIGH_QUALITY: 2048
};
t.TextRenderingMode = {
FILL: 0,
STROKE: 1,
FILL_STROKE: 2,
INVISIBLE: 3,
FILL_ADD_TO_PATH: 4,
STROKE_ADD_TO_PATH: 5,
FILL_STROKE_ADD_TO_PATH: 6,
ADD_TO_PATH: 7,
FILL_STROKE_MASK: 3,
ADD_TO_PATH_FLAG: 4
};
t.ImageKind = {
GRAYSCALE_1BPP: 1,
RGB_24BPP: 2,
RGBA_32BPP: 3
};
t.AnnotationType = {
TEXT: 1,
LINK: 2,
FREETEXT: 3,
LINE: 4,
SQUARE: 5,
CIRCLE: 6,
POLYGON: 7,
POLYLINE: 8,
HIGHLIGHT: 9,
UNDERLINE: 10,
SQUIGGLY: 11,
STRIKEOUT: 12,
STAMP: 13,
CARET: 14,
INK: 15,
POPUP: 16,
FILEATTACHMENT: 17,
SOUND: 18,
MOVIE: 19,
WIDGET: 20,
SCREEN: 21,
PRINTERMARK: 22,
TRAPNET: 23,
WATERMARK: 24,
THREED: 25,
REDACT: 26
};
t.AnnotationStateModelType = {
MARKED: "Marked",
REVIEW: "Review"
};
t.AnnotationMarkedState = {
MARKED: "Marked",
UNMARKED: "Unmarked"
};
t.AnnotationReviewState = {
ACCEPTED: "Accepted",
REJECTED: "Rejected",
CANCELLED: "Cancelled",
COMPLETED: "Completed",
NONE: "None"
};
t.AnnotationReplyType = {
GROUP: "Group",
REPLY: "R"
};
t.AnnotationFlag = {
INVISIBLE: 1,
HIDDEN: 2,
PRINT: 4,
NOZOOM: 8,
NOROTATE: 16,
NOVIEW: 32,
READONLY: 64,
LOCKED: 128,
TOGGLENOVIEW: 256,
LOCKEDCONTENTS: 512
};
t.AnnotationFieldFlag = {
READONLY: 1,
REQUIRED: 2,
NOEXPORT: 4,
MULTILINE: 4096,
PASSWORD: 8192,
NOTOGGLETOOFF: 16384,
RADIO: 32768,
PUSHBUTTON: 65536,
COMBO: 131072,
EDIT: 262144,
SORT: 524288,
FILESELECT: 1048576,
MULTISELECT: 2097152,
DONOTSPELLCHECK: 4194304,
DONOTSCROLL: 8388608,
COMB: 16777216,
RICHTEXT: 33554432,
RADIOSINUNISON: 33554432,
COMMITONSELCHANGE: 67108864
};
t.AnnotationBorderStyleType = {
SOLID: 1,
DASHED: 2,
BEVELED: 3,
INSET: 4,
UNDERLINE: 5
};
t.StreamType = {
UNKNOWN: "UNKNOWN",
FLATE: "FLATE",
LZW: "LZW",
DCT: "DCT",
JPX: "JPX",
JBIG: "JBIG",
A85: "A85",
AHX: "AHX",
CCF: "CCF",
RLX: "RLX"
};
t.FontType = {
UNKNOWN: "UNKNOWN",
TYPE1: "TYPE1",
TYPE1C: "TYPE1C",
CIDFONTTYPE0: "CIDFONTTYPE0",
CIDFONTTYPE0C: "CIDFONTTYPE0C",
TRUETYPE: "TRUETYPE",
CIDFONTTYPE2: "CIDFONTTYPE2",
TYPE3: "TYPE3",
OPENTYPE: "OPENTYPE",
TYPE0: "TYPE0",
MMTYPE1: "MMTYPE1"
};
const n = {
ERRORS: 0,
WARNINGS: 1,
INFOS: 5
};
t.VerbosityLevel = n;
t.CMapCompressionType = {
NONE: 0,
BINARY: 1,
STREAM: 2
};
t.OPS = {
dependency: 1,
setLineWidth: 2,
setLineCap: 3,
setLineJoin: 4,
setMiterLimit: 5,
setDash: 6,
setRenderingIntent: 7,
setFlatness: 8,
setGState: 9,
save: 10,
restore: 11,
transform: 12,
moveTo: 13,
lineTo: 14,
curveTo: 15,
curveTo2: 16,
curveTo3: 17,
closePath: 18,
rectangle: 19,
stroke: 20,
closeStroke: 21,
fill: 22,
eoFill: 23,
fillStroke: 24,
eoFillStroke: 25,
closeFillStroke: 26,
closeEOFillStroke: 27,
endPath: 28,
clip: 29,
eoClip: 30,
beginText: 31,
endText: 32,
setCharSpacing: 33,
setWordSpacing: 34,
setHScale: 35,
setLeading: 36,
setFont: 37,
setTextRenderingMode: 38,
setTextRise: 39,
moveText: 40,
setLeadingMoveText: 41,
setTextMatrix: 42,
nextLine: 43,
showText: 44,
showSpacedText: 45,
nextLineShowText: 46,
nextLineSetSpacingShowText: 47,
setCharWidth: 48,
setCharWidthAndBounds: 49,
setStrokeColorSpace: 50,
setFillColorSpace: 51,
setStrokeColor: 52,
setStrokeColorN: 53,
setFillColor: 54,
setFillColorN: 55,
setStrokeGray: 56,
setFillGray: 57,
setStrokeRGBColor: 58,
setFillRGBColor: 59,
setStrokeCMYKColor: 60,
setFillCMYKColor: 61,
shadingFill: 62,
beginInlineImage: 63,
beginImageData: 64,
endInlineImage: 65,
paintXObject: 66,
markPoint: 67,
markPointProps: 68,
beginMarkedContent: 69,
beginMarkedContentProps: 70,
endMarkedContent: 71,
beginCompat: 72,
endCompat: 73,
paintFormXObjectBegin: 74,
paintFormXObjectEnd: 75,
beginGroup: 76,
endGroup: 77,
beginAnnotations: 78,
endAnnotations: 79,
beginAnnotation: 80,
endAnnotation: 81,
paintJpegXObject: 82,
paintImageMaskXObject: 83,
paintImageMaskXObjectGroup: 84,
paintImageXObject: 85,
paintInlineImageXObject: 86,
paintInlineImageXObjectGroup: 87,
paintImageXObjectRepeat: 88,
paintImageMaskXObjectRepeat: 89,
paintSolidColorImageMask: 90,
constructPath: 91
};
t.UNSUPPORTED_FEATURES = {
unknown: "unknown",
forms: "forms",
javaScript: "javaScript",
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",
errorFontGetPath: "errorFontGetPath",
errorMarkedContent: "errorMarkedContent"
};
t.PasswordResponses = {
NEED_PASSWORD: 1,
INCORRECT_PASSWORD: 2
};
let s = n.WARNINGS;
function warn(e) {
s >= n.WARNINGS && console.log("Warning: " + e)
}
function unreachable(e) {
throw new Error(e)
}
function assert(e, t) {
e || unreachable(t)
}
function shadow(e, t, r) {
Object.defineProperty(e, t, {
value: r,
enumerable: !0,
configurable: !0,
writable: !1
});
return r
}
const a = function BaseExceptionClosure() {
function BaseException(e) {
this.constructor === BaseException && unreachable("Cannot initialize BaseException.");
this.message = e;
this.name = this.constructor.name
}
BaseException.prototype = new Error;
BaseException.constructor = BaseException;
return BaseException
}();
t.BaseException = a;
t.PasswordException = class PasswordException extends a {
constructor(e, t) {
super(e);
this.code = t
}
}
;
t.UnknownErrorException = class UnknownErrorException extends a {
constructor(e, t) {
super(e);
this.details = t
}
}
;
t.InvalidPDFException = class InvalidPDFException extends a {
}
;
t.MissingPDFException = class MissingPDFException extends a {
}
;
t.UnexpectedResponseException = class UnexpectedResponseException extends a {
constructor(e, t) {
super(e);
this.status = t
}
}
;
t.FormatError = class FormatError extends a {
}
;
t.AbortException = class AbortException extends a {
}
;
const i = /\x00/g;
function stringToBytes(e) {
assert("string" == typeof e, "Invalid argument for stringToBytes");
const t = e.length
, r = new Uint8Array(t);
for (let n = 0; n < t; ++n)
r[n] = 255 & e.charCodeAt(n);
return r
}
function arrayByteLength(e) {
if (void 0 !== e.length)
return e.length;
assert(void 0 !== e.byteLength, "arrayByteLength - invalid argument.");
return e.byteLength
}
const o = {
get value() {
return shadow(this, "value", function isLittleEndian() {
const e = new Uint8Array(4);
e[0] = 1;
return 1 === new Uint32Array(e.buffer,0,1)[0]
}())
}
};
t.IsLittleEndianCached = o;
const l = {
get value() {
return shadow(this, "value", function isEvalSupported() {
try {
new Function("");
return !0
} catch (e) {
return !1
}
}())
}
};
t.IsEvalSupportedCached = l;
const c = ["rgb(", 0, ",", 0, ",", 0, ")"];
class Util {
static makeCssRgb(e, t, r) {
c[1] = e;
c[3] = t;
c[5] = r;
return c.join("")
}
static transform(e, t) {
return [e[0] * t[0] + e[2] * t[1], e[1] * t[0] + e[3] * t[1], e[0] * t[2] + e[2] * t[3], e[1] * t[2] + e[3] * t[3], e[0] * t[4] + e[2] * t[5] + e[4], e[1] * t[4] + e[3] * t[5] + e[5]]
}
static applyTransform(e, t) {
return [e[0] * t[0] + e[1] * t[2] + t[4], e[0] * t[1] + e[1] * t[3] + t[5]]
}
static applyInverseTransform(e, t) {
const r = t[0] * t[3] - t[1] * t[2];
return [(e[0] * t[3] - e[1] * t[2] + t[2] * t[5] - t[4] * t[3]) / r, (-e[0] * t[1] + e[1] * t[0] + t[4] * t[1] - t[5] * t[0]) / r]
}
static getAxialAlignedBoundingBox(e, t) {
const r = Util.applyTransform(e, t)
, n = Util.applyTransform(e.slice(2, 4), t)
, s = Util.applyTransform([e[0], e[3]], t)
, a = Util.applyTransform([e[2], e[1]], t);
return [Math.min(r[0], n[0], s[0], a[0]), Math.min(r[1], n[1], s[1], a[1]), Math.max(r[0], n[0], s[0], a[0]), Math.max(r[1], n[1], s[1], a[1])]
}
static inverseTransform(e) {
const t = e[0] * e[3] - e[1] * e[2];
return [e[3] / t, -e[1] / t, -e[2] / t, e[0] / t, (e[2] * e[5] - e[4] * e[3]) / t, (e[4] * e[1] - e[5] * e[0]) / t]
}
static apply3dTransform(e, t) {
return [e[0] * t[0] + e[1] * t[1] + e[2] * t[2], e[3] * t[0] + e[4] * t[1] + e[5] * t[2], e[6] * t[0] + e[7] * t[1] + e[8] * t[2]]
}
static singularValueDecompose2dScale(e) {
const t = [e[0], e[2], e[1], e[3]]
, r = e[0] * t[0] + e[1] * t[2]
, n = e[0] * t[1] + e[1] * t[3]
, s = e[2] * t[0] + e[3] * t[2]
, a = e[2] * t[1] + e[3] * t[3]
, i = (r + a) / 2
, o = Math.sqrt((r + a) * (r + a) - 4 * (r * a - s * n)) / 2
, l = i + o || 1
, c = i - o || 1;
return [Math.sqrt(l), Math.sqrt(c)]
}
static normalizeRect(e) {
const t = e.slice(0);
if (e[0] > e[2]) {
t[0] = e[2];
t[2] = e[0]
}
if (e[1] > e[3]) {
t[1] = e[3];
t[3] = e[1]
}
return t
}
static intersect(e, t) {
function compare(e, t) {
return e - t
}
const r = [e[0], e[2], t[0], t[2]].sort(compare)
, n = [e[1], e[3], t[1], t[3]].sort(compare)
, s = [];
e = Util.normalizeRect(e);
t = Util.normalizeRect(t);
if (!(r[0] === e[0] && r[1] === t[0] || r[0] === t[0] && r[1] === e[0]))
return null;
s[0] = r[1];
s[2] = r[2];
if (!(n[0] === e[1] && n[1] === t[1] || n[0] === t[1] && n[1] === e[1]))
return null;
s[1] = n[1];
s[3] = n[2];
return s
}
}
t.Util = Util;
const h = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 728, 711, 710, 729, 733, 731, 730, 732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8226, 8224, 8225, 8230, 8212, 8211, 402, 8260, 8249, 8250, 8722, 8240, 8222, 8220, 8221, 8216, 8217, 8218, 8482, 64257, 64258, 321, 338, 352, 376, 381, 305, 322, 339, 353, 382, 0, 8364];
const d = function createObjectURLClosure() {
const e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
return function createObjectURL(t, r, n=!1) {
if (!n && URL.createObjectURL) {
const e = new Blob([t],{
type: r
});
return URL.createObjectURL(e)
}
let s = `data:${r};base64,`;
for (let r = 0, n = t.length; r < n; r += 3) {
const a = 255 & t[r]
, i = 255 & t[r + 1]
, o = 255 & t[r + 2];
s += e[a >> 2] + e[(3 & a) << 4 | i >> 4] + e[r + 1 < n ? (15 & i) << 2 | o >> 6 : 64] + e[r + 2 < n ? 63 & o : 64]
}
return s
}
}();
t.createObjectURL = d
}
, function(e, t, r) {
"use strict";
r(4)
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.isNodeJS = void 0;
const n = !("object" != typeof process || process + "" != "[object process]" || process.versions.nw || process.versions.electron && process.type && "browser" !== process.type);
t.isNodeJS = n
}
, function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: !0
});
exports.getDocument = getDocument;
exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
exports.build = exports.version = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = void 0;
var _util = __w_pdfjs_require__(2)
, _display_utils = __w_pdfjs_require__(1)
, _font_loader = __w_pdfjs_require__(6)
, _node_utils = __w_pdfjs_require__(7)
, _annotation_storage = __w_pdfjs_require__(8)
, _api_compatibility = __w_pdfjs_require__(9)
, _canvas = __w_pdfjs_require__(10)
, _worker_options = __w_pdfjs_require__(12)
, _is_node = __w_pdfjs_require__(4)
, _message_handler = __w_pdfjs_require__(13)
, _metadata = __w_pdfjs_require__(14)
, _optional_content_config = __w_pdfjs_require__(16)
, _transport_stream = __w_pdfjs_require__(17)
, _webgl = __w_pdfjs_require__(18);
const DEFAULT_RANGE_CHUNK_SIZE = 65536
, RENDERING_CANCELLED_TIMEOUT = 100
, DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory
, DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;
let createPDFNetworkStream;
function setPDFNetworkStreamFactory(e) {
createPDFNetworkStream = e
}
function getDocument(e) {
const t = new PDFDocumentLoadingTask;
let r;
if ("string" == typeof e)
r = {
url: e
};
else if ((0,
_util.isArrayBuffer)(e))
r = {
data: e
};
else if (e instanceof PDFDataRangeTransport)
r = {
range: e
};
else {
if ("object" != typeof e)
throw new Error("Invalid parameter in getDocument, need either Uint8Array, string or a parameter object");
if (!e.url && !e.data && !e.range)
throw new Error("Invalid parameter object: need either .data, .range or .url");
r = e
}
const n = Object.create(null);
let s = null
, a = null;
for (const e in r)
if ("url" !== e || "undefined" == typeof window)
if ("range" !== e)
if ("worker" !== e)
if ("data" !== e || r[e]instanceof Uint8Array)
n[e] = r[e];
else {
const t = r[e];
if ("string" == typeof t)
n[e] = (0,
_util.stringToBytes)(t);
else if ("object" != typeof t || null === t || isNaN(t.length)) {
if (!(0,
_util.isArrayBuffer)(t))
throw new Error("Invalid PDF binary data: either typed array, string or array-like object is expected in the data property.");
n[e] = new Uint8Array(t)
} else
n[e] = new Uint8Array(t)
}
else
a = r[e];
else
s = r[e];
else
n[e] = new URL(r[e],window.location).href;
n.rangeChunkSize = n.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
n.CMapReaderFactory = n.CMapReaderFactory || DefaultCMapReaderFactory;
n.ignoreErrors = !0 !== n.stopAtErrors;
n.fontExtraProperties = !0 === n.fontExtraProperties;
n.pdfBug = !0 === n.pdfBug;
Number.isInteger(n.maxImageSize) || (n.maxImageSize = -1);
"boolean" != typeof n.isEvalSupported && (n.isEvalSupported = !0);
"boolean" != typeof n.disableFontFace && (n.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || !1);
void 0 === n.ownerDocument && (n.ownerDocument = globalThis.document);
"boolean" != typeof n.disableRange && (n.disableRange = !1);
"boolean" != typeof n.disableStream && (n.disableStream = !1);
"boolean" != typeof n.disableAutoFetch && (n.disableAutoFetch = !1);
(0,
_util.setVerbosityLevel)(n.verbosity);
if (!a) {
const e = {
verbosity: n.verbosity,
port: _worker_options.GlobalWorkerOptions.workerPort
};
a = e.port ? PDFWorker.fromPort(e) : new PDFWorker(e);
t._worker = a
}
const i = t.docId;
a.promise.then((function() {
if (t.destroyed)
throw new Error("Loading aborted");
const e = _fetchDocument(a, n, s, i)
, r = new Promise((function(e) {
let t;
s ? t = new _transport_stream.PDFDataTransportStream({
length: n.length,
initialData: n.initialData,
progressiveDone: n.progressiveDone,
disableRange: n.disableRange,
disableStream: n.disableStream
},s) : n.data || (t = createPDFNetworkStream({
url: n.url,
length: n.length,
httpHeaders: n.httpHeaders,
withCredentials: n.withCredentials,
rangeChunkSize: n.rangeChunkSize,
disableRange: n.disableRange,
disableStream: n.disableStream
}));
e(t)
}
));
return Promise.all([e, r]).then((function([e,r]) {
if (t.destroyed)
throw new Error("Loading aborted");
const s = new _message_handler.MessageHandler(i,e,a.port);
s.postMessageTransfers = a.postMessageTransfers;
const o = new WorkerTransport(s,t,r,n);
t._transport = o;
s.send("Ready", null)
}
))
}
)).catch(t._capability.reject);
return t
}
function _fetchDocument(e, t, r, n) {
if (e.destroyed)
return Promise.reject(new Error("Worker was destroyed"));
if (r) {
t.length = r.length;
t.initialData = r.initialData;
t.progressiveDone = r.progressiveDone
}
return e.messageHandler.sendWithPromise("GetDocRequest", {
docId: n,
apiVersion: "2.6.347",
source: {
data: t.data,
url: t.url,
password: t.password,
disableAutoFetch: t.disableAutoFetch,
rangeChunkSize: t.rangeChunkSize,
length: t.length
},
maxImageSize: t.maxImageSize,
disableFontFace: t.disableFontFace,
postMessageTransfers: e.postMessageTransfers,
docBaseUrl: t.docBaseUrl,
ignoreErrors: t.ignoreErrors,
isEvalSupported: t.isEvalSupported,
fontExtraProperties: t.fontExtraProperties
}).then((function(t) {
if (e.destroyed)
throw new Error("Worker was destroyed");
return t
}
))
}
const PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {
let e = 0;
return class PDFDocumentLoadingTask {
constructor() {
this._capability = (0,
_util.createPromiseCapability)();
this._transport = null;
this._worker = null;
this.docId = "d" + e++;
this.destroyed = !1;
this.onPassword = null;
this.onProgress = null;
this.onUnsupportedFeature = null
}
get promise() {
return this._capability.promise
}
destroy() {
this.destroyed = !0;
return (this._transport ? this._transport.destroy() : Promise.resolve()).then(()=>{
this._transport = null;
if (this._worker) {
this._worker.destroy();
this._worker = null
}
}
)
}
}
}();
class PDFDataRangeTransport {
constructor(e, t, r=!1) {
this.length = e;
this.initialData = t;
this.progressiveDone = r;
this._rangeListeners = [];
this._progressListeners = [];
this._progressiveReadListeners = [];
this._progressiveDoneListeners = [];
this._readyCapability = (0,
_util.createPromiseCapability)()
}
addRangeListener(e) {
this._rangeListeners.push(e)
}
addProgressListener(e) {
this._progressListeners.push(e)
}
addProgressiveReadListener(e) {
this._progressiveReadListeners.push(e)
}
addProgressiveDoneListener(e) {
this._progressiveDoneListeners.push(e)
}
onDataRange(e, t) {
for (const r of this._rangeListeners)
r(e, t)
}
onDataProgress(e, t) {
this._readyCapability.promise.then(()=>{
for (const r of this._progressListeners)
r(e, t)
}
)
}
onDataProgressiveRead(e) {
this._readyCapability.promise.then(()=>{
for (const t of this._progressiveReadListeners)
t(e)
}
)
}
onDataProgressiveDone() {
this._readyCapability.promise.then(()=>{
for (const e of this._progressiveDoneListeners)
e()
}
)
}
transportReady() {
this._readyCapability.resolve()
}
requestDataRange(e, t) {
(0,
_util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange")
}
abort() {}
}
exports.PDFDataRangeTransport = PDFDataRangeTransport;
class PDFDocumentProxy {
constructor(e, t) {
this._pdfInfo = e;
this._transport = t
}
get annotationStorage() {
return (0,
_util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage)
}
get numPages() {
return this._pdfInfo.numPages
}
get fingerprint() {
return this._pdfInfo.fingerprint
}
getPage(e) {
return this._transport.getPage(e)
}
getPageIndex(e) {
return this._transport.getPageIndex(e)
}
getDestinations() {
return this._transport.getDestinations()
}
getDestination(e) {
return this._transport.getDestination(e)
}
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()
}
getOutline() {
return this._transport.getOutline()
}
getOptionalContentConfig() {
return this._transport.getOptionalContentConfig()
}
getPermissions() {
return this._transport.getPermissions()
}
getMetadata() {
return this._transport.getMetadata()
}
getData() {
return this._transport.getData()
}
getDownloadInfo() {
return this._transport.downloadInfoCapability.promise
}
getStats() {
return this._transport.getStats()
}
cleanup() {
return this._transport.startCleanup()
}
destroy() {
return this.loadingTask.destroy()
}
get loadingParams() {
return this._transport.loadingParams
}
get loadingTask() {
return this._transport.loadingTask
}
saveDocument(e) {
return this._transport.saveDocument(e)
}
}
exports.PDFDocumentProxy = PDFDocumentProxy;
class PDFPageProxy {
constructor(e, t, r, n, s=!1) {
this._pageIndex = e;
this._pageInfo = t;
this._ownerDocument = n;
this._transport = r;
this._stats = s ? new _display_utils.StatTimer : null;
this._pdfBug = s;
this.commonObjs = r.commonObjs;
this.objs = new PDFObjects;
this.cleanupAfterRender = !1;
this.pendingCleanup = !1;
this._intentStates = new Map;
this.destroyed = !1
}
get pageNumber() {
return this._pageIndex + 1
}
get rotate() {
return this._pageInfo.rotate
}
get ref() {
return this._pageInfo.ref
}
get userUnit() {
return this._pageInfo.userUnit
}
get view() {
return this._pageInfo.view
}
getViewport({scale: e, rotation: t=this.rotate, offsetX: r=0, offsetY: n=0, dontFlip: s=!1}={}) {
return new _display_utils.PageViewport({
viewBox: this.view,
scale: e,
rotation: t,
offsetX: r,
offsetY: n,
dontFlip: s
})
}
getAnnotations({intent: e=null}={}) {
if (!this.annotationsPromise || this.annotationsIntent !== e) {
this.annotationsPromise = this._transport.getAnnotations(this._pageIndex, e);
this.annotationsIntent = e
}
return this.annotationsPromise
}
render({canvasContext: e, viewport: t, intent: r="display", enableWebGL: n=!1, renderInteractiveForms: s=!1, transform: a=null, imageLayer: i=null, canvasFactory: o=null, background: l=null, annotationStorage: c=null, optionalContentConfigPromise: h=null}) {
this._stats && this._stats.time("Overall");
const d = "print" === r ? "print" : "display";
this.pendingCleanup = !1;
h || (h = this._transport.getOptionalContentConfig());
let u = this._intentStates.get(d);
if (!u) {
u = Object.create(null);
this._intentStates.set(d, u)
}
if (u.streamReaderCancelTimeout) {
clearTimeout(u.streamReaderCancelTimeout);
u.streamReaderCancelTimeout = null
}
const p = o || new DefaultCanvasFactory({
ownerDocument: this._ownerDocument
})
, f = new _webgl.WebGLContext({
enable: n
});
if (!u.displayReadyCapability) {
u.displayReadyCapability = (0,
_util.createPromiseCapability)();
u.operatorList = {
fnArray: [],
argsArray: [],
lastChunk: !1
};
this._stats && this._stats.time("Page Request");
this._pumpOperatorList({
pageIndex: this._pageIndex,
intent: d,
renderInteractiveForms: !0 === s,
annotationStorage: c && c.getAll() || null
})
}
const complete = e=>{
const t = u.renderTasks.indexOf(g);
t >= 0 && u.renderTasks.splice(t, 1);
(this.cleanupAfterRender || "print" === d) && (this.pendingCleanup = !0);
this._tryCleanup();
if (e) {
g.capability.reject(e);
this._abortOperatorList({
intentState: u,
reason: e
})
} else
g.capability.resolve();
if (this._stats) {
this._stats.timeEnd("Rendering");
this._stats.timeEnd("Overall")
}
}
, g = new InternalRenderTask({
callback: complete,
params: {
canvasContext: e,
viewport: t,
transform: a,
imageLayer: i,
background: l
},
objs: this.objs,
commonObjs: this.commonObjs,
operatorList: u.operatorList,
pageIndex: this._pageIndex,
canvasFactory: p,
webGLContext: f,
useRequestAnimationFrame: "print" !== d,
pdfBug: this._pdfBug
});
u.renderTasks || (u.renderTasks = []);
u.renderTasks.push(g);
const m = g.task;
Promise.all([u.displayReadyCapability.promise, h]).then(([e,t])=>{
if (this.pendingCleanup)
complete();
else {
this._stats && this._stats.time("Rendering");
g.initializeGraphics({
transparency: e,
optionalContentConfig: t
});
g.operatorListChanged()
}
}
).catch(complete);
return m
}
getOperatorList() {
let e, t = this._intentStates.get("oplist");
if (!t) {
t = Object.create(null);
this._intentStates.set("oplist", t)
}
if (!t.opListReadCapability) {
e = Object.create(null);
e.operatorListChanged = function operatorListChanged() {
if (t.operatorList.lastChunk) {
t.opListReadCapability.resolve(t.operatorList);
const r = t.renderTasks.indexOf(e);
r >= 0 && t.renderTasks.splice(r, 1)
}
}
;
t.opListReadCapability = (0,
_util.createPromiseCapability)();
t.renderTasks = [];
t.renderTasks.push(e);
t.operatorList = {
fnArray: [],
argsArray: [],
lastChunk: !1
};
this._stats && this._stats.time("Page Request");
this._pumpOperatorList({
pageIndex: this._pageIndex,
intent: "oplist"
})
}
return t.opListReadCapability.promise
}
streamTextContent({normalizeWhitespace: e=!1, disableCombineTextItems: t=!1}={}) {
return this._transport.messageHandler.sendWithStream("GetTextContent", {
pageIndex: this._pageIndex,
normalizeWhitespace: !0 === e,
combineTextItems: !0 !== t
}, {
highWaterMark: 100,
size: e=>e.items.length
})
}
getTextContent(e={}) {
const t = this.streamTextContent(e);
return new Promise((function(e, r) {
const n = t.getReader()
, s = {
items: [],
styles: Object.create(null)
};
!function pump() {
n.read().then((function({value: t, done: r}) {
if (r)
e(s);
else {
Object.assign(s.styles, t.styles);
s.items.push(...t.items);
pump()
}
}
), r)
}()
}
))
}
_destroy() {
this.destroyed = !0;
this._transport.pageCache[this._pageIndex] = null;
const e = [];
for (const [t,r] of this._intentStates) {
this._abortOperatorList({
intentState: r,
reason: new Error("Page was destroyed."),
force: !0
});
if ("oplist" !== t)
for (const t of r.renderTasks) {
e.push(t.completed);
t.cancel()
}
}
this.objs.clear();
this.annotationsPromise = null;
this.pendingCleanup = !1;
return Promise.all(e)
}
cleanup(e=!1) {
this.pendingCleanup = !0;
return this._tryCleanup(e)
}
_tryCleanup(e=!1) {
if (!this.pendingCleanup)
return !1;
for (const {renderTasks: e, operatorList: t} of this._intentStates.values())
if (0 !== e.length || !t.lastChunk)
return !1;
this._intentStates.clear();
this.objs.clear();
this.annotationsPromise = null;
e && this._stats && (this._stats = new _display_utils.StatTimer);
this.pendingCleanup = !1;
return !0
}
_startRenderPage(e, t) {
const r = this._intentStates.get(t);
if (r) {
this._stats && this._stats.timeEnd("Page Request");
r.displayReadyCapability && r.displayReadyCapability.resolve(e)
}
}
_renderPageChunk(e, t) {
for (let r = 0, n = e.length; r < n; r++) {
t.operatorList.fnArray.push(e.fnArray[r]);
t.operatorList.argsArray.push(e.argsArray[r])
}
t.operatorList.lastChunk = e.lastChunk;
for (let e = 0; e < t.renderTasks.length; e++)
t.renderTasks[e].operatorListChanged();
e.lastChunk && this._tryCleanup()
}
_pumpOperatorList(e) {
(0,
_util.assert)(e.intent, 'PDFPageProxy._pumpOperatorList: Expected "intent" argument.');
const t = this._transport.messageHandler.sendWithStream("GetOperatorList", e).getReader()
, r = this._intentStates.get(e.intent);
r.streamReader = t;
const pump = ()=>{
t.read().then(({value: e, done: t})=>{
if (t)
r.streamReader = null;
else if (!this._transport.destroyed) {
this._renderPageChunk(e, r);
pump()
}
}
, e=>{
r.streamReader = null;
if (!this._transport.destroyed) {
if (r.operatorList) {
r.operatorList.lastChunk = !0;
for (let e = 0; e < r.renderTasks.length; e++)
r.renderTasks[e].operatorListChanged();
this._tryCleanup()
}
if (r.displayReadyCapability)
r.displayReadyCapability.reject(e);
else {
if (!r.opListReadCapability)
throw e;
r.opListReadCapability.reject(e)
}
}
}
)
}
;
pump()
}
_abortOperatorList({intentState: e, reason: t, force: r=!1}) {
(0,
_util.assert)(t instanceof Error || "object" == typeof t && null !== t, 'PDFPageProxy._abortOperatorList: Expected "reason" argument.');
if (e.streamReader) {
if (!r) {
if (0 !== e.renderTasks.length)
return;
if (t instanceof _display_utils.RenderingCancelledException) {
e.streamReaderCancelTimeout = setTimeout(()=>{
this._abortOperatorList({
intentState: e,
reason: t,
force: !0
});
e.streamReaderCancelTimeout = null
}
, RENDERING_CANCELLED_TIMEOUT);
return
}
}
e.streamReader.cancel(new _util.AbortException(t && t.message));
e.streamReader = null;
if (!this._transport.destroyed) {
for (const [t,r] of this._intentStates)
if (r === e) {
this._intentStates.delete(t);
break
}
this.cleanup()
}
}
}
get stats() {
return this._stats
}
}
exports.PDFPageProxy = PDFPageProxy;
class LoopbackPort {
constructor(e=!0) {
this._listeners = [];
this._defer = e;
this._deferred = Promise.resolve(void 0)
}
postMessage(e, t) {
if (!this._defer) {
this._listeners.forEach(t=>{
t.call(this, {
data: e
})
}
);
return
}
const r = new WeakMap
, n = {
data: function cloneValue(e) {
if ("object" != typeof e || null === e)
return e;
if (r.has(e))
return r.get(e);
let n, s;
if ((n = e.buffer) && (0,
_util.isArrayBuffer)(n)) {
s = t && t.includes(n) ? new e.constructor(n,e.byteOffset,e.byteLength) : new e.constructor(e);
r.set(e, s);
return s
}
s = Array.isArray(e) ? [] : {};
r.set(e, s);
for (const t in e) {
let r, n = e;
for (; !(r = Object.getOwnPropertyDescriptor(n, t)); )
n = Object.getPrototypeOf(n);
if (void 0 !== r.value)
if ("function" != typeof r.value)
s[t] = cloneValue(r.value);
else if (e.hasOwnProperty && e.hasOwnProperty(t))
throw new Error("LoopbackPort.postMessage - cannot clone: " + e[t])
}
return s
}(e)
};
this._deferred.then(()=>{
this._listeners.forEach(e=>{
e.call(this, n)
}
)
}
)
}
addEventListener(e, t) {
this._listeners.push(t)
}
removeEventListener(e, t) {
const r = this._listeners.indexOf(t);
this._listeners.splice(r, 1)
}
terminate() {
this._listeners.length = 0
}
}
exports.LoopbackPort = LoopbackPort;
const PDFWorker = function PDFWorkerClosure() {
const pdfWorkerPorts = new WeakMap;
let isWorkerDisabled = !1, fallbackWorkerSrc, nextFakeWorkerId = 0, fakeWorkerCapability;
if (_is_node.isNodeJS && "function" == typeof require) {
isWorkerDisabled = !0;
fallbackWorkerSrc = "./pdf.worker.js"
} else if ("object" == typeof document && "currentScript"in document) {
const e = document.currentScript && document.currentScript.src;
e && (fallbackWorkerSrc = e.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2"))
}
function getWorkerSrc() {
if (_worker_options.GlobalWorkerOptions.workerSrc)
return _worker_options.GlobalWorkerOptions.workerSrc;
if (void 0 !== fallbackWorkerSrc) {
_is_node.isNodeJS || (0,
_display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.');
return fallbackWorkerSrc
}
throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')
}
function getMainThreadWorkerMessageHandler() {
let e;
try {
e = globalThis.pdfjsWorker && globalThis.pdfjsWorker.WorkerMessageHandler
} catch (e) {}
return e || null
}
function setupFakeWorkerGlobal() {
if (fakeWorkerCapability)
return fakeWorkerCapability.promise;
fakeWorkerCapability = (0,
_util.createPromiseCapability)();
const loader = async function() {
const mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();
if (mainWorkerMessageHandler)
return mainWorkerMessageHandler;
if (_is_node.isNodeJS && "function" == typeof require) {
const worker = eval("require")(getWorkerSrc());
return worker.WorkerMessageHandler
}
await (0,
_display_utils.loadScript)(getWorkerSrc());
return window.pdfjsWorker.WorkerMessageHandler
};
loader().then(fakeWorkerCapability.resolve, fakeWorkerCapability.reject);
return fakeWorkerCapability.promise
}
function createCDNWrapper(e) {
const t = "importScripts('" + e + "');";
return URL.createObjectURL(new Blob([t]))
}
class PDFWorker {
constructor({name: e=null, port: t=null, verbosity: r=(0,
_util.getVerbosityLevel)()}={}) {
if (t && pdfWorkerPorts.has(t))
throw new Error("Cannot use more than one PDFWorker per port");
this.name = e;
this.destroyed = !1;
this.postMessageTransfers = !0;
this.verbosity = r;
this._readyCapability = (0,
_util.createPromiseCapability)();
this._port = null;
this._webWorker = null;
this._messageHandler = null;
if (t) {
pdfWorkerPorts.set(t, this);
this._initializeFromPort(t)
} else
this._initialize()
}
get promise() {
return this._readyCapability.promise
}
get port() {
return this._port
}
get messageHandler() {
return this._messageHandler
}
_initializeFromPort(e) {
this._port = e;
this._messageHandler = new _message_handler.MessageHandler("main","worker",e);
this._messageHandler.on("ready", (function() {}
));
this._readyCapability.resolve()
}
_initialize() {
if ("undefined" != typeof Worker && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {
let e = getWorkerSrc();
try {
(0,
_util.isSameOrigin)(window.location.href, e) || (e = createCDNWrapper(new URL(e,window.location).href));
const t = new Worker(e)
, r = new _message_handler.MessageHandler("main","worker",t)
, terminateEarly = ()=>{
t.removeEventListener("error", onWorkerError);
r.destroy();
t.terminate();
this.destroyed ? this._readyCapability.reject(new Error("Worker was destroyed")) : this._setupFakeWorker()
}
, onWorkerError = ()=>{
this._webWorker || terminateEarly()
}
;
t.addEventListener("error", onWorkerError);
r.on("test", e=>{
t.removeEventListener("error", onWorkerError);
if (this.destroyed)
terminateEarly();
else if (e) {
this._messageHandler = r;
this._port = t;
this._webWorker = t;
e.supportTransfers || (this.postMessageTransfers = !1);
this._readyCapability.resolve();
r.send("configure", {
verbosity: this.verbosity
})
} else {
this._setupFakeWorker();
r.destroy();
t.terminate()
}
}
);
r.on("ready", e=>{
t.removeEventListener("error", onWorkerError);
if (this.destroyed)
terminateEarly();
else
try {
sendTest()
} catch (e) {
this._setupFakeWorker()
}
}
);
const sendTest = ()=>{
const e = new Uint8Array([this.postMessageTransfers ? 255 : 0]);
try {
r.send("test", e, [e.buffer])
} catch (t) {
(0,
_util.warn)("Cannot use postMessage transfers.");
e[0] = 0;
r.send("test", e)
}
}
;
sendTest();
return
} catch (e) {
(0,
_util.info)("The worker has been disabled.")
}
}
this._setupFakeWorker()
}
_setupFakeWorker() {
if (!isWorkerDisabled) {
(0,
_util.warn)("Setting up fake worker.");
isWorkerDisabled = !0
}
setupFakeWorkerGlobal().then(e=>{
if (this.destroyed) {
this._readyCapability.reject(new Error("Worker was destroyed"));
return
}
const t = new LoopbackPort;
this._port = t;
const r = "fake" + nextFakeWorkerId++
, n = new _message_handler.MessageHandler(r + "_worker",r,t);
e.setup(n, t);
const s = new _message_handler.MessageHandler(r,r + "_worker",t);
this._messageHandler = s;
this._readyCapability.resolve();
s.send("configure", {
verbosity: this.verbosity
})
}
).catch(e=>{
this._readyCapability.reject(new Error(`Setting up fake worker failed: "${e.message}".`))
}
)
}
destroy() {
this.destroyed = !0;
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
}
}
static fromPort(e) {
if (!e || !e.port)
throw new Error("PDFWorker.fromPort - invalid method signature.");
return pdfWorkerPorts.has(e.port) ? pdfWorkerPorts.get(e.port) : new PDFWorker(e)
}
static getWorkerSrc() {
return getWorkerSrc()
}
}
return PDFWorker
}();
exports.PDFWorker = PDFWorker;
class WorkerTransport {
constructor(e, t, r, n) {
this.messageHandler = e;
this.loadingTask = t;
this.commonObjs = new PDFObjects;
this.fontLoader = new _font_loader.FontLoader({
docId: t.docId,
onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
ownerDocument: n.ownerDocument
});
this._params = n;
this.CMapReaderFactory = new n.CMapReaderFactory({
baseUrl: n.cMapUrl,
isCompressed: n.cMapPacked
});
this.destroyed = !1;
this.destroyCapability = null;
this._passwordCapability = null;
this._networkStream = r;
this._fullReader = null;
this._lastProgress = null;
this.pageCache = [];
this.pagePromises = [];
this.downloadInfoCapability = (0,
_util.createPromiseCapability)();
this.setupMessageHandler()
}
destroy() {
if (this.destroyCapability)
return this.destroyCapability.promise;
this.destroyed = !0;
this.destroyCapability = (0,
_util.createPromiseCapability)();
this._passwordCapability && this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback"));
const e = [];
this.pageCache.forEach((function(t) {
t && e.push(t._destroy())
}
));
this.pageCache.length = 0;
this.pagePromises.length = 0;
const t = this.messageHandler.sendWithPromise("Terminate", null);
e.push(t);
Promise.all(e).then(()=>{
this.fontLoader.clear();
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: e, loadingTask: t} = this;
e.on("GetReader", (e,t)=>{
(0,
_util.assert)(this._networkStream, "GetReader - no `IPDFStream` instance available.");
this._fullReader = this._networkStream.getFullReader();
this._fullReader.onProgress = e=>{
this._lastProgress = {
loaded: e.loaded,
total: e.total
}
}
;
t.onPull = ()=>{
this._fullReader.read().then((function({value: e, done: r}) {
if (r)
t.close();
else {
(0,
_util.assert)((0,
_util.isArrayBuffer)(e), "GetReader - expected an ArrayBuffer.");
t.enqueue(new Uint8Array(e), 1, [e])
}
}
)).catch(e=>{
t.error(e)
}
)
}
;
t.onCancel = e=>{
this._fullReader.cancel(e);
t.ready.catch(e=>{
if (!this.destroyed)
throw e
}
)
}
}
);
e.on("ReaderHeadersReady", e=>{
const r = (0,
_util.createPromiseCapability)()
, n = this._fullReader;
n.headersReady.then(()=>{
if (!n.isStreamingSupported || !n.isRangeSupported) {
this._lastProgress && t.onProgress && t.onProgress(this._lastProgress);
n.onProgress = e=>{
t.onProgress && t.onProgress({
loaded: e.loaded,
total: e.total
})
}
}
r.resolve({
isStreamingSupported: n.isStreamingSupported,
isRangeSupported: n.isRangeSupported,
contentLength: n.contentLength
})
}
, r.reject);
return r.promise
}
);
e.on("GetRangeReader", (e,t)=>{
(0,
_util.assert)(this._networkStream, "GetRangeReader - no `IPDFStream` instance available.");
const r = this._networkStream.getRangeReader(e.begin, e.end);
if (r) {
t.onPull = ()=>{
r.read().then((function({value: e, done: r}) {
if (r)
t.close();
else {
(0,
_util.assert)((0,
_util.isArrayBuffer)(e), "GetRangeReader - expected an ArrayBuffer.");
t.enqueue(new Uint8Array(e), 1, [e])
}
}
)).catch(e=>{
t.error(e)
}
)
}
;
t.onCancel = e=>{
r.cancel(e);
t.ready.catch(e=>{
if (!this.destroyed)
throw e
}
)
}
} else
t.close()
}
);
e.on("GetDoc", ({pdfInfo: e})=>{
this._numPages = e.numPages;
t._capability.resolve(new PDFDocumentProxy(e,this))
}
);
e.on("DocException", (function(e) {
let r;
switch (e.name) {
case "PasswordException":
r = new _util.PasswordException(e.message,e.code);
break;
case "InvalidPDFException":
r = new _util.InvalidPDFException(e.message);
break;
case "MissingPDFException":
r = new _util.MissingPDFException(e.message);
break;
case "UnexpectedResponseException":
r = new _util.UnexpectedResponseException(e.message,e.status);
break;
case "UnknownErrorException":
r = new _util.UnknownErrorException(e.message,e.details)
}
if (!(r instanceof Error)) {
const e = "DocException - expected a valid Error.";
(0,
_util.warn)(e)
}
t._capability.reject(r)
}
));
e.on("PasswordRequest", e=>{
this._passwordCapability = (0,
_util.createPromiseCapability)();
if (t.onPassword) {
const updatePassword = e=>{
this._passwordCapability.resolve({
password: e
})
}
;
try {
t.onPassword(updatePassword, e.code)
} catch (e) {
this._passwordCapability.reject(e)
}
} else
this._passwordCapability.reject(new _util.PasswordException(e.message,e.code));
return this._passwordCapability.promise
}
);
e.on("DataLoaded", e=>{
t.onProgress && t.onProgress({
loaded: e.length,
total: e.length
});
this.downloadInfoCapability.resolve(e)
}
);
e.on("StartRenderPage", e=>{
if (this.destroyed)
return;
this.pageCache[e.pageIndex]._startRenderPage(e.transparency, e.intent)
}
);
e.on("commonobj", t=>{
if (this.destroyed)
return;
const [r,n,s] = t;
if (!this.commonObjs.has(r))
switch (n) {
case "Font":
const t = this._params;
if ("error"in s) {
const e = s.error;
(0,
_util.warn)("Error during font loading: " + e);
this.commonObjs.resolve(r, e);
break
}
let a = null;
t.pdfBug && globalThis.FontInspector && globalThis.FontInspector.enabled && (a = {
registerFont(e, t) {
globalThis.FontInspector.fontAdded(e, t)
}
});
const i = new _font_loader.FontFaceObject(s,{
isEvalSupported: t.isEvalSupported,
disableFontFace: t.disableFontFace,
ignoreErrors: t.ignoreErrors,
onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
fontRegistry: a
});
this.fontLoader.bind(i).catch(t=>e.sendWithPromise("FontFallback", {
id: r
})).finally(()=>{
!t.fontExtraProperties && i.data && (i.data = null);
this.commonObjs.resolve(r, i)
}
);
break;
case "FontPath":
case "Image":
this.commonObjs.resolve(r, s);
break;
default:
throw new Error("Got unknown common object type " + n)
}
}
);
e.on("obj", e=>{
if (this.destroyed)
return;
const [t,r,n,s] = e
, a = this.pageCache[r];
if (!a.objs.has(t))
switch (n) {
case "Image":
a.objs.resolve(t, s);
const e = 8e6;
s && "data"in s && s.data.length > e && (a.cleanupAfterRender = !0);
break;
default:
throw new Error("Got unknown object type " + n)
}
}
);
e.on("DocProgress", e=>{
this.destroyed || t.onProgress && t.onProgress({
loaded: e.loaded,
total: e.total
})
}
);
e.on("UnsupportedFeature", this._onUnsupportedFeature.bind(this));
e.on("FetchBuiltInCMap", (e,t)=>{
if (this.destroyed) {
t.error(new Error("Worker was destroyed"));
return
}
let r = !1;
t.onPull = ()=>{
if (r)
t.close();
else {
r = !0;
this.CMapReaderFactory.fetch(e).then((function(e) {
t.enqueue(e, 1, [e.cMapData.buffer])
}
)).catch((function(e) {
t.error(e)
}
))
}
}
}
)
}
_onUnsupportedFeature({featureId: e}) {
this.destroyed || this.loadingTask.onUnsupportedFeature && this.loadingTask.onUnsupportedFeature(e)
}
getData() {
return this.messageHandler.sendWithPromise("GetData", null)
}
getPage(e) {
if (!Number.isInteger(e) || e <= 0 || e > this._numPages)
return Promise.reject(new Error("Invalid page request"));
const t = e - 1;
if (t in this.pagePromises)
return this.pagePromises[t];
const r = this.messageHandler.sendWithPromise("GetPage", {
pageIndex: t
}).then(e=>{
if (this.destroyed)
throw new Error("Transport destroyed");
const r = new PDFPageProxy(t,e,this,this._params.ownerDocument,this._params.pdfBug);
this.pageCache[t] = r;
return r
}
);
this.pagePromises[t] = r;
return r
}
getPageIndex(e) {
return this.messageHandler.sendWithPromise("GetPageIndex", {
ref: e
}).catch((function(e) {
return Promise.reject(new Error(e))
}
))
}
getAnnotations(e, t) {
return this.messageHandler.sendWithPromise("GetAnnotations", {
pageIndex: e,
intent: t
})
}
saveDocument(e) {
return this.messageHandler.sendWithPromise("SaveDocument", {
numPages: this._numPages,
annotationStorage: e && e.getAll() || null,
filename: this._fullReader ? this._fullReader.filename : null
}).finally(()=>{
e && e.resetModified()
}
)
}
getDestinations() {
return this.messageHandler.sendWithPromise("GetDestinations", null)
}
getDestination(e) {
return "string" != typeof e ? Promise.reject(new Error("Invalid destination request.")) : this.messageHandler.sendWithPromise("GetDestination", {
id: e
})
}
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)
}
getOutline() {
return this.messageHandler.sendWithPromise("GetOutline", null)
}
getOptionalContentConfig() {
return this.messageHandler.sendWithPromise("GetOptionalContentConfig", null).then(e=>new _optional_content_config.OptionalContentConfig(e))
}
getPermissions() {
return this.messageHandler.sendWithPromise("GetPermissions", null)
}
getMetadata() {
return this.messageHandler.sendWithPromise("GetMetadata", null).then(e=>({
info: e[0],
metadata: e[1] ? new _metadata.Metadata(e[1]) : null,
contentDispositionFilename: this._fullReader ? this._fullReader.filename : null
}))
}
getStats() {
return this.messageHandler.sendWithPromise("GetStats", null)
}
startCleanup() {
return this.messageHandler.sendWithPromise("Cleanup", null).then(()=>{
for (let e = 0, t = this.pageCache.length; e < t; e++) {
const t = this.pageCache[e];
if (t) {
if (!t.cleanup())
throw new Error(`startCleanup: Page ${e + 1} is currently rendering.`)
}
}
this.commonObjs.clear();
this.fontLoader.clear()
}
)
}
get loadingParams() {
const e = this._params;
return (0,
_util.shadow)(this, "loadingParams", {
disableAutoFetch: e.disableAutoFetch,
disableFontFace: e.disableFontFace
})
}
}
class PDFObjects {
constructor() {
this._objs = Object.create(null)
}
_ensureObj(e) {
return this._objs[e] ? this._objs[e] : this._objs[e] = {
capability: (0,
_util.createPromiseCapability)(),
data: null,
resolved: !1
}
}
get(e, t=null) {
if (t) {
this._ensureObj(e).capability.promise.then(t);
return null
}
const r = this._objs[e];
if (!r || !r.resolved)
throw new Error(`Requesting object that isn't resolved yet ${e}.`);
return r.data
}
has(e) {
const t = this._objs[e];
return !!t && t.resolved
}
resolve(e, t) {
const r = this._ensureObj(e);
r.resolved = !0;
r.data = t;
r.capability.resolve(t)
}
clear() {
this._objs = Object.create(null)
}
}
class RenderTask {
constructor(e) {
this._internalRenderTask = e;
this.onContinue = null
}
get promise() {
return this._internalRenderTask.capability.promise
}
cancel() {
this._internalRenderTask.cancel()
}
}
const InternalRenderTask = function InternalRenderTaskClosure() {
const e = new WeakSet;
return class InternalRenderTask {
constructor({callback: e, params: t, objs: r, commonObjs: n, operatorList: s, pageIndex: a, canvasFactory: i, webGLContext: o, useRequestAnimationFrame: l=!1, pdfBug: c=!1}) {
this.callback = e;
this.params = t;
this.objs = r;
this.commonObjs = n;
this.operatorListIdx = null;
this.operatorList = s;
this._pageIndex = a;
this.canvasFactory = i;
this.webGLContext = o;
this._pdfBug = c;
this.running = !1;
this.graphicsReadyCallback = null;
this.graphicsReady = !1;
this._useRequestAnimationFrame = !0 === l && "undefined" != typeof window;
this.cancelled = !1;
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 = t.canvasContext.canvas
}
get completed() {
return this.capability.promise.catch((function() {}
))
}
initializeGraphics({transparency: t=!1, optionalContentConfig: r}) {
if (this.cancelled)
return;
if (this._canvas) {
if (e.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.");
e.add(this._canvas)
}
if (this._pdfBug && globalThis.StepperManager && globalThis.StepperManager.enabled) {
this.stepper = globalThis.StepperManager.create(this._pageIndex);
this.stepper.init(this.operatorList);
this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint()
}
const {canvasContext: n, viewport: s, transform: a, imageLayer: i, background: o} = this.params;
this.gfx = new _canvas.CanvasGraphics(n,this.commonObjs,this.objs,this.canvasFactory,this.webGLContext,i,r);
this.gfx.beginDrawing({
transform: a,
viewport: s,
transparency: t,
background: o
});
this.operatorListIdx = 0;
this.graphicsReady = !0;
this.graphicsReadyCallback && this.graphicsReadyCallback()
}
cancel(t=null) {
this.running = !1;
this.cancelled = !0;
this.gfx && this.gfx.endDrawing();
this._canvas && e.delete(this._canvas);
this.callback(t || new _display_utils.RenderingCancelledException("Rendering cancelled, page " + (this._pageIndex + 1),"canvas"))
}
operatorListChanged() {
if (this.graphicsReady) {
this.stepper && this.stepper.updateOperatorList(this.operatorList);
this.running || this._continue()
} else
this.graphicsReadyCallback || (this.graphicsReadyCallback = this._continueBound)
}
_continue() {
this.running = !0;
this.cancelled || (this.task.onContinue ? this.task.onContinue(this._scheduleNextBound) : this._scheduleNext())
}
_scheduleNext() {
this._useRequestAnimationFrame ? window.requestAnimationFrame(()=>{
this._nextBound().catch(this.cancel.bind(this))
}
) : Promise.resolve().then(this._nextBound).catch(this.cancel.bind(this))
}
async _next() {
if (!this.cancelled) {
this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
if (this.operatorListIdx === this.operatorList.argsArray.length) {
this.running = !1;
if (this.operatorList.lastChunk) {
this.gfx.endDrawing();
this._canvas && e.delete(this._canvas);
this.callback()
}
}
}
}
}
}()
, version = "2.6.347";
exports.version = version;
const build = "3be9c65f";
exports.build = build
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.FontLoader = t.FontFaceObject = void 0;
var n = r(2);
class BaseFontLoader {
constructor({docId: e, onUnsupportedFeature: t, ownerDocument: r=globalThis.document}) {
this.constructor === BaseFontLoader && (0,
n.unreachable)("Cannot initialize BaseFontLoader.");
this.docId = e;
this._onUnsupportedFeature = t;
this._document = r;
this.nativeFontFaces = [];
this.styleElement = null
}
addNativeFontFace(e) {
this.nativeFontFaces.push(e);
this._document.fonts.add(e)
}
insertRule(e) {
let t = this.styleElement;
if (!t) {
t = this.styleElement = this._document.createElement("style");
t.id = "PDFJS_FONT_STYLE_TAG_" + this.docId;
this._document.documentElement.getElementsByTagName("head")[0].appendChild(t)
}
const r = t.sheet;
r.insertRule(e, r.cssRules.length)
}
clear() {
this.nativeFontFaces.forEach(e=>{
this._document.fonts.delete(e)
}
);
this.nativeFontFaces.length = 0;
if (this.styleElement) {
this.styleElement.remove();
this.styleElement = null
}
}
async bind(e) {
if (e.attached || e.missingFile)
return;
e.attached = !0;
if (this.isFontLoadingAPISupported) {
const t = e.createNativeFontFace();
if (t) {
this.addNativeFontFace(t);
try {
await t.loaded
} catch (r) {
this._onUnsupportedFeature({
featureId: n.UNSUPPORTED_FEATURES.errorFontLoadNative
});
(0,
n.warn)(`Failed to load font '${t.family}': '${r}'.`);
e.disableFontFace = !0;
throw r
}
}
return
}
const t = e.createFontFaceRule();
if (t) {
this.insertRule(t);
if (this.isSyncFontLoadingSupported)
return;
await new Promise(r=>{
const n = this._queueLoadingCallback(r);
this._prepareFontLoadEvent([t], [e], n)
}
)
}
}
_queueLoadingCallback(e) {
(0,
n.unreachable)("Abstract method `_queueLoadingCallback`.")
}
get isFontLoadingAPISupported() {
const e = void 0 !== this._document && !!this._document.fonts;
return (0,
n.shadow)(this, "isFontLoadingAPISupported", e)
}
get isSyncFontLoadingSupported() {
(0,
n.unreachable)("Abstract method `isSyncFontLoadingSupported`.")
}
get _loadTestFont() {
(0,
n.unreachable)("Abstract method `_loadTestFont`.")
}
_prepareFontLoadEvent(e, t, r) {
(0,
n.unreachable)("Abstract method `_prepareFontLoadEvent`.")
}
}
let s;
t.FontLoader = s;
t.FontLoader = s = class GenericFontLoader extends BaseFontLoader {
constructor(e) {
super(e);
this.loadingContext = {
requests: [],
nextRequestId: 0
};
this.loadTestFontId = 0
}
get isSyncFontLoadingSupported() {
let e = !1;
if ("undefined" == typeof navigator)
e = !0;
else {
const t = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
t && t[1] >= 14 && (e = !0)
}
return (0,
n.shadow)(this, "isSyncFontLoadingSupported", e)
}
_queueLoadingCallback(e) {
const t = this.loadingContext
, r = {
id: "pdfjs-font-loading-" + t.nextRequestId++,
done: !1,
complete: function completeRequest() {
(0,
n.assert)(!r.done, "completeRequest() cannot be called twice.");
r.done = !0;
for (; t.requests.length > 0 && t.requests[0].done; ) {
const e = t.requests.shift();
setTimeout(e.callback, 0)
}
},
callback: e
};
t.requests.push(r);
return r
}
get _loadTestFont() {
return (0,
n.shadow)(this, "_loadTestFont", atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA=="))
}
_prepareFontLoadEvent(e, t, r) {
function int32(e, t) {
return e.charCodeAt(t) << 24 | e.charCodeAt(t + 1) << 16 | e.charCodeAt(t + 2) << 8 | 255 & e.charCodeAt(t + 3)
}
function spliceString(e, t, r, n) {
return e.substring(0, t) + n + e.substring(t + r)
}
let s, a;
const i = this._document.createElement("canvas");
i.width = 1;
i.height = 1;
const o = i.getContext("2d");
let l = 0;
const c = `lt ${Date.now()}${this.loadTestFontId++}`;
let h = this._loadTestFont;
h = spliceString(h, 976, c.length, c);
let d = int32(h, 16);
for (s = 0,
a = c.length - 3; s < a; s += 4)
d = d - 1482184792 + int32(c, s) | 0;
s < c.length && (d = d - 1482184792 + int32(c + "XXX", s) | 0);
h = spliceString(h, 16, 4, (0,
n.string32)(d));
const u = `@font-face {font-family:"${c}";src:${`url(data:font/opentype;base64,${btoa(h)});`}}`;
this.insertRule(u);
const p = [];
for (s = 0,
a = t.length; s < a; s++)
p.push(t[s].loadedName);
p.push(c);
const f = this._document.createElement("div");
f.style.visibility = "hidden";
f.style.width = f.style.height = "10px";
f.style.position = "absolute";
f.style.top = f.style.left = "0px";
for (s = 0,
a = p.length; s < a; ++s) {
const e = this._document.createElement("span");
e.textContent = "Hi";
e.style.fontFamily = p[s];
f.appendChild(e)
}
this._document.body.appendChild(f);
!function isFontReady(e, t) {
l++;
if (l > 30) {
(0,
n.warn)("Load test font never loaded.");
t();
return
}
o.font = "30px " + e;
o.fillText(".", 0, 20);
o.getImageData(0, 0, 1, 1).data[3] > 0 ? t() : setTimeout(isFontReady.bind(null, e, t))
}(c, ()=>{
this._document.body.removeChild(f);
r.complete()
}
)
}
}
;
t.FontFaceObject = class FontFaceObject {
constructor(e, {isEvalSupported: t=!0, disableFontFace: r=!1, ignoreErrors: n=!1, onUnsupportedFeature: s=null, fontRegistry: a=null}) {
this.compiledGlyphs = Object.create(null);
for (const t in e)
this[t] = e[t];
this.isEvalSupported = !1 !== t;
this.disableFontFace = !0 === r;
this.ignoreErrors = !0 === n;
this._onUnsupportedFeature = s;
this.fontRegistry = a
}
createNativeFontFace() {
if (!this.data || this.disableFontFace)
return null;
const e = new FontFace(this.loadedName,this.data,{});
this.fontRegistry && this.fontRegistry.registerFont(this);
return e
}
createFontFaceRule() {
if (!this.data || this.disableFontFace)
return null;
const e = (0,
n.bytesToString)(new Uint8Array(this.data))
, t = `url(data:${this.mimetype};base64,${btoa(e)});`
, r = `@font-face {font-family:"${this.loadedName}";src:${t}}`;
this.fontRegistry && this.fontRegistry.registerFont(this, t);
return r
}
getPathGenerator(e, t) {
if (void 0 !== this.compiledGlyphs[t])
return this.compiledGlyphs[t];
let r, s;
try {
r = e.get(this.loadedName + "_path_" + t)
} catch (e) {
if (!this.ignoreErrors)
throw e;
this._onUnsupportedFeature && this._onUnsupportedFeature({
featureId: n.UNSUPPORTED_FEATURES.errorFontGetPath
});
(0,
n.warn)(`getPathGenerator - ignoring character: "${e}".`);
return this.compiledGlyphs[t] = function(e, t) {}
}
if (this.isEvalSupported && n.IsEvalSupportedCached.value) {
let e, n = "";
for (let t = 0, a = r.length; t < a; t++) {
s = r[t];
e = void 0 !== s.args ? s.args.join(",") : "";
n += "c." + s.cmd + "(" + e + ");\n"
}
return this.compiledGlyphs[t] = new Function("c","size",n)
}
return this.compiledGlyphs[t] = function(e, t) {
for (let n = 0, a = r.length; n < a; n++) {
s = r[n];
"scale" === s.cmd && (s.args = [t, -t]);
e[s.cmd].apply(e, s.args)
}
}
}
}
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.NodeCMapReaderFactory = t.NodeCanvasFactory = void 0;
var n = r(1)
, s = r(4)
, a = r(2);
let i = class {
constructor() {
(0,
a.unreachable)("Not implemented: NodeCanvasFactory")
}
}
;
t.NodeCanvasFactory = i;
let o = class {
constructor() {
(0,
a.unreachable)("Not implemented: NodeCMapReaderFactory")
}
}
;
t.NodeCMapReaderFactory = o;
if (s.isNodeJS) {
t.NodeCanvasFactory = i = class extends n.BaseCanvasFactory {
create(e, t) {
if (e <= 0 || t <= 0)
throw new Error("Invalid canvas size");
const r = require("canvas").createCanvas(e, t);
return {
canvas: r,
context: r.getContext("2d")
}
}
}
;
t.NodeCMapReaderFactory = o = class extends n.BaseCMapReaderFactory {
_fetchData(e, t) {
return new Promise((r,n)=>{
require("fs").readFile(e, (e,s)=>{
!e && s ? r({
cMapData: new Uint8Array(s),
compressionType: t
}) : n(new Error(e))
}
)
}
)
}
}
}
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.AnnotationStorage = void 0;
t.AnnotationStorage = class AnnotationStorage {
constructor() {
this._storage = new Map;
this._modified = !1;
this.onSetModified = null;
this.onResetModified = null
}
getOrCreateValue(e, t) {
if (this._storage.has(e))
return this._storage.get(e);
this._storage.set(e, t);
return t
}
setValue(e, t) {
this._storage.get(e) !== t && this._setModified();
this._storage.set(e, t)
}
getAll() {
return 0 === this._storage.size ? null : Object.fromEntries(this._storage)
}
get size() {
return this._storage.size
}
_setModified() {
if (!this._modified) {
this._modified = !0;
"function" == typeof this.onSetModified && this.onSetModified()
}
}
resetModified() {
if (this._modified) {
this._modified = !1;
"function" == typeof this.onResetModified && this.onResetModified()
}
}
}
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.apiCompatibilityParams = void 0;
var n = r(4);
const s = Object.create(null);
!function checkFontFace() {
n.isNodeJS && (s.disableFontFace = !0)
}();
const a = Object.freeze(s);
t.apiCompatibilityParams = a
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.CanvasGraphics = void 0;
var n = r(2)
, s = r(11);
function addContextCurrentTransform(e) {
if (!e.mozCurrentTransform) {
e._originalSave = e.save;
e._originalRestore = e.restore;
e._originalRotate = e.rotate;
e._originalScale = e.scale;
e._originalTranslate = e.translate;
e._originalTransform = e.transform;
e._originalSetTransform = e.setTransform;
e._transformMatrix = e._transformMatrix || [1, 0, 0, 1, 0, 0];
e._transformStack = [];
Object.defineProperty(e, "mozCurrentTransform", {
get: function getCurrentTransform() {
return this._transformMatrix
}
});
Object.defineProperty(e, "mozCurrentTransformInverse", {
get: function getCurrentTransformInverse() {
var e = this._transformMatrix
, t = e[0]
, r = e[1]
, n = e[2]
, s = e[3]
, a = e[4]
, i = e[5]
, o = t * s - r * n
, l = r * n - t * s;
return [s / o, r / l, n / l, t / o, (s * a - n * i) / l, (r * a - t * i) / o]
}
});
e.save = function ctxSave() {
var e = this._transformMatrix;
this._transformStack.push(e);
this._transformMatrix = e.slice(0, 6);
this._originalSave()
}
;
e.restore = function ctxRestore() {
var e = this._transformStack.pop();
if (e) {
this._transformMatrix = e;
this._originalRestore()
}
}
;
e.translate = function ctxTranslate(e, t) {
var r = this._transformMatrix;
r[4] = r[0] * e + r[2] * t + r[4];
r[5] = r[1] * e + r[3] * t + r[5];
this._originalTranslate(e, t)
}
;
e.scale = function ctxScale(e, t) {
var r = this._transformMatrix;
r[0] = r[0] * e;
r[1] = r[1] * e;
r[2] = r[2] * t;
r[3] = r[3] * t;
this._originalScale(e, t)
}
;
e.transform = function ctxTransform(t, r, n, s, a, i) {
var o = this._transformMatrix;
this._transformMatrix = [o[0] * t + o[2] * r, o[1] * t + o[3] * r, o[0] * n + o[2] * s, o[1] * n + o[3] * s, o[0] * a + o[2] * i + o[4], o[1] * a + o[3] * i + o[5]];
e._originalTransform(t, r, n, s, a, i)
}
;
e.setTransform = function ctxSetTransform(t, r, n, s, a, i) {
this._transformMatrix = [t, r, n, s, a, i];
e._originalSetTransform(t, r, n, s, a, i)
}
;
e.rotate = function ctxRotate(e) {
var t = Math.cos(e)
, r = Math.sin(e)
, n = this._transformMatrix;
this._transformMatrix = [n[0] * t + n[2] * r, n[1] * t + n[3] * r, n[0] * -r + n[2] * t, n[1] * -r + n[3] * t, n[4], n[5]];
this._originalRotate(e)
}
}
}
var a = function CachedCanvasesClosure() {
function CachedCanvases(e) {
this.canvasFactory = e;
this.cache = Object.create(null)
}
CachedCanvases.prototype = {
getCanvas: function CachedCanvases_getCanvas(e, t, r, n) {
var s;
if (void 0 !== this.cache[e]) {
s = this.cache[e];
this.canvasFactory.reset(s, t, r);
s.context.setTransform(1, 0, 0, 1, 0, 0)
} else {
s = this.canvasFactory.create(t, r);
this.cache[e] = s
}
n && addContextCurrentTransform(s.context);
return s
},
clear() {
for (var e in this.cache) {
var t = this.cache[e];
this.canvasFactory.destroy(t);
delete this.cache[e]
}
}
};
return CachedCanvases
}();
var i = function CanvasExtraStateClosure() {
function CanvasExtraState() {
this.alphaIsShape = !1;
this.fontSize = 0;
this.fontSizeScale = 1;
this.textMatrix = n.IDENTITY_MATRIX;
this.textMatrixScale = 1;
this.fontMatrix = n.FONT_IDENTITY_MATRIX;
this.leading = 0;
this.x = 0;
this.y = 0;
this.lineX = 0;
this.lineY = 0;
this.charSpacing = 0;
this.wordSpacing = 0;
this.textHScale = 1;
this.textRenderingMode = n.TextRenderingMode.FILL;
this.textRise = 0;
this.fillColor = "#000000";
this.strokeColor = "#000000";
this.patternFill = !1;
this.fillAlpha = 1;
this.strokeAlpha = 1;
this.lineWidth = 1;
this.activeSMask = null;
this.resumeSMaskCtx = null;
this.transferMaps = null
}
CanvasExtraState.prototype = {
clone: function CanvasExtraState_clone() {
return Object.create(this)
},
setCurrentPoint: function CanvasExtraState_setCurrentPoint(e, t) {
this.x = e;
this.y = t
}
};
return CanvasExtraState
}()
, o = function CanvasGraphicsClosure() {
function CanvasGraphics(e, t, r, n, s, o, l) {
this.ctx = e;
this.current = new i;
this.stateStack = [];
this.pendingClip = null;
this.pendingEOFill = !1;
this.res = null;
this.xobjs = null;
this.commonObjs = t;
this.objs = r;
this.canvasFactory = n;
this.webGLContext = s;
this.imageLayer = o;
this.groupStack = [];
this.processingType3 = null;
this.baseTransform = null;
this.baseTransformStack = [];
this.groupLevel = 0;
this.smaskStack = [];
this.smaskCounter = 0;
this.tempSMask = null;
this.contentVisible = !0;
this.markedContentStack = [];
this.optionalContentConfig = l;
this.cachedCanvases = new a(this.canvasFactory);
e && addContextCurrentTransform(e);
this._cachedGetSinglePixelWidth = null
}
function putBinaryImageData(e, t, r=null) {
if ("undefined" != typeof ImageData && t instanceof ImageData) {
e.putImageData(t, 0, 0);
return
}
var s, a, i, o, l, c = t.height, h = t.width, d = c % 16, u = (c - d) / 16, p = 0 === d ? u : u + 1, f = e.createImageData(h, 16), g = 0, m = t.data, _ = f.data;
let A, b, y, v;
if (r)
switch (r.length) {
case 1:
A = r[0];
b = r[0];
y = r[0];
v = r[0];
break;
case 4:
A = r[0];
b = r[1];
y = r[2];
v = r[3]
}
if (t.kind === n.ImageKind.GRAYSCALE_1BPP) {
var C = m.byteLength
, S = new Uint32Array(_.buffer,0,_.byteLength >> 2)
, x = S.length
, P = h + 7 >> 3
, k = 4294967295
, R = n.IsLittleEndianCached.value ? 4278190080 : 255;
v && 255 === v[0] && 0 === v[255] && ([k,R] = [R, k]);
for (a = 0; a < p; a++) {
o = a < u ? 16 : d;
s = 0;
for (i = 0; i < o; i++) {
var w = C - g;
let e = 0;
for (var T = w > P ? h : 8 * w - 7, E = -8 & T, F = 0, L = 0; e < E; e += 8) {
L = m[g++];
S[s++] = 128 & L ? k : R;
S[s++] = 64 & L ? k : R;
S[s++] = 32 & L ? k : R;
S[s++] = 16 & L ? k : R;
S[s++] = 8 & L ? k : R;
S[s++] = 4 & L ? k : R;
S[s++] = 2 & L ? k : R;
S[s++] = 1 & L ? k : R
}
for (; e < T; e++) {
if (0 === F) {
L = m[g++];
F = 128
}
S[s++] = L & F ? k : R;
F >>= 1
}
}
for (; s < x; )
S[s++] = 0;
e.putImageData(f, 0, 16 * a)
}
} else if (t.kind === n.ImageKind.RGBA_32BPP) {
const t = !!(A || b || y);
i = 0;
l = 16 * h * 4;
for (a = 0; a < u; a++) {
_.set(m.subarray(g, g + l));
g += l;
if (t)
for (let e = 0; e < l; e += 4) {
A && (_[e + 0] = A[_[e + 0]]);
b && (_[e + 1] = b[_[e + 1]]);
y && (_[e + 2] = y[_[e + 2]])
}
e.putImageData(f, 0, i);
i += 16
}
if (a < p) {
l = h * d * 4;
_.set(m.subarray(g, g + l));
if (t)
for (let e = 0; e < l; e += 4) {
A && (_[e + 0] = A[_[e + 0]]);
b && (_[e + 1] = b[_[e + 1]]);
y && (_[e + 2] = y[_[e + 2]])
}
e.putImageData(f, 0, i)
}
} else {
if (t.kind !== n.ImageKind.RGB_24BPP)
throw new Error("bad image kind: " + t.kind);
{
const t = !!(A || b || y);
l = h * (o = 16);
for (a = 0; a < p; a++) {
a >= u && (l = h * (o = d));
s = 0;
for (i = l; i--; ) {
_[s++] = m[g++];
_[s++] = m[g++];
_[s++] = m[g++];
_[s++] = 255
}
if (t)
for (let e = 0; e < s; e += 4) {
A && (_[e + 0] = A[_[e + 0]]);
b && (_[e + 1] = b[_[e + 1]]);
y && (_[e + 2] = y[_[e + 2]])
}
e.putImageData(f, 0, 16 * a)
}
}
}
}
function putBinaryImageMask(e, t) {
for (var r = t.height, n = t.width, s = r % 16, a = (r - s) / 16, i = 0 === s ? a : a + 1, o = e.createImageData(n, 16), l = 0, c = t.data, h = o.data, d = 0; d < i; d++) {
for (var u = d < a ? 16 : s, p = 3, f = 0; f < u; f++)
for (var g = 0, m = 0; m < n; m++) {
if (!g) {
var _ = c[l++];
g = 128
}
h[p] = _ & g ? 0 : 255;
p += 4;
g >>= 1
}
e.putImageData(o, 0, 16 * d)
}
}
function copyCtxState(e, t) {
for (var r = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"], n = 0, s = r.length; n < s; n++) {
var a = r[n];
void 0 !== e[a] && (t[a] = e[a])
}
if (void 0 !== e.setLineDash) {
t.setLineDash(e.getLineDash());
t.lineDashOffset = e.lineDashOffset
}
}
function resetCtxToDefault(e) {
e.strokeStyle = "#000000";
e.fillStyle = "#000000";
e.fillRule = "nonzero";
e.globalAlpha = 1;
e.lineWidth = 1;
e.lineCap = "butt";
e.lineJoin = "miter";
e.miterLimit = 10;
e.globalCompositeOperation = "source-over";
e.font = "10px sans-serif";
if (void 0 !== e.setLineDash) {
e.setLineDash([]);
e.lineDashOffset = 0
}
}
function composeSMaskBackdrop(e, t, r, n) {
for (var s = e.length, a = 3; a < s; a += 4) {
var i = e[a];
if (0 === i) {
e[a - 3] = t;
e[a - 2] = r;
e[a - 1] = n
} else if (i < 255) {
var o = 255 - i;
e[a - 3] = e[a - 3] * i + t * o >> 8;
e[a - 2] = e[a - 2] * i + r * o >> 8;
e[a - 1] = e[a - 1] * i + n * o >> 8
}
}
}
function composeSMaskAlpha(e, t, r) {
for (var n = e.length, s = 3; s < n; s += 4) {
var a = r ? r[e[s]] : e[s];
t[s] = t[s] * a * (1 / 255) | 0
}
}
function composeSMaskLuminosity(e, t, r) {
for (var n = e.length, s = 3; s < n; s += 4) {
var a = 77 * e[s - 3] + 152 * e[s - 2] + 28 * e[s - 1];
t[s] = r ? t[s] * r[a >> 8] >> 8 : t[s] * a >> 16
}
}
function composeSMask(e, t, r, n) {
var s = t.canvas
, a = t.context;
e.setTransform(t.scaleX, 0, 0, t.scaleY, t.offsetX, t.offsetY);
var i = t.backdrop || null;
if (t.transferMap || !n.isEnabled) {
!function genericComposeSMask(e, t, r, n, s, a, i) {
var o, l = !!a, c = l ? a[0] : 0, h = l ? a[1] : 0, d = l ? a[2] : 0;
o = "Luminosity" === s ? composeSMaskLuminosity : composeSMaskAlpha;
for (var u = Math.min(n, Math.ceil(1048576 / r)), p = 0; p < n; p += u) {
var f = Math.min(u, n - p)
, g = e.getImageData(0, p, r, f)
, m = t.getImageData(0, p, r, f);
l && composeSMaskBackdrop(g.data, c, h, d);
o(g.data, m.data, i);
e.putImageData(m, 0, p)
}
}(a, r, s.width, s.height, t.subtype, i, t.transferMap);
e.drawImage(s, 0, 0)
} else {
const a = n.composeSMask({
layer: r.canvas,
mask: s,
properties: {
subtype: t.subtype,
backdrop: i
}
});
e.setTransform(1, 0, 0, 1, 0, 0);
e.drawImage(a, t.offsetX, t.offsetY)
}
}
var e = ["butt", "round", "square"]
, t = ["miter", "round", "bevel"]
, r = {}
, o = {};
CanvasGraphics.prototype = {
beginDrawing({transform: e, viewport: t, transparency: r=!1, background: n=null}) {
var s = this.ctx.canvas.width
, a = this.ctx.canvas.height;
this.ctx.save();
this.ctx.fillStyle = n || "rgb(255, 255, 255)";
this.ctx.fillRect(0, 0, s, a);
this.ctx.restore();
if (r) {
var i = this.cachedCanvases.getCanvas("transparent", s, a, !0);
this.compositeCtx = this.ctx;
this.transparentCanvas = i.canvas;
this.ctx = i.context;
this.ctx.save();
this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform)
}
this.ctx.save();
resetCtxToDefault(this.ctx);
e && this.ctx.transform.apply(this.ctx, e);
this.ctx.transform.apply(this.ctx, t.transform);
this.baseTransform = this.ctx.mozCurrentTransform.slice();
this.imageLayer && this.imageLayer.beginLayout()
},
executeOperatorList: function CanvasGraphics_executeOperatorList(e, t, r, s) {
var a = e.argsArray
, i = e.fnArray
, o = t || 0
, l = a.length;
if (l === o)
return o;
for (var c, h = l - o > 10 && "function" == typeof r, d = h ? Date.now() + 15 : 0, u = 0, p = this.commonObjs, f = this.objs; ; ) {
if (void 0 !== s && o === s.nextBreakPoint) {
s.breakIt(o, r);
return o
}
if ((c = i[o]) !== n.OPS.dependency)
this[c].apply(this, a[o]);
else
for (const e of a[o]) {
const t = e.startsWith("g_") ? p : f;
if (!t.has(e)) {
t.get(e, r);
return o
}
}
if (++o === l)
return o;
if (h && ++u > 10) {
if (Date.now() > d) {
r();
return o
}
u = 0
}
}
},
endDrawing: function CanvasGraphics_endDrawing() {
null !== this.current.activeSMask && this.endSMaskGroup();
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
}
this.cachedCanvases.clear();
this.webGLContext.clear();
this.imageLayer && this.imageLayer.endLayout()
},
setLineWidth: function CanvasGraphics_setLineWidth(e) {
this.current.lineWidth = e;
this.ctx.lineWidth = e
},
setLineCap: function CanvasGraphics_setLineCap(t) {
this.ctx.lineCap = e[t]
},
setLineJoin: function CanvasGraphics_setLineJoin(e) {
this.ctx.lineJoin = t[e]
},
setMiterLimit: function CanvasGraphics_setMiterLimit(e) {
this.ctx.miterLimit = e
},
setDash: function CanvasGraphics_setDash(e, t) {
var r = this.ctx;
if (void 0 !== r.setLineDash) {
r.setLineDash(e);
r.lineDashOffset = t
}
},
setRenderingIntent(e) {},
setFlatness(e) {},
setGState: function CanvasGraphics_setGState(e) {
for (var t = 0, r = e.length; t < r; t++) {
var n = e[t]
, s = n[0]
, a = n[1];
switch (s) {
case "LW":
this.setLineWidth(a);
break;
case "LC":
this.setLineCap(a);
break;
case "LJ":
this.setLineJoin(a);
break;
case "ML":
this.setMiterLimit(a);
break;
case "D":
this.setDash(a[0], a[1]);
break;
case "RI":
this.setRenderingIntent(a);
break;
case "FL":
this.setFlatness(a);
break;
case "Font":
this.setFont(a[0], a[1]);
break;
case "CA":
this.current.strokeAlpha = n[1];
break;
case "ca":
this.current.fillAlpha = n[1];
this.ctx.globalAlpha = n[1];
break;
case "BM":
this.ctx.globalCompositeOperation = a;
break;
case "SMask":
this.current.activeSMask && (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask ? this.suspendSMaskGroup() : this.endSMaskGroup());
this.current.activeSMask = a ? this.tempSMask : null;
this.current.activeSMask && this.beginSMaskGroup();
this.tempSMask = null;
break;
case "TR":
this.current.transferMaps = a
}
}
},
beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {
var e = this.current.activeSMask
, t = e.canvas.width
, r = e.canvas.height
, n = "smaskGroupAt" + this.groupLevel
, s = this.cachedCanvases.getCanvas(n, t, r, !0)
, a = this.ctx
, i = a.mozCurrentTransform;
this.ctx.save();
var o = s.context;
o.scale(1 / e.scaleX, 1 / e.scaleY);
o.translate(-e.offsetX, -e.offsetY);
o.transform.apply(o, i);
e.startTransformInverse = o.mozCurrentTransformInverse;
copyCtxState(a, o);
this.ctx = o;
this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
this.groupStack.push(a);
this.groupLevel++
},
suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {
var e = this.ctx;
this.groupLevel--;
this.ctx = this.groupStack.pop();
composeSMask(this.ctx, this.current.activeSMask, e, this.webGLContext);
this.ctx.restore();
this.ctx.save();
copyCtxState(e, this.ctx);
this.current.resumeSMaskCtx = e;
var t = n.Util.transform(this.current.activeSMask.startTransformInverse, e.mozCurrentTransform);
this.ctx.transform.apply(this.ctx, t);
e.save();
e.setTransform(1, 0, 0, 1, 0, 0);
e.clearRect(0, 0, e.canvas.width, e.canvas.height);
e.restore()
},
resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {
var e = this.current.resumeSMaskCtx
, t = this.ctx;
this.ctx = e;
this.groupStack.push(t);
this.groupLevel++
},
endSMaskGroup: function CanvasGraphics_endSMaskGroup() {
var e = this.ctx;
this.groupLevel--;
this.ctx = this.groupStack.pop();
composeSMask(this.ctx, this.current.activeSMask, e, this.webGLContext);
this.ctx.restore();
copyCtxState(e, this.ctx);
var t = n.Util.transform(this.current.activeSMask.startTransformInverse, e.mozCurrentTransform);
this.ctx.transform.apply(this.ctx, t)
},
save: function CanvasGraphics_save() {
this.ctx.save();
var e = this.current;
this.stateStack.push(e);
this.current = e.clone();
this.current.resumeSMaskCtx = null
},
restore: function CanvasGraphics_restore() {
this.current.resumeSMaskCtx && this.resumeSMaskGroup();
null === this.current.activeSMask || 0 !== this.stateStack.length && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask || this.endSMaskGroup();
if (0 !== this.stateStack.length) {
this.current = this.stateStack.pop();
this.ctx.restore();
this.pendingClip = null;
this._cachedGetSinglePixelWidth = null
}
},
transform: function CanvasGraphics_transform(e, t, r, n, s, a) {
this.ctx.transform(e, t, r, n, s, a);
this._cachedGetSinglePixelWidth = null
},
constructPath: function CanvasGraphics_constructPath(e, t) {
for (var r = this.ctx, s = this.current, a = s.x, i = s.y, o = 0, l = 0, c = e.length; o < c; o++)
switch (0 | e[o]) {
case n.OPS.rectangle:
a = t[l++];
i = t[l++];
var h = t[l++]
, d = t[l++];
0 === h && r.lineWidth < this.getSinglePixelWidth() && (h = this.getSinglePixelWidth());
0 === d && r.lineWidth < this.getSinglePixelWidth() && (d = this.getSinglePixelWidth());
var u = a + h
, p = i + d;
r.moveTo(a, i);
r.lineTo(u, i);
r.lineTo(u, p);
r.lineTo(a, p);
r.lineTo(a, i);
r.closePath();
break;
case n.OPS.moveTo:
a = t[l++];
i = t[l++];
r.moveTo(a, i);
break;
case n.OPS.lineTo:
a = t[l++];
i = t[l++];
r.lineTo(a, i);
break;
case n.OPS.curveTo:
a = t[l + 4];
i = t[l + 5];
r.bezierCurveTo(t[l], t[l + 1], t[l + 2], t[l + 3], a, i);
l += 6;
break;
case n.OPS.curveTo2:
r.bezierCurveTo(a, i, t[l], t[l + 1], t[l + 2], t[l + 3]);
a = t[l + 2];
i = t[l + 3];
l += 4;
break;
case n.OPS.curveTo3:
a = t[l + 2];
i = t[l + 3];
r.bezierCurveTo(t[l], t[l + 1], a, i, a, i);
l += 4;
break;
case n.OPS.closePath:
r.closePath()
}
s.setCurrentPoint(a, i)
},
closePath: function CanvasGraphics_closePath() {
this.ctx.closePath()
},
stroke: function CanvasGraphics_stroke(e) {
e = void 0 === e || e;
var t = this.ctx
, r = this.current.strokeColor;
t.globalAlpha = this.current.strokeAlpha;
if (this.contentVisible)
if (r && r.hasOwnProperty("type") && "Pattern" === r.type) {
t.save();
const e = t.mozCurrentTransform
, s = n.Util.singularValueDecompose2dScale(e)[0];
t.strokeStyle = r.getPattern(t, this);
t.lineWidth = Math.max(.65 * this.getSinglePixelWidth(), this.current.lineWidth * s);
t.stroke();
t.restore()
} else {
t.lineWidth = Math.max(.65 * this.getSinglePixelWidth(), this.current.lineWidth);
t.stroke()
}
e && this.consumePath();
t.globalAlpha = this.current.fillAlpha
},
closeStroke: function CanvasGraphics_closeStroke() {
this.closePath();
this.stroke()
},
fill: function CanvasGraphics_fill(e) {
e = void 0 === e || e;
var t = this.ctx
, r = this.current.fillColor
, n = !1;
if (this.current.patternFill) {
t.save();
this.baseTransform && t.setTransform.apply(t, this.baseTransform);
t.fillStyle = r.getPattern(t, this);
n = !0
}
if (this.contentVisible)
if (this.pendingEOFill) {
t.fill("evenodd");
this.pendingEOFill = !1
} else
t.fill();
n && t.restore();
e && this.consumePath()
},
eoFill: function CanvasGraphics_eoFill() {
this.pendingEOFill = !0;
this.fill()
},
fillStroke: function CanvasGraphics_fillStroke() {
this.fill(!1);
this.stroke(!1);
this.consumePath()
},
eoFillStroke: function CanvasGraphics_eoFillStroke() {
this.pendingEOFill = !0;
this.fillStroke()
},
closeFillStroke: function CanvasGraphics_closeFillStroke() {
this.closePath();
this.fillStroke()
},
closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {
this.pendingEOFill = !0;
this.closePath();
this.fillStroke()
},
endPath: function CanvasGraphics_endPath() {
this.consumePath()
},
clip: function CanvasGraphics_clip() {
this.pendingClip = r
},
eoClip: function CanvasGraphics_eoClip() {
this.pendingClip = o
},
beginText: function CanvasGraphics_beginText() {
this.current.textMatrix = n.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 e = this.pendingTextPaths
, t = this.ctx;
if (void 0 !== e) {
t.save();
t.beginPath();
for (var r = 0; r < e.length; r++) {
var n = e[r];
t.setTransform.apply(t, n.transform);
t.translate(n.x, n.y);
n.addToPath(t, n.fontSize)
}
t.restore();
t.clip();
t.beginPath();
delete this.pendingTextPaths
} else
t.beginPath()
},
setCharSpacing: function CanvasGraphics_setCharSpacing(e) {
this.current.charSpacing = e
},
setWordSpacing: function CanvasGraphics_setWordSpacing(e) {
this.current.wordSpacing = e
},
setHScale: function CanvasGraphics_setHScale(e) {
this.current.textHScale = e / 100
},
setLeading: function CanvasGraphics_setLeading(e) {
this.current.leading = -e
},
setFont: function CanvasGraphics_setFont(e, t) {
var r = this.commonObjs.get(e)
, s = this.current;
if (!r)
throw new Error("Can't find font for " + e);
s.fontMatrix = r.fontMatrix ? r.fontMatrix : n.FONT_IDENTITY_MATRIX;
0 !== s.fontMatrix[0] && 0 !== s.fontMatrix[3] || (0,
n.warn)("Invalid font matrix for font " + e);
if (t < 0) {
t = -t;
s.fontDirection = -1
} else
s.fontDirection = 1;
this.current.font = r;
this.current.fontSize = t;
if (r.isType3Font)
return;
var a = r.loadedName || "sans-serif";
let i = "normal";
r.black ? i = "900" : r.bold && (i = "bold");
var o = r.italic ? "italic" : "normal"
, l = `"${a}", ${r.fallbackName}`;
let c = t;
t < 16 ? c = 16 : t > 100 && (c = 100);
this.current.fontSizeScale = t / c;
this.ctx.font = `${o} ${i} ${c}px ${l}`
},
setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(e) {
this.current.textRenderingMode = e
},
setTextRise: function CanvasGraphics_setTextRise(e) {
this.current.textRise = e
},
moveText: function CanvasGraphics_moveText(e, t) {
this.current.x = this.current.lineX += e;
this.current.y = this.current.lineY += t
},
setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(e, t) {
this.setLeading(-t);
this.moveText(e, t)
},
setTextMatrix: function CanvasGraphics_setTextMatrix(e, t, r, n, s, a) {
this.current.textMatrix = [e, t, r, n, s, a];
this.current.textMatrixScale = Math.sqrt(e * e + t * t);
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(e, t, r, s) {
var a = this.ctx
, i = this.current
, o = i.font
, l = i.textRenderingMode
, c = i.fontSize / i.fontSizeScale
, h = l & n.TextRenderingMode.FILL_STROKE_MASK
, d = !!(l & n.TextRenderingMode.ADD_TO_PATH_FLAG);
const u = i.patternFill && !o.missingFile;
var p;
(o.disableFontFace || d || u) && (p = o.getPathGenerator(this.commonObjs, e));
if (o.disableFontFace || u) {
a.save();
a.translate(t, r);
a.beginPath();
p(a, c);
s && a.setTransform.apply(a, s);
h !== n.TextRenderingMode.FILL && h !== n.TextRenderingMode.FILL_STROKE || a.fill();
h !== n.TextRenderingMode.STROKE && h !== n.TextRenderingMode.FILL_STROKE || a.stroke();
a.restore()
} else {
h !== n.TextRenderingMode.FILL && h !== n.TextRenderingMode.FILL_STROKE || a.fillText(e, t, r);
h !== n.TextRenderingMode.STROKE && h !== n.TextRenderingMode.FILL_STROKE || a.strokeText(e, t, r)
}
if (d) {
(this.pendingTextPaths || (this.pendingTextPaths = [])).push({
transform: a.mozCurrentTransform,
x: t,
y: r,
fontSize: c,
addToPath: p
})
}
},
get isFontSubpixelAAEnabled() {
const {context: e} = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10);
e.scale(1.5, 1);
e.fillText("I", 0, 10);
for (var t = e.getImageData(0, 0, 10, 10).data, r = !1, s = 3; s < t.length; s += 4)
if (t[s] > 0 && t[s] < 255) {
r = !0;
break
}
return (0,
n.shadow)(this, "isFontSubpixelAAEnabled", r)
},
showText: function CanvasGraphics_showText(e) {
var t = this.current
, r = t.font;
if (r.isType3Font)
return this.showType3Text(e);
var s = t.fontSize;
if (0 === s)
return;
var a = this.ctx
, i = t.fontSizeScale
, o = t.charSpacing
, l = t.wordSpacing
, c = t.fontDirection
, h = t.textHScale * c
, d = e.length
, u = r.vertical
, p = u ? 1 : -1
, f = r.defaultVMetrics
, g = s * t.fontMatrix[0]
, m = t.textRenderingMode === n.TextRenderingMode.FILL && !r.disableFontFace && !t.patternFill;
a.save();
let _;
if (t.patternFill) {
a.save();
const e = t.fillColor.getPattern(a, this);
_ = a.mozCurrentTransform;
a.restore();
a.fillStyle = e
}
a.transform.apply(a, t.textMatrix);
a.translate(t.x, t.y + t.textRise);
c > 0 ? a.scale(h, -1) : a.scale(h, 1);
var A = t.lineWidth
, b = t.textMatrixScale;
if (0 === b || 0 === A) {
var y = t.textRenderingMode & n.TextRenderingMode.FILL_STROKE_MASK;
if (y === n.TextRenderingMode.STROKE || y === n.TextRenderingMode.FILL_STROKE) {
this._cachedGetSinglePixelWidth = null;
A = .65 * this.getSinglePixelWidth()
}
} else
A /= b;
if (1 !== i) {
a.scale(i, i);
A /= i
}
a.lineWidth = A;
var v, C = 0;
for (v = 0; v < d; ++v) {
var S = e[v];
if ((0,
n.isNum)(S))
C += p * S * s / 1e3;
else {
var x, P, k, R, w = !1, T = (S.isSpace ? l : 0) + o, E = S.fontChar, F = S.accent, L = S.width;
if (u) {
var M, D, O;
M = S.vmetric || f;
D = -(D = S.vmetric ? M[1] : .5 * L) * g;
O = M[2] * g;
L = M ? -M[0] : L;
x = D / i;
P = (C + O) / i
} else {
x = C / i;
P = 0
}
if (r.remeasure && L > 0) {
var I = 1e3 * a.measureText(E).width / s * i;
if (L < I && this.isFontSubpixelAAEnabled) {
var N = L / I;
w = !0;
a.save();
a.scale(N, 1);
x /= N
} else
L !== I && (x += (L - I) / 2e3 * s / i)
}
if (this.contentVisible && (S.isInFont || r.missingFile))
if (m && !F)
a.fillText(E, x, P);
else {
this.paintChar(E, x, P, _);
if (F) {
k = x + s * F.offset.x / i;
R = P - s * F.offset.y / i;
this.paintChar(F.fontChar, k, R, _)
}
}
C += u ? L * g - T * c : L * g + T * c;
w && a.restore()
}
}
u ? t.y -= C : t.x += C * h;
a.restore()
},
showType3Text: function CanvasGraphics_showType3Text(e) {
var t, r, s, a, i = this.ctx, o = this.current, l = o.font, c = o.fontSize, h = o.fontDirection, d = l.vertical ? 1 : -1, u = o.charSpacing, p = o.wordSpacing, f = o.textHScale * h, g = o.fontMatrix || n.FONT_IDENTITY_MATRIX, m = e.length;
if (!(o.textRenderingMode === n.TextRenderingMode.INVISIBLE) && 0 !== c) {
this._cachedGetSinglePixelWidth = null;
i.save();
i.transform.apply(i, o.textMatrix);
i.translate(o.x, o.y);
i.scale(f, h);
for (t = 0; t < m; ++t) {
r = e[t];
if ((0,
n.isNum)(r)) {
a = d * r * c / 1e3;
this.ctx.translate(a, 0);
o.x += a * f
} else {
var _ = (r.isSpace ? p : 0) + u
, A = l.charProcOperatorList[r.operatorListId];
if (A) {
if (this.contentVisible) {
this.processingType3 = r;
this.save();
i.scale(c, c);
i.transform.apply(i, g);
this.executeOperatorList(A);
this.restore()
}
s = n.Util.applyTransform([r.width, 0], g)[0] * c + _;
i.translate(s, 0);
o.x += s * f
} else
(0,
n.warn)(`Type3 character "${r.operatorListId}" is not available.`)
}
}
i.restore();
this.processingType3 = null
}
},
setCharWidth: function CanvasGraphics_setCharWidth(e, t) {},
setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(e, t, r, n, s, a) {
this.ctx.rect(r, n, s - r, a - n);
this.clip();
this.endPath()
},
getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(e) {
var t;
if ("TilingPattern" === e[0]) {
var r = e[1]
, n = this.baseTransform || this.ctx.mozCurrentTransform.slice()
, a = {
createCanvasGraphics: e=>new CanvasGraphics(e,this.commonObjs,this.objs,this.canvasFactory,this.webGLContext)
};
t = new s.TilingPattern(e,r,this.ctx,a,n)
} else
t = (0,
s.getShadingPatternFromIR)(e);
return t
},
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 = !0
},
setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(e, t, r) {
var s = n.Util.makeCssRgb(e, t, r);
this.ctx.strokeStyle = s;
this.current.strokeColor = s
},
setFillRGBColor: function CanvasGraphics_setFillRGBColor(e, t, r) {
var s = n.Util.makeCssRgb(e, t, r);
this.ctx.fillStyle = s;
this.current.fillColor = s;
this.current.patternFill = !1
},
shadingFill: function CanvasGraphics_shadingFill(e) {
if (this.contentVisible) {
var t = this.ctx;
this.save();
var r = (0,
s.getShadingPatternFromIR)(e);
t.fillStyle = r.getPattern(t, this, !0);
var a = t.mozCurrentTransformInverse;
if (a) {
var i = t.canvas
, o = i.width
, l = i.height
, c = n.Util.applyTransform([0, 0], a)
, h = n.Util.applyTransform([0, l], a)
, d = n.Util.applyTransform([o, 0], a)
, u = n.Util.applyTransform([o, l], a)
, p = Math.min(c[0], h[0], d[0], u[0])
, f = Math.min(c[1], h[1], d[1], u[1])
, g = Math.max(c[0], h[0], d[0], u[0])
, m = Math.max(c[1], h[1], d[1], u[1]);
this.ctx.fillRect(p, f, g - p, m - f)
} else
this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
this.restore()
}
},
beginInlineImage: function CanvasGraphics_beginInlineImage() {
(0,
n.unreachable)("Should not call beginInlineImage")
},
beginImageData: function CanvasGraphics_beginImageData() {
(0,
n.unreachable)("Should not call beginImageData")
},
paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(e, t) {
if (this.contentVisible) {
this.save();
this.baseTransformStack.push(this.baseTransform);
Array.isArray(e) && 6 === e.length && this.transform.apply(this, e);
this.baseTransform = this.ctx.mozCurrentTransform;
if (t) {
var r = t[2] - t[0]
, n = t[3] - t[1];
this.ctx.rect(t[0], t[1], r, n);
this.clip();
this.endPath()
}
}
},
paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {
if (this.contentVisible) {
this.restore();
this.baseTransform = this.baseTransformStack.pop()
}
},
beginGroup: function CanvasGraphics_beginGroup(e) {
if (this.contentVisible) {
this.save();
var t = this.ctx;
e.isolated || (0,
n.info)("TODO: Support non-isolated groups.");
e.knockout && (0,
n.warn)("Knockout groups not supported.");
var r = t.mozCurrentTransform;
e.matrix && t.transform.apply(t, e.matrix);
if (!e.bbox)
throw new Error("Bounding box is required.");
var s = n.Util.getAxialAlignedBoundingBox(e.bbox, t.mozCurrentTransform)
, a = [0, 0, t.canvas.width, t.canvas.height];
s = n.Util.intersect(s, a) || [0, 0, 0, 0];
var i = Math.floor(s[0])
, o = Math.floor(s[1])
, l = Math.max(Math.ceil(s[2]) - i, 1)
, c = Math.max(Math.ceil(s[3]) - o, 1)
, h = 1
, d = 1;
if (l > 4096) {
h = l / 4096;
l = 4096
}
if (c > 4096) {
d = c / 4096;
c = 4096
}
var u = "groupAt" + this.groupLevel;
e.smask && (u += "_smask_" + this.smaskCounter++ % 2);
var p = this.cachedCanvases.getCanvas(u, l, c, !0)
, f = p.context;
f.scale(1 / h, 1 / d);
f.translate(-i, -o);
f.transform.apply(f, r);
if (e.smask)
this.smaskStack.push({
canvas: p.canvas,
context: f,
offsetX: i,
offsetY: o,
scaleX: h,
scaleY: d,
subtype: e.smask.subtype,
backdrop: e.smask.backdrop,
transferMap: e.smask.transferMap || null,
startTransformInverse: null
});
else {
t.setTransform(1, 0, 0, 1, 0, 0);
t.translate(i, o);
t.scale(h, d)
}
copyCtxState(t, f);
this.ctx = f;
this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
this.groupStack.push(t);
this.groupLevel++;
this.current.activeSMask = null
}
},
endGroup: function CanvasGraphics_endGroup(e) {
if (this.contentVisible) {
this.groupLevel--;
var t = this.ctx;
this.ctx = this.groupStack.pop();
void 0 !== this.ctx.imageSmoothingEnabled ? this.ctx.imageSmoothingEnabled = !1 : this.ctx.mozImageSmoothingEnabled = !1;
e.smask ? this.tempSMask = this.smaskStack.pop() : this.ctx.drawImage(t.canvas, 0, 0);
this.restore()
}
},
beginAnnotations: function CanvasGraphics_beginAnnotations() {
this.save();
this.baseTransform && this.ctx.setTransform.apply(this.ctx, this.baseTransform)
},
endAnnotations: function CanvasGraphics_endAnnotations() {
this.restore()
},
beginAnnotation: function CanvasGraphics_beginAnnotation(e, t, r) {
this.save();
resetCtxToDefault(this.ctx);
this.current = new i;
if (Array.isArray(e) && 4 === e.length) {
var n = e[2] - e[0]
, s = e[3] - e[1];
this.ctx.rect(e[0], e[1], n, s);
this.clip();
this.endPath()
}
this.transform.apply(this, t);
this.transform.apply(this, r)
},
endAnnotation: function CanvasGraphics_endAnnotation() {
this.restore()
},
paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(e) {
if (this.contentVisible) {
var t = this.ctx
, r = e.width
, n = e.height
, s = this.current.fillColor
, a = this.current.patternFill
, i = this.processingType3;
i && void 0 === i.compiled && (i.compiled = r <= 1e3 && n <= 1e3 ? function compileType3Glyph(e) {
var t, r, n, s, a = e.width, i = e.height, o = a + 1, l = new Uint8Array(o * (i + 1)), c = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]), h = a + 7 & -8, d = e.data, u = new Uint8Array(h * i), p = 0;
for (t = 0,
s = d.length; t < s; t++)
for (var f = 128, g = d[t]; f > 0; ) {
u[p++] = g & f ? 0 : 255;
f >>= 1
}
var m = 0;
if (0 !== u[p = 0]) {
l[0] = 1;
++m
}
for (r = 1; r < a; r++) {
if (u[p] !== u[p + 1]) {
l[r] = u[p] ? 2 : 1;
++m
}
p++
}
if (0 !== u[p]) {
l[r] = 2;
++m
}
for (t = 1; t < i; t++) {
n = t * o;
if (u[(p = t * h) - h] !== u[p]) {
l[n] = u[p] ? 1 : 8;
++m
}
var _ = (u[p] ? 4 : 0) + (u[p - h] ? 8 : 0);
for (r = 1; r < a; r++) {
if (c[_ = (_ >> 2) + (u[p + 1] ? 4 : 0) + (u[p - h + 1] ? 8 : 0)]) {
l[n + r] = c[_];
++m
}
p++
}
if (u[p - h] !== u[p]) {
l[n + r] = u[p] ? 2 : 4;
++m
}
if (m > 1e3)
return null
}
n = t * o;
if (0 !== u[p = h * (i - 1)]) {
l[n] = 8;
++m
}
for (r = 1; r < a; r++) {
if (u[p] !== u[p + 1]) {
l[n + r] = u[p] ? 4 : 8;
++m
}
p++
}
if (0 !== u[p]) {
l[n + r] = 4;
++m
}
if (m > 1e3)
return null;
var A = new Int32Array([0, o, -1, 0, -o, 0, 0, 0, 1])
, b = [];
for (t = 0; m && t <= i; t++) {
for (var y = t * o, v = y + a; y < v && !l[y]; )
y++;
if (y !== v) {
var C, S = [y % o, t], x = l[y], P = y;
do {
var k = A[x];
do {
y += k
} while (!l[y]);
if (5 !== (C = l[y]) && 10 !== C) {
x = C;
l[y] = 0
} else {
x = C & 51 * x >> 4;
l[y] &= x >> 2 | x << 2
}
S.push(y % o);
S.push(y / o | 0);
l[y] || --m
} while (P !== y);
b.push(S);
--t
}
}
return function(e) {
e.save();
e.scale(1 / a, -1 / i);
e.translate(0, -i);
e.beginPath();
for (let r = 0, n = b.length; r < n; r++) {
var t = b[r];
e.moveTo(t[0], t[1]);
for (let r = 2, n = t.length; r < n; r += 2)
e.lineTo(t[r], t[r + 1])
}
e.fill();
e.beginPath();
e.restore()
}
}({
data: e.data,
width: r,
height: n
}) : null);
if (i && i.compiled)
i.compiled(t);
else {
var o = this.cachedCanvases.getCanvas("maskCanvas", r, n)
, l = o.context;
l.save();
putBinaryImageMask(l, e);
l.globalCompositeOperation = "source-in";
l.fillStyle = a ? s.getPattern(l, this) : s;
l.fillRect(0, 0, r, n);
l.restore();
this.paintInlineImageXObject(o.canvas)
}
}
},
paintImageMaskXObjectRepeat(e, t, r=0, n=0, s, a) {
if (this.contentVisible) {
var i = e.width
, o = e.height
, l = this.current.fillColor
, c = this.current.patternFill
, h = this.cachedCanvases.getCanvas("maskCanvas", i, o)
, d = h.context;
d.save();
putBinaryImageMask(d, e);
d.globalCompositeOperation = "source-in";
d.fillStyle = c ? l.getPattern(d, this) : l;
d.fillRect(0, 0, i, o);
d.restore();
for (var u = this.ctx, p = 0, f = a.length; p < f; p += 2) {
u.save();
u.transform(t, r, n, s, a[p], a[p + 1]);
u.scale(1, -1);
u.drawImage(h.canvas, 0, 0, i, o, 0, -1, 1, 1);
u.restore()
}
}
},
paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(e) {
if (this.contentVisible)
for (var t = this.ctx, r = this.current.fillColor, n = this.current.patternFill, s = 0, a = e.length; s < a; s++) {
var i = e[s]
, o = i.width
, l = i.height
, c = this.cachedCanvases.getCanvas("maskCanvas", o, l)
, h = c.context;
h.save();
putBinaryImageMask(h, i);
h.globalCompositeOperation = "source-in";
h.fillStyle = n ? r.getPattern(h, this) : r;
h.fillRect(0, 0, o, l);
h.restore();
t.save();
t.transform.apply(t, i.transform);
t.scale(1, -1);
t.drawImage(c.canvas, 0, 0, o, l, 0, -1, 1, 1);
t.restore()
}
},
paintImageXObject: function CanvasGraphics_paintImageXObject(e) {
if (!this.contentVisible)
return;
const t = e.startsWith("g_") ? this.commonObjs.get(e) : this.objs.get(e);
t ? this.paintInlineImageXObject(t) : (0,
n.warn)("Dependent image isn't ready yet")
},
paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(e, t, r, s) {
if (!this.contentVisible)
return;
const a = e.startsWith("g_") ? this.commonObjs.get(e) : this.objs.get(e);
if (a) {
for (var i = a.width, o = a.height, l = [], c = 0, h = s.length; c < h; c += 2)
l.push({
transform: [t, 0, 0, r, s[c], s[c + 1]],
x: 0,
y: 0,
w: i,
h: o
});
this.paintInlineImageXObjectGroup(a, l)
} else
(0,
n.warn)("Dependent image isn't ready yet")
},
paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(e) {
if (this.contentVisible) {
var t = e.width
, r = e.height
, n = this.ctx;
this.save();
n.scale(1 / t, -1 / r);
var s, a, i = n.mozCurrentTransformInverse, o = i[0], l = i[1], c = Math.max(Math.sqrt(o * o + l * l), 1), h = i[2], d = i[3], u = Math.max(Math.sqrt(h * h + d * d), 1);
if ("function" == typeof HTMLElement && e instanceof HTMLElement || !e.data)
s = e;
else {
var p = (a = this.cachedCanvases.getCanvas("inlineImage", t, r)).context;
putBinaryImageData(p, e, this.current.transferMaps);
s = a.canvas
}
for (var f = t, g = r, m = "prescale1"; c > 2 && f > 1 || u > 2 && g > 1; ) {
var _ = f
, A = g;
c > 2 && f > 1 && (c /= f / (_ = Math.ceil(f / 2)));
u > 2 && g > 1 && (u /= g / (A = Math.ceil(g / 2)));
(p = (a = this.cachedCanvases.getCanvas(m, _, A)).context).clearRect(0, 0, _, A);
p.drawImage(s, 0, 0, f, g, 0, 0, _, A);
s = a.canvas;
f = _;
g = A;
m = "prescale1" === m ? "prescale2" : "prescale1"
}
n.drawImage(s, 0, 0, f, g, 0, -r, t, r);
if (this.imageLayer) {
var b = this.getCanvasPosition(0, -r);
this.imageLayer.appendImage({
imgData: e,
left: b[0],
top: b[1],
width: t / i[0],
height: r / i[3]
})
}
this.restore()
}
},
paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(e, t) {
if (this.contentVisible) {
var r = this.ctx
, n = e.width
, s = e.height
, a = this.cachedCanvases.getCanvas("inlineImage", n, s);
putBinaryImageData(a.context, e, this.current.transferMaps);
for (var i = 0, o = t.length; i < o; i++) {
var l = t[i];
r.save();
r.transform.apply(r, l.transform);
r.scale(1, -1);
r.drawImage(a.canvas, l.x, l.y, l.w, l.h, 0, -1, 1, 1);
if (this.imageLayer) {
var c = this.getCanvasPosition(l.x, l.y);
this.imageLayer.appendImage({
imgData: e,
left: c[0],
top: c[1],
width: n,
height: s
})
}
r.restore()
}
}
},
paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() {
this.contentVisible && this.ctx.fillRect(0, 0, 1, 1)
},
markPoint: function CanvasGraphics_markPoint(e) {},
markPointProps: function CanvasGraphics_markPointProps(e, t) {},
beginMarkedContent: function CanvasGraphics_beginMarkedContent(e) {
this.markedContentStack.push({
visible: !0
})
},
beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(e, t) {
"OC" === e ? this.markedContentStack.push({
visible: this.optionalContentConfig.isVisible(t)
}) : this.markedContentStack.push({
visible: !0
});
this.contentVisible = this.isContentVisible()
},
endMarkedContent: function CanvasGraphics_endMarkedContent() {
this.markedContentStack.pop();
this.contentVisible = this.isContentVisible()
},
beginCompat: function CanvasGraphics_beginCompat() {},
endCompat: function CanvasGraphics_endCompat() {},
consumePath: function CanvasGraphics_consumePath() {
var e = this.ctx;
if (this.pendingClip) {
this.pendingClip === o ? e.clip("evenodd") : e.clip();
this.pendingClip = null
}
e.beginPath()
},
getSinglePixelWidth(e) {
if (null === this._cachedGetSinglePixelWidth) {
const e = this.ctx.mozCurrentTransformInverse;
this._cachedGetSinglePixelWidth = Math.sqrt(Math.max(e[0] * e[0] + e[1] * e[1], e[2] * e[2] + e[3] * e[3]))
}
return this._cachedGetSinglePixelWidth
},
getCanvasPosition: function CanvasGraphics_getCanvasPosition(e, t) {
var r = this.ctx.mozCurrentTransform;
return [r[0] * e + r[2] * t + r[4], r[1] * e + r[3] * t + r[5]]
},
isContentVisible: function CanvasGraphics_isContentVisible() {
for (let e = this.markedContentStack.length - 1; e >= 0; e--)
if (!this.markedContentStack[e].visible)
return !1;
return !0
}
};
for (var l in n.OPS)
CanvasGraphics.prototype[n.OPS[l]] = CanvasGraphics.prototype[l];
return CanvasGraphics
}();
t.CanvasGraphics = o
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.getShadingPatternFromIR = function getShadingPatternFromIR(e) {
var t = s[e[0]];
if (!t)
throw new Error("Unknown IR type: " + e[0]);
return t.fromIR(e)
}
;
t.TilingPattern = void 0;
var n = r(2)
, s = {};
function applyBoundingBox(e, t) {
if (!t || "undefined" == typeof Path2D)
return;
const r = t[2] - t[0]
, n = t[3] - t[1]
, s = new Path2D;
s.rect(t[0], t[1], r, n);
e.clip(s)
}
s.RadialAxial = {
fromIR: function RadialAxial_fromIR(e) {
var t = e[1]
, r = e[2]
, n = e[3]
, s = e[4]
, a = e[5]
, i = e[6]
, o = e[7];
return {
type: "Pattern",
getPattern: function RadialAxial_getPattern(e) {
applyBoundingBox(e, r);
var l;
"axial" === t ? l = e.createLinearGradient(s[0], s[1], a[0], a[1]) : "radial" === t && (l = e.createRadialGradient(s[0], s[1], i, a[0], a[1], o));
for (var c = 0, h = n.length; c < h; ++c) {
var d = n[c];
l.addColorStop(d[0], d[1])
}
return l
}
}
}
};
var a = function createMeshCanvasClosure() {
function drawTriangle(e, t, r, n, s, a, i, o) {
var l, c = t.coords, h = t.colors, d = e.data, u = 4 * e.width;
if (c[r + 1] > c[n + 1]) {
l = r;
r = n;
n = l;
l = a;
a = i;
i = l
}
if (c[n + 1] > c[s + 1]) {
l = n;
n = s;
s = l;
l = i;
i = o;
o = l
}
if (c[r + 1] > c[n + 1]) {
l = r;
r = n;
n = l;
l = a;
a = i;
i = l
}
var p = (c[r] + t.offsetX) * t.scaleX
, f = (c[r + 1] + t.offsetY) * t.scaleY
, g = (c[n] + t.offsetX) * t.scaleX
, m = (c[n + 1] + t.offsetY) * t.scaleY
, _ = (c[s] + t.offsetX) * t.scaleX
, A = (c[s + 1] + t.offsetY) * t.scaleY;
if (!(f >= A))
for (var b, y, v, C, S, x, P, k, R = h[a], w = h[a + 1], T = h[a + 2], E = h[i], F = h[i + 1], L = h[i + 2], M = h[o], D = h[o + 1], O = h[o + 2], I = Math.round(f), N = Math.round(A), j = I; j <= N; j++) {
if (j < m) {
let e;
e = j < f ? 0 : f === m ? 1 : (f - j) / (f - m);
b = p - (p - g) * e;
y = R - (R - E) * e;
v = w - (w - F) * e;
C = T - (T - L) * e
} else {
let e;
e = j > A ? 1 : m === A ? 0 : (m - j) / (m - A);
b = g - (g - _) * e;
y = E - (E - M) * e;
v = F - (F - D) * e;
C = L - (L - O) * e
}
let e;
e = j < f ? 0 : j > A ? 1 : (f - j) / (f - A);
S = p - (p - _) * e;
x = R - (R - M) * e;
P = w - (w - D) * e;
k = T - (T - O) * e;
for (var G = Math.round(Math.min(b, S)), U = Math.round(Math.max(b, S)), W = u * j + 4 * G, q = G; q <= U; q++) {
e = (b - q) / (b - S);
e < 0 ? e = 0 : e > 1 && (e = 1);
d[W++] = y - (y - x) * e | 0;
d[W++] = v - (v - P) * e | 0;
d[W++] = C - (C - k) * e | 0;
d[W++] = 255
}
}
}
function drawFigure(e, t, r) {
var n, s, a = t.coords, i = t.colors;
switch (t.type) {
case "lattice":
var o = t.verticesPerRow
, l = Math.floor(a.length / o) - 1
, c = o - 1;
for (n = 0; n < l; n++)
for (var h = n * o, d = 0; d < c; d++,
h++) {
drawTriangle(e, r, a[h], a[h + 1], a[h + o], i[h], i[h + 1], i[h + o]);
drawTriangle(e, r, a[h + o + 1], a[h + 1], a[h + o], i[h + o + 1], i[h + 1], i[h + o])
}
break;
case "triangles":
for (n = 0,
s = a.length; n < s; n += 3)
drawTriangle(e, r, a[n], a[n + 1], a[n + 2], i[n], i[n + 1], i[n + 2]);
break;
default:
throw new Error("illegal figure")
}
}
return function createMeshCanvas(e, t, r, n, s, a, i, o) {
var l, c, h, d, u = Math.floor(e[0]), p = Math.floor(e[1]), f = Math.ceil(e[2]) - u, g = Math.ceil(e[3]) - p, m = Math.min(Math.ceil(Math.abs(f * t[0] * 1.1)), 3e3), _ = Math.min(Math.ceil(Math.abs(g * t[1] * 1.1)), 3e3), A = f / m, b = g / _, y = {
coords: r,
colors: n,
offsetX: -u,
offsetY: -p,
scaleX: 1 / A,
scaleY: 1 / b
}, v = m + 4, C = _ + 4;
if (o.isEnabled) {
l = o.drawFigures({
width: m,
height: _,
backgroundColor: a,
figures: s,
context: y
});
(c = i.getCanvas("mesh", v, C, !1)).context.drawImage(l, 2, 2);
l = c.canvas
} else {
var S = (c = i.getCanvas("mesh", v, C, !1)).context
, x = S.createImageData(m, _);
if (a) {
var P = x.data;
for (h = 0,
d = P.length; h < d; h += 4) {
P[h] = a[0];
P[h + 1] = a[1];
P[h + 2] = a[2];
P[h + 3] = 255
}
}
for (h = 0; h < s.length; h++)
drawFigure(x, s[h], y);
S.putImageData(x, 2, 2);
l = c.canvas
}
return {
canvas: l,
offsetX: u - 2 * A,
offsetY: p - 2 * b,
scaleX: A,
scaleY: b
}
}
}();
s.Mesh = {
fromIR: function Mesh_fromIR(e) {
var t = e[2]
, r = e[3]
, s = e[4]
, i = e[5]
, o = e[6]
, l = e[7]
, c = e[8];
return {
type: "Pattern",
getPattern: function Mesh_getPattern(e, h, d) {
applyBoundingBox(e, l);
var u;
if (d)
u = n.Util.singularValueDecompose2dScale(e.mozCurrentTransform);
else {
u = n.Util.singularValueDecompose2dScale(h.baseTransform);
if (o) {
var p = n.Util.singularValueDecompose2dScale(o);
u = [u[0] * p[0], u[1] * p[1]]
}
}
var f = a(i, u, t, r, s, d ? null : c, h.cachedCanvases, h.webGLContext);
if (!d) {
e.setTransform.apply(e, h.baseTransform);
o && e.transform.apply(e, o)
}
e.translate(f.offsetX, f.offsetY);
e.scale(f.scaleX, f.scaleY);
return e.createPattern(f.canvas, "no-repeat")
}
}
}
};
s.Dummy = {
fromIR: function Dummy_fromIR() {
return {
type: "Pattern",
getPattern: function Dummy_fromIR_getPattern() {
return "hotpink"
}
}
}
};
var i = function TilingPatternClosure() {
var e = 1
, t = 2;
function TilingPattern(e, t, r, n, s) {
this.operatorList = e[2];
this.matrix = e[3] || [1, 0, 0, 1, 0, 0];
this.bbox = e[4];
this.xstep = e[5];
this.ystep = e[6];
this.paintType = e[7];
this.tilingType = e[8];
this.color = t;
this.canvasGraphicsFactory = n;
this.baseTransform = s;
this.type = "Pattern";
this.ctx = r
}
TilingPattern.prototype = {
createPatternCanvas: function TilinPattern_createPatternCanvas(e) {
var t = this.operatorList
, r = this.bbox
, s = this.xstep
, a = this.ystep
, i = this.paintType
, o = this.tilingType
, l = this.color
, c = this.canvasGraphicsFactory;
(0,
n.info)("TilingType: " + o);
var h = r[0]
, d = r[1]
, u = r[2]
, p = r[3]
, f = n.Util.singularValueDecompose2dScale(this.matrix)
, g = n.Util.singularValueDecompose2dScale(this.baseTransform)
, m = [f[0] * g[0], f[1] * g[1]]
, _ = this.getSizeAndScale(s, this.ctx.canvas.width, m[0])
, A = this.getSizeAndScale(a, this.ctx.canvas.height, m[1])
, b = e.cachedCanvases.getCanvas("pattern", _.size, A.size, !0)
, y = b.context
, v = c.createCanvasGraphics(y);
v.groupLevel = e.groupLevel;
this.setFillAndStrokeStyleToContext(v, i, l);
v.transform(_.scale, 0, 0, A.scale, 0, 0);
v.transform(1, 0, 0, 1, -h, -d);
this.clipBbox(v, r, h, d, u, p);
v.executeOperatorList(t);
this.ctx.transform(1, 0, 0, 1, h, d);
this.ctx.scale(1 / _.scale, 1 / A.scale);
return b.canvas
},
getSizeAndScale: function TilingPattern_getSizeAndScale(e, t, r) {
e = Math.abs(e);
var n = Math.max(3e3, t)
, s = Math.ceil(e * r);
s >= n ? s = n : r = s / e;
return {
scale: r,
size: s
}
},
clipBbox: function clipBbox(e, t, r, n, s, a) {
if (Array.isArray(t) && 4 === t.length) {
var i = s - r
, o = a - n;
e.ctx.rect(r, n, i, o);
e.clip();
e.endPath()
}
},
setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(r, s, a) {
const i = r.ctx
, o = r.current;
switch (s) {
case e:
var l = this.ctx;
i.fillStyle = l.fillStyle;
i.strokeStyle = l.strokeStyle;
o.fillColor = l.fillStyle;
o.strokeColor = l.strokeStyle;
break;
case t:
var c = n.Util.makeCssRgb(a[0], a[1], a[2]);
i.fillStyle = c;
i.strokeStyle = c;
o.fillColor = c;
o.strokeColor = c;
break;
default:
throw new n.FormatError("Unsupported paint type: " + s)
}
},
getPattern: function TilingPattern_getPattern(e, t) {
(e = this.ctx).setTransform.apply(e, this.baseTransform);
e.transform.apply(e, this.matrix);
var r = this.createPatternCanvas(t);
return e.createPattern(r, "repeat")
}
};
return TilingPattern
}();
t.TilingPattern = i
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.GlobalWorkerOptions = void 0;
const n = Object.create(null);
t.GlobalWorkerOptions = n;
n.workerPort = void 0 === n.workerPort ? null : n.workerPort;
n.workerSrc = void 0 === n.workerSrc ? "" : n.workerSrc
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.MessageHandler = void 0;
var n = r(2);
const s = 1
, a = 2
, i = 1
, o = 2
, l = 3
, c = 4
, h = 5
, d = 6
, u = 7
, p = 8;
function wrapReason(e) {
if ("object" != typeof e || null === e)
return e;
switch (e.name) {
case "AbortException":
return new n.AbortException(e.message);
case "MissingPDFException":
return new n.MissingPDFException(e.message);
case "UnexpectedResponseException":
return new n.UnexpectedResponseException(e.message,e.status);
case "UnknownErrorException":
return new n.UnknownErrorException(e.message,e.details);
default:
return new n.UnknownErrorException(e.message,e.toString())
}
}
t.MessageHandler = class MessageHandler {
constructor(e, t, r) {
this.sourceName = e;
this.targetName = t;
this.comObj = r;
this.callbackId = 1;
this.streamId = 1;
this.postMessageTransfers = !0;
this.streamSinks = Object.create(null);
this.streamControllers = Object.create(null);
this.callbackCapabilities = Object.create(null);
this.actionHandler = Object.create(null);
this._onComObjOnMessage = e=>{
const t = e.data;
if (t.targetName !== this.sourceName)
return;
if (t.stream) {
this._processStreamMessage(t);
return
}
if (t.callback) {
const e = t.callbackId
, r = this.callbackCapabilities[e];
if (!r)
throw new Error("Cannot resolve callback " + e);
delete this.callbackCapabilities[e];
if (t.callback === s)
r.resolve(t.data);
else {
if (t.callback !== a)
throw new Error("Unexpected callback case");
r.reject(wrapReason(t.reason))
}
return
}
const n = this.actionHandler[t.action];
if (!n)
throw new Error("Unknown action from worker: " + t.action);
if (t.callbackId) {
const e = this.sourceName
, i = t.sourceName;
new Promise((function(e) {
e(n(t.data))
}
)).then((function(n) {
r.postMessage({
sourceName: e,
targetName: i,
callback: s,
callbackId: t.callbackId,
data: n
})
}
), (function(n) {
r.postMessage({
sourceName: e,
targetName: i,
callback: a,
callbackId: t.callbackId,
reason: wrapReason(n)
})
}
))
} else
t.streamId ? this._createStreamSink(t) : n(t.data)
}
;
r.addEventListener("message", this._onComObjOnMessage)
}
on(e, t) {
const r = this.actionHandler;
if (r[e])
throw new Error(`There is already an actionName called "${e}"`);
r[e] = t
}
send(e, t, r) {
this._postMessage({
sourceName: this.sourceName,
targetName: this.targetName,
action: e,
data: t
}, r)
}
sendWithPromise(e, t, r) {
const s = this.callbackId++
, a = (0,
n.createPromiseCapability)();
this.callbackCapabilities[s] = a;
try {
this._postMessage({
sourceName: this.sourceName,
targetName: this.targetName,
action: e,
callbackId: s,
data: t
}, r)
} catch (e) {
a.reject(e)
}
return a.promise
}
sendWithStream(e, t, r, s) {
const a = this.streamId++
, o = this.sourceName
, l = this.targetName
, c = this.comObj;
return new ReadableStream({
start: r=>{
const i = (0,
n.createPromiseCapability)();
this.streamControllers[a] = {
controller: r,
startCall: i,
pullCall: null,
cancelCall: null,
isClosed: !1
};
this._postMessage({
sourceName: o,
targetName: l,
action: e,
streamId: a,
data: t,
desiredSize: r.desiredSize
}, s);
return i.promise
}
,
pull: e=>{
const t = (0,
n.createPromiseCapability)();
this.streamControllers[a].pullCall = t;
c.postMessage({
sourceName: o,
targetName: l,
stream: d,
streamId: a,
desiredSize: e.desiredSize
});
return t.promise
}
,
cancel: e=>{
(0,
n.assert)(e instanceof Error, "cancel must have a valid reason");
const t = (0,
n.createPromiseCapability)();
this.streamControllers[a].cancelCall = t;
this.streamControllers[a].isClosed = !0;
c.postMessage({
sourceName: o,
targetName: l,
stream: i,
streamId: a,
reason: wrapReason(e)
});
return t.promise
}
},r)
}
_createStreamSink(e) {
const t = this
, r = this.actionHandler[e.action]
, s = e.streamId
, a = this.sourceName
, i = e.sourceName
, o = this.comObj
, d = {
enqueue(e, r=1, o) {
if (this.isCancelled)
return;
const l = this.desiredSize;
this.desiredSize -= r;
if (l > 0 && this.desiredSize <= 0) {
this.sinkCapability = (0,
n.createPromiseCapability)();
this.ready = this.sinkCapability.promise
}
t._postMessage({
sourceName: a,
targetName: i,
stream: c,
streamId: s,
chunk: e
}, o)
},
close() {
if (!this.isCancelled) {
this.isCancelled = !0;
o.postMessage({
sourceName: a,
targetName: i,
stream: l,
streamId: s
});
delete t.streamSinks[s]
}
},
error(e) {
(0,
n.assert)(e instanceof Error, "error must have a valid reason");
if (!this.isCancelled) {
this.isCancelled = !0;
o.postMessage({
sourceName: a,
targetName: i,
stream: h,
streamId: s,
reason: wrapReason(e)
})
}
},
sinkCapability: (0,
n.createPromiseCapability)(),
onPull: null,
onCancel: null,
isCancelled: !1,
desiredSize: e.desiredSize,
ready: null
};
d.sinkCapability.resolve();
d.ready = d.sinkCapability.promise;
this.streamSinks[s] = d;
new Promise((function(t) {
t(r(e.data, d))
}
)).then((function() {
o.postMessage({
sourceName: a,
targetName: i,
stream: p,
streamId: s,
success: !0
})
}
), (function(e) {
o.postMessage({
sourceName: a,
targetName: i,
stream: p,
streamId: s,
reason: wrapReason(e)
})
}
))
}
_processStreamMessage(e) {
const t = e.streamId
, r = this.sourceName
, s = e.sourceName
, a = this.comObj;
switch (e.stream) {
case p:
e.success ? this.streamControllers[t].startCall.resolve() : this.streamControllers[t].startCall.reject(wrapReason(e.reason));
break;
case u:
e.success ? this.streamControllers[t].pullCall.resolve() : this.streamControllers[t].pullCall.reject(wrapReason(e.reason));
break;
case d:
if (!this.streamSinks[t]) {
a.postMessage({
sourceName: r,
targetName: s,
stream: u,
streamId: t,
success: !0
});
break
}
this.streamSinks[t].desiredSize <= 0 && e.desiredSize > 0 && this.streamSinks[t].sinkCapability.resolve();
this.streamSinks[t].desiredSize = e.desiredSize;
const {onPull: f} = this.streamSinks[e.streamId];
new Promise((function(e) {
e(f && f())
}
)).then((function() {
a.postMessage({
sourceName: r,
targetName: s,
stream: u,
streamId: t,
success: !0
})
}
), (function(e) {
a.postMessage({
sourceName: r,
targetName: s,
stream: u,
streamId: t,
reason: wrapReason(e)
})
}
));
break;
case c:
(0,
n.assert)(this.streamControllers[t], "enqueue should have stream controller");
if (this.streamControllers[t].isClosed)
break;
this.streamControllers[t].controller.enqueue(e.chunk);
break;
case l:
(0,
n.assert)(this.streamControllers[t], "close should have stream controller");
if (this.streamControllers[t].isClosed)
break;
this.streamControllers[t].isClosed = !0;
this.streamControllers[t].controller.close();
this._deleteStreamController(t);
break;
case h:
(0,
n.assert)(this.streamControllers[t], "error should have stream controller");
this.streamControllers[t].controller.error(wrapReason(e.reason));
this._deleteStreamController(t);
break;
case o:
e.success ? this.streamControllers[t].cancelCall.resolve() : this.streamControllers[t].cancelCall.reject(wrapReason(e.reason));
this._deleteStreamController(t);
break;
case i:
if (!this.streamSinks[t])
break;
const {onCancel: g} = this.streamSinks[e.streamId];
new Promise((function(t) {
t(g && g(wrapReason(e.reason)))
}
)).then((function() {
a.postMessage({
sourceName: r,
targetName: s,
stream: o,
streamId: t,
success: !0
})
}
), (function(e) {
a.postMessage({
sourceName: r,
targetName: s,
stream: o,
streamId: t,
reason: wrapReason(e)
})
}
));
this.streamSinks[t].sinkCapability.reject(wrapReason(e.reason));
this.streamSinks[t].isCancelled = !0;
delete this.streamSinks[t];
break;
default:
throw new Error("Unexpected stream case")
}
}
async _deleteStreamController(e) {
await Promise.allSettled([this.streamControllers[e].startCall, this.streamControllers[e].pullCall, this.streamControllers[e].cancelCall].map((function(e) {
return e && e.promise
}
)));
delete this.streamControllers[e]
}
_postMessage(e, t) {
t && this.postMessageTransfers ? this.comObj.postMessage(e, t) : this.comObj.postMessage(e)
}
destroy() {
this.comObj.removeEventListener("message", this._onComObjOnMessage)
}
}
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.Metadata = void 0;
var n = r(2)
, s = r(15);
t.Metadata = class Metadata {
constructor(e) {
(0,
n.assert)("string" == typeof e, "Metadata: input is not a string");
e = this._repair(e);
const t = (new s.SimpleXMLParser).parseFromString(e);
this._metadataMap = new Map;
t && this._parse(t)
}
_repair(e) {
return e.replace(/^[^<]+/, "").replace(/>\\376\\377([^<]+)/g, (function(e, t) {
const r = t.replace(/\\([0-3])([0-7])([0-7])/g, (function(e, t, r, n) {
return String.fromCharCode(64 * t + 8 * r + 1 * n)
}
)).replace(/&(amp|apos|gt|lt|quot);/g, (function(e, t) {
switch (t) {
case "amp":
return "&";
case "apos":
return "'";
case "gt":
return ">";
case "lt":
return "<";
case "quot":
return '"'
}
throw new Error(`_repair: ${t} isn't defined.`)
}
));
let n = "";
for (let e = 0, t = r.length; e < t; e += 2) {
const t = 256 * r.charCodeAt(e) + r.charCodeAt(e + 1);
n += t >= 32 && t < 127 && 60 !== t && 62 !== t && 38 !== t ? String.fromCharCode(t) : "&#x" + (65536 + t).toString(16).substring(1) + ";"
}
return ">" + n
}
))
}
_parse(e) {
let t = e.documentElement;
if ("rdf:rdf" !== t.nodeName.toLowerCase()) {
t = t.firstChild;
for (; t && "rdf:rdf" !== t.nodeName.toLowerCase(); )
t = t.nextSibling
}
const r = t ? t.nodeName.toLowerCase() : null;
if (!t || "rdf:rdf" !== r || !t.hasChildNodes())
return;
const n = t.childNodes;
for (let e = 0, t = n.length; e < t; e++) {
const t = n[e];
if ("rdf:description" === t.nodeName.toLowerCase())
for (let e = 0, r = t.childNodes.length; e < r; e++)
if ("#text" !== t.childNodes[e].nodeName.toLowerCase()) {
const r = t.childNodes[e]
, n = r.nodeName.toLowerCase();
this._metadataMap.set(n, r.textContent.trim())
}
}
}
get(e) {
return this._metadataMap.has(e) ? this._metadataMap.get(e) : null
}
getAll() {
return Object.fromEntries(this._metadataMap)
}
has(e) {
return this._metadataMap.has(e)
}
}
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.SimpleXMLParser = void 0;
const n = 0
, s = -2
, a = -3
, i = -4
, o = -5
, l = -6
, c = -9;
function isWhitespace(e, t) {
const r = e[t];
return " " === r || "\n" === r || "\r" === r || "\t" === r
}
class SimpleDOMNode {
constructor(e, t) {
this.nodeName = e;
this.nodeValue = t;
Object.defineProperty(this, "parentNode", {
value: null,
writable: !0
})
}
get firstChild() {
return this.childNodes && this.childNodes[0]
}
get nextSibling() {
const e = this.parentNode.childNodes;
if (!e)
return;
const t = e.indexOf(this);
return -1 !== t ? e[t + 1] : void 0
}
get textContent() {
return this.childNodes ? this.childNodes.map((function(e) {
return e.textContent
}
)).join("") : this.nodeValue || ""
}
hasChildNodes() {
return this.childNodes && this.childNodes.length > 0
}
}
t.SimpleXMLParser = class SimpleXMLParser extends class XMLParserBase {
_resolveEntities(e) {
return e.replace(/&([^;]+);/g, (e,t)=>{
if ("#x" === t.substring(0, 2))
return String.fromCharCode(parseInt(t.substring(2), 16));
if ("#" === t.substring(0, 1))
return String.fromCharCode(parseInt(t.substring(1), 10));
switch (t) {
case "lt":
return "<";
case "gt":
return ">";
case "amp":
return "&";
case "quot":
return '"'
}
return this.onResolveEntity(t)
}
)
}
_parseContent(e, t) {
const r = [];
let n = t;
function skipWs() {
for (; n < e.length && isWhitespace(e, n); )
++n
}
for (; n < e.length && !isWhitespace(e, n) && ">" !== e[n] && "/" !== e[n]; )
++n;
const s = e.substring(t, n);
skipWs();
for (; n < e.length && ">" !== e[n] && "/" !== e[n] && "?" !== e[n]; ) {
skipWs();
let t = ""
, s = "";
for (; n < e.length && !isWhitespace(e, n) && "=" !== e[n]; ) {
t += e[n];
++n
}
skipWs();
if ("=" !== e[n])
return null;
++n;
skipWs();
const a = e[n];
if ('"' !== a && "'" !== a)
return null;
const i = e.indexOf(a, ++n);
if (i < 0)
return null;
s = e.substring(n, i);
r.push({
name: t,
value: this._resolveEntities(s)
});
n = i + 1;
skipWs()
}
return {
name: s,
attributes: r,
parsed: n - t
}
}
_parseProcessingInstruction(e, t) {
let r = t;
for (; r < e.length && !isWhitespace(e, r) && ">" !== e[r] && "/" !== e[r]; )
++r;
const n = e.substring(t, r);
!function skipWs() {
for (; r < e.length && isWhitespace(e, r); )
++r
}();
const s = r;
for (; r < e.length && ("?" !== e[r] || ">" !== e[r + 1]); )
++r;
return {
name: n,
value: e.substring(s, r),
parsed: r - t
}
}
parseXml(e) {
let t = 0;
for (; t < e.length; ) {
let r = t;
if ("<" === e[t]) {
++r;
let t;
switch (e[r]) {
case "/":
++r;
t = e.indexOf(">", r);
if (t < 0) {
this.onError(c);
return
}
this.onEndElement(e.substring(r, t));
r = t + 1;
break;
case "?":
++r;
const n = this._parseProcessingInstruction(e, r);
if ("?>" !== e.substring(r + n.parsed, r + n.parsed + 2)) {
this.onError(a);
return
}
this.onPi(n.name, n.value);
r += n.parsed + 2;
break;
case "!":
if ("--" === e.substring(r + 1, r + 3)) {
t = e.indexOf("--\x3e", r + 3);
if (t < 0) {
this.onError(o);
return
}
this.onComment(e.substring(r + 3, t));
r = t + 3
} else if ("[CDATA[" === e.substring(r + 1, r + 8)) {
t = e.indexOf("]]>", r + 8);
if (t < 0) {
this.onError(s);
return
}
this.onCdata(e.substring(r + 8, t));
r = t + 3
} else {
if ("DOCTYPE" !== e.substring(r + 1, r + 8)) {
this.onError(l);
return
}
{
const n = e.indexOf("[", r + 8);
let s = !1;
t = e.indexOf(">", r + 8);
if (t < 0) {
this.onError(i);
return
}
if (n > 0 && t > n) {
t = e.indexOf("]>", r + 8);
if (t < 0) {
this.onError(i);
return
}
s = !0
}
const a = e.substring(r + 8, t + (s ? 1 : 0));
this.onDoctype(a);
r = t + (s ? 2 : 1)
}
}
break;
default:
const h = this._parseContent(e, r);
if (null === h) {
this.onError(l);
return
}
let d = !1;
if ("/>" === e.substring(r + h.parsed, r + h.parsed + 2))
d = !0;
else if (">" !== e.substring(r + h.parsed, r + h.parsed + 1)) {
this.onError(c);
return
}
this.onBeginElement(h.name, h.attributes, d);
r += h.parsed + (d ? 2 : 1)
}
} else {
for (; r < e.length && "<" !== e[r]; )
r++;
const n = e.substring(t, r);
this.onText(this._resolveEntities(n))
}
t = r
}
}
onResolveEntity(e) {
return `&${e};`
}
onPi(e, t) {}
onComment(e) {}
onCdata(e) {}
onDoctype(e) {}
onText(e) {}
onBeginElement(e, t, r) {}
onEndElement(e) {}
onError(e) {}
}
{
constructor() {
super();
this._currentFragment = null;
this._stack = null;
this._errorCode = n
}
parseFromString(e) {
this._currentFragment = [];
this._stack = [];
this._errorCode = n;
this.parseXml(e);
if (this._errorCode !== n)
return;
const [t] = this._currentFragment;
return t ? {
documentElement: t
} : void 0
}
onResolveEntity(e) {
switch (e) {
case "apos":
return "'"
}
return super.onResolveEntity(e)
}
onText(e) {
if (function isWhitespaceString(e) {
for (let t = 0, r = e.length; t < r; t++)
if (!isWhitespace(e, t))
return !1;
return !0
}(e))
return;
const t = new SimpleDOMNode("#text",e);
this._currentFragment.push(t)
}
onCdata(e) {
const t = new SimpleDOMNode("#text",e);
this._currentFragment.push(t)
}
onBeginElement(e, t, r) {
const n = new SimpleDOMNode(e);
n.childNodes = [];
this._currentFragment.push(n);
if (!r) {
this._stack.push(this._currentFragment);
this._currentFragment = n.childNodes
}
}
onEndElement(e) {
this._currentFragment = this._stack.pop() || [];
const t = this._currentFragment[this._currentFragment.length - 1];
if (t)
for (let e = 0, r = t.childNodes.length; e < r; e++)
t.childNodes[e].parentNode = t
}
onError(e) {
this._errorCode = e
}
}
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.OptionalContentConfig = void 0;
var n = r(2);
class OptionalContentGroup {
constructor(e, t) {
this.visible = !0;
this.name = e;
this.intent = t
}
}
t.OptionalContentConfig = class OptionalContentConfig {
constructor(e) {
this.name = null;
this.creator = null;
this._order = null;
this._groups = new Map;
if (null !== e) {
this.name = e.name;
this.creator = e.creator;
this._order = e.order;
for (const t of e.groups)
this._groups.set(t.id, new OptionalContentGroup(t.name,t.intent));
if ("OFF" === e.baseState)
for (const e of this._groups)
e.visible = !1;
for (const t of e.on)
this._groups.get(t).visible = !0;
for (const t of e.off)
this._groups.get(t).visible = !1
}
}
isVisible(e) {
if ("OCG" === e.type) {
if (!this._groups.has(e.id)) {
(0,
n.warn)("Optional content group not found: " + e.id);
return !0
}
return this._groups.get(e.id).visible
}
if ("OCMD" === e.type) {
e.expression && (0,
n.warn)("Visibility expression not supported yet.");
if (!e.policy || "AnyOn" === e.policy) {
for (const t of e.ids) {
if (!this._groups.has(t)) {
(0,
n.warn)("Optional content group not found: " + t);
return !0
}
if (this._groups.get(t).visible)
return !0
}
return !1
}
if ("AllOn" === e.policy) {
for (const t of e.ids) {
if (!this._groups.has(t)) {
(0,
n.warn)("Optional content group not found: " + t);
return !0
}
if (!this._groups.get(t).visible)
return !1
}
return !0
}
if ("AnyOff" === e.policy) {
for (const t of e.ids) {
if (!this._groups.has(t)) {
(0,
n.warn)("Optional content group not found: " + t);
return !0
}
if (!this._groups.get(t).visible)
return !0
}
return !1
}
if ("AllOff" === e.policy) {
for (const t of e.ids) {
if (!this._groups.has(t)) {
(0,
n.warn)("Optional content group not found: " + t);
return !0
}
if (this._groups.get(t).visible)
return !1
}
return !0
}
(0,
n.warn)(`Unknown optional content policy ${e.policy}.`);
return !0
}
(0,
n.warn)(`Unknown group type ${e.type}.`);
return !0
}
setVisibility(e, t=!0) {
this._groups.has(e) ? this._groups.get(e).visible = !!t : (0,
n.warn)("Optional content group not found: " + e)
}
getOrder() {
return this._groups.size ? this._order ? this._order.slice() : Array.from(this._groups.keys()) : null
}
getGroups() {
return this._groups.size ? Object.fromEntries(this._groups) : null
}
getGroup(e) {
return this._groups.get(e) || null
}
}
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.PDFDataTransportStream = void 0;
var n = r(2);
t.PDFDataTransportStream = class PDFDataTransportStream {
constructor(e, t) {
(0,
n.assert)(t, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');
this._queuedChunks = [];
this._progressiveDone = e.progressiveDone || !1;
const r = e.initialData;
if (r && r.length > 0) {
const e = new Uint8Array(r).buffer;
this._queuedChunks.push(e)
}
this._pdfDataRangeTransport = t;
this._isStreamingSupported = !e.disableStream;
this._isRangeSupported = !e.disableRange;
this._contentLength = e.length;
this._fullRequestReader = null;
this._rangeReaders = [];
this._pdfDataRangeTransport.addRangeListener((e,t)=>{
this._onReceiveData({
begin: e,
chunk: t
})
}
);
this._pdfDataRangeTransport.addProgressListener((e,t)=>{
this._onProgress({
loaded: e,
total: t
})
}
);
this._pdfDataRangeTransport.addProgressiveReadListener(e=>{
this._onReceiveData({
chunk: e
})
}
);
this._pdfDataRangeTransport.addProgressiveDoneListener(()=>{
this._onProgressiveDone()
}
);
this._pdfDataRangeTransport.transportReady()
}
_onReceiveData(e) {
const t = new Uint8Array(e.chunk).buffer;
if (void 0 === e.begin)
this._fullRequestReader ? this._fullRequestReader._enqueue(t) : this._queuedChunks.push(t);
else {
const r = this._rangeReaders.some((function(r) {
if (r._begin !== e.begin)
return !1;
r._enqueue(t);
return !0
}
));
(0,
n.assert)(r, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.")
}
}
get _progressiveDataLength() {
return this._fullRequestReader ? this._fullRequestReader._loaded : 0
}
_onProgress(e) {
if (void 0 === e.total) {
const t = this._rangeReaders[0];
t && t.onProgress && t.onProgress({
loaded: e.loaded
})
} else {
const t = this._fullRequestReader;
t && t.onProgress && t.onProgress({
loaded: e.loaded,
total: e.total
})
}
}
_onProgressiveDone() {
this._fullRequestReader && this._fullRequestReader.progressiveDone();
this._progressiveDone = !0
}
_removeRangeReader(e) {
const t = this._rangeReaders.indexOf(e);
t >= 0 && this._rangeReaders.splice(t, 1)
}
getFullReader() {
(0,
n.assert)(!this._fullRequestReader, "PDFDataTransportStream.getFullReader can only be called once.");
const e = this._queuedChunks;
this._queuedChunks = null;
return new PDFDataTransportStreamReader(this,e,this._progressiveDone)
}
getRangeReader(e, t) {
if (t <= this._progressiveDataLength)
return null;
const r = new PDFDataTransportStreamRangeReader(this,e,t);
this._pdfDataRangeTransport.requestDataRange(e, t);
this._rangeReaders.push(r);
return r
}
cancelAllRequests(e) {
this._fullRequestReader && this._fullRequestReader.cancel(e);
this._rangeReaders.slice(0).forEach((function(t) {
t.cancel(e)
}
));
this._pdfDataRangeTransport.abort()
}
}
;
class PDFDataTransportStreamReader {
constructor(e, t, r=!1) {
this._stream = e;
this._done = r || !1;
this._filename = null;
this._queuedChunks = t || [];
this._loaded = 0;
for (const e of this._queuedChunks)
this._loaded += e.byteLength;
this._requests = [];
this._headersReady = Promise.resolve();
e._fullRequestReader = this;
this.onProgress = null
}
_enqueue(e) {
if (!this._done) {
if (this._requests.length > 0) {
this._requests.shift().resolve({
value: e,
done: !1
})
} else
this._queuedChunks.push(e);
this._loaded += e.byteLength
}
}
get headersReady() {
return this._headersReady
}
get filename() {
return this._filename
}
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) {
return {
value: this._queuedChunks.shift(),
done: !1
}
}
if (this._done)
return {
value: void 0,
done: !0
};
const e = (0,
n.createPromiseCapability)();
this._requests.push(e);
return e.promise
}
cancel(e) {
this._done = !0;
this._requests.forEach((function(e) {
e.resolve({
value: void 0,
done: !0
})
}
));
this._requests = []
}
progressiveDone() {
this._done || (this._done = !0)
}
}
class PDFDataTransportStreamRangeReader {
constructor(e, t, r) {
this._stream = e;
this._begin = t;
this._end = r;
this._queuedChunk = null;
this._requests = [];
this._done = !1;
this.onProgress = null
}
_enqueue(e) {
if (!this._done) {
if (0 === this._requests.length)
this._queuedChunk = e;
else {
this._requests.shift().resolve({
value: e,
done: !1
});
this._requests.forEach((function(e) {
e.resolve({
value: void 0,
done: !0
})
}
));
this._requests = []
}
this._done = !0;
this._stream._removeRangeReader(this)
}
}
get isStreamingSupported() {
return !1
}
async read() {
if (this._queuedChunk) {
const e = this._queuedChunk;
this._queuedChunk = null;
return {
value: e,
done: !1
}
}
if (this._done)
return {
value: void 0,
done: !0
};
const e = (0,
n.createPromiseCapability)();
this._requests.push(e);
return e.promise
}
cancel(e) {
this._done = !0;
this._requests.forEach((function(e) {
e.resolve({
value: void 0,
done: !0
})
}
));
this._requests = [];
this._stream._removeRangeReader(this)
}
}
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.WebGLContext = void 0;
var n = r(2);
t.WebGLContext = class WebGLContext {
constructor({enable: e=!1}) {
this._enabled = !0 === e
}
get isEnabled() {
let e = this._enabled;
e && (e = s.tryInitGL());
return (0,
n.shadow)(this, "isEnabled", e)
}
composeSMask({layer: e, mask: t, properties: r}) {
return s.composeSMask(e, t, r)
}
drawFigures({width: e, height: t, backgroundColor: r, figures: n, context: a}) {
return s.drawFigures(e, t, r, n, a)
}
clear() {
s.cleanup()
}
}
;
var s = function WebGLUtilsClosure() {
function loadShader(e, t, r) {
var n = e.createShader(r);
e.shaderSource(n, t);
e.compileShader(n);
if (!e.getShaderParameter(n, e.COMPILE_STATUS)) {
var s = e.getShaderInfoLog(n);
throw new Error("Error during shader compilation: " + s)
}
return n
}
function createVertexShader(e, t) {
return loadShader(e, t, e.VERTEX_SHADER)
}
function createFragmentShader(e, t) {
return loadShader(e, t, e.FRAGMENT_SHADER)
}
function createProgram(e, t) {
for (var r = e.createProgram(), n = 0, s = t.length; n < s; ++n)
e.attachShader(r, t[n]);
e.linkProgram(r);
if (!e.getProgramParameter(r, e.LINK_STATUS)) {
var a = e.getProgramInfoLog(r);
throw new Error("Error during program linking: " + a)
}
return r
}
function createTexture(e, t, r) {
e.activeTexture(r);
var n = e.createTexture();
e.bindTexture(e.TEXTURE_2D, n);
e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE);
e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE);
e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, e.NEAREST);
e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MAG_FILTER, e.NEAREST);
e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, e.RGBA, e.UNSIGNED_BYTE, t);
return n
}
var e, t;
function generateGL() {
if (!e) {
t = document.createElement("canvas");
e = t.getContext("webgl", {
premultipliedalpha: !1
})
}
}
var r = null;
var n = null;
return {
tryInitGL() {
try {
generateGL();
return !!e
} catch (e) {}
return !1
},
composeSMask: function composeSMask(n, s, a) {
var i = n.width
, o = n.height;
r || function initSmaskGL() {
var n, s;
generateGL();
n = t;
t = null;
s = e;
e = null;
var a = createProgram(s, [createVertexShader(s, " 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; } "), createFragmentShader(s, " 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; } ")]);
s.useProgram(a);
var i = {};
i.gl = s;
i.canvas = n;
i.resolutionLocation = s.getUniformLocation(a, "u_resolution");
i.positionLocation = s.getAttribLocation(a, "a_position");
i.backdropLocation = s.getUniformLocation(a, "u_backdrop");
i.subtypeLocation = s.getUniformLocation(a, "u_subtype");
var o = s.getAttribLocation(a, "a_texCoord")
, l = s.getUniformLocation(a, "u_image")
, c = s.getUniformLocation(a, "u_mask")
, h = s.createBuffer();
s.bindBuffer(s.ARRAY_BUFFER, h);
s.bufferData(s.ARRAY_BUFFER, new Float32Array([0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1]), s.STATIC_DRAW);
s.enableVertexAttribArray(o);
s.vertexAttribPointer(o, 2, s.FLOAT, !1, 0, 0);
s.uniform1i(l, 0);
s.uniform1i(c, 1);
r = i
}();
var l = r
, c = l.canvas
, h = l.gl;
c.width = i;
c.height = o;
h.viewport(0, 0, h.drawingBufferWidth, h.drawingBufferHeight);
h.uniform2f(l.resolutionLocation, i, o);
a.backdrop ? h.uniform4f(l.resolutionLocation, a.backdrop[0], a.backdrop[1], a.backdrop[2], 1) : h.uniform4f(l.resolutionLocation, 0, 0, 0, 0);
h.uniform1i(l.subtypeLocation, "Luminosity" === a.subtype ? 1 : 0);
var d = createTexture(h, n, h.TEXTURE0)
, u = createTexture(h, s, h.TEXTURE1)
, p = h.createBuffer();
h.bindBuffer(h.ARRAY_BUFFER, p);
h.bufferData(h.ARRAY_BUFFER, new Float32Array([0, 0, i, 0, 0, o, 0, o, i, 0, i, o]), h.STATIC_DRAW);
h.enableVertexAttribArray(l.positionLocation);
h.vertexAttribPointer(l.positionLocation, 2, h.FLOAT, !1, 0, 0);
h.clearColor(0, 0, 0, 0);
h.enable(h.BLEND);
h.blendFunc(h.ONE, h.ONE_MINUS_SRC_ALPHA);
h.clear(h.COLOR_BUFFER_BIT);
h.drawArrays(h.TRIANGLES, 0, 6);
h.flush();
h.deleteTexture(d);
h.deleteTexture(u);
h.deleteBuffer(p);
return c
},
drawFigures: function drawFigures(r, s, a, i, o) {
n || function initFiguresGL() {
var r, s;
generateGL();
r = t;
t = null;
s = e;
e = null;
var a = createProgram(s, [createVertexShader(s, " 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); } "), createFragmentShader(s, " precision mediump float; varying vec4 v_color; void main() { gl_FragColor = v_color; } ")]);
s.useProgram(a);
var i = {};
i.gl = s;
i.canvas = r;
i.resolutionLocation = s.getUniformLocation(a, "u_resolution");
i.scaleLocation = s.getUniformLocation(a, "u_scale");
i.offsetLocation = s.getUniformLocation(a, "u_offset");
i.positionLocation = s.getAttribLocation(a, "a_position");
i.colorLocation = s.getAttribLocation(a, "a_color");
n = i
}();
var l = n
, c = l.canvas
, h = l.gl;
c.width = r;
c.height = s;
h.viewport(0, 0, h.drawingBufferWidth, h.drawingBufferHeight);
h.uniform2f(l.resolutionLocation, r, s);
var d, u, p, f = 0;
for (d = 0,
u = i.length; d < u; d++)
switch (i[d].type) {
case "lattice":
f += ((p = i[d].coords.length / i[d].verticesPerRow | 0) - 1) * (i[d].verticesPerRow - 1) * 6;
break;
case "triangles":
f += i[d].coords.length
}
var g = new Float32Array(2 * f)
, m = new Uint8Array(3 * f)
, _ = o.coords
, A = o.colors
, b = 0
, y = 0;
for (d = 0,
u = i.length; d < u; d++) {
var v = i[d]
, C = v.coords
, S = v.colors;
switch (v.type) {
case "lattice":
var x = v.verticesPerRow;
p = C.length / x | 0;
for (var P = 1; P < p; P++)
for (var k = P * x + 1, R = 1; R < x; R++,
k++) {
g[b] = _[C[k - x - 1]];
g[b + 1] = _[C[k - x - 1] + 1];
g[b + 2] = _[C[k - x]];
g[b + 3] = _[C[k - x] + 1];
g[b + 4] = _[C[k - 1]];
g[b + 5] = _[C[k - 1] + 1];
m[y] = A[S[k - x - 1]];
m[y + 1] = A[S[k - x - 1] + 1];
m[y + 2] = A[S[k - x - 1] + 2];
m[y + 3] = A[S[k - x]];
m[y + 4] = A[S[k - x] + 1];
m[y + 5] = A[S[k - x] + 2];
m[y + 6] = A[S[k - 1]];
m[y + 7] = A[S[k - 1] + 1];
m[y + 8] = A[S[k - 1] + 2];
g[b + 6] = g[b + 2];
g[b + 7] = g[b + 3];
g[b + 8] = g[b + 4];
g[b + 9] = g[b + 5];
g[b + 10] = _[C[k]];
g[b + 11] = _[C[k] + 1];
m[y + 9] = m[y + 3];
m[y + 10] = m[y + 4];
m[y + 11] = m[y + 5];
m[y + 12] = m[y + 6];
m[y + 13] = m[y + 7];
m[y + 14] = m[y + 8];
m[y + 15] = A[S[k]];
m[y + 16] = A[S[k] + 1];
m[y + 17] = A[S[k] + 2];
b += 12;
y += 18
}
break;
case "triangles":
for (var w = 0, T = C.length; w < T; w++) {
g[b] = _[C[w]];
g[b + 1] = _[C[w] + 1];
m[y] = A[S[w]];
m[y + 1] = A[S[w] + 1];
m[y + 2] = A[S[w] + 2];
b += 2;
y += 3
}
}
}
a ? h.clearColor(a[0] / 255, a[1] / 255, a[2] / 255, 1) : h.clearColor(0, 0, 0, 0);
h.clear(h.COLOR_BUFFER_BIT);
var E = h.createBuffer();
h.bindBuffer(h.ARRAY_BUFFER, E);
h.bufferData(h.ARRAY_BUFFER, g, h.STATIC_DRAW);
h.enableVertexAttribArray(l.positionLocation);
h.vertexAttribPointer(l.positionLocation, 2, h.FLOAT, !1, 0, 0);
var F = h.createBuffer();
h.bindBuffer(h.ARRAY_BUFFER, F);
h.bufferData(h.ARRAY_BUFFER, m, h.STATIC_DRAW);
h.enableVertexAttribArray(l.colorLocation);
h.vertexAttribPointer(l.colorLocation, 3, h.UNSIGNED_BYTE, !1, 0, 0);
h.uniform2f(l.scaleLocation, o.scaleX, o.scaleY);
h.uniform2f(l.offsetLocation, o.offsetX, o.offsetY);
h.drawArrays(h.TRIANGLES, 0, f);
h.flush();
h.deleteBuffer(E);
h.deleteBuffer(F);
return c
},
cleanup() {
if (r && r.canvas) {
r.canvas.width = 0;
r.canvas.height = 0
}
if (n && n.canvas) {
n.canvas.width = 0;
n.canvas.height = 0
}
r = null;
n = null
}
}
}()
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.AnnotationLayer = void 0;
var n = r(1)
, s = r(2)
, a = r(8);
class AnnotationElementFactory {
static create(e) {
switch (e.data.annotationType) {
case s.AnnotationType.LINK:
return new LinkAnnotationElement(e);
case s.AnnotationType.TEXT:
return new TextAnnotationElement(e);
case s.AnnotationType.WIDGET:
switch (e.data.fieldType) {
case "Tx":
return new TextWidgetAnnotationElement(e);
case "Btn":
return e.data.radioButton ? new RadioButtonWidgetAnnotationElement(e) : e.data.checkBox ? new CheckboxWidgetAnnotationElement(e) : new PushButtonWidgetAnnotationElement(e);
case "Ch":
return new ChoiceWidgetAnnotationElement(e)
}
return new WidgetAnnotationElement(e);
case s.AnnotationType.POPUP:
return new PopupAnnotationElement(e);
case s.AnnotationType.FREETEXT:
return new FreeTextAnnotationElement(e);
case s.AnnotationType.LINE:
return new LineAnnotationElement(e);
case s.AnnotationType.SQUARE:
return new SquareAnnotationElement(e);
case s.AnnotationType.CIRCLE:
return new CircleAnnotationElement(e);
case s.AnnotationType.POLYLINE:
return new PolylineAnnotationElement(e);
case s.AnnotationType.CARET:
return new CaretAnnotationElement(e);
case s.AnnotationType.INK:
return new InkAnnotationElement(e);
case s.AnnotationType.POLYGON:
return new PolygonAnnotationElement(e);
case s.AnnotationType.HIGHLIGHT:
return new HighlightAnnotationElement(e);
case s.AnnotationType.UNDERLINE:
return new UnderlineAnnotationElement(e);
case s.AnnotationType.SQUIGGLY:
return new SquigglyAnnotationElement(e);
case s.AnnotationType.STRIKEOUT:
return new StrikeOutAnnotationElement(e);
case s.AnnotationType.STAMP:
return new StampAnnotationElement(e);
case s.AnnotationType.FILEATTACHMENT:
return new FileAttachmentAnnotationElement(e);
default:
return new AnnotationElement(e)
}
}
}
class AnnotationElement {
constructor(e, t=!1, r=!1) {
this.isRenderable = t;
this.data = e.data;
this.layer = e.layer;
this.page = e.page;
this.viewport = e.viewport;
this.linkService = e.linkService;
this.downloadManager = e.downloadManager;
this.imageResourcesPath = e.imageResourcesPath;
this.renderInteractiveForms = e.renderInteractiveForms;
this.svgFactory = e.svgFactory;
this.annotationStorage = e.annotationStorage;
t && (this.container = this._createContainer(r))
}
_createContainer(e=!1) {
const t = this.data
, r = this.page
, n = this.viewport
, a = document.createElement("section");
let i = t.rect[2] - t.rect[0]
, o = t.rect[3] - t.rect[1];
a.setAttribute("data-annotation-id", t.id);
const l = s.Util.normalizeRect([t.rect[0], r.view[3] - t.rect[1] + r.view[1], t.rect[2], r.view[3] - t.rect[3] + r.view[1]]);
a.style.transform = `matrix(${n.transform.join(",")})`;
a.style.transformOrigin = `-${l[0]}px -${l[1]}px`;
if (!e && t.borderStyle.width > 0) {
a.style.borderWidth = t.borderStyle.width + "px";
if (t.borderStyle.style !== s.AnnotationBorderStyleType.UNDERLINE) {
i -= 2 * t.borderStyle.width;
o -= 2 * t.borderStyle.width
}
const e = t.borderStyle.horizontalCornerRadius
, r = t.borderStyle.verticalCornerRadius;
if (e > 0 || r > 0) {
const t = `${e}px / ${r}px`;
a.style.borderRadius = t
}
switch (t.borderStyle.style) {
case s.AnnotationBorderStyleType.SOLID:
a.style.borderStyle = "solid";
break;
case s.AnnotationBorderStyleType.DASHED:
a.style.borderStyle = "dashed";
break;
case s.AnnotationBorderStyleType.BEVELED:
(0,
s.warn)("Unimplemented border style: beveled");
break;
case s.AnnotationBorderStyleType.INSET:
(0,
s.warn)("Unimplemented border style: inset");
break;
case s.AnnotationBorderStyleType.UNDERLINE:
a.style.borderBottomStyle = "solid"
}
t.color ? a.style.borderColor = s.Util.makeCssRgb(0 | t.color[0], 0 | t.color[1], 0 | t.color[2]) : a.style.borderWidth = 0
}
a.style.left = l[0] + "px";
a.style.top = l[1] + "px";
a.style.width = i + "px";
a.style.height = o + "px";
return a
}
_createPopup(e, t, r) {
if (!t) {
(t = document.createElement("div")).style.height = e.style.height;
t.style.width = e.style.width;
e.appendChild(t)
}
const n = new PopupElement({
container: e,
trigger: t,
color: r.color,
title: r.title,
modificationDate: r.modificationDate,
contents: r.contents,
hideWrapper: !0
}).render();
n.style.left = e.style.width;
e.appendChild(n)
}
render() {
(0,
s.unreachable)("Abstract method `AnnotationElement.render` called")
}
}
class LinkAnnotationElement extends AnnotationElement {
constructor(e) {
super(e, !!(e.data.url || e.data.dest || e.data.action))
}
render() {
this.container.className = "linkAnnotation";
const {data: e, linkService: t} = this
, r = document.createElement("a");
e.url ? (0,
n.addLinkAttributes)(r, {
url: e.url,
target: e.newWindow ? n.LinkTarget.BLANK : t.externalLinkTarget,
rel: t.externalLinkRel,
enabled: t.externalLinkEnabled
}) : e.action ? this._bindNamedAction(r, e.action) : this._bindLink(r, e.dest);
this.container.appendChild(r);
return this.container
}
_bindLink(e, t) {
e.href = this.linkService.getDestinationHash(t);
e.onclick = ()=>{
t && this.linkService.navigateTo(t);
return !1
}
;
t && (e.className = "internalLink")
}
_bindNamedAction(e, t) {
e.href = this.linkService.getAnchorUrl("");
e.onclick = ()=>{
this.linkService.executeNamedAction(t);
return !1
}
;
e.className = "internalLink"
}
}
class TextAnnotationElement extends AnnotationElement {
constructor(e) {
super(e, !!(e.data.hasPopup || e.data.title || e.data.contents))
}
render() {
this.container.className = "textAnnotation";
const e = document.createElement("img");
e.style.height = this.container.style.height;
e.style.width = this.container.style.width;
e.src = this.imageResourcesPath + "annotation-" + this.data.name.toLowerCase() + ".svg";
e.alt = "[{{type}} Annotation]";
e.dataset.l10nId = "text_annotation_type";
e.dataset.l10nArgs = JSON.stringify({
type: this.data.name
});
this.data.hasPopup || this._createPopup(this.container, e, this.data);
this.container.appendChild(e);
return this.container
}
}
class WidgetAnnotationElement extends AnnotationElement {
render() {
return this.container
}
}
class TextWidgetAnnotationElement extends WidgetAnnotationElement {
constructor(e) {
super(e, e.renderInteractiveForms || !e.data.hasAppearance && !!e.data.fieldValue)
}
render() {
const e = ["left", "center", "right"]
, t = this.annotationStorage
, r = this.data.id;
this.container.className = "textWidgetAnnotation";
let n = null;
if (this.renderInteractiveForms) {
const e = t.getOrCreateValue(r, this.data.fieldValue);
if (this.data.multiLine) {
n = document.createElement("textarea");
n.textContent = e
} else {
n = document.createElement("input");
n.type = "text";
n.setAttribute("value", e)
}
n.addEventListener("input", (function(e) {
t.setValue(r, e.target.value)
}
));
n.disabled = this.data.readOnly;
n.name = this.data.fieldName;
null !== this.data.maxLen && (n.maxLength = this.data.maxLen);
if (this.data.comb) {
const e = (this.data.rect[2] - this.data.rect[0]) / this.data.maxLen;
n.classList.add("comb");
n.style.letterSpacing = `calc(${e}px - 1ch)`
}
} else {
n = document.createElement("div");
n.textContent = this.data.fieldValue;
n.style.verticalAlign = "middle";
n.style.display = "table-cell";
let e = null;
this.data.fontRefName && this.page.commonObjs.has(this.data.fontRefName) && (e = this.page.commonObjs.get(this.data.fontRefName));
this._setTextStyle(n, e)
}
null !== this.data.textAlignment && (n.style.textAlign = e[this.data.textAlignment]);
this.container.appendChild(n);
return this.container
}
_setTextStyle(e, t) {
const r = e.style;
r.fontSize = this.data.fontSize + "px";
r.direction = this.data.fontDirection < 0 ? "rtl" : "ltr";
if (!t)
return;
let n = "normal";
t.black ? n = "900" : t.bold && (n = "bold");
r.fontWeight = n;
r.fontStyle = t.italic ? "italic" : "normal";
const s = t.loadedName ? `"${t.loadedName}", ` : ""
, a = t.fallbackName || "Helvetica, sans-serif";
r.fontFamily = s + a
}
}
class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
constructor(e) {
super(e, e.renderInteractiveForms)
}
render() {
const e = this.annotationStorage
, t = this.data
, r = t.id
, n = e.getOrCreateValue(r, t.fieldValue && "Off" !== t.fieldValue);
this.container.className = "buttonWidgetAnnotation checkBox";
const s = document.createElement("input");
s.disabled = t.readOnly;
s.type = "checkbox";
s.name = this.data.fieldName;
n && s.setAttribute("checked", !0);
s.addEventListener("change", (function(t) {
e.setValue(r, t.target.checked)
}
));
this.container.appendChild(s);
return this.container
}
}
class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
constructor(e) {
super(e, e.renderInteractiveForms)
}
render() {
this.container.className = "buttonWidgetAnnotation radioButton";
const e = this.annotationStorage
, t = this.data
, r = t.id
, n = e.getOrCreateValue(r, t.fieldValue === t.buttonValue)
, s = document.createElement("input");
s.disabled = t.readOnly;
s.type = "radio";
s.name = t.fieldName;
n && s.setAttribute("checked", !0);
s.addEventListener("change", (function(t) {
const n = t.target.name;
for (const r of document.getElementsByName(n))
r !== t.target && e.setValue(r.parentNode.getAttribute("data-annotation-id"), !1);
e.setValue(r, t.target.checked)
}
));
this.container.appendChild(s);
return this.container
}
}
class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {
render() {
const e = super.render();
e.className = "buttonWidgetAnnotation pushButton";
return e
}
}
class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
constructor(e) {
super(e, e.renderInteractiveForms)
}
render() {
this.container.className = "choiceWidgetAnnotation";
const e = this.annotationStorage
, t = this.data.id;
e.getOrCreateValue(t, this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null);
const r = document.createElement("select");
r.disabled = this.data.readOnly;
r.name = this.data.fieldName;
if (!this.data.combo) {
r.size = this.data.options.length;
this.data.multiSelect && (r.multiple = !0)
}
for (const e of this.data.options) {
const t = document.createElement("option");
t.textContent = e.displayValue;
t.value = e.exportValue;
this.data.fieldValue.includes(e.exportValue) && t.setAttribute("selected", !0);
r.appendChild(t)
}
r.addEventListener("input", (function(r) {
const n = r.target.options
, s = n[n.selectedIndex].value;
e.setValue(t, s)
}
));
this.container.appendChild(r);
return this.container
}
}
class PopupAnnotationElement extends AnnotationElement {
constructor(e) {
super(e, !(!e.data.title && !e.data.contents))
}
render() {
this.container.className = "popupAnnotation";
if (["Line", "Square", "Circle", "PolyLine", "Polygon", "Ink"].includes(this.data.parentType))
return this.container;
const e = `[data-annotation-id="${this.data.parentId}"]`
, t = this.layer.querySelector(e);
if (!t)
return this.container;
const r = new PopupElement({
container: this.container,
trigger: t,
color: this.data.color,
title: this.data.title,
modificationDate: this.data.modificationDate,
contents: this.data.contents
})
, n = parseFloat(t.style.left)
, s = parseFloat(t.style.width);
this.container.style.transformOrigin = `-${n + s}px -${t.style.top}`;
this.container.style.left = n + s + "px";
this.container.appendChild(r.render());
return this.container
}
}
class PopupElement {
constructor(e) {
this.container = e.container;
this.trigger = e.trigger;
this.color = e.color;
this.title = e.title;
this.modificationDate = e.modificationDate;
this.contents = e.contents;
this.hideWrapper = e.hideWrapper || !1;
this.pinned = !1
}
render() {
const e = document.createElement("div");
e.className = "popupWrapper";
this.hideElement = this.hideWrapper ? e : this.container;
this.hideElement.setAttribute("hidden", !0);
const t = document.createElement("div");
t.className = "popup";
const r = this.color;
if (r) {
const e = .7 * (255 - r[0]) + r[0]
, n = .7 * (255 - r[1]) + r[1]
, a = .7 * (255 - r[2]) + r[2];
t.style.backgroundColor = s.Util.makeCssRgb(0 | e, 0 | n, 0 | a)
}
const a = document.createElement("h1");
a.textContent = this.title;
t.appendChild(a);
const i = n.PDFDateString.toDateObject(this.modificationDate);
if (i) {
const e = document.createElement("span");
e.textContent = "{{date}}, {{time}}";
e.dataset.l10nId = "annotation_date_string";
e.dataset.l10nArgs = JSON.stringify({
date: i.toLocaleDateString(),
time: i.toLocaleTimeString()
});
t.appendChild(e)
}
const o = this._formatContents(this.contents);
t.appendChild(o);
this.trigger.addEventListener("click", this._toggle.bind(this));
this.trigger.addEventListener("mouseover", this._show.bind(this, !1));
this.trigger.addEventListener("mouseout", this._hide.bind(this, !1));
t.addEventListener("click", this._hide.bind(this, !0));
e.appendChild(t);
return e
}
_formatContents(e) {
const t = document.createElement("p")
, r = e.split(/(?:\r\n?|\n)/);
for (let e = 0, n = r.length; e < n; ++e) {
const s = r[e];
t.appendChild(document.createTextNode(s));
e < n - 1 && t.appendChild(document.createElement("br"))
}
return t
}
_toggle() {
this.pinned ? this._hide(!0) : this._show(!0)
}
_show(e=!1) {
e && (this.pinned = !0);
if (this.hideElement.hasAttribute("hidden")) {
this.hideElement.removeAttribute("hidden");
this.container.style.zIndex += 1
}
}
_hide(e=!0) {
e && (this.pinned = !1);
if (!this.hideElement.hasAttribute("hidden") && !this.pinned) {
this.hideElement.setAttribute("hidden", !0);
this.container.style.zIndex -= 1
}
}
}
class FreeTextAnnotationElement extends AnnotationElement {
constructor(e) {
super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
}
render() {
this.container.className = "freeTextAnnotation";
this.data.hasPopup || this._createPopup(this.container, null, this.data);
return this.container
}
}
class LineAnnotationElement extends AnnotationElement {
constructor(e) {
super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
}
render() {
this.container.className = "lineAnnotation";
const e = this.data
, t = e.rect[2] - e.rect[0]
, r = e.rect[3] - e.rect[1]
, n = this.svgFactory.create(t, r)
, s = this.svgFactory.createElement("svg:line");
s.setAttribute("x1", e.rect[2] - e.lineCoordinates[0]);
s.setAttribute("y1", e.rect[3] - e.lineCoordinates[1]);
s.setAttribute("x2", e.rect[2] - e.lineCoordinates[2]);
s.setAttribute("y2", e.rect[3] - e.lineCoordinates[3]);
s.setAttribute("stroke-width", e.borderStyle.width || 1);
s.setAttribute("stroke", "transparent");
n.appendChild(s);
this.container.append(n);
this._createPopup(this.container, s, e);
return this.container
}
}
class SquareAnnotationElement extends AnnotationElement {
constructor(e) {
super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
}
render() {
this.container.className = "squareAnnotation";
const e = this.data
, t = e.rect[2] - e.rect[0]
, r = e.rect[3] - e.rect[1]
, n = this.svgFactory.create(t, r)
, s = e.borderStyle.width
, a = this.svgFactory.createElement("svg:rect");
a.setAttribute("x", s / 2);
a.setAttribute("y", s / 2);
a.setAttribute("width", t - s);
a.setAttribute("height", r - s);
a.setAttribute("stroke-width", s || 1);
a.setAttribute("stroke", "transparent");
a.setAttribute("fill", "none");
n.appendChild(a);
this.container.append(n);
this._createPopup(this.container, a, e);
return this.container
}
}
class CircleAnnotationElement extends AnnotationElement {
constructor(e) {
super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
}
render() {
this.container.className = "circleAnnotation";
const e = this.data
, t = e.rect[2] - e.rect[0]
, r = e.rect[3] - e.rect[1]
, n = this.svgFactory.create(t, r)
, s = e.borderStyle.width
, a = this.svgFactory.createElement("svg:ellipse");
a.setAttribute("cx", t / 2);
a.setAttribute("cy", r / 2);
a.setAttribute("rx", t / 2 - s / 2);
a.setAttribute("ry", r / 2 - s / 2);
a.setAttribute("stroke-width", s || 1);
a.setAttribute("stroke", "transparent");
a.setAttribute("fill", "none");
n.appendChild(a);
this.container.append(n);
this._createPopup(this.container, a, e);
return this.container
}
}
class PolylineAnnotationElement extends AnnotationElement {
constructor(e) {
super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0);
this.containerClassName = "polylineAnnotation";
this.svgElementName = "svg:polyline"
}
render() {
this.container.className = this.containerClassName;
const e = this.data
, t = e.rect[2] - e.rect[0]
, r = e.rect[3] - e.rect[1]
, n = this.svgFactory.create(t, r);
let s = [];
for (const t of e.vertices) {
const r = t.x - e.rect[0]
, n = e.rect[3] - t.y;
s.push(r + "," + n)
}
s = s.join(" ");
const a = this.svgFactory.createElement(this.svgElementName);
a.setAttribute("points", s);
a.setAttribute("stroke-width", e.borderStyle.width || 1);
a.setAttribute("stroke", "transparent");
a.setAttribute("fill", "none");
n.appendChild(a);
this.container.append(n);
this._createPopup(this.container, a, e);
return this.container
}
}
class PolygonAnnotationElement extends PolylineAnnotationElement {
constructor(e) {
super(e);
this.containerClassName = "polygonAnnotation";
this.svgElementName = "svg:polygon"
}
}
class CaretAnnotationElement extends AnnotationElement {
constructor(e) {
super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
}
render() {
this.container.className = "caretAnnotation";
this.data.hasPopup || this._createPopup(this.container, null, this.data);
return this.container
}
}
class InkAnnotationElement extends AnnotationElement {
constructor(e) {
super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0);
this.containerClassName = "inkAnnotation";
this.svgElementName = "svg:polyline"
}
render() {
this.container.className = this.containerClassName;
const e = this.data
, t = e.rect[2] - e.rect[0]
, r = e.rect[3] - e.rect[1]
, n = this.svgFactory.create(t, r);
for (const t of e.inkLists) {
let r = [];
for (const n of t) {
const t = n.x - e.rect[0]
, s = e.rect[3] - n.y;
r.push(`${t},${s}`)
}
r = r.join(" ");
const s = this.svgFactory.createElement(this.svgElementName);
s.setAttribute("points", r);
s.setAttribute("stroke-width", e.borderStyle.width || 1);
s.setAttribute("stroke", "transparent");
s.setAttribute("fill", "none");
this._createPopup(this.container, s, e);
n.appendChild(s)
}
this.container.append(n);
return this.container
}
}
class HighlightAnnotationElement extends AnnotationElement {
constructor(e) {
super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
}
render() {
this.container.className = "highlightAnnotation";
this.data.hasPopup || this._createPopup(this.container, null, this.data);
return this.container
}
}
class UnderlineAnnotationElement extends AnnotationElement {
constructor(e) {
super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
}
render() {
this.container.className = "underlineAnnotation";
this.data.hasPopup || this._createPopup(this.container, null, this.data);
return this.container
}
}
class SquigglyAnnotationElement extends AnnotationElement {
constructor(e) {
super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
}
render() {
this.container.className = "squigglyAnnotation";
this.data.hasPopup || this._createPopup(this.container, null, this.data);
return this.container
}
}
class StrikeOutAnnotationElement extends AnnotationElement {
constructor(e) {
super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
}
render() {
this.container.className = "strikeoutAnnotation";
this.data.hasPopup || this._createPopup(this.container, null, this.data);
return this.container
}
}
class StampAnnotationElement extends AnnotationElement {
constructor(e) {
super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
}
render() {
this.container.className = "stampAnnotation";
this.data.hasPopup || this._createPopup(this.container, null, this.data);
return this.container
}
}
class FileAttachmentAnnotationElement extends AnnotationElement {
constructor(e) {
super(e, !0);
const {filename: t, content: r} = this.data.file;
this.filename = (0,
n.getFilenameFromUrl)(t);
this.content = r;
this.linkService.eventBus && this.linkService.eventBus.dispatch("fileattachmentannotation", {
source: this,
id: (0,
s.stringToPDFString)(t),
filename: t,
content: r
})
}
render() {
this.container.className = "fileAttachmentAnnotation";
const e = document.createElement("div");
e.style.height = this.container.style.height;
e.style.width = this.container.style.width;
e.addEventListener("dblclick", this._download.bind(this));
this.data.hasPopup || !this.data.title && !this.data.contents || this._createPopup(this.container, e, this.data);
this.container.appendChild(e);
return this.container
}
_download() {
this.downloadManager ? this.downloadManager.downloadData(this.content, this.filename, "") : (0,
s.warn)("Download cannot be started due to unavailable download manager")
}
}
t.AnnotationLayer = class AnnotationLayer {
static render(e) {
const t = []
, r = [];
for (const n of e.annotations)
n && (n.annotationType !== s.AnnotationType.POPUP ? t.push(n) : r.push(n));
r.length && t.push(...r);
for (const r of t) {
const t = AnnotationElementFactory.create({
data: r,
layer: e.div,
page: e.page,
viewport: e.viewport,
linkService: e.linkService,
downloadManager: e.downloadManager,
imageResourcesPath: e.imageResourcesPath || "",
renderInteractiveForms: "boolean" != typeof e.renderInteractiveForms || e.renderInteractiveForms,
svgFactory: new n.DOMSVGFactory,
annotationStorage: e.annotationStorage || new a.AnnotationStorage
});
t.isRenderable && e.div.appendChild(t.render())
}
}
static update(e) {
for (const t of e.annotations) {
const r = e.div.querySelector(`[data-annotation-id="${t.id}"]`);
r && (r.style.transform = `matrix(${e.viewport.transform.join(",")})`)
}
e.div.removeAttribute("hidden")
}
}
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.renderTextLayer = void 0;
var n = r(2)
, s = function renderTextLayerClosure() {
var e = /\S/;
function appendText(t, r, s) {
var a = document.createElement("span")
, i = {
angle: 0,
canvasWidth: 0,
isWhitespace: !1,
originalTransform: null,
paddingBottom: 0,
paddingLeft: 0,
paddingRight: 0,
paddingTop: 0,
scale: 1
};
t._textDivs.push(a);
if (function isAllWhitespace(t) {
return !e.test(t)
}(r.str)) {
i.isWhitespace = !0;
t._textDivProperties.set(a, i);
return
}
var o = n.Util.transform(t._viewport.transform, r.transform)
, l = Math.atan2(o[1], o[0])
, c = s[r.fontName];
c.vertical && (l += Math.PI / 2);
var h = Math.sqrt(o[2] * o[2] + o[3] * o[3])
, d = h;
c.ascent ? d = c.ascent * d : c.descent && (d = (1 + c.descent) * d);
let u, p;
if (0 === l) {
u = o[4];
p = o[5] - d
} else {
u = o[4] + d * Math.sin(l);
p = o[5] - d * Math.cos(l)
}
a.style.left = u + "px";
a.style.top = p + "px";
a.style.fontSize = h + "px";
a.style.fontFamily = c.fontFamily;
a.textContent = r.str;
t._fontInspectorEnabled && (a.dataset.fontName = r.fontName);
0 !== l && (i.angle = l * (180 / Math.PI));
let f = !1;
if (r.str.length > 1)
f = !0;
else if (r.transform[0] !== r.transform[3]) {
const e = Math.abs(r.transform[0])
, t = Math.abs(r.transform[3]);
e !== t && Math.max(e, t) / Math.min(e, t) > 1.5 && (f = !0)
}
f && (c.vertical ? i.canvasWidth = r.height * t._viewport.scale : i.canvasWidth = r.width * t._viewport.scale);
t._textDivProperties.set(a, i);
t._textContentStream && t._layoutText(a);
if (t._enhanceTextSelection) {
var g = 1
, m = 0;
if (0 !== l) {
g = Math.cos(l);
m = Math.sin(l)
}
var _, A, b = (c.vertical ? r.height : r.width) * t._viewport.scale, y = h;
if (0 !== l) {
_ = [g, m, -m, g, u, p];
A = n.Util.getAxialAlignedBoundingBox([0, 0, b, y], _)
} else
A = [u, p, u + b, p + y];
t._bounds.push({
left: A[0],
top: A[1],
right: A[2],
bottom: A[3],
div: a,
size: [b, y],
m: _
})
}
}
function render(e) {
if (!e._canceled) {
var t = e._textDivs
, r = e._capability
, n = t.length;
if (n > 1e5) {
e._renderingDone = !0;
r.resolve()
} else {
if (!e._textContentStream)
for (var s = 0; s < n; s++)
e._layoutText(t[s]);
e._renderingDone = !0;
r.resolve()
}
}
}
function findPositiveMin(e, t, r) {
let n = 0;
for (let s = 0; s < r; s++) {
const r = e[t++];
r > 0 && (n = n ? Math.min(r, n) : r)
}
return n
}
function expand(e) {
for (var t = e._bounds, r = e._viewport, s = function expandBounds(e, t, r) {
var n = r.map((function(e, t) {
return {
x1: e.left,
y1: e.top,
x2: e.right,
y2: e.bottom,
index: t,
x1New: void 0,
x2New: void 0
}
}
));
expandBoundsLTR(e, n);
var s = new Array(r.length);
n.forEach((function(e) {
var t = e.index;
s[t] = {
left: e.x1New,
top: 0,
right: e.x2New,
bottom: 0
}
}
));
r.map((function(t, r) {
var a = s[r]
, i = n[r];
i.x1 = t.top;
i.y1 = e - a.right;
i.x2 = t.bottom;
i.y2 = e - a.left;
i.index = r;
i.x1New = void 0;
i.x2New = void 0
}
));
expandBoundsLTR(t, n);
n.forEach((function(e) {
var t = e.index;
s[t].top = e.x1New;
s[t].bottom = e.x2New
}
));
return s
}(r.width, r.height, t), a = 0; a < s.length; a++) {
var i = t[a].div
, o = e._textDivProperties.get(i);
if (0 !== o.angle) {
var l = s[a]
, c = t[a]
, h = c.m
, d = h[0]
, u = h[1]
, p = [[0, 0], [0, c.size[1]], [c.size[0], 0], c.size]
, f = new Float64Array(64);
p.forEach((function(e, t) {
var r = n.Util.applyTransform(e, h);
f[t + 0] = d && (l.left - r[0]) / d;
f[t + 4] = u && (l.top - r[1]) / u;
f[t + 8] = d && (l.right - r[0]) / d;
f[t + 12] = u && (l.bottom - r[1]) / u;
f[t + 16] = u && (l.left - r[0]) / -u;
f[t + 20] = d && (l.top - r[1]) / d;
f[t + 24] = u && (l.right - r[0]) / -u;
f[t + 28] = d && (l.bottom - r[1]) / d;
f[t + 32] = d && (l.left - r[0]) / -d;
f[t + 36] = u && (l.top - r[1]) / -u;
f[t + 40] = d && (l.right - r[0]) / -d;
f[t + 44] = u && (l.bottom - r[1]) / -u;
f[t + 48] = u && (l.left - r[0]) / u;
f[t + 52] = d && (l.top - r[1]) / -d;
f[t + 56] = u && (l.right - r[0]) / u;
f[t + 60] = d && (l.bottom - r[1]) / -d
}
));
var g = 1 + Math.min(Math.abs(d), Math.abs(u));
o.paddingLeft = findPositiveMin(f, 32, 16) / g;
o.paddingTop = findPositiveMin(f, 48, 16) / g;
o.paddingRight = findPositiveMin(f, 0, 16) / g;
o.paddingBottom = findPositiveMin(f, 16, 16) / g;
e._textDivProperties.set(i, o)
} else {
o.paddingLeft = t[a].left - s[a].left;
o.paddingTop = t[a].top - s[a].top;
o.paddingRight = s[a].right - t[a].right;
o.paddingBottom = s[a].bottom - t[a].bottom;
e._textDivProperties.set(i, o)
}
}
}
function expandBoundsLTR(e, t) {
t.sort((function(e, t) {
return e.x1 - t.x1 || e.index - t.index
}
));
var r = [{
start: -1 / 0,
end: 1 / 0,
boundary: {
x1: -1 / 0,
y1: -1 / 0,
x2: 0,
y2: 1 / 0,
index: -1,
x1New: 0,
x2New: 0
}
}];
t.forEach((function(e) {
for (var t = 0; t < r.length && r[t].end <= e.y1; )
t++;
for (var n, s, a = r.length - 1; a >= 0 && r[a].start >= e.y2; )
a--;
var i, o, l = -1 / 0;
for (i = t; i <= a; i++) {
var c;
(c = (s = (n = r[i]).boundary).x2 > e.x1 ? s.index > e.index ? s.x1New : e.x1 : void 0 === s.x2New ? (s.x2 + e.x1) / 2 : s.x2New) > l && (l = c)
}
e.x1New = l;
for (i = t; i <= a; i++)
void 0 === (s = (n = r[i]).boundary).x2New ? s.x2 > e.x1 ? s.index > e.index && (s.x2New = s.x2) : s.x2New = l : s.x2New > l && (s.x2New = Math.max(l, s.x2));
var h = []
, d = null;
for (i = t; i <= a; i++) {
var u = (s = (n = r[i]).boundary).x2 > e.x2 ? s : e;
if (d === u)
h[h.length - 1].end = n.end;
else {
h.push({
start: n.start,
end: n.end,
boundary: u
});
d = u
}
}
if (r[t].start < e.y1) {
h[0].start = e.y1;
h.unshift({
start: r[t].start,
end: e.y1,
boundary: r[t].boundary
})
}
if (e.y2 < r[a].end) {
h[h.length - 1].end = e.y2;
h.push({
start: e.y2,
end: r[a].end,
boundary: r[a].boundary
})
}
for (i = t; i <= a; i++)
if (void 0 === (s = (n = r[i]).boundary).x2New) {
var p = !1;
for (o = t - 1; !p && o >= 0 && r[o].start >= s.y1; o--)
p = r[o].boundary === s;
for (o = a + 1; !p && o < r.length && r[o].end <= s.y2; o++)
p = r[o].boundary === s;
for (o = 0; !p && o < h.length; o++)
p = h[o].boundary === s;
p || (s.x2New = l)
}
Array.prototype.splice.apply(r, [t, a - t + 1].concat(h))
}
));
r.forEach((function(t) {
var r = t.boundary;
void 0 === r.x2New && (r.x2New = Math.max(e, r.x2))
}
))
}
function TextLayerRenderTask({textContent: e, textContentStream: t, container: r, viewport: s, textDivs: a, textContentItemsStr: i, enhanceTextSelection: o}) {
this._textContent = e;
this._textContentStream = t;
this._container = r;
this._document = r.ownerDocument;
this._viewport = s;
this._textDivs = a || [];
this._textContentItemsStr = i || [];
this._enhanceTextSelection = !!o;
this._fontInspectorEnabled = !(!globalThis.FontInspector || !globalThis.FontInspector.enabled);
this._reader = null;
this._layoutTextLastFontSize = null;
this._layoutTextLastFontFamily = null;
this._layoutTextCtx = null;
this._textDivProperties = new WeakMap;
this._renderingDone = !1;
this._canceled = !1;
this._capability = (0,
n.createPromiseCapability)();
this._renderTimer = null;
this._bounds = [];
this._capability.promise.finally(()=>{
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
},
cancel: function TextLayer_cancel() {
this._canceled = !0;
if (this._reader) {
this._reader.cancel(new n.AbortException("TextLayer task cancelled."));
this._reader = null
}
if (null !== this._renderTimer) {
clearTimeout(this._renderTimer);
this._renderTimer = null
}
this._capability.reject(new Error("TextLayer task cancelled."))
},
_processItems(e, t) {
for (let r = 0, n = e.length; r < n; r++) {
this._textContentItemsStr.push(e[r].str);
appendText(this, e[r], t)
}
},
_layoutText(e) {
const t = this._textDivProperties.get(e);
if (t.isWhitespace)
return;
let r = "";
if (0 !== t.canvasWidth) {
const {fontSize: n, fontFamily: s} = e.style;
if (n !== this._layoutTextLastFontSize || s !== this._layoutTextLastFontFamily) {
this._layoutTextCtx.font = `${n} ${s}`;
this._layoutTextLastFontSize = n;
this._layoutTextLastFontFamily = s
}
const {width: a} = this._layoutTextCtx.measureText(e.textContent);
if (a > 0) {
t.scale = t.canvasWidth / a;
r = `scaleX(${t.scale})`
}
}
0 !== t.angle && (r = `rotate(${t.angle}deg) ${r}`);
if (r.length > 0) {
this._enhanceTextSelection && (t.originalTransform = r);
e.style.transform = r
}
this._textDivProperties.set(e, t);
this._container.appendChild(e)
},
_render: function TextLayer_render(e) {
const t = (0,
n.createPromiseCapability)();
let r = Object.create(null);
const s = this._document.createElement("canvas");
s.mozOpaque = !0;
this._layoutTextCtx = s.getContext("2d", {
alpha: !1
});
if (this._textContent) {
const e = this._textContent.items
, r = this._textContent.styles;
this._processItems(e, r);
t.resolve()
} else {
if (!this._textContentStream)
throw new Error('Neither "textContent" nor "textContentStream" parameters specified.');
{
const pump = ()=>{
this._reader.read().then(({value: e, done: n})=>{
if (n)
t.resolve();
else {
Object.assign(r, e.styles);
this._processItems(e.items, r);
pump()
}
}
, t.reject)
}
;
this._reader = this._textContentStream.getReader();
pump()
}
}
t.promise.then(()=>{
r = null;
e ? this._renderTimer = setTimeout(()=>{
render(this);
this._renderTimer = null
}
, e) : render(this)
}
, this._capability.reject)
},
expandTextDivs: function TextLayer_expandTextDivs(e) {
if (!this._enhanceTextSelection || !this._renderingDone)
return;
if (null !== this._bounds) {
expand(this);
this._bounds = null
}
const t = []
, r = [];
for (var n = 0, s = this._textDivs.length; n < s; n++) {
const s = this._textDivs[n]
, a = this._textDivProperties.get(s);
if (!a.isWhitespace)
if (e) {
t.length = 0;
r.length = 0;
a.originalTransform && t.push(a.originalTransform);
if (a.paddingTop > 0) {
r.push(a.paddingTop + "px");
t.push(`translateY(${-a.paddingTop}px)`)
} else
r.push(0);
a.paddingRight > 0 ? r.push(a.paddingRight / a.scale + "px") : r.push(0);
a.paddingBottom > 0 ? r.push(a.paddingBottom + "px") : r.push(0);
if (a.paddingLeft > 0) {
r.push(a.paddingLeft / a.scale + "px");
t.push(`translateX(${-a.paddingLeft / a.scale}px)`)
} else
r.push(0);
s.style.padding = r.join(" ");
t.length && (s.style.transform = t.join(" "))
} else {
s.style.padding = null;
s.style.transform = a.originalTransform
}
}
}
};
return function renderTextLayer(e) {
var t = new TextLayerRenderTask({
textContent: e.textContent,
textContentStream: e.textContentStream,
container: e.container,
viewport: e.viewport,
textDivs: e.textDivs,
textContentItemsStr: e.textContentItemsStr,
enhanceTextSelection: e.enhanceTextSelection
});
t._render(e.timeout);
return t
}
}();
t.renderTextLayer = s
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.SVGGraphics = void 0;
var n = r(2)
, s = r(1)
, a = r(4);
let SVGGraphics = function() {
throw new Error("Not implemented: SVGGraphics")
};
t.SVGGraphics = SVGGraphics;
{
const e = {
fontStyle: "normal",
fontWeight: "normal",
fillColor: "#000000"
}
, r = "http://www.w3.org/XML/1998/namespace"
, i = "http://www.w3.org/1999/xlink"
, o = ["butt", "round", "square"]
, l = ["miter", "round", "bevel"]
, c = function() {
const e = new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10])
, t = new Int32Array(256);
for (let e = 0; e < 256; e++) {
let r = e;
for (let e = 0; e < 8; e++)
r = 1 & r ? 3988292384 ^ r >> 1 & 2147483647 : r >> 1 & 2147483647;
t[e] = r
}
function writePngChunk(e, r, n, s) {
let a = s;
const i = r.length;
n[a] = i >> 24 & 255;
n[a + 1] = i >> 16 & 255;
n[a + 2] = i >> 8 & 255;
n[a + 3] = 255 & i;
a += 4;
n[a] = 255 & e.charCodeAt(0);
n[a + 1] = 255 & e.charCodeAt(1);
n[a + 2] = 255 & e.charCodeAt(2);
n[a + 3] = 255 & e.charCodeAt(3);
a += 4;
n.set(r, a);
a += r.length;
const o = function crc32(e, r, n) {
let s = -1;
for (let a = r; a < n; a++) {
const r = 255 & (s ^ e[a]);
s = s >>> 8 ^ t[r]
}
return -1 ^ s
}(n, s + 4, a);
n[a] = o >> 24 & 255;
n[a + 1] = o >> 16 & 255;
n[a + 2] = o >> 8 & 255;
n[a + 3] = 255 & o
}
function deflateSyncUncompressed(e) {
let t = e.length;
const r = Math.ceil(t / 65535)
, n = new Uint8Array(2 + t + 5 * r + 4);
let s = 0;
n[s++] = 120;
n[s++] = 156;
let a = 0;
for (; t > 65535; ) {
n[s++] = 0;
n[s++] = 255;
n[s++] = 255;
n[s++] = 0;
n[s++] = 0;
n.set(e.subarray(a, a + 65535), s);
s += 65535;
a += 65535;
t -= 65535
}
n[s++] = 1;
n[s++] = 255 & t;
n[s++] = t >> 8 & 255;
n[s++] = 255 & ~t;
n[s++] = (65535 & ~t) >> 8 & 255;
n.set(e.subarray(a), s);
s += e.length - a;
const i = function adler32(e, t, r) {
let n = 1
, s = 0;
for (let a = t; a < r; ++a) {
n = (n + (255 & e[a])) % 65521;
s = (s + n) % 65521
}
return s << 16 | n
}(e, 0, e.length);
n[s++] = i >> 24 & 255;
n[s++] = i >> 16 & 255;
n[s++] = i >> 8 & 255;
n[s++] = 255 & i;
return n
}
function encode(t, r, s, i) {
const o = t.width
, l = t.height;
let c, h, d;
const u = t.data;
switch (r) {
case n.ImageKind.GRAYSCALE_1BPP:
h = 0;
c = 1;
d = o + 7 >> 3;
break;
case n.ImageKind.RGB_24BPP:
h = 2;
c = 8;
d = 3 * o;
break;
case n.ImageKind.RGBA_32BPP:
h = 6;
c = 8;
d = 4 * o;
break;
default:
throw new Error("invalid format")
}
const p = new Uint8Array((1 + d) * l);
let f = 0
, g = 0;
for (let e = 0; e < l; ++e) {
p[f++] = 0;
p.set(u.subarray(g, g + d), f);
g += d;
f += d
}
if (r === n.ImageKind.GRAYSCALE_1BPP && i) {
f = 0;
for (let e = 0; e < l; e++) {
f++;
for (let e = 0; e < d; e++)
p[f++] ^= 255
}
}
const m = new Uint8Array([o >> 24 & 255, o >> 16 & 255, o >> 8 & 255, 255 & o, l >> 24 & 255, l >> 16 & 255, l >> 8 & 255, 255 & l, c, h, 0, 0, 0])
, _ = function deflateSync(e) {
if (!a.isNodeJS)
return deflateSyncUncompressed(e);
try {
let t;
t = parseInt(process.versions.node) >= 8 ? e : Buffer.from(e);
const r = require("zlib").deflateSync(t, {
level: 9
});
return r instanceof Uint8Array ? r : new Uint8Array(r)
} catch (e) {
(0,
n.warn)("Not compressing PNG because zlib.deflateSync is unavailable: " + e)
}
return deflateSyncUncompressed(e)
}(p)
, A = e.length + 36 + m.length + _.length
, b = new Uint8Array(A);
let y = 0;
b.set(e, y);
y += e.length;
writePngChunk("IHDR", m, b, y);
y += 12 + m.length;
writePngChunk("IDATA", _, b, y);
y += 12 + _.length;
writePngChunk("IEND", new Uint8Array(0), b, y);
return (0,
n.createObjectURL)(b, "image/png", s)
}
return function convertImgDataToPng(e, t, r) {
return encode(e, void 0 === e.kind ? n.ImageKind.GRAYSCALE_1BPP : e.kind, t, r)
}
}();
class SVGExtraState {
constructor() {
this.fontSizeScale = 1;
this.fontWeight = e.fontWeight;
this.fontSize = 0;
this.textMatrix = n.IDENTITY_MATRIX;
this.fontMatrix = n.FONT_IDENTITY_MATRIX;
this.leading = 0;
this.textRenderingMode = n.TextRenderingMode.FILL;
this.textMatrixScale = 1;
this.x = 0;
this.y = 0;
this.lineX = 0;
this.lineY = 0;
this.charSpacing = 0;
this.wordSpacing = 0;
this.textHScale = 1;
this.textRise = 0;
this.fillColor = e.fillColor;
this.strokeColor = "#000000";
this.fillAlpha = 1;
this.strokeAlpha = 1;
this.lineWidth = 1;
this.lineJoin = "";
this.lineCap = "";
this.miterLimit = 0;
this.dashArray = [];
this.dashPhase = 0;
this.dependencies = [];
this.activeClipUrl = null;
this.clipGroup = null;
this.maskId = ""
}
clone() {
return Object.create(this)
}
setCurrentPoint(e, t) {
this.x = e;
this.y = t
}
}
function pf(e) {
if (Number.isInteger(e))
return e.toString();
const t = e.toFixed(10);
let r = t.length - 1;
if ("0" !== t[r])
return t;
do {
r--
} while ("0" === t[r]);
return t.substring(0, "." === t[r] ? r : r + 1)
}
function pm(e) {
if (0 === e[4] && 0 === e[5]) {
if (0 === e[1] && 0 === e[2])
return 1 === e[0] && 1 === e[3] ? "" : `scale(${pf(e[0])} ${pf(e[3])})`;
if (e[0] === e[3] && e[1] === -e[2]) {
return `rotate(${pf(180 * Math.acos(e[0]) / Math.PI)})`
}
} else if (1 === e[0] && 0 === e[1] && 0 === e[2] && 1 === e[3])
return `translate(${pf(e[4])} ${pf(e[5])})`;
return `matrix(${pf(e[0])} ${pf(e[1])} ${pf(e[2])} ${pf(e[3])} ${pf(e[4])} ` + pf(e[5]) + ")"
}
let h = 0
, d = 0
, u = 0;
t.SVGGraphics = SVGGraphics = class SVGGraphics {
constructor(e, t, r=!1) {
this.svgFactory = new s.DOMSVGFactory;
this.current = new SVGExtraState;
this.transformMatrix = n.IDENTITY_MATRIX;
this.transformStack = [];
this.extraStack = [];
this.commonObjs = e;
this.objs = t;
this.pendingClip = null;
this.pendingEOFill = !1;
this.embedFonts = !1;
this.embeddedFonts = Object.create(null);
this.cssStyle = null;
this.forceDataSchema = !!r;
this._operatorIdMapping = [];
for (const e in n.OPS)
this._operatorIdMapping[n.OPS[e]] = e
}
save() {
this.transformStack.push(this.transformMatrix);
const e = this.current;
this.extraStack.push(e);
this.current = e.clone()
}
restore() {
this.transformMatrix = this.transformStack.pop();
this.current = this.extraStack.pop();
this.pendingClip = null;
this.tgrp = null
}
group(e) {
this.save();
this.executeOpTree(e);
this.restore()
}
loadDependencies(e) {
const t = e.fnArray
, r = e.argsArray;
for (let e = 0, s = t.length; e < s; e++)
if (t[e] === n.OPS.dependency)
for (const t of r[e]) {
const e = t.startsWith("g_") ? this.commonObjs : this.objs
, r = new Promise(r=>{
e.get(t, r)
}
);
this.current.dependencies.push(r)
}
return Promise.all(this.current.dependencies)
}
transform(e, t, r, s, a, i) {
const o = [e, t, r, s, a, i];
this.transformMatrix = n.Util.transform(this.transformMatrix, o);
this.tgrp = null
}
getSVG(e, t) {
this.viewport = t;
const r = this._initialize(t);
return this.loadDependencies(e).then(()=>{
this.transformMatrix = n.IDENTITY_MATRIX;
this.executeOpTree(this.convertOpList(e));
return r
}
)
}
convertOpList(e) {
const t = this._operatorIdMapping
, r = e.argsArray
, n = e.fnArray
, s = [];
for (let e = 0, a = n.length; e < a; e++) {
const a = n[e];
s.push({
fnId: a,
fn: t[a],
args: r[e]
})
}
return function opListToTree(e) {
let t = [];
const r = [];
for (const n of e)
if ("save" !== n.fn)
"restore" === n.fn ? t = r.pop() : t.push(n);
else {
t.push({
fnId: 92,
fn: "group",
items: []
});
r.push(t);
t = t[t.length - 1].items
}
return t
}(s)
}
executeOpTree(e) {
for (const t of e) {
const e = t.fn
, r = t.fnId
, s = t.args;
switch (0 | r) {
case n.OPS.beginText:
this.beginText();
break;
case n.OPS.dependency:
break;
case n.OPS.setLeading:
this.setLeading(s);
break;
case n.OPS.setLeadingMoveText:
this.setLeadingMoveText(s[0], s[1]);
break;
case n.OPS.setFont:
this.setFont(s);
break;
case n.OPS.showText:
case n.OPS.showSpacedText:
this.showText(s[0]);
break;
case n.OPS.endText:
this.endText();
break;
case n.OPS.moveText:
this.moveText(s[0], s[1]);
break;
case n.OPS.setCharSpacing:
this.setCharSpacing(s[0]);
break;
case n.OPS.setWordSpacing:
this.setWordSpacing(s[0]);
break;
case n.OPS.setHScale:
this.setHScale(s[0]);
break;
case n.OPS.setTextMatrix:
this.setTextMatrix(s[0], s[1], s[2], s[3], s[4], s[5]);
break;
case n.OPS.setTextRise:
this.setTextRise(s[0]);
break;
case n.OPS.setTextRenderingMode:
this.setTextRenderingMode(s[0]);
break;
case n.OPS.setLineWidth:
this.setLineWidth(s[0]);
break;
case n.OPS.setLineJoin:
this.setLineJoin(s[0]);
break;
case n.OPS.setLineCap:
this.setLineCap(s[0]);
break;
case n.OPS.setMiterLimit:
this.setMiterLimit(s[0]);
break;
case n.OPS.setFillRGBColor:
this.setFillRGBColor(s[0], s[1], s[2]);
break;
case n.OPS.setStrokeRGBColor:
this.setStrokeRGBColor(s[0], s[1], s[2]);
break;
case n.OPS.setStrokeColorN:
this.setStrokeColorN(s);
break;
case n.OPS.setFillColorN:
this.setFillColorN(s);
break;
case n.OPS.shadingFill:
this.shadingFill(s[0]);
break;
case n.OPS.setDash:
this.setDash(s[0], s[1]);
break;
case n.OPS.setRenderingIntent:
this.setRenderingIntent(s[0]);
break;
case n.OPS.setFlatness:
this.setFlatness(s[0]);
break;
case n.OPS.setGState:
this.setGState(s[0]);
break;
case n.OPS.fill:
this.fill();
break;
case n.OPS.eoFill:
this.eoFill();
break;
case n.OPS.stroke:
this.stroke();
break;
case n.OPS.fillStroke:
this.fillStroke();
break;
case n.OPS.eoFillStroke:
this.eoFillStroke();
break;
case n.OPS.clip:
this.clip("nonzero");
break;
case n.OPS.eoClip:
this.clip("evenodd");
break;
case n.OPS.paintSolidColorImageMask:
this.paintSolidColorImageMask();
break;
case n.OPS.paintImageXObject:
this.paintImageXObject(s[0]);
break;
case n.OPS.paintInlineImageXObject:
this.paintInlineImageXObject(s[0]);
break;
case n.OPS.paintImageMaskXObject:
this.paintImageMaskXObject(s[0]);
break;
case n.OPS.paintFormXObjectBegin:
this.paintFormXObjectBegin(s[0], s[1]);
break;
case n.OPS.paintFormXObjectEnd:
this.paintFormXObjectEnd();
break;
case n.OPS.closePath:
this.closePath();
break;
case n.OPS.closeStroke:
this.closeStroke();
break;
case n.OPS.closeFillStroke:
this.closeFillStroke();
break;
case n.OPS.closeEOFillStroke:
this.closeEOFillStroke();
break;
case n.OPS.nextLine:
this.nextLine();
break;
case n.OPS.transform:
this.transform(s[0], s[1], s[2], s[3], s[4], s[5]);
break;
case n.OPS.constructPath:
this.constructPath(s[0], s[1]);
break;
case n.OPS.endPath:
this.endPath();
break;
case 92:
this.group(t.items);
break;
default:
(0,
n.warn)("Unimplemented operator " + e)
}
}
}
setWordSpacing(e) {
this.current.wordSpacing = e
}
setCharSpacing(e) {
this.current.charSpacing = e
}
nextLine() {
this.moveText(0, this.current.leading)
}
setTextMatrix(e, t, r, n, s, a) {
const i = this.current;
i.textMatrix = i.lineMatrix = [e, t, r, n, s, a];
i.textMatrixScale = Math.sqrt(e * e + t * t);
i.x = i.lineX = 0;
i.y = i.lineY = 0;
i.xcoords = [];
i.ycoords = [];
i.tspan = this.svgFactory.createElement("svg:tspan");
i.tspan.setAttributeNS(null, "font-family", i.fontFamily);
i.tspan.setAttributeNS(null, "font-size", pf(i.fontSize) + "px");
i.tspan.setAttributeNS(null, "y", pf(-i.y));
i.txtElement = this.svgFactory.createElement("svg:text");
i.txtElement.appendChild(i.tspan)
}
beginText() {
const e = this.current;
e.x = e.lineX = 0;
e.y = e.lineY = 0;
e.textMatrix = n.IDENTITY_MATRIX;
e.lineMatrix = n.IDENTITY_MATRIX;
e.textMatrixScale = 1;
e.tspan = this.svgFactory.createElement("svg:tspan");
e.txtElement = this.svgFactory.createElement("svg:text");
e.txtgrp = this.svgFactory.createElement("svg:g");
e.xcoords = [];
e.ycoords = []
}
moveText(e, t) {
const r = this.current;
r.x = r.lineX += e;
r.y = r.lineY += t;
r.xcoords = [];
r.ycoords = [];
r.tspan = this.svgFactory.createElement("svg:tspan");
r.tspan.setAttributeNS(null, "font-family", r.fontFamily);
r.tspan.setAttributeNS(null, "font-size", pf(r.fontSize) + "px");
r.tspan.setAttributeNS(null, "y", pf(-r.y))
}
showText(t) {
const s = this.current
, a = s.font
, i = s.fontSize;
if (0 === i)
return;
const o = s.fontSizeScale
, l = s.charSpacing
, c = s.wordSpacing
, h = s.fontDirection
, d = s.textHScale * h
, u = a.vertical
, p = u ? 1 : -1
, f = a.defaultVMetrics
, g = i * s.fontMatrix[0];
let m = 0;
for (const e of t) {
if (null === e) {
m += h * c;
continue
}
if ((0,
n.isNum)(e)) {
m += p * e * i / 1e3;
continue
}
const t = (e.isSpace ? c : 0) + l
, r = e.fontChar;
let d, _, A, b = e.width;
if (u) {
let t;
const r = e.vmetric || f;
t = e.vmetric ? r[1] : .5 * b;
t = -t * g;
const n = r[2] * g;
b = r ? -r[0] : b;
d = t / o;
_ = (m + n) / o
} else {
d = m / o;
_ = 0
}
if (e.isInFont || a.missingFile) {
s.xcoords.push(s.x + d);
u && s.ycoords.push(-s.y + _);
s.tspan.textContent += r
}
A = u ? b * g - t * h : b * g + t * h;
m += A
}
s.tspan.setAttributeNS(null, "x", s.xcoords.map(pf).join(" "));
u ? s.tspan.setAttributeNS(null, "y", s.ycoords.map(pf).join(" ")) : s.tspan.setAttributeNS(null, "y", pf(-s.y));
u ? s.y -= m : s.x += m * d;
s.tspan.setAttributeNS(null, "font-family", s.fontFamily);
s.tspan.setAttributeNS(null, "font-size", pf(s.fontSize) + "px");
s.fontStyle !== e.fontStyle && s.tspan.setAttributeNS(null, "font-style", s.fontStyle);
s.fontWeight !== e.fontWeight && s.tspan.setAttributeNS(null, "font-weight", s.fontWeight);
const _ = s.textRenderingMode & n.TextRenderingMode.FILL_STROKE_MASK;
if (_ === n.TextRenderingMode.FILL || _ === n.TextRenderingMode.FILL_STROKE) {
s.fillColor !== e.fillColor && s.tspan.setAttributeNS(null, "fill", s.fillColor);
s.fillAlpha < 1 && s.tspan.setAttributeNS(null, "fill-opacity", s.fillAlpha)
} else
s.textRenderingMode === n.TextRenderingMode.ADD_TO_PATH ? s.tspan.setAttributeNS(null, "fill", "transparent") : s.tspan.setAttributeNS(null, "fill", "none");
if (_ === n.TextRenderingMode.STROKE || _ === n.TextRenderingMode.FILL_STROKE) {
const e = 1 / (s.textMatrixScale || 1);
this._setStrokeAttributes(s.tspan, e)
}
let A = s.textMatrix;
if (0 !== s.textRise) {
A = A.slice();
A[5] += s.textRise
}
s.txtElement.setAttributeNS(null, "transform", `${pm(A)} scale(${pf(d)}, -1)`);
s.txtElement.setAttributeNS(r, "xml:space", "preserve");
s.txtElement.appendChild(s.tspan);
s.txtgrp.appendChild(s.txtElement);
this._ensureTransformGroup().appendChild(s.txtElement)
}
setLeadingMoveText(e, t) {
this.setLeading(-t);
this.moveText(e, t)
}
addFontStyle(e) {
if (!e.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.appendChild(this.cssStyle)
}
const t = (0,
n.createObjectURL)(e.data, e.mimetype, this.forceDataSchema);
this.cssStyle.textContent += `@font-face { font-family: "${e.loadedName}"; src: url(${t}); }\n`
}
setFont(e) {
const t = this.current
, r = this.commonObjs.get(e[0]);
let s = e[1];
t.font = r;
if (this.embedFonts && !r.missingFile && !this.embeddedFonts[r.loadedName]) {
this.addFontStyle(r);
this.embeddedFonts[r.loadedName] = r
}
t.fontMatrix = r.fontMatrix ? r.fontMatrix : n.FONT_IDENTITY_MATRIX;
let a = "normal";
r.black ? a = "900" : r.bold && (a = "bold");
const i = r.italic ? "italic" : "normal";
if (s < 0) {
s = -s;
t.fontDirection = -1
} else
t.fontDirection = 1;
t.fontSize = s;
t.fontFamily = r.loadedName;
t.fontWeight = a;
t.fontStyle = i;
t.tspan = this.svgFactory.createElement("svg:tspan");
t.tspan.setAttributeNS(null, "y", pf(-t.y));
t.xcoords = [];
t.ycoords = []
}
endText() {
const e = this.current;
if (e.textRenderingMode & n.TextRenderingMode.ADD_TO_PATH_FLAG && e.txtElement && e.txtElement.hasChildNodes()) {
e.element = e.txtElement;
this.clip("nonzero");
this.endPath()
}
}
setLineWidth(e) {
e > 0 && (this.current.lineWidth = e)
}
setLineCap(e) {
this.current.lineCap = o[e]
}
setLineJoin(e) {
this.current.lineJoin = l[e]
}
setMiterLimit(e) {
this.current.miterLimit = e
}
setStrokeAlpha(e) {
this.current.strokeAlpha = e
}
setStrokeRGBColor(e, t, r) {
this.current.strokeColor = n.Util.makeCssRgb(e, t, r)
}
setFillAlpha(e) {
this.current.fillAlpha = e
}
setFillRGBColor(e, t, r) {
this.current.fillColor = n.Util.makeCssRgb(e, t, r);
this.current.tspan = this.svgFactory.createElement("svg:tspan");
this.current.xcoords = [];
this.current.ycoords = []
}
setStrokeColorN(e) {
this.current.strokeColor = this._makeColorN_Pattern(e)
}
setFillColorN(e) {
this.current.fillColor = this._makeColorN_Pattern(e)
}
shadingFill(e) {
const t = this.viewport.width
, r = this.viewport.height
, s = n.Util.inverseTransform(this.transformMatrix)
, a = n.Util.applyTransform([0, 0], s)
, i = n.Util.applyTransform([0, r], s)
, o = n.Util.applyTransform([t, 0], s)
, l = n.Util.applyTransform([t, r], s)
, c = Math.min(a[0], i[0], o[0], l[0])
, h = Math.min(a[1], i[1], o[1], l[1])
, d = Math.max(a[0], i[0], o[0], l[0])
, u = Math.max(a[1], i[1], o[1], l[1])
, p = this.svgFactory.createElement("svg:rect");
p.setAttributeNS(null, "x", c);
p.setAttributeNS(null, "y", h);
p.setAttributeNS(null, "width", d - c);
p.setAttributeNS(null, "height", u - h);
p.setAttributeNS(null, "fill", this._makeShadingPattern(e));
this.current.fillAlpha < 1 && p.setAttributeNS(null, "fill-opacity", this.current.fillAlpha);
this._ensureTransformGroup().appendChild(p)
}
_makeColorN_Pattern(e) {
return "TilingPattern" === e[0] ? this._makeTilingPattern(e) : this._makeShadingPattern(e)
}
_makeTilingPattern(e) {
const t = e[1]
, r = e[2]
, s = e[3] || n.IDENTITY_MATRIX
, [a,i,o,l] = e[4]
, c = e[5]
, h = e[6]
, d = e[7]
, p = "shading" + u++
, [f,g] = n.Util.applyTransform([a, i], s)
, [m,_] = n.Util.applyTransform([o, l], s)
, [A,b] = n.Util.singularValueDecompose2dScale(s)
, y = c * A
, v = h * b
, C = this.svgFactory.createElement("svg:pattern");
C.setAttributeNS(null, "id", p);
C.setAttributeNS(null, "patternUnits", "userSpaceOnUse");
C.setAttributeNS(null, "width", y);
C.setAttributeNS(null, "height", v);
C.setAttributeNS(null, "x", "" + f);
C.setAttributeNS(null, "y", "" + g);
const S = this.svg
, x = this.transformMatrix
, P = this.current.fillColor
, k = this.current.strokeColor
, R = this.svgFactory.create(m - f, _ - g);
this.svg = R;
this.transformMatrix = s;
if (2 === d) {
const e = n.Util.makeCssRgb(...t);
this.current.fillColor = e;
this.current.strokeColor = e
}
this.executeOpTree(this.convertOpList(r));
this.svg = S;
this.transformMatrix = x;
this.current.fillColor = P;
this.current.strokeColor = k;
C.appendChild(R.childNodes[0]);
this.defs.appendChild(C);
return `url(#${p})`
}
_makeShadingPattern(e) {
switch (e[0]) {
case "RadialAxial":
const t = "shading" + u++
, r = e[3];
let s;
switch (e[1]) {
case "axial":
const r = e[4]
, n = e[5];
s = this.svgFactory.createElement("svg:linearGradient");
s.setAttributeNS(null, "id", t);
s.setAttributeNS(null, "gradientUnits", "userSpaceOnUse");
s.setAttributeNS(null, "x1", r[0]);
s.setAttributeNS(null, "y1", r[1]);
s.setAttributeNS(null, "x2", n[0]);
s.setAttributeNS(null, "y2", n[1]);
break;
case "radial":
const a = e[4]
, i = e[5]
, o = e[6]
, l = e[7];
s = this.svgFactory.createElement("svg:radialGradient");
s.setAttributeNS(null, "id", t);
s.setAttributeNS(null, "gradientUnits", "userSpaceOnUse");
s.setAttributeNS(null, "cx", i[0]);
s.setAttributeNS(null, "cy", i[1]);
s.setAttributeNS(null, "r", l);
s.setAttributeNS(null, "fx", a[0]);
s.setAttributeNS(null, "fy", a[1]);
s.setAttributeNS(null, "fr", o);
break;
default:
throw new Error("Unknown RadialAxial type: " + e[1])
}
for (const e of r) {
const t = this.svgFactory.createElement("svg:stop");
t.setAttributeNS(null, "offset", e[0]);
t.setAttributeNS(null, "stop-color", e[1]);
s.appendChild(t)
}
this.defs.appendChild(s);
return `url(#${t})`;
case "Mesh":
(0,
n.warn)("Unimplemented pattern Mesh");
return null;
case "Dummy":
return "hotpink";
default:
throw new Error("Unknown IR type: " + e[0])
}
}
setDash(e, t) {
this.current.dashArray = e;
this.current.dashPhase = t
}
constructPath(e, t) {
const r = this.current;
let s = r.x
, a = r.y
, i = []
, o = 0;
for (const r of e)
switch (0 | r) {
case n.OPS.rectangle:
s = t[o++];
a = t[o++];
const e = s + t[o++]
, r = a + t[o++];
i.push("M", pf(s), pf(a), "L", pf(e), pf(a), "L", pf(e), pf(r), "L", pf(s), pf(r), "Z");
break;
case n.OPS.moveTo:
s = t[o++];
a = t[o++];
i.push("M", pf(s), pf(a));
break;
case n.OPS.lineTo:
s = t[o++];
a = t[o++];
i.push("L", pf(s), pf(a));
break;
case n.OPS.curveTo:
s = t[o + 4];
a = t[o + 5];
i.push("C", pf(t[o]), pf(t[o + 1]), pf(t[o + 2]), pf(t[o + 3]), pf(s), pf(a));
o += 6;
break;
case n.OPS.curveTo2:
i.push("C", pf(s), pf(a), pf(t[o]), pf(t[o + 1]), pf(t[o + 2]), pf(t[o + 3]));
s = t[o + 2];
a = t[o + 3];
o += 4;
break;
case n.OPS.curveTo3:
s = t[o + 2];
a = t[o + 3];
i.push("C", pf(t[o]), pf(t[o + 1]), pf(s), pf(a), pf(s), pf(a));
o += 4;
break;
case n.OPS.closePath:
i.push("Z")
}
i = i.join(" ");
if (r.path && e.length > 0 && e[0] !== n.OPS.rectangle && e[0] !== n.OPS.moveTo)
i = r.path.getAttributeNS(null, "d") + i;
else {
r.path = this.svgFactory.createElement("svg:path");
this._ensureTransformGroup().appendChild(r.path)
}
r.path.setAttributeNS(null, "d", i);
r.path.setAttributeNS(null, "fill", "none");
r.element = r.path;
r.setCurrentPoint(s, a)
}
endPath() {
const e = this.current;
e.path = null;
if (!this.pendingClip)
return;
if (!e.element) {
this.pendingClip = null;
return
}
const t = "clippath" + h++
, r = this.svgFactory.createElement("svg:clipPath");
r.setAttributeNS(null, "id", t);
r.setAttributeNS(null, "transform", pm(this.transformMatrix));
const n = e.element.cloneNode(!0);
"evenodd" === this.pendingClip ? n.setAttributeNS(null, "clip-rule", "evenodd") : n.setAttributeNS(null, "clip-rule", "nonzero");
this.pendingClip = null;
r.appendChild(n);
this.defs.appendChild(r);
if (e.activeClipUrl) {
e.clipGroup = null;
this.extraStack.forEach((function(e) {
e.clipGroup = null
}
));
r.setAttributeNS(null, "clip-path", e.activeClipUrl)
}
e.activeClipUrl = `url(#${t})`;
this.tgrp = null
}
clip(e) {
this.pendingClip = e
}
closePath() {
const e = this.current;
if (e.path) {
const t = e.path.getAttributeNS(null, "d") + "Z";
e.path.setAttributeNS(null, "d", t)
}
}
setLeading(e) {
this.current.leading = -e
}
setTextRise(e) {
this.current.textRise = e
}
setTextRenderingMode(e) {
this.current.textRenderingMode = e
}
setHScale(e) {
this.current.textHScale = e / 100
}
setRenderingIntent(e) {}
setFlatness(e) {}
setGState(e) {
for (const [t,r] of e)
switch (t) {
case "LW":
this.setLineWidth(r);
break;
case "LC":
this.setLineCap(r);
break;
case "LJ":
this.setLineJoin(r);
break;
case "ML":
this.setMiterLimit(r);
break;
case "D":
this.setDash(r[0], r[1]);
break;
case "RI":
this.setRenderingIntent(r);
break;
case "FL":
this.setFlatness(r);
break;
case "Font":
this.setFont(r);
break;
case "CA":
this.setStrokeAlpha(r);
break;
case "ca":
this.setFillAlpha(r);
break;
default:
(0,
n.warn)("Unimplemented graphic state operator " + t)
}
}
fill() {
const e = this.current;
if (e.element) {
e.element.setAttributeNS(null, "fill", e.fillColor);
e.element.setAttributeNS(null, "fill-opacity", e.fillAlpha);
this.endPath()
}
}
stroke() {
const e = this.current;
if (e.element) {
this._setStrokeAttributes(e.element);
e.element.setAttributeNS(null, "fill", "none");
this.endPath()
}
}
_setStrokeAttributes(e, t=1) {
const r = this.current;
let n = r.dashArray;
1 !== t && n.length > 0 && (n = n.map((function(e) {
return t * e
}
)));
e.setAttributeNS(null, "stroke", r.strokeColor);
e.setAttributeNS(null, "stroke-opacity", r.strokeAlpha);
e.setAttributeNS(null, "stroke-miterlimit", pf(r.miterLimit));
e.setAttributeNS(null, "stroke-linecap", r.lineCap);
e.setAttributeNS(null, "stroke-linejoin", r.lineJoin);
e.setAttributeNS(null, "stroke-width", pf(t * r.lineWidth) + "px");
e.setAttributeNS(null, "stroke-dasharray", n.map(pf).join(" "));
e.setAttributeNS(null, "stroke-dashoffset", pf(t * r.dashPhase) + "px")
}
eoFill() {
this.current.element && this.current.element.setAttributeNS(null, "fill-rule", "evenodd");
this.fill()
}
fillStroke() {
this.stroke();
this.fill()
}
eoFillStroke() {
this.current.element && this.current.element.setAttributeNS(null, "fill-rule", "evenodd");
this.fillStroke()
}
closeStroke() {
this.closePath();
this.stroke()
}
closeFillStroke() {
this.closePath();
this.fillStroke()
}
closeEOFillStroke() {
this.closePath();
this.eoFillStroke()
}
paintSolidColorImageMask() {
const e = this.svgFactory.createElement("svg:rect");
e.setAttributeNS(null, "x", "0");
e.setAttributeNS(null, "y", "0");
e.setAttributeNS(null, "width", "1px");
e.setAttributeNS(null, "height", "1px");
e.setAttributeNS(null, "fill", this.current.fillColor);
this._ensureTransformGroup().appendChild(e)
}
paintImageXObject(e) {
const t = e.startsWith("g_") ? this.commonObjs.get(e) : this.objs.get(e);
t ? this.paintInlineImageXObject(t) : (0,
n.warn)(`Dependent image with object ID ${e} is not ready yet`)
}
paintInlineImageXObject(e, t) {
const r = e.width
, n = e.height
, s = c(e, this.forceDataSchema, !!t)
, a = this.svgFactory.createElement("svg:rect");
a.setAttributeNS(null, "x", "0");
a.setAttributeNS(null, "y", "0");
a.setAttributeNS(null, "width", pf(r));
a.setAttributeNS(null, "height", pf(n));
this.current.element = a;
this.clip("nonzero");
const o = this.svgFactory.createElement("svg:image");
o.setAttributeNS(i, "xlink:href", s);
o.setAttributeNS(null, "x", "0");
o.setAttributeNS(null, "y", pf(-n));
o.setAttributeNS(null, "width", pf(r) + "px");
o.setAttributeNS(null, "height", pf(n) + "px");
o.setAttributeNS(null, "transform", `scale(${pf(1 / r)} ${pf(-1 / n)})`);
t ? t.appendChild(o) : this._ensureTransformGroup().appendChild(o)
}
paintImageMaskXObject(e) {
const t = this.current
, r = e.width
, n = e.height
, s = t.fillColor;
t.maskId = "mask" + d++;
const a = this.svgFactory.createElement("svg:mask");
a.setAttributeNS(null, "id", t.maskId);
const i = this.svgFactory.createElement("svg:rect");
i.setAttributeNS(null, "x", "0");
i.setAttributeNS(null, "y", "0");
i.setAttributeNS(null, "width", pf(r));
i.setAttributeNS(null, "height", pf(n));
i.setAttributeNS(null, "fill", s);
i.setAttributeNS(null, "mask", `url(#${t.maskId})`);
this.defs.appendChild(a);
this._ensureTransformGroup().appendChild(i);
this.paintInlineImageXObject(e, a)
}
paintFormXObjectBegin(e, t) {
Array.isArray(e) && 6 === e.length && this.transform(e[0], e[1], e[2], e[3], e[4], e[5]);
if (t) {
const e = t[2] - t[0]
, r = t[3] - t[1]
, n = this.svgFactory.createElement("svg:rect");
n.setAttributeNS(null, "x", t[0]);
n.setAttributeNS(null, "y", t[1]);
n.setAttributeNS(null, "width", pf(e));
n.setAttributeNS(null, "height", pf(r));
this.current.element = n;
this.clip("nonzero");
this.endPath()
}
}
paintFormXObjectEnd() {}
_initialize(e) {
const t = this.svgFactory.create(e.width, e.height)
, r = this.svgFactory.createElement("svg:defs");
t.appendChild(r);
this.defs = r;
const n = this.svgFactory.createElement("svg:g");
n.setAttributeNS(null, "transform", pm(e.transform));
t.appendChild(n);
this.svg = n;
return t
}
_ensureClipGroup() {
if (!this.current.clipGroup) {
const e = this.svgFactory.createElement("svg:g");
e.setAttributeNS(null, "clip-path", this.current.activeClipUrl);
this.svg.appendChild(e);
this.current.clipGroup = e
}
return this.current.clipGroup
}
_ensureTransformGroup() {
if (!this.tgrp) {
this.tgrp = this.svgFactory.createElement("svg:g");
this.tgrp.setAttributeNS(null, "transform", pm(this.transformMatrix));
this.current.activeClipUrl ? this._ensureClipGroup().appendChild(this.tgrp) : this.svg.appendChild(this.tgrp)
}
return this.tgrp
}
}
}
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.PDFNodeStream = void 0;
var n = r(2)
, s = r(23);
const a = require("fs")
, i = require("http")
, o = require("https")
, l = require("url")
, c = /^file:\/\/\/[a-zA-Z]:\//;
t.PDFNodeStream = class PDFNodeStream {
constructor(e) {
this.source = e;
this.url = function parseUrl(e) {
const t = l.parse(e);
if ("file:" === t.protocol || t.host)
return t;
if (/^[a-z]:[/\\]/i.test(e))
return l.parse("file:///" + e);
t.host || (t.protocol = "file:");
return t
}(e.url);
this.isHttp = "http:" === this.url.protocol || "https:" === this.url.protocol;
this.isFsUrl = "file:" === this.url.protocol;
this.httpHeaders = this.isHttp && e.httpHeaders || {};
this._fullRequestReader = null;
this._rangeRequestReaders = []
}
get _progressiveDataLength() {
return this._fullRequestReader ? this._fullRequestReader._loaded : 0
}
getFullReader() {
(0,
n.assert)(!this._fullRequestReader, "PDFNodeStream.getFullReader can only be called once.");
this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);
return this._fullRequestReader
}
getRangeReader(e, t) {
if (t <= this._progressiveDataLength)
return null;
const r = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this,e,t) : new PDFNodeStreamRangeReader(this,e,t);
this._rangeRequestReaders.push(r);
return r
}
cancelAllRequests(e) {
this._fullRequestReader && this._fullRequestReader.cancel(e);
this._rangeRequestReaders.slice(0).forEach((function(t) {
t.cancel(e)
}
))
}
}
;
class BaseFullReader {
constructor(e) {
this._url = e.url;
this._done = !1;
this._storedError = null;
this.onProgress = null;
const t = e.source;
this._contentLength = t.length;
this._loaded = 0;
this._filename = null;
this._disableRange = t.disableRange || !1;
this._rangeChunkSize = t.rangeChunkSize;
this._rangeChunkSize || this._disableRange || (this._disableRange = !0);
this._isStreamingSupported = !t.disableStream;
this._isRangeSupported = !t.disableRange;
this._readableStream = null;
this._readCapability = (0,
n.createPromiseCapability)();
this._headersCapability = (0,
n.createPromiseCapability)()
}
get headersReady() {
return this._headersCapability.promise
}
get filename() {
return this._filename
}
get contentLength() {
return this._contentLength
}
get isRangeSupported() {
return this._isRangeSupported
}
get isStreamingSupported() {
return this._isStreamingSupported
}
async read() {
await this._readCapability.promise;
if (this._done)
return {
value: void 0,
done: !0
};
if (this._storedError)
throw this._storedError;
const e = this._readableStream.read();
if (null === e) {
this._readCapability = (0,
n.createPromiseCapability)();
return this.read()
}
this._loaded += e.length;
this.onProgress && this.onProgress({
loaded: this._loaded,
total: this._contentLength
});
return {
value: new Uint8Array(e).buffer,
done: !1
}
}
cancel(e) {
this._readableStream ? this._readableStream.destroy(e) : this._error(e)
}
_error(e) {
this._storedError = e;
this._readCapability.resolve()
}
_setReadableStream(e) {
this._readableStream = e;
e.on("readable", ()=>{
this._readCapability.resolve()
}
);
e.on("end", ()=>{
e.destroy();
this._done = !0;
this._readCapability.resolve()
}
);
e.on("error", e=>{
this._error(e)
}
);
!this._isStreamingSupported && this._isRangeSupported && this._error(new n.AbortException("streaming is disabled"));
this._storedError && this._readableStream.destroy(this._storedError)
}
}
class BaseRangeReader {
constructor(e) {
this._url = e.url;
this._done = !1;
this._storedError = null;
this.onProgress = null;
this._loaded = 0;
this._readableStream = null;
this._readCapability = (0,
n.createPromiseCapability)();
const t = e.source;
this._isStreamingSupported = !t.disableStream
}
get isStreamingSupported() {
return this._isStreamingSupported
}
async read() {
await this._readCapability.promise;
if (this._done)
return {
value: void 0,
done: !0
};
if (this._storedError)
throw this._storedError;
const e = this._readableStream.read();
if (null === e) {
this._readCapability = (0,
n.createPromiseCapability)();
return this.read()
}
this._loaded += e.length;
this.onProgress && this.onProgress({
loaded: this._loaded
});
return {
value: new Uint8Array(e).buffer,
done: !1
}
}
cancel(e) {
this._readableStream ? this._readableStream.destroy(e) : this._error(e)
}
_error(e) {
this._storedError = e;
this._readCapability.resolve()
}
_setReadableStream(e) {
this._readableStream = e;
e.on("readable", ()=>{
this._readCapability.resolve()
}
);
e.on("end", ()=>{
e.destroy();
this._done = !0;
this._readCapability.resolve()
}
);
e.on("error", e=>{
this._error(e)
}
);
this._storedError && this._readableStream.destroy(this._storedError)
}
}
function createRequestOptions(e, t) {
return {
protocol: e.protocol,
auth: e.auth,
host: e.hostname,
port: e.port,
path: e.path,
method: "GET",
headers: t
}
}
class PDFNodeStreamFullReader extends BaseFullReader {
constructor(e) {
super(e);
const handleResponse = t=>{
if (404 === t.statusCode) {
const e = new n.MissingPDFException(`Missing PDF "${this._url}".`);
this._storedError = e;
this._headersCapability.reject(e);
return
}
this._headersCapability.resolve();
this._setReadableStream(t);
const getResponseHeader = e=>this._readableStream.headers[e.toLowerCase()]
, {allowRangeRequests: r, suggestedLength: a} = (0,
s.validateRangeRequestCapabilities)({
getResponseHeader: getResponseHeader,
isHttp: e.isHttp,
rangeChunkSize: this._rangeChunkSize,
disableRange: this._disableRange
});
this._isRangeSupported = r;
this._contentLength = a || this._contentLength;
this._filename = (0,
s.extractFilenameFromHeader)(getResponseHeader)
}
;
this._request = null;
"http:" === this._url.protocol ? this._request = i.request(createRequestOptions(this._url, e.httpHeaders), handleResponse) : this._request = o.request(createRequestOptions(this._url, e.httpHeaders), handleResponse);
this._request.on("error", e=>{
this._storedError = e;
this._headersCapability.reject(e)
}
);
this._request.end()
}
}
class PDFNodeStreamRangeReader extends BaseRangeReader {
constructor(e, t, r) {
super(e);
this._httpHeaders = {};
for (const t in e.httpHeaders) {
const r = e.httpHeaders[t];
void 0 !== r && (this._httpHeaders[t] = r)
}
this._httpHeaders.Range = `bytes=${t}-${r - 1}`;
const handleResponse = e=>{
if (404 !== e.statusCode)
this._setReadableStream(e);
else {
const e = new n.MissingPDFException(`Missing PDF "${this._url}".`);
this._storedError = e
}
}
;
this._request = null;
"http:" === this._url.protocol ? this._request = i.request(createRequestOptions(this._url, this._httpHeaders), handleResponse) : this._request = o.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);
this._request.on("error", e=>{
this._storedError = e
}
);
this._request.end()
}
}
class PDFNodeStreamFsFullReader extends BaseFullReader {
constructor(e) {
super(e);
let t = decodeURIComponent(this._url.path);
c.test(this._url.href) && (t = t.replace(/^\//, ""));
a.lstat(t, (e,r)=>{
if (e) {
"ENOENT" === e.code && (e = new n.MissingPDFException(`Missing PDF "${t}".`));
this._storedError = e;
this._headersCapability.reject(e)
} else {
this._contentLength = r.size;
this._setReadableStream(a.createReadStream(t));
this._headersCapability.resolve()
}
}
)
}
}
class PDFNodeStreamFsRangeReader extends BaseRangeReader {
constructor(e, t, r) {
super(e);
let n = decodeURIComponent(this._url.path);
c.test(this._url.href) && (n = n.replace(/^\//, ""));
this._setReadableStream(a.createReadStream(n, {
start: t,
end: r - 1
}))
}
}
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.createResponseStatusError = function createResponseStatusError(e, t) {
if (404 === e || 0 === e && t.startsWith("file:"))
return new n.MissingPDFException('Missing PDF "' + t + '".');
return new n.UnexpectedResponseException("Unexpected server response (" + e + ') while retrieving PDF "' + t + '".',e)
}
;
t.extractFilenameFromHeader = function extractFilenameFromHeader(e) {
const t = e("Content-Disposition");
if (t) {
let e = (0,
s.getFilenameFromContentDispositionHeader)(t);
if (e.includes("%"))
try {
e = decodeURIComponent(e)
} catch (e) {}
if (/\.pdf$/i.test(e))
return e
}
return null
}
;
t.validateRangeRequestCapabilities = function validateRangeRequestCapabilities({getResponseHeader: e, isHttp: t, rangeChunkSize: r, disableRange: s}) {
(0,
n.assert)(r > 0, "Range chunk size must be larger than zero");
const a = {
allowRangeRequests: !1,
suggestedLength: void 0
}
, i = parseInt(e("Content-Length"), 10);
if (!Number.isInteger(i))
return a;
a.suggestedLength = i;
if (i <= 2 * r)
return a;
if (s || !t)
return a;
if ("bytes" !== e("Accept-Ranges"))
return a;
if ("identity" !== (e("Content-Encoding") || "identity"))
return a;
a.allowRangeRequests = !0;
return a
}
;
t.validateResponseStatus = function validateResponseStatus(e) {
return 200 === e || 206 === e
}
;
var n = r(2)
, s = r(24)
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.getFilenameFromContentDispositionHeader = function getFilenameFromContentDispositionHeader(e) {
let t = !0
, r = toParamRegExp("filename\\*", "i").exec(e);
if (r) {
r = r[1];
let e = rfc2616unquote(r);
e = unescape(e);
e = rfc5987decode(e);
e = rfc2047decode(e);
return fixupEncoding(e)
}
r = function rfc2231getparam(e) {
const t = [];
let r;
const n = toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)", "ig");
for (; null !== (r = n.exec(e)); ) {
let[,e,n,s] = r;
e = parseInt(e, 10);
if (e in t) {
if (0 === e)
break
} else
t[e] = [n, s]
}
const s = [];
for (let e = 0; e < t.length && e in t; ++e) {
let[r,n] = t[e];
n = rfc2616unquote(n);
if (r) {
n = unescape(n);
0 === e && (n = rfc5987decode(n))
}
s.push(n)
}
return s.join("")
}(e);
if (r) {
return fixupEncoding(rfc2047decode(r))
}
r = toParamRegExp("filename", "i").exec(e);
if (r) {
r = r[1];
let e = rfc2616unquote(r);
e = rfc2047decode(e);
return fixupEncoding(e)
}
function toParamRegExp(e, t) {
return new RegExp("(?:^|;)\\s*" + e + '\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)',t)
}
function textdecode(e, r) {
if (e) {
if (!/^[\x00-\xFF]+$/.test(r))
return r;
try {
const n = new TextDecoder(e,{
fatal: !0
})
, s = Array.from(r, (function(e) {
return 255 & e.charCodeAt(0)
}
));
r = n.decode(new Uint8Array(s));
t = !1
} catch (n) {
if (/^utf-?8$/i.test(e))
try {
r = decodeURIComponent(escape(r));
t = !1
} catch (e) {}
}
}
return r
}
function fixupEncoding(e) {
if (t && /[\x80-\xff]/.test(e)) {
e = textdecode("utf-8", e);
t && (e = textdecode("iso-8859-1", e))
}
return e
}
function rfc2616unquote(e) {
if (e.startsWith('"')) {
const t = e.slice(1).split('\\"');
for (let e = 0; e < t.length; ++e) {
const r = t[e].indexOf('"');
if (-1 !== r) {
t[e] = t[e].slice(0, r);
t.length = e + 1
}
t[e] = t[e].replace(/\\(.)/g, "$1")
}
e = t.join('"')
}
return e
}
function rfc5987decode(e) {
const t = e.indexOf("'");
if (-1 === t)
return e;
return textdecode(e.slice(0, t), e.slice(t + 1).replace(/^[^']*'/, ""))
}
function rfc2047decode(e) {
return !e.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(e) ? e : e.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, (function(e, t, r, n) {
if ("q" === r || "Q" === r)
return textdecode(t, n = (n = n.replace(/_/g, " ")).replace(/=([0-9a-fA-F]{2})/g, (function(e, t) {
return String.fromCharCode(parseInt(t, 16))
}
)));
try {
n = atob(n)
} catch (e) {}
return textdecode(t, n)
}
))
}
return ""
}
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.PDFNetworkStream = void 0;
var n = r(2)
, s = r(23);
class NetworkManager {
constructor(e, t) {
this.url = e;
t = t || {};
this.isHttp = /^https?:/i.test(e);
this.httpHeaders = this.isHttp && t.httpHeaders || {};
this.withCredentials = t.withCredentials || !1;
this.getXhr = t.getXhr || function NetworkManager_getXhr() {
return new XMLHttpRequest
}
;
this.currXhrId = 0;
this.pendingRequests = Object.create(null)
}
requestRange(e, t, r) {
const n = {
begin: e,
end: t
};
for (const e in r)
n[e] = r[e];
return this.request(n)
}
requestFull(e) {
return this.request(e)
}
request(e) {
const t = this.getXhr()
, r = this.currXhrId++
, n = this.pendingRequests[r] = {
xhr: t
};
t.open("GET", this.url);
t.withCredentials = this.withCredentials;
for (const e in this.httpHeaders) {
const r = this.httpHeaders[e];
void 0 !== r && t.setRequestHeader(e, r)
}
if (this.isHttp && "begin"in e && "end"in e) {
t.setRequestHeader("Range", `bytes=${e.begin}-${e.end - 1}`);
n.expectedStatus = 206
} else
n.expectedStatus = 200;
t.responseType = "arraybuffer";
e.onError && (t.onerror = function(r) {
e.onError(t.status)
}
);
t.onreadystatechange = this.onStateChange.bind(this, r);
t.onprogress = this.onProgress.bind(this, r);
n.onHeadersReceived = e.onHeadersReceived;
n.onDone = e.onDone;
n.onError = e.onError;
n.onProgress = e.onProgress;
t.send(null);
return r
}
onProgress(e, t) {
const r = this.pendingRequests[e];
r && r.onProgress && r.onProgress(t)
}
onStateChange(e, t) {
const r = this.pendingRequests[e];
if (!r)
return;
const s = r.xhr;
if (s.readyState >= 2 && r.onHeadersReceived) {
r.onHeadersReceived();
delete r.onHeadersReceived
}
if (4 !== s.readyState)
return;
if (!(e in this.pendingRequests))
return;
delete this.pendingRequests[e];
if (0 === s.status && this.isHttp) {
r.onError && r.onError(s.status);
return
}
const a = s.status || 200;
if (!(200 === a && 206 === r.expectedStatus) && a !== r.expectedStatus) {
r.onError && r.onError(s.status);
return
}
const i = function getArrayBuffer(e) {
const t = e.response;
return "string" != typeof t ? t : (0,
n.stringToBytes)(t).buffer
}(s);
if (206 === a) {
const e = s.getResponseHeader("Content-Range")
, t = /bytes (\d+)-(\d+)\/(\d+)/.exec(e);
r.onDone({
begin: parseInt(t[1], 10),
chunk: i
})
} else
i ? r.onDone({
begin: 0,
chunk: i
}) : r.onError && r.onError(s.status)
}
getRequestXhr(e) {
return this.pendingRequests[e].xhr
}
isPendingRequest(e) {
return e in this.pendingRequests
}
abortRequest(e) {
const t = this.pendingRequests[e].xhr;
delete this.pendingRequests[e];
t.abort()
}
}
t.PDFNetworkStream = class PDFNetworkStream {
constructor(e) {
this._source = e;
this._manager = new NetworkManager(e.url,{
httpHeaders: e.httpHeaders,
withCredentials: e.withCredentials
});
this._rangeChunkSize = e.rangeChunkSize;
this._fullRequestReader = null;
this._rangeRequestReaders = []
}
_onRangeRequestReaderClosed(e) {
const t = this._rangeRequestReaders.indexOf(e);
t >= 0 && this._rangeRequestReaders.splice(t, 1)
}
getFullReader() {
(0,
n.assert)(!this._fullRequestReader, "PDFNetworkStream.getFullReader can only be called once.");
this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager,this._source);
return this._fullRequestReader
}
getRangeReader(e, t) {
const r = new PDFNetworkStreamRangeRequestReader(this._manager,e,t);
r.onClosed = this._onRangeRequestReaderClosed.bind(this);
this._rangeRequestReaders.push(r);
return r
}
cancelAllRequests(e) {
this._fullRequestReader && this._fullRequestReader.cancel(e);
this._rangeRequestReaders.slice(0).forEach((function(t) {
t.cancel(e)
}
))
}
}
;
class PDFNetworkStreamFullRequestReader {
constructor(e, t) {
this._manager = e;
const r = {
onHeadersReceived: this._onHeadersReceived.bind(this),
onDone: this._onDone.bind(this),
onError: this._onError.bind(this),
onProgress: this._onProgress.bind(this)
};
this._url = t.url;
this._fullRequestId = e.requestFull(r);
this._headersReceivedCapability = (0,
n.createPromiseCapability)();
this._disableRange = t.disableRange || !1;
this._contentLength = t.length;
this._rangeChunkSize = t.rangeChunkSize;
this._rangeChunkSize || this._disableRange || (this._disableRange = !0);
this._isStreamingSupported = !1;
this._isRangeSupported = !1;
this._cachedChunks = [];
this._requests = [];
this._done = !1;
this._storedError = void 0;
this._filename = null;
this.onProgress = null
}
_onHeadersReceived() {
const e = this._fullRequestId
, t = this._manager.getRequestXhr(e)
, getResponseHeader = e=>t.getResponseHeader(e)
, {allowRangeRequests: r, suggestedLength: n} = (0,
s.validateRangeRequestCapabilities)({
getResponseHeader: getResponseHeader,
isHttp: this._manager.isHttp,
rangeChunkSize: this._rangeChunkSize,
disableRange: this._disableRange
});
r && (this._isRangeSupported = !0);
this._contentLength = n || this._contentLength;
this._filename = (0,
s.extractFilenameFromHeader)(getResponseHeader);
this._isRangeSupported && this._manager.abortRequest(e);
this._headersReceivedCapability.resolve()
}
_onDone(e) {
if (e)
if (this._requests.length > 0) {
this._requests.shift().resolve({
value: e.chunk,
done: !1
})
} else
this._cachedChunks.push(e.chunk);
this._done = !0;
if (!(this._cachedChunks.length > 0)) {
this._requests.forEach((function(e) {
e.resolve({
value: void 0,
done: !0
})
}
));
this._requests = []
}
}
_onError(e) {
const t = this._url
, r = (0,
s.createResponseStatusError)(e, t);
this._storedError = r;
this._headersReceivedCapability.reject(r);
this._requests.forEach((function(e) {
e.reject(r)
}
));
this._requests = [];
this._cachedChunks = []
}
_onProgress(e) {
this.onProgress && this.onProgress({
loaded: e.loaded,
total: e.lengthComputable ? e.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) {
return {
value: this._cachedChunks.shift(),
done: !1
}
}
if (this._done)
return {
value: void 0,
done: !0
};
const e = (0,
n.createPromiseCapability)();
this._requests.push(e);
return e.promise
}
cancel(e) {
this._done = !0;
this._headersReceivedCapability.reject(e);
this._requests.forEach((function(e) {
e.resolve({
value: void 0,
done: !0
})
}
));
this._requests = [];
this._manager.isPendingRequest(this._fullRequestId) && this._manager.abortRequest(this._fullRequestId);
this._fullRequestReader = null
}
}
class PDFNetworkStreamRangeRequestReader {
constructor(e, t, r) {
this._manager = e;
const n = {
onDone: this._onDone.bind(this),
onProgress: this._onProgress.bind(this)
};
this._requestId = e.requestRange(t, r, n);
this._requests = [];
this._queuedChunk = null;
this._done = !1;
this.onProgress = null;
this.onClosed = null
}
_close() {
this.onClosed && this.onClosed(this)
}
_onDone(e) {
const t = e.chunk;
if (this._requests.length > 0) {
this._requests.shift().resolve({
value: t,
done: !1
})
} else
this._queuedChunk = t;
this._done = !0;
this._requests.forEach((function(e) {
e.resolve({
value: void 0,
done: !0
})
}
));
this._requests = [];
this._close()
}
_onProgress(e) {
!this.isStreamingSupported && this.onProgress && this.onProgress({
loaded: e.loaded
})
}
get isStreamingSupported() {
return !1
}
async read() {
if (null !== this._queuedChunk) {
const e = this._queuedChunk;
this._queuedChunk = null;
return {
value: e,
done: !1
}
}
if (this._done)
return {
value: void 0,
done: !0
};
const e = (0,
n.createPromiseCapability)();
this._requests.push(e);
return e.promise
}
cancel(e) {
this._done = !0;
this._requests.forEach((function(e) {
e.resolve({
value: void 0,
done: !0
})
}
));
this._requests = [];
this._manager.isPendingRequest(this._requestId) && this._manager.abortRequest(this._requestId);
this._close()
}
}
}
, function(e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.PDFFetchStream = void 0;
var n = r(2)
, s = r(23);
function createFetchOptions(e, t, r) {
return {
method: "GET",
headers: e,
signal: r && r.signal,
mode: "cors",
credentials: t ? "include" : "same-origin",
redirect: "follow"
}
}
function createHeaders(e) {
const t = new Headers;
for (const r in e) {
const n = e[r];
void 0 !== n && t.append(r, n)
}
return t
}
t.PDFFetchStream = class PDFFetchStream {
constructor(e) {
this.source = e;
this.isHttp = /^https?:/i.test(e.url);
this.httpHeaders = this.isHttp && e.httpHeaders || {};
this._fullRequestReader = null;
this._rangeRequestReaders = []
}
get _progressiveDataLength() {
return this._fullRequestReader ? this._fullRequestReader._loaded : 0
}
getFullReader() {
(0,
n.assert)(!this._fullRequestReader, "PDFFetchStream.getFullReader can only be called once.");
this._fullRequestReader = new PDFFetchStreamReader(this);
return this._fullRequestReader
}
getRangeReader(e, t) {
if (t <= this._progressiveDataLength)
return null;
const r = new PDFFetchStreamRangeReader(this,e,t);
this._rangeRequestReaders.push(r);
return r
}
cancelAllRequests(e) {
this._fullRequestReader && this._fullRequestReader.cancel(e);
this._rangeRequestReaders.slice(0).forEach((function(t) {
t.cancel(e)
}
))
}
}
;
class PDFFetchStreamReader {
constructor(e) {
this._stream = e;
this._reader = null;
this._loaded = 0;
this._filename = null;
const t = e.source;
this._withCredentials = t.withCredentials || !1;
this._contentLength = t.length;
this._headersCapability = (0,
n.createPromiseCapability)();
this._disableRange = t.disableRange || !1;
this._rangeChunkSize = t.rangeChunkSize;
this._rangeChunkSize || this._disableRange || (this._disableRange = !0);
"undefined" != typeof AbortController && (this._abortController = new AbortController);
this._isStreamingSupported = !t.disableStream;
this._isRangeSupported = !t.disableRange;
this._headers = createHeaders(this._stream.httpHeaders);
const r = t.url;
fetch(r, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(e=>{
if (!(0,
s.validateResponseStatus)(e.status))
throw (0,
s.createResponseStatusError)(e.status, r);
this._reader = e.body.getReader();
this._headersCapability.resolve();
const getResponseHeader = t=>e.headers.get(t)
, {allowRangeRequests: t, suggestedLength: a} = (0,
s.validateRangeRequestCapabilities)({
getResponseHeader: getResponseHeader,
isHttp: this._stream.isHttp,
rangeChunkSize: this._rangeChunkSize,
disableRange: this._disableRange
});
this._isRangeSupported = t;
this._contentLength = a || this._contentLength;
this._filename = (0,
s.extractFilenameFromHeader)(getResponseHeader);
!this._isStreamingSupported && this._isRangeSupported && this.cancel(new n.AbortException("Streaming is disabled."))
}
).catch(this._headersCapability.reject);
this.onProgress = null
}
get headersReady() {
return this._headersCapability.promise
}
get filename() {
return this._filename
}
get contentLength() {
return this._contentLength
}
get isRangeSupported() {
return this._isRangeSupported
}
get isStreamingSupported() {
return this._isStreamingSupported
}
async read() {
await this._headersCapability.promise;
const {value: e, done: t} = await this._reader.read();
if (t)
return {
value: e,
done: t
};
this._loaded += e.byteLength;
this.onProgress && this.onProgress({
loaded: this._loaded,
total: this._contentLength
});
return {
value: new Uint8Array(e).buffer,
done: !1
}
}
cancel(e) {
this._reader && this._reader.cancel(e);
this._abortController && this._abortController.abort()
}
}
class PDFFetchStreamRangeReader {
constructor(e, t, r) {
this._stream = e;
this._reader = null;
this._loaded = 0;
const a = e.source;
this._withCredentials = a.withCredentials || !1;
this._readCapability = (0,
n.createPromiseCapability)();
this._isStreamingSupported = !a.disableStream;
"undefined" != typeof AbortController && (this._abortController = new AbortController);
this._headers = createHeaders(this._stream.httpHeaders);
this._headers.append("Range", `bytes=${t}-${r - 1}`);
const i = a.url;
fetch(i, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(e=>{
if (!(0,
s.validateResponseStatus)(e.status))
throw (0,
s.createResponseStatusError)(e.status, i);
this._readCapability.resolve();
this._reader = e.body.getReader()
}
).catch(e=>{
if (!e || "AbortError" !== e.name)
throw e
}
);
this.onProgress = null
}
get isStreamingSupported() {
return this._isStreamingSupported
}
async read() {
await this._readCapability.promise;
const {value: e, done: t} = await this._reader.read();
if (t)
return {
value: e,
done: t
};
this._loaded += e.byteLength;
this.onProgress && this.onProgress({
loaded: this._loaded
});
return {
value: new Uint8Array(e).buffer,
done: !1
}
}
cancel(e) {
this._reader && this._reader.cancel(e);
this._abortController && this._abortController.abort()
}
}
}
])
}
));