Icard/angular-clarity-master(work.../node_modules/jspdf/dist/jspdf.es.js.map

1 line
1.9 MiB
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"file":"jspdf.es.js","sources":["../src/libs/globalObject.js","../src/libs/console.js","../src/libs/FileSaver.js","../src/libs/rgbcolor.js","../src/libs/AtobBtoa.js","../src/libs/md5.js","../src/libs/rc4.js","../src/libs/pdfsecurity.js","../src/libs/pdfname.js","../src/jspdf.js","../src/modules/acroform.js","../src/modules/addimage.js","../src/modules/annotations.js","../src/modules/arabic.js","../src/modules/autoprint.js","../src/modules/canvas.js","../src/modules/cell.js","../src/libs/fontFace.js","../src/modules/context2d.js","../src/modules/filters.js","../src/modules/fileloading.js","../src/modules/html.js","../src/modules/javascript.js","../src/modules/outline.js","../src/modules/jpeg_support.js","../src/libs/png.js","../src/modules/png_support.js","../src/libs/omggif.js","../src/libs/JPEGEncoder.js","../src/modules/gif_support.js","../src/libs/BMPDecoder.js","../src/modules/bmp_support.js","../src/libs/WebPDecoder.js","../src/modules/webp_support.js","../src/modules/rgba_support.js","../src/modules/setlanguage.js","../src/modules/split_text_to_size.js","../src/modules/standard_fonts_metrics.js","../src/modules/ttfsupport.js","../src/modules/svg.js","../src/modules/total_pages.js","../src/modules/viewerpreferences.js","../src/modules/xmp_metadata.js","../src/modules/utf8.js","../src/modules/vfs.js","../src/libs/bidiEngine.js","../src/libs/ttffont.js"],"sourcesContent":["export var globalObject = (function() {\n return \"undefined\" !== typeof window\n ? window\n : \"undefined\" !== typeof global\n ? global\n : \"undefined\" !== typeof self\n ? self\n : this;\n})();\n","import { globalObject } from \"./globalObject.js\";\n\nfunction consoleLog() {\n if (globalObject.console && typeof globalObject.console.log === \"function\") {\n globalObject.console.log.apply(globalObject.console, arguments);\n }\n}\n\nfunction consoleWarn(str) {\n if (globalObject.console) {\n if (typeof globalObject.console.warn === \"function\") {\n globalObject.console.warn.apply(globalObject.console, arguments);\n } else {\n consoleLog.call(null, arguments);\n }\n }\n}\n\nfunction consoleError(str) {\n if (globalObject.console) {\n if (typeof globalObject.console.error === \"function\") {\n globalObject.console.error.apply(globalObject.console, arguments);\n } else {\n consoleLog(str);\n }\n }\n}\nexport var console = {\n log: consoleLog,\n warn: consoleWarn,\n error: consoleError\n};\n","/**\n * @license\n * FileSaver.js\n * A saveAs() FileSaver implementation.\n *\n * By Eli Grey, http://eligrey.com\n *\n * License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n * source : http://purl.eligrey.com/github/FileSaver.js\n */\n\nimport { globalObject as _global } from \"./globalObject.js\";\nimport { console } from \"./console.js\";\n\nfunction bom(blob, opts) {\n if (typeof opts === \"undefined\") opts = { autoBom: false };\n else if (typeof opts !== \"object\") {\n console.warn(\"Deprecated: Expected third argument to be a object\");\n opts = { autoBom: !opts };\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (\n opts.autoBom &&\n /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(\n blob.type\n )\n ) {\n return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type });\n }\n return blob;\n}\n\nfunction download(url, name, opts) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url);\n xhr.responseType = \"blob\";\n xhr.onload = function() {\n saveAs(xhr.response, name, opts);\n };\n xhr.onerror = function() {\n console.error(\"could not download file\");\n };\n xhr.send();\n}\n\nfunction corsEnabled(url) {\n var xhr = new XMLHttpRequest();\n // use sync to avoid popup blocker\n xhr.open(\"HEAD\", url, false);\n try {\n xhr.send();\n } catch (e) {}\n return xhr.status >= 200 && xhr.status <= 299;\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n try {\n node.dispatchEvent(new MouseEvent(\"click\"));\n } catch (e) {\n var evt = document.createEvent(\"MouseEvents\");\n evt.initMouseEvent(\n \"click\",\n true,\n true,\n window,\n 0,\n 0,\n 0,\n 80,\n 20,\n false,\n false,\n false,\n false,\n 0,\n null\n );\n node.dispatchEvent(evt);\n }\n}\n\nvar saveAs =\n _global.saveAs ||\n // probably in some web worker\n (typeof window !== \"object\" || window !== _global\n ? function saveAs() {\n /* noop */\n }\n : // Use download attribute first if possible (#193 Lumia mobile) unless this is a native app\n typeof HTMLAnchorElement !== \"undefined\" &&\n \"download\" in HTMLAnchorElement.prototype\n ? function saveAs(blob, name, opts) {\n var URL = _global.URL || _global.webkitURL;\n var a = document.createElement(\"a\");\n name = name || blob.name || \"download\";\n\n a.download = name;\n a.rel = \"noopener\"; // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === \"string\") {\n // Support regular links\n a.href = blob;\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, (a.target = \"_blank\"));\n } else {\n click(a);\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob);\n setTimeout(function() {\n URL.revokeObjectURL(a.href);\n }, 4e4); // 40s\n setTimeout(function() {\n click(a);\n }, 0);\n }\n }\n : // Use msSaveOrOpenBlob as a second approach\n \"msSaveOrOpenBlob\" in navigator\n ? function saveAs(blob, name, opts) {\n name = name || blob.name || \"download\";\n\n if (typeof blob === \"string\") {\n if (corsEnabled(blob)) {\n download(blob, name, opts);\n } else {\n var a = document.createElement(\"a\");\n a.href = blob;\n a.target = \"_blank\";\n setTimeout(function() {\n click(a);\n });\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name);\n }\n }\n : // Fallback to using FileReader and a popup\n function saveAs(blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open(\"\", \"_blank\");\n if (popup) {\n popup.document.title = popup.document.body.innerText =\n \"downloading...\";\n }\n\n if (typeof blob === \"string\") return download(blob, name, opts);\n\n var force = blob.type === \"application/octet-stream\";\n var isSafari =\n /constructor/i.test(_global.HTMLElement) || _global.safari;\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent);\n\n if (\n (isChromeIOS || (force && isSafari)) &&\n typeof FileReader === \"object\"\n ) {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader();\n reader.onloadend = function() {\n var url = reader.result;\n url = isChromeIOS\n ? url\n : url.replace(/^data:[^;]*;/, \"data:attachment/file;\");\n if (popup) popup.location.href = url;\n else location = url;\n popup = null; // reverse-tabnabbing #460\n };\n reader.readAsDataURL(blob);\n } else {\n var URL = _global.URL || _global.webkitURL;\n var url = URL.createObjectURL(blob);\n if (popup) popup.location = url;\n else location.href = url;\n popup = null; // reverse-tabnabbing #460\n setTimeout(function() {\n URL.revokeObjectURL(url);\n }, 4e4); // 40s\n }\n });\n\nexport { saveAs };\n","/**\n * A class to parse color values\n * @author Stoyan Stefanov <sstoo@gmail.com>\n * {@link http://www.phpied.com/rgb-color-parser-in-javascript/}\n * @license Use it if you like it\n */\n\nfunction RGBColor(color_string) {\n color_string = color_string || \"\";\n this.ok = false;\n\n // strip any leading #\n if (color_string.charAt(0) == \"#\") {\n // remove # if any\n color_string = color_string.substr(1, 6);\n }\n\n color_string = color_string.replace(/ /g, \"\");\n color_string = color_string.toLowerCase();\n\n var channels;\n\n // before getting into regexps, try simple matches\n // and overwrite the input\n var simple_colors = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"00ffff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000000\",\n blanchedalmond: \"ffebcd\",\n blue: \"0000ff\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"00ffff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dodgerblue: \"1e90ff\",\n feldspar: \"d19275\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"ff00ff\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgrey: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslateblue: \"8470ff\",\n lightslategray: \"778899\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"00ff00\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"ff00ff\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"d87093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n red: \"ff0000\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n violetred: \"d02090\",\n wheat: \"f5deb3\",\n white: \"ffffff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ffff00\",\n yellowgreen: \"9acd32\"\n };\n color_string = simple_colors[color_string] || color_string;\n\n // array of color definition objects\n var color_defs = [\n {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n example: [\"rgb(123, 234, 45)\", \"rgb(255,234,245)\"],\n process: function(bits) {\n return [parseInt(bits[1]), parseInt(bits[2]), parseInt(bits[3])];\n }\n },\n {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n example: [\"#00ff00\", \"336699\"],\n process: function(bits) {\n return [\n parseInt(bits[1], 16),\n parseInt(bits[2], 16),\n parseInt(bits[3], 16)\n ];\n }\n },\n {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n example: [\"#fb0\", \"f0f\"],\n process: function(bits) {\n return [\n parseInt(bits[1] + bits[1], 16),\n parseInt(bits[2] + bits[2], 16),\n parseInt(bits[3] + bits[3], 16)\n ];\n }\n }\n ];\n\n // search through the definitions to find a match\n for (var i = 0; i < color_defs.length; i++) {\n var re = color_defs[i].re;\n var processor = color_defs[i].process;\n var bits = re.exec(color_string);\n if (bits) {\n channels = processor(bits);\n this.r = channels[0];\n this.g = channels[1];\n this.b = channels[2];\n this.ok = true;\n }\n }\n\n // validate/cleanup values\n this.r = this.r < 0 || isNaN(this.r) ? 0 : this.r > 255 ? 255 : this.r;\n this.g = this.g < 0 || isNaN(this.g) ? 0 : this.g > 255 ? 255 : this.g;\n this.b = this.b < 0 || isNaN(this.b) ? 0 : this.b > 255 ? 255 : this.b;\n\n // some getters\n this.toRGB = function() {\n return \"rgb(\" + this.r + \", \" + this.g + \", \" + this.b + \")\";\n };\n this.toHex = function() {\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n if (r.length == 1) r = \"0\" + r;\n if (g.length == 1) g = \"0\" + g;\n if (b.length == 1) b = \"0\" + b;\n return \"#\" + r + g + b;\n };\n}\n\nexport { RGBColor };\n","import { globalObject } from \"./globalObject.js\";\n\nvar atob, btoa;\n\n(function() {\n atob = globalObject.atob.bind(globalObject);\n btoa = globalObject.btoa.bind(globalObject);\n return;\n\n})();\n\nexport { atob, btoa };\n","/**\n * @license\n * Joseph Myers does not specify a particular license for his work.\n *\n * Author: Joseph Myers\n * Accessed from: http://www.myersdaily.org/joseph/javascript/md5.js\n *\n * Modified by: Owen Leong\n */\n\nfunction md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n\n a = ff(a, b, c, d, k[0], 7, -680876936);\n d = ff(d, a, b, c, k[1], 12, -389564586);\n c = ff(c, d, a, b, k[2], 17, 606105819);\n b = ff(b, c, d, a, k[3], 22, -1044525330);\n a = ff(a, b, c, d, k[4], 7, -176418897);\n d = ff(d, a, b, c, k[5], 12, 1200080426);\n c = ff(c, d, a, b, k[6], 17, -1473231341);\n b = ff(b, c, d, a, k[7], 22, -45705983);\n a = ff(a, b, c, d, k[8], 7, 1770035416);\n d = ff(d, a, b, c, k[9], 12, -1958414417);\n c = ff(c, d, a, b, k[10], 17, -42063);\n b = ff(b, c, d, a, k[11], 22, -1990404162);\n a = ff(a, b, c, d, k[12], 7, 1804603682);\n d = ff(d, a, b, c, k[13], 12, -40341101);\n c = ff(c, d, a, b, k[14], 17, -1502002290);\n b = ff(b, c, d, a, k[15], 22, 1236535329);\n\n a = gg(a, b, c, d, k[1], 5, -165796510);\n d = gg(d, a, b, c, k[6], 9, -1069501632);\n c = gg(c, d, a, b, k[11], 14, 643717713);\n b = gg(b, c, d, a, k[0], 20, -373897302);\n a = gg(a, b, c, d, k[5], 5, -701558691);\n d = gg(d, a, b, c, k[10], 9, 38016083);\n c = gg(c, d, a, b, k[15], 14, -660478335);\n b = gg(b, c, d, a, k[4], 20, -405537848);\n a = gg(a, b, c, d, k[9], 5, 568446438);\n d = gg(d, a, b, c, k[14], 9, -1019803690);\n c = gg(c, d, a, b, k[3], 14, -187363961);\n b = gg(b, c, d, a, k[8], 20, 1163531501);\n a = gg(a, b, c, d, k[13], 5, -1444681467);\n d = gg(d, a, b, c, k[2], 9, -51403784);\n c = gg(c, d, a, b, k[7], 14, 1735328473);\n b = gg(b, c, d, a, k[12], 20, -1926607734);\n\n a = hh(a, b, c, d, k[5], 4, -378558);\n d = hh(d, a, b, c, k[8], 11, -2022574463);\n c = hh(c, d, a, b, k[11], 16, 1839030562);\n b = hh(b, c, d, a, k[14], 23, -35309556);\n a = hh(a, b, c, d, k[1], 4, -1530992060);\n d = hh(d, a, b, c, k[4], 11, 1272893353);\n c = hh(c, d, a, b, k[7], 16, -155497632);\n b = hh(b, c, d, a, k[10], 23, -1094730640);\n a = hh(a, b, c, d, k[13], 4, 681279174);\n d = hh(d, a, b, c, k[0], 11, -358537222);\n c = hh(c, d, a, b, k[3], 16, -722521979);\n b = hh(b, c, d, a, k[6], 23, 76029189);\n a = hh(a, b, c, d, k[9], 4, -640364487);\n d = hh(d, a, b, c, k[12], 11, -421815835);\n c = hh(c, d, a, b, k[15], 16, 530742520);\n b = hh(b, c, d, a, k[2], 23, -995338651);\n\n a = ii(a, b, c, d, k[0], 6, -198630844);\n d = ii(d, a, b, c, k[7], 10, 1126891415);\n c = ii(c, d, a, b, k[14], 15, -1416354905);\n b = ii(b, c, d, a, k[5], 21, -57434055);\n a = ii(a, b, c, d, k[12], 6, 1700485571);\n d = ii(d, a, b, c, k[3], 10, -1894986606);\n c = ii(c, d, a, b, k[10], 15, -1051523);\n b = ii(b, c, d, a, k[1], 21, -2054922799);\n a = ii(a, b, c, d, k[8], 6, 1873313359);\n d = ii(d, a, b, c, k[15], 10, -30611744);\n c = ii(c, d, a, b, k[6], 15, -1560198380);\n b = ii(b, c, d, a, k[13], 21, 1309151649);\n a = ii(a, b, c, d, k[4], 6, -145523070);\n d = ii(d, a, b, c, k[11], 10, -1120210379);\n c = ii(c, d, a, b, k[2], 15, 718787259);\n b = ii(b, c, d, a, k[9], 21, -343485551);\n\n x[0] = add32(a, x[0]);\n x[1] = add32(b, x[1]);\n x[2] = add32(c, x[2]);\n x[3] = add32(d, x[3]);\n}\n\nfunction cmn(q, a, b, x, s, t) {\n a = add32(add32(a, q), add32(x, t));\n return add32((a << s) | (a >>> (32 - s)), b);\n}\n\nfunction ff(a, b, c, d, x, s, t) {\n return cmn((b & c) | (~b & d), a, b, x, s, t);\n}\n\nfunction gg(a, b, c, d, x, s, t) {\n return cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\n\nfunction hh(a, b, c, d, x, s, t) {\n return cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction ii(a, b, c, d, x, s, t) {\n return cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nfunction md51(s) {\n // txt = '';\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i;\n for (i = 64; i <= s.length; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n var tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < s.length; i++)\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n tail[i >> 2] |= 0x80 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i++) tail[i] = 0;\n }\n tail[14] = n * 8;\n md5cycle(state, tail);\n return state;\n}\n\n/* there needs to be support for Unicode here,\n * unless we pretend that we can redefine the MD-5\n * algorithm for multi-byte characters (perhaps\n * by adding every four 16-bit characters and\n * shortening the sum to 32 bits). Otherwise\n * I suggest performing MD-5 as if every character\n * was two bytes--e.g., 0040 0025 = @%--but then\n * how will an ordinary MD-5 sum be matched?\n * There is no way to standardize text to something\n * like UTF-8 before transformation; speed cost is\n * utterly prohibitive. The JavaScript standard\n * itself needs to look at this: it should start\n * providing access to strings as preformed UTF-8\n * 8-bit unsigned value arrays.\n */\nfunction md5blk(s) {\n /* I figured global was faster. */\n var md5blks = [],\n i; /* Andy King said do it this way. */\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] =\n s.charCodeAt(i) +\n (s.charCodeAt(i + 1) << 8) +\n (s.charCodeAt(i + 2) << 16) +\n (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n}\n\nvar hex_chr = \"0123456789abcdef\".split(\"\");\n\nfunction rhex(n) {\n var s = \"\",\n j = 0;\n for (; j < 4; j++)\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0f] + hex_chr[(n >> (j * 8)) & 0x0f];\n return s;\n}\n\nfunction hex(x) {\n for (var i = 0; i < x.length; i++) x[i] = rhex(x[i]);\n return x.join(\"\");\n}\n\n// Converts a 4-byte number to byte string\nfunction singleToByteString(n) {\n return String.fromCharCode(\n (n & 0xff) >> 0,\n (n & 0xff00) >> 8,\n (n & 0xff0000) >> 16,\n (n & 0xff000000) >> 24\n );\n}\n\n// Converts an array of numbers to a byte string\nfunction toByteString(x) {\n return x.map(singleToByteString).join(\"\");\n}\n\n// Returns the MD5 hash as a byte string\nfunction md5Bin(s) {\n return toByteString(md51(s));\n}\n\n// Returns MD5 hash as a hex string\nfunction md5(s) {\n return hex(md51(s));\n}\n\nvar md5Check = md5(\"hello\") != \"5d41402abc4b2a76b9719d911017c592\";\n\nfunction add32(a, b) {\n if (md5Check) {\n /* if the md5Check does not match\n the expected value, we're dealing\n with an old browser and need\n this function. */\n var lsw = (a & 0xffff) + (b & 0xffff),\n msw = (a >> 16) + (b >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xffff);\n } else {\n /* this function is much faster,\n so if possible we use it. Some IEs\n are the only ones I know of that\n need the idiotic second function,\n generated by an if clause. */\n return (a + b) & 0xffffffff;\n }\n}\n\nexport { md5, md5Bin };\n","/**\r\n * @license\r\n * FPDF is released under a permissive license: there is no usage restriction.\r\n * You may embed it freely in your application (commercial or not), with or\r\n * without modifications.\r\n *\r\n * Reference: http://www.fpdf.org/en/script/script37.php\r\n */\r\n\r\nfunction repeat(str, num) {\r\n return new Array(num + 1).join(str);\r\n}\r\n\r\n/**\r\n * Converts a byte string to a hex string\r\n *\r\n * @name rc4\r\n * @function\r\n * @param {string} key Byte string of encryption key\r\n * @param {string} data Byte string of data to be encrypted\r\n * @returns {string} Encrypted string\r\n */\r\nfunction rc4(key, data) {\r\n var lastKey, lastState;\r\n if (key !== lastKey) {\r\n var k = repeat(key, ((256 / key.length) >> 0) + 1);\r\n var state = [];\r\n for (var i = 0; i < 256; i++) {\r\n state[i] = i;\r\n }\r\n var j = 0;\r\n for (var i = 0; i < 256; i++) {\r\n var t = state[i];\r\n j = (j + t + k.charCodeAt(i)) % 256;\r\n state[i] = state[j];\r\n state[j] = t;\r\n }\r\n lastKey = key;\r\n lastState = state;\r\n } else {\r\n state = lastState;\r\n }\r\n var length = data.length;\r\n var a = 0;\r\n var b = 0;\r\n var out = \"\";\r\n for (var i = 0; i < length; i++) {\r\n a = (a + 1) % 256;\r\n t = state[a];\r\n b = (b + t) % 256;\r\n state[a] = state[b];\r\n state[b] = t;\r\n k = state[(state[a] + state[b]) % 256];\r\n out += String.fromCharCode(data.charCodeAt(i) ^ k);\r\n }\r\n return out;\r\n}\r\n\r\nexport { rc4 };\r\n","/**\r\n * @license\r\n * Licensed under the MIT License.\r\n * http://opensource.org/licenses/mit-license\r\n * Author: Owen Leong (@owenl131)\r\n * Date: 15 Oct 2020\r\n * References:\r\n * https://www.cs.cmu.edu/~dst/Adobe/Gallery/anon21jul01-pdf-encryption.txt\r\n * https://github.com/foliojs/pdfkit/blob/master/lib/security.js\r\n * http://www.fpdf.org/en/script/script37.php\r\n */\r\n\r\nimport { md5Bin } from \"./md5.js\";\r\nimport { rc4 } from \"./rc4.js\";\r\n\r\nvar permissionOptions = {\r\n print: 4,\r\n modify: 8,\r\n copy: 16,\r\n \"annot-forms\": 32\r\n};\r\n\r\n/**\r\n * Initializes encryption settings\r\n *\r\n * @name constructor\r\n * @function\r\n * @param {Array} permissions Permissions allowed for user, \"print\", \"modify\", \"copy\" and \"annot-forms\".\r\n * @param {String} userPassword Permissions apply to this user. Leaving this empty means the document\r\n * is not password protected but viewer has the above permissions.\r\n * @param {String} ownerPassword Owner has full functionalities to the file.\r\n * @param {String} fileId As hex string, should be same as the file ID in the trailer.\r\n * @example\r\n * var security = new PDFSecurity([\"print\"])\r\n */\r\nfunction PDFSecurity(permissions, userPassword, ownerPassword, fileId) {\r\n this.v = 1; // algorithm 1, future work can add in more recent encryption schemes\r\n this.r = 2; // revision 2\r\n\r\n // set flags for what functionalities the user can access\r\n let protection = 192;\r\n permissions.forEach(function(perm) {\r\n if (typeof permissionOptions.perm !== \"undefined\") {\r\n throw new Error(\"Invalid permission: \" + perm);\r\n }\r\n protection += permissionOptions[perm];\r\n });\r\n\r\n // padding is used to pad the passwords to 32 bytes, also is hashed and stored in the final PDF\r\n this.padding =\r\n \"\\x28\\xBF\\x4E\\x5E\\x4E\\x75\\x8A\\x41\\x64\\x00\\x4E\\x56\\xFF\\xFA\\x01\\x08\" +\r\n \"\\x2E\\x2E\\x00\\xB6\\xD0\\x68\\x3E\\x80\\x2F\\x0C\\xA9\\xFE\\x64\\x53\\x69\\x7A\";\r\n let paddedUserPassword = (userPassword + this.padding).substr(0, 32);\r\n let paddedOwnerPassword = (ownerPassword + this.padding).substr(0, 32);\r\n\r\n this.O = this.processOwnerPassword(paddedUserPassword, paddedOwnerPassword);\r\n this.P = -((protection ^ 255) + 1);\r\n this.encryptionKey = md5Bin(\r\n paddedUserPassword +\r\n this.O +\r\n this.lsbFirstWord(this.P) +\r\n this.hexToBytes(fileId)\r\n ).substr(0, 5);\r\n this.U = rc4(this.encryptionKey, this.padding);\r\n}\r\n\r\n/**\r\n * Breaks down a 4-byte number into its individual bytes, with the least significant bit first\r\n *\r\n * @name lsbFirstWord\r\n * @function\r\n * @param {number} data 32-bit number\r\n * @returns {Array}\r\n */\r\nPDFSecurity.prototype.lsbFirstWord = function(data) {\r\n return String.fromCharCode(\r\n (data >> 0) & 0xff,\r\n (data >> 8) & 0xff,\r\n (data >> 16) & 0xff,\r\n (data >> 24) & 0xff\r\n );\r\n};\r\n\r\n/**\r\n * Converts a byte string to a hex string\r\n *\r\n * @name toHexString\r\n * @function\r\n * @param {String} byteString Byte string\r\n * @returns {String}\r\n */\r\nPDFSecurity.prototype.toHexString = function(byteString) {\r\n return byteString\r\n .split(\"\")\r\n .map(function(byte) {\r\n return (\"0\" + (byte.charCodeAt(0) & 0xff).toString(16)).slice(-2);\r\n })\r\n .join(\"\");\r\n};\r\n\r\n/**\r\n * Converts a hex string to a byte string\r\n *\r\n * @name hexToBytes\r\n * @function\r\n * @param {String} hex Hex string\r\n * @returns {String}\r\n */\r\nPDFSecurity.prototype.hexToBytes = function(hex) {\r\n for (var bytes = [], c = 0; c < hex.length; c += 2)\r\n bytes.push(String.fromCharCode(parseInt(hex.substr(c, 2), 16)));\r\n return bytes.join(\"\");\r\n};\r\n\r\n/**\r\n * Computes the 'O' field in the encryption dictionary\r\n *\r\n * @name processOwnerPassword\r\n * @function\r\n * @param {String} paddedUserPassword Byte string of padded user password\r\n * @param {String} paddedOwnerPassword Byte string of padded owner password\r\n * @returns {String}\r\n */\r\nPDFSecurity.prototype.processOwnerPassword = function(\r\n paddedUserPassword,\r\n paddedOwnerPassword\r\n) {\r\n let key = md5Bin(paddedOwnerPassword).substr(0, 5);\r\n return rc4(key, paddedUserPassword);\r\n};\r\n\r\n/**\r\n * Returns an encryptor function which can take in a byte string and returns the encrypted version\r\n *\r\n * @name encryptor\r\n * @function\r\n * @param {number} objectId\r\n * @param {number} generation Not sure what this is for, you can set it to 0\r\n * @returns {Function}\r\n * @example\r\n * out(\"stream\");\r\n * encryptor = security.encryptor(object.id, 0);\r\n * out(encryptor(data));\r\n * out(\"endstream\");\r\n */\r\nPDFSecurity.prototype.encryptor = function(objectId, generation) {\r\n let key = md5Bin(\r\n this.encryptionKey +\r\n String.fromCharCode(\r\n objectId & 0xff,\r\n (objectId >> 8) & 0xff,\r\n (objectId >> 16) & 0xff,\r\n generation & 0xff,\r\n (generation >> 8) & 0xff\r\n )\r\n ).substr(0, 10);\r\n return function(data) {\r\n return rc4(key, data);\r\n };\r\n};\r\n\r\nexport { PDFSecurity };\r\n","/**\n * Convert string to `PDF Name Object`.\n * Detail: PDF Reference 1.3 - Chapter 3.2.4 Name Object\n * @param str\n */\nfunction toPDFName(str) {\n // eslint-disable-next-line no-control-regex\n if (/[^\\u0000-\\u00ff]/.test(str)) {\n // non ascii string\n throw new Error(\n \"Invalid PDF Name Object: \" + str + \", Only accept ASCII characters.\"\n );\n }\n var result = \"\",\n strLength = str.length;\n for (var i = 0; i < strLength; i++) {\n var charCode = str.charCodeAt(i);\n if (\n charCode < 0x21 ||\n charCode === 0x23 /* # */ ||\n charCode === 0x25 /* % */ ||\n charCode === 0x28 /* ( */ ||\n charCode === 0x29 /* ) */ ||\n charCode === 0x2f /* / */ ||\n charCode === 0x3c /* < */ ||\n charCode === 0x3e /* > */ ||\n charCode === 0x5b /* [ */ ||\n charCode === 0x5d /* ] */ ||\n charCode === 0x7b /* { */ ||\n charCode === 0x7d /* } */ ||\n charCode > 0x7e\n ) {\n // Char CharCode hexStr paddingHexStr Result\n // \"\\t\" 9 9 09 #09\n // \" \" 32 20 20 #20\n // \"©\" 169 a9 a9 #a9\n var hexStr = charCode.toString(16),\n paddingHexStr = (\"0\" + hexStr).slice(-2);\n\n result += \"#\" + paddingHexStr;\n } else {\n // Other ASCII printable characters between 0x21 <= X <= 0x7e\n result += str[i];\n }\n }\n return result;\n}\n\nexport { toPDFName };\n","/* eslint-disable no-console */\r\n\r\nimport { saveAs } from \"./libs/FileSaver.js\";\r\nimport { globalObject } from \"./libs/globalObject.js\";\r\nimport { RGBColor } from \"./libs/rgbcolor.js\";\r\nimport { btoa } from \"./libs/AtobBtoa.js\";\r\nimport { console } from \"./libs/console.js\";\r\nimport { PDFSecurity } from \"./libs/pdfsecurity.js\";\r\nimport { toPDFName } from \"./libs/pdfname.js\";\r\n/**\r\n * jsPDF's Internal PubSub Implementation.\r\n * Backward compatible rewritten on 2014 by\r\n * Diego Casorran, https://github.com/diegocr\r\n *\r\n * @class\r\n * @name PubSub\r\n * @ignore\r\n */\r\nfunction PubSub(context) {\r\n if (typeof context !== \"object\") {\r\n throw new Error(\r\n \"Invalid Context passed to initialize PubSub (jsPDF-module)\"\r\n );\r\n }\r\n var topics = {};\r\n\r\n this.subscribe = function(topic, callback, once) {\r\n once = once || false;\r\n if (\r\n typeof topic !== \"string\" ||\r\n typeof callback !== \"function\" ||\r\n typeof once !== \"boolean\"\r\n ) {\r\n throw new Error(\r\n \"Invalid arguments passed to PubSub.subscribe (jsPDF-module)\"\r\n );\r\n }\r\n\r\n if (!topics.hasOwnProperty(topic)) {\r\n topics[topic] = {};\r\n }\r\n\r\n var token = Math.random().toString(35);\r\n topics[topic][token] = [callback, !!once];\r\n\r\n return token;\r\n };\r\n\r\n this.unsubscribe = function(token) {\r\n for (var topic in topics) {\r\n if (topics[topic][token]) {\r\n delete topics[topic][token];\r\n if (Object.keys(topics[topic]).length === 0) {\r\n delete topics[topic];\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n this.publish = function(topic) {\r\n if (topics.hasOwnProperty(topic)) {\r\n var args = Array.prototype.slice.call(arguments, 1),\r\n tokens = [];\r\n\r\n for (var token in topics[topic]) {\r\n var sub = topics[topic][token];\r\n try {\r\n sub[0].apply(context, args);\r\n } catch (ex) {\r\n if (globalObject.console) {\r\n console.error(\"jsPDF PubSub Error\", ex.message, ex);\r\n }\r\n }\r\n if (sub[1]) tokens.push(token);\r\n }\r\n if (tokens.length) tokens.forEach(this.unsubscribe);\r\n }\r\n };\r\n\r\n this.getTopics = function() {\r\n return topics;\r\n };\r\n}\r\n\r\nfunction GState(parameters) {\r\n if (!(this instanceof GState)) {\r\n return new GState(parameters);\r\n }\r\n\r\n /**\r\n * @name GState#opacity\r\n * @type {any}\r\n */\r\n /**\r\n * @name GState#stroke-opacity\r\n * @type {any}\r\n */\r\n var supported = \"opacity,stroke-opacity\".split(\",\");\r\n for (var p in parameters) {\r\n if (parameters.hasOwnProperty(p) && supported.indexOf(p) >= 0) {\r\n this[p] = parameters[p];\r\n }\r\n }\r\n /**\r\n * @name GState#id\r\n * @type {string}\r\n */\r\n this.id = \"\"; // set by addGState()\r\n /**\r\n * @name GState#objectNumber\r\n * @type {number}\r\n */\r\n this.objectNumber = -1; // will be set by putGState()\r\n}\r\n\r\nGState.prototype.equals = function equals(other) {\r\n var ignore = \"id,objectNumber,equals\";\r\n var p;\r\n if (!other || typeof other !== typeof this) return false;\r\n var count = 0;\r\n for (p in this) {\r\n if (ignore.indexOf(p) >= 0) continue;\r\n if (this.hasOwnProperty(p) && !other.hasOwnProperty(p)) return false;\r\n if (this[p] !== other[p]) return false;\r\n count++;\r\n }\r\n for (p in other) {\r\n if (other.hasOwnProperty(p) && ignore.indexOf(p) < 0) count--;\r\n }\r\n return count === 0;\r\n};\r\n\r\nfunction Pattern(gState, matrix) {\r\n this.gState = gState;\r\n this.matrix = matrix;\r\n\r\n this.id = \"\"; // set by addPattern()\r\n this.objectNumber = -1; // will be set by putPattern()\r\n}\r\n\r\nfunction ShadingPattern(type, coords, colors, gState, matrix) {\r\n if (!(this instanceof ShadingPattern)) {\r\n return new ShadingPattern(type, coords, colors, gState, matrix);\r\n }\r\n\r\n // see putPattern() for information how they are realized\r\n this.type = type === \"axial\" ? 2 : 3;\r\n this.coords = coords;\r\n this.colors = colors;\r\n\r\n Pattern.call(this, gState, matrix);\r\n}\r\n\r\nfunction TilingPattern(boundingBox, xStep, yStep, gState, matrix) {\r\n if (!(this instanceof TilingPattern)) {\r\n return new TilingPattern(boundingBox, xStep, yStep, gState, matrix);\r\n }\r\n\r\n this.boundingBox = boundingBox;\r\n this.xStep = xStep;\r\n this.yStep = yStep;\r\n\r\n this.stream = \"\"; // set by endTilingPattern();\r\n\r\n this.cloneIndex = 0;\r\n\r\n Pattern.call(this, gState, matrix);\r\n}\r\n\r\n/**\r\n * Creates new jsPDF document object instance.\r\n * @name jsPDF\r\n * @class\r\n * @param {Object} [options] - Collection of settings initializing the jsPDF-instance\r\n * @param {string} [options.orientation=portrait] - Orientation of the first page. Possible values are \"portrait\" or \"landscape\" (or shortcuts \"p\" or \"l\").<br />\r\n * @param {string} [options.unit=mm] Measurement unit (base unit) to be used when coordinates are specified.<br />\r\n * Possible values are \"pt\" (points), \"mm\", \"cm\", \"in\", \"px\", \"pc\", \"em\" or \"ex\". Note that in order to get the correct scaling for \"px\"\r\n * units, you need to enable the hotfix \"px_scaling\" by setting options.hotfixes = [\"px_scaling\"].\r\n * @param {string/Array} [options.format=a4] The format of the first page. Can be:<ul><li>a0 - a10</li><li>b0 - b10</li><li>c0 - c10</li><li>dl</li><li>letter</li><li>government-letter</li><li>legal</li><li>junior-legal</li><li>ledger</li><li>tabloid</li><li>credit-card</li></ul><br />\r\n * Default is \"a4\". If you want to use your own format just pass instead of one of the above predefined formats the size as an number-array, e.g. [595.28, 841.89]\r\n * @param {boolean} [options.putOnlyUsedFonts=false] Only put fonts into the PDF, which were used.\r\n * @param {boolean} [options.compress=false] Compress the generated PDF.\r\n * @param {number} [options.precision=16] Precision of the element-positions.\r\n * @param {number} [options.userUnit=1.0] Not to be confused with the base unit. Please inform yourself before you use it.\r\n * @param {string[]} [options.hotfixes] An array of strings to enable hotfixes such as correct pixel scaling.\r\n * @param {Object} [options.encryption]\r\n * @param {string} [options.encryption.userPassword] Password for the user bound by the given permissions list.\r\n * @param {string} [options.encryption.ownerPassword] Both userPassword and ownerPassword should be set for proper authentication.\r\n * @param {string[]} [options.encryption.userPermissions] Array of permissions \"print\", \"modify\", \"copy\", \"annot-forms\", accessible by the user.\r\n * @param {number|\"smart\"} [options.floatPrecision=16]\r\n * @returns {jsPDF} jsPDF-instance\r\n * @description\r\n * ```\r\n * {\r\n * orientation: 'p',\r\n * unit: 'mm',\r\n * format: 'a4',\r\n * putOnlyUsedFonts:true,\r\n * floatPrecision: 16 // or \"smart\", default is 16\r\n * }\r\n * ```\r\n *\r\n * @constructor\r\n */\r\nfunction jsPDF(options) {\r\n var orientation = typeof arguments[0] === \"string\" ? arguments[0] : \"p\";\r\n var unit = arguments[1];\r\n var format = arguments[2];\r\n var compressPdf = arguments[3];\r\n var filters = [];\r\n var userUnit = 1.0;\r\n var precision;\r\n var floatPrecision = 16;\r\n var defaultPathOperation = \"S\";\r\n var encryptionOptions = null;\r\n\r\n options = options || {};\r\n\r\n if (typeof options === \"object\") {\r\n orientation = options.orientation;\r\n unit = options.unit || unit;\r\n format = options.format || format;\r\n compressPdf = options.compress || options.compressPdf || compressPdf;\r\n encryptionOptions = options.encryption || null;\r\n if (encryptionOptions !== null) {\r\n encryptionOptions.userPassword = encryptionOptions.userPassword || \"\";\r\n encryptionOptions.ownerPassword = encryptionOptions.ownerPassword || \"\";\r\n encryptionOptions.userPermissions =\r\n encryptionOptions.userPermissions || [];\r\n }\r\n userUnit =\r\n typeof options.userUnit === \"number\" ? Math.abs(options.userUnit) : 1.0;\r\n if (typeof options.precision !== \"undefined\") {\r\n precision = options.precision;\r\n }\r\n if (typeof options.floatPrecision !== \"undefined\") {\r\n floatPrecision = options.floatPrecision;\r\n }\r\n defaultPathOperation = options.defaultPathOperation || \"S\";\r\n }\r\n\r\n filters =\r\n options.filters || (compressPdf === true ? [\"FlateEncode\"] : filters);\r\n\r\n unit = unit || \"mm\";\r\n orientation = (\"\" + (orientation || \"P\")).toLowerCase();\r\n var putOnlyUsedFonts = options.putOnlyUsedFonts || false;\r\n var usedFonts = {};\r\n\r\n var API = {\r\n internal: {},\r\n __private__: {}\r\n };\r\n\r\n API.__private__.PubSub = PubSub;\r\n\r\n var pdfVersion = \"1.3\";\r\n var getPdfVersion = (API.__private__.getPdfVersion = function() {\r\n return pdfVersion;\r\n });\r\n\r\n API.__private__.setPdfVersion = function(value) {\r\n pdfVersion = value;\r\n };\r\n\r\n // Size in pt of various paper formats\r\n var pageFormats = {\r\n a0: [2383.94, 3370.39],\r\n a1: [1683.78, 2383.94],\r\n a2: [1190.55, 1683.78],\r\n a3: [841.89, 1190.55],\r\n a4: [595.28, 841.89],\r\n a5: [419.53, 595.28],\r\n a6: [297.64, 419.53],\r\n a7: [209.76, 297.64],\r\n a8: [147.4, 209.76],\r\n a9: [104.88, 147.4],\r\n a10: [73.7, 104.88],\r\n b0: [2834.65, 4008.19],\r\n b1: [2004.09, 2834.65],\r\n b2: [1417.32, 2004.09],\r\n b3: [1000.63, 1417.32],\r\n b4: [708.66, 1000.63],\r\n b5: [498.9, 708.66],\r\n b6: [354.33, 498.9],\r\n b7: [249.45, 354.33],\r\n b8: [175.75, 249.45],\r\n b9: [124.72, 175.75],\r\n b10: [87.87, 124.72],\r\n c0: [2599.37, 3676.54],\r\n c1: [1836.85, 2599.37],\r\n c2: [1298.27, 1836.85],\r\n c3: [918.43, 1298.27],\r\n c4: [649.13, 918.43],\r\n c5: [459.21, 649.13],\r\n c6: [323.15, 459.21],\r\n c7: [229.61, 323.15],\r\n c8: [161.57, 229.61],\r\n c9: [113.39, 161.57],\r\n c10: [79.37, 113.39],\r\n dl: [311.81, 623.62],\r\n letter: [612, 792],\r\n \"government-letter\": [576, 756],\r\n legal: [612, 1008],\r\n \"junior-legal\": [576, 360],\r\n ledger: [1224, 792],\r\n tabloid: [792, 1224],\r\n \"credit-card\": [153, 243]\r\n };\r\n\r\n API.__private__.getPageFormats = function() {\r\n return pageFormats;\r\n };\r\n\r\n var getPageFormat = (API.__private__.getPageFormat = function(value) {\r\n return pageFormats[value];\r\n });\r\n\r\n format = format || \"a4\";\r\n\r\n var ApiMode = {\r\n COMPAT: \"compat\",\r\n ADVANCED: \"advanced\"\r\n };\r\n var apiMode = ApiMode.COMPAT;\r\n\r\n function advancedAPI() {\r\n // prepend global change of basis matrix\r\n // (Now, instead of converting every coordinate to the pdf coordinate system, we apply a matrix\r\n // that does this job for us (however, texts, images and similar objects must be drawn bottom up))\r\n this.saveGraphicsState();\r\n out(\r\n new Matrix(\r\n scaleFactor,\r\n 0,\r\n 0,\r\n -scaleFactor,\r\n 0,\r\n getPageHeight() * scaleFactor\r\n ).toString() + \" cm\"\r\n );\r\n this.setFontSize(this.getFontSize() / scaleFactor);\r\n\r\n // The default in MrRio's implementation is \"S\" (stroke), whereas the default in the yWorks implementation\r\n // was \"n\" (none). Although this has nothing to do with transforms, we should use the API switch here.\r\n defaultPathOperation = \"n\";\r\n\r\n apiMode = ApiMode.ADVANCED;\r\n }\r\n\r\n function compatAPI() {\r\n this.restoreGraphicsState();\r\n defaultPathOperation = \"S\";\r\n apiMode = ApiMode.COMPAT;\r\n }\r\n\r\n /**\r\n * @function combineFontStyleAndFontWeight\r\n * @param {string} fontStyle Fontstyle or variant. Example: \"italic\".\r\n * @param {number | string} fontWeight Weight of the Font. Example: \"normal\" | 400\r\n * @returns {string}\r\n * @private\r\n */\r\n var combineFontStyleAndFontWeight = (API.__private__.combineFontStyleAndFontWeight = function(\r\n fontStyle,\r\n fontWeight\r\n ) {\r\n if (\r\n (fontStyle == \"bold\" && fontWeight == \"normal\") ||\r\n (fontStyle == \"bold\" && fontWeight == 400) ||\r\n (fontStyle == \"normal\" && fontWeight == \"italic\") ||\r\n (fontStyle == \"bold\" && fontWeight == \"italic\")\r\n ) {\r\n throw new Error(\"Invalid Combination of fontweight and fontstyle\");\r\n }\r\n if (fontWeight) {\r\n fontStyle =\r\n fontWeight == 400 || fontWeight === \"normal\"\r\n ? fontStyle === \"italic\"\r\n ? \"italic\"\r\n : \"normal\"\r\n : (fontWeight == 700 || fontWeight === \"bold\") &&\r\n fontStyle === \"normal\"\r\n ? \"bold\"\r\n : (fontWeight == 700 ? \"bold\" : fontWeight) + \"\" + fontStyle;\r\n }\r\n return fontStyle;\r\n });\r\n\r\n /**\r\n * @callback ApiSwitchBody\r\n * @param {jsPDF} pdf\r\n */\r\n\r\n /**\r\n * For compatibility reasons jsPDF offers two API modes which differ in the way they convert between the the usual\r\n * screen coordinates and the PDF coordinate system.\r\n * - \"compat\": Offers full compatibility across all plugins but does not allow arbitrary transforms\r\n * - \"advanced\": Allows arbitrary transforms and more advanced features like pattern fills. Some plugins might\r\n * not support this mode, though.\r\n * Initial mode is \"compat\".\r\n *\r\n * You can either provide a callback to the body argument, which means that jsPDF will automatically switch back to\r\n * the original API mode afterwards; or you can omit the callback and switch back manually using {@link compatAPI}.\r\n *\r\n * Note, that the calls to {@link saveGraphicsState} and {@link restoreGraphicsState} need to be balanced within the\r\n * callback or between calls of this method and its counterpart {@link compatAPI}. Calls to {@link beginFormObject}\r\n * or {@link beginTilingPattern} need to be closed by their counterparts before switching back to \"compat\" API mode.\r\n *\r\n * @param {ApiSwitchBody=} body When provided, this callback will be called after the API mode has been switched.\r\n * The API mode will be switched back automatically afterwards.\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name advancedAPI\r\n */\r\n API.advancedAPI = function(body) {\r\n var doSwitch = apiMode === ApiMode.COMPAT;\r\n\r\n if (doSwitch) {\r\n advancedAPI.call(this);\r\n }\r\n\r\n if (typeof body !== \"function\") {\r\n return this;\r\n }\r\n\r\n body(this);\r\n\r\n if (doSwitch) {\r\n compatAPI.call(this);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches to \"compat\" API mode. See {@link advancedAPI} for more details.\r\n *\r\n * @param {ApiSwitchBody=} body When provided, this callback will be called after the API mode has been switched.\r\n * The API mode will be switched back automatically afterwards.\r\n * @return {jsPDF}\r\n * @memberof jsPDF#\r\n * @name compatApi\r\n */\r\n API.compatAPI = function(body) {\r\n var doSwitch = apiMode === ApiMode.ADVANCED;\r\n\r\n if (doSwitch) {\r\n compatAPI.call(this);\r\n }\r\n\r\n if (typeof body !== \"function\") {\r\n return this;\r\n }\r\n\r\n body(this);\r\n\r\n if (doSwitch) {\r\n advancedAPI.call(this);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * @return {boolean} True iff the current API mode is \"advanced\". See {@link advancedAPI}.\r\n * @memberof jsPDF#\r\n * @name isAdvancedAPI\r\n */\r\n API.isAdvancedAPI = function() {\r\n return apiMode === ApiMode.ADVANCED;\r\n };\r\n\r\n var advancedApiModeTrap = function(methodName) {\r\n if (apiMode !== ApiMode.ADVANCED) {\r\n throw new Error(\r\n methodName +\r\n \" is only available in 'advanced' API mode. \" +\r\n \"You need to call advancedAPI() first.\"\r\n );\r\n }\r\n };\r\n\r\n var roundToPrecision = (API.roundToPrecision = API.__private__.roundToPrecision = function(\r\n number,\r\n parmPrecision\r\n ) {\r\n var tmpPrecision = precision || parmPrecision;\r\n if (isNaN(number) || isNaN(tmpPrecision)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.roundToPrecision\");\r\n }\r\n return number.toFixed(tmpPrecision).replace(/0+$/, \"\");\r\n });\r\n\r\n // high precision float\r\n var hpf;\r\n if (typeof floatPrecision === \"number\") {\r\n hpf = API.hpf = API.__private__.hpf = function(number) {\r\n if (isNaN(number)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.hpf\");\r\n }\r\n return roundToPrecision(number, floatPrecision);\r\n };\r\n } else if (floatPrecision === \"smart\") {\r\n hpf = API.hpf = API.__private__.hpf = function(number) {\r\n if (isNaN(number)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.hpf\");\r\n }\r\n if (number > -1 && number < 1) {\r\n return roundToPrecision(number, 16);\r\n } else {\r\n return roundToPrecision(number, 5);\r\n }\r\n };\r\n } else {\r\n hpf = API.hpf = API.__private__.hpf = function(number) {\r\n if (isNaN(number)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.hpf\");\r\n }\r\n return roundToPrecision(number, 16);\r\n };\r\n }\r\n var f2 = (API.f2 = API.__private__.f2 = function(number) {\r\n if (isNaN(number)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.f2\");\r\n }\r\n return roundToPrecision(number, 2);\r\n });\r\n\r\n var f3 = (API.__private__.f3 = function(number) {\r\n if (isNaN(number)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.f3\");\r\n }\r\n return roundToPrecision(number, 3);\r\n });\r\n\r\n var scale = (API.scale = API.__private__.scale = function(number) {\r\n if (isNaN(number)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.scale\");\r\n }\r\n if (apiMode === ApiMode.COMPAT) {\r\n return number * scaleFactor;\r\n } else if (apiMode === ApiMode.ADVANCED) {\r\n return number;\r\n }\r\n });\r\n\r\n var transformY = function(y) {\r\n if (apiMode === ApiMode.COMPAT) {\r\n return getPageHeight() - y;\r\n } else if (apiMode === ApiMode.ADVANCED) {\r\n return y;\r\n }\r\n };\r\n\r\n var transformScaleY = function(y) {\r\n return scale(transformY(y));\r\n };\r\n\r\n /**\r\n * @name setPrecision\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n * @param {string} precision\r\n * @returns {jsPDF}\r\n */\r\n API.__private__.setPrecision = API.setPrecision = function(value) {\r\n if (typeof parseInt(value, 10) === \"number\") {\r\n precision = parseInt(value, 10);\r\n }\r\n };\r\n\r\n var fileId = \"00000000000000000000000000000000\";\r\n\r\n var getFileId = (API.__private__.getFileId = function() {\r\n return fileId;\r\n });\r\n\r\n var setFileId = (API.__private__.setFileId = function(value) {\r\n if (typeof value !== \"undefined\" && /^[a-fA-F0-9]{32}$/.test(value)) {\r\n fileId = value.toUpperCase();\r\n } else {\r\n fileId = fileId\r\n .split(\"\")\r\n .map(function() {\r\n return \"ABCDEF0123456789\".charAt(Math.floor(Math.random() * 16));\r\n })\r\n .join(\"\");\r\n }\r\n\r\n if (encryptionOptions !== null) {\r\n encryption = new PDFSecurity(\r\n encryptionOptions.userPermissions,\r\n encryptionOptions.userPassword,\r\n encryptionOptions.ownerPassword,\r\n fileId\r\n );\r\n }\r\n return fileId;\r\n });\r\n\r\n /**\r\n * @name setFileId\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n * @param {string} value GUID.\r\n * @returns {jsPDF}\r\n */\r\n API.setFileId = function(value) {\r\n setFileId(value);\r\n return this;\r\n };\r\n\r\n /**\r\n * @name getFileId\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n *\r\n * @returns {string} GUID.\r\n */\r\n API.getFileId = function() {\r\n return getFileId();\r\n };\r\n\r\n var creationDate;\r\n\r\n var convertDateToPDFDate = (API.__private__.convertDateToPDFDate = function(\r\n parmDate\r\n ) {\r\n var result = \"\";\r\n var tzoffset = parmDate.getTimezoneOffset(),\r\n tzsign = tzoffset < 0 ? \"+\" : \"-\",\r\n tzhour = Math.floor(Math.abs(tzoffset / 60)),\r\n tzmin = Math.abs(tzoffset % 60),\r\n timeZoneString = [tzsign, padd2(tzhour), \"'\", padd2(tzmin), \"'\"].join(\"\");\r\n\r\n result = [\r\n \"D:\",\r\n parmDate.getFullYear(),\r\n padd2(parmDate.getMonth() + 1),\r\n padd2(parmDate.getDate()),\r\n padd2(parmDate.getHours()),\r\n padd2(parmDate.getMinutes()),\r\n padd2(parmDate.getSeconds()),\r\n timeZoneString\r\n ].join(\"\");\r\n return result;\r\n });\r\n\r\n var convertPDFDateToDate = (API.__private__.convertPDFDateToDate = function(\r\n parmPDFDate\r\n ) {\r\n var year = parseInt(parmPDFDate.substr(2, 4), 10);\r\n var month = parseInt(parmPDFDate.substr(6, 2), 10) - 1;\r\n var date = parseInt(parmPDFDate.substr(8, 2), 10);\r\n var hour = parseInt(parmPDFDate.substr(10, 2), 10);\r\n var minutes = parseInt(parmPDFDate.substr(12, 2), 10);\r\n var seconds = parseInt(parmPDFDate.substr(14, 2), 10);\r\n // var timeZoneHour = parseInt(parmPDFDate.substr(16, 2), 10);\r\n // var timeZoneMinutes = parseInt(parmPDFDate.substr(20, 2), 10);\r\n\r\n var resultingDate = new Date(year, month, date, hour, minutes, seconds, 0);\r\n return resultingDate;\r\n });\r\n\r\n var setCreationDate = (API.__private__.setCreationDate = function(date) {\r\n var tmpCreationDateString;\r\n var regexPDFCreationDate = /^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\\+0[0-9]|\\+1[0-4]|-0[0-9]|-1[0-1])'(0[0-9]|[1-5][0-9])'?$/;\r\n if (typeof date === \"undefined\") {\r\n date = new Date();\r\n }\r\n\r\n if (date instanceof Date) {\r\n tmpCreationDateString = convertDateToPDFDate(date);\r\n } else if (regexPDFCreationDate.test(date)) {\r\n tmpCreationDateString = date;\r\n } else {\r\n throw new Error(\"Invalid argument passed to jsPDF.setCreationDate\");\r\n }\r\n creationDate = tmpCreationDateString;\r\n return creationDate;\r\n });\r\n\r\n var getCreationDate = (API.__private__.getCreationDate = function(type) {\r\n var result = creationDate;\r\n if (type === \"jsDate\") {\r\n result = convertPDFDateToDate(creationDate);\r\n }\r\n return result;\r\n });\r\n\r\n /**\r\n * @name setCreationDate\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n * @param {Object} date\r\n * @returns {jsPDF}\r\n */\r\n API.setCreationDate = function(date) {\r\n setCreationDate(date);\r\n return this;\r\n };\r\n\r\n /**\r\n * @name getCreationDate\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n * @param {Object} type\r\n * @returns {Object}\r\n */\r\n API.getCreationDate = function(type) {\r\n return getCreationDate(type);\r\n };\r\n\r\n var padd2 = (API.__private__.padd2 = function(number) {\r\n return (\"0\" + parseInt(number)).slice(-2);\r\n });\r\n\r\n var padd2Hex = (API.__private__.padd2Hex = function(hexString) {\r\n hexString = hexString.toString();\r\n return (\"00\" + hexString).substr(hexString.length);\r\n });\r\n\r\n var objectNumber = 0; // 'n' Current object number\r\n var offsets = []; // List of offsets. Activated and reset by buildDocument(). Pupulated by various calls buildDocument makes.\r\n var content = [];\r\n var contentLength = 0;\r\n var additionalObjects = [];\r\n\r\n var pages = [];\r\n var currentPage;\r\n var hasCustomDestination = false;\r\n var outputDestination = content;\r\n\r\n var resetDocument = function() {\r\n //reset fields relevant for objectNumber generation and xref.\r\n objectNumber = 0;\r\n contentLength = 0;\r\n content = [];\r\n offsets = [];\r\n additionalObjects = [];\r\n\r\n rootDictionaryObjId = newObjectDeferred();\r\n resourceDictionaryObjId = newObjectDeferred();\r\n };\r\n\r\n API.__private__.setCustomOutputDestination = function(destination) {\r\n hasCustomDestination = true;\r\n outputDestination = destination;\r\n };\r\n var setOutputDestination = function(destination) {\r\n if (!hasCustomDestination) {\r\n outputDestination = destination;\r\n }\r\n };\r\n\r\n API.__private__.resetCustomOutputDestination = function() {\r\n hasCustomDestination = false;\r\n outputDestination = content;\r\n };\r\n\r\n var out = (API.__private__.out = function(string) {\r\n string = string.toString();\r\n contentLength += string.length + 1;\r\n outputDestination.push(string);\r\n\r\n return outputDestination;\r\n });\r\n\r\n var write = (API.__private__.write = function(value) {\r\n return out(\r\n arguments.length === 1\r\n ? value.toString()\r\n : Array.prototype.join.call(arguments, \" \")\r\n );\r\n });\r\n\r\n var getArrayBuffer = (API.__private__.getArrayBuffer = function(data) {\r\n var len = data.length,\r\n ab = new ArrayBuffer(len),\r\n u8 = new Uint8Array(ab);\r\n\r\n while (len--) u8[len] = data.charCodeAt(len);\r\n return ab;\r\n });\r\n\r\n var standardFonts = [\r\n [\"Helvetica\", \"helvetica\", \"normal\", \"WinAnsiEncoding\"],\r\n [\"Helvetica-Bold\", \"helvetica\", \"bold\", \"WinAnsiEncoding\"],\r\n [\"Helvetica-Oblique\", \"helvetica\", \"italic\", \"WinAnsiEncoding\"],\r\n [\"Helvetica-BoldOblique\", \"helvetica\", \"bolditalic\", \"WinAnsiEncoding\"],\r\n [\"Courier\", \"courier\", \"normal\", \"WinAnsiEncoding\"],\r\n [\"Courier-Bold\", \"courier\", \"bold\", \"WinAnsiEncoding\"],\r\n [\"Courier-Oblique\", \"courier\", \"italic\", \"WinAnsiEncoding\"],\r\n [\"Courier-BoldOblique\", \"courier\", \"bolditalic\", \"WinAnsiEncoding\"],\r\n [\"Times-Roman\", \"times\", \"normal\", \"WinAnsiEncoding\"],\r\n [\"Times-Bold\", \"times\", \"bold\", \"WinAnsiEncoding\"],\r\n [\"Times-Italic\", \"times\", \"italic\", \"WinAnsiEncoding\"],\r\n [\"Times-BoldItalic\", \"times\", \"bolditalic\", \"WinAnsiEncoding\"],\r\n [\"ZapfDingbats\", \"zapfdingbats\", \"normal\", null],\r\n [\"Symbol\", \"symbol\", \"normal\", null]\r\n ];\r\n\r\n API.__private__.getStandardFonts = function() {\r\n return standardFonts;\r\n };\r\n\r\n var activeFontSize = options.fontSize || 16;\r\n\r\n /**\r\n * Sets font size for upcoming text elements.\r\n *\r\n * @param {number} size Font size in points.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setFontSize\r\n */\r\n API.__private__.setFontSize = API.setFontSize = function(size) {\r\n if (apiMode === ApiMode.ADVANCED) {\r\n activeFontSize = size / scaleFactor;\r\n } else {\r\n activeFontSize = size;\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the fontsize for upcoming text elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number}\r\n * @memberof jsPDF#\r\n * @name getFontSize\r\n */\r\n var getFontSize = (API.__private__.getFontSize = API.getFontSize = function() {\r\n if (apiMode === ApiMode.COMPAT) {\r\n return activeFontSize;\r\n } else {\r\n return activeFontSize * scaleFactor;\r\n }\r\n });\r\n\r\n var R2L = options.R2L || false;\r\n\r\n /**\r\n * Set value of R2L functionality.\r\n *\r\n * @param {boolean} value\r\n * @function\r\n * @instance\r\n * @returns {jsPDF} jsPDF-instance\r\n * @memberof jsPDF#\r\n * @name setR2L\r\n */\r\n API.__private__.setR2L = API.setR2L = function(value) {\r\n R2L = value;\r\n return this;\r\n };\r\n\r\n /**\r\n * Get value of R2L functionality.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {boolean} jsPDF-instance\r\n * @memberof jsPDF#\r\n * @name getR2L\r\n */\r\n API.__private__.getR2L = API.getR2L = function() {\r\n return R2L;\r\n };\r\n\r\n var zoomMode; // default: 1;\r\n\r\n var setZoomMode = (API.__private__.setZoomMode = function(zoom) {\r\n var validZoomModes = [\r\n undefined,\r\n null,\r\n \"fullwidth\",\r\n \"fullheight\",\r\n \"fullpage\",\r\n \"original\"\r\n ];\r\n\r\n if (/^(?:\\d+\\.\\d*|\\d*\\.\\d+|\\d+)%$/.test(zoom)) {\r\n zoomMode = zoom;\r\n } else if (!isNaN(zoom)) {\r\n zoomMode = parseInt(zoom, 10);\r\n } else if (validZoomModes.indexOf(zoom) !== -1) {\r\n zoomMode = zoom;\r\n } else {\r\n throw new Error(\r\n 'zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. \"' +\r\n zoom +\r\n '\" is not recognized.'\r\n );\r\n }\r\n });\r\n\r\n API.__private__.getZoomMode = function() {\r\n return zoomMode;\r\n };\r\n\r\n var pageMode; // default: 'UseOutlines';\r\n var setPageMode = (API.__private__.setPageMode = function(pmode) {\r\n var validPageModes = [\r\n undefined,\r\n null,\r\n \"UseNone\",\r\n \"UseOutlines\",\r\n \"UseThumbs\",\r\n \"FullScreen\"\r\n ];\r\n\r\n if (validPageModes.indexOf(pmode) == -1) {\r\n throw new Error(\r\n 'Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. \"' +\r\n pmode +\r\n '\" is not recognized.'\r\n );\r\n }\r\n pageMode = pmode;\r\n });\r\n\r\n API.__private__.getPageMode = function() {\r\n return pageMode;\r\n };\r\n\r\n var layoutMode; // default: 'continuous';\r\n var setLayoutMode = (API.__private__.setLayoutMode = function(layout) {\r\n var validLayoutModes = [\r\n undefined,\r\n null,\r\n \"continuous\",\r\n \"single\",\r\n \"twoleft\",\r\n \"tworight\",\r\n \"two\"\r\n ];\r\n\r\n if (validLayoutModes.indexOf(layout) == -1) {\r\n throw new Error(\r\n 'Layout mode must be one of continuous, single, twoleft, tworight. \"' +\r\n layout +\r\n '\" is not recognized.'\r\n );\r\n }\r\n layoutMode = layout;\r\n });\r\n\r\n API.__private__.getLayoutMode = function() {\r\n return layoutMode;\r\n };\r\n\r\n /**\r\n * Set the display mode options of the page like zoom and layout.\r\n *\r\n * @name setDisplayMode\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n * @param {integer|String} zoom You can pass an integer or percentage as\r\n * a string. 2 will scale the document up 2x, '200%' will scale up by the\r\n * same amount. You can also set it to 'fullwidth', 'fullheight',\r\n * 'fullpage', or 'original'.\r\n *\r\n * Only certain PDF readers support this, such as Adobe Acrobat.\r\n *\r\n * @param {string} layout Layout mode can be: 'continuous' - this is the\r\n * default continuous scroll. 'single' - the single page mode only shows one\r\n * page at a time. 'twoleft' - two column left mode, first page starts on\r\n * the left, and 'tworight' - pages are laid out in two columns, with the\r\n * first page on the right. This would be used for books.\r\n * @param {string} pmode 'UseOutlines' - it shows the\r\n * outline of the document on the left. 'UseThumbs' - shows thumbnails along\r\n * the left. 'FullScreen' - prompts the user to enter fullscreen mode.\r\n *\r\n * @returns {jsPDF}\r\n */\r\n API.__private__.setDisplayMode = API.setDisplayMode = function(\r\n zoom,\r\n layout,\r\n pmode\r\n ) {\r\n setZoomMode(zoom);\r\n setLayoutMode(layout);\r\n setPageMode(pmode);\r\n return this;\r\n };\r\n\r\n var documentProperties = {\r\n title: \"\",\r\n subject: \"\",\r\n author: \"\",\r\n keywords: \"\",\r\n creator: \"\"\r\n };\r\n\r\n API.__private__.getDocumentProperty = function(key) {\r\n if (Object.keys(documentProperties).indexOf(key) === -1) {\r\n throw new Error(\"Invalid argument passed to jsPDF.getDocumentProperty\");\r\n }\r\n return documentProperties[key];\r\n };\r\n\r\n API.__private__.getDocumentProperties = function() {\r\n return documentProperties;\r\n };\r\n\r\n /**\r\n * Adds a properties to the PDF document.\r\n *\r\n * @param {Object} A property_name-to-property_value object structure.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setDocumentProperties\r\n */\r\n API.__private__.setDocumentProperties = API.setProperties = API.setDocumentProperties = function(\r\n properties\r\n ) {\r\n // copying only those properties we can render.\r\n for (var property in documentProperties) {\r\n if (documentProperties.hasOwnProperty(property) && properties[property]) {\r\n documentProperties[property] = properties[property];\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n API.__private__.setDocumentProperty = function(key, value) {\r\n if (Object.keys(documentProperties).indexOf(key) === -1) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.setDocumentProperty\");\r\n }\r\n return (documentProperties[key] = value);\r\n };\r\n\r\n var fonts = {}; // collection of font objects, where key is fontKey - a dynamically created label for a given font.\r\n var fontmap = {}; // mapping structure fontName > fontStyle > font key - performance layer. See addFont()\r\n var activeFontKey; // will be string representing the KEY of the font as combination of fontName + fontStyle\r\n var fontStateStack = []; //\r\n var patterns = {}; // collection of pattern objects\r\n var patternMap = {}; // see fonts\r\n var gStates = {}; // collection of graphic state objects\r\n var gStatesMap = {}; // see fonts\r\n var activeGState = null;\r\n var scaleFactor; // Scale factor\r\n var page = 0;\r\n var pagesContext = [];\r\n var events = new PubSub(API);\r\n var hotfixes = options.hotfixes || [];\r\n\r\n var renderTargets = {};\r\n var renderTargetMap = {};\r\n var renderTargetStack = [];\r\n var pageX;\r\n var pageY;\r\n var pageMatrix; // only used for FormObjects\r\n\r\n /**\r\n * A matrix object for 2D homogenous transformations: <br>\r\n * | a b 0 | <br>\r\n * | c d 0 | <br>\r\n * | e f 1 | <br>\r\n * pdf multiplies matrices righthand: v' = v x m1 x m2 x ...\r\n *\r\n * @class\r\n * @name Matrix\r\n * @param {number} sx\r\n * @param {number} shy\r\n * @param {number} shx\r\n * @param {number} sy\r\n * @param {number} tx\r\n * @param {number} ty\r\n * @constructor\r\n */\r\n var Matrix = function(sx, shy, shx, sy, tx, ty) {\r\n if (!(this instanceof Matrix)) {\r\n return new Matrix(sx, shy, shx, sy, tx, ty);\r\n }\r\n\r\n if (isNaN(sx)) sx = 1;\r\n if (isNaN(shy)) shy = 0;\r\n if (isNaN(shx)) shx = 0;\r\n if (isNaN(sy)) sy = 1;\r\n if (isNaN(tx)) tx = 0;\r\n if (isNaN(ty)) ty = 0;\r\n\r\n this._matrix = [sx, shy, shx, sy, tx, ty];\r\n };\r\n\r\n /**\r\n * @name sx\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"sx\", {\r\n get: function() {\r\n return this._matrix[0];\r\n },\r\n set: function(value) {\r\n this._matrix[0] = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name shy\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"shy\", {\r\n get: function() {\r\n return this._matrix[1];\r\n },\r\n set: function(value) {\r\n this._matrix[1] = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name shx\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"shx\", {\r\n get: function() {\r\n return this._matrix[2];\r\n },\r\n set: function(value) {\r\n this._matrix[2] = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name sy\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"sy\", {\r\n get: function() {\r\n return this._matrix[3];\r\n },\r\n set: function(value) {\r\n this._matrix[3] = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name tx\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"tx\", {\r\n get: function() {\r\n return this._matrix[4];\r\n },\r\n set: function(value) {\r\n this._matrix[4] = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name ty\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"ty\", {\r\n get: function() {\r\n return this._matrix[5];\r\n },\r\n set: function(value) {\r\n this._matrix[5] = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(Matrix.prototype, \"a\", {\r\n get: function() {\r\n return this._matrix[0];\r\n },\r\n set: function(value) {\r\n this._matrix[0] = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(Matrix.prototype, \"b\", {\r\n get: function() {\r\n return this._matrix[1];\r\n },\r\n set: function(value) {\r\n this._matrix[1] = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(Matrix.prototype, \"c\", {\r\n get: function() {\r\n return this._matrix[2];\r\n },\r\n set: function(value) {\r\n this._matrix[2] = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(Matrix.prototype, \"d\", {\r\n get: function() {\r\n return this._matrix[3];\r\n },\r\n set: function(value) {\r\n this._matrix[3] = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(Matrix.prototype, \"e\", {\r\n get: function() {\r\n return this._matrix[4];\r\n },\r\n set: function(value) {\r\n this._matrix[4] = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(Matrix.prototype, \"f\", {\r\n get: function() {\r\n return this._matrix[5];\r\n },\r\n set: function(value) {\r\n this._matrix[5] = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name rotation\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"rotation\", {\r\n get: function() {\r\n return Math.atan2(this.shx, this.sx);\r\n }\r\n });\r\n\r\n /**\r\n * @name scaleX\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"scaleX\", {\r\n get: function() {\r\n return this.decompose().scale.sx;\r\n }\r\n });\r\n\r\n /**\r\n * @name scaleY\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"scaleY\", {\r\n get: function() {\r\n return this.decompose().scale.sy;\r\n }\r\n });\r\n\r\n /**\r\n * @name isIdentity\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"isIdentity\", {\r\n get: function() {\r\n if (this.sx !== 1) {\r\n return false;\r\n }\r\n if (this.shy !== 0) {\r\n return false;\r\n }\r\n if (this.shx !== 0) {\r\n return false;\r\n }\r\n if (this.sy !== 1) {\r\n return false;\r\n }\r\n if (this.tx !== 0) {\r\n return false;\r\n }\r\n if (this.ty !== 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n });\r\n\r\n /**\r\n * Join the Matrix Values to a String\r\n *\r\n * @function join\r\n * @param {string} separator Specifies a string to separate each pair of adjacent elements of the array. The separator is converted to a string if necessary. If omitted, the array elements are separated with a comma (\",\"). If separator is an empty string, all elements are joined without any characters in between them.\r\n * @returns {string} A string with all array elements joined.\r\n * @memberof Matrix#\r\n */\r\n Matrix.prototype.join = function(separator) {\r\n return [this.sx, this.shy, this.shx, this.sy, this.tx, this.ty]\r\n .map(hpf)\r\n .join(separator);\r\n };\r\n\r\n /**\r\n * Multiply the matrix with given Matrix\r\n *\r\n * @function multiply\r\n * @param matrix\r\n * @returns {Matrix}\r\n * @memberof Matrix#\r\n */\r\n Matrix.prototype.multiply = function(matrix) {\r\n var sx = matrix.sx * this.sx + matrix.shy * this.shx;\r\n var shy = matrix.sx * this.shy + matrix.shy * this.sy;\r\n var shx = matrix.shx * this.sx + matrix.sy * this.shx;\r\n var sy = matrix.shx * this.shy + matrix.sy * this.sy;\r\n var tx = matrix.tx * this.sx + matrix.ty * this.shx + this.tx;\r\n var ty = matrix.tx * this.shy + matrix.ty * this.sy + this.ty;\r\n\r\n return new Matrix(sx, shy, shx, sy, tx, ty);\r\n };\r\n\r\n /**\r\n * @function decompose\r\n * @memberof Matrix#\r\n */\r\n Matrix.prototype.decompose = function() {\r\n var a = this.sx;\r\n var b = this.shy;\r\n var c = this.shx;\r\n var d = this.sy;\r\n var e = this.tx;\r\n var f = this.ty;\r\n\r\n var scaleX = Math.sqrt(a * a + b * b);\r\n a /= scaleX;\r\n b /= scaleX;\r\n\r\n var shear = a * c + b * d;\r\n c -= a * shear;\r\n d -= b * shear;\r\n\r\n var scaleY = Math.sqrt(c * c + d * d);\r\n c /= scaleY;\r\n d /= scaleY;\r\n shear /= scaleY;\r\n\r\n if (a * d < b * c) {\r\n a = -a;\r\n b = -b;\r\n shear = -shear;\r\n scaleX = -scaleX;\r\n }\r\n\r\n return {\r\n scale: new Matrix(scaleX, 0, 0, scaleY, 0, 0),\r\n translate: new Matrix(1, 0, 0, 1, e, f),\r\n rotate: new Matrix(a, b, -b, a, 0, 0),\r\n skew: new Matrix(1, 0, shear, 1, 0, 0)\r\n };\r\n };\r\n\r\n /**\r\n * @function toString\r\n * @memberof Matrix#\r\n */\r\n Matrix.prototype.toString = function(parmPrecision) {\r\n return this.join(\" \");\r\n };\r\n\r\n /**\r\n * @function inversed\r\n * @memberof Matrix#\r\n */\r\n Matrix.prototype.inversed = function() {\r\n var a = this.sx,\r\n b = this.shy,\r\n c = this.shx,\r\n d = this.sy,\r\n e = this.tx,\r\n f = this.ty;\r\n\r\n var quot = 1 / (a * d - b * c);\r\n\r\n var aInv = d * quot;\r\n var bInv = -b * quot;\r\n var cInv = -c * quot;\r\n var dInv = a * quot;\r\n var eInv = -aInv * e - cInv * f;\r\n var fInv = -bInv * e - dInv * f;\r\n\r\n return new Matrix(aInv, bInv, cInv, dInv, eInv, fInv);\r\n };\r\n\r\n /**\r\n * @function applyToPoint\r\n * @memberof Matrix#\r\n */\r\n Matrix.prototype.applyToPoint = function(pt) {\r\n var x = pt.x * this.sx + pt.y * this.shx + this.tx;\r\n var y = pt.x * this.shy + pt.y * this.sy + this.ty;\r\n return new Point(x, y);\r\n };\r\n\r\n /**\r\n * @function applyToRectangle\r\n * @memberof Matrix#\r\n */\r\n Matrix.prototype.applyToRectangle = function(rect) {\r\n var pt1 = this.applyToPoint(rect);\r\n var pt2 = this.applyToPoint(new Point(rect.x + rect.w, rect.y + rect.h));\r\n return new Rectangle(pt1.x, pt1.y, pt2.x - pt1.x, pt2.y - pt1.y);\r\n };\r\n\r\n /**\r\n * Clone the Matrix\r\n *\r\n * @function clone\r\n * @memberof Matrix#\r\n * @name clone\r\n * @instance\r\n */\r\n Matrix.prototype.clone = function() {\r\n var sx = this.sx;\r\n var shy = this.shy;\r\n var shx = this.shx;\r\n var sy = this.sy;\r\n var tx = this.tx;\r\n var ty = this.ty;\r\n\r\n return new Matrix(sx, shy, shx, sy, tx, ty);\r\n };\r\n\r\n API.Matrix = Matrix;\r\n\r\n /**\r\n * Multiplies two matrices. (see {@link Matrix})\r\n * @param {Matrix} m1\r\n * @param {Matrix} m2\r\n * @memberof jsPDF#\r\n * @name matrixMult\r\n */\r\n var matrixMult = (API.matrixMult = function(m1, m2) {\r\n return m2.multiply(m1);\r\n });\r\n\r\n /**\r\n * The identity matrix (equivalent to new Matrix(1, 0, 0, 1, 0, 0)).\r\n * @type {Matrix}\r\n * @memberof! jsPDF#\r\n * @name identityMatrix\r\n */\r\n var identityMatrix = new Matrix(1, 0, 0, 1, 0, 0);\r\n API.unitMatrix = API.identityMatrix = identityMatrix;\r\n\r\n /**\r\n * Adds a new pattern for later use.\r\n * @param {String} key The key by it can be referenced later. The keys must be unique!\r\n * @param {API.Pattern} pattern The pattern\r\n */\r\n var addPattern = function(key, pattern) {\r\n // only add it if it is not already present (the keys provided by the user must be unique!)\r\n if (patternMap[key]) return;\r\n\r\n var prefix = pattern instanceof ShadingPattern ? \"Sh\" : \"P\";\r\n var patternKey = prefix + (Object.keys(patterns).length + 1).toString(10);\r\n pattern.id = patternKey;\r\n\r\n patternMap[key] = patternKey;\r\n patterns[patternKey] = pattern;\r\n\r\n events.publish(\"addPattern\", pattern);\r\n };\r\n\r\n /**\r\n * A pattern describing a shading pattern.\r\n *\r\n * Only available in \"advanced\" API mode.\r\n *\r\n * @param {String} type One of \"axial\" or \"radial\"\r\n * @param {Array<Number>} coords Either [x1, y1, x2, y2] for \"axial\" type describing the two interpolation points\r\n * or [x1, y1, r, x2, y2, r2] for \"radial\" describing inner and the outer circle.\r\n * @param {Array<Object>} colors An array of objects with the fields \"offset\" and \"color\". \"offset\" describes\r\n * the offset in parameter space [0, 1]. \"color\" is an array of length 3 describing RGB values in [0, 255].\r\n * @param {GState=} gState An additional graphics state that gets applied to the pattern (optional).\r\n * @param {Matrix=} matrix A matrix that describes the transformation between the pattern coordinate system\r\n * and the use coordinate system (optional).\r\n * @constructor\r\n * @extends API.Pattern\r\n */\r\n API.ShadingPattern = ShadingPattern;\r\n\r\n /**\r\n * A PDF Tiling pattern.\r\n *\r\n * Only available in \"advanced\" API mode.\r\n *\r\n * @param {Array.<Number>} boundingBox The bounding box at which one pattern cell gets clipped.\r\n * @param {Number} xStep Horizontal spacing between pattern cells.\r\n * @param {Number} yStep Vertical spacing between pattern cells.\r\n * @param {API.GState=} gState An additional graphics state that gets applied to the pattern (optional).\r\n * @param {Matrix=} matrix A matrix that describes the transformation between the pattern coordinate system\r\n * and the use coordinate system (optional).\r\n * @constructor\r\n * @extends API.Pattern\r\n */\r\n API.TilingPattern = TilingPattern;\r\n\r\n /**\r\n * Adds a new {@link API.ShadingPattern} for later use. Only available in \"advanced\" API mode.\r\n * @param {String} key\r\n * @param {Pattern} pattern\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name addPattern\r\n */\r\n API.addShadingPattern = function(key, pattern) {\r\n advancedApiModeTrap(\"addShadingPattern()\");\r\n\r\n addPattern(key, pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Begins a new tiling pattern. All subsequent render calls are drawn to this pattern until {@link API.endTilingPattern}\r\n * gets called. Only available in \"advanced\" API mode.\r\n * @param {API.Pattern} pattern\r\n * @memberof jsPDF#\r\n * @name beginTilingPattern\r\n */\r\n API.beginTilingPattern = function(pattern) {\r\n advancedApiModeTrap(\"beginTilingPattern()\");\r\n\r\n beginNewRenderTarget(\r\n pattern.boundingBox[0],\r\n pattern.boundingBox[1],\r\n pattern.boundingBox[2] - pattern.boundingBox[0],\r\n pattern.boundingBox[3] - pattern.boundingBox[1],\r\n pattern.matrix\r\n );\r\n };\r\n\r\n /**\r\n * Ends a tiling pattern and sets the render target to the one active before {@link API.beginTilingPattern} has been called.\r\n *\r\n * Only available in \"advanced\" API mode.\r\n *\r\n * @param {string} key A unique key that is used to reference this pattern at later use.\r\n * @param {API.Pattern} pattern The pattern to end.\r\n * @memberof jsPDF#\r\n * @name endTilingPattern\r\n */\r\n API.endTilingPattern = function(key, pattern) {\r\n advancedApiModeTrap(\"endTilingPattern()\");\r\n\r\n // retrieve the stream\r\n pattern.stream = pages[currentPage].join(\"\\n\");\r\n\r\n addPattern(key, pattern);\r\n\r\n events.publish(\"endTilingPattern\", pattern);\r\n\r\n // restore state from stack\r\n renderTargetStack.pop().restore();\r\n };\r\n\r\n var newObject = (API.__private__.newObject = function() {\r\n var oid = newObjectDeferred();\r\n newObjectDeferredBegin(oid, true);\r\n return oid;\r\n });\r\n\r\n // Does not output the object. The caller must call newObjectDeferredBegin(oid) before outputing any data\r\n var newObjectDeferred = (API.__private__.newObjectDeferred = function() {\r\n objectNumber++;\r\n offsets[objectNumber] = function() {\r\n return contentLength;\r\n };\r\n return objectNumber;\r\n });\r\n\r\n var newObjectDeferredBegin = function(oid, doOutput) {\r\n doOutput = typeof doOutput === \"boolean\" ? doOutput : false;\r\n offsets[oid] = contentLength;\r\n if (doOutput) {\r\n out(oid + \" 0 obj\");\r\n }\r\n return oid;\r\n };\r\n // Does not output the object until after the pages have been output.\r\n // Returns an object containing the objectId and content.\r\n // All pages have been added so the object ID can be estimated to start right after.\r\n // This does not modify the current objectNumber; It must be updated after the newObjects are output.\r\n var newAdditionalObject = (API.__private__.newAdditionalObject = function() {\r\n var objId = newObjectDeferred();\r\n var obj = {\r\n objId: objId,\r\n content: \"\"\r\n };\r\n additionalObjects.push(obj);\r\n return obj;\r\n });\r\n\r\n var rootDictionaryObjId = newObjectDeferred();\r\n var resourceDictionaryObjId = newObjectDeferred();\r\n\r\n /////////////////////\r\n // Private functions\r\n /////////////////////\r\n\r\n var decodeColorString = (API.__private__.decodeColorString = function(color) {\r\n var colorEncoded = color.split(\" \");\r\n if (\r\n colorEncoded.length === 2 &&\r\n (colorEncoded[1] === \"g\" || colorEncoded[1] === \"G\")\r\n ) {\r\n // convert grayscale value to rgb so that it can be converted to hex for consistency\r\n var floatVal = parseFloat(colorEncoded[0]);\r\n colorEncoded = [floatVal, floatVal, floatVal, \"r\"];\r\n } else if (\r\n colorEncoded.length === 5 &&\r\n (colorEncoded[4] === \"k\" || colorEncoded[4] === \"K\")\r\n ) {\r\n // convert CMYK values to rbg so that it can be converted to hex for consistency\r\n var red = (1.0 - colorEncoded[0]) * (1.0 - colorEncoded[3]);\r\n var green = (1.0 - colorEncoded[1]) * (1.0 - colorEncoded[3]);\r\n var blue = (1.0 - colorEncoded[2]) * (1.0 - colorEncoded[3]);\r\n\r\n colorEncoded = [red, green, blue, \"r\"];\r\n }\r\n var colorAsRGB = \"#\";\r\n for (var i = 0; i < 3; i++) {\r\n colorAsRGB += (\r\n \"0\" + Math.floor(parseFloat(colorEncoded[i]) * 255).toString(16)\r\n ).slice(-2);\r\n }\r\n return colorAsRGB;\r\n });\r\n\r\n var encodeColorString = (API.__private__.encodeColorString = function(\r\n options\r\n ) {\r\n var color;\r\n\r\n if (typeof options === \"string\") {\r\n options = {\r\n ch1: options\r\n };\r\n }\r\n var ch1 = options.ch1;\r\n var ch2 = options.ch2;\r\n var ch3 = options.ch3;\r\n var ch4 = options.ch4;\r\n var letterArray =\r\n options.pdfColorType === \"draw\" ? [\"G\", \"RG\", \"K\"] : [\"g\", \"rg\", \"k\"];\r\n\r\n if (typeof ch1 === \"string\" && ch1.charAt(0) !== \"#\") {\r\n var rgbColor = new RGBColor(ch1);\r\n if (rgbColor.ok) {\r\n ch1 = rgbColor.toHex();\r\n } else if (!/^\\d*\\.?\\d*$/.test(ch1)) {\r\n throw new Error(\r\n 'Invalid color \"' + ch1 + '\" passed to jsPDF.encodeColorString.'\r\n );\r\n }\r\n }\r\n //convert short rgb to long form\r\n if (typeof ch1 === \"string\" && /^#[0-9A-Fa-f]{3}$/.test(ch1)) {\r\n ch1 = \"#\" + ch1[1] + ch1[1] + ch1[2] + ch1[2] + ch1[3] + ch1[3];\r\n }\r\n\r\n if (typeof ch1 === \"string\" && /^#[0-9A-Fa-f]{6}$/.test(ch1)) {\r\n var hex = parseInt(ch1.substr(1), 16);\r\n ch1 = (hex >> 16) & 255;\r\n ch2 = (hex >> 8) & 255;\r\n ch3 = hex & 255;\r\n }\r\n\r\n if (\r\n typeof ch2 === \"undefined\" ||\r\n (typeof ch4 === \"undefined\" && ch1 === ch2 && ch2 === ch3)\r\n ) {\r\n // Gray color space.\r\n if (typeof ch1 === \"string\") {\r\n color = ch1 + \" \" + letterArray[0];\r\n } else {\r\n switch (options.precision) {\r\n case 2:\r\n color = f2(ch1 / 255) + \" \" + letterArray[0];\r\n break;\r\n case 3:\r\n default:\r\n color = f3(ch1 / 255) + \" \" + letterArray[0];\r\n }\r\n }\r\n } else if (typeof ch4 === \"undefined\" || typeof ch4 === \"object\") {\r\n // assume RGBA\r\n if (ch4 && !isNaN(ch4.a)) {\r\n //TODO Implement transparency.\r\n //WORKAROUND use white for now, if transparent, otherwise handle as rgb\r\n if (ch4.a === 0) {\r\n color = [\"1.\", \"1.\", \"1.\", letterArray[1]].join(\" \");\r\n return color;\r\n }\r\n }\r\n // assume RGB\r\n if (typeof ch1 === \"string\") {\r\n color = [ch1, ch2, ch3, letterArray[1]].join(\" \");\r\n } else {\r\n switch (options.precision) {\r\n case 2:\r\n color = [\r\n f2(ch1 / 255),\r\n f2(ch2 / 255),\r\n f2(ch3 / 255),\r\n letterArray[1]\r\n ].join(\" \");\r\n break;\r\n default:\r\n case 3:\r\n color = [\r\n f3(ch1 / 255),\r\n f3(ch2 / 255),\r\n f3(ch3 / 255),\r\n letterArray[1]\r\n ].join(\" \");\r\n }\r\n }\r\n } else {\r\n // assume CMYK\r\n if (typeof ch1 === \"string\") {\r\n color = [ch1, ch2, ch3, ch4, letterArray[2]].join(\" \");\r\n } else {\r\n switch (options.precision) {\r\n case 2:\r\n color = [f2(ch1), f2(ch2), f2(ch3), f2(ch4), letterArray[2]].join(\r\n \" \"\r\n );\r\n break;\r\n case 3:\r\n default:\r\n color = [f3(ch1), f3(ch2), f3(ch3), f3(ch4), letterArray[2]].join(\r\n \" \"\r\n );\r\n }\r\n }\r\n }\r\n return color;\r\n });\r\n\r\n var getFilters = (API.__private__.getFilters = function() {\r\n return filters;\r\n });\r\n\r\n var putStream = (API.__private__.putStream = function(options) {\r\n options = options || {};\r\n var data = options.data || \"\";\r\n var filters = options.filters || getFilters();\r\n var alreadyAppliedFilters = options.alreadyAppliedFilters || [];\r\n var addLength1 = options.addLength1 || false;\r\n var valueOfLength1 = data.length;\r\n var objectId = options.objectId;\r\n var encryptor = function(data) {\r\n return data;\r\n };\r\n if (encryptionOptions !== null && typeof objectId == \"undefined\") {\r\n throw new Error(\r\n \"ObjectId must be passed to putStream for file encryption\"\r\n );\r\n }\r\n if (encryptionOptions !== null) {\r\n encryptor = encryption.encryptor(objectId, 0);\r\n }\r\n\r\n var processedData = {};\r\n if (filters === true) {\r\n filters = [\"FlateEncode\"];\r\n }\r\n var keyValues = options.additionalKeyValues || [];\r\n if (typeof jsPDF.API.processDataByFilters !== \"undefined\") {\r\n processedData = jsPDF.API.processDataByFilters(data, filters);\r\n } else {\r\n processedData = { data: data, reverseChain: [] };\r\n }\r\n var filterAsString =\r\n processedData.reverseChain +\r\n (Array.isArray(alreadyAppliedFilters)\r\n ? alreadyAppliedFilters.join(\" \")\r\n : alreadyAppliedFilters.toString());\r\n\r\n if (processedData.data.length !== 0) {\r\n keyValues.push({\r\n key: \"Length\",\r\n value: processedData.data.length\r\n });\r\n if (addLength1 === true) {\r\n keyValues.push({\r\n key: \"Length1\",\r\n value: valueOfLength1\r\n });\r\n }\r\n }\r\n\r\n if (filterAsString.length != 0) {\r\n if (filterAsString.split(\"/\").length - 1 === 1) {\r\n keyValues.push({\r\n key: \"Filter\",\r\n value: filterAsString\r\n });\r\n } else {\r\n keyValues.push({\r\n key: \"Filter\",\r\n value: \"[\" + filterAsString + \"]\"\r\n });\r\n\r\n for (var j = 0; j < keyValues.length; j += 1) {\r\n if (keyValues[j].key === \"DecodeParms\") {\r\n var decodeParmsArray = [];\r\n\r\n for (\r\n var i = 0;\r\n i < processedData.reverseChain.split(\"/\").length - 1;\r\n i += 1\r\n ) {\r\n decodeParmsArray.push(\"null\");\r\n }\r\n\r\n decodeParmsArray.push(keyValues[j].value);\r\n keyValues[j].value = \"[\" + decodeParmsArray.join(\" \") + \"]\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n out(\"<<\");\r\n for (var k = 0; k < keyValues.length; k++) {\r\n out(\"/\" + keyValues[k].key + \" \" + keyValues[k].value);\r\n }\r\n out(\">>\");\r\n if (processedData.data.length !== 0) {\r\n out(\"stream\");\r\n out(encryptor(processedData.data));\r\n out(\"endstream\");\r\n }\r\n });\r\n\r\n var putPage = (API.__private__.putPage = function(page) {\r\n var pageNumber = page.number;\r\n var data = page.data;\r\n var pageObjectNumber = page.objId;\r\n var pageContentsObjId = page.contentsObjId;\r\n\r\n newObjectDeferredBegin(pageObjectNumber, true);\r\n out(\"<</Type /Page\");\r\n out(\"/Parent \" + page.rootDictionaryObjId + \" 0 R\");\r\n out(\"/Resources \" + page.resourceDictionaryObjId + \" 0 R\");\r\n out(\r\n \"/MediaBox [\" +\r\n parseFloat(hpf(page.mediaBox.bottomLeftX)) +\r\n \" \" +\r\n parseFloat(hpf(page.mediaBox.bottomLeftY)) +\r\n \" \" +\r\n hpf(page.mediaBox.topRightX) +\r\n \" \" +\r\n hpf(page.mediaBox.topRightY) +\r\n \"]\"\r\n );\r\n if (page.cropBox !== null) {\r\n out(\r\n \"/CropBox [\" +\r\n hpf(page.cropBox.bottomLeftX) +\r\n \" \" +\r\n hpf(page.cropBox.bottomLeftY) +\r\n \" \" +\r\n hpf(page.cropBox.topRightX) +\r\n \" \" +\r\n hpf(page.cropBox.topRightY) +\r\n \"]\"\r\n );\r\n }\r\n\r\n if (page.bleedBox !== null) {\r\n out(\r\n \"/BleedBox [\" +\r\n hpf(page.bleedBox.bottomLeftX) +\r\n \" \" +\r\n hpf(page.bleedBox.bottomLeftY) +\r\n \" \" +\r\n hpf(page.bleedBox.topRightX) +\r\n \" \" +\r\n hpf(page.bleedBox.topRightY) +\r\n \"]\"\r\n );\r\n }\r\n\r\n if (page.trimBox !== null) {\r\n out(\r\n \"/TrimBox [\" +\r\n hpf(page.trimBox.bottomLeftX) +\r\n \" \" +\r\n hpf(page.trimBox.bottomLeftY) +\r\n \" \" +\r\n hpf(page.trimBox.topRightX) +\r\n \" \" +\r\n hpf(page.trimBox.topRightY) +\r\n \"]\"\r\n );\r\n }\r\n\r\n if (page.artBox !== null) {\r\n out(\r\n \"/ArtBox [\" +\r\n hpf(page.artBox.bottomLeftX) +\r\n \" \" +\r\n hpf(page.artBox.bottomLeftY) +\r\n \" \" +\r\n hpf(page.artBox.topRightX) +\r\n \" \" +\r\n hpf(page.artBox.topRightY) +\r\n \"]\"\r\n );\r\n }\r\n\r\n if (typeof page.userUnit === \"number\" && page.userUnit !== 1.0) {\r\n out(\"/UserUnit \" + page.userUnit);\r\n }\r\n\r\n events.publish(\"putPage\", {\r\n objId: pageObjectNumber,\r\n pageContext: pagesContext[pageNumber],\r\n pageNumber: pageNumber,\r\n page: data\r\n });\r\n out(\"/Contents \" + pageContentsObjId + \" 0 R\");\r\n out(\">>\");\r\n out(\"endobj\");\r\n // Page content\r\n var pageContent = data.join(\"\\n\");\r\n\r\n if (apiMode === ApiMode.ADVANCED) {\r\n // if the user forgot to switch back to COMPAT mode, we must balance the graphics stack again\r\n pageContent += \"\\nQ\";\r\n }\r\n\r\n newObjectDeferredBegin(pageContentsObjId, true);\r\n putStream({\r\n data: pageContent,\r\n filters: getFilters(),\r\n objectId: pageContentsObjId\r\n });\r\n out(\"endobj\");\r\n return pageObjectNumber;\r\n });\r\n\r\n var putPages = (API.__private__.putPages = function() {\r\n var n,\r\n i,\r\n pageObjectNumbers = [];\r\n\r\n for (n = 1; n <= page; n++) {\r\n pagesContext[n].objId = newObjectDeferred();\r\n pagesContext[n].contentsObjId = newObjectDeferred();\r\n }\r\n\r\n for (n = 1; n <= page; n++) {\r\n pageObjectNumbers.push(\r\n putPage({\r\n number: n,\r\n data: pages[n],\r\n objId: pagesContext[n].objId,\r\n contentsObjId: pagesContext[n].contentsObjId,\r\n mediaBox: pagesContext[n].mediaBox,\r\n cropBox: pagesContext[n].cropBox,\r\n bleedBox: pagesContext[n].bleedBox,\r\n trimBox: pagesContext[n].trimBox,\r\n artBox: pagesContext[n].artBox,\r\n userUnit: pagesContext[n].userUnit,\r\n rootDictionaryObjId: rootDictionaryObjId,\r\n resourceDictionaryObjId: resourceDictionaryObjId\r\n })\r\n );\r\n }\r\n newObjectDeferredBegin(rootDictionaryObjId, true);\r\n out(\"<</Type /Pages\");\r\n var kids = \"/Kids [\";\r\n for (i = 0; i < page; i++) {\r\n kids += pageObjectNumbers[i] + \" 0 R \";\r\n }\r\n out(kids + \"]\");\r\n out(\"/Count \" + page);\r\n out(\">>\");\r\n out(\"endobj\");\r\n events.publish(\"postPutPages\");\r\n });\r\n\r\n var putFont = function(font) {\r\n events.publish(\"putFont\", {\r\n font: font,\r\n out: out,\r\n newObject: newObject,\r\n putStream: putStream\r\n });\r\n\r\n if (font.isAlreadyPutted !== true) {\r\n font.objectNumber = newObject();\r\n out(\"<<\");\r\n out(\"/Type /Font\");\r\n out(\"/BaseFont /\" + toPDFName(font.postScriptName));\r\n out(\"/Subtype /Type1\");\r\n if (typeof font.encoding === \"string\") {\r\n out(\"/Encoding /\" + font.encoding);\r\n }\r\n out(\"/FirstChar 32\");\r\n out(\"/LastChar 255\");\r\n out(\">>\");\r\n out(\"endobj\");\r\n }\r\n };\r\n\r\n var putFonts = function() {\r\n for (var fontKey in fonts) {\r\n if (fonts.hasOwnProperty(fontKey)) {\r\n if (\r\n putOnlyUsedFonts === false ||\r\n (putOnlyUsedFonts === true && usedFonts.hasOwnProperty(fontKey))\r\n ) {\r\n putFont(fonts[fontKey]);\r\n }\r\n }\r\n }\r\n };\r\n\r\n var putXObject = function(xObject) {\r\n xObject.objectNumber = newObject();\r\n\r\n var options = [];\r\n options.push({ key: \"Type\", value: \"/XObject\" });\r\n options.push({ key: \"Subtype\", value: \"/Form\" });\r\n options.push({\r\n key: \"BBox\",\r\n value:\r\n \"[\" +\r\n [\r\n hpf(xObject.x),\r\n hpf(xObject.y),\r\n hpf(xObject.x + xObject.width),\r\n hpf(xObject.y + xObject.height)\r\n ].join(\" \") +\r\n \"]\"\r\n });\r\n options.push({\r\n key: \"Matrix\",\r\n value: \"[\" + xObject.matrix.toString() + \"]\"\r\n });\r\n // TODO: /Resources\r\n\r\n var stream = xObject.pages[1].join(\"\\n\");\r\n putStream({\r\n data: stream,\r\n additionalKeyValues: options,\r\n objectId: xObject.objectNumber\r\n });\r\n out(\"endobj\");\r\n };\r\n\r\n var putXObjects = function() {\r\n for (var xObjectKey in renderTargets) {\r\n if (renderTargets.hasOwnProperty(xObjectKey)) {\r\n putXObject(renderTargets[xObjectKey]);\r\n }\r\n }\r\n };\r\n\r\n var interpolateAndEncodeRGBStream = function(colors, numberSamples) {\r\n var tValues = [];\r\n var t;\r\n var dT = 1.0 / (numberSamples - 1);\r\n for (t = 0.0; t < 1.0; t += dT) {\r\n tValues.push(t);\r\n }\r\n tValues.push(1.0);\r\n // add first and last control point if not present\r\n if (colors[0].offset != 0.0) {\r\n var c0 = {\r\n offset: 0.0,\r\n color: colors[0].color\r\n };\r\n colors.unshift(c0);\r\n }\r\n if (colors[colors.length - 1].offset != 1.0) {\r\n var c1 = {\r\n offset: 1.0,\r\n color: colors[colors.length - 1].color\r\n };\r\n colors.push(c1);\r\n }\r\n var out = \"\";\r\n var index = 0;\r\n\r\n for (var i = 0; i < tValues.length; i++) {\r\n t = tValues[i];\r\n while (t > colors[index + 1].offset) index++;\r\n var a = colors[index].offset;\r\n var b = colors[index + 1].offset;\r\n var d = (t - a) / (b - a);\r\n\r\n var aColor = colors[index].color;\r\n var bColor = colors[index + 1].color;\r\n\r\n out +=\r\n padd2Hex(Math.round((1 - d) * aColor[0] + d * bColor[0]).toString(16)) +\r\n padd2Hex(Math.round((1 - d) * aColor[1] + d * bColor[1]).toString(16)) +\r\n padd2Hex(Math.round((1 - d) * aColor[2] + d * bColor[2]).toString(16));\r\n }\r\n return out.trim();\r\n };\r\n\r\n var putShadingPattern = function(pattern, numberSamples) {\r\n /*\r\n Axial patterns shade between the two points specified in coords, radial patterns between the inner\r\n and outer circle.\r\n The user can specify an array (colors) that maps t-Values in [0, 1] to RGB colors. These are now\r\n interpolated to equidistant samples and written to pdf as a sample (type 0) function.\r\n */\r\n // The number of color samples that should be used to describe the shading.\r\n // The higher, the more accurate the gradient will be.\r\n numberSamples || (numberSamples = 21);\r\n var funcObjectNumber = newObject();\r\n var stream = interpolateAndEncodeRGBStream(pattern.colors, numberSamples);\r\n\r\n var options = [];\r\n options.push({ key: \"FunctionType\", value: \"0\" });\r\n options.push({ key: \"Domain\", value: \"[0.0 1.0]\" });\r\n options.push({ key: \"Size\", value: \"[\" + numberSamples + \"]\" });\r\n options.push({ key: \"BitsPerSample\", value: \"8\" });\r\n options.push({ key: \"Range\", value: \"[0.0 1.0 0.0 1.0 0.0 1.0]\" });\r\n options.push({ key: \"Decode\", value: \"[0.0 1.0 0.0 1.0 0.0 1.0]\" });\r\n\r\n putStream({\r\n data: stream,\r\n additionalKeyValues: options,\r\n alreadyAppliedFilters: [\"/ASCIIHexDecode\"],\r\n objectId: funcObjectNumber\r\n });\r\n out(\"endobj\");\r\n\r\n pattern.objectNumber = newObject();\r\n out(\"<< /ShadingType \" + pattern.type);\r\n out(\"/ColorSpace /DeviceRGB\");\r\n var coords =\r\n \"/Coords [\" +\r\n hpf(parseFloat(pattern.coords[0])) +\r\n \" \" + // x1\r\n hpf(parseFloat(pattern.coords[1])) +\r\n \" \"; // y1\r\n if (pattern.type === 2) {\r\n // axial\r\n coords +=\r\n hpf(parseFloat(pattern.coords[2])) +\r\n \" \" + // x2\r\n hpf(parseFloat(pattern.coords[3])); // y2\r\n } else {\r\n // radial\r\n coords +=\r\n hpf(parseFloat(pattern.coords[2])) +\r\n \" \" + // r1\r\n hpf(parseFloat(pattern.coords[3])) +\r\n \" \" + // x2\r\n hpf(parseFloat(pattern.coords[4])) +\r\n \" \" + // y2\r\n hpf(parseFloat(pattern.coords[5])); // r2\r\n }\r\n coords += \"]\";\r\n out(coords);\r\n\r\n if (pattern.matrix) {\r\n out(\"/Matrix [\" + pattern.matrix.toString() + \"]\");\r\n }\r\n out(\"/Function \" + funcObjectNumber + \" 0 R\");\r\n out(\"/Extend [true true]\");\r\n out(\">>\");\r\n out(\"endobj\");\r\n };\r\n\r\n var putTilingPattern = function(pattern, deferredResourceDictionaryIds) {\r\n var resourcesObjectId = newObjectDeferred();\r\n var patternObjectId = newObject();\r\n\r\n deferredResourceDictionaryIds.push({\r\n resourcesOid: resourcesObjectId,\r\n objectOid: patternObjectId\r\n });\r\n\r\n pattern.objectNumber = patternObjectId;\r\n var options = [];\r\n options.push({ key: \"Type\", value: \"/Pattern\" });\r\n options.push({ key: \"PatternType\", value: \"1\" }); // tiling pattern\r\n options.push({ key: \"PaintType\", value: \"1\" }); // colored tiling pattern\r\n options.push({ key: \"TilingType\", value: \"1\" }); // constant spacing\r\n options.push({\r\n key: \"BBox\",\r\n value: \"[\" + pattern.boundingBox.map(hpf).join(\" \") + \"]\"\r\n });\r\n options.push({ key: \"XStep\", value: hpf(pattern.xStep) });\r\n options.push({ key: \"YStep\", value: hpf(pattern.yStep) });\r\n options.push({ key: \"Resources\", value: resourcesObjectId + \" 0 R\" });\r\n if (pattern.matrix) {\r\n options.push({\r\n key: \"Matrix\",\r\n value: \"[\" + pattern.matrix.toString() + \"]\"\r\n });\r\n }\r\n\r\n putStream({\r\n data: pattern.stream,\r\n additionalKeyValues: options,\r\n objectId: pattern.objectNumber\r\n });\r\n out(\"endobj\");\r\n };\r\n\r\n var putPatterns = function(deferredResourceDictionaryIds) {\r\n var patternKey;\r\n for (patternKey in patterns) {\r\n if (patterns.hasOwnProperty(patternKey)) {\r\n if (patterns[patternKey] instanceof ShadingPattern) {\r\n putShadingPattern(patterns[patternKey]);\r\n } else if (patterns[patternKey] instanceof TilingPattern) {\r\n putTilingPattern(patterns[patternKey], deferredResourceDictionaryIds);\r\n }\r\n }\r\n }\r\n };\r\n\r\n var putGState = function(gState) {\r\n gState.objectNumber = newObject();\r\n out(\"<<\");\r\n for (var p in gState) {\r\n switch (p) {\r\n case \"opacity\":\r\n out(\"/ca \" + f2(gState[p]));\r\n break;\r\n case \"stroke-opacity\":\r\n out(\"/CA \" + f2(gState[p]));\r\n break;\r\n }\r\n }\r\n out(\">>\");\r\n out(\"endobj\");\r\n };\r\n\r\n var putGStates = function() {\r\n var gStateKey;\r\n for (gStateKey in gStates) {\r\n if (gStates.hasOwnProperty(gStateKey)) {\r\n putGState(gStates[gStateKey]);\r\n }\r\n }\r\n };\r\n\r\n var putXobjectDict = function() {\r\n out(\"/XObject <<\");\r\n for (var xObjectKey in renderTargets) {\r\n if (\r\n renderTargets.hasOwnProperty(xObjectKey) &&\r\n renderTargets[xObjectKey].objectNumber >= 0\r\n ) {\r\n out(\r\n \"/\" +\r\n xObjectKey +\r\n \" \" +\r\n renderTargets[xObjectKey].objectNumber +\r\n \" 0 R\"\r\n );\r\n }\r\n }\r\n\r\n // Loop through images, or other data objects\r\n events.publish(\"putXobjectDict\");\r\n out(\">>\");\r\n };\r\n\r\n var putEncryptionDict = function() {\r\n encryption.oid = newObject();\r\n out(\"<<\");\r\n out(\"/Filter /Standard\");\r\n out(\"/V \" + encryption.v);\r\n out(\"/R \" + encryption.r);\r\n out(\"/U <\" + encryption.toHexString(encryption.U) + \">\");\r\n out(\"/O <\" + encryption.toHexString(encryption.O) + \">\");\r\n out(\"/P \" + encryption.P);\r\n out(\">>\");\r\n out(\"endobj\");\r\n };\r\n\r\n var putFontDict = function() {\r\n out(\"/Font <<\");\r\n\r\n for (var fontKey in fonts) {\r\n if (fonts.hasOwnProperty(fontKey)) {\r\n if (\r\n putOnlyUsedFonts === false ||\r\n (putOnlyUsedFonts === true && usedFonts.hasOwnProperty(fontKey))\r\n ) {\r\n out(\"/\" + fontKey + \" \" + fonts[fontKey].objectNumber + \" 0 R\");\r\n }\r\n }\r\n }\r\n out(\">>\");\r\n };\r\n\r\n var putShadingPatternDict = function() {\r\n if (Object.keys(patterns).length > 0) {\r\n out(\"/Shading <<\");\r\n for (var patternKey in patterns) {\r\n if (\r\n patterns.hasOwnProperty(patternKey) &&\r\n patterns[patternKey] instanceof ShadingPattern &&\r\n patterns[patternKey].objectNumber >= 0\r\n ) {\r\n out(\r\n \"/\" + patternKey + \" \" + patterns[patternKey].objectNumber + \" 0 R\"\r\n );\r\n }\r\n }\r\n\r\n events.publish(\"putShadingPatternDict\");\r\n out(\">>\");\r\n }\r\n };\r\n\r\n var putTilingPatternDict = function(objectOid) {\r\n if (Object.keys(patterns).length > 0) {\r\n out(\"/Pattern <<\");\r\n for (var patternKey in patterns) {\r\n if (\r\n patterns.hasOwnProperty(patternKey) &&\r\n patterns[patternKey] instanceof API.TilingPattern &&\r\n patterns[patternKey].objectNumber >= 0 &&\r\n patterns[patternKey].objectNumber < objectOid // prevent cyclic dependencies\r\n ) {\r\n out(\r\n \"/\" + patternKey + \" \" + patterns[patternKey].objectNumber + \" 0 R\"\r\n );\r\n }\r\n }\r\n events.publish(\"putTilingPatternDict\");\r\n out(\">>\");\r\n }\r\n };\r\n\r\n var putGStatesDict = function() {\r\n if (Object.keys(gStates).length > 0) {\r\n var gStateKey;\r\n out(\"/ExtGState <<\");\r\n for (gStateKey in gStates) {\r\n if (\r\n gStates.hasOwnProperty(gStateKey) &&\r\n gStates[gStateKey].objectNumber >= 0\r\n ) {\r\n out(\"/\" + gStateKey + \" \" + gStates[gStateKey].objectNumber + \" 0 R\");\r\n }\r\n }\r\n\r\n events.publish(\"putGStateDict\");\r\n out(\">>\");\r\n }\r\n };\r\n\r\n var putResourceDictionary = function(objectIds) {\r\n newObjectDeferredBegin(objectIds.resourcesOid, true);\r\n out(\"<<\");\r\n out(\"/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]\");\r\n putFontDict();\r\n putShadingPatternDict();\r\n putTilingPatternDict(objectIds.objectOid);\r\n putGStatesDict();\r\n putXobjectDict();\r\n out(\">>\");\r\n out(\"endobj\");\r\n };\r\n\r\n var putResources = function() {\r\n // FormObjects, Patterns etc. might use other FormObjects/Patterns/Images\r\n // which means their resource dictionaries must contain the already resolved\r\n // object ids. For this reason we defer the serialization of the resource\r\n // dicts until all objects have been serialized and have object ids.\r\n //\r\n // In order to prevent cyclic dependencies (which Adobe Reader doesn't like),\r\n // we only put all oids that are smaller than the oid of the object the\r\n // resource dict belongs to. This is correct behavior, since the streams\r\n // may only use other objects that have already been defined and thus appear\r\n // earlier in their respective collection.\r\n // Currently, this only affects tiling patterns, but a (more) correct\r\n // implementation of FormObjects would also define their own resource dicts.\r\n var deferredResourceDictionaryIds = [];\r\n\r\n putFonts();\r\n putGStates();\r\n putXObjects();\r\n putPatterns(deferredResourceDictionaryIds);\r\n\r\n events.publish(\"putResources\");\r\n deferredResourceDictionaryIds.forEach(putResourceDictionary);\r\n putResourceDictionary({\r\n resourcesOid: resourceDictionaryObjId,\r\n objectOid: Number.MAX_SAFE_INTEGER // output all objects\r\n });\r\n events.publish(\"postPutResources\");\r\n };\r\n\r\n var putAdditionalObjects = function() {\r\n events.publish(\"putAdditionalObjects\");\r\n for (var i = 0; i < additionalObjects.length; i++) {\r\n var obj = additionalObjects[i];\r\n newObjectDeferredBegin(obj.objId, true);\r\n out(obj.content);\r\n out(\"endobj\");\r\n }\r\n events.publish(\"postPutAdditionalObjects\");\r\n };\r\n\r\n var addFontToFontDictionary = function(font) {\r\n fontmap[font.fontName] = fontmap[font.fontName] || {};\r\n fontmap[font.fontName][font.fontStyle] = font.id;\r\n };\r\n\r\n var addFont = function(\r\n postScriptName,\r\n fontName,\r\n fontStyle,\r\n encoding,\r\n isStandardFont\r\n ) {\r\n var font = {\r\n id: \"F\" + (Object.keys(fonts).length + 1).toString(10),\r\n postScriptName: postScriptName,\r\n fontName: fontName,\r\n fontStyle: fontStyle,\r\n encoding: encoding,\r\n isStandardFont: isStandardFont || false,\r\n metadata: {}\r\n };\r\n\r\n events.publish(\"addFont\", {\r\n font: font,\r\n instance: this\r\n });\r\n\r\n fonts[font.id] = font;\r\n addFontToFontDictionary(font);\r\n return font.id;\r\n };\r\n\r\n var addFonts = function(arrayOfFonts) {\r\n for (var i = 0, l = standardFonts.length; i < l; i++) {\r\n var fontKey = addFont.call(\r\n this,\r\n arrayOfFonts[i][0],\r\n arrayOfFonts[i][1],\r\n arrayOfFonts[i][2],\r\n standardFonts[i][3],\r\n true\r\n );\r\n\r\n if (putOnlyUsedFonts === false) {\r\n usedFonts[fontKey] = true;\r\n }\r\n // adding aliases for standard fonts, this time matching the capitalization\r\n var parts = arrayOfFonts[i][0].split(\"-\");\r\n addFontToFontDictionary({\r\n id: fontKey,\r\n fontName: parts[0],\r\n fontStyle: parts[1] || \"\"\r\n });\r\n }\r\n events.publish(\"addFonts\", {\r\n fonts: fonts,\r\n dictionary: fontmap\r\n });\r\n };\r\n\r\n var SAFE = function __safeCall(fn) {\r\n fn.foo = function __safeCallWrapper() {\r\n try {\r\n return fn.apply(this, arguments);\r\n } catch (e) {\r\n var stack = e.stack || \"\";\r\n if (~stack.indexOf(\" at \")) stack = stack.split(\" at \")[1];\r\n var m =\r\n \"Error in function \" +\r\n stack.split(\"\\n\")[0].split(\"<\")[0] +\r\n \": \" +\r\n e.message;\r\n if (globalObject.console) {\r\n globalObject.console.error(m, e);\r\n if (globalObject.alert) alert(m);\r\n } else {\r\n throw new Error(m);\r\n }\r\n }\r\n };\r\n fn.foo.bar = fn;\r\n return fn.foo;\r\n };\r\n\r\n var to8bitStream = function(text, flags) {\r\n /**\r\n * PDF 1.3 spec:\r\n * \"For text strings encoded in Unicode, the first two bytes must be 254 followed by\r\n * 255, representing the Unicode byte order marker, U+FEFF. (This sequence conflicts\r\n * with the PDFDocEncoding character sequence thorn ydieresis, which is unlikely\r\n * to be a meaningful beginning of a word or phrase.) The remainder of the\r\n * string consists of Unicode character codes, according to the UTF-16 encoding\r\n * specified in the Unicode standard, version 2.0. Commonly used Unicode values\r\n * are represented as 2 bytes per character, with the high-order byte appearing first\r\n * in the string.\"\r\n *\r\n * In other words, if there are chars in a string with char code above 255, we\r\n * recode the string to UCS2 BE - string doubles in length and BOM is prepended.\r\n *\r\n * HOWEVER!\r\n * Actual *content* (body) text (as opposed to strings used in document properties etc)\r\n * does NOT expect BOM. There, it is treated as a literal GID (Glyph ID)\r\n *\r\n * Because of Adobe's focus on \"you subset your fonts!\" you are not supposed to have\r\n * a font that maps directly Unicode (UCS2 / UTF16BE) code to font GID, but you could\r\n * fudge it with \"Identity-H\" encoding and custom CIDtoGID map that mimics Unicode\r\n * code page. There, however, all characters in the stream are treated as GIDs,\r\n * including BOM, which is the reason we need to skip BOM in content text (i.e. that\r\n * that is tied to a font).\r\n *\r\n * To signal this \"special\" PDFEscape / to8bitStream handling mode,\r\n * API.text() function sets (unless you overwrite it with manual values\r\n * given to API.text(.., flags) )\r\n * flags.autoencode = true\r\n * flags.noBOM = true\r\n *\r\n * ===================================================================================\r\n * `flags` properties relied upon:\r\n * .sourceEncoding = string with encoding label.\r\n * \"Unicode\" by default. = encoding of the incoming text.\r\n * pass some non-existing encoding name\r\n * (ex: 'Do not touch my strings! I know what I am doing.')\r\n * to make encoding code skip the encoding step.\r\n * .outputEncoding = Either valid PDF encoding name\r\n * (must be supported by jsPDF font metrics, otherwise no encoding)\r\n * or a JS object, where key = sourceCharCode, value = outputCharCode\r\n * missing keys will be treated as: sourceCharCode === outputCharCode\r\n * .noBOM\r\n * See comment higher above for explanation for why this is important\r\n * .autoencode\r\n * See comment higher above for explanation for why this is important\r\n */\r\n\r\n var i,\r\n l,\r\n sourceEncoding,\r\n encodingBlock,\r\n outputEncoding,\r\n newtext,\r\n isUnicode,\r\n ch,\r\n bch;\r\n\r\n flags = flags || {};\r\n sourceEncoding = flags.sourceEncoding || \"Unicode\";\r\n outputEncoding = flags.outputEncoding;\r\n\r\n // This 'encoding' section relies on font metrics format\r\n // attached to font objects by, among others,\r\n // \"Willow Systems' standard_font_metrics plugin\"\r\n // see jspdf.plugin.standard_font_metrics.js for format\r\n // of the font.metadata.encoding Object.\r\n // It should be something like\r\n // .encoding = {'codePages':['WinANSI....'], 'WinANSI...':{code:code, ...}}\r\n // .widths = {0:width, code:width, ..., 'fof':divisor}\r\n // .kerning = {code:{previous_char_code:shift, ..., 'fof':-divisor},...}\r\n if (\r\n (flags.autoencode || outputEncoding) &&\r\n fonts[activeFontKey].metadata &&\r\n fonts[activeFontKey].metadata[sourceEncoding] &&\r\n fonts[activeFontKey].metadata[sourceEncoding].encoding\r\n ) {\r\n encodingBlock = fonts[activeFontKey].metadata[sourceEncoding].encoding;\r\n\r\n // each font has default encoding. Some have it clearly defined.\r\n if (!outputEncoding && fonts[activeFontKey].encoding) {\r\n outputEncoding = fonts[activeFontKey].encoding;\r\n }\r\n\r\n // Hmmm, the above did not work? Let's try again, in different place.\r\n if (!outputEncoding && encodingBlock.codePages) {\r\n outputEncoding = encodingBlock.codePages[0]; // let's say, first one is the default\r\n }\r\n\r\n if (typeof outputEncoding === \"string\") {\r\n outputEncoding = encodingBlock[outputEncoding];\r\n }\r\n // we want output encoding to be a JS Object, where\r\n // key = sourceEncoding's character code and\r\n // value = outputEncoding's character code.\r\n if (outputEncoding) {\r\n isUnicode = false;\r\n newtext = [];\r\n for (i = 0, l = text.length; i < l; i++) {\r\n ch = outputEncoding[text.charCodeAt(i)];\r\n if (ch) {\r\n newtext.push(String.fromCharCode(ch));\r\n } else {\r\n newtext.push(text[i]);\r\n }\r\n\r\n // since we are looping over chars anyway, might as well\r\n // check for residual unicodeness\r\n if (newtext[i].charCodeAt(0) >> 8) {\r\n /* more than 255 */\r\n isUnicode = true;\r\n }\r\n }\r\n text = newtext.join(\"\");\r\n }\r\n }\r\n\r\n i = text.length;\r\n // isUnicode may be set to false above. Hence the triple-equal to undefined\r\n while (isUnicode === undefined && i !== 0) {\r\n if (text.charCodeAt(i - 1) >> 8) {\r\n /* more than 255 */\r\n isUnicode = true;\r\n }\r\n i--;\r\n }\r\n if (!isUnicode) {\r\n return text;\r\n }\r\n\r\n newtext = flags.noBOM ? [] : [254, 255];\r\n for (i = 0, l = text.length; i < l; i++) {\r\n ch = text.charCodeAt(i);\r\n bch = ch >> 8; // divide by 256\r\n if (bch >> 8) {\r\n /* something left after dividing by 256 second time */\r\n throw new Error(\r\n \"Character at position \" +\r\n i +\r\n \" of string '\" +\r\n text +\r\n \"' exceeds 16bits. Cannot be encoded into UCS-2 BE\"\r\n );\r\n }\r\n newtext.push(bch);\r\n newtext.push(ch - (bch << 8));\r\n }\r\n return String.fromCharCode.apply(undefined, newtext);\r\n };\r\n\r\n var pdfEscape = (API.__private__.pdfEscape = API.pdfEscape = function(\r\n text,\r\n flags\r\n ) {\r\n /**\r\n * Replace '/', '(', and ')' with pdf-safe versions\r\n *\r\n * Doing to8bitStream does NOT make this PDF display unicode text. For that\r\n * we also need to reference a unicode font and embed it - royal pain in the rear.\r\n *\r\n * There is still a benefit to to8bitStream - PDF simply cannot handle 16bit chars,\r\n * which JavaScript Strings are happy to provide. So, while we still cannot display\r\n * 2-byte characters property, at least CONDITIONALLY converting (entire string containing)\r\n * 16bit chars to (USC-2-BE) 2-bytes per char + BOM streams we ensure that entire PDF\r\n * is still parseable.\r\n * This will allow immediate support for unicode in document properties strings.\r\n */\r\n return to8bitStream(text, flags)\r\n .replace(/\\\\/g, \"\\\\\\\\\")\r\n .replace(/\\(/g, \"\\\\(\")\r\n .replace(/\\)/g, \"\\\\)\");\r\n });\r\n\r\n var beginPage = (API.__private__.beginPage = function(format) {\r\n pages[++page] = [];\r\n pagesContext[page] = {\r\n objId: 0,\r\n contentsObjId: 0,\r\n userUnit: Number(userUnit),\r\n artBox: null,\r\n bleedBox: null,\r\n cropBox: null,\r\n trimBox: null,\r\n mediaBox: {\r\n bottomLeftX: 0,\r\n bottomLeftY: 0,\r\n topRightX: Number(format[0]),\r\n topRightY: Number(format[1])\r\n }\r\n };\r\n _setPage(page);\r\n setOutputDestination(pages[currentPage]);\r\n });\r\n\r\n var _addPage = function(parmFormat, parmOrientation) {\r\n var dimensions, width, height;\r\n\r\n orientation = parmOrientation || orientation;\r\n\r\n if (typeof parmFormat === \"string\") {\r\n dimensions = getPageFormat(parmFormat.toLowerCase());\r\n if (Array.isArray(dimensions)) {\r\n width = dimensions[0];\r\n height = dimensions[1];\r\n }\r\n }\r\n\r\n if (Array.isArray(parmFormat)) {\r\n width = parmFormat[0] * scaleFactor;\r\n height = parmFormat[1] * scaleFactor;\r\n }\r\n\r\n if (isNaN(width)) {\r\n width = format[0];\r\n height = format[1];\r\n }\r\n\r\n if (width > 14400 || height > 14400) {\r\n console.warn(\r\n \"A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400\"\r\n );\r\n width = Math.min(14400, width);\r\n height = Math.min(14400, height);\r\n }\r\n\r\n format = [width, height];\r\n\r\n switch (orientation.substr(0, 1)) {\r\n case \"l\":\r\n if (height > width) {\r\n format = [height, width];\r\n }\r\n break;\r\n case \"p\":\r\n if (width > height) {\r\n format = [height, width];\r\n }\r\n break;\r\n }\r\n\r\n beginPage(format);\r\n\r\n // Set line width\r\n setLineWidth(lineWidth);\r\n // Set draw color\r\n out(strokeColor);\r\n // resurrecting non-default line caps, joins\r\n if (lineCapID !== 0) {\r\n out(lineCapID + \" J\");\r\n }\r\n if (lineJoinID !== 0) {\r\n out(lineJoinID + \" j\");\r\n }\r\n events.publish(\"addPage\", {\r\n pageNumber: page\r\n });\r\n };\r\n\r\n var _deletePage = function(n) {\r\n if (n > 0 && n <= page) {\r\n pages.splice(n, 1);\r\n pagesContext.splice(n, 1);\r\n page--;\r\n if (currentPage > page) {\r\n currentPage = page;\r\n }\r\n this.setPage(currentPage);\r\n }\r\n };\r\n\r\n var _setPage = function(n) {\r\n if (n > 0 && n <= page) {\r\n currentPage = n;\r\n }\r\n };\r\n\r\n var getNumberOfPages = (API.__private__.getNumberOfPages = API.getNumberOfPages = function() {\r\n return pages.length - 1;\r\n });\r\n\r\n /**\r\n * Returns a document-specific font key - a label assigned to a\r\n * font name + font type combination at the time the font was added\r\n * to the font inventory.\r\n *\r\n * Font key is used as label for the desired font for a block of text\r\n * to be added to the PDF document stream.\r\n * @private\r\n * @function\r\n * @param fontName {string} can be undefined on \"falthy\" to indicate \"use current\"\r\n * @param fontStyle {string} can be undefined on \"falthy\" to indicate \"use current\"\r\n * @returns {string} Font key.\r\n * @ignore\r\n */\r\n var getFont = function(fontName, fontStyle, options) {\r\n var key = undefined,\r\n fontNameLowerCase;\r\n options = options || {};\r\n\r\n fontName =\r\n fontName !== undefined ? fontName : fonts[activeFontKey].fontName;\r\n fontStyle =\r\n fontStyle !== undefined ? fontStyle : fonts[activeFontKey].fontStyle;\r\n fontNameLowerCase = fontName.toLowerCase();\r\n\r\n if (\r\n fontmap[fontNameLowerCase] !== undefined &&\r\n fontmap[fontNameLowerCase][fontStyle] !== undefined\r\n ) {\r\n key = fontmap[fontNameLowerCase][fontStyle];\r\n } else if (\r\n fontmap[fontName] !== undefined &&\r\n fontmap[fontName][fontStyle] !== undefined\r\n ) {\r\n key = fontmap[fontName][fontStyle];\r\n } else {\r\n if (options.disableWarning === false) {\r\n console.warn(\r\n \"Unable to look up font label for font '\" +\r\n fontName +\r\n \"', '\" +\r\n fontStyle +\r\n \"'. Refer to getFontList() for available fonts.\"\r\n );\r\n }\r\n }\r\n\r\n if (!key && !options.noFallback) {\r\n key = fontmap[\"times\"][fontStyle];\r\n if (key == null) {\r\n key = fontmap[\"times\"][\"normal\"];\r\n }\r\n }\r\n return key;\r\n };\r\n\r\n var putInfo = (API.__private__.putInfo = function() {\r\n var objectId = newObject();\r\n var encryptor = function(data) {\r\n return data;\r\n };\r\n if (encryptionOptions !== null) {\r\n encryptor = encryption.encryptor(objectId, 0);\r\n }\r\n out(\"<<\");\r\n out(\"/Producer (\" + pdfEscape(encryptor(\"jsPDF \" + jsPDF.version)) + \")\");\r\n for (var key in documentProperties) {\r\n if (documentProperties.hasOwnProperty(key) && documentProperties[key]) {\r\n out(\r\n \"/\" +\r\n key.substr(0, 1).toUpperCase() +\r\n key.substr(1) +\r\n \" (\" +\r\n pdfEscape(encryptor(documentProperties[key])) +\r\n \")\"\r\n );\r\n }\r\n }\r\n out(\"/CreationDate (\" + pdfEscape(encryptor(creationDate)) + \")\");\r\n out(\">>\");\r\n out(\"endobj\");\r\n });\r\n\r\n var putCatalog = (API.__private__.putCatalog = function(options) {\r\n options = options || {};\r\n var tmpRootDictionaryObjId =\r\n options.rootDictionaryObjId || rootDictionaryObjId;\r\n newObject();\r\n out(\"<<\");\r\n out(\"/Type /Catalog\");\r\n out(\"/Pages \" + tmpRootDictionaryObjId + \" 0 R\");\r\n // PDF13ref Section 7.2.1\r\n if (!zoomMode) zoomMode = \"fullwidth\";\r\n switch (zoomMode) {\r\n case \"fullwidth\":\r\n out(\"/OpenAction [3 0 R /FitH null]\");\r\n break;\r\n case \"fullheight\":\r\n out(\"/OpenAction [3 0 R /FitV null]\");\r\n break;\r\n case \"fullpage\":\r\n out(\"/OpenAction [3 0 R /Fit]\");\r\n break;\r\n case \"original\":\r\n out(\"/OpenAction [3 0 R /XYZ null null 1]\");\r\n break;\r\n default:\r\n var pcn = \"\" + zoomMode;\r\n if (pcn.substr(pcn.length - 1) === \"%\")\r\n zoomMode = parseInt(zoomMode) / 100;\r\n if (typeof zoomMode === \"number\") {\r\n out(\"/OpenAction [3 0 R /XYZ null null \" + f2(zoomMode) + \"]\");\r\n }\r\n }\r\n if (!layoutMode) layoutMode = \"continuous\";\r\n switch (layoutMode) {\r\n case \"continuous\":\r\n out(\"/PageLayout /OneColumn\");\r\n break;\r\n case \"single\":\r\n out(\"/PageLayout /SinglePage\");\r\n break;\r\n case \"two\":\r\n case \"twoleft\":\r\n out(\"/PageLayout /TwoColumnLeft\");\r\n break;\r\n case \"tworight\":\r\n out(\"/PageLayout /TwoColumnRight\");\r\n break;\r\n }\r\n if (pageMode) {\r\n /**\r\n * A name object specifying how the document should be displayed when opened:\r\n * UseNone : Neither document outline nor thumbnail images visible -- DEFAULT\r\n * UseOutlines : Document outline visible\r\n * UseThumbs : Thumbnail images visible\r\n * FullScreen : Full-screen mode, with no menu bar, window controls, or any other window visible\r\n */\r\n out(\"/PageMode /\" + pageMode);\r\n }\r\n events.publish(\"putCatalog\");\r\n out(\">>\");\r\n out(\"endobj\");\r\n });\r\n\r\n var putTrailer = (API.__private__.putTrailer = function() {\r\n out(\"trailer\");\r\n out(\"<<\");\r\n out(\"/Size \" + (objectNumber + 1));\r\n // Root and Info must be the last and second last objects written respectively\r\n out(\"/Root \" + objectNumber + \" 0 R\");\r\n out(\"/Info \" + (objectNumber - 1) + \" 0 R\");\r\n if (encryptionOptions !== null) {\r\n out(\"/Encrypt \" + encryption.oid + \" 0 R\");\r\n }\r\n out(\"/ID [ <\" + fileId + \"> <\" + fileId + \"> ]\");\r\n out(\">>\");\r\n });\r\n\r\n var putHeader = (API.__private__.putHeader = function() {\r\n out(\"%PDF-\" + pdfVersion);\r\n out(\"%\\xBA\\xDF\\xAC\\xE0\");\r\n });\r\n\r\n var putXRef = (API.__private__.putXRef = function() {\r\n var p = \"0000000000\";\r\n\r\n out(\"xref\");\r\n out(\"0 \" + (objectNumber + 1));\r\n out(\"0000000000 65535 f \");\r\n for (var i = 1; i <= objectNumber; i++) {\r\n var offset = offsets[i];\r\n if (typeof offset === \"function\") {\r\n out((p + offsets[i]()).slice(-10) + \" 00000 n \");\r\n } else {\r\n if (typeof offsets[i] !== \"undefined\") {\r\n out((p + offsets[i]).slice(-10) + \" 00000 n \");\r\n } else {\r\n out(\"0000000000 00000 n \");\r\n }\r\n }\r\n }\r\n });\r\n\r\n var buildDocument = (API.__private__.buildDocument = function() {\r\n resetDocument();\r\n setOutputDestination(content);\r\n\r\n events.publish(\"buildDocument\");\r\n\r\n putHeader();\r\n putPages();\r\n putAdditionalObjects();\r\n putResources();\r\n if (encryptionOptions !== null) putEncryptionDict();\r\n putInfo();\r\n putCatalog();\r\n\r\n var offsetOfXRef = contentLength;\r\n putXRef();\r\n putTrailer();\r\n out(\"startxref\");\r\n out(\"\" + offsetOfXRef);\r\n out(\"%%EOF\");\r\n\r\n setOutputDestination(pages[currentPage]);\r\n\r\n return content.join(\"\\n\");\r\n });\r\n\r\n var getBlob = (API.__private__.getBlob = function(data) {\r\n return new Blob([getArrayBuffer(data)], {\r\n type: \"application/pdf\"\r\n });\r\n });\r\n\r\n /**\r\n * Generates the PDF document.\r\n *\r\n * If `type` argument is undefined, output is raw body of resulting PDF returned as a string.\r\n *\r\n * @param {string} type A string identifying one of the possible output types.<br/>\r\n * Possible values are: <br/>\r\n * 'arraybuffer' -> (ArrayBuffer)<br/>\r\n * 'blob' -> (Blob)<br/>\r\n * 'bloburi'/'bloburl' -> (string)<br/>\r\n * 'datauristring'/'dataurlstring' -> (string)<br/>\r\n * 'datauri'/'dataurl' -> (undefined) -> change location to generated datauristring/dataurlstring<br/>\r\n * 'dataurlnewwindow' -> (window | null | undefined) throws error if global isn't a window object(node)<br/>\r\n * 'pdfobjectnewwindow' -> (window | null) throws error if global isn't a window object(node)<br/>\r\n * 'pdfjsnewwindow' -> (wind | null)\r\n * @param {Object|string} options An object providing some additional signalling to PDF generator.<br/>\r\n * Possible options are 'filename'.<br/>\r\n * A string can be passed instead of {filename:string} and defaults to 'generated.pdf'\r\n * @function\r\n * @instance\r\n * @returns {string|window|ArrayBuffer|Blob|jsPDF|null|undefined}\r\n * @memberof jsPDF#\r\n * @name output\r\n */\r\n var output = (API.output = API.__private__.output = SAFE(function output(\r\n type,\r\n options\r\n ) {\r\n options = options || {};\r\n\r\n if (typeof options === \"string\") {\r\n options = {\r\n filename: options\r\n };\r\n } else {\r\n options.filename = options.filename || \"generated.pdf\";\r\n }\r\n\r\n switch (type) {\r\n case undefined:\r\n return buildDocument();\r\n case \"save\":\r\n API.save(options.filename);\r\n break;\r\n case \"arraybuffer\":\r\n return getArrayBuffer(buildDocument());\r\n case \"blob\":\r\n return getBlob(buildDocument());\r\n case \"bloburi\":\r\n case \"bloburl\":\r\n // Developer is responsible of calling revokeObjectURL\r\n if (\r\n typeof globalObject.URL !== \"undefined\" &&\r\n typeof globalObject.URL.createObjectURL === \"function\"\r\n ) {\r\n return (\r\n (globalObject.URL &&\r\n globalObject.URL.createObjectURL(getBlob(buildDocument()))) ||\r\n void 0\r\n );\r\n } else {\r\n console.warn(\r\n \"bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser.\"\r\n );\r\n }\r\n break;\r\n case \"datauristring\":\r\n case \"dataurlstring\":\r\n var dataURI = \"\";\r\n var pdfDocument = buildDocument();\r\n try {\r\n dataURI = btoa(pdfDocument);\r\n } catch (e) {\r\n dataURI = btoa(unescape(encodeURIComponent(pdfDocument)));\r\n }\r\n return (\r\n \"data:application/pdf;filename=\" +\r\n options.filename +\r\n \";base64,\" +\r\n dataURI\r\n );\r\n case \"pdfobjectnewwindow\":\r\n if (\r\n Object.prototype.toString.call(globalObject) === \"[object Window]\"\r\n ) {\r\n var pdfObjectUrl =\r\n \"https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.1.1/pdfobject.min.js\";\r\n var integrity =\r\n ' integrity=\"sha512-4ze/a9/4jqu+tX9dfOqJYSvyYd5M6qum/3HpCLr+/Jqf0whc37VUbkpNGHR7/8pSnCFw47T1fmIpwBV7UySh3g==\" crossorigin=\"anonymous\"';\r\n\r\n if (options.pdfObjectUrl) {\r\n pdfObjectUrl = options.pdfObjectUrl;\r\n integrity = \"\";\r\n }\r\n\r\n var htmlForNewWindow =\r\n \"<html>\" +\r\n '<style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;} </style><body><script src=\"' +\r\n pdfObjectUrl +\r\n '\"' +\r\n integrity +\r\n '></script><script >PDFObject.embed(\"' +\r\n this.output(\"dataurlstring\") +\r\n '\", ' +\r\n JSON.stringify(options) +\r\n \");</script></body></html>\";\r\n var nW = globalObject.open();\r\n\r\n if (nW !== null) {\r\n nW.document.write(htmlForNewWindow);\r\n }\r\n return nW;\r\n } else {\r\n throw new Error(\r\n \"The option pdfobjectnewwindow just works in a browser-environment.\"\r\n );\r\n }\r\n case \"pdfjsnewwindow\":\r\n if (\r\n Object.prototype.toString.call(globalObject) === \"[object Window]\"\r\n ) {\r\n var pdfJsUrl = options.pdfJsUrl || \"examples/PDF.js/web/viewer.html\";\r\n var htmlForPDFjsNewWindow =\r\n \"<html>\" +\r\n \"<style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;} </style>\" +\r\n '<body><iframe id=\"pdfViewer\" src=\"' +\r\n pdfJsUrl +\r\n \"?file=&downloadName=\" +\r\n options.filename +\r\n '\" width=\"500px\" height=\"400px\" />' +\r\n \"</body></html>\";\r\n var PDFjsNewWindow = globalObject.open();\r\n\r\n if (PDFjsNewWindow !== null) {\r\n PDFjsNewWindow.document.write(htmlForPDFjsNewWindow);\r\n var scope = this;\r\n PDFjsNewWindow.document.documentElement.querySelector(\r\n \"#pdfViewer\"\r\n ).onload = function() {\r\n PDFjsNewWindow.document.title = options.filename;\r\n PDFjsNewWindow.document.documentElement\r\n .querySelector(\"#pdfViewer\")\r\n .contentWindow.PDFViewerApplication.open(\r\n scope.output(\"bloburl\")\r\n );\r\n };\r\n }\r\n return PDFjsNewWindow;\r\n } else {\r\n throw new Error(\r\n \"The option pdfjsnewwindow just works in a browser-environment.\"\r\n );\r\n }\r\n case \"dataurlnewwindow\":\r\n if (\r\n Object.prototype.toString.call(globalObject) === \"[object Window]\"\r\n ) {\r\n var htmlForDataURLNewWindow =\r\n \"<html>\" +\r\n \"<style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;} </style>\" +\r\n \"<body>\" +\r\n '<iframe src=\"' +\r\n this.output(\"datauristring\", options) +\r\n '\"></iframe>' +\r\n \"</body></html>\";\r\n var dataURLNewWindow = globalObject.open();\r\n if (dataURLNewWindow !== null) {\r\n dataURLNewWindow.document.write(htmlForDataURLNewWindow);\r\n dataURLNewWindow.document.title = options.filename;\r\n }\r\n if (dataURLNewWindow || typeof safari === \"undefined\")\r\n return dataURLNewWindow;\r\n } else {\r\n throw new Error(\r\n \"The option dataurlnewwindow just works in a browser-environment.\"\r\n );\r\n }\r\n break;\r\n case \"datauri\":\r\n case \"dataurl\":\r\n return (globalObject.document.location.href = this.output(\r\n \"datauristring\",\r\n options\r\n ));\r\n default:\r\n return null;\r\n }\r\n }));\r\n\r\n /**\r\n * Used to see if a supplied hotfix was requested when the pdf instance was created.\r\n * @param {string} hotfixName - The name of the hotfix to check.\r\n * @returns {boolean}\r\n */\r\n var hasHotfix = function(hotfixName) {\r\n return (\r\n Array.isArray(hotfixes) === true && hotfixes.indexOf(hotfixName) > -1\r\n );\r\n };\r\n\r\n switch (unit) {\r\n case \"pt\":\r\n scaleFactor = 1;\r\n break;\r\n case \"mm\":\r\n scaleFactor = 72 / 25.4;\r\n break;\r\n case \"cm\":\r\n scaleFactor = 72 / 2.54;\r\n break;\r\n case \"in\":\r\n scaleFactor = 72;\r\n break;\r\n case \"px\":\r\n if (hasHotfix(\"px_scaling\") == true) {\r\n scaleFactor = 72 / 96;\r\n } else {\r\n scaleFactor = 96 / 72;\r\n }\r\n break;\r\n case \"pc\":\r\n scaleFactor = 12;\r\n break;\r\n case \"em\":\r\n scaleFactor = 12;\r\n break;\r\n case \"ex\":\r\n scaleFactor = 6;\r\n break;\r\n default:\r\n if (typeof unit === \"number\") {\r\n scaleFactor = unit;\r\n } else {\r\n throw new Error(\"Invalid unit: \" + unit);\r\n }\r\n }\r\n\r\n var encryption = null;\r\n setCreationDate();\r\n setFileId();\r\n\r\n var getEncryptor = function(objectId) {\r\n if (encryptionOptions !== null) {\r\n return encryption.encryptor(objectId, 0);\r\n }\r\n return function(data) {\r\n return data;\r\n };\r\n };\r\n\r\n //---------------------------------------\r\n // Public API\r\n\r\n var getPageInfo = (API.__private__.getPageInfo = API.getPageInfo = function(\r\n pageNumberOneBased\r\n ) {\r\n if (isNaN(pageNumberOneBased) || pageNumberOneBased % 1 !== 0) {\r\n throw new Error(\"Invalid argument passed to jsPDF.getPageInfo\");\r\n }\r\n var objId = pagesContext[pageNumberOneBased].objId;\r\n return {\r\n objId: objId,\r\n pageNumber: pageNumberOneBased,\r\n pageContext: pagesContext[pageNumberOneBased]\r\n };\r\n });\r\n\r\n var getPageInfoByObjId = (API.__private__.getPageInfoByObjId = function(\r\n objId\r\n ) {\r\n if (isNaN(objId) || objId % 1 !== 0) {\r\n throw new Error(\"Invalid argument passed to jsPDF.getPageInfoByObjId\");\r\n }\r\n for (var pageNumber in pagesContext) {\r\n if (pagesContext[pageNumber].objId === objId) {\r\n break;\r\n }\r\n }\r\n return getPageInfo(pageNumber);\r\n });\r\n\r\n var getCurrentPageInfo = (API.__private__.getCurrentPageInfo = API.getCurrentPageInfo = function() {\r\n return {\r\n objId: pagesContext[currentPage].objId,\r\n pageNumber: currentPage,\r\n pageContext: pagesContext[currentPage]\r\n };\r\n });\r\n\r\n /**\r\n * Adds (and transfers the focus to) new page to the PDF document.\r\n * @param format {String/Array} The format of the new page. Can be: <ul><li>a0 - a10</li><li>b0 - b10</li><li>c0 - c10</li><li>dl</li><li>letter</li><li>government-letter</li><li>legal</li><li>junior-legal</li><li>ledger</li><li>tabloid</li><li>credit-card</li></ul><br />\r\n * Default is \"a4\". If you want to use your own format just pass instead of one of the above predefined formats the size as an number-array, e.g. [595.28, 841.89]\r\n * @param orientation {string} Orientation of the new page. Possible values are \"portrait\" or \"landscape\" (or shortcuts \"p\" (Default), \"l\").\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n *\r\n * @memberof jsPDF#\r\n * @name addPage\r\n */\r\n API.addPage = function() {\r\n _addPage.apply(this, arguments);\r\n return this;\r\n };\r\n /**\r\n * Adds (and transfers the focus to) new page to the PDF document.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n *\r\n * @memberof jsPDF#\r\n * @name setPage\r\n * @param {number} page Switch the active page to the page number specified (indexed starting at 1).\r\n * @example\r\n * doc = jsPDF()\r\n * doc.addPage()\r\n * doc.addPage()\r\n * doc.text('I am on page 3', 10, 10)\r\n * doc.setPage(1)\r\n * doc.text('I am on page 1', 10, 10)\r\n */\r\n API.setPage = function() {\r\n _setPage.apply(this, arguments);\r\n setOutputDestination.call(this, pages[currentPage]);\r\n return this;\r\n };\r\n\r\n /**\r\n * @name insertPage\r\n * @memberof jsPDF#\r\n *\r\n * @function\r\n * @instance\r\n * @param {Object} beforePage\r\n * @returns {jsPDF}\r\n */\r\n API.insertPage = function(beforePage) {\r\n this.addPage();\r\n this.movePage(currentPage, beforePage);\r\n return this;\r\n };\r\n\r\n /**\r\n * @name movePage\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n * @param {number} targetPage\r\n * @param {number} beforePage\r\n * @returns {jsPDF}\r\n */\r\n API.movePage = function(targetPage, beforePage) {\r\n var tmpPages, tmpPagesContext;\r\n if (targetPage > beforePage) {\r\n tmpPages = pages[targetPage];\r\n tmpPagesContext = pagesContext[targetPage];\r\n for (var i = targetPage; i > beforePage; i--) {\r\n pages[i] = pages[i - 1];\r\n pagesContext[i] = pagesContext[i - 1];\r\n }\r\n pages[beforePage] = tmpPages;\r\n pagesContext[beforePage] = tmpPagesContext;\r\n this.setPage(beforePage);\r\n } else if (targetPage < beforePage) {\r\n tmpPages = pages[targetPage];\r\n tmpPagesContext = pagesContext[targetPage];\r\n for (var j = targetPage; j < beforePage; j++) {\r\n pages[j] = pages[j + 1];\r\n pagesContext[j] = pagesContext[j + 1];\r\n }\r\n pages[beforePage] = tmpPages;\r\n pagesContext[beforePage] = tmpPagesContext;\r\n this.setPage(beforePage);\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Deletes a page from the PDF.\r\n * @name deletePage\r\n * @memberof jsPDF#\r\n * @function\r\n * @param {number} targetPage\r\n * @instance\r\n * @returns {jsPDF}\r\n */\r\n API.deletePage = function() {\r\n _deletePage.apply(this, arguments);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds text to page. Supports adding multiline text when 'text' argument is an Array of Strings.\r\n *\r\n * @function\r\n * @instance\r\n * @param {String|Array} text String or array of strings to be added to the page. Each line is shifted one line down per font, spacing settings declared before this call.\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page.\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page.\r\n * @param {Object} [options] - Collection of settings signaling how the text must be encoded.\r\n * @param {string} [options.align=left] - The alignment of the text, possible values: left, center, right, justify.\r\n * @param {string} [options.baseline=alphabetic] - Sets text baseline used when drawing the text, possible values: alphabetic, ideographic, bottom, top, middle, hanging\r\n * @param {number|Matrix} [options.angle=0] - Rotate the text clockwise or counterclockwise. Expects the angle in degree.\r\n * @param {number} [options.rotationDirection=1] - Direction of the rotation. 0 = clockwise, 1 = counterclockwise.\r\n * @param {number} [options.charSpace=0] - The space between each letter.\r\n * @param {number} [options.horizontalScale=1] - Horizontal scale of the text as a factor of the regular size.\r\n * @param {number} [options.lineHeightFactor=1.15] - The lineheight of each line.\r\n * @param {Object} [options.flags] - Flags for to8bitStream.\r\n * @param {boolean} [options.flags.noBOM=true] - Don't add BOM to Unicode-text.\r\n * @param {boolean} [options.flags.autoencode=true] - Autoencode the Text.\r\n * @param {number} [options.maxWidth=0] - Split the text by given width, 0 = no split.\r\n * @param {string} [options.renderingMode=fill] - Set how the text should be rendered, possible values: fill, stroke, fillThenStroke, invisible, fillAndAddForClipping, strokeAndAddPathForClipping, fillThenStrokeAndAddToPathForClipping, addToPathForClipping.\r\n * @param {boolean} [options.isInputVisual] - Option for the BidiEngine\r\n * @param {boolean} [options.isOutputVisual] - Option for the BidiEngine\r\n * @param {boolean} [options.isInputRtl] - Option for the BidiEngine\r\n * @param {boolean} [options.isOutputRtl] - Option for the BidiEngine\r\n * @param {boolean} [options.isSymmetricSwapping] - Option for the BidiEngine\r\n * @param {number|Matrix} transform If transform is a number the text will be rotated by this value around the anchor set by x and y.\r\n *\r\n * If it is a Matrix, this matrix gets directly applied to the text, which allows shearing\r\n * effects etc.; the x and y offsets are then applied AFTER the coordinate system has been established by this\r\n * matrix. This means passing a rotation matrix that is equivalent to some rotation angle will in general yield a\r\n * DIFFERENT result. A matrix is only allowed in \"advanced\" API mode.\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name text\r\n */\r\n API.__private__.text = API.text = function(text, x, y, options, transform) {\r\n /*\r\n * Inserts something like this into PDF\r\n * BT\r\n * /F1 16 Tf % Font name + size\r\n * 16 TL % How many units down for next line in multiline text\r\n * 0 g % color\r\n * 28.35 813.54 Td % position\r\n * (line one) Tj\r\n * T* (line two) Tj\r\n * T* (line three) Tj\r\n * ET\r\n */\r\n options = options || {};\r\n var scope = options.scope || this;\r\n var payload, da, angle, align, charSpace, maxWidth, flags, horizontalScale;\r\n\r\n // Pre-August-2012 the order of arguments was function(x, y, text, flags)\r\n // in effort to make all calls have similar signature like\r\n // function(data, coordinates... , miscellaneous)\r\n // this method had its args flipped.\r\n // code below allows backward compatibility with old arg order.\r\n if (\r\n typeof text === \"number\" &&\r\n typeof x === \"number\" &&\r\n (typeof y === \"string\" || Array.isArray(y))\r\n ) {\r\n var tmp = y;\r\n y = x;\r\n x = text;\r\n text = tmp;\r\n }\r\n\r\n var transformationMatrix;\r\n\r\n if (arguments[3] instanceof Matrix === false) {\r\n flags = arguments[3];\r\n angle = arguments[4];\r\n align = arguments[5];\r\n\r\n if (typeof flags !== \"object\" || flags === null) {\r\n if (typeof angle === \"string\") {\r\n align = angle;\r\n angle = null;\r\n }\r\n if (typeof flags === \"string\") {\r\n align = flags;\r\n flags = null;\r\n }\r\n if (typeof flags === \"number\") {\r\n angle = flags;\r\n flags = null;\r\n }\r\n options = {\r\n flags: flags,\r\n angle: angle,\r\n align: align\r\n };\r\n }\r\n } else {\r\n advancedApiModeTrap(\r\n \"The transform parameter of text() with a Matrix value\"\r\n );\r\n transformationMatrix = transform;\r\n }\r\n\r\n if (isNaN(x) || isNaN(y) || typeof text === \"undefined\" || text === null) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.text\");\r\n }\r\n\r\n if (text.length === 0) {\r\n return scope;\r\n }\r\n\r\n var xtra = \"\";\r\n var isHex = false;\r\n var lineHeight =\r\n typeof options.lineHeightFactor === \"number\"\r\n ? options.lineHeightFactor\r\n : lineHeightFactor;\r\n var scaleFactor = scope.internal.scaleFactor;\r\n\r\n function ESC(s) {\r\n s = s.split(\"\\t\").join(Array(options.TabLen || 9).join(\" \"));\r\n return pdfEscape(s, flags);\r\n }\r\n\r\n function transformTextToSpecialArray(text) {\r\n //we don't want to destroy original text array, so cloning it\r\n var sa = text.concat();\r\n var da = [];\r\n var len = sa.length;\r\n var curDa;\r\n //we do array.join('text that must not be PDFescaped\")\r\n //thus, pdfEscape each component separately\r\n while (len--) {\r\n curDa = sa.shift();\r\n if (typeof curDa === \"string\") {\r\n da.push(curDa);\r\n } else {\r\n if (\r\n Array.isArray(text) &&\r\n (curDa.length === 1 ||\r\n (curDa[1] === undefined && curDa[2] === undefined))\r\n ) {\r\n da.push(curDa[0]);\r\n } else {\r\n da.push([curDa[0], curDa[1], curDa[2]]);\r\n }\r\n }\r\n }\r\n return da;\r\n }\r\n\r\n function processTextByFunction(text, processingFunction) {\r\n var result;\r\n if (typeof text === \"string\") {\r\n result = processingFunction(text)[0];\r\n } else if (Array.isArray(text)) {\r\n //we don't want to destroy original text array, so cloning it\r\n var sa = text.concat();\r\n var da = [];\r\n var len = sa.length;\r\n var curDa;\r\n var tmpResult;\r\n //we do array.join('text that must not be PDFescaped\")\r\n //thus, pdfEscape each component separately\r\n while (len--) {\r\n curDa = sa.shift();\r\n if (typeof curDa === \"string\") {\r\n da.push(processingFunction(curDa)[0]);\r\n } else if (Array.isArray(curDa) && typeof curDa[0] === \"string\") {\r\n tmpResult = processingFunction(curDa[0], curDa[1], curDa[2]);\r\n da.push([tmpResult[0], tmpResult[1], tmpResult[2]]);\r\n }\r\n }\r\n result = da;\r\n }\r\n return result;\r\n }\r\n\r\n //Check if text is of type String\r\n var textIsOfTypeString = false;\r\n var tmpTextIsOfTypeString = true;\r\n\r\n if (typeof text === \"string\") {\r\n textIsOfTypeString = true;\r\n } else if (Array.isArray(text)) {\r\n //we don't want to destroy original text array, so cloning it\r\n var sa = text.concat();\r\n da = [];\r\n var len = sa.length;\r\n var curDa;\r\n //we do array.join('text that must not be PDFescaped\")\r\n //thus, pdfEscape each component separately\r\n while (len--) {\r\n curDa = sa.shift();\r\n if (\r\n typeof curDa !== \"string\" ||\r\n (Array.isArray(curDa) && typeof curDa[0] !== \"string\")\r\n ) {\r\n tmpTextIsOfTypeString = false;\r\n }\r\n }\r\n textIsOfTypeString = tmpTextIsOfTypeString;\r\n }\r\n if (textIsOfTypeString === false) {\r\n throw new Error(\r\n 'Type of text must be string or Array. \"' +\r\n text +\r\n '\" is not recognized.'\r\n );\r\n }\r\n\r\n //If there are any newlines in text, we assume\r\n //the user wanted to print multiple lines, so break the\r\n //text up into an array. If the text is already an array,\r\n //we assume the user knows what they are doing.\r\n //Convert text into an array anyway to simplify\r\n //later code.\r\n\r\n if (typeof text === \"string\") {\r\n if (text.match(/[\\r?\\n]/)) {\r\n text = text.split(/\\r\\n|\\r|\\n/g);\r\n } else {\r\n text = [text];\r\n }\r\n }\r\n\r\n //baseline\r\n var height = activeFontSize / scope.internal.scaleFactor;\r\n var descent = height * (lineHeight - 1);\r\n\r\n switch (options.baseline) {\r\n case \"bottom\":\r\n y -= descent;\r\n break;\r\n case \"top\":\r\n y += height - descent;\r\n break;\r\n case \"hanging\":\r\n y += height - 2 * descent;\r\n break;\r\n case \"middle\":\r\n y += height / 2 - descent;\r\n break;\r\n case \"ideographic\":\r\n case \"alphabetic\":\r\n default:\r\n // do nothing, everything is fine\r\n break;\r\n }\r\n\r\n //multiline\r\n maxWidth = options.maxWidth || 0;\r\n\r\n if (maxWidth > 0) {\r\n if (typeof text === \"string\") {\r\n text = scope.splitTextToSize(text, maxWidth);\r\n } else if (Object.prototype.toString.call(text) === \"[object Array]\") {\r\n text = text.reduce(function(acc, textLine) {\r\n return acc.concat(scope.splitTextToSize(textLine, maxWidth));\r\n }, []);\r\n }\r\n }\r\n\r\n //creating Payload-Object to make text byRef\r\n payload = {\r\n text: text,\r\n x: x,\r\n y: y,\r\n options: options,\r\n mutex: {\r\n pdfEscape: pdfEscape,\r\n activeFontKey: activeFontKey,\r\n fonts: fonts,\r\n activeFontSize: activeFontSize\r\n }\r\n };\r\n events.publish(\"preProcessText\", payload);\r\n\r\n text = payload.text;\r\n options = payload.options;\r\n\r\n //angle\r\n angle = options.angle;\r\n\r\n if (\r\n transformationMatrix instanceof Matrix === false &&\r\n angle &&\r\n typeof angle === \"number\"\r\n ) {\r\n angle *= Math.PI / 180;\r\n\r\n if (options.rotationDirection === 0) {\r\n angle = -angle;\r\n }\r\n\r\n if (apiMode === ApiMode.ADVANCED) {\r\n angle = -angle;\r\n }\r\n\r\n var c = Math.cos(angle);\r\n var s = Math.sin(angle);\r\n transformationMatrix = new Matrix(c, s, -s, c, 0, 0);\r\n } else if (angle && angle instanceof Matrix) {\r\n transformationMatrix = angle;\r\n }\r\n\r\n if (apiMode === ApiMode.ADVANCED && !transformationMatrix) {\r\n transformationMatrix = identityMatrix;\r\n }\r\n\r\n //charSpace\r\n\r\n charSpace = options.charSpace || activeCharSpace;\r\n\r\n if (typeof charSpace !== \"undefined\") {\r\n xtra += hpf(scale(charSpace)) + \" Tc\\n\";\r\n this.setCharSpace(this.getCharSpace() || 0);\r\n }\r\n\r\n horizontalScale = options.horizontalScale;\r\n if (typeof horizontalScale !== \"undefined\") {\r\n xtra += hpf(horizontalScale * 100) + \" Tz\\n\";\r\n }\r\n\r\n //lang\r\n\r\n var lang = options.lang;\r\n\r\n if (lang) {\r\n // xtra += \"/Lang (\" + lang +\")\\n\";\r\n }\r\n\r\n //renderingMode\r\n var renderingMode = -1;\r\n var parmRenderingMode =\r\n typeof options.renderingMode !== \"undefined\"\r\n ? options.renderingMode\r\n : options.stroke;\r\n var pageContext = scope.internal.getCurrentPageInfo().pageContext;\r\n\r\n switch (parmRenderingMode) {\r\n case 0:\r\n case false:\r\n case \"fill\":\r\n renderingMode = 0;\r\n break;\r\n case 1:\r\n case true:\r\n case \"stroke\":\r\n renderingMode = 1;\r\n break;\r\n case 2:\r\n case \"fillThenStroke\":\r\n renderingMode = 2;\r\n break;\r\n case 3:\r\n case \"invisible\":\r\n renderingMode = 3;\r\n break;\r\n case 4:\r\n case \"fillAndAddForClipping\":\r\n renderingMode = 4;\r\n break;\r\n case 5:\r\n case \"strokeAndAddPathForClipping\":\r\n renderingMode = 5;\r\n break;\r\n case 6:\r\n case \"fillThenStrokeAndAddToPathForClipping\":\r\n renderingMode = 6;\r\n break;\r\n case 7:\r\n case \"addToPathForClipping\":\r\n renderingMode = 7;\r\n break;\r\n }\r\n\r\n var usedRenderingMode =\r\n typeof pageContext.usedRenderingMode !== \"undefined\"\r\n ? pageContext.usedRenderingMode\r\n : -1;\r\n\r\n //if the coder wrote it explicitly to use a specific\r\n //renderingMode, then use it\r\n if (renderingMode !== -1) {\r\n xtra += renderingMode + \" Tr\\n\";\r\n //otherwise check if we used the rendering Mode already\r\n //if so then set the rendering Mode...\r\n } else if (usedRenderingMode !== -1) {\r\n xtra += \"0 Tr\\n\";\r\n }\r\n\r\n if (renderingMode !== -1) {\r\n pageContext.usedRenderingMode = renderingMode;\r\n }\r\n\r\n //align\r\n align = options.align || \"left\";\r\n var leading = activeFontSize * lineHeight;\r\n var pageWidth = scope.internal.pageSize.getWidth();\r\n var activeFont = fonts[activeFontKey];\r\n charSpace = options.charSpace || activeCharSpace;\r\n maxWidth = options.maxWidth || 0;\r\n\r\n var lineWidths;\r\n flags = Object.assign({ autoencode: true, noBOM: true }, options.flags);\r\n\r\n var wordSpacingPerLine = [];\r\n\r\n if (Object.prototype.toString.call(text) === \"[object Array]\") {\r\n da = transformTextToSpecialArray(text);\r\n var newY;\r\n if (align !== \"left\") {\r\n lineWidths = da.map(function(v) {\r\n return (\r\n (scope.getStringUnitWidth(v, {\r\n font: activeFont,\r\n charSpace: charSpace,\r\n fontSize: activeFontSize,\r\n doKerning: false\r\n }) *\r\n activeFontSize) /\r\n scaleFactor\r\n );\r\n });\r\n }\r\n //The first line uses the \"main\" Td setting,\r\n //and the subsequent lines are offset by the\r\n //previous line's x coordinate.\r\n var prevWidth = 0;\r\n var newX;\r\n if (align === \"right\") {\r\n //The passed in x coordinate defines the\r\n //rightmost point of the text.\r\n x -= lineWidths[0];\r\n text = [];\r\n len = da.length;\r\n for (var i = 0; i < len; i++) {\r\n if (i === 0) {\r\n newX = getHorizontalCoordinate(x);\r\n newY = getVerticalCoordinate(y);\r\n } else {\r\n newX = scale(prevWidth - lineWidths[i]);\r\n newY = -leading;\r\n }\r\n text.push([da[i], newX, newY]);\r\n prevWidth = lineWidths[i];\r\n }\r\n } else if (align === \"center\") {\r\n //The passed in x coordinate defines\r\n //the center point.\r\n x -= lineWidths[0] / 2;\r\n text = [];\r\n len = da.length;\r\n for (var j = 0; j < len; j++) {\r\n if (j === 0) {\r\n newX = getHorizontalCoordinate(x);\r\n newY = getVerticalCoordinate(y);\r\n } else {\r\n newX = scale((prevWidth - lineWidths[j]) / 2);\r\n newY = -leading;\r\n }\r\n text.push([da[j], newX, newY]);\r\n prevWidth = lineWidths[j];\r\n }\r\n } else if (align === \"left\") {\r\n text = [];\r\n len = da.length;\r\n for (var h = 0; h < len; h++) {\r\n text.push(da[h]);\r\n }\r\n } else if (align === \"justify\") {\r\n text = [];\r\n len = da.length;\r\n maxWidth = maxWidth !== 0 ? maxWidth : pageWidth;\r\n\r\n for (var l = 0; l < len; l++) {\r\n newY = l === 0 ? getVerticalCoordinate(y) : -leading;\r\n newX = l === 0 ? getHorizontalCoordinate(x) : 0;\r\n if (l < len - 1) {\r\n wordSpacingPerLine.push(\r\n hpf(\r\n scale(\r\n (maxWidth - lineWidths[l]) / (da[l].split(\" \").length - 1)\r\n )\r\n )\r\n );\r\n } else {\r\n wordSpacingPerLine.push(0);\r\n }\r\n text.push([da[l], newX, newY]);\r\n }\r\n } else {\r\n throw new Error(\r\n 'Unrecognized alignment option, use \"left\", \"center\", \"right\" or \"justify\".'\r\n );\r\n }\r\n }\r\n\r\n //R2L\r\n var doReversing = typeof options.R2L === \"boolean\" ? options.R2L : R2L;\r\n if (doReversing === true) {\r\n text = processTextByFunction(text, function(text, posX, posY) {\r\n return [\r\n text\r\n .split(\"\")\r\n .reverse()\r\n .join(\"\"),\r\n posX,\r\n posY\r\n ];\r\n });\r\n }\r\n\r\n //creating Payload-Object to make text byRef\r\n payload = {\r\n text: text,\r\n x: x,\r\n y: y,\r\n options: options,\r\n mutex: {\r\n pdfEscape: pdfEscape,\r\n activeFontKey: activeFontKey,\r\n fonts: fonts,\r\n activeFontSize: activeFontSize\r\n }\r\n };\r\n events.publish(\"postProcessText\", payload);\r\n\r\n text = payload.text;\r\n isHex = payload.mutex.isHex || false;\r\n\r\n //Escaping\r\n var activeFontEncoding = fonts[activeFontKey].encoding;\r\n\r\n if (\r\n activeFontEncoding === \"WinAnsiEncoding\" ||\r\n activeFontEncoding === \"StandardEncoding\"\r\n ) {\r\n text = processTextByFunction(text, function(text, posX, posY) {\r\n return [ESC(text), posX, posY];\r\n });\r\n }\r\n\r\n da = transformTextToSpecialArray(text);\r\n\r\n text = [];\r\n var STRING = 0;\r\n var ARRAY = 1;\r\n var variant = Array.isArray(da[0]) ? ARRAY : STRING;\r\n var posX;\r\n var posY;\r\n var content;\r\n var wordSpacing = \"\";\r\n\r\n var generatePosition = function(\r\n parmPosX,\r\n parmPosY,\r\n parmTransformationMatrix\r\n ) {\r\n var position = \"\";\r\n if (parmTransformationMatrix instanceof Matrix) {\r\n // It is kind of more intuitive to apply a plain rotation around the text anchor set by x and y\r\n // but when the user supplies an arbitrary transformation matrix, the x and y offsets should be applied\r\n // in the coordinate system established by this matrix\r\n if (typeof options.angle === \"number\") {\r\n parmTransformationMatrix = matrixMult(\r\n parmTransformationMatrix,\r\n new Matrix(1, 0, 0, 1, parmPosX, parmPosY)\r\n );\r\n } else {\r\n parmTransformationMatrix = matrixMult(\r\n new Matrix(1, 0, 0, 1, parmPosX, parmPosY),\r\n parmTransformationMatrix\r\n );\r\n }\r\n\r\n if (apiMode === ApiMode.ADVANCED) {\r\n parmTransformationMatrix = matrixMult(\r\n new Matrix(1, 0, 0, -1, 0, 0),\r\n parmTransformationMatrix\r\n );\r\n }\r\n\r\n position = parmTransformationMatrix.join(\" \") + \" Tm\\n\";\r\n } else {\r\n position = hpf(parmPosX) + \" \" + hpf(parmPosY) + \" Td\\n\";\r\n }\r\n return position;\r\n };\r\n\r\n for (var lineIndex = 0; lineIndex < da.length; lineIndex++) {\r\n wordSpacing = \"\";\r\n\r\n switch (variant) {\r\n case ARRAY:\r\n content =\r\n (isHex ? \"<\" : \"(\") + da[lineIndex][0] + (isHex ? \">\" : \")\");\r\n posX = parseFloat(da[lineIndex][1]);\r\n posY = parseFloat(da[lineIndex][2]);\r\n break;\r\n case STRING:\r\n content = (isHex ? \"<\" : \"(\") + da[lineIndex] + (isHex ? \">\" : \")\");\r\n posX = getHorizontalCoordinate(x);\r\n posY = getVerticalCoordinate(y);\r\n break;\r\n }\r\n\r\n if (\r\n typeof wordSpacingPerLine !== \"undefined\" &&\r\n typeof wordSpacingPerLine[lineIndex] !== \"undefined\"\r\n ) {\r\n wordSpacing = wordSpacingPerLine[lineIndex] + \" Tw\\n\";\r\n }\r\n\r\n if (lineIndex === 0) {\r\n text.push(\r\n wordSpacing +\r\n generatePosition(posX, posY, transformationMatrix) +\r\n content\r\n );\r\n } else if (variant === STRING) {\r\n text.push(wordSpacing + content);\r\n } else if (variant === ARRAY) {\r\n text.push(\r\n wordSpacing +\r\n generatePosition(posX, posY, transformationMatrix) +\r\n content\r\n );\r\n }\r\n }\r\n\r\n text = variant === STRING ? text.join(\" Tj\\nT* \") : text.join(\" Tj\\n\");\r\n text += \" Tj\\n\";\r\n\r\n var result = \"BT\\n/\";\r\n result += activeFontKey + \" \" + activeFontSize + \" Tf\\n\"; // font face, style, size\r\n result += hpf(activeFontSize * lineHeight) + \" TL\\n\"; // line spacing\r\n result += textColor + \"\\n\";\r\n result += xtra;\r\n result += text;\r\n result += \"ET\";\r\n\r\n out(result);\r\n usedFonts[activeFontKey] = true;\r\n return scope;\r\n };\r\n\r\n // PDF supports these path painting and clip path operators:\r\n //\r\n // S - stroke\r\n // s - close/stroke\r\n // f (F) - fill non-zero\r\n // f* - fill evenodd\r\n // B - fill stroke nonzero\r\n // B* - fill stroke evenodd\r\n // b - close fill stroke nonzero\r\n // b* - close fill stroke evenodd\r\n // n - nothing (consume path)\r\n // W - clip nonzero\r\n // W* - clip evenodd\r\n //\r\n // In order to keep the API small, we omit the close-and-fill/stroke operators and provide a separate close()\r\n // method.\r\n /**\r\n *\r\n * @name clip\r\n * @function\r\n * @instance\r\n * @param {string} rule Only possible value is 'evenodd'\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @description All .clip() after calling drawing ops with a style argument of null.\r\n */\r\n var clip = (API.__private__.clip = API.clip = function(rule) {\r\n // Call .clip() after calling drawing ops with a style argument of null\r\n // W is the PDF clipping op\r\n if (\"evenodd\" === rule) {\r\n out(\"W*\");\r\n } else {\r\n out(\"W\");\r\n }\r\n return this;\r\n });\r\n\r\n /**\r\n * @name clipEvenOdd\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @description Modify the current clip path by intersecting it with the current path using the even-odd rule. Note\r\n * that this will NOT consume the current path. In order to only use this path for clipping call\r\n * {@link API.discardPath} afterwards.\r\n */\r\n API.clipEvenOdd = function() {\r\n return clip(\"evenodd\");\r\n };\r\n\r\n /**\r\n * Consumes the current path without any effect. Mainly used in combination with {@link clip} or\r\n * {@link clipEvenOdd}. The PDF \"n\" operator.\r\n * @name discardPath\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.__private__.discardPath = API.discardPath = function() {\r\n out(\"n\");\r\n return this;\r\n };\r\n\r\n var isValidStyle = (API.__private__.isValidStyle = function(style) {\r\n var validStyleVariants = [\r\n undefined,\r\n null,\r\n \"S\",\r\n \"D\",\r\n \"F\",\r\n \"DF\",\r\n \"FD\",\r\n \"f\",\r\n \"f*\",\r\n \"B\",\r\n \"B*\",\r\n \"n\"\r\n ];\r\n var result = false;\r\n if (validStyleVariants.indexOf(style) !== -1) {\r\n result = true;\r\n }\r\n return result;\r\n });\r\n\r\n API.__private__.setDefaultPathOperation = API.setDefaultPathOperation = function(\r\n operator\r\n ) {\r\n if (isValidStyle(operator)) {\r\n defaultPathOperation = operator;\r\n }\r\n return this;\r\n };\r\n\r\n var getStyle = (API.__private__.getStyle = API.getStyle = function(style) {\r\n // see path-painting operators in PDF spec\r\n var op = defaultPathOperation; // stroke\r\n\r\n switch (style) {\r\n case \"D\":\r\n case \"S\":\r\n op = \"S\"; // stroke\r\n break;\r\n case \"F\":\r\n op = \"f\"; // fill\r\n break;\r\n case \"FD\":\r\n case \"DF\":\r\n op = \"B\";\r\n break;\r\n case \"f\":\r\n case \"f*\":\r\n case \"B\":\r\n case \"B*\":\r\n /*\r\n Allow direct use of these PDF path-painting operators:\r\n - f fill using nonzero winding number rule\r\n - f* fill using even-odd rule\r\n - B fill then stroke with fill using non-zero winding number rule\r\n - B* fill then stroke with fill using even-odd rule\r\n */\r\n op = style;\r\n break;\r\n }\r\n return op;\r\n });\r\n\r\n /**\r\n * Close the current path. The PDF \"h\" operator.\r\n * @name close\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n var close = (API.close = function() {\r\n out(\"h\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Stroke the path. The PDF \"S\" operator.\r\n * @name stroke\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.stroke = function() {\r\n out(\"S\");\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill the current path using the nonzero winding number rule. If a pattern is provided, the path will be filled\r\n * with this pattern, otherwise with the current fill color. Equivalent to the PDF \"f\" operator.\r\n * @name fill\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be filled with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fill = function(pattern) {\r\n fillWithOptionalPattern(\"f\", pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill the current path using the even-odd rule. The PDF f* operator.\r\n * @see API.fill\r\n * @name fillEvenOdd\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be filled with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fillEvenOdd = function(pattern) {\r\n fillWithOptionalPattern(\"f*\", pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill using the nonzero winding number rule and then stroke the current Path. The PDF \"B\" operator.\r\n * @see API.fill\r\n * @name fillStroke\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be stroked with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fillStroke = function(pattern) {\r\n fillWithOptionalPattern(\"B\", pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill using the even-odd rule and then stroke the current Path. The PDF \"B\" operator.\r\n * @see API.fill\r\n * @name fillStrokeEvenOdd\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be fill-stroked with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fillStrokeEvenOdd = function(pattern) {\r\n fillWithOptionalPattern(\"B*\", pattern);\r\n return this;\r\n };\r\n\r\n var fillWithOptionalPattern = function(style, pattern) {\r\n if (typeof pattern === \"object\") {\r\n fillWithPattern(pattern, style);\r\n } else {\r\n out(style);\r\n }\r\n };\r\n\r\n var putStyle = function(style) {\r\n if (\r\n style === null ||\r\n (apiMode === ApiMode.ADVANCED && style === undefined)\r\n ) {\r\n return;\r\n }\r\n\r\n style = getStyle(style);\r\n\r\n // stroking / filling / both the path\r\n out(style);\r\n };\r\n\r\n function cloneTilingPattern(patternKey, boundingBox, xStep, yStep, matrix) {\r\n var clone = new TilingPattern(\r\n boundingBox || this.boundingBox,\r\n xStep || this.xStep,\r\n yStep || this.yStep,\r\n this.gState,\r\n matrix || this.matrix\r\n );\r\n clone.stream = this.stream;\r\n var key = patternKey + \"$$\" + this.cloneIndex++ + \"$$\";\r\n addPattern(key, clone);\r\n return clone;\r\n }\r\n\r\n var fillWithPattern = function(patternData, style) {\r\n var patternId = patternMap[patternData.key];\r\n var pattern = patterns[patternId];\r\n\r\n if (pattern instanceof ShadingPattern) {\r\n out(\"q\");\r\n\r\n out(clipRuleFromStyle(style));\r\n\r\n if (pattern.gState) {\r\n API.setGState(pattern.gState);\r\n }\r\n out(patternData.matrix.toString() + \" cm\");\r\n out(\"/\" + patternId + \" sh\");\r\n out(\"Q\");\r\n } else if (pattern instanceof TilingPattern) {\r\n // pdf draws patterns starting at the bottom left corner and they are not affected by the global transformation,\r\n // so we must flip them\r\n var matrix = new Matrix(1, 0, 0, -1, 0, getPageHeight());\r\n\r\n if (patternData.matrix) {\r\n matrix = matrix.multiply(patternData.matrix || identityMatrix);\r\n // we cannot apply a matrix to the pattern on use so we must abuse the pattern matrix and create new instances\r\n // for each use\r\n patternId = cloneTilingPattern.call(\r\n pattern,\r\n patternData.key,\r\n patternData.boundingBox,\r\n patternData.xStep,\r\n patternData.yStep,\r\n matrix\r\n ).id;\r\n }\r\n\r\n out(\"q\");\r\n out(\"/Pattern cs\");\r\n out(\"/\" + patternId + \" scn\");\r\n\r\n if (pattern.gState) {\r\n API.setGState(pattern.gState);\r\n }\r\n\r\n out(style);\r\n out(\"Q\");\r\n }\r\n };\r\n\r\n var clipRuleFromStyle = function(style) {\r\n switch (style) {\r\n case \"f\":\r\n case \"F\":\r\n return \"W n\";\r\n case \"f*\":\r\n return \"W* n\";\r\n case \"B\":\r\n return \"W S\";\r\n case \"B*\":\r\n return \"W* S\";\r\n\r\n // these two are for compatibility reasons (in the past, calling any primitive method with a shading pattern\r\n // and \"n\"/\"S\" as style would still fill/fill and stroke the path)\r\n case \"S\":\r\n return \"W S\";\r\n case \"n\":\r\n return \"W n\";\r\n }\r\n };\r\n\r\n /**\r\n * Begin a new subpath by moving the current point to coordinates (x, y). The PDF \"m\" operator.\r\n * @param {number} x\r\n * @param {number} y\r\n * @name moveTo\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @returns {jsPDF}\r\n */\r\n var moveTo = (API.moveTo = function(x, y) {\r\n out(hpf(scale(x)) + \" \" + hpf(transformScaleY(y)) + \" m\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Append a straight line segment from the current point to the point (x, y). The PDF \"l\" operator.\r\n * @param {number} x\r\n * @param {number} y\r\n * @memberof jsPDF#\r\n * @name lineTo\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @returns {jsPDF}\r\n */\r\n var lineTo = (API.lineTo = function(x, y) {\r\n out(hpf(scale(x)) + \" \" + hpf(transformScaleY(y)) + \" l\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Append a cubic Bézier curve to the current path. The curve shall extend from the current point to the point\r\n * (x3, y3), using (x1, y1) and (x2, y2) as Bézier control points. The new current point shall be (x3, x3).\r\n * @param {number} x1\r\n * @param {number} y1\r\n * @param {number} x2\r\n * @param {number} y2\r\n * @param {number} x3\r\n * @param {number} y3\r\n * @memberof jsPDF#\r\n * @name curveTo\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @returns {jsPDF}\r\n */\r\n var curveTo = (API.curveTo = function(x1, y1, x2, y2, x3, y3) {\r\n out(\r\n [\r\n hpf(scale(x1)),\r\n hpf(transformScaleY(y1)),\r\n hpf(scale(x2)),\r\n hpf(transformScaleY(y2)),\r\n hpf(scale(x3)),\r\n hpf(transformScaleY(y3)),\r\n \"c\"\r\n ].join(\" \")\r\n );\r\n return this;\r\n });\r\n\r\n /**\r\n * Draw a line on the current page.\r\n *\r\n * @name line\r\n * @function\r\n * @instance\r\n * @param {number} x1\r\n * @param {number} y1\r\n * @param {number} x2\r\n * @param {number} y2\r\n * @param {string} style A string specifying the painting style or null. Valid styles include: 'S' [default] - stroke, 'F' - fill, and 'DF' (or 'FD') - fill then stroke. A null value postpones setting the style so that a shape may be composed using multiple method calls. The last drawing method call used to define the shape should not have a null style argument. default: 'S'\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.__private__.line = API.line = function(x1, y1, x2, y2, style) {\r\n if (\r\n isNaN(x1) ||\r\n isNaN(y1) ||\r\n isNaN(x2) ||\r\n isNaN(y2) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.line\");\r\n }\r\n if (apiMode === ApiMode.COMPAT) {\r\n return this.lines([[x2 - x1, y2 - y1]], x1, y1, [1, 1], style || \"S\");\r\n } else {\r\n return this.lines([[x2 - x1, y2 - y1]], x1, y1, [1, 1]).stroke();\r\n }\r\n };\r\n\r\n /**\r\n * @typedef {Object} PatternData\r\n * {Matrix|undefined} matrix\r\n * {Number|undefined} xStep\r\n * {Number|undefined} yStep\r\n * {Array.<Number>|undefined} boundingBox\r\n */\r\n\r\n /**\r\n * Adds series of curves (straight lines or cubic bezier curves) to canvas, starting at `x`, `y` coordinates.\r\n * All data points in `lines` are relative to last line origin.\r\n * `x`, `y` become x1,y1 for first line / curve in the set.\r\n * For lines you only need to specify [x2, y2] - (ending point) vector against x1, y1 starting point.\r\n * For bezier curves you need to specify [x2,y2,x3,y3,x4,y4] - vectors to control points 1, 2, ending point. All vectors are against the start of the curve - x1,y1.\r\n *\r\n * @example .lines([[2,2],[-2,2],[1,1,2,2,3,3],[2,1]], 212,110, [1,1], 'F', false) // line, line, bezier curve, line\r\n * @param {Array} lines Array of *vector* shifts as pairs (lines) or sextets (cubic bezier curves).\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} scale (Defaults to [1.0,1.0]) x,y Scaling factor for all vectors. Elements can be any floating number Sub-one makes drawing smaller. Over-one grows the drawing. Negative flips the direction.\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @param {Boolean=} closed If true, the path is closed with a straight line from the end of the last curve to the starting point.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name lines\r\n */\r\n API.__private__.lines = API.lines = function(\r\n lines,\r\n x,\r\n y,\r\n scale,\r\n style,\r\n closed\r\n ) {\r\n var scalex, scaley, i, l, leg, x2, y2, x3, y3, x4, y4, tmp;\r\n\r\n // Pre-August-2012 the order of arguments was function(x, y, lines, scale, style)\r\n // in effort to make all calls have similar signature like\r\n // function(content, coordinateX, coordinateY , miscellaneous)\r\n // this method had its args flipped.\r\n // code below allows backward compatibility with old arg order.\r\n if (typeof lines === \"number\") {\r\n tmp = y;\r\n y = x;\r\n x = lines;\r\n lines = tmp;\r\n }\r\n\r\n scale = scale || [1, 1];\r\n closed = closed || false;\r\n\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n !Array.isArray(lines) ||\r\n !Array.isArray(scale) ||\r\n !isValidStyle(style) ||\r\n typeof closed !== \"boolean\"\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.lines\");\r\n }\r\n\r\n // starting point\r\n moveTo(x, y);\r\n\r\n scalex = scale[0];\r\n scaley = scale[1];\r\n l = lines.length;\r\n //, x2, y2 // bezier only. In page default measurement \"units\", *after* scaling\r\n //, x3, y3 // bezier only. In page default measurement \"units\", *after* scaling\r\n // ending point for all, lines and bezier. . In page default measurement \"units\", *after* scaling\r\n x4 = x; // last / ending point = starting point for first item.\r\n y4 = y; // last / ending point = starting point for first item.\r\n\r\n for (i = 0; i < l; i++) {\r\n leg = lines[i];\r\n if (leg.length === 2) {\r\n // simple line\r\n x4 = leg[0] * scalex + x4; // here last x4 was prior ending point\r\n y4 = leg[1] * scaley + y4; // here last y4 was prior ending point\r\n lineTo(x4, y4);\r\n } else {\r\n // bezier curve\r\n x2 = leg[0] * scalex + x4; // here last x4 is prior ending point\r\n y2 = leg[1] * scaley + y4; // here last y4 is prior ending point\r\n x3 = leg[2] * scalex + x4; // here last x4 is prior ending point\r\n y3 = leg[3] * scaley + y4; // here last y4 is prior ending point\r\n x4 = leg[4] * scalex + x4; // here last x4 was prior ending point\r\n y4 = leg[5] * scaley + y4; // here last y4 was prior ending point\r\n curveTo(x2, y2, x3, y3, x4, y4);\r\n }\r\n }\r\n\r\n if (closed) {\r\n close();\r\n }\r\n\r\n putStyle(style);\r\n return this;\r\n };\r\n\r\n /**\r\n * Similar to {@link API.lines} but all coordinates are interpreted as absolute coordinates instead of relative.\r\n * @param {Array<Object>} lines An array of {op: operator, c: coordinates} object, where op is one of \"m\" (move to), \"l\" (line to)\r\n * \"c\" (cubic bezier curve) and \"h\" (close (sub)path)). c is an array of coordinates. \"m\" and \"l\" expect two, \"c\"\r\n * six and \"h\" an empty array (or undefined).\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name path\r\n */\r\n API.path = function(lines) {\r\n for (var i = 0; i < lines.length; i++) {\r\n var leg = lines[i];\r\n var coords = leg.c;\r\n switch (leg.op) {\r\n case \"m\":\r\n moveTo(coords[0], coords[1]);\r\n break;\r\n case \"l\":\r\n lineTo(coords[0], coords[1]);\r\n break;\r\n case \"c\":\r\n curveTo.apply(this, coords);\r\n break;\r\n case \"h\":\r\n close();\r\n break;\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a rectangle to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} w Width (in units declared at inception of PDF document)\r\n * @param {number} h Height (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name rect\r\n */\r\n API.__private__.rect = API.rect = function(x, y, w, h, style) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h) || !isValidStyle(style)) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.rect\");\r\n }\r\n if (apiMode === ApiMode.COMPAT) {\r\n h = -h;\r\n }\r\n\r\n out(\r\n [\r\n hpf(scale(x)),\r\n hpf(transformScaleY(y)),\r\n hpf(scale(w)),\r\n hpf(scale(h)),\r\n \"re\"\r\n ].join(\" \")\r\n );\r\n\r\n putStyle(style);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a triangle to PDF.\r\n *\r\n * @param {number} x1 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y1 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} x2 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y2 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} x3 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y3 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name triangle\r\n */\r\n API.__private__.triangle = API.triangle = function(\r\n x1,\r\n y1,\r\n x2,\r\n y2,\r\n x3,\r\n y3,\r\n style\r\n ) {\r\n if (\r\n isNaN(x1) ||\r\n isNaN(y1) ||\r\n isNaN(x2) ||\r\n isNaN(y2) ||\r\n isNaN(x3) ||\r\n isNaN(y3) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.triangle\");\r\n }\r\n this.lines(\r\n [\r\n [x2 - x1, y2 - y1], // vector to point 2\r\n [x3 - x2, y3 - y2], // vector to point 3\r\n [x1 - x3, y1 - y3] // closing vector back to point 1\r\n ],\r\n x1,\r\n y1, // start of path\r\n [1, 1],\r\n style,\r\n true\r\n );\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a rectangle with rounded corners to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} w Width (in units declared at inception of PDF document)\r\n * @param {number} h Height (in units declared at inception of PDF document)\r\n * @param {number} rx Radius along x axis (in units declared at inception of PDF document)\r\n * @param {number} ry Radius along y axis (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name roundedRect\r\n */\r\n API.__private__.roundedRect = API.roundedRect = function(\r\n x,\r\n y,\r\n w,\r\n h,\r\n rx,\r\n ry,\r\n style\r\n ) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(w) ||\r\n isNaN(h) ||\r\n isNaN(rx) ||\r\n isNaN(ry) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.roundedRect\");\r\n }\r\n var MyArc = (4 / 3) * (Math.SQRT2 - 1);\r\n\r\n rx = Math.min(rx, w * 0.5);\r\n ry = Math.min(ry, h * 0.5);\r\n\r\n this.lines(\r\n [\r\n [w - 2 * rx, 0],\r\n [rx * MyArc, 0, rx, ry - ry * MyArc, rx, ry],\r\n [0, h - 2 * ry],\r\n [0, ry * MyArc, -(rx * MyArc), ry, -rx, ry],\r\n [-w + 2 * rx, 0],\r\n [-(rx * MyArc), 0, -rx, -(ry * MyArc), -rx, -ry],\r\n [0, -h + 2 * ry],\r\n [0, -(ry * MyArc), rx * MyArc, -ry, rx, -ry]\r\n ],\r\n x + rx,\r\n y, // start of path\r\n [1, 1],\r\n style,\r\n true\r\n );\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds an ellipse to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} rx Radius along x axis (in units declared at inception of PDF document)\r\n * @param {number} ry Radius along y axis (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name ellipse\r\n */\r\n API.__private__.ellipse = API.ellipse = function(x, y, rx, ry, style) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(rx) ||\r\n isNaN(ry) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.ellipse\");\r\n }\r\n var lx = (4 / 3) * (Math.SQRT2 - 1) * rx,\r\n ly = (4 / 3) * (Math.SQRT2 - 1) * ry;\r\n\r\n moveTo(x + rx, y);\r\n curveTo(x + rx, y - ly, x + lx, y - ry, x, y - ry);\r\n curveTo(x - lx, y - ry, x - rx, y - ly, x - rx, y);\r\n curveTo(x - rx, y + ly, x - lx, y + ry, x, y + ry);\r\n curveTo(x + lx, y + ry, x + rx, y + ly, x + rx, y);\r\n\r\n putStyle(style);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds an circle to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} r Radius (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name circle\r\n */\r\n API.__private__.circle = API.circle = function(x, y, r, style) {\r\n if (isNaN(x) || isNaN(y) || isNaN(r) || !isValidStyle(style)) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.circle\");\r\n }\r\n return this.ellipse(x, y, r, r, style);\r\n };\r\n\r\n /**\r\n * Sets text font face, variant for upcoming text elements.\r\n * See output of jsPDF.getFontList() for possible font names, styles.\r\n *\r\n * @param {string} fontName Font name or family. Example: \"times\".\r\n * @param {string} fontStyle Font style or variant. Example: \"italic\".\r\n * @param {number | string} fontWeight Weight of the Font. Example: \"normal\" | 400\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setFont\r\n */\r\n API.setFont = function(fontName, fontStyle, fontWeight) {\r\n if (fontWeight) {\r\n fontStyle = combineFontStyleAndFontWeight(fontStyle, fontWeight);\r\n }\r\n activeFontKey = getFont(fontName, fontStyle, {\r\n disableWarning: false\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets text font face, variant for upcoming text elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {Object}\r\n * @memberof jsPDF#\r\n * @name getFont\r\n */\r\n var getFontEntry = (API.__private__.getFont = API.getFont = function() {\r\n return fonts[getFont.apply(API, arguments)];\r\n });\r\n\r\n /**\r\n * Returns an object - a tree of fontName to fontStyle relationships available to\r\n * active PDF document.\r\n *\r\n * @public\r\n * @function\r\n * @instance\r\n * @returns {Object} Like {'times':['normal', 'italic', ... ], 'arial':['normal', 'bold', ... ], ... }\r\n * @memberof jsPDF#\r\n * @name getFontList\r\n */\r\n API.__private__.getFontList = API.getFontList = function() {\r\n var list = {},\r\n fontName,\r\n fontStyle;\r\n\r\n for (fontName in fontmap) {\r\n if (fontmap.hasOwnProperty(fontName)) {\r\n list[fontName] = [];\r\n for (fontStyle in fontmap[fontName]) {\r\n if (fontmap[fontName].hasOwnProperty(fontStyle)) {\r\n list[fontName].push(fontStyle);\r\n }\r\n }\r\n }\r\n }\r\n return list;\r\n };\r\n\r\n /**\r\n * Add a custom font to the current instance.\r\n *\r\n * @param {string} postScriptName PDF specification full name for the font.\r\n * @param {string} id PDF-document-instance-specific label assinged to the font.\r\n * @param {string} fontStyle Style of the Font.\r\n * @param {number | string} fontWeight Weight of the Font.\r\n * @param {Object} encoding Encoding_name-to-Font_metrics_object mapping.\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @name addFont\r\n * @returns {string} fontId\r\n */\r\n API.addFont = function(\r\n postScriptName,\r\n fontName,\r\n fontStyle,\r\n fontWeight,\r\n encoding\r\n ) {\r\n var encodingOptions = [\r\n \"StandardEncoding\",\r\n \"MacRomanEncoding\",\r\n \"Identity-H\",\r\n \"WinAnsiEncoding\"\r\n ];\r\n if (arguments[3] && encodingOptions.indexOf(arguments[3]) !== -1) {\r\n //IE 11 fix\r\n encoding = arguments[3];\r\n } else if (arguments[3] && encodingOptions.indexOf(arguments[3]) == -1) {\r\n fontStyle = combineFontStyleAndFontWeight(fontStyle, fontWeight);\r\n }\r\n encoding = encoding || \"Identity-H\";\r\n return addFont.call(this, postScriptName, fontName, fontStyle, encoding);\r\n };\r\n\r\n var lineWidth = options.lineWidth || 0.200025; // 2mm\r\n /**\r\n * Gets the line width, default: 0.200025.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number} lineWidth\r\n * @memberof jsPDF#\r\n * @name getLineWidth\r\n */\r\n var getLineWidth = (API.__private__.getLineWidth = API.getLineWidth = function() {\r\n return lineWidth;\r\n });\r\n\r\n /**\r\n * Sets line width for upcoming lines.\r\n *\r\n * @param {number} width Line width (in units declared at inception of PDF document).\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineWidth\r\n */\r\n var setLineWidth = (API.__private__.setLineWidth = API.setLineWidth = function(\r\n width\r\n ) {\r\n lineWidth = width;\r\n out(hpf(scale(width)) + \" w\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Sets the dash pattern for upcoming lines.\r\n *\r\n * To reset the settings simply call the method without any parameters.\r\n * @param {Array<number>} dashArray An array containing 0-2 numbers. The first number sets the length of the\r\n * dashes, the second number the length of the gaps. If the second number is missing, the gaps are considered\r\n * to be as long as the dashes. An empty array means solid, unbroken lines.\r\n * @param {number} dashPhase The phase lines start with.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineDashPattern\r\n */\r\n API.__private__.setLineDash = jsPDF.API.setLineDash = jsPDF.API.setLineDashPattern = function(\r\n dashArray,\r\n dashPhase\r\n ) {\r\n dashArray = dashArray || [];\r\n dashPhase = dashPhase || 0;\r\n\r\n if (isNaN(dashPhase) || !Array.isArray(dashArray)) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.setLineDash\");\r\n }\r\n\r\n dashArray = dashArray\r\n .map(function(x) {\r\n return hpf(scale(x));\r\n })\r\n .join(\" \");\r\n dashPhase = hpf(scale(dashPhase));\r\n\r\n out(\"[\" + dashArray + \"] \" + dashPhase + \" d\");\r\n return this;\r\n };\r\n\r\n var lineHeightFactor;\r\n\r\n var getLineHeight = (API.__private__.getLineHeight = API.getLineHeight = function() {\r\n return activeFontSize * lineHeightFactor;\r\n });\r\n\r\n API.__private__.getLineHeight = API.getLineHeight = function() {\r\n return activeFontSize * lineHeightFactor;\r\n };\r\n\r\n /**\r\n * Sets the LineHeightFactor of proportion.\r\n *\r\n * @param {number} value LineHeightFactor value. Default: 1.15.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineHeightFactor\r\n */\r\n var setLineHeightFactor = (API.__private__.setLineHeightFactor = API.setLineHeightFactor = function(\r\n value\r\n ) {\r\n value = value || 1.15;\r\n if (typeof value === \"number\") {\r\n lineHeightFactor = value;\r\n }\r\n return this;\r\n });\r\n\r\n /**\r\n * Gets the LineHeightFactor, default: 1.15.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number} lineHeightFactor\r\n * @memberof jsPDF#\r\n * @name getLineHeightFactor\r\n */\r\n var getLineHeightFactor = (API.__private__.getLineHeightFactor = API.getLineHeightFactor = function() {\r\n return lineHeightFactor;\r\n });\r\n\r\n setLineHeightFactor(options.lineHeight);\r\n\r\n var getHorizontalCoordinate = (API.__private__.getHorizontalCoordinate = function(\r\n value\r\n ) {\r\n return scale(value);\r\n });\r\n\r\n var getVerticalCoordinate = (API.__private__.getVerticalCoordinate = function(\r\n value\r\n ) {\r\n if (apiMode === ApiMode.ADVANCED) {\r\n return value;\r\n } else {\r\n var pageHeight =\r\n pagesContext[currentPage].mediaBox.topRightY -\r\n pagesContext[currentPage].mediaBox.bottomLeftY;\r\n return pageHeight - scale(value);\r\n }\r\n });\r\n\r\n var getHorizontalCoordinateString = (API.__private__.getHorizontalCoordinateString = API.getHorizontalCoordinateString = function(\r\n value\r\n ) {\r\n return hpf(getHorizontalCoordinate(value));\r\n });\r\n\r\n var getVerticalCoordinateString = (API.__private__.getVerticalCoordinateString = API.getVerticalCoordinateString = function(\r\n value\r\n ) {\r\n return hpf(getVerticalCoordinate(value));\r\n });\r\n\r\n var strokeColor = options.strokeColor || \"0 G\";\r\n\r\n /**\r\n * Gets the stroke color for upcoming elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {string} colorAsHex\r\n * @memberof jsPDF#\r\n * @name getDrawColor\r\n */\r\n API.__private__.getStrokeColor = API.getDrawColor = function() {\r\n return decodeColorString(strokeColor);\r\n };\r\n\r\n /**\r\n * Sets the stroke color for upcoming elements.\r\n *\r\n * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n * color space is implied.\r\n *\r\n * When only ch1 is given, \"Gray\" color space is implied and it\r\n * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n * if values are communicated as String types, or in range from 0 (black)\r\n * to 255 (white) if communicated as Number type.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n * (max intensity) if values are communicated as String types, or\r\n * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n * as Number types.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n * value must be a in the range from 0.00 (0% concentration) to to\r\n * 1.00 (100% concentration)\r\n *\r\n * Because JavaScript treats fixed point numbers badly (rounds to\r\n * floating point nearest to binary representation) it is highly advised to\r\n * communicate the fractional numbers as String types, not JavaScript Number type.\r\n *\r\n * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n * @param {Number} ch2 Color channel value.\r\n * @param {Number} ch3 Color channel value.\r\n * @param {Number} ch4 Color channel value.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setDrawColor\r\n */\r\n API.__private__.setStrokeColor = API.setDrawColor = function(\r\n ch1,\r\n ch2,\r\n ch3,\r\n ch4\r\n ) {\r\n var options = {\r\n ch1: ch1,\r\n ch2: ch2,\r\n ch3: ch3,\r\n ch4: ch4,\r\n pdfColorType: \"draw\",\r\n precision: 2\r\n };\r\n\r\n strokeColor = encodeColorString(options);\r\n out(strokeColor);\r\n return this;\r\n };\r\n\r\n var fillColor = options.fillColor || \"0 g\";\r\n\r\n /**\r\n * Gets the fill color for upcoming elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {string} colorAsHex\r\n * @memberof jsPDF#\r\n * @name getFillColor\r\n */\r\n API.__private__.getFillColor = API.getFillColor = function() {\r\n return decodeColorString(fillColor);\r\n };\r\n\r\n /**\r\n * Sets the fill color for upcoming elements.\r\n *\r\n * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n * color space is implied.\r\n *\r\n * When only ch1 is given, \"Gray\" color space is implied and it\r\n * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n * if values are communicated as String types, or in range from 0 (black)\r\n * to 255 (white) if communicated as Number type.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n * (max intensity) if values are communicated as String types, or\r\n * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n * as Number types.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n * value must be a in the range from 0.00 (0% concentration) to to\r\n * 1.00 (100% concentration)\r\n *\r\n * Because JavaScript treats fixed point numbers badly (rounds to\r\n * floating point nearest to binary representation) it is highly advised to\r\n * communicate the fractional numbers as String types, not JavaScript Number type.\r\n *\r\n * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n * @param {Number} ch2 Color channel value.\r\n * @param {Number} ch3 Color channel value.\r\n * @param {Number} ch4 Color channel value.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setFillColor\r\n */\r\n API.__private__.setFillColor = API.setFillColor = function(\r\n ch1,\r\n ch2,\r\n ch3,\r\n ch4\r\n ) {\r\n var options = {\r\n ch1: ch1,\r\n ch2: ch2,\r\n ch3: ch3,\r\n ch4: ch4,\r\n pdfColorType: \"fill\",\r\n precision: 2\r\n };\r\n\r\n fillColor = encodeColorString(options);\r\n out(fillColor);\r\n return this;\r\n };\r\n\r\n var textColor = options.textColor || \"0 g\";\r\n /**\r\n * Gets the text color for upcoming elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {string} colorAsHex\r\n * @memberof jsPDF#\r\n * @name getTextColor\r\n */\r\n var getTextColor = (API.__private__.getTextColor = API.getTextColor = function() {\r\n return decodeColorString(textColor);\r\n });\r\n /**\r\n * Sets the text color for upcoming elements.\r\n *\r\n * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n * color space is implied.\r\n *\r\n * When only ch1 is given, \"Gray\" color space is implied and it\r\n * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n * if values are communicated as String types, or in range from 0 (black)\r\n * to 255 (white) if communicated as Number type.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n * (max intensity) if values are communicated as String types, or\r\n * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n * as Number types.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n * value must be a in the range from 0.00 (0% concentration) to to\r\n * 1.00 (100% concentration)\r\n *\r\n * Because JavaScript treats fixed point numbers badly (rounds to\r\n * floating point nearest to binary representation) it is highly advised to\r\n * communicate the fractional numbers as String types, not JavaScript Number type.\r\n *\r\n * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n * @param {Number} ch2 Color channel value.\r\n * @param {Number} ch3 Color channel value.\r\n * @param {Number} ch4 Color channel value.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setTextColor\r\n */\r\n API.__private__.setTextColor = API.setTextColor = function(\r\n ch1,\r\n ch2,\r\n ch3,\r\n ch4\r\n ) {\r\n var options = {\r\n ch1: ch1,\r\n ch2: ch2,\r\n ch3: ch3,\r\n ch4: ch4,\r\n pdfColorType: \"text\",\r\n precision: 3\r\n };\r\n textColor = encodeColorString(options);\r\n\r\n return this;\r\n };\r\n\r\n var activeCharSpace = options.charSpace;\r\n\r\n /**\r\n * Get global value of CharSpace.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number} charSpace\r\n * @memberof jsPDF#\r\n * @name getCharSpace\r\n */\r\n var getCharSpace = (API.__private__.getCharSpace = API.getCharSpace = function() {\r\n return parseFloat(activeCharSpace || 0);\r\n });\r\n\r\n /**\r\n * Set global value of CharSpace.\r\n *\r\n * @param {number} charSpace\r\n * @function\r\n * @instance\r\n * @returns {jsPDF} jsPDF-instance\r\n * @memberof jsPDF#\r\n * @name setCharSpace\r\n */\r\n API.__private__.setCharSpace = API.setCharSpace = function(charSpace) {\r\n if (isNaN(charSpace)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.setCharSpace\");\r\n }\r\n activeCharSpace = charSpace;\r\n return this;\r\n };\r\n\r\n var lineCapID = 0;\r\n /**\r\n * Is an Object providing a mapping from human-readable to\r\n * integer flag values designating the varieties of line cap\r\n * and join styles.\r\n *\r\n * @memberof jsPDF#\r\n * @name CapJoinStyles\r\n */\r\n API.CapJoinStyles = {\r\n 0: 0,\r\n butt: 0,\r\n but: 0,\r\n miter: 0,\r\n 1: 1,\r\n round: 1,\r\n rounded: 1,\r\n circle: 1,\r\n 2: 2,\r\n projecting: 2,\r\n project: 2,\r\n square: 2,\r\n bevel: 2\r\n };\r\n\r\n /**\r\n * Sets the line cap styles.\r\n * See {jsPDF.CapJoinStyles} for variants.\r\n *\r\n * @param {String|Number} style A string or number identifying the type of line cap.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineCap\r\n */\r\n API.__private__.setLineCap = API.setLineCap = function(style) {\r\n var id = API.CapJoinStyles[style];\r\n if (id === undefined) {\r\n throw new Error(\r\n \"Line cap style of '\" +\r\n style +\r\n \"' is not recognized. See or extend .CapJoinStyles property for valid styles\"\r\n );\r\n }\r\n lineCapID = id;\r\n out(id + \" J\");\r\n\r\n return this;\r\n };\r\n\r\n var lineJoinID = 0;\r\n /**\r\n * Sets the line join styles.\r\n * See {jsPDF.CapJoinStyles} for variants.\r\n *\r\n * @param {String|Number} style A string or number identifying the type of line join.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineJoin\r\n */\r\n API.__private__.setLineJoin = API.setLineJoin = function(style) {\r\n var id = API.CapJoinStyles[style];\r\n if (id === undefined) {\r\n throw new Error(\r\n \"Line join style of '\" +\r\n style +\r\n \"' is not recognized. See or extend .CapJoinStyles property for valid styles\"\r\n );\r\n }\r\n lineJoinID = id;\r\n out(id + \" j\");\r\n\r\n return this;\r\n };\r\n\r\n var miterLimit;\r\n /**\r\n * Sets the miterLimit property, which effects the maximum miter length.\r\n *\r\n * @param {number} length The length of the miter\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineMiterLimit\r\n */\r\n API.__private__.setLineMiterLimit = API.__private__.setMiterLimit = API.setLineMiterLimit = API.setMiterLimit = function(\r\n length\r\n ) {\r\n length = length || 0;\r\n if (isNaN(length)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.setLineMiterLimit\");\r\n }\r\n out(hpf(scale(length)) + \" M\");\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * An object representing a pdf graphics state.\r\n * @class GState\r\n */\r\n\r\n /**\r\n *\r\n * @param parameters A parameter object that contains all properties this graphics state wants to set.\r\n * Supported are: opacity, stroke-opacity\r\n * @constructor\r\n */\r\n API.GState = GState;\r\n\r\n /**\r\n * Sets a either previously added {@link GState} (via {@link addGState}) or a new {@link GState}.\r\n * @param {String|GState} gState If type is string, a previously added GState is used, if type is GState\r\n * it will be added before use.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setGState\r\n */\r\n API.setGState = function(gState) {\r\n if (typeof gState === \"string\") {\r\n gState = gStates[gStatesMap[gState]];\r\n } else {\r\n gState = addGState(null, gState);\r\n }\r\n\r\n if (!gState.equals(activeGState)) {\r\n out(\"/\" + gState.id + \" gs\");\r\n activeGState = gState;\r\n }\r\n };\r\n\r\n /**\r\n * Adds a new Graphics State. Duplicates are automatically eliminated.\r\n * @param {String} key Might also be null, if no later reference to this gState is needed\r\n * @param {Object} gState The gState object\r\n */\r\n var addGState = function(key, gState) {\r\n // only add it if it is not already present (the keys provided by the user must be unique!)\r\n if (key && gStatesMap[key]) return;\r\n var duplicate = false;\r\n for (var s in gStates) {\r\n if (gStates.hasOwnProperty(s)) {\r\n if (gStates[s].equals(gState)) {\r\n duplicate = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (duplicate) {\r\n gState = gStates[s];\r\n } else {\r\n var gStateKey = \"GS\" + (Object.keys(gStates).length + 1).toString(10);\r\n gStates[gStateKey] = gState;\r\n gState.id = gStateKey;\r\n }\r\n\r\n // several user keys may point to the same GState object\r\n key && (gStatesMap[key] = gState.id);\r\n\r\n events.publish(\"addGState\", gState);\r\n\r\n return gState;\r\n };\r\n\r\n /**\r\n * Adds a new {@link GState} for later use. See {@link setGState}.\r\n * @param {String} key\r\n * @param {GState} gState\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n *\r\n * @memberof jsPDF#\r\n * @name addGState\r\n */\r\n API.addGState = function(key, gState) {\r\n addGState(key, gState);\r\n return this;\r\n };\r\n\r\n /**\r\n * Saves the current graphics state (\"pushes it on the stack\"). It can be restored by {@link restoreGraphicsState}\r\n * later. Here, the general pdf graphics state is meant, also including the current transformation matrix,\r\n * fill and stroke colors etc.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name saveGraphicsState\r\n */\r\n API.saveGraphicsState = function() {\r\n out(\"q\");\r\n // as we cannot set font key and size independently we must keep track of both\r\n fontStateStack.push({\r\n key: activeFontKey,\r\n size: activeFontSize,\r\n color: textColor\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * Restores a previously saved graphics state saved by {@link saveGraphicsState} (\"pops the stack\").\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name restoreGraphicsState\r\n */\r\n API.restoreGraphicsState = function() {\r\n out(\"Q\");\r\n\r\n // restore previous font state\r\n var fontState = fontStateStack.pop();\r\n activeFontKey = fontState.key;\r\n activeFontSize = fontState.size;\r\n textColor = fontState.color;\r\n\r\n activeGState = null;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Appends this matrix to the left of all previously applied matrices.\r\n *\r\n * @param {Matrix} matrix\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setCurrentTransformationMatrix\r\n */\r\n API.setCurrentTransformationMatrix = function(matrix) {\r\n out(matrix.toString() + \" cm\");\r\n return this;\r\n };\r\n\r\n /**\r\n * Inserts a debug comment into the generated pdf.\r\n * @function\r\n * @instance\r\n * @param {String} text\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name comment\r\n */\r\n API.comment = function(text) {\r\n out(\"#\" + text);\r\n return this;\r\n };\r\n\r\n /**\r\n * Point\r\n */\r\n var Point = function(x, y) {\r\n var _x = x || 0;\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n get: function() {\r\n return _x;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _x = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n var _y = y || 0;\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n get: function() {\r\n return _y;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _y = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n var _type = \"pt\";\r\n Object.defineProperty(this, \"type\", {\r\n enumerable: true,\r\n get: function() {\r\n return _type;\r\n },\r\n set: function(value) {\r\n _type = value.toString();\r\n }\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * Rectangle\r\n */\r\n var Rectangle = function(x, y, w, h) {\r\n Point.call(this, x, y);\r\n this.type = \"rect\";\r\n\r\n var _w = w || 0;\r\n Object.defineProperty(this, \"w\", {\r\n enumerable: true,\r\n get: function() {\r\n return _w;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _w = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n var _h = h || 0;\r\n Object.defineProperty(this, \"h\", {\r\n enumerable: true,\r\n get: function() {\r\n return _h;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _h = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * FormObject/RenderTarget\r\n */\r\n\r\n var RenderTarget = function() {\r\n this.page = page;\r\n this.currentPage = currentPage;\r\n this.pages = pages.slice(0);\r\n this.pagesContext = pagesContext.slice(0);\r\n this.x = pageX;\r\n this.y = pageY;\r\n this.matrix = pageMatrix;\r\n this.width = getPageWidth(currentPage);\r\n this.height = getPageHeight(currentPage);\r\n this.outputDestination = outputDestination;\r\n\r\n this.id = \"\"; // set by endFormObject()\r\n this.objectNumber = -1; // will be set by putXObject()\r\n };\r\n\r\n RenderTarget.prototype.restore = function() {\r\n page = this.page;\r\n currentPage = this.currentPage;\r\n pagesContext = this.pagesContext;\r\n pages = this.pages;\r\n pageX = this.x;\r\n pageY = this.y;\r\n pageMatrix = this.matrix;\r\n setPageWidth(currentPage, this.width);\r\n setPageHeight(currentPage, this.height);\r\n outputDestination = this.outputDestination;\r\n };\r\n\r\n var beginNewRenderTarget = function(x, y, width, height, matrix) {\r\n // save current state\r\n renderTargetStack.push(new RenderTarget());\r\n\r\n // clear pages\r\n page = currentPage = 0;\r\n pages = [];\r\n pageX = x;\r\n pageY = y;\r\n\r\n pageMatrix = matrix;\r\n\r\n beginPage([width, height]);\r\n };\r\n\r\n var endFormObject = function(key) {\r\n // only add it if it is not already present (the keys provided by the user must be unique!)\r\n if (renderTargetMap[key]) {\r\n renderTargetStack.pop().restore();\r\n return;\r\n }\r\n\r\n // save the created xObject\r\n var newXObject = new RenderTarget();\r\n\r\n var xObjectId = \"Xo\" + (Object.keys(renderTargets).length + 1).toString(10);\r\n newXObject.id = xObjectId;\r\n\r\n renderTargetMap[key] = xObjectId;\r\n renderTargets[xObjectId] = newXObject;\r\n\r\n events.publish(\"addFormObject\", newXObject);\r\n\r\n // restore state from stack\r\n renderTargetStack.pop().restore();\r\n };\r\n\r\n /**\r\n * Starts a new pdf form object, which means that all consequent draw calls target a new independent object\r\n * until {@link endFormObject} is called. The created object can be referenced and drawn later using\r\n * {@link doFormObject}. Nested form objects are possible.\r\n * x, y, width, height set the bounding box that is used to clip the content.\r\n *\r\n * @param {number} x\r\n * @param {number} y\r\n * @param {number} width\r\n * @param {number} height\r\n * @param {Matrix} matrix The matrix that will be applied to convert the form objects coordinate system to\r\n * the parent's.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name beginFormObject\r\n */\r\n API.beginFormObject = function(x, y, width, height, matrix) {\r\n // The user can set the output target to a new form object. Nested form objects are possible.\r\n // Currently, they use the resource dictionary of the surrounding stream. This should be changed, as\r\n // the PDF-Spec states:\r\n // \"In PDF 1.2 and later versions, form XObjects may be independent of the content streams in which\r\n // they appear, and this is strongly recommended although not requiredIn PDF 1.2 and later versions,\r\n // form XObjects may be independent of the content streams in which they appear, and this is strongly\r\n // recommended although not required\"\r\n beginNewRenderTarget(x, y, width, height, matrix);\r\n return this;\r\n };\r\n\r\n /**\r\n * Completes and saves the form object.\r\n * @param {String} key The key by which this form object can be referenced.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name endFormObject\r\n */\r\n API.endFormObject = function(key) {\r\n endFormObject(key);\r\n return this;\r\n };\r\n\r\n /**\r\n * Draws the specified form object by referencing to the respective pdf XObject created with\r\n * {@link API.beginFormObject} and {@link endFormObject}.\r\n * The location is determined by matrix.\r\n *\r\n * @param {String} key The key to the form object.\r\n * @param {Matrix} matrix The matrix applied before drawing the form object.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name doFormObject\r\n */\r\n API.doFormObject = function(key, matrix) {\r\n var xObject = renderTargets[renderTargetMap[key]];\r\n out(\"q\");\r\n out(matrix.toString() + \" cm\");\r\n out(\"/\" + xObject.id + \" Do\");\r\n out(\"Q\");\r\n return this;\r\n };\r\n\r\n /**\r\n * Returns the form object specified by key.\r\n * @param key {String}\r\n * @returns {{x: number, y: number, width: number, height: number, matrix: Matrix}}\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name getFormObject\r\n */\r\n API.getFormObject = function(key) {\r\n var xObject = renderTargets[renderTargetMap[key]];\r\n return {\r\n x: xObject.x,\r\n y: xObject.y,\r\n width: xObject.width,\r\n height: xObject.height,\r\n matrix: xObject.matrix\r\n };\r\n };\r\n\r\n /**\r\n * Saves as PDF document. An alias of jsPDF.output('save', 'filename.pdf').\r\n * Uses FileSaver.js-method saveAs.\r\n *\r\n * @memberof jsPDF#\r\n * @name save\r\n * @function\r\n * @instance\r\n * @param {string} filename The filename including extension.\r\n * @param {Object} options An Object with additional options, possible options: 'returnPromise'.\r\n * @returns {jsPDF|Promise} jsPDF-instance */\r\n API.save = function(filename, options) {\r\n filename = filename || \"generated.pdf\";\r\n\r\n options = options || {};\r\n options.returnPromise = options.returnPromise || false;\r\n\r\n if (options.returnPromise === false) {\r\n saveAs(getBlob(buildDocument()), filename);\r\n if (typeof saveAs.unload === \"function\") {\r\n if (globalObject.setTimeout) {\r\n setTimeout(saveAs.unload, 911);\r\n }\r\n }\r\n return this;\r\n } else {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n var result = saveAs(getBlob(buildDocument()), filename);\r\n if (typeof saveAs.unload === \"function\") {\r\n if (globalObject.setTimeout) {\r\n setTimeout(saveAs.unload, 911);\r\n }\r\n }\r\n resolve(result);\r\n } catch (e) {\r\n reject(e.message);\r\n }\r\n });\r\n }\r\n\r\n };\r\n\r\n // applying plugins (more methods) ON TOP of built-in API.\r\n // this is intentional as we allow plugins to override\r\n // built-ins\r\n for (var plugin in jsPDF.API) {\r\n if (jsPDF.API.hasOwnProperty(plugin)) {\r\n if (plugin === \"events\" && jsPDF.API.events.length) {\r\n (function(events, newEvents) {\r\n // jsPDF.API.events is a JS Array of Arrays\r\n // where each Array is a pair of event name, handler\r\n // Events were added by plugins to the jsPDF instantiator.\r\n // These are always added to the new instance and some ran\r\n // during instantiation.\r\n var eventname, handler_and_args, i;\r\n\r\n for (i = newEvents.length - 1; i !== -1; i--) {\r\n // subscribe takes 3 args: 'topic', function, runonce_flag\r\n // if undefined, runonce is false.\r\n // users can attach callback directly,\r\n // or they can attach an array with [callback, runonce_flag]\r\n // that's what the \"apply\" magic is for below.\r\n eventname = newEvents[i][0];\r\n handler_and_args = newEvents[i][1];\r\n events.subscribe.apply(\r\n events,\r\n [eventname].concat(\r\n typeof handler_and_args === \"function\"\r\n ? [handler_and_args]\r\n : handler_and_args\r\n )\r\n );\r\n }\r\n })(events, jsPDF.API.events);\r\n } else {\r\n API[plugin] = jsPDF.API[plugin];\r\n }\r\n }\r\n }\r\n\r\n var getPageWidth = (API.getPageWidth = function(pageNumber) {\r\n pageNumber = pageNumber || currentPage;\r\n return (\r\n (pagesContext[pageNumber].mediaBox.topRightX -\r\n pagesContext[pageNumber].mediaBox.bottomLeftX) /\r\n scaleFactor\r\n );\r\n });\r\n\r\n var setPageWidth = (API.setPageWidth = function(pageNumber, value) {\r\n pagesContext[pageNumber].mediaBox.topRightX =\r\n value * scaleFactor + pagesContext[pageNumber].mediaBox.bottomLeftX;\r\n });\r\n\r\n var getPageHeight = (API.getPageHeight = function(pageNumber) {\r\n pageNumber = pageNumber || currentPage;\r\n return (\r\n (pagesContext[pageNumber].mediaBox.topRightY -\r\n pagesContext[pageNumber].mediaBox.bottomLeftY) /\r\n scaleFactor\r\n );\r\n });\r\n\r\n var setPageHeight = (API.setPageHeight = function(pageNumber, value) {\r\n pagesContext[pageNumber].mediaBox.topRightY =\r\n value * scaleFactor + pagesContext[pageNumber].mediaBox.bottomLeftY;\r\n });\r\n\r\n /**\r\n * Object exposing internal API to plugins\r\n * @public\r\n * @ignore\r\n */\r\n API.internal = {\r\n pdfEscape: pdfEscape,\r\n getStyle: getStyle,\r\n getFont: getFontEntry,\r\n getFontSize: getFontSize,\r\n getCharSpace: getCharSpace,\r\n getTextColor: getTextColor,\r\n getLineHeight: getLineHeight,\r\n getLineHeightFactor: getLineHeightFactor,\r\n getLineWidth: getLineWidth,\r\n write: write,\r\n getHorizontalCoordinate: getHorizontalCoordinate,\r\n getVerticalCoordinate: getVerticalCoordinate,\r\n getCoordinateString: getHorizontalCoordinateString,\r\n getVerticalCoordinateString: getVerticalCoordinateString,\r\n collections: {},\r\n newObject: newObject,\r\n newAdditionalObject: newAdditionalObject,\r\n newObjectDeferred: newObjectDeferred,\r\n newObjectDeferredBegin: newObjectDeferredBegin,\r\n getFilters: getFilters,\r\n putStream: putStream,\r\n events: events,\r\n scaleFactor: scaleFactor,\r\n pageSize: {\r\n getWidth: function() {\r\n return getPageWidth(currentPage);\r\n },\r\n setWidth: function(value) {\r\n setPageWidth(currentPage, value);\r\n },\r\n getHeight: function() {\r\n return getPageHeight(currentPage);\r\n },\r\n setHeight: function(value) {\r\n setPageHeight(currentPage, value);\r\n }\r\n },\r\n encryptionOptions: encryptionOptions,\r\n encryption: encryption,\r\n getEncryptor: getEncryptor,\r\n output: output,\r\n getNumberOfPages: getNumberOfPages,\r\n pages: pages,\r\n out: out,\r\n f2: f2,\r\n f3: f3,\r\n getPageInfo: getPageInfo,\r\n getPageInfoByObjId: getPageInfoByObjId,\r\n getCurrentPageInfo: getCurrentPageInfo,\r\n getPDFVersion: getPdfVersion,\r\n Point: Point,\r\n Rectangle: Rectangle,\r\n Matrix: Matrix,\r\n hasHotfix: hasHotfix //Expose the hasHotfix check so plugins can also check them.\r\n };\r\n\r\n Object.defineProperty(API.internal.pageSize, \"width\", {\r\n get: function() {\r\n return getPageWidth(currentPage);\r\n },\r\n set: function(value) {\r\n setPageWidth(currentPage, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(API.internal.pageSize, \"height\", {\r\n get: function() {\r\n return getPageHeight(currentPage);\r\n },\r\n set: function(value) {\r\n setPageHeight(currentPage, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n\r\n //////////////////////////////////////////////////////\r\n // continuing initialization of jsPDF Document object\r\n //////////////////////////////////////////////////////\r\n // Add the first page automatically\r\n addFonts.call(API, standardFonts);\r\n activeFontKey = \"F1\";\r\n _addPage(format, orientation);\r\n\r\n events.publish(\"initialized\");\r\n return API;\r\n}\r\n\r\n/**\r\n * jsPDF.API is a STATIC property of jsPDF class.\r\n * jsPDF.API is an object you can add methods and properties to.\r\n * The methods / properties you add will show up in new jsPDF objects.\r\n *\r\n * One property is prepopulated. It is the 'events' Object. Plugin authors can add topics,\r\n * callbacks to this object. These will be reassigned to all new instances of jsPDF.\r\n *\r\n * @static\r\n * @public\r\n * @memberof jsPDF#\r\n * @name API\r\n *\r\n * @example\r\n * jsPDF.API.mymethod = function(){\r\n * // 'this' will be ref to internal API object. see jsPDF source\r\n * // , so you can refer to built-in methods like so:\r\n * // this.line(....)\r\n * // this.text(....)\r\n * }\r\n * var pdfdoc = new jsPDF()\r\n * pdfdoc.mymethod() // <- !!!!!!\r\n */\r\njsPDF.API = {\r\n events: []\r\n};\r\n/**\r\n * The version of jsPDF.\r\n * @name version\r\n * @type {string}\r\n * @memberof jsPDF#\r\n */\r\njsPDF.version = \"0.0.0\";\r\n\r\nexport { jsPDF, ShadingPattern, TilingPattern, GState };\r\nexport default jsPDF;\r\n","/* global jsPDF */\n/**\n * @license\n * Copyright (c) 2016 Alexander Weidt,\n * https://github.com/BiggA94\n *\n * Licensed under the MIT License. http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF AcroForm Plugin\n * @module AcroForm\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\nvar jsPDFAPI = jsPDF.API;\nvar scaleFactor = 1;\n\nvar pdfEscape = function(value) {\n return value\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\(/g, \"\\\\(\")\n .replace(/\\)/g, \"\\\\)\");\n};\nvar pdfUnescape = function(value) {\n return value\n .replace(/\\\\\\\\/g, \"\\\\\")\n .replace(/\\\\\\(/g, \"(\")\n .replace(/\\\\\\)/g, \")\");\n};\n\nvar f2 = function(number) {\n return number.toFixed(2); // Ie, %.2f\n};\n\nvar f5 = function(number) {\n return number.toFixed(5); // Ie, %.2f\n};\n\njsPDFAPI.__acroform__ = {};\nvar inherit = function(child, parent) {\n child.prototype = Object.create(parent.prototype);\n child.prototype.constructor = child;\n};\n\nvar scale = function(x) {\n return x * scaleFactor;\n};\n\nvar createFormXObject = function(formObject) {\n var xobj = new AcroFormXObject();\n var height = AcroFormAppearance.internal.getHeight(formObject) || 0;\n var width = AcroFormAppearance.internal.getWidth(formObject) || 0;\n xobj.BBox = [0, 0, Number(f2(width)), Number(f2(height))];\n return xobj;\n};\n\n/**\n * Bit-Operations\n */\nvar setBit = (jsPDFAPI.__acroform__.setBit = function(number, bitPosition) {\n number = number || 0;\n bitPosition = bitPosition || 0;\n\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.setBit\"\n );\n }\n var bitMask = 1 << bitPosition;\n\n number |= bitMask;\n\n return number;\n});\n\nvar clearBit = (jsPDFAPI.__acroform__.clearBit = function(number, bitPosition) {\n number = number || 0;\n bitPosition = bitPosition || 0;\n\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.clearBit\"\n );\n }\n var bitMask = 1 << bitPosition;\n\n number &= ~bitMask;\n\n return number;\n});\n\nvar getBit = (jsPDFAPI.__acroform__.getBit = function(number, bitPosition) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.getBit\"\n );\n }\n return (number & (1 << bitPosition)) === 0 ? 0 : 1;\n});\n\n/*\n * Ff starts counting the bit position at 1 and not like javascript at 0\n */\nvar getBitForPdf = (jsPDFAPI.__acroform__.getBitForPdf = function(\n number,\n bitPosition\n) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf\"\n );\n }\n return getBit(number, bitPosition - 1);\n});\n\nvar setBitForPdf = (jsPDFAPI.__acroform__.setBitForPdf = function(\n number,\n bitPosition\n) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf\"\n );\n }\n return setBit(number, bitPosition - 1);\n});\n\nvar clearBitForPdf = (jsPDFAPI.__acroform__.clearBitForPdf = function(\n number,\n bitPosition\n) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf\"\n );\n }\n return clearBit(number, bitPosition - 1);\n});\n\nvar calculateCoordinates = (jsPDFAPI.__acroform__.calculateCoordinates = function(\n args,\n scope\n) {\n var getHorizontalCoordinate = scope.internal.getHorizontalCoordinate;\n var getVerticalCoordinate = scope.internal.getVerticalCoordinate;\n var x = args[0];\n var y = args[1];\n var w = args[2];\n var h = args[3];\n\n var coordinates = {};\n\n coordinates.lowerLeft_X = getHorizontalCoordinate(x) || 0;\n coordinates.lowerLeft_Y = getVerticalCoordinate(y + h) || 0;\n coordinates.upperRight_X = getHorizontalCoordinate(x + w) || 0;\n coordinates.upperRight_Y = getVerticalCoordinate(y) || 0;\n\n return [\n Number(f2(coordinates.lowerLeft_X)),\n Number(f2(coordinates.lowerLeft_Y)),\n Number(f2(coordinates.upperRight_X)),\n Number(f2(coordinates.upperRight_Y))\n ];\n});\n\nvar calculateAppearanceStream = function(formObject) {\n if (formObject.appearanceStreamContent) {\n return formObject.appearanceStreamContent;\n }\n\n if (!formObject.V && !formObject.DV) {\n return;\n }\n\n // else calculate it\n\n var stream = [];\n var text = formObject._V || formObject.DV;\n var calcRes = calculateX(formObject, text);\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n\n //PDF 32000-1:2008, page 444\n stream.push(\"/Tx BMC\");\n stream.push(\"q\");\n stream.push(\"BT\"); // Begin Text\n stream.push(formObject.scope.__private__.encodeColorString(formObject.color));\n stream.push(\"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf\");\n stream.push(\"1 0 0 1 0 0 Tm\"); // Transformation Matrix\n stream.push(calcRes.text);\n stream.push(\"ET\"); // End Text\n stream.push(\"Q\");\n stream.push(\"EMC\");\n\n var appearanceStreamContent = createFormXObject(formObject);\n appearanceStreamContent.scope = formObject.scope;\n appearanceStreamContent.stream = stream.join(\"\\n\");\n return appearanceStreamContent;\n};\n\nvar calculateX = function(formObject, text) {\n var maxFontSize =\n formObject.fontSize === 0 ? formObject.maxFontSize : formObject.fontSize;\n var returnValue = {\n text: \"\",\n fontSize: \"\"\n };\n // Remove Brackets\n text = text.substr(0, 1) == \"(\" ? text.substr(1) : text;\n text =\n text.substr(text.length - 1) == \")\"\n ? text.substr(0, text.length - 1)\n : text;\n // split into array of words\n var textSplit = text.split(\" \");\n if (formObject.multiline) {\n textSplit = textSplit.map(word => word.split(\"\\n\"));\n } else {\n textSplit = textSplit.map(word => [word]);\n }\n\n var fontSize = maxFontSize; // The Starting fontSize (The Maximum)\n var lineSpacing = 2;\n var borderPadding = 2;\n\n var height = AcroFormAppearance.internal.getHeight(formObject) || 0;\n height = height < 0 ? -height : height;\n var width = AcroFormAppearance.internal.getWidth(formObject) || 0;\n width = width < 0 ? -width : width;\n\n var isSmallerThanWidth = function(i, lastLine, fontSize) {\n if (i + 1 < textSplit.length) {\n var tmp = lastLine + \" \" + textSplit[i + 1][0];\n var TextWidth = calculateFontSpace(tmp, formObject, fontSize).width;\n var FieldWidth = width - 2 * borderPadding;\n return TextWidth <= FieldWidth;\n } else {\n return false;\n }\n };\n\n fontSize++;\n FontSize: while (fontSize > 0) {\n text = \"\";\n fontSize--;\n var textHeight = calculateFontSpace(\"3\", formObject, fontSize).height;\n var startY = formObject.multiline\n ? height - fontSize\n : (height - textHeight) / 2;\n startY += lineSpacing;\n var startX;\n\n var lastY = startY;\n var firstWordInLine = 0,\n lastWordInLine = 0;\n var lastLength;\n var currWord = 0;\n\n if (fontSize <= 0) {\n // In case, the Text doesn't fit at all\n fontSize = 12;\n text = \"(...) Tj\\n\";\n text +=\n \"% Width of Text: \" +\n calculateFontSpace(text, formObject, fontSize).width +\n \", FieldWidth:\" +\n width +\n \"\\n\";\n break;\n }\n\n var lastLine = \"\";\n var lineCount = 0;\n Line: for (var i = 0; i < textSplit.length; i++) {\n if (textSplit.hasOwnProperty(i)) {\n let isWithNewLine = false;\n if (textSplit[i].length !== 1 && currWord !== textSplit[i].length - 1) {\n if (\n (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n height\n ) {\n continue FontSize;\n }\n\n lastLine += textSplit[i][currWord];\n isWithNewLine = true;\n lastWordInLine = i;\n i--;\n } else {\n lastLine += textSplit[i][currWord] + \" \";\n lastLine =\n lastLine.substr(lastLine.length - 1) == \" \"\n ? lastLine.substr(0, lastLine.length - 1)\n : lastLine;\n var key = parseInt(i);\n var nextLineIsSmaller = isSmallerThanWidth(key, lastLine, fontSize);\n var isLastWord = i >= textSplit.length - 1;\n\n if (nextLineIsSmaller && !isLastWord) {\n lastLine += \" \";\n currWord = 0;\n continue; // Line\n } else if (!nextLineIsSmaller && !isLastWord) {\n if (!formObject.multiline) {\n continue FontSize;\n } else {\n if (\n (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n height\n ) {\n // If the Text is higher than the\n // FieldObject\n continue FontSize;\n }\n lastWordInLine = key;\n // go on\n }\n } else if (isLastWord) {\n lastWordInLine = key;\n } else {\n if (\n formObject.multiline &&\n (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n height\n ) {\n // If the Text is higher than the FieldObject\n continue FontSize;\n }\n }\n }\n // Remove last blank\n\n var line = \"\";\n\n for (var x = firstWordInLine; x <= lastWordInLine; x++) {\n var currLine = textSplit[x];\n if (formObject.multiline) {\n if (x === lastWordInLine) {\n line += currLine[currWord] + \" \";\n currWord = (currWord + 1) % currLine.length;\n continue;\n }\n if (x === firstWordInLine) {\n line += currLine[currLine.length - 1] + \" \";\n continue;\n }\n }\n line += currLine[0] + \" \";\n }\n\n // Remove last blank\n line =\n line.substr(line.length - 1) == \" \"\n ? line.substr(0, line.length - 1)\n : line;\n // lastLength -= blankSpace.width;\n lastLength = calculateFontSpace(line, formObject, fontSize).width;\n\n // Calculate startX\n switch (formObject.textAlign) {\n case \"right\":\n startX = width - lastLength - borderPadding;\n break;\n case \"center\":\n startX = (width - lastLength) / 2;\n break;\n case \"left\":\n default:\n startX = borderPadding;\n break;\n }\n text += f2(startX) + \" \" + f2(lastY) + \" Td\\n\";\n text += \"(\" + pdfEscape(line) + \") Tj\\n\";\n // reset X in PDF\n text += -f2(startX) + \" 0 Td\\n\";\n\n // After a Line, adjust y position\n lastY = -(fontSize + lineSpacing);\n\n // Reset for next iteration step\n lastLength = 0;\n firstWordInLine = isWithNewLine ? lastWordInLine : lastWordInLine + 1;\n lineCount++;\n\n lastLine = \"\";\n continue Line;\n }\n }\n break;\n }\n\n returnValue.text = text;\n returnValue.fontSize = fontSize;\n\n return returnValue;\n};\n\n/**\n * Small workaround for calculating the TextMetric approximately.\n *\n * @param text\n * @param fontsize\n * @returns {TextMetrics} (Has Height and Width)\n */\nvar calculateFontSpace = function(text, formObject, fontSize) {\n var font = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n );\n var width =\n formObject.scope.getStringUnitWidth(text, {\n font: font,\n fontSize: parseFloat(fontSize),\n charSpace: 0\n }) * parseFloat(fontSize);\n var height =\n formObject.scope.getStringUnitWidth(\"3\", {\n font: font,\n fontSize: parseFloat(fontSize),\n charSpace: 0\n }) *\n parseFloat(fontSize) *\n 1.5;\n return { height: height, width: width };\n};\n\nvar acroformPluginTemplate = {\n fields: [],\n xForms: [],\n /**\n * acroFormDictionaryRoot contains information about the AcroForm\n * Dictionary 0: The Event-Token, the AcroFormDictionaryCallback has\n * 1: The Object ID of the Root\n */\n acroFormDictionaryRoot: null,\n /**\n * After the PDF gets evaluated, the reference to the root has to be\n * reset, this indicates, whether the root has already been printed\n * out\n */\n printedOut: false,\n internal: null,\n isInitialized: false\n};\n\nvar annotReferenceCallback = function(scope) {\n //set objId to undefined and force it to get a new objId on buildDocument\n scope.internal.acroformPlugin.acroFormDictionaryRoot.objId = undefined;\n var fields = scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields;\n for (var i in fields) {\n if (fields.hasOwnProperty(i)) {\n var formObject = fields[i];\n //set objId to undefined and force it to get a new objId on buildDocument\n formObject.objId = undefined;\n // add Annot Reference!\n if (formObject.hasAnnotation) {\n // If theres an Annotation Widget in the Form Object, put the\n // Reference in the /Annot array\n createAnnotationReference(formObject, scope);\n }\n }\n }\n};\n\nvar putForm = function(formObject) {\n if (formObject.scope.internal.acroformPlugin.printedOut) {\n formObject.scope.internal.acroformPlugin.printedOut = false;\n formObject.scope.internal.acroformPlugin.acroFormDictionaryRoot = null;\n }\n formObject.scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(\n formObject\n );\n};\n/**\n * Create the Reference to the widgetAnnotation, so that it gets referenced\n * in the Annot[] int the+ (Requires the Annotation Plugin)\n */\nvar createAnnotationReference = function(object, scope) {\n var options = {\n type: \"reference\",\n object: object\n };\n var findEntry = function(entry) {\n return entry.type === options.type && entry.object === options.object;\n };\n if (\n scope.internal\n .getPageInfo(object.page)\n .pageContext.annotations.find(findEntry) === undefined\n ) {\n scope.internal\n .getPageInfo(object.page)\n .pageContext.annotations.push(options);\n }\n};\n\n// Callbacks\n\nvar putCatalogCallback = function(scope) {\n // Put reference to AcroForm to DocumentCatalog\n if (\n typeof scope.internal.acroformPlugin.acroFormDictionaryRoot !== \"undefined\"\n ) {\n // for safety, shouldn't normally be the case\n scope.internal.write(\n \"/AcroForm \" +\n scope.internal.acroformPlugin.acroFormDictionaryRoot.objId +\n \" \" +\n 0 +\n \" R\"\n );\n } else {\n throw new Error(\"putCatalogCallback: Root missing.\");\n }\n};\n\n/**\n * Adds /Acroform X 0 R to Document Catalog, and creates the AcroForm\n * Dictionary\n */\nvar AcroFormDictionaryCallback = function(scope) {\n // Remove event\n scope.internal.events.unsubscribe(\n scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID\n );\n delete scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID;\n scope.internal.acroformPlugin.printedOut = true;\n};\n\n/**\n * Creates the single Fields and writes them into the Document\n *\n * If fieldArray is set, use the fields that are inside it instead of the\n * fields from the AcroRoot (for the FormXObjects...)\n */\nvar createFieldCallback = function(fieldArray, scope) {\n var standardFields = !fieldArray;\n\n if (!fieldArray) {\n // in case there is no fieldArray specified, we want to print out\n // the Fields of the AcroForm\n // Print out Root\n scope.internal.newObjectDeferredBegin(\n scope.internal.acroformPlugin.acroFormDictionaryRoot.objId,\n true\n );\n scope.internal.acroformPlugin.acroFormDictionaryRoot.putStream();\n }\n\n fieldArray =\n fieldArray || scope.internal.acroformPlugin.acroFormDictionaryRoot.Kids;\n\n for (var i in fieldArray) {\n if (fieldArray.hasOwnProperty(i)) {\n var fieldObject = fieldArray[i];\n var keyValueList = [];\n var oldRect = fieldObject.Rect;\n\n if (fieldObject.Rect) {\n fieldObject.Rect = calculateCoordinates(fieldObject.Rect, scope);\n }\n\n // Start Writing the Object\n scope.internal.newObjectDeferredBegin(fieldObject.objId, true);\n\n fieldObject.DA = AcroFormAppearance.createDefaultAppearanceStream(\n fieldObject\n );\n\n if (\n typeof fieldObject === \"object\" &&\n typeof fieldObject.getKeyValueListForStream === \"function\"\n ) {\n keyValueList = fieldObject.getKeyValueListForStream();\n }\n\n fieldObject.Rect = oldRect;\n\n if (\n fieldObject.hasAppearanceStream &&\n !fieldObject.appearanceStreamContent\n ) {\n // Calculate Appearance\n var appearance = calculateAppearanceStream(fieldObject);\n keyValueList.push({ key: \"AP\", value: \"<</N \" + appearance + \">>\" });\n\n scope.internal.acroformPlugin.xForms.push(appearance);\n }\n\n // Assume AppearanceStreamContent is a Array with N,R,D (at least\n // one of them!)\n if (fieldObject.appearanceStreamContent) {\n var appearanceStreamString = \"\";\n // Iterate over N,R and D\n for (var k in fieldObject.appearanceStreamContent) {\n if (fieldObject.appearanceStreamContent.hasOwnProperty(k)) {\n var value = fieldObject.appearanceStreamContent[k];\n appearanceStreamString += \"/\" + k + \" \";\n appearanceStreamString += \"<<\";\n if (Object.keys(value).length >= 1 || Array.isArray(value)) {\n // appearanceStream is an Array or Object!\n for (var i in value) {\n if (value.hasOwnProperty(i)) {\n var obj = value[i];\n if (typeof obj === \"function\") {\n // if Function is referenced, call it in order\n // to get the FormXObject\n obj = obj.call(scope, fieldObject);\n }\n appearanceStreamString += \"/\" + i + \" \" + obj + \" \";\n\n // In case the XForm is already used, e.g. OffState\n // of CheckBoxes, don't add it\n if (!(scope.internal.acroformPlugin.xForms.indexOf(obj) >= 0))\n scope.internal.acroformPlugin.xForms.push(obj);\n }\n }\n } else {\n obj = value;\n if (typeof obj === \"function\") {\n // if Function is referenced, call it in order to\n // get the FormXObject\n obj = obj.call(scope, fieldObject);\n }\n appearanceStreamString += \"/\" + i + \" \" + obj;\n if (!(scope.internal.acroformPlugin.xForms.indexOf(obj) >= 0))\n scope.internal.acroformPlugin.xForms.push(obj);\n }\n appearanceStreamString += \">>\";\n }\n }\n\n // appearance stream is a normal Object..\n keyValueList.push({\n key: \"AP\",\n value: \"<<\\n\" + appearanceStreamString + \">>\"\n });\n }\n\n scope.internal.putStream({\n additionalKeyValues: keyValueList,\n objectId: fieldObject.objId\n });\n\n scope.internal.out(\"endobj\");\n }\n }\n if (standardFields) {\n createXFormObjectCallback(scope.internal.acroformPlugin.xForms, scope);\n }\n};\n\nvar createXFormObjectCallback = function(fieldArray, scope) {\n for (var i in fieldArray) {\n if (fieldArray.hasOwnProperty(i)) {\n var key = i;\n var fieldObject = fieldArray[i];\n // Start Writing the Object\n scope.internal.newObjectDeferredBegin(fieldObject.objId, true);\n\n if (\n typeof fieldObject === \"object\" &&\n typeof fieldObject.putStream === \"function\"\n ) {\n fieldObject.putStream();\n }\n delete fieldArray[key];\n }\n }\n};\n\nvar initializeAcroForm = function(scope, formObject) {\n formObject.scope = scope;\n if (\n scope.internal !== undefined &&\n (scope.internal.acroformPlugin === undefined ||\n scope.internal.acroformPlugin.isInitialized === false)\n ) {\n AcroFormField.FieldNum = 0;\n scope.internal.acroformPlugin = JSON.parse(\n JSON.stringify(acroformPluginTemplate)\n );\n if (scope.internal.acroformPlugin.acroFormDictionaryRoot) {\n throw new Error(\"Exception while creating AcroformDictionary\");\n }\n scaleFactor = scope.internal.scaleFactor;\n // The Object Number of the AcroForm Dictionary\n scope.internal.acroformPlugin.acroFormDictionaryRoot = new AcroFormDictionary();\n scope.internal.acroformPlugin.acroFormDictionaryRoot.scope = scope;\n\n // add Callback for creating the AcroForm Dictionary\n scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID = scope.internal.events.subscribe(\n \"postPutResources\",\n function() {\n AcroFormDictionaryCallback(scope);\n }\n );\n\n scope.internal.events.subscribe(\"buildDocument\", function() {\n annotReferenceCallback(scope);\n }); // buildDocument\n\n // Register event, that is triggered when the DocumentCatalog is\n // written, in order to add /AcroForm\n\n scope.internal.events.subscribe(\"putCatalog\", function() {\n putCatalogCallback(scope);\n });\n\n // Register event, that creates all Fields\n scope.internal.events.subscribe(\"postPutPages\", function(fieldArray) {\n createFieldCallback(fieldArray, scope);\n });\n\n scope.internal.acroformPlugin.isInitialized = true;\n }\n};\n\n//PDF 32000-1:2008, page 26, 7.3.6\nvar arrayToPdfArray = (jsPDFAPI.__acroform__.arrayToPdfArray = function(\n array,\n objId,\n scope\n) {\n var encryptor = function(data) {\n return data;\n };\n if (Array.isArray(array)) {\n var content = \"[\";\n for (var i = 0; i < array.length; i++) {\n if (i !== 0) {\n content += \" \";\n }\n switch (typeof array[i]) {\n case \"boolean\":\n case \"number\":\n case \"object\":\n content += array[i].toString();\n break;\n case \"string\":\n if (array[i].substr(0, 1) !== \"/\") {\n if (typeof objId !== \"undefined\" && scope)\n encryptor = scope.internal.getEncryptor(objId);\n content += \"(\" + pdfEscape(encryptor(array[i].toString())) + \")\";\n } else {\n content += array[i].toString();\n }\n break;\n }\n }\n content += \"]\";\n return content;\n }\n throw new Error(\n \"Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray\"\n );\n});\nfunction getMatches(string, regex, index) {\n index || (index = 1); // default to the first capturing group\n var matches = [];\n var match;\n while ((match = regex.exec(string))) {\n matches.push(match[index]);\n }\n return matches;\n}\nvar pdfArrayToStringArray = function(array) {\n var result = [];\n if (typeof array === \"string\") {\n result = getMatches(array, /\\((.*?)\\)/g);\n }\n return result;\n};\n\nvar toPdfString = function(string, objId, scope) {\n var encryptor = function(data) {\n return data;\n };\n if (typeof objId !== \"undefined\" && scope)\n encryptor = scope.internal.getEncryptor(objId);\n string = string || \"\";\n string.toString();\n string = \"(\" + pdfEscape(encryptor(string)) + \")\";\n return string;\n};\n\n// ##########################\n// Classes\n// ##########################\n\n/**\n * @class AcroFormPDFObject\n * @classdesc A AcroFormPDFObject\n */\nvar AcroFormPDFObject = function() {\n this._objId = undefined;\n this._scope = undefined;\n\n /**\n * @name AcroFormPDFObject#objId\n * @type {any}\n */\n Object.defineProperty(this, \"objId\", {\n get: function() {\n if (typeof this._objId === \"undefined\") {\n if (typeof this.scope === \"undefined\") {\n return undefined;\n }\n this._objId = this.scope.internal.newObjectDeferred();\n }\n return this._objId;\n },\n set: function(value) {\n this._objId = value;\n }\n });\n Object.defineProperty(this, \"scope\", {\n value: this._scope,\n writable: true\n });\n};\n\n/**\n * @function AcroFormPDFObject.toString\n */\nAcroFormPDFObject.prototype.toString = function() {\n return this.objId + \" 0 R\";\n};\n\nAcroFormPDFObject.prototype.putStream = function() {\n var keyValueList = this.getKeyValueListForStream();\n this.scope.internal.putStream({\n data: this.stream,\n additionalKeyValues: keyValueList,\n objectId: this.objId\n });\n this.scope.internal.out(\"endobj\");\n};\n\n/**\n * Returns an key-value-List of all non-configurable Variables from the Object\n *\n * @name getKeyValueListForStream\n * @returns {string}\n */\nAcroFormPDFObject.prototype.getKeyValueListForStream = function() {\n var keyValueList = [];\n var keys = Object.getOwnPropertyNames(this).filter(function(key) {\n return (\n key != \"content\" &&\n key != \"appearanceStreamContent\" &&\n key != \"scope\" &&\n key != \"objId\" &&\n key.substring(0, 1) != \"_\"\n );\n });\n\n for (var i in keys) {\n if (Object.getOwnPropertyDescriptor(this, keys[i]).configurable === false) {\n var key = keys[i];\n var value = this[key];\n\n if (value) {\n if (Array.isArray(value)) {\n keyValueList.push({\n key: key,\n value: arrayToPdfArray(value, this.objId, this.scope)\n });\n } else if (value instanceof AcroFormPDFObject) {\n // In case it is a reference to another PDFObject,\n // take the reference number\n value.scope = this.scope;\n keyValueList.push({ key: key, value: value.objId + \" 0 R\" });\n } else if (typeof value !== \"function\") {\n keyValueList.push({ key: key, value: value });\n }\n }\n }\n }\n return keyValueList;\n};\n\nvar AcroFormXObject = function() {\n AcroFormPDFObject.call(this);\n\n Object.defineProperty(this, \"Type\", {\n value: \"/XObject\",\n configurable: false,\n writable: true\n });\n\n Object.defineProperty(this, \"Subtype\", {\n value: \"/Form\",\n configurable: false,\n writable: true\n });\n\n Object.defineProperty(this, \"FormType\", {\n value: 1,\n configurable: false,\n writable: true\n });\n\n var _BBox = [];\n Object.defineProperty(this, \"BBox\", {\n configurable: false,\n get: function() {\n return _BBox;\n },\n set: function(value) {\n _BBox = value;\n }\n });\n\n Object.defineProperty(this, \"Resources\", {\n value: \"2 0 R\",\n configurable: false,\n writable: true\n });\n\n var _stream;\n Object.defineProperty(this, \"stream\", {\n enumerable: false,\n configurable: true,\n set: function(value) {\n _stream = value.trim();\n },\n get: function() {\n if (_stream) {\n return _stream;\n } else {\n return null;\n }\n }\n });\n};\n\ninherit(AcroFormXObject, AcroFormPDFObject);\n\nvar AcroFormDictionary = function() {\n AcroFormPDFObject.call(this);\n\n var _Kids = [];\n\n Object.defineProperty(this, \"Kids\", {\n enumerable: false,\n configurable: true,\n get: function() {\n if (_Kids.length > 0) {\n return _Kids;\n } else {\n return undefined;\n }\n }\n });\n Object.defineProperty(this, \"Fields\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _Kids;\n }\n });\n\n // Default Appearance\n var _DA;\n Object.defineProperty(this, \"DA\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_DA) {\n return undefined;\n }\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n return \"(\" + pdfEscape(encryptor(_DA)) + \")\";\n },\n set: function(value) {\n _DA = value;\n }\n });\n};\n\ninherit(AcroFormDictionary, AcroFormPDFObject);\n\n/**\n * The Field Object contains the Variables, that every Field needs\n *\n * @class AcroFormField\n * @classdesc An AcroForm FieldObject\n */\nvar AcroFormField = function() {\n AcroFormPDFObject.call(this);\n\n //Annotation-Flag See Table 165\n var _F = 4;\n Object.defineProperty(this, \"F\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _F;\n },\n set: function(value) {\n if (!isNaN(value)) {\n _F = value;\n } else {\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute F supplied.'\n );\n }\n }\n });\n\n /**\n * (PDF 1.2) If set, print the annotation when the page is printed. If clear, never print the annotation, regardless of wether is is displayed on the screen.\n * NOTE 2 This can be useful for annotations representing interactive pushbuttons, which would serve no meaningful purpose on the printed page.\n *\n * @name AcroFormField#showWhenPrinted\n * @default true\n * @type {boolean}\n */\n Object.defineProperty(this, \"showWhenPrinted\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(_F, 3));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.F = setBitForPdf(_F, 3);\n } else {\n this.F = clearBitForPdf(_F, 3);\n }\n }\n });\n\n var _Ff = 0;\n Object.defineProperty(this, \"Ff\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _Ff;\n },\n set: function(value) {\n if (!isNaN(value)) {\n _Ff = value;\n } else {\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute Ff supplied.'\n );\n }\n }\n });\n\n var _Rect = [];\n Object.defineProperty(this, \"Rect\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (_Rect.length === 0) {\n return undefined;\n }\n return _Rect;\n },\n set: function(value) {\n if (typeof value !== \"undefined\") {\n _Rect = value;\n } else {\n _Rect = [];\n }\n }\n });\n\n /**\n * The x-position of the field.\n *\n * @name AcroFormField#x\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[0])) {\n return 0;\n }\n return _Rect[0];\n },\n set: function(value) {\n _Rect[0] = value;\n }\n });\n\n /**\n * The y-position of the field.\n *\n * @name AcroFormField#y\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[1])) {\n return 0;\n }\n return _Rect[1];\n },\n set: function(value) {\n _Rect[1] = value;\n }\n });\n\n /**\n * The width of the field.\n *\n * @name AcroFormField#width\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"width\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[2])) {\n return 0;\n }\n return _Rect[2];\n },\n set: function(value) {\n _Rect[2] = value;\n }\n });\n\n /**\n * The height of the field.\n *\n * @name AcroFormField#height\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"height\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[3])) {\n return 0;\n }\n return _Rect[3];\n },\n set: function(value) {\n _Rect[3] = value;\n }\n });\n\n var _FT = \"\";\n Object.defineProperty(this, \"FT\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _FT;\n },\n set: function(value) {\n switch (value) {\n case \"/Btn\":\n case \"/Tx\":\n case \"/Ch\":\n case \"/Sig\":\n _FT = value;\n break;\n default:\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute FT supplied.'\n );\n }\n }\n });\n\n var _T = null;\n\n Object.defineProperty(this, \"T\", {\n enumerable: true,\n configurable: false,\n get: function() {\n if (!_T || _T.length < 1) {\n // In case of a Child from a Radio´Group, you don't need a FieldName\n if (this instanceof AcroFormChildClass) {\n return undefined;\n }\n _T = \"FieldObject\" + AcroFormField.FieldNum++;\n }\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n return \"(\" + pdfEscape(encryptor(_T)) + \")\";\n },\n set: function(value) {\n _T = value.toString();\n }\n });\n\n /**\n * (Optional) The partial field name (see 12.7.3.2, “Field Names”).\n *\n * @name AcroFormField#fieldName\n * @default null\n * @type {string}\n */\n Object.defineProperty(this, \"fieldName\", {\n configurable: true,\n enumerable: true,\n get: function() {\n return _T;\n },\n set: function(value) {\n _T = value;\n }\n });\n\n var _fontName = \"helvetica\";\n /**\n * The fontName of the font to be used.\n *\n * @name AcroFormField#fontName\n * @default 'helvetica'\n * @type {string}\n */\n Object.defineProperty(this, \"fontName\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _fontName;\n },\n set: function(value) {\n _fontName = value;\n }\n });\n\n var _fontStyle = \"normal\";\n /**\n * The fontStyle of the font to be used.\n *\n * @name AcroFormField#fontStyle\n * @default 'normal'\n * @type {string}\n */\n Object.defineProperty(this, \"fontStyle\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _fontStyle;\n },\n set: function(value) {\n _fontStyle = value;\n }\n });\n\n var _fontSize = 0;\n /**\n * The fontSize of the font to be used.\n *\n * @name AcroFormField#fontSize\n * @default 0 (for auto)\n * @type {number}\n */\n Object.defineProperty(this, \"fontSize\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _fontSize;\n },\n set: function(value) {\n _fontSize = value;\n }\n });\n\n var _maxFontSize = undefined;\n /**\n * The maximum fontSize of the font to be used.\n *\n * @name AcroFormField#maxFontSize\n * @default 0 (for auto)\n * @type {number}\n */\n Object.defineProperty(this, \"maxFontSize\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (_maxFontSize === undefined) {\n // use the old default value here - the value is some kind of random as it depends on the scaleFactor (user unit)\n // (\"50\" is transformed to the \"user space\" but then used in \"pdf space\")\n return 50 / scaleFactor;\n } else {\n return _maxFontSize;\n }\n },\n set: function(value) {\n _maxFontSize = value;\n }\n });\n\n var _color = \"black\";\n /**\n * The color of the text\n *\n * @name AcroFormField#color\n * @default 'black'\n * @type {string|rgba}\n */\n Object.defineProperty(this, \"color\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _color;\n },\n set: function(value) {\n _color = value;\n }\n });\n\n var _DA = \"/F1 0 Tf 0 g\";\n // Defines the default appearance (Needed for variable Text)\n Object.defineProperty(this, \"DA\", {\n enumerable: true,\n configurable: false,\n get: function() {\n if (\n !_DA ||\n this instanceof AcroFormChildClass ||\n this instanceof AcroFormTextField\n ) {\n return undefined;\n }\n return toPdfString(_DA, this.objId, this.scope);\n },\n set: function(value) {\n value = value.toString();\n _DA = value;\n }\n });\n\n var _DV = null;\n Object.defineProperty(this, \"DV\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_DV) {\n return undefined;\n }\n if (this instanceof AcroFormButton === false) {\n return toPdfString(_DV, this.objId, this.scope);\n }\n return _DV;\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === false) {\n if (value.substr(0, 1) === \"(\") {\n _DV = pdfUnescape(value.substr(1, value.length - 2));\n } else {\n _DV = pdfUnescape(value);\n }\n } else {\n _DV = value;\n }\n }\n });\n\n /**\n * (Optional; inheritable) The default value to which the field reverts when a reset-form action is executed (see 12.7.5.3, “Reset-Form Action”). The format of this value is the same as that of value.\n *\n * @name AcroFormField#defaultValue\n * @default null\n * @type {any}\n */\n Object.defineProperty(this, \"defaultValue\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (this instanceof AcroFormButton === true) {\n return pdfUnescape(_DV.substr(1, _DV.length - 1));\n } else {\n return _DV;\n }\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === true) {\n _DV = \"/\" + value;\n } else {\n _DV = value;\n }\n }\n });\n\n var _V = null;\n Object.defineProperty(this, \"_V\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_V) {\n return undefined;\n }\n return _V;\n },\n set: function(value) {\n this.V = value;\n }\n });\n Object.defineProperty(this, \"V\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_V) {\n return undefined;\n }\n if (this instanceof AcroFormButton === false) {\n return toPdfString(_V, this.objId, this.scope);\n }\n return _V;\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === false) {\n if (value.substr(0, 1) === \"(\") {\n _V = pdfUnescape(value.substr(1, value.length - 2));\n } else {\n _V = pdfUnescape(value);\n }\n } else {\n _V = value;\n }\n }\n });\n\n /**\n * (Optional; inheritable) The fields value, whose format varies depending on the field type. See the descriptions of individual field types for further information.\n *\n * @name AcroFormField#value\n * @default null\n * @type {any}\n */\n Object.defineProperty(this, \"value\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (this instanceof AcroFormButton === true) {\n return pdfUnescape(_V.substr(1, _V.length - 1));\n } else {\n return _V;\n }\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === true) {\n _V = \"/\" + value;\n } else {\n _V = value;\n }\n }\n });\n\n /**\n * Check if field has annotations\n *\n * @name AcroFormField#hasAnnotation\n * @readonly\n * @type {boolean}\n */\n Object.defineProperty(this, \"hasAnnotation\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return this.Rect;\n }\n });\n\n Object.defineProperty(this, \"Type\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return this.hasAnnotation ? \"/Annot\" : null;\n }\n });\n\n Object.defineProperty(this, \"Subtype\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return this.hasAnnotation ? \"/Widget\" : null;\n }\n });\n\n var _hasAppearanceStream = false;\n /**\n * true if field has an appearanceStream\n *\n * @name AcroFormField#hasAppearanceStream\n * @readonly\n * @type {boolean}\n */\n Object.defineProperty(this, \"hasAppearanceStream\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _hasAppearanceStream;\n },\n set: function(value) {\n value = Boolean(value);\n _hasAppearanceStream = value;\n }\n });\n\n /**\n * The page on which the AcroFormField is placed\n *\n * @name AcroFormField#page\n * @type {number}\n */\n var _page;\n Object.defineProperty(this, \"page\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_page) {\n return undefined;\n }\n return _page;\n },\n set: function(value) {\n _page = value;\n }\n });\n\n /**\n * If set, the user may not change the value of the field. Any associated widget annotations will not interact with the user; that is, they will not respond to mouse clicks or change their appearance in response to mouse motions. This flag is useful for fields whose values are computed or imported from a database.\n *\n * @name AcroFormField#readOnly\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"readOnly\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 1));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 1);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 1);\n }\n }\n });\n\n /**\n * If set, the field shall have a value at the time it is exported by a submitform action (see 12.7.5.2, “Submit-Form Action”).\n *\n * @name AcroFormField#required\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"required\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 2));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 2);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 2);\n }\n }\n });\n\n /**\n * If set, the field shall not be exported by a submit-form action (see 12.7.5.2, “Submit-Form Action”)\n *\n * @name AcroFormField#noExport\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"noExport\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 3));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 3);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 3);\n }\n }\n });\n\n var _Q = null;\n Object.defineProperty(this, \"Q\", {\n enumerable: true,\n configurable: false,\n get: function() {\n if (_Q === null) {\n return undefined;\n }\n return _Q;\n },\n set: function(value) {\n if ([0, 1, 2].indexOf(value) !== -1) {\n _Q = value;\n } else {\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute Q supplied.'\n );\n }\n }\n });\n\n /**\n * (Optional; inheritable) A code specifying the form of quadding (justification) that shall be used in displaying the text:\n * 'left', 'center', 'right'\n *\n * @name AcroFormField#textAlign\n * @default 'left'\n * @type {string}\n */\n Object.defineProperty(this, \"textAlign\", {\n get: function() {\n var result;\n switch (_Q) {\n case 0:\n default:\n result = \"left\";\n break;\n case 1:\n result = \"center\";\n break;\n case 2:\n result = \"right\";\n break;\n }\n return result;\n },\n configurable: true,\n enumerable: true,\n set: function(value) {\n switch (value) {\n case \"right\":\n case 2:\n _Q = 2;\n break;\n case \"center\":\n case 1:\n _Q = 1;\n break;\n case \"left\":\n case 0:\n default:\n _Q = 0;\n }\n }\n });\n};\n\ninherit(AcroFormField, AcroFormPDFObject);\n\n/**\n * @class AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormChoiceField = function() {\n AcroFormField.call(this);\n // Field Type = Choice Field\n this.FT = \"/Ch\";\n // options\n this.V = \"()\";\n\n this.fontName = \"zapfdingbats\";\n // Top Index\n var _TI = 0;\n\n Object.defineProperty(this, \"TI\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _TI;\n },\n set: function(value) {\n _TI = value;\n }\n });\n\n /**\n * (Optional) For scrollable list boxes, the top index (the index in the Opt array of the first option visible in the list). Default value: 0.\n *\n * @name AcroFormChoiceField#topIndex\n * @default 0\n * @type {number}\n */\n Object.defineProperty(this, \"topIndex\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _TI;\n },\n set: function(value) {\n _TI = value;\n }\n });\n\n var _Opt = [];\n Object.defineProperty(this, \"Opt\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return arrayToPdfArray(_Opt, this.objId, this.scope);\n },\n set: function(value) {\n _Opt = pdfArrayToStringArray(value);\n }\n });\n\n /**\n * @memberof AcroFormChoiceField\n * @name getOptions\n * @function\n * @instance\n * @returns {array} array of Options\n */\n this.getOptions = function() {\n return _Opt;\n };\n\n /**\n * @memberof AcroFormChoiceField\n * @name setOptions\n * @function\n * @instance\n * @param {array} value\n */\n this.setOptions = function(value) {\n _Opt = value;\n if (this.sort) {\n _Opt.sort();\n }\n };\n\n /**\n * @memberof AcroFormChoiceField\n * @name addOption\n * @function\n * @instance\n * @param {string} value\n */\n this.addOption = function(value) {\n value = value || \"\";\n value = value.toString();\n _Opt.push(value);\n if (this.sort) {\n _Opt.sort();\n }\n };\n\n /**\n * @memberof AcroFormChoiceField\n * @name removeOption\n * @function\n * @instance\n * @param {string} value\n * @param {boolean} allEntries (default: false)\n */\n this.removeOption = function(value, allEntries) {\n allEntries = allEntries || false;\n value = value || \"\";\n value = value.toString();\n\n while (_Opt.indexOf(value) !== -1) {\n _Opt.splice(_Opt.indexOf(value), 1);\n if (allEntries === false) {\n break;\n }\n }\n };\n\n /**\n * If set, the field is a combo box; if clear, the field is a list box.\n *\n * @name AcroFormChoiceField#combo\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"combo\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 18));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 18);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 18);\n }\n }\n });\n\n /**\n * If set, the combo box shall include an editable text box as well as a drop-down list; if clear, it shall include only a drop-down list. This flag shall be used only if the Combo flag is set.\n *\n * @name AcroFormChoiceField#edit\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"edit\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 19));\n },\n set: function(value) {\n //PDF 32000-1:2008, page 444\n if (this.combo === true) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 19);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 19);\n }\n }\n }\n });\n\n /**\n * If set, the fields option items shall be sorted alphabetically. This flag is intended for use by writers, not by readers. Conforming readers shall display the options in the order in which they occur in the Opt array (see Table 231).\n *\n * @name AcroFormChoiceField#sort\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"sort\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 20));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 20);\n _Opt.sort();\n } else {\n this.Ff = clearBitForPdf(this.Ff, 20);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, more than one of the fields option items may be selected simultaneously; if clear, at most one item shall be selected\n *\n * @name AcroFormChoiceField#multiSelect\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"multiSelect\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 22));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 22);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 22);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, text entered in the field shall not be spellchecked. This flag shall not be used unless the Combo and Edit flags are both set.\n *\n * @name AcroFormChoiceField#doNotSpellCheck\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"doNotSpellCheck\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 23));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 23);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 23);\n }\n }\n });\n\n /**\n * (PDF 1.5) If set, the new value shall be committed as soon as a selection is made (commonly with the pointing device). In this case, supplying a value for a field involves three actions: selecting the field for fill-in, selecting a choice for the fill-in value, and leaving that field, which finalizes or “commits” the data choice and triggers any actions associated with the entry or changing of this data. If this flag is on, then processing does not wait for leaving the field action to occur, but immediately proceeds to the third step.\n * This option enables applications to perform an action once a selection is made, without requiring the user to exit the field. If clear, the new value is not committed until the user exits the field.\n *\n * @name AcroFormChoiceField#commitOnSelChange\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"commitOnSelChange\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 27));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 27);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 27);\n }\n }\n });\n\n this.hasAppearanceStream = false;\n};\ninherit(AcroFormChoiceField, AcroFormField);\n\n/**\n * @class AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormListBox = function() {\n AcroFormChoiceField.call(this);\n this.fontName = \"helvetica\";\n\n //PDF 32000-1:2008, page 444\n this.combo = false;\n};\ninherit(AcroFormListBox, AcroFormChoiceField);\n\n/**\n * @class AcroFormComboBox\n * @extends AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormComboBox = function() {\n AcroFormListBox.call(this);\n this.combo = true;\n};\ninherit(AcroFormComboBox, AcroFormListBox);\n\n/**\n * @class AcroFormEditBox\n * @extends AcroFormComboBox\n * @extends AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormEditBox = function() {\n AcroFormComboBox.call(this);\n this.edit = true;\n};\ninherit(AcroFormEditBox, AcroFormComboBox);\n\n/**\n * @class AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormButton = function() {\n AcroFormField.call(this);\n this.FT = \"/Btn\";\n\n /**\n * (Radio buttons only) If set, exactly one radio button shall be selected at all times; selecting the currently selected button has no effect. If clear, clicking the selected button deselects it, leaving no button selected.\n *\n * @name AcroFormButton#noToggleToOff\n * @type {boolean}\n */\n Object.defineProperty(this, \"noToggleToOff\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 15));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 15);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 15);\n }\n }\n });\n\n /**\n * If set, the field is a set of radio buttons; if clear, the field is a checkbox. This flag may be set only if the Pushbutton flag is clear.\n *\n * @name AcroFormButton#radio\n * @type {boolean}\n */\n Object.defineProperty(this, \"radio\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 16));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 16);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 16);\n }\n }\n });\n\n /**\n * If set, the field is a pushbutton that does not retain a permanent value.\n *\n * @name AcroFormButton#pushButton\n * @type {boolean}\n */\n Object.defineProperty(this, \"pushButton\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 17));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 17);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 17);\n }\n }\n });\n\n /**\n * (PDF 1.5) If set, a group of radio buttons within a radio button field that use the same value for the on state will turn on and off in unison; that is if one is checked, they are all checked. If clear, the buttons are mutually exclusive (the same behavior as HTML radio buttons).\n *\n * @name AcroFormButton#radioIsUnison\n * @type {boolean}\n */\n Object.defineProperty(this, \"radioIsUnison\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 26));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 26);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 26);\n }\n }\n });\n\n var _MK = {};\n Object.defineProperty(this, \"MK\", {\n enumerable: false,\n configurable: false,\n get: function() {\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n if (Object.keys(_MK).length !== 0) {\n var result = [];\n result.push(\"<<\");\n var key;\n for (key in _MK) {\n result.push(\"/\" + key + \" (\" + pdfEscape(encryptor(_MK[key])) + \")\");\n }\n result.push(\">>\");\n return result.join(\"\\n\");\n }\n return undefined;\n },\n set: function(value) {\n if (typeof value === \"object\") {\n _MK = value;\n }\n }\n });\n\n /**\n * From the PDF reference:\n * (Optional, button fields only) The widget annotation's normal caption which shall be displayed when it is not interacting with the user.\n * Unlike the remaining entries listed in this Table which apply only to widget annotations associated with pushbutton fields (see Pushbuttons in 12.7.4.2, \"Button Fields\"), the CA entry may be used with any type of button field, including check boxes (see Check Boxes in 12.7.4.2, \"Button Fields\") and radio buttons (Radio Buttons in 12.7.4.2, \"Button Fields\").\n *\n * - '8' = Cross,\n * - 'l' = Circle,\n * - '' = nothing\n * @name AcroFormButton#caption\n * @type {string}\n */\n Object.defineProperty(this, \"caption\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _MK.CA || \"\";\n },\n set: function(value) {\n if (typeof value === \"string\") {\n _MK.CA = value;\n }\n }\n });\n\n var _AS;\n Object.defineProperty(this, \"AS\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _AS;\n },\n set: function(value) {\n _AS = value;\n }\n });\n\n /**\n * (Required if the appearance dictionary AP contains one or more subdictionaries; PDF 1.2) The annotation's appearance state, which selects the applicable appearance stream from an appearance subdictionary (see Section 12.5.5, \"Appearance Streams\")\n *\n * @name AcroFormButton#appearanceState\n * @type {any}\n */\n Object.defineProperty(this, \"appearanceState\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _AS.substr(1, _AS.length - 1);\n },\n set: function(value) {\n _AS = \"/\" + value;\n }\n });\n};\ninherit(AcroFormButton, AcroFormField);\n\n/**\n * @class AcroFormPushButton\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormPushButton = function() {\n AcroFormButton.call(this);\n this.pushButton = true;\n};\ninherit(AcroFormPushButton, AcroFormButton);\n\n/**\n * @class AcroFormRadioButton\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormRadioButton = function() {\n AcroFormButton.call(this);\n this.radio = true;\n this.pushButton = false;\n\n var _Kids = [];\n Object.defineProperty(this, \"Kids\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _Kids;\n },\n set: function(value) {\n if (typeof value !== \"undefined\") {\n _Kids = value;\n } else {\n _Kids = [];\n }\n }\n });\n};\ninherit(AcroFormRadioButton, AcroFormButton);\n\n/**\n * The Child class of a RadioButton (the radioGroup) -> The single Buttons\n *\n * @class AcroFormChildClass\n * @extends AcroFormField\n * @ignore\n */\nvar AcroFormChildClass = function() {\n AcroFormField.call(this);\n\n var _parent;\n Object.defineProperty(this, \"Parent\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _parent;\n },\n set: function(value) {\n _parent = value;\n }\n });\n\n var _optionName;\n Object.defineProperty(this, \"optionName\", {\n enumerable: false,\n configurable: true,\n get: function() {\n return _optionName;\n },\n set: function(value) {\n _optionName = value;\n }\n });\n\n var _MK = {};\n Object.defineProperty(this, \"MK\", {\n enumerable: false,\n configurable: false,\n get: function() {\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n var result = [];\n result.push(\"<<\");\n var key;\n for (key in _MK) {\n result.push(\"/\" + key + \" (\" + pdfEscape(encryptor(_MK[key])) + \")\");\n }\n result.push(\">>\");\n return result.join(\"\\n\");\n },\n set: function(value) {\n if (typeof value === \"object\") {\n _MK = value;\n }\n }\n });\n\n /**\n * From the PDF reference:\n * (Optional, button fields only) The widget annotation's normal caption which shall be displayed when it is not interacting with the user.\n * Unlike the remaining entries listed in this Table which apply only to widget annotations associated with pushbutton fields (see Pushbuttons in 12.7.4.2, \"Button Fields\"), the CA entry may be used with any type of button field, including check boxes (see Check Boxes in 12.7.4.2, \"Button Fields\") and radio buttons (Radio Buttons in 12.7.4.2, \"Button Fields\").\n *\n * - '8' = Cross,\n * - 'l' = Circle,\n * - '' = nothing\n * @name AcroFormButton#caption\n * @type {string}\n */\n Object.defineProperty(this, \"caption\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _MK.CA || \"\";\n },\n set: function(value) {\n if (typeof value === \"string\") {\n _MK.CA = value;\n }\n }\n });\n\n var _AS;\n Object.defineProperty(this, \"AS\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _AS;\n },\n set: function(value) {\n _AS = value;\n }\n });\n\n /**\n * (Required if the appearance dictionary AP contains one or more subdictionaries; PDF 1.2) The annotation's appearance state, which selects the applicable appearance stream from an appearance subdictionary (see Section 12.5.5, \"Appearance Streams\")\n *\n * @name AcroFormButton#appearanceState\n * @type {any}\n */\n Object.defineProperty(this, \"appearanceState\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _AS.substr(1, _AS.length - 1);\n },\n set: function(value) {\n _AS = \"/\" + value;\n }\n });\n this.caption = \"l\";\n this.appearanceState = \"Off\";\n // todo: set AppearanceType as variable that can be set from the\n // outside...\n this._AppearanceType = AcroFormAppearance.RadioButton.Circle;\n // The Default appearanceType is the Circle\n this.appearanceStreamContent = this._AppearanceType.createAppearanceStream(\n this.optionName\n );\n};\ninherit(AcroFormChildClass, AcroFormField);\n\nAcroFormRadioButton.prototype.setAppearance = function(appearance) {\n if (!(\"createAppearanceStream\" in appearance && \"getCA\" in appearance)) {\n throw new Error(\n \"Couldn't assign Appearance to RadioButton. Appearance was Invalid!\"\n );\n }\n for (var objId in this.Kids) {\n if (this.Kids.hasOwnProperty(objId)) {\n var child = this.Kids[objId];\n child.appearanceStreamContent = appearance.createAppearanceStream(\n child.optionName\n );\n child.caption = appearance.getCA();\n }\n }\n};\n\nAcroFormRadioButton.prototype.createOption = function(name) {\n // Create new Child for RadioGroup\n var child = new AcroFormChildClass();\n child.Parent = this;\n child.optionName = name;\n // Add to Parent\n this.Kids.push(child);\n\n addField.call(this.scope, child);\n\n return child;\n};\n\n/**\n * @class AcroFormCheckBox\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormCheckBox = function() {\n AcroFormButton.call(this);\n\n this.fontName = \"zapfdingbats\";\n this.caption = \"3\";\n this.appearanceState = \"On\";\n this.value = \"On\";\n this.textAlign = \"center\";\n this.appearanceStreamContent = AcroFormAppearance.CheckBox.createAppearanceStream();\n};\ninherit(AcroFormCheckBox, AcroFormButton);\n\n/**\n * @class AcroFormTextField\n * @extends AcroFormField\n */\nvar AcroFormTextField = function() {\n AcroFormField.call(this);\n this.FT = \"/Tx\";\n\n /**\n * If set, the field may contain multiple lines of text; if clear, the fields text shall be restricted to a single line.\n *\n * @name AcroFormTextField#multiline\n * @type {boolean}\n */\n Object.defineProperty(this, \"multiline\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 13));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 13);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 13);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, the text entered in the field represents the pathname of a file whose contents shall be submitted as the value of the field.\n *\n * @name AcroFormTextField#fileSelect\n * @type {boolean}\n */\n Object.defineProperty(this, \"fileSelect\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 21));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 21);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 21);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, text entered in the field shall not be spell-checked.\n *\n * @name AcroFormTextField#doNotSpellCheck\n * @type {boolean}\n */\n Object.defineProperty(this, \"doNotSpellCheck\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 23));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 23);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 23);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, the field shall not scroll (horizontally for single-line fields, vertically for multiple-line fields) to accommodate more text than fits within its annotation rectangle. Once the field is full, no further text shall be accepted for interactive form filling; for noninteractive form filling, the filler should take care not to add more character than will visibly fit in the defined area.\n *\n * @name AcroFormTextField#doNotScroll\n * @type {boolean}\n */\n Object.defineProperty(this, \"doNotScroll\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 24));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 24);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 24);\n }\n }\n });\n\n /**\n * (PDF 1.5) May be set only if the MaxLen entry is present in the text field dictionary (see Table 229) and if the Multiline, Password, and FileSelect flags are clear. If set, the field shall be automatically divided into as many equally spaced positions, or combs, as the value of MaxLen, and the text is laid out into those combs.\n *\n * @name AcroFormTextField#comb\n * @type {boolean}\n */\n Object.defineProperty(this, \"comb\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 25));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 25);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 25);\n }\n }\n });\n\n /**\n * (PDF 1.5) If set, the value of this field shall be a rich text string (see 12.7.3.4, “Rich Text Strings”). If the field has a value, the RV entry of the field dictionary (Table 222) shall specify the rich text string.\n *\n * @name AcroFormTextField#richText\n * @type {boolean}\n */\n Object.defineProperty(this, \"richText\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 26));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 26);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 26);\n }\n }\n });\n\n var _MaxLen = null;\n Object.defineProperty(this, \"MaxLen\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _MaxLen;\n },\n set: function(value) {\n _MaxLen = value;\n }\n });\n\n /**\n * (Optional; inheritable) The maximum length of the fields text, in characters.\n *\n * @name AcroFormTextField#maxLength\n * @type {number}\n */\n Object.defineProperty(this, \"maxLength\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _MaxLen;\n },\n set: function(value) {\n if (Number.isInteger(value)) {\n _MaxLen = value;\n }\n }\n });\n\n Object.defineProperty(this, \"hasAppearanceStream\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return this.V || this.DV;\n }\n });\n};\ninherit(AcroFormTextField, AcroFormField);\n\n/**\n * @class AcroFormPasswordField\n * @extends AcroFormTextField\n * @extends AcroFormField\n */\nvar AcroFormPasswordField = function() {\n AcroFormTextField.call(this);\n\n /**\n * If set, the field is intended for entering a secure password that should not be echoed visibly to the screen. Characters typed from the keyboard shall instead be echoed in some unreadable form, such as asterisks or bullet characters.\n * NOTE To protect password confidentiality, readers should never store the value of the text field in the PDF file if this flag is set.\n *\n * @name AcroFormTextField#password\n * @type {boolean}\n */\n Object.defineProperty(this, \"password\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 14));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 14);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 14);\n }\n }\n });\n this.password = true;\n};\ninherit(AcroFormPasswordField, AcroFormTextField);\n\n// Contains Methods for creating standard appearances\nvar AcroFormAppearance = {\n CheckBox: {\n createAppearanceStream: function() {\n var appearance = {\n N: {\n On: AcroFormAppearance.CheckBox.YesNormal\n },\n D: {\n On: AcroFormAppearance.CheckBox.YesPushDown,\n Off: AcroFormAppearance.CheckBox.OffPushDown\n }\n };\n\n return appearance;\n },\n /**\n * Returns the standard On Appearance for a CheckBox\n *\n * @returns {AcroFormXObject}\n */\n YesPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n var encodedColor = formObject.scope.__private__.encodeColorString(\n formObject.color\n );\n var calcRes = calculateX(formObject, formObject.caption);\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n stream.push(\"BMC\");\n stream.push(\"q\");\n stream.push(\"0 0 1 rg\");\n stream.push(\n \"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf \" + encodedColor\n );\n stream.push(\"BT\");\n stream.push(calcRes.text);\n stream.push(\"ET\");\n stream.push(\"Q\");\n stream.push(\"EMC\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n\n YesNormal: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n var encodedColor = formObject.scope.__private__.encodeColorString(\n formObject.color\n );\n var stream = [];\n var height = AcroFormAppearance.internal.getHeight(formObject);\n var width = AcroFormAppearance.internal.getWidth(formObject);\n var calcRes = calculateX(formObject, formObject.caption);\n stream.push(\"1 g\");\n stream.push(\"0 0 \" + f2(width) + \" \" + f2(height) + \" re\");\n stream.push(\"f\");\n stream.push(\"q\");\n stream.push(\"0 0 1 rg\");\n stream.push(\"0 0 \" + f2(width - 1) + \" \" + f2(height - 1) + \" re\");\n stream.push(\"W\");\n stream.push(\"n\");\n stream.push(\"0 g\");\n stream.push(\"BT\");\n stream.push(\n \"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf \" + encodedColor\n );\n stream.push(calcRes.text);\n stream.push(\"ET\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n\n /**\n * Returns the standard Off Appearance for a CheckBox\n *\n * @returns {AcroFormXObject}\n */\n OffPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n }\n },\n\n RadioButton: {\n Circle: {\n createAppearanceStream: function(name) {\n var appearanceStreamContent = {\n D: {\n Off: AcroFormAppearance.RadioButton.Circle.OffPushDown\n },\n N: {}\n };\n appearanceStreamContent.N[name] =\n AcroFormAppearance.RadioButton.Circle.YesNormal;\n appearanceStreamContent.D[name] =\n AcroFormAppearance.RadioButton.Circle.YesPushDown;\n return appearanceStreamContent;\n },\n getCA: function() {\n return \"l\";\n },\n\n YesNormal: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n // Make the Radius of the Circle relative to min(height, width) of formObject\n var DotRadius =\n AcroFormAppearance.internal.getWidth(formObject) <=\n AcroFormAppearance.internal.getHeight(formObject)\n ? AcroFormAppearance.internal.getWidth(formObject) / 4\n : AcroFormAppearance.internal.getHeight(formObject) / 4;\n // The Borderpadding...\n DotRadius = Number((DotRadius * 0.9).toFixed(5));\n var c = AcroFormAppearance.internal.Bezier_C;\n var DotRadiusBezier = Number((DotRadius * c).toFixed(5));\n /*\n * The Following is a Circle created with Bezier-Curves.\n */\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(DotRadius + \" 0 m\");\n stream.push(\n DotRadius +\n \" \" +\n DotRadiusBezier +\n \" \" +\n DotRadiusBezier +\n \" \" +\n DotRadius +\n \" 0 \" +\n DotRadius +\n \" c\"\n );\n stream.push(\n \"-\" +\n DotRadiusBezier +\n \" \" +\n DotRadius +\n \" -\" +\n DotRadius +\n \" \" +\n DotRadiusBezier +\n \" -\" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\n \"-\" +\n DotRadius +\n \" -\" +\n DotRadiusBezier +\n \" -\" +\n DotRadiusBezier +\n \" -\" +\n DotRadius +\n \" 0 -\" +\n DotRadius +\n \" c\"\n );\n stream.push(\n DotRadiusBezier +\n \" -\" +\n DotRadius +\n \" \" +\n DotRadius +\n \" -\" +\n DotRadiusBezier +\n \" \" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\"f\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n YesPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var DotRadius =\n AcroFormAppearance.internal.getWidth(formObject) <=\n AcroFormAppearance.internal.getHeight(formObject)\n ? AcroFormAppearance.internal.getWidth(formObject) / 4\n : AcroFormAppearance.internal.getHeight(formObject) / 4;\n // The Borderpadding...\n DotRadius = Number((DotRadius * 0.9).toFixed(5));\n // Save results for later use; no need to waste\n // processor ticks on doing math\n var k = Number((DotRadius * 2).toFixed(5));\n var kc = Number((k * AcroFormAppearance.internal.Bezier_C).toFixed(5));\n var dc = Number(\n (DotRadius * AcroFormAppearance.internal.Bezier_C).toFixed(5)\n );\n\n stream.push(\"0.749023 g\");\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(k + \" 0 m\");\n stream.push(k + \" \" + kc + \" \" + kc + \" \" + k + \" 0 \" + k + \" c\");\n stream.push(\n \"-\" + kc + \" \" + k + \" -\" + k + \" \" + kc + \" -\" + k + \" 0 c\"\n );\n stream.push(\n \"-\" + k + \" -\" + kc + \" -\" + kc + \" -\" + k + \" 0 -\" + k + \" c\"\n );\n stream.push(kc + \" -\" + k + \" \" + k + \" -\" + kc + \" \" + k + \" 0 c\");\n stream.push(\"f\");\n stream.push(\"Q\");\n stream.push(\"0 g\");\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(DotRadius + \" 0 m\");\n stream.push(\n \"\" +\n DotRadius +\n \" \" +\n dc +\n \" \" +\n dc +\n \" \" +\n DotRadius +\n \" 0 \" +\n DotRadius +\n \" c\"\n );\n stream.push(\n \"-\" +\n dc +\n \" \" +\n DotRadius +\n \" -\" +\n DotRadius +\n \" \" +\n dc +\n \" -\" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\n \"-\" +\n DotRadius +\n \" -\" +\n dc +\n \" -\" +\n dc +\n \" -\" +\n DotRadius +\n \" 0 -\" +\n DotRadius +\n \" c\"\n );\n stream.push(\n dc +\n \" -\" +\n DotRadius +\n \" \" +\n DotRadius +\n \" -\" +\n dc +\n \" \" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\"f\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n OffPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var DotRadius =\n AcroFormAppearance.internal.getWidth(formObject) <=\n AcroFormAppearance.internal.getHeight(formObject)\n ? AcroFormAppearance.internal.getWidth(formObject) / 4\n : AcroFormAppearance.internal.getHeight(formObject) / 4;\n // The Borderpadding...\n DotRadius = Number((DotRadius * 0.9).toFixed(5));\n // Save results for later use; no need to waste\n // processor ticks on doing math\n var k = Number((DotRadius * 2).toFixed(5));\n var kc = Number((k * AcroFormAppearance.internal.Bezier_C).toFixed(5));\n\n stream.push(\"0.749023 g\");\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(k + \" 0 m\");\n stream.push(k + \" \" + kc + \" \" + kc + \" \" + k + \" 0 \" + k + \" c\");\n stream.push(\n \"-\" + kc + \" \" + k + \" -\" + k + \" \" + kc + \" -\" + k + \" 0 c\"\n );\n stream.push(\n \"-\" + k + \" -\" + kc + \" -\" + kc + \" -\" + k + \" 0 -\" + k + \" c\"\n );\n stream.push(kc + \" -\" + k + \" \" + k + \" -\" + kc + \" \" + k + \" 0 c\");\n stream.push(\"f\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n }\n },\n\n Cross: {\n /**\n * Creates the Actual AppearanceDictionary-References\n *\n * @param {string} name\n * @returns {Object}\n * @ignore\n */\n createAppearanceStream: function(name) {\n var appearanceStreamContent = {\n D: {\n Off: AcroFormAppearance.RadioButton.Cross.OffPushDown\n },\n N: {}\n };\n appearanceStreamContent.N[name] =\n AcroFormAppearance.RadioButton.Cross.YesNormal;\n appearanceStreamContent.D[name] =\n AcroFormAppearance.RadioButton.Cross.YesPushDown;\n return appearanceStreamContent;\n },\n getCA: function() {\n return \"8\";\n },\n\n YesNormal: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var cross = AcroFormAppearance.internal.calculateCross(formObject);\n stream.push(\"q\");\n stream.push(\n \"1 1 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject) - 2) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject) - 2) +\n \" re\"\n );\n stream.push(\"W\");\n stream.push(\"n\");\n stream.push(f2(cross.x1.x) + \" \" + f2(cross.x1.y) + \" m\");\n stream.push(f2(cross.x2.x) + \" \" + f2(cross.x2.y) + \" l\");\n stream.push(f2(cross.x4.x) + \" \" + f2(cross.x4.y) + \" m\");\n stream.push(f2(cross.x3.x) + \" \" + f2(cross.x3.y) + \" l\");\n stream.push(\"s\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n YesPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var cross = AcroFormAppearance.internal.calculateCross(formObject);\n var stream = [];\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n stream.push(\"q\");\n stream.push(\n \"1 1 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject) - 2) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject) - 2) +\n \" re\"\n );\n stream.push(\"W\");\n stream.push(\"n\");\n stream.push(f2(cross.x1.x) + \" \" + f2(cross.x1.y) + \" m\");\n stream.push(f2(cross.x2.x) + \" \" + f2(cross.x2.y) + \" l\");\n stream.push(f2(cross.x4.x) + \" \" + f2(cross.x4.y) + \" m\");\n stream.push(f2(cross.x3.x) + \" \" + f2(cross.x3.y) + \" l\");\n stream.push(\"s\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n OffPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n }\n }\n },\n\n /**\n * Returns the standard Appearance\n *\n * @returns {AcroFormXObject}\n */\n createDefaultAppearanceStream: function(formObject) {\n // Set Helvetica to Standard Font (size: auto)\n // Color: Black\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n var encodedColor = formObject.scope.__private__.encodeColorString(\n formObject.color\n );\n var fontSize = formObject.fontSize;\n var result = \"/\" + fontKey + \" \" + fontSize + \" Tf \" + encodedColor;\n return result;\n }\n};\n\nAcroFormAppearance.internal = {\n Bezier_C: 0.551915024494,\n\n calculateCross: function(formObject) {\n var width = AcroFormAppearance.internal.getWidth(formObject);\n var height = AcroFormAppearance.internal.getHeight(formObject);\n var a = Math.min(width, height);\n\n var cross = {\n x1: {\n // upperLeft\n x: (width - a) / 2,\n y: (height - a) / 2 + a // height - borderPadding\n },\n x2: {\n // lowerRight\n x: (width - a) / 2 + a,\n y: (height - a) / 2 // borderPadding\n },\n x3: {\n // lowerLeft\n x: (width - a) / 2,\n y: (height - a) / 2 // borderPadding\n },\n x4: {\n // upperRight\n x: (width - a) / 2 + a,\n y: (height - a) / 2 + a // height - borderPadding\n }\n };\n\n return cross;\n }\n};\nAcroFormAppearance.internal.getWidth = function(formObject) {\n var result = 0;\n if (typeof formObject === \"object\") {\n result = scale(formObject.Rect[2]);\n }\n return result;\n};\nAcroFormAppearance.internal.getHeight = function(formObject) {\n var result = 0;\n if (typeof formObject === \"object\") {\n result = scale(formObject.Rect[3]);\n }\n return result;\n};\n\n// Public:\n\n/**\n * Add an AcroForm-Field to the jsPDF-instance\n *\n * @name addField\n * @function\n * @instance\n * @param {Object} fieldObject\n * @returns {jsPDF}\n */\nvar addField = (jsPDFAPI.addField = function(fieldObject) {\n initializeAcroForm(this, fieldObject);\n\n if (fieldObject instanceof AcroFormField) {\n putForm(fieldObject);\n } else {\n throw new Error(\"Invalid argument passed to jsPDF.addField.\");\n }\n fieldObject.page = fieldObject.scope.internal.getCurrentPageInfo().pageNumber;\n return this;\n});\n\njsPDFAPI.AcroFormChoiceField = AcroFormChoiceField;\njsPDFAPI.AcroFormListBox = AcroFormListBox;\njsPDFAPI.AcroFormComboBox = AcroFormComboBox;\njsPDFAPI.AcroFormEditBox = AcroFormEditBox;\njsPDFAPI.AcroFormButton = AcroFormButton;\njsPDFAPI.AcroFormPushButton = AcroFormPushButton;\njsPDFAPI.AcroFormRadioButton = AcroFormRadioButton;\njsPDFAPI.AcroFormCheckBox = AcroFormCheckBox;\njsPDFAPI.AcroFormTextField = AcroFormTextField;\njsPDFAPI.AcroFormPasswordField = AcroFormPasswordField;\njsPDFAPI.AcroFormAppearance = AcroFormAppearance;\n\njsPDFAPI.AcroForm = {\n ChoiceField: AcroFormChoiceField,\n ListBox: AcroFormListBox,\n ComboBox: AcroFormComboBox,\n EditBox: AcroFormEditBox,\n Button: AcroFormButton,\n PushButton: AcroFormPushButton,\n RadioButton: AcroFormRadioButton,\n CheckBox: AcroFormCheckBox,\n TextField: AcroFormTextField,\n PasswordField: AcroFormPasswordField,\n Appearance: AcroFormAppearance\n};\n\njsPDF.AcroForm = {\n ChoiceField: AcroFormChoiceField,\n ListBox: AcroFormListBox,\n ComboBox: AcroFormComboBox,\n EditBox: AcroFormEditBox,\n Button: AcroFormButton,\n PushButton: AcroFormPushButton,\n RadioButton: AcroFormRadioButton,\n CheckBox: AcroFormCheckBox,\n TextField: AcroFormTextField,\n PasswordField: AcroFormPasswordField,\n Appearance: AcroFormAppearance\n};\n\nvar AcroForm = jsPDF.AcroForm;\n\nexport {\n AcroForm,\n AcroFormChoiceField,\n AcroFormListBox,\n AcroFormComboBox,\n AcroFormEditBox,\n AcroFormButton,\n AcroFormPushButton,\n AcroFormRadioButton,\n AcroFormCheckBox,\n AcroFormTextField,\n AcroFormPasswordField,\n AcroFormAppearance\n};\n","/** @license\n * jsPDF addImage plugin\n * Copyright (c) 2012 Jason Siefken, https://github.com/siefkenj/\n * 2013 Chris Dowling, https://github.com/gingerchris\n * 2013 Trinh Ho, https://github.com/ineedfat\n * 2013 Edwin Alejandro Perez, https://github.com/eaparango\n * 2013 Norah Smith, https://github.com/burnburnrocket\n * 2014 Diego Casorran, https://github.com/diegocr\n * 2014 James Robb, https://github.com/jamesbrobb\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n/**\n * @name addImage\n * @module\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { atob, btoa } from \"../libs/AtobBtoa.js\";\n\n(function(jsPDFAPI) {\n \"use strict\";\n\n var namespace = \"addImage_\";\n jsPDFAPI.__addimage__ = {};\n\n var UNKNOWN = \"UNKNOWN\";\n\n // Heuristic selection of a good batch for large array .apply. Not limiting make the call overflow.\n // With too small batch iteration will be slow as more calls are made,\n // higher values cause larger and slower garbage collection.\n var ARRAY_APPLY_BATCH = 8192;\n\n var imageFileTypeHeaders = {\n PNG: [[0x89, 0x50, 0x4e, 0x47]],\n TIFF: [\n [0x4d, 0x4d, 0x00, 0x2a], //Motorola\n [0x49, 0x49, 0x2a, 0x00] //Intel\n ],\n JPEG: [\n [\n 0xff,\n 0xd8,\n 0xff,\n 0xe0,\n undefined,\n undefined,\n 0x4a,\n 0x46,\n 0x49,\n 0x46,\n 0x00\n ], //JFIF\n [\n 0xff,\n 0xd8,\n 0xff,\n 0xe1,\n undefined,\n undefined,\n 0x45,\n 0x78,\n 0x69,\n 0x66,\n 0x00,\n 0x00\n ], //Exif\n [0xff, 0xd8, 0xff, 0xdb], //JPEG RAW\n [0xff, 0xd8, 0xff, 0xee] //EXIF RAW\n ],\n JPEG2000: [[0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20]],\n GIF87a: [[0x47, 0x49, 0x46, 0x38, 0x37, 0x61]],\n GIF89a: [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61]],\n WEBP: [\n [\n 0x52,\n 0x49,\n 0x46,\n 0x46,\n undefined,\n undefined,\n undefined,\n undefined,\n 0x57,\n 0x45,\n 0x42,\n 0x50\n ]\n ],\n BMP: [\n [0x42, 0x4d], //BM - Windows 3.1x, 95, NT, ... etc.\n [0x42, 0x41], //BA - OS/2 struct bitmap array\n [0x43, 0x49], //CI - OS/2 struct color icon\n [0x43, 0x50], //CP - OS/2 const color pointer\n [0x49, 0x43], //IC - OS/2 struct icon\n [0x50, 0x54] //PT - OS/2 pointer\n ]\n };\n\n /**\n * Recognize filetype of Image by magic-bytes\n *\n * https://en.wikipedia.org/wiki/List_of_file_signatures\n *\n * @name getImageFileTypeByImageData\n * @public\n * @function\n * @param {string|arraybuffer} imageData imageData as binary String or arraybuffer\n * @param {string} format format of file if filetype-recognition fails, e.g. 'JPEG'\n *\n * @returns {string} filetype of Image\n */\n var getImageFileTypeByImageData = (jsPDFAPI.__addimage__.getImageFileTypeByImageData = function(\n imageData,\n fallbackFormat\n ) {\n fallbackFormat = fallbackFormat || UNKNOWN;\n var i;\n var j;\n var result = UNKNOWN;\n var headerSchemata;\n var compareResult;\n var fileType;\n\n if (\n fallbackFormat === \"RGBA\" ||\n (imageData.data !== undefined &&\n imageData.data instanceof Uint8ClampedArray &&\n \"height\" in imageData &&\n \"width\" in imageData)\n ) {\n return \"RGBA\";\n }\n\n if (isArrayBufferView(imageData)) {\n for (fileType in imageFileTypeHeaders) {\n headerSchemata = imageFileTypeHeaders[fileType];\n for (i = 0; i < headerSchemata.length; i += 1) {\n compareResult = true;\n for (j = 0; j < headerSchemata[i].length; j += 1) {\n if (headerSchemata[i][j] === undefined) {\n continue;\n }\n if (headerSchemata[i][j] !== imageData[j]) {\n compareResult = false;\n break;\n }\n }\n if (compareResult === true) {\n result = fileType;\n break;\n }\n }\n }\n } else {\n for (fileType in imageFileTypeHeaders) {\n headerSchemata = imageFileTypeHeaders[fileType];\n for (i = 0; i < headerSchemata.length; i += 1) {\n compareResult = true;\n for (j = 0; j < headerSchemata[i].length; j += 1) {\n if (headerSchemata[i][j] === undefined) {\n continue;\n }\n if (headerSchemata[i][j] !== imageData.charCodeAt(j)) {\n compareResult = false;\n break;\n }\n }\n if (compareResult === true) {\n result = fileType;\n break;\n }\n }\n }\n }\n\n if (result === UNKNOWN && fallbackFormat !== UNKNOWN) {\n result = fallbackFormat;\n }\n return result;\n });\n\n // Image functionality ported from pdf.js\n var putImage = function(image) {\n var out = this.internal.write;\n var putStream = this.internal.putStream;\n var getFilters = this.internal.getFilters;\n\n var filter = getFilters();\n while (filter.indexOf(\"FlateEncode\") !== -1) {\n filter.splice(filter.indexOf(\"FlateEncode\"), 1);\n }\n\n image.objectId = this.internal.newObject();\n\n var additionalKeyValues = [];\n additionalKeyValues.push({ key: \"Type\", value: \"/XObject\" });\n additionalKeyValues.push({ key: \"Subtype\", value: \"/Image\" });\n additionalKeyValues.push({ key: \"Width\", value: image.width });\n additionalKeyValues.push({ key: \"Height\", value: image.height });\n\n if (image.colorSpace === color_spaces.INDEXED) {\n additionalKeyValues.push({\n key: \"ColorSpace\",\n value:\n \"[/Indexed /DeviceRGB \" +\n // if an indexed png defines more than one colour with transparency, we've created a sMask\n (image.palette.length / 3 - 1) +\n \" \" +\n (\"sMask\" in image && typeof image.sMask !== \"undefined\"\n ? image.objectId + 2\n : image.objectId + 1) +\n \" 0 R]\"\n });\n } else {\n additionalKeyValues.push({\n key: \"ColorSpace\",\n value: \"/\" + image.colorSpace\n });\n if (image.colorSpace === color_spaces.DEVICE_CMYK) {\n additionalKeyValues.push({ key: \"Decode\", value: \"[1 0 1 0 1 0 1 0]\" });\n }\n }\n additionalKeyValues.push({\n key: \"BitsPerComponent\",\n value: image.bitsPerComponent\n });\n if (\n \"decodeParameters\" in image &&\n typeof image.decodeParameters !== \"undefined\"\n ) {\n additionalKeyValues.push({\n key: \"DecodeParms\",\n value: \"<<\" + image.decodeParameters + \">>\"\n });\n }\n if (\"transparency\" in image && Array.isArray(image.transparency)) {\n var transparency = \"\",\n i = 0,\n len = image.transparency.length;\n for (; i < len; i++)\n transparency +=\n image.transparency[i] + \" \" + image.transparency[i] + \" \";\n\n additionalKeyValues.push({\n key: \"Mask\",\n value: \"[\" + transparency + \"]\"\n });\n }\n if (typeof image.sMask !== \"undefined\") {\n additionalKeyValues.push({\n key: \"SMask\",\n value: image.objectId + 1 + \" 0 R\"\n });\n }\n\n var alreadyAppliedFilters =\n typeof image.filter !== \"undefined\" ? [\"/\" + image.filter] : undefined;\n\n putStream({\n data: image.data,\n additionalKeyValues: additionalKeyValues,\n alreadyAppliedFilters: alreadyAppliedFilters,\n objectId: image.objectId\n });\n\n out(\"endobj\");\n\n // Soft mask\n if (\"sMask\" in image && typeof image.sMask !== \"undefined\") {\n var decodeParameters =\n \"/Predictor \" +\n image.predictor +\n \" /Colors 1 /BitsPerComponent \" +\n image.bitsPerComponent +\n \" /Columns \" +\n image.width;\n var sMask = {\n width: image.width,\n height: image.height,\n colorSpace: \"DeviceGray\",\n bitsPerComponent: image.bitsPerComponent,\n decodeParameters: decodeParameters,\n data: image.sMask\n };\n if (\"filter\" in image) {\n sMask.filter = image.filter;\n }\n putImage.call(this, sMask);\n }\n\n //Palette\n if (image.colorSpace === color_spaces.INDEXED) {\n var objId = this.internal.newObject();\n //out('<< /Filter / ' + img['f'] +' /Length ' + img['pal'].length + '>>');\n //putStream(zlib.compress(img['pal']));\n putStream({\n data: arrayBufferToBinaryString(new Uint8Array(image.palette)),\n objectId: objId\n });\n out(\"endobj\");\n }\n };\n var putResourcesCallback = function() {\n var images = this.internal.collections[namespace + \"images\"];\n for (var i in images) {\n putImage.call(this, images[i]);\n }\n };\n var putXObjectsDictCallback = function() {\n var images = this.internal.collections[namespace + \"images\"],\n out = this.internal.write,\n image;\n for (var i in images) {\n image = images[i];\n out(\"/I\" + image.index, image.objectId, \"0\", \"R\");\n }\n };\n\n var checkCompressValue = function(value) {\n if (value && typeof value === \"string\") value = value.toUpperCase();\n return value in jsPDFAPI.image_compression ? value : image_compression.NONE;\n };\n\n var initialize = function() {\n if (!this.internal.collections[namespace + \"images\"]) {\n this.internal.collections[namespace + \"images\"] = {};\n this.internal.events.subscribe(\"putResources\", putResourcesCallback);\n this.internal.events.subscribe(\"putXobjectDict\", putXObjectsDictCallback);\n }\n };\n\n var getImages = function() {\n var images = this.internal.collections[namespace + \"images\"];\n initialize.call(this);\n return images;\n };\n var getImageIndex = function() {\n return Object.keys(this.internal.collections[namespace + \"images\"]).length;\n };\n var notDefined = function(value) {\n return typeof value === \"undefined\" || value === null || value.length === 0;\n };\n var generateAliasFromImageData = function(imageData) {\n if (typeof imageData === \"string\" || isArrayBufferView(imageData)) {\n return sHashCode(imageData);\n } else if (isArrayBufferView(imageData.data)) {\n return sHashCode(imageData.data);\n }\n\n return null;\n };\n\n var isImageTypeSupported = function(type) {\n return typeof jsPDFAPI[\"process\" + type.toUpperCase()] === \"function\";\n };\n\n var isDOMElement = function(object) {\n return typeof object === \"object\" && object.nodeType === 1;\n };\n\n var getImageDataFromElement = function(element, format) {\n //if element is an image which uses data url definition, just return the dataurl\n if (element.nodeName === \"IMG\" && element.hasAttribute(\"src\")) {\n var src = \"\" + element.getAttribute(\"src\");\n\n //is base64 encoded dataUrl, directly process it\n if (src.indexOf(\"data:image/\") === 0) {\n return atob(\n unescape(src)\n .split(\"base64,\")\n .pop()\n );\n }\n\n //it is probably an url, try to load it\n var tmpImageData = jsPDFAPI.loadFile(src, true);\n if (tmpImageData !== undefined) {\n return tmpImageData;\n }\n }\n\n if (element.nodeName === \"CANVAS\") {\n if (element.width === 0 || element.height === 0) {\n throw new Error(\n \"Given canvas must have data. Canvas width: \" +\n element.width +\n \", height: \" +\n element.height\n );\n }\n var mimeType;\n switch (format) {\n case \"PNG\":\n mimeType = \"image/png\";\n break;\n case \"WEBP\":\n mimeType = \"image/webp\";\n break;\n case \"JPEG\":\n case \"JPG\":\n default:\n mimeType = \"image/jpeg\";\n break;\n }\n return atob(\n element\n .toDataURL(mimeType, 1.0)\n .split(\"base64,\")\n .pop()\n );\n }\n };\n\n var checkImagesForAlias = function(alias) {\n var images = this.internal.collections[namespace + \"images\"];\n if (images) {\n for (var e in images) {\n if (alias === images[e].alias) {\n return images[e];\n }\n }\n }\n };\n\n var determineWidthAndHeight = function(width, height, image) {\n if (!width && !height) {\n width = -96;\n height = -96;\n }\n if (width < 0) {\n width = (-1 * image.width * 72) / width / this.internal.scaleFactor;\n }\n if (height < 0) {\n height = (-1 * image.height * 72) / height / this.internal.scaleFactor;\n }\n if (width === 0) {\n width = (height * image.width) / image.height;\n }\n if (height === 0) {\n height = (width * image.height) / image.width;\n }\n\n return [width, height];\n };\n\n var writeImageToPDF = function(x, y, width, height, image, rotation) {\n var dims = determineWidthAndHeight.call(this, width, height, image),\n coord = this.internal.getCoordinateString,\n vcoord = this.internal.getVerticalCoordinateString;\n\n var images = getImages.call(this);\n\n width = dims[0];\n height = dims[1];\n images[image.index] = image;\n\n if (rotation) {\n rotation *= Math.PI / 180;\n var c = Math.cos(rotation);\n var s = Math.sin(rotation);\n //like in pdf Reference do it 4 digits instead of 2\n var f4 = function(number) {\n return number.toFixed(4);\n };\n var rotationTransformationMatrix = [\n f4(c),\n f4(s),\n f4(s * -1),\n f4(c),\n 0,\n 0,\n \"cm\"\n ];\n }\n this.internal.write(\"q\"); //Save graphics state\n if (rotation) {\n this.internal.write(\n [1, \"0\", \"0\", 1, coord(x), vcoord(y + height), \"cm\"].join(\" \")\n ); //Translate\n this.internal.write(rotationTransformationMatrix.join(\" \")); //Rotate\n this.internal.write(\n [coord(width), \"0\", \"0\", coord(height), \"0\", \"0\", \"cm\"].join(\" \")\n ); //Scale\n } else {\n this.internal.write(\n [\n coord(width),\n \"0\",\n \"0\",\n coord(height),\n coord(x),\n vcoord(y + height),\n \"cm\"\n ].join(\" \")\n ); //Translate and Scale\n }\n\n if (this.isAdvancedAPI()) {\n // draw image bottom up when in \"advanced\" API mode\n this.internal.write([1, 0, 0, -1, 0, 0, \"cm\"].join(\" \"));\n }\n\n this.internal.write(\"/I\" + image.index + \" Do\"); //Paint Image\n this.internal.write(\"Q\"); //Restore graphics state\n };\n\n /**\n * COLOR SPACES\n */\n var color_spaces = (jsPDFAPI.color_spaces = {\n DEVICE_RGB: \"DeviceRGB\",\n DEVICE_GRAY: \"DeviceGray\",\n DEVICE_CMYK: \"DeviceCMYK\",\n CAL_GREY: \"CalGray\",\n CAL_RGB: \"CalRGB\",\n LAB: \"Lab\",\n ICC_BASED: \"ICCBased\",\n INDEXED: \"Indexed\",\n PATTERN: \"Pattern\",\n SEPARATION: \"Separation\",\n DEVICE_N: \"DeviceN\"\n });\n\n /**\n * DECODE METHODS\n */\n jsPDFAPI.decode = {\n DCT_DECODE: \"DCTDecode\",\n FLATE_DECODE: \"FlateDecode\",\n LZW_DECODE: \"LZWDecode\",\n JPX_DECODE: \"JPXDecode\",\n JBIG2_DECODE: \"JBIG2Decode\",\n ASCII85_DECODE: \"ASCII85Decode\",\n ASCII_HEX_DECODE: \"ASCIIHexDecode\",\n RUN_LENGTH_DECODE: \"RunLengthDecode\",\n CCITT_FAX_DECODE: \"CCITTFaxDecode\"\n };\n\n /**\n * IMAGE COMPRESSION TYPES\n */\n var image_compression = (jsPDFAPI.image_compression = {\n NONE: \"NONE\",\n FAST: \"FAST\",\n MEDIUM: \"MEDIUM\",\n SLOW: \"SLOW\"\n });\n\n /**\n * @name sHashCode\n * @function\n * @param {string} data\n * @returns {string}\n */\n var sHashCode = (jsPDFAPI.__addimage__.sHashCode = function(data) {\n var hash = 0,\n i,\n len;\n\n if (typeof data === \"string\") {\n len = data.length;\n for (i = 0; i < len; i++) {\n hash = (hash << 5) - hash + data.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n } else if (isArrayBufferView(data)) {\n len = data.byteLength / 2;\n for (i = 0; i < len; i++) {\n hash = (hash << 5) - hash + data[i];\n hash |= 0; // Convert to 32bit integer\n }\n }\n return hash;\n });\n\n /**\n * Validates if given String is a valid Base64-String\n *\n * @name validateStringAsBase64\n * @public\n * @function\n * @param {String} possible Base64-String\n *\n * @returns {boolean}\n */\n var validateStringAsBase64 = (jsPDFAPI.__addimage__.validateStringAsBase64 = function(\n possibleBase64String\n ) {\n possibleBase64String = possibleBase64String || \"\";\n possibleBase64String.toString().trim();\n\n var result = true;\n\n if (possibleBase64String.length === 0) {\n result = false;\n }\n\n if (possibleBase64String.length % 4 !== 0) {\n result = false;\n }\n\n if (\n /^[A-Za-z0-9+/]+$/.test(\n possibleBase64String.substr(0, possibleBase64String.length - 2)\n ) === false\n ) {\n result = false;\n }\n\n if (\n /^[A-Za-z0-9/][A-Za-z0-9+/]|[A-Za-z0-9+/]=|==$/.test(\n possibleBase64String.substr(-2)\n ) === false\n ) {\n result = false;\n }\n return result;\n });\n\n /**\n * Strips out and returns info from a valid base64 data URI\n *\n * @name extractImageFromDataUrl\n * @function\n * @param {string} dataUrl a valid data URI of format 'data:[<MIME-type>][;base64],<data>'\n * @returns {Array}an Array containing the following\n * [0] the complete data URI\n * [1] <MIME-type>\n * [2] format - the second part of the mime-type i.e 'png' in 'image/png'\n * [4] <data>\n */\n var extractImageFromDataUrl = (jsPDFAPI.__addimage__.extractImageFromDataUrl = function(\n dataUrl\n ) {\n dataUrl = dataUrl || \"\";\n var dataUrlParts = dataUrl.split(\"base64,\");\n var result = null;\n\n if (dataUrlParts.length === 2) {\n var extractedInfo = /^data:(\\w*\\/\\w*);*(charset=(?!charset=)[\\w=-]*)*;*$/.exec(\n dataUrlParts[0]\n );\n if (Array.isArray(extractedInfo)) {\n result = {\n mimeType: extractedInfo[1],\n charset: extractedInfo[2],\n data: dataUrlParts[1]\n };\n }\n }\n return result;\n });\n\n /**\n * Check to see if ArrayBuffer is supported\n *\n * @name supportsArrayBuffer\n * @function\n * @returns {boolean}\n */\n var supportsArrayBuffer = (jsPDFAPI.__addimage__.supportsArrayBuffer = function() {\n return (\n typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\"\n );\n });\n\n /**\n * Tests supplied object to determine if ArrayBuffer\n *\n * @name isArrayBuffer\n * @function\n * @param {Object} object an Object\n *\n * @returns {boolean}\n */\n jsPDFAPI.__addimage__.isArrayBuffer = function(object) {\n return supportsArrayBuffer() && object instanceof ArrayBuffer;\n };\n\n /**\n * Tests supplied object to determine if it implements the ArrayBufferView (TypedArray) interface\n *\n * @name isArrayBufferView\n * @function\n * @param {Object} object an Object\n * @returns {boolean}\n */\n var isArrayBufferView = (jsPDFAPI.__addimage__.isArrayBufferView = function(\n object\n ) {\n return (\n supportsArrayBuffer() &&\n typeof Uint32Array !== \"undefined\" &&\n (object instanceof Int8Array ||\n object instanceof Uint8Array ||\n (typeof Uint8ClampedArray !== \"undefined\" &&\n object instanceof Uint8ClampedArray) ||\n object instanceof Int16Array ||\n object instanceof Uint16Array ||\n object instanceof Int32Array ||\n object instanceof Uint32Array ||\n object instanceof Float32Array ||\n object instanceof Float64Array)\n );\n });\n\n /**\n * Convert Binary String to ArrayBuffer\n *\n * @name binaryStringToUint8Array\n * @public\n * @function\n * @param {string} BinaryString with ImageData\n * @returns {Uint8Array}\n */\n var binaryStringToUint8Array = (jsPDFAPI.__addimage__.binaryStringToUint8Array = function(\n binary_string\n ) {\n var len = binary_string.length;\n var bytes = new Uint8Array(len);\n for (var i = 0; i < len; i++) {\n bytes[i] = binary_string.charCodeAt(i);\n }\n return bytes;\n });\n\n /**\n * Convert the Buffer to a Binary String\n *\n * @name arrayBufferToBinaryString\n * @public\n * @function\n * @param {ArrayBuffer|ArrayBufferView} ArrayBuffer buffer or bufferView with ImageData\n *\n * @returns {String}\n */\n var arrayBufferToBinaryString = (jsPDFAPI.__addimage__.arrayBufferToBinaryString = function(\n buffer\n ) {\n var out = \"\";\n // There are calls with both ArrayBuffer and already converted Uint8Array or other BufferView.\n // Do not copy the array if input is already an array.\n var buf = isArrayBufferView(buffer) ? buffer : new Uint8Array(buffer);\n for (var i = 0; i < buf.length; i += ARRAY_APPLY_BATCH) {\n // Limit the amount of characters being parsed to prevent overflow.\n // Note that while TextDecoder would be faster, it does not have the same\n // functionality as fromCharCode with any provided encodings as of 3/2021.\n out += String.fromCharCode.apply(\n null,\n buf.subarray(i, i + ARRAY_APPLY_BATCH)\n );\n }\n return out;\n });\n\n /**\n * Possible parameter for addImage, an RGBA buffer with size.\n *\n * @typedef {Object} RGBAData\n * @property {Uint8ClampedArray} data - Single dimensional array of RGBA values. For example from canvas getImageData.\n * @property {number} width - Image width as the data does not carry this information in itself.\n * @property {number} height - Image height as the data does not carry this information in itself.\n */\n\n /**\n * Adds an Image to the PDF.\n *\n * @name addImage\n * @public\n * @function\n * @param {string|HTMLImageElement|HTMLCanvasElement|Uint8Array|RGBAData} imageData imageData as base64 encoded DataUrl or Image-HTMLElement or Canvas-HTMLElement or object containing RGBA array (like output from canvas.getImageData).\n * @param {string} format format of file if filetype-recognition fails or in case of a Canvas-Element needs to be specified (default for Canvas is JPEG), e.g. 'JPEG', 'PNG', 'WEBP'\n * @param {number} x x Coordinate (in units declared at inception of PDF document) against left edge of the page\n * @param {number} y y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n * @param {number} width width of the image (in units declared at inception of PDF document)\n * @param {number} height height of the Image (in units declared at inception of PDF document)\n * @param {string} alias alias of the image (if used multiple times)\n * @param {string} compression compression of the generated JPEG, can have the values 'NONE', 'FAST', 'MEDIUM' and 'SLOW'\n * @param {number} rotation rotation of the image in degrees (0-359)\n *\n * @returns jsPDF\n */\n jsPDFAPI.addImage = function() {\n var imageData, format, x, y, w, h, alias, compression, rotation;\n\n imageData = arguments[0];\n if (typeof arguments[1] === \"number\") {\n format = UNKNOWN;\n x = arguments[1];\n y = arguments[2];\n w = arguments[3];\n h = arguments[4];\n alias = arguments[5];\n compression = arguments[6];\n rotation = arguments[7];\n } else {\n format = arguments[1];\n x = arguments[2];\n y = arguments[3];\n w = arguments[4];\n h = arguments[5];\n alias = arguments[6];\n compression = arguments[7];\n rotation = arguments[8];\n }\n\n if (\n typeof imageData === \"object\" &&\n !isDOMElement(imageData) &&\n \"imageData\" in imageData\n ) {\n var options = imageData;\n\n imageData = options.imageData;\n format = options.format || format || UNKNOWN;\n x = options.x || x || 0;\n y = options.y || y || 0;\n w = options.w || options.width || w;\n h = options.h || options.height || h;\n alias = options.alias || alias;\n compression = options.compression || compression;\n rotation = options.rotation || options.angle || rotation;\n }\n\n //If compression is not explicitly set, determine if we should use compression\n var filter = this.internal.getFilters();\n if (compression === undefined && filter.indexOf(\"FlateEncode\") !== -1) {\n compression = \"SLOW\";\n }\n\n if (isNaN(x) || isNaN(y)) {\n throw new Error(\"Invalid coordinates passed to jsPDF.addImage\");\n }\n\n initialize.call(this);\n\n var image = processImageData.call(\n this,\n imageData,\n format,\n alias,\n compression\n );\n\n writeImageToPDF.call(this, x, y, w, h, image, rotation);\n\n return this;\n };\n\n var processImageData = function(imageData, format, alias, compression) {\n var result, dataAsBinaryString;\n\n if (\n typeof imageData === \"string\" &&\n getImageFileTypeByImageData(imageData) === UNKNOWN\n ) {\n imageData = unescape(imageData);\n var tmpImageData = convertBase64ToBinaryString(imageData, false);\n\n if (tmpImageData !== \"\") {\n imageData = tmpImageData;\n } else {\n tmpImageData = jsPDFAPI.loadFile(imageData, true);\n if (tmpImageData !== undefined) {\n imageData = tmpImageData;\n }\n }\n }\n\n if (isDOMElement(imageData)) {\n imageData = getImageDataFromElement(imageData, format);\n }\n\n format = getImageFileTypeByImageData(imageData, format);\n if (!isImageTypeSupported(format)) {\n throw new Error(\n \"addImage does not support files of type '\" +\n format +\n \"', please ensure that a plugin for '\" +\n format +\n \"' support is added.\"\n );\n }\n\n // now do the heavy lifting\n\n if (notDefined(alias)) {\n alias = generateAliasFromImageData(imageData);\n }\n result = checkImagesForAlias.call(this, alias);\n\n if (!result) {\n if (supportsArrayBuffer()) {\n // no need to convert if imageData is already uint8array\n if (!(imageData instanceof Uint8Array) && format !== \"RGBA\") {\n dataAsBinaryString = imageData;\n imageData = binaryStringToUint8Array(imageData);\n }\n }\n\n result = this[\"process\" + format.toUpperCase()](\n imageData,\n getImageIndex.call(this),\n alias,\n checkCompressValue(compression),\n dataAsBinaryString\n );\n }\n\n if (!result) {\n throw new Error(\"An unknown error occurred whilst processing the image.\");\n }\n return result;\n };\n\n /**\n * @name convertBase64ToBinaryString\n * @function\n * @param {string} stringData\n * @returns {string} binary string\n */\n var convertBase64ToBinaryString = (jsPDFAPI.__addimage__.convertBase64ToBinaryString = function(\n stringData,\n throwError\n ) {\n throwError = typeof throwError === \"boolean\" ? throwError : true;\n var base64Info;\n var imageData = \"\";\n var rawData;\n\n if (typeof stringData === \"string\") {\n base64Info = extractImageFromDataUrl(stringData);\n rawData = base64Info !== null ? base64Info.data : stringData;\n\n try {\n imageData = atob(rawData);\n } catch (e) {\n if (throwError) {\n if (!validateStringAsBase64(rawData)) {\n throw new Error(\n \"Supplied Data is not a valid base64-String jsPDF.convertBase64ToBinaryString \"\n );\n } else {\n throw new Error(\n \"atob-Error in jsPDF.convertBase64ToBinaryString \" + e.message\n );\n }\n }\n }\n }\n return imageData;\n });\n\n /**\n * @name getImageProperties\n * @function\n * @param {Object} imageData\n * @returns {Object}\n */\n jsPDFAPI.getImageProperties = function(imageData) {\n var image;\n var tmpImageData = \"\";\n var format;\n\n if (isDOMElement(imageData)) {\n imageData = getImageDataFromElement(imageData);\n }\n\n if (\n typeof imageData === \"string\" &&\n getImageFileTypeByImageData(imageData) === UNKNOWN\n ) {\n tmpImageData = convertBase64ToBinaryString(imageData, false);\n\n if (tmpImageData === \"\") {\n tmpImageData = jsPDFAPI.loadFile(imageData) || \"\";\n }\n imageData = tmpImageData;\n }\n\n format = getImageFileTypeByImageData(imageData);\n if (!isImageTypeSupported(format)) {\n throw new Error(\n \"addImage does not support files of type '\" +\n format +\n \"', please ensure that a plugin for '\" +\n format +\n \"' support is added.\"\n );\n }\n\n if (supportsArrayBuffer() && !(imageData instanceof Uint8Array)) {\n imageData = binaryStringToUint8Array(imageData);\n }\n\n image = this[\"process\" + format.toUpperCase()](imageData);\n\n if (!image) {\n throw new Error(\"An unknown error occurred whilst processing the image\");\n }\n\n image.fileType = format;\n\n return image;\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF Annotations PlugIn\n *\n * There are many types of annotations in a PDF document. Annotations are placed\n * on a page at a particular location. They are not 'attached' to an object.\n * <br />\n * This plugin current supports <br />\n * <li> Goto Page (set pageNumber and top in options)\n * <li> Goto Name (set name and top in options)\n * <li> Goto URL (set url in options)\n * <p>\n * \tThe destination magnification factor can also be specified when goto is a page number or a named destination. (see documentation below)\n * (set magFactor in options). XYZ is the default.\n * </p>\n * <p>\n * Links, Text, Popup, and FreeText are supported.\n * </p>\n * <p>\n * Options In PDF spec Not Implemented Yet\n * <li> link border\n * <li> named target\n * <li> page coordinates\n * <li> destination page scaling and layout\n * <li> actions other than URL and GotoPage\n * <li> background / hover actions\n * </p>\n * @name annotations\n * @module\n */\n\n/*\n Destination Magnification Factors\n See PDF 1.3 Page 386 for meanings and options\n\n [supported]\n\tXYZ (options; left top zoom)\n\tFit (no options)\n\tFitH (options: top)\n\tFitV (options: left)\n\n\t[not supported]\n\tFitR\n\tFitB\n\tFitBH\n\tFitBV\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n(function(jsPDFAPI) {\n \"use strict\";\n\n var notEmpty = function(obj) {\n if (typeof obj != \"undefined\") {\n if (obj != \"\") {\n return true;\n }\n }\n };\n\n jsPDF.API.events.push([\n \"addPage\",\n function(addPageData) {\n var pageInfo = this.internal.getPageInfo(addPageData.pageNumber);\n pageInfo.pageContext.annotations = [];\n }\n ]);\n\n jsPDFAPI.events.push([\n \"putPage\",\n function(putPageData) {\n var getHorizontalCoordinateString = this.internal.getCoordinateString;\n var getVerticalCoordinateString = this.internal\n .getVerticalCoordinateString;\n var pageInfo = this.internal.getPageInfoByObjId(putPageData.objId);\n var pageAnnos = putPageData.pageContext.annotations;\n\n var anno, rect, line;\n var found = false;\n for (var a = 0; a < pageAnnos.length && !found; a++) {\n anno = pageAnnos[a];\n switch (anno.type) {\n case \"link\":\n if (\n notEmpty(anno.options.url) ||\n notEmpty(anno.options.pageNumber)\n ) {\n found = true;\n }\n break;\n case \"reference\":\n case \"text\":\n case \"freetext\":\n found = true;\n break;\n }\n }\n if (found == false) {\n return;\n }\n\n this.internal.write(\"/Annots [\");\n for (var i = 0; i < pageAnnos.length; i++) {\n anno = pageAnnos[i];\n var escape = this.internal.pdfEscape;\n var encryptor = this.internal.getEncryptor(putPageData.objId);\n\n switch (anno.type) {\n case \"reference\":\n // References to Widget Annotations (for AcroForm Fields)\n this.internal.write(\" \" + anno.object.objId + \" 0 R \");\n break;\n case \"text\":\n // Create a an object for both the text and the popup\n var objText = this.internal.newAdditionalObject();\n var objPopup = this.internal.newAdditionalObject();\n var encryptorText = this.internal.getEncryptor(objText.objId);\n\n var title = anno.title || \"Note\";\n rect =\n \"/Rect [\" +\n getHorizontalCoordinateString(anno.bounds.x) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n \" \" +\n getHorizontalCoordinateString(anno.bounds.x + anno.bounds.w) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y) +\n \"] \";\n\n line =\n \"<</Type /Annot /Subtype /\" +\n \"Text\" +\n \" \" +\n rect +\n \"/Contents (\" +\n escape(encryptorText(anno.contents)) +\n \")\";\n line += \" /Popup \" + objPopup.objId + \" 0 R\";\n line += \" /P \" + pageInfo.objId + \" 0 R\";\n line += \" /T (\" + escape(encryptorText(title)) + \") >>\";\n objText.content = line;\n\n var parent = objText.objId + \" 0 R\";\n var popoff = 30;\n rect =\n \"/Rect [\" +\n getHorizontalCoordinateString(anno.bounds.x + popoff) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n \" \" +\n getHorizontalCoordinateString(\n anno.bounds.x + anno.bounds.w + popoff\n ) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y) +\n \"] \";\n line =\n \"<</Type /Annot /Subtype /\" +\n \"Popup\" +\n \" \" +\n rect +\n \" /Parent \" +\n parent;\n if (anno.open) {\n line += \" /Open true\";\n }\n line += \" >>\";\n objPopup.content = line;\n\n this.internal.write(objText.objId, \"0 R\", objPopup.objId, \"0 R\");\n\n break;\n case \"freetext\":\n rect =\n \"/Rect [\" +\n getHorizontalCoordinateString(anno.bounds.x) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y) +\n \" \" +\n getHorizontalCoordinateString(anno.bounds.x + anno.bounds.w) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n \"] \";\n var color = anno.color || \"#000000\";\n line =\n \"<</Type /Annot /Subtype /\" +\n \"FreeText\" +\n \" \" +\n rect +\n \"/Contents (\" +\n escape(encryptor(anno.contents)) +\n \")\";\n line +=\n \" /DS(font: Helvetica,sans-serif 12.0pt; text-align:left; color:#\" +\n color +\n \")\";\n line += \" /Border [0 0 0]\";\n line += \" >>\";\n this.internal.write(line);\n break;\n case \"link\":\n if (anno.options.name) {\n var loc = this.annotations._nameMap[anno.options.name];\n anno.options.pageNumber = loc.page;\n anno.options.top = loc.y;\n } else {\n if (!anno.options.top) {\n anno.options.top = 0;\n }\n }\n\n rect =\n \"/Rect [\" +\n anno.finalBounds.x +\n \" \" +\n anno.finalBounds.y +\n \" \" +\n anno.finalBounds.w +\n \" \" +\n anno.finalBounds.h +\n \"] \";\n\n line = \"\";\n if (anno.options.url) {\n line =\n \"<</Type /Annot /Subtype /Link \" +\n rect +\n \"/Border [0 0 0] /A <</S /URI /URI (\" +\n escape(encryptor(anno.options.url)) +\n \") >>\";\n } else if (anno.options.pageNumber) {\n // first page is 0\n var info = this.internal.getPageInfo(anno.options.pageNumber);\n line =\n \"<</Type /Annot /Subtype /Link \" +\n rect +\n \"/Border [0 0 0] /Dest [\" +\n info.objId +\n \" 0 R\";\n anno.options.magFactor = anno.options.magFactor || \"XYZ\";\n switch (anno.options.magFactor) {\n case \"Fit\":\n line += \" /Fit]\";\n break;\n case \"FitH\":\n line += \" /FitH \" + anno.options.top + \"]\";\n break;\n case \"FitV\":\n anno.options.left = anno.options.left || 0;\n line += \" /FitV \" + anno.options.left + \"]\";\n break;\n case \"XYZ\":\n default:\n var top = getVerticalCoordinateString(anno.options.top);\n anno.options.left = anno.options.left || 0;\n // 0 or null zoom will not change zoom factor\n if (typeof anno.options.zoom === \"undefined\") {\n anno.options.zoom = 0;\n }\n line +=\n \" /XYZ \" +\n anno.options.left +\n \" \" +\n top +\n \" \" +\n anno.options.zoom +\n \"]\";\n break;\n }\n }\n\n if (line != \"\") {\n line += \" >>\";\n this.internal.write(line);\n }\n break;\n }\n }\n this.internal.write(\"]\");\n }\n ]);\n\n /**\n * @name createAnnotation\n * @function\n * @param {Object} options\n */\n jsPDFAPI.createAnnotation = function(options) {\n var pageInfo = this.internal.getCurrentPageInfo();\n switch (options.type) {\n case \"link\":\n this.link(\n options.bounds.x,\n options.bounds.y,\n options.bounds.w,\n options.bounds.h,\n options\n );\n break;\n case \"text\":\n case \"freetext\":\n pageInfo.pageContext.annotations.push(options);\n break;\n }\n };\n\n /**\n * Create a link\n *\n * valid options\n * <li> pageNumber or url [required]\n * <p>If pageNumber is specified, top and zoom may also be specified</p>\n * @name link\n * @function\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {Object} options\n */\n jsPDFAPI.link = function(x, y, w, h, options) {\n var pageInfo = this.internal.getCurrentPageInfo();\n var getHorizontalCoordinateString = this.internal.getCoordinateString;\n var getVerticalCoordinateString = this.internal.getVerticalCoordinateString;\n\n pageInfo.pageContext.annotations.push({\n finalBounds: {\n x: getHorizontalCoordinateString(x),\n y: getVerticalCoordinateString(y),\n w: getHorizontalCoordinateString(x + w),\n h: getVerticalCoordinateString(y + h)\n },\n options: options,\n type: \"link\"\n });\n };\n\n /**\n * Currently only supports single line text.\n * Returns the width of the text/link\n *\n * @name textWithLink\n * @function\n * @param {string} text\n * @param {number} x\n * @param {number} y\n * @param {Object} options\n * @returns {number} width the width of the text/link\n */\n jsPDFAPI.textWithLink = function(text, x, y, options) {\n var totalLineWidth = this.getTextWidth(text);\n var lineHeight = this.internal.getLineHeight() / this.internal.scaleFactor;\n var linkHeight, linkWidth;\n\n // Checking if maxWidth option is passed to determine lineWidth and number of lines for each line\n if (options.maxWidth !== undefined) {\n var { maxWidth } = options;\n linkWidth = maxWidth;\n var numOfLines = this.splitTextToSize(text, linkWidth).length;\n linkHeight = Math.ceil(lineHeight * numOfLines);\n } else {\n linkWidth = totalLineWidth;\n linkHeight = lineHeight;\n }\n\n this.text(text, x, y, options);\n\n //TODO We really need the text baseline height to do this correctly.\n // Or ability to draw text on top, bottom, center, or baseline.\n y += lineHeight * 0.2;\n //handle x position based on the align option\n if (options.align === \"center\") {\n x = x - totalLineWidth / 2; //since starting from center move the x position by half of text width\n }\n if (options.align === \"right\") {\n x = x - totalLineWidth;\n }\n this.link(x, y - lineHeight, linkWidth, linkHeight, options);\n return totalLineWidth;\n };\n\n //TODO move into external library\n /**\n * @name getTextWidth\n * @function\n * @param {string} text\n * @returns {number} txtWidth\n */\n jsPDFAPI.getTextWidth = function(text) {\n var fontSize = this.internal.getFontSize();\n var txtWidth =\n (this.getStringUnitWidth(text) * fontSize) / this.internal.scaleFactor;\n return txtWidth;\n };\n\n return this;\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF arabic parser PlugIn\n *\n * @name arabic\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * Arabic shape substitutions: char code => (isolated, final, initial, medial).\n * Arabic Substition A\n */\n var arabicSubstitionA = {\n 0x0621: [0xfe80], // ARABIC LETTER HAMZA\n 0x0622: [0xfe81, 0xfe82], // ARABIC LETTER ALEF WITH MADDA ABOVE\n 0x0623: [0xfe83, 0xfe84], // ARABIC LETTER ALEF WITH HAMZA ABOVE\n 0x0624: [0xfe85, 0xfe86], // ARABIC LETTER WAW WITH HAMZA ABOVE\n 0x0625: [0xfe87, 0xfe88], // ARABIC LETTER ALEF WITH HAMZA BELOW\n 0x0626: [0xfe89, 0xfe8a, 0xfe8b, 0xfe8c], // ARABIC LETTER YEH WITH HAMZA ABOVE\n 0x0627: [0xfe8d, 0xfe8e], // ARABIC LETTER ALEF\n 0x0628: [0xfe8f, 0xfe90, 0xfe91, 0xfe92], // ARABIC LETTER BEH\n 0x0629: [0xfe93, 0xfe94], // ARABIC LETTER TEH MARBUTA\n 0x062a: [0xfe95, 0xfe96, 0xfe97, 0xfe98], // ARABIC LETTER TEH\n 0x062b: [0xfe99, 0xfe9a, 0xfe9b, 0xfe9c], // ARABIC LETTER THEH\n 0x062c: [0xfe9d, 0xfe9e, 0xfe9f, 0xfea0], // ARABIC LETTER JEEM\n 0x062d: [0xfea1, 0xfea2, 0xfea3, 0xfea4], // ARABIC LETTER HAH\n 0x062e: [0xfea5, 0xfea6, 0xfea7, 0xfea8], // ARABIC LETTER KHAH\n 0x062f: [0xfea9, 0xfeaa], // ARABIC LETTER DAL\n 0x0630: [0xfeab, 0xfeac], // ARABIC LETTER THAL\n 0x0631: [0xfead, 0xfeae], // ARABIC LETTER REH\n 0x0632: [0xfeaf, 0xfeb0], // ARABIC LETTER ZAIN\n 0x0633: [0xfeb1, 0xfeb2, 0xfeb3, 0xfeb4], // ARABIC LETTER SEEN\n 0x0634: [0xfeb5, 0xfeb6, 0xfeb7, 0xfeb8], // ARABIC LETTER SHEEN\n 0x0635: [0xfeb9, 0xfeba, 0xfebb, 0xfebc], // ARABIC LETTER SAD\n 0x0636: [0xfebd, 0xfebe, 0xfebf, 0xfec0], // ARABIC LETTER DAD\n 0x0637: [0xfec1, 0xfec2, 0xfec3, 0xfec4], // ARABIC LETTER TAH\n 0x0638: [0xfec5, 0xfec6, 0xfec7, 0xfec8], // ARABIC LETTER ZAH\n 0x0639: [0xfec9, 0xfeca, 0xfecb, 0xfecc], // ARABIC LETTER AIN\n 0x063a: [0xfecd, 0xfece, 0xfecf, 0xfed0], // ARABIC LETTER GHAIN\n 0x0641: [0xfed1, 0xfed2, 0xfed3, 0xfed4], // ARABIC LETTER FEH\n 0x0642: [0xfed5, 0xfed6, 0xfed7, 0xfed8], // ARABIC LETTER QAF\n 0x0643: [0xfed9, 0xfeda, 0xfedb, 0xfedc], // ARABIC LETTER KAF\n 0x0644: [0xfedd, 0xfede, 0xfedf, 0xfee0], // ARABIC LETTER LAM\n 0x0645: [0xfee1, 0xfee2, 0xfee3, 0xfee4], // ARABIC LETTER MEEM\n 0x0646: [0xfee5, 0xfee6, 0xfee7, 0xfee8], // ARABIC LETTER NOON\n 0x0647: [0xfee9, 0xfeea, 0xfeeb, 0xfeec], // ARABIC LETTER HEH\n 0x0648: [0xfeed, 0xfeee], // ARABIC LETTER WAW\n 0x0649: [0xfeef, 0xfef0, 64488, 64489], // ARABIC LETTER ALEF MAKSURA\n 0x064a: [0xfef1, 0xfef2, 0xfef3, 0xfef4], // ARABIC LETTER YEH\n 0x0671: [0xfb50, 0xfb51], // ARABIC LETTER ALEF WASLA\n 0x0677: [0xfbdd], // ARABIC LETTER U WITH HAMZA ABOVE\n 0x0679: [0xfb66, 0xfb67, 0xfb68, 0xfb69], // ARABIC LETTER TTEH\n 0x067a: [0xfb5e, 0xfb5f, 0xfb60, 0xfb61], // ARABIC LETTER TTEHEH\n 0x067b: [0xfb52, 0xfb53, 0xfb54, 0xfb55], // ARABIC LETTER BEEH\n 0x067e: [0xfb56, 0xfb57, 0xfb58, 0xfb59], // ARABIC LETTER PEH\n 0x067f: [0xfb62, 0xfb63, 0xfb64, 0xfb65], // ARABIC LETTER TEHEH\n 0x0680: [0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d], // ARABIC LETTER BEHEH\n 0x0683: [0xfb76, 0xfb77, 0xfb78, 0xfb79], // ARABIC LETTER NYEH\n 0x0684: [0xfb72, 0xfb73, 0xfb74, 0xfb75], // ARABIC LETTER DYEH\n 0x0686: [0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d], // ARABIC LETTER TCHEH\n 0x0687: [0xfb7e, 0xfb7f, 0xfb80, 0xfb81], // ARABIC LETTER TCHEHEH\n 0x0688: [0xfb88, 0xfb89], // ARABIC LETTER DDAL\n 0x068c: [0xfb84, 0xfb85], // ARABIC LETTER DAHAL\n 0x068d: [0xfb82, 0xfb83], // ARABIC LETTER DDAHAL\n 0x068e: [0xfb86, 0xfb87], // ARABIC LETTER DUL\n 0x0691: [0xfb8c, 0xfb8d], // ARABIC LETTER RREH\n 0x0698: [0xfb8a, 0xfb8b], // ARABIC LETTER JEH\n 0x06a4: [0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d], // ARABIC LETTER VEH\n 0x06a6: [0xfb6e, 0xfb6f, 0xfb70, 0xfb71], // ARABIC LETTER PEHEH\n 0x06a9: [0xfb8e, 0xfb8f, 0xfb90, 0xfb91], // ARABIC LETTER KEHEH\n 0x06ad: [0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6], // ARABIC LETTER NG\n 0x06af: [0xfb92, 0xfb93, 0xfb94, 0xfb95], // ARABIC LETTER GAF\n 0x06b1: [0xfb9a, 0xfb9b, 0xfb9c, 0xfb9d], // ARABIC LETTER NGOEH\n 0x06b3: [0xfb96, 0xfb97, 0xfb98, 0xfb99], // ARABIC LETTER GUEH\n 0x06ba: [0xfb9e, 0xfb9f], // ARABIC LETTER NOON GHUNNA\n 0x06bb: [0xfba0, 0xfba1, 0xfba2, 0xfba3], // ARABIC LETTER RNOON\n 0x06be: [0xfbaa, 0xfbab, 0xfbac, 0xfbad], // ARABIC LETTER HEH DOACHASHMEE\n 0x06c0: [0xfba4, 0xfba5], // ARABIC LETTER HEH WITH YEH ABOVE\n 0x06c1: [0xfba6, 0xfba7, 0xfba8, 0xfba9], // ARABIC LETTER HEH GOAL\n 0x06c5: [0xfbe0, 0xfbe1], // ARABIC LETTER KIRGHIZ OE\n 0x06c6: [0xfbd9, 0xfbda], // ARABIC LETTER OE\n 0x06c7: [0xfbd7, 0xfbd8], // ARABIC LETTER U\n 0x06c8: [0xfbdb, 0xfbdc], // ARABIC LETTER YU\n 0x06c9: [0xfbe2, 0xfbe3], // ARABIC LETTER KIRGHIZ YU\n 0x06cb: [0xfbde, 0xfbdf], // ARABIC LETTER VE\n 0x06cc: [0xfbfc, 0xfbfd, 0xfbfe, 0xfbff], // ARABIC LETTER FARSI YEH\n 0x06d0: [0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7], //ARABIC LETTER E\n 0x06d2: [0xfbae, 0xfbaf], // ARABIC LETTER YEH BARREE\n 0x06d3: [0xfbb0, 0xfbb1] // ARABIC LETTER YEH BARREE WITH HAMZA ABOVE\n };\n\n /*\n var ligaturesSubstitutionA = {\n 0xFBEA: []// ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM\n };\n */\n\n var ligatures = {\n 0xfedf: {\n 0xfe82: 0xfef5, // ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM\n 0xfe84: 0xfef7, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM\n 0xfe88: 0xfef9, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM\n 0xfe8e: 0xfefb // ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM\n },\n 0xfee0: {\n 0xfe82: 0xfef6, // ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM\n 0xfe84: 0xfef8, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM\n 0xfe88: 0xfefa, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM\n 0xfe8e: 0xfefc // ARABIC LIGATURE LAM WITH ALEF FINAL FORM\n },\n 0xfe8d: { 0xfedf: { 0xfee0: { 0xfeea: 0xfdf2 } } }, // ALLAH\n 0x0651: {\n 0x064c: 0xfc5e, // Shadda + Dammatan\n 0x064d: 0xfc5f, // Shadda + Kasratan\n 0x064e: 0xfc60, // Shadda + Fatha\n 0x064f: 0xfc61, // Shadda + Damma\n 0x0650: 0xfc62 // Shadda + Kasra\n }\n };\n\n var arabic_diacritics = {\n 1612: 64606, // Shadda + Dammatan\n 1613: 64607, // Shadda + Kasratan\n 1614: 64608, // Shadda + Fatha\n 1615: 64609, // Shadda + Damma\n 1616: 64610 // Shadda + Kasra\n };\n\n var alfletter = [1570, 1571, 1573, 1575];\n\n var noChangeInForm = -1;\n var isolatedForm = 0;\n var finalForm = 1;\n var initialForm = 2;\n var medialForm = 3;\n\n jsPDFAPI.__arabicParser__ = {};\n\n //private\n var isInArabicSubstitutionA = (jsPDFAPI.__arabicParser__.isInArabicSubstitutionA = function(\n letter\n ) {\n return typeof arabicSubstitionA[letter.charCodeAt(0)] !== \"undefined\";\n });\n\n var isArabicLetter = (jsPDFAPI.__arabicParser__.isArabicLetter = function(\n letter\n ) {\n return (\n typeof letter === \"string\" &&\n /^[\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]+$/.test(\n letter\n )\n );\n });\n\n var isArabicEndLetter = (jsPDFAPI.__arabicParser__.isArabicEndLetter = function(\n letter\n ) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length <= 2\n );\n });\n\n var isArabicAlfLetter = (jsPDFAPI.__arabicParser__.isArabicAlfLetter = function(\n letter\n ) {\n return (\n isArabicLetter(letter) && alfletter.indexOf(letter.charCodeAt(0)) >= 0\n );\n });\n\n jsPDFAPI.__arabicParser__.arabicLetterHasIsolatedForm = function(letter) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length >= 1\n );\n };\n\n var arabicLetterHasFinalForm = (jsPDFAPI.__arabicParser__.arabicLetterHasFinalForm = function(\n letter\n ) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length >= 2\n );\n });\n\n jsPDFAPI.__arabicParser__.arabicLetterHasInitialForm = function(letter) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length >= 3\n );\n };\n\n var arabicLetterHasMedialForm = (jsPDFAPI.__arabicParser__.arabicLetterHasMedialForm = function(\n letter\n ) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length == 4\n );\n });\n\n var resolveLigatures = (jsPDFAPI.__arabicParser__.resolveLigatures = function(\n letters\n ) {\n var i = 0;\n var tmpLigatures = ligatures;\n var result = \"\";\n var effectedLetters = 0;\n\n for (i = 0; i < letters.length; i += 1) {\n if (typeof tmpLigatures[letters.charCodeAt(i)] !== \"undefined\") {\n effectedLetters++;\n tmpLigatures = tmpLigatures[letters.charCodeAt(i)];\n\n if (typeof tmpLigatures === \"number\") {\n result += String.fromCharCode(tmpLigatures);\n tmpLigatures = ligatures;\n effectedLetters = 0;\n }\n if (i === letters.length - 1) {\n tmpLigatures = ligatures;\n result += letters.charAt(i - (effectedLetters - 1));\n i = i - (effectedLetters - 1);\n effectedLetters = 0;\n }\n } else {\n tmpLigatures = ligatures;\n result += letters.charAt(i - effectedLetters);\n i = i - effectedLetters;\n effectedLetters = 0;\n }\n }\n\n return result;\n });\n\n jsPDFAPI.__arabicParser__.isArabicDiacritic = function(letter) {\n return (\n letter !== undefined &&\n arabic_diacritics[letter.charCodeAt(0)] !== undefined\n );\n };\n\n var getCorrectForm = (jsPDFAPI.__arabicParser__.getCorrectForm = function(\n currentChar,\n beforeChar,\n nextChar\n ) {\n if (!isArabicLetter(currentChar)) {\n return -1;\n }\n\n if (isInArabicSubstitutionA(currentChar) === false) {\n return noChangeInForm;\n }\n if (\n !arabicLetterHasFinalForm(currentChar) ||\n (!isArabicLetter(beforeChar) && !isArabicLetter(nextChar)) ||\n (!isArabicLetter(nextChar) && isArabicEndLetter(beforeChar)) ||\n (isArabicEndLetter(currentChar) && !isArabicLetter(beforeChar)) ||\n (isArabicEndLetter(currentChar) && isArabicAlfLetter(beforeChar)) ||\n (isArabicEndLetter(currentChar) && isArabicEndLetter(beforeChar))\n ) {\n return isolatedForm;\n }\n\n if (\n arabicLetterHasMedialForm(currentChar) &&\n isArabicLetter(beforeChar) &&\n !isArabicEndLetter(beforeChar) &&\n isArabicLetter(nextChar) &&\n arabicLetterHasFinalForm(nextChar)\n ) {\n return medialForm;\n }\n\n if (isArabicEndLetter(currentChar) || !isArabicLetter(nextChar)) {\n return finalForm;\n }\n return initialForm;\n });\n\n /**\n * @name processArabic\n * @function\n * @param {string} text\n * @returns {string}\n */\n var parseArabic = function(text) {\n text = text || \"\";\n\n var result = \"\";\n var i = 0;\n var j = 0;\n var position = 0;\n var currentLetter = \"\";\n var prevLetter = \"\";\n var nextLetter = \"\";\n\n var words = text.split(\"\\\\s+\");\n var newWords = [];\n for (i = 0; i < words.length; i += 1) {\n newWords.push(\"\");\n for (j = 0; j < words[i].length; j += 1) {\n currentLetter = words[i][j];\n prevLetter = words[i][j - 1];\n nextLetter = words[i][j + 1];\n if (isArabicLetter(currentLetter)) {\n position = getCorrectForm(currentLetter, prevLetter, nextLetter);\n if (position !== -1) {\n newWords[i] += String.fromCharCode(\n arabicSubstitionA[currentLetter.charCodeAt(0)][position]\n );\n } else {\n newWords[i] += currentLetter;\n }\n } else {\n newWords[i] += currentLetter;\n }\n }\n\n newWords[i] = resolveLigatures(newWords[i]);\n }\n result = newWords.join(\" \");\n\n return result;\n };\n\n var processArabic = (jsPDFAPI.__arabicParser__.processArabic = jsPDFAPI.processArabic = function() {\n var text =\n typeof arguments[0] === \"string\" ? arguments[0] : arguments[0].text;\n var tmpText = [];\n var result;\n\n if (Array.isArray(text)) {\n var i = 0;\n tmpText = [];\n for (i = 0; i < text.length; i += 1) {\n if (Array.isArray(text[i])) {\n tmpText.push([parseArabic(text[i][0]), text[i][1], text[i][2]]);\n } else {\n tmpText.push([parseArabic(text[i])]);\n }\n }\n result = tmpText;\n } else {\n result = parseArabic(text);\n }\n if (typeof arguments[0] === \"string\") {\n return result;\n } else {\n arguments[0].text = result;\n return arguments[0];\n }\n });\n\n jsPDFAPI.events.push([\"preProcessText\", processArabic]);\n})(jsPDF.API);\n","/** @license\n * jsPDF Autoprint Plugin\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name autoprint\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * Makes the PDF automatically open the print-Dialog when opened in a PDF-viewer.\n *\n * @name autoPrint\n * @function\n * @param {Object} options (optional) Set the attribute variant to 'non-conform' (default) or 'javascript' to activate different methods of automatic printing when opening in a PDF-viewer .\n * @returns {jsPDF}\n * @example\n * var doc = new jsPDF();\n * doc.text(10, 10, 'This is a test');\n * doc.autoPrint({variant: 'non-conform'});\n * doc.save('autoprint.pdf');\n */\n jsPDFAPI.autoPrint = function(options) {\n \"use strict\";\n var refAutoPrintTag;\n options = options || {};\n options.variant = options.variant || \"non-conform\";\n\n switch (options.variant) {\n case \"javascript\":\n //https://github.com/Rob--W/pdf.js/commit/c676ecb5a0f54677b9f3340c3ef2cf42225453bb\n this.addJS(\"print({});\");\n break;\n case \"non-conform\":\n default:\n this.internal.events.subscribe(\"postPutResources\", function() {\n refAutoPrintTag = this.internal.newObject();\n this.internal.out(\"<<\");\n this.internal.out(\"/S /Named\");\n this.internal.out(\"/Type /Action\");\n this.internal.out(\"/N /Print\");\n this.internal.out(\">>\");\n this.internal.out(\"endobj\");\n });\n\n this.internal.events.subscribe(\"putCatalog\", function() {\n this.internal.out(\"/OpenAction \" + refAutoPrintTag + \" 0 R\");\n });\n break;\n }\n return this;\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF Canvas PlugIn\n * This plugin mimics the HTML5 Canvas\n *\n * The goal is to provide a way for current canvas users to print directly to a PDF.\n * @name canvas\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * @class Canvas\n * @classdesc A Canvas Wrapper for jsPDF\n */\n var Canvas = function() {\n var jsPdfInstance = undefined;\n Object.defineProperty(this, \"pdf\", {\n get: function() {\n return jsPdfInstance;\n },\n set: function(value) {\n jsPdfInstance = value;\n }\n });\n\n var _width = 150;\n /**\n * The height property is a positive integer reflecting the height HTML attribute of the <canvas> element interpreted in CSS pixels. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of 150 is used.\n * This is one of the two properties, the other being width, that controls the size of the canvas.\n *\n * @name width\n */\n Object.defineProperty(this, \"width\", {\n get: function() {\n return _width;\n },\n set: function(value) {\n if (isNaN(value) || Number.isInteger(value) === false || value < 0) {\n _width = 150;\n } else {\n _width = value;\n }\n if (this.getContext(\"2d\").pageWrapXEnabled) {\n this.getContext(\"2d\").pageWrapX = _width + 1;\n }\n }\n });\n\n var _height = 300;\n /**\n * The width property is a positive integer reflecting the width HTML attribute of the <canvas> element interpreted in CSS pixels. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of 300 is used.\n * This is one of the two properties, the other being height, that controls the size of the canvas.\n *\n * @name height\n */\n Object.defineProperty(this, \"height\", {\n get: function() {\n return _height;\n },\n set: function(value) {\n if (isNaN(value) || Number.isInteger(value) === false || value < 0) {\n _height = 300;\n } else {\n _height = value;\n }\n if (this.getContext(\"2d\").pageWrapYEnabled) {\n this.getContext(\"2d\").pageWrapY = _height + 1;\n }\n }\n });\n\n var _childNodes = [];\n Object.defineProperty(this, \"childNodes\", {\n get: function() {\n return _childNodes;\n },\n set: function(value) {\n _childNodes = value;\n }\n });\n\n var _style = {};\n Object.defineProperty(this, \"style\", {\n get: function() {\n return _style;\n },\n set: function(value) {\n _style = value;\n }\n });\n\n Object.defineProperty(this, \"parentNode\", {});\n };\n\n /**\n * The getContext() method returns a drawing context on the canvas, or null if the context identifier is not supported.\n *\n * @name getContext\n * @function\n * @param {string} contextType Is a String containing the context identifier defining the drawing context associated to the canvas. Possible value is \"2d\", leading to the creation of a Context2D object representing a two-dimensional rendering context.\n * @param {object} contextAttributes\n */\n Canvas.prototype.getContext = function(contextType, contextAttributes) {\n contextType = contextType || \"2d\";\n var key;\n\n if (contextType !== \"2d\") {\n return null;\n }\n for (key in contextAttributes) {\n if (this.pdf.context2d.hasOwnProperty(key)) {\n this.pdf.context2d[key] = contextAttributes[key];\n }\n }\n this.pdf.context2d._canvas = this;\n return this.pdf.context2d;\n };\n\n /**\n * The toDataURL() method is just a stub to throw an error if accidently called.\n *\n * @name toDataURL\n * @function\n */\n Canvas.prototype.toDataURL = function() {\n throw new Error(\"toDataURL is not implemented.\");\n };\n\n jsPDFAPI.events.push([\n \"initialized\",\n function() {\n this.canvas = new Canvas();\n this.canvas.pdf = this;\n }\n ]);\n\n return this;\n})(jsPDF.API);\n","/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com\n * 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br\n * 2013 Lee Driscoll, https://github.com/lsdriscoll\n * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria\n * 2014 James Hall, james@parall.ax\n * 2014 Diego Casorran, https://github.com/diegocr\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name cell\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var NO_MARGINS = { left: 0, top: 0, bottom: 0, right: 0 };\n\n var px2pt = (0.264583 * 72) / 25.4;\n var printingHeaderRow = false;\n\n var _initialize = function() {\n if (typeof this.internal.__cell__ === \"undefined\") {\n this.internal.__cell__ = {};\n this.internal.__cell__.padding = 3;\n this.internal.__cell__.headerFunction = undefined;\n this.internal.__cell__.margins = Object.assign({}, NO_MARGINS);\n this.internal.__cell__.margins.width = this.getPageWidth();\n _reset.call(this);\n }\n };\n\n var _reset = function() {\n this.internal.__cell__.lastCell = new Cell();\n this.internal.__cell__.pages = 1;\n };\n\n var Cell = function() {\n var _x = arguments[0];\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n get: function() {\n return _x;\n },\n set: function(value) {\n _x = value;\n }\n });\n var _y = arguments[1];\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n get: function() {\n return _y;\n },\n set: function(value) {\n _y = value;\n }\n });\n var _width = arguments[2];\n Object.defineProperty(this, \"width\", {\n enumerable: true,\n get: function() {\n return _width;\n },\n set: function(value) {\n _width = value;\n }\n });\n var _height = arguments[3];\n Object.defineProperty(this, \"height\", {\n enumerable: true,\n get: function() {\n return _height;\n },\n set: function(value) {\n _height = value;\n }\n });\n var _text = arguments[4];\n Object.defineProperty(this, \"text\", {\n enumerable: true,\n get: function() {\n return _text;\n },\n set: function(value) {\n _text = value;\n }\n });\n var _lineNumber = arguments[5];\n Object.defineProperty(this, \"lineNumber\", {\n enumerable: true,\n get: function() {\n return _lineNumber;\n },\n set: function(value) {\n _lineNumber = value;\n }\n });\n var _align = arguments[6];\n Object.defineProperty(this, \"align\", {\n enumerable: true,\n get: function() {\n return _align;\n },\n set: function(value) {\n _align = value;\n }\n });\n\n return this;\n };\n\n Cell.prototype.clone = function() {\n return new Cell(\n this.x,\n this.y,\n this.width,\n this.height,\n this.text,\n this.lineNumber,\n this.align\n );\n };\n\n Cell.prototype.toArray = function() {\n return [\n this.x,\n this.y,\n this.width,\n this.height,\n this.text,\n this.lineNumber,\n this.align\n ];\n };\n\n /**\n * @name setHeaderFunction\n * @function\n * @param {function} func\n */\n jsPDFAPI.setHeaderFunction = function(func) {\n _initialize.call(this);\n this.internal.__cell__.headerFunction =\n typeof func === \"function\" ? func : undefined;\n return this;\n };\n\n /**\n * @name getTextDimensions\n * @function\n * @param {string} txt\n * @returns {Object} dimensions\n */\n jsPDFAPI.getTextDimensions = function(text, options) {\n _initialize.call(this);\n options = options || {};\n var fontSize = options.fontSize || this.getFontSize();\n var font = options.font || this.getFont();\n var scaleFactor = options.scaleFactor || this.internal.scaleFactor;\n var width = 0;\n var amountOfLines = 0;\n var height = 0;\n var tempWidth = 0;\n var scope = this;\n\n if (!Array.isArray(text) && typeof text !== \"string\") {\n if (typeof text === \"number\") {\n text = String(text);\n } else {\n throw new Error(\n \"getTextDimensions expects text-parameter to be of type String or type Number or an Array of Strings.\"\n );\n }\n }\n\n const maxWidth = options.maxWidth;\n if (maxWidth > 0) {\n if (typeof text === \"string\") {\n text = this.splitTextToSize(text, maxWidth);\n } else if (Object.prototype.toString.call(text) === \"[object Array]\") {\n text = text.reduce(function(acc, textLine) {\n return acc.concat(scope.splitTextToSize(textLine, maxWidth));\n }, []);\n }\n } else {\n // Without the else clause, it will not work if you do not pass along maxWidth\n text = Array.isArray(text) ? text : [text];\n }\n\n for (var i = 0; i < text.length; i++) {\n tempWidth = this.getStringUnitWidth(text[i], { font: font }) * fontSize;\n if (width < tempWidth) {\n width = tempWidth;\n }\n }\n\n if (width !== 0) {\n amountOfLines = text.length;\n }\n\n width = width / scaleFactor;\n height = Math.max(\n (amountOfLines * fontSize * this.getLineHeightFactor() -\n fontSize * (this.getLineHeightFactor() - 1)) /\n scaleFactor,\n 0\n );\n return { w: width, h: height };\n };\n\n /**\n * @name cellAddPage\n * @function\n */\n jsPDFAPI.cellAddPage = function() {\n _initialize.call(this);\n\n this.addPage();\n\n var margins = this.internal.__cell__.margins || NO_MARGINS;\n this.internal.__cell__.lastCell = new Cell(\n margins.left,\n margins.top,\n undefined,\n undefined\n );\n this.internal.__cell__.pages += 1;\n\n return this;\n };\n\n /**\n * @name cell\n * @function\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n * @param {string} text\n * @param {number} lineNumber lineNumber\n * @param {string} align\n * @return {jsPDF} jsPDF-instance\n */\n var cell = (jsPDFAPI.cell = function() {\n var currentCell;\n\n if (arguments[0] instanceof Cell) {\n currentCell = arguments[0];\n } else {\n currentCell = new Cell(\n arguments[0],\n arguments[1],\n arguments[2],\n arguments[3],\n arguments[4],\n arguments[5]\n );\n }\n _initialize.call(this);\n var lastCell = this.internal.__cell__.lastCell;\n var padding = this.internal.__cell__.padding;\n var margins = this.internal.__cell__.margins || NO_MARGINS;\n var tableHeaderRow = this.internal.__cell__.tableHeaderRow;\n var printHeaders = this.internal.__cell__.printHeaders;\n // If this is not the first cell, we must change its position\n if (typeof lastCell.lineNumber !== \"undefined\") {\n if (lastCell.lineNumber === currentCell.lineNumber) {\n //Same line\n currentCell.x = (lastCell.x || 0) + (lastCell.width || 0);\n currentCell.y = lastCell.y || 0;\n } else {\n //New line\n if (\n lastCell.y + lastCell.height + currentCell.height + margins.bottom >\n this.getPageHeight()\n ) {\n this.cellAddPage();\n currentCell.y = margins.top;\n if (printHeaders && tableHeaderRow) {\n this.printHeaderRow(currentCell.lineNumber, true);\n currentCell.y += tableHeaderRow[0].height;\n }\n } else {\n currentCell.y = lastCell.y + lastCell.height || currentCell.y;\n }\n }\n }\n\n if (typeof currentCell.text[0] !== \"undefined\") {\n this.rect(\n currentCell.x,\n currentCell.y,\n currentCell.width,\n currentCell.height,\n printingHeaderRow === true ? \"FD\" : undefined\n );\n if (currentCell.align === \"right\") {\n this.text(\n currentCell.text,\n currentCell.x + currentCell.width - padding,\n currentCell.y + padding,\n { align: \"right\", baseline: \"top\" }\n );\n } else if (currentCell.align === \"center\") {\n this.text(\n currentCell.text,\n currentCell.x + currentCell.width / 2,\n currentCell.y + padding,\n {\n align: \"center\",\n baseline: \"top\",\n maxWidth: currentCell.width - padding - padding\n }\n );\n } else {\n this.text(\n currentCell.text,\n currentCell.x + padding,\n currentCell.y + padding,\n {\n align: \"left\",\n baseline: \"top\",\n maxWidth: currentCell.width - padding - padding\n }\n );\n }\n }\n this.internal.__cell__.lastCell = currentCell;\n return this;\n });\n\n /**\n * Create a table from a set of data.\n * @name table\n * @function\n * @param {Integer} [x] : left-position for top-left corner of table\n * @param {Integer} [y] top-position for top-left corner of table\n * @param {Object[]} [data] An array of objects containing key-value pairs corresponding to a row of data.\n * @param {String[]} [headers] Omit or null to auto-generate headers at a performance cost\n\n * @param {Object} [config.printHeaders] True to print column headers at the top of every page\n * @param {Object} [config.autoSize] True to dynamically set the column widths to match the widest cell value\n * @param {Object} [config.margins] margin values for left, top, bottom, and width\n * @param {Object} [config.fontSize] Integer fontSize to use (optional)\n * @param {Object} [config.padding] cell-padding in pt to use (optional)\n * @param {Object} [config.headerBackgroundColor] default is #c8c8c8 (optional)\n * @param {Object} [config.headerTextColor] default is #000 (optional)\n * @param {Object} [config.rowStart] callback to handle before print each row (optional)\n * @param {Object} [config.cellStart] callback to handle before print each cell (optional)\n * @returns {jsPDF} jsPDF-instance\n */\n\n jsPDFAPI.table = function(x, y, data, headers, config) {\n _initialize.call(this);\n if (!data) {\n throw new Error(\"No data for PDF table.\");\n }\n\n config = config || {};\n\n var headerNames = [],\n headerLabels = [],\n headerAligns = [],\n i,\n columnMatrix = {},\n columnWidths = {},\n column,\n columnMinWidths = [],\n j,\n tableHeaderConfigs = [],\n //set up defaults. If a value is provided in config, defaults will be overwritten:\n autoSize = config.autoSize || false,\n printHeaders = config.printHeaders === false ? false : true,\n fontSize =\n config.css && typeof config.css[\"font-size\"] !== \"undefined\"\n ? config.css[\"font-size\"] * 16\n : config.fontSize || 12,\n margins =\n config.margins ||\n Object.assign({ width: this.getPageWidth() }, NO_MARGINS),\n padding = typeof config.padding === \"number\" ? config.padding : 3,\n headerBackgroundColor = config.headerBackgroundColor || \"#c8c8c8\",\n headerTextColor = config.headerTextColor || \"#000\";\n\n _reset.call(this);\n\n this.internal.__cell__.printHeaders = printHeaders;\n this.internal.__cell__.margins = margins;\n this.internal.__cell__.table_font_size = fontSize;\n this.internal.__cell__.padding = padding;\n this.internal.__cell__.headerBackgroundColor = headerBackgroundColor;\n this.internal.__cell__.headerTextColor = headerTextColor;\n this.setFontSize(fontSize);\n\n // Set header values\n if (headers === undefined || headers === null) {\n // No headers defined so we derive from data\n headerNames = Object.keys(data[0]);\n headerLabels = headerNames;\n headerAligns = headerNames.map(function() {\n return \"left\";\n });\n } else if (Array.isArray(headers) && typeof headers[0] === \"object\") {\n headerNames = headers.map(function(header) {\n return header.name;\n });\n headerLabels = headers.map(function(header) {\n return header.prompt || header.name || \"\";\n });\n headerAligns = headers.map(function(header) {\n return header.align || \"left\";\n });\n // Split header configs into names and prompts\n for (i = 0; i < headers.length; i += 1) {\n columnWidths[headers[i].name] = headers[i].width * px2pt;\n }\n } else if (Array.isArray(headers) && typeof headers[0] === \"string\") {\n headerNames = headers;\n headerLabels = headerNames;\n headerAligns = headerNames.map(function() {\n return \"left\";\n });\n }\n\n if (\n autoSize ||\n (Array.isArray(headers) && typeof headers[0] === \"string\")\n ) {\n var headerName;\n for (i = 0; i < headerNames.length; i += 1) {\n headerName = headerNames[i];\n\n // Create a matrix of columns e.g., {column_title: [row1_Record, row2_Record]}\n\n columnMatrix[headerName] = data.map(function(rec) {\n return rec[headerName];\n });\n\n // get header width\n this.setFont(undefined, \"bold\");\n columnMinWidths.push(\n this.getTextDimensions(headerLabels[i], {\n fontSize: this.internal.__cell__.table_font_size,\n scaleFactor: this.internal.scaleFactor\n }).w\n );\n column = columnMatrix[headerName];\n\n // get cell widths\n this.setFont(undefined, \"normal\");\n for (j = 0; j < column.length; j += 1) {\n columnMinWidths.push(\n this.getTextDimensions(column[j], {\n fontSize: this.internal.__cell__.table_font_size,\n scaleFactor: this.internal.scaleFactor\n }).w\n );\n }\n\n // get final column width\n columnWidths[headerName] =\n Math.max.apply(null, columnMinWidths) + padding + padding;\n\n //have to reset\n columnMinWidths = [];\n }\n }\n\n // -- Construct the table\n\n if (printHeaders) {\n var row = {};\n for (i = 0; i < headerNames.length; i += 1) {\n row[headerNames[i]] = {};\n row[headerNames[i]].text = headerLabels[i];\n row[headerNames[i]].align = headerAligns[i];\n }\n\n var rowHeight = calculateLineHeight.call(this, row, columnWidths);\n\n // Construct the header row\n tableHeaderConfigs = headerNames.map(function(value) {\n return new Cell(\n x,\n y,\n columnWidths[value],\n rowHeight,\n row[value].text,\n undefined,\n row[value].align\n );\n });\n\n // Store the table header config\n this.setTableHeaderRow(tableHeaderConfigs);\n\n // Print the header for the start of the table\n this.printHeaderRow(1, false);\n }\n\n // Construct the data rows\n\n var align = headers.reduce(function(pv, cv) {\n pv[cv.name] = cv.align;\n return pv;\n }, {});\n for (i = 0; i < data.length; i += 1) {\n if (\"rowStart\" in config && config.rowStart instanceof Function) {\n config.rowStart(\n {\n row: i,\n data: data[i]\n },\n this\n );\n }\n var lineHeight = calculateLineHeight.call(this, data[i], columnWidths);\n\n for (j = 0; j < headerNames.length; j += 1) {\n var cellData = data[i][headerNames[j]];\n if (\"cellStart\" in config && config.cellStart instanceof Function) {\n config.cellStart(\n {\n row: i,\n col: j,\n data: cellData\n },\n this\n );\n }\n cell.call(\n this,\n new Cell(\n x,\n y,\n columnWidths[headerNames[j]],\n lineHeight,\n cellData,\n i + 2,\n align[headerNames[j]]\n )\n );\n }\n }\n this.internal.__cell__.table_x = x;\n this.internal.__cell__.table_y = y;\n return this;\n };\n\n /**\n * Calculate the height for containing the highest column\n *\n * @name calculateLineHeight\n * @function\n * @param {Object[]} model is the line of data we want to calculate the height of\n * @param {Integer[]} columnWidths is size of each column\n * @returns {number} lineHeight\n * @private\n */\n var calculateLineHeight = function calculateLineHeight(model, columnWidths) {\n var padding = this.internal.__cell__.padding;\n var fontSize = this.internal.__cell__.table_font_size;\n var scaleFactor = this.internal.scaleFactor;\n\n return Object.keys(model)\n .map(function(key) {\n var value = model[key];\n return this.splitTextToSize(\n value.hasOwnProperty(\"text\") ? value.text : value,\n columnWidths[key] - padding - padding\n );\n }, this)\n .map(function(value) {\n return (\n (this.getLineHeightFactor() * value.length * fontSize) / scaleFactor +\n padding +\n padding\n );\n }, this)\n .reduce(function(pv, cv) {\n return Math.max(pv, cv);\n }, 0);\n };\n\n /**\n * Store the config for outputting a table header\n *\n * @name setTableHeaderRow\n * @function\n * @param {Object[]} config\n * An array of cell configs that would define a header row: Each config matches the config used by jsPDFAPI.cell\n * except the lineNumber parameter is excluded\n */\n jsPDFAPI.setTableHeaderRow = function(config) {\n _initialize.call(this);\n this.internal.__cell__.tableHeaderRow = config;\n };\n\n /**\n * Output the store header row\n *\n * @name printHeaderRow\n * @function\n * @param {number} lineNumber The line number to output the header at\n * @param {boolean} new_page\n */\n jsPDFAPI.printHeaderRow = function(lineNumber, new_page) {\n _initialize.call(this);\n if (!this.internal.__cell__.tableHeaderRow) {\n throw new Error(\"Property tableHeaderRow does not exist.\");\n }\n\n var tableHeaderCell;\n\n printingHeaderRow = true;\n if (typeof this.internal.__cell__.headerFunction === \"function\") {\n var position = this.internal.__cell__.headerFunction(\n this,\n this.internal.__cell__.pages\n );\n this.internal.__cell__.lastCell = new Cell(\n position[0],\n position[1],\n position[2],\n position[3],\n undefined,\n -1\n );\n }\n this.setFont(undefined, \"bold\");\n\n var tempHeaderConf = [];\n for (var i = 0; i < this.internal.__cell__.tableHeaderRow.length; i += 1) {\n tableHeaderCell = this.internal.__cell__.tableHeaderRow[i].clone();\n if (new_page) {\n tableHeaderCell.y = this.internal.__cell__.margins.top || 0;\n tempHeaderConf.push(tableHeaderCell);\n }\n tableHeaderCell.lineNumber = lineNumber;\n var currentTextColor = this.getTextColor();\n this.setTextColor(this.internal.__cell__.headerTextColor);\n this.setFillColor(this.internal.__cell__.headerBackgroundColor);\n cell.call(this, tableHeaderCell);\n this.setTextColor(currentTextColor);\n }\n if (tempHeaderConf.length > 0) {\n this.setTableHeaderRow(tempHeaderConf);\n }\n this.setFont(undefined, \"normal\");\n printingHeaderRow = false;\n };\n})(jsPDF.API);\n","function toLookup(arr) {\n return arr.reduce(function(lookup, name, index) {\n lookup[name] = index;\n\n return lookup;\n }, {});\n}\n\nvar fontStyleOrder = {\n italic: [\"italic\", \"oblique\", \"normal\"],\n oblique: [\"oblique\", \"italic\", \"normal\"],\n normal: [\"normal\", \"oblique\", \"italic\"]\n};\n\nvar fontStretchOrder = [\n \"ultra-condensed\",\n \"extra-condensed\",\n \"condensed\",\n \"semi-condensed\",\n \"normal\",\n \"semi-expanded\",\n \"expanded\",\n \"extra-expanded\",\n \"ultra-expanded\"\n];\n\n// For a given font-stretch value, we need to know where to start our search\n// from in the fontStretchOrder list.\nvar fontStretchLookup = toLookup(fontStretchOrder);\n\nvar fontWeights = [100, 200, 300, 400, 500, 600, 700, 800, 900];\nvar fontWeightsLookup = toLookup(fontWeights);\n\nfunction normalizeFontStretch(stretch) {\n stretch = stretch || \"normal\";\n\n return typeof fontStretchLookup[stretch] === \"number\" ? stretch : \"normal\";\n}\n\nfunction normalizeFontStyle(style) {\n style = style || \"normal\";\n\n return fontStyleOrder[style] ? style : \"normal\";\n}\n\nfunction normalizeFontWeight(weight) {\n if (!weight) {\n return 400;\n }\n\n if (typeof weight === \"number\") {\n // Ignore values which aren't valid font-weights.\n return weight >= 100 && weight <= 900 && weight % 100 === 0 ? weight : 400;\n }\n\n if (/^\\d00$/.test(weight)) {\n return parseInt(weight);\n }\n\n switch (weight) {\n case \"bold\":\n return 700;\n\n case \"normal\":\n default:\n return 400;\n }\n}\n\nexport function normalizeFontFace(fontFace) {\n var family = fontFace.family.replace(/\"|'/g, \"\").toLowerCase();\n\n var style = normalizeFontStyle(fontFace.style);\n var weight = normalizeFontWeight(fontFace.weight);\n var stretch = normalizeFontStretch(fontFace.stretch);\n\n return {\n family: family,\n style: style,\n weight: weight,\n stretch: stretch,\n src: fontFace.src || [],\n\n // The ref property maps this font-face to the font\n // added by the .addFont() method.\n ref: fontFace.ref || {\n name: family,\n style: [stretch, style, weight].join(\" \")\n }\n };\n}\n\n/**\n * Turns a list of font-faces into a map, for easier lookup when resolving\n * fonts.\n * @private\n */\nexport function buildFontFaceMap(fontFaces) {\n var map = {};\n\n for (var i = 0; i < fontFaces.length; ++i) {\n var normalized = normalizeFontFace(fontFaces[i]);\n\n var name = normalized.family;\n var stretch = normalized.stretch;\n var style = normalized.style;\n var weight = normalized.weight;\n\n map[name] = map[name] || {};\n\n map[name][stretch] = map[name][stretch] || {};\n map[name][stretch][style] = map[name][stretch][style] || {};\n map[name][stretch][style][weight] = normalized;\n }\n\n return map;\n}\n\n/**\n * Searches a map of stretches, weights, etc. in the given direction and\n * then, if no match has been found, in the opposite directions.\n *\n * @param {Object.<string, any>} matchingSet A map of the various font variations.\n * @param {any[]} order The order of the different variations\n * @param {number} pivot The starting point of the search in the order list.\n * @param {number} dir The initial direction of the search (desc = -1, asc = 1)\n * @private\n */\n\nfunction searchFromPivot(matchingSet, order, pivot, dir) {\n var i;\n\n for (i = pivot; i >= 0 && i < order.length; i += dir) {\n if (matchingSet[order[i]]) {\n return matchingSet[order[i]];\n }\n }\n\n for (i = pivot; i >= 0 && i < order.length; i -= dir) {\n if (matchingSet[order[i]]) {\n return matchingSet[order[i]];\n }\n }\n}\n\nfunction resolveFontStretch(stretch, matchingSet) {\n if (matchingSet[stretch]) {\n return matchingSet[stretch];\n }\n\n var pivot = fontStretchLookup[stretch];\n\n // If the font-stretch value is normal or more condensed, we want to\n // start with a descending search, otherwise we should do ascending.\n var dir = pivot <= fontStretchLookup[\"normal\"] ? -1 : 1;\n var match = searchFromPivot(matchingSet, fontStretchOrder, pivot, dir);\n\n if (!match) {\n // Since a font-family cannot exist without having at least one stretch value\n // we should never reach this point.\n throw new Error(\n \"Could not find a matching font-stretch value for \" + stretch\n );\n }\n\n return match;\n}\n\nfunction resolveFontStyle(fontStyle, matchingSet) {\n if (matchingSet[fontStyle]) {\n return matchingSet[fontStyle];\n }\n\n var ordering = fontStyleOrder[fontStyle];\n\n for (var i = 0; i < ordering.length; ++i) {\n if (matchingSet[ordering[i]]) {\n return matchingSet[ordering[i]];\n }\n }\n\n // Since a font-family cannot exist without having at least one style value\n // we should never reach this point.\n throw new Error(\"Could not find a matching font-style for \" + fontStyle);\n}\n\nfunction resolveFontWeight(weight, matchingSet) {\n if (matchingSet[weight]) {\n return matchingSet[weight];\n }\n\n if (weight === 400 && matchingSet[500]) {\n return matchingSet[500];\n }\n\n if (weight === 500 && matchingSet[400]) {\n return matchingSet[400];\n }\n\n var pivot = fontWeightsLookup[weight];\n\n // If the font-stretch value is normal or more condensed, we want to\n // start with a descending search, otherwise we should do ascending.\n var dir = weight < 400 ? -1 : 1;\n var match = searchFromPivot(matchingSet, fontWeights, pivot, dir);\n\n if (!match) {\n // Since a font-family cannot exist without having at least one stretch value\n // we should never reach this point.\n throw new Error(\n \"Could not find a matching font-weight for value \" + weight\n );\n }\n\n return match;\n}\n\nvar defaultGenericFontFamilies = {\n \"sans-serif\": \"helvetica\",\n fixed: \"courier\",\n monospace: \"courier\",\n terminal: \"courier\",\n cursive: \"times\",\n fantasy: \"times\",\n serif: \"times\"\n};\n\nvar systemFonts = {\n caption: \"times\",\n icon: \"times\",\n menu: \"times\",\n \"message-box\": \"times\",\n \"small-caption\": \"times\",\n \"status-bar\": \"times\"\n};\n\nfunction ruleToString(rule) {\n return [rule.stretch, rule.style, rule.weight, rule.family].join(\" \");\n}\n\nexport function resolveFontFace(fontFaceMap, rules, opts) {\n opts = opts || {};\n\n var defaultFontFamily = opts.defaultFontFamily || \"times\";\n var genericFontFamilies = Object.assign(\n {},\n defaultGenericFontFamilies,\n opts.genericFontFamilies || {}\n );\n\n var rule = null;\n var matches = null;\n\n for (var i = 0; i < rules.length; ++i) {\n rule = normalizeFontFace(rules[i]);\n\n if (genericFontFamilies[rule.family]) {\n rule.family = genericFontFamilies[rule.family];\n }\n\n if (fontFaceMap.hasOwnProperty(rule.family)) {\n matches = fontFaceMap[rule.family];\n\n break;\n }\n }\n\n // Always fallback to a known font family.\n matches = matches || fontFaceMap[defaultFontFamily];\n\n if (!matches) {\n // At this point we should definitiely have a font family, but if we\n // don't there is something wrong with our configuration\n throw new Error(\n \"Could not find a font-family for the rule '\" +\n ruleToString(rule) +\n \"' and default family '\" +\n defaultFontFamily +\n \"'.\"\n );\n }\n\n matches = resolveFontStretch(rule.stretch, matches);\n matches = resolveFontStyle(rule.style, matches);\n matches = resolveFontWeight(rule.weight, matches);\n\n if (!matches) {\n // We should've fount\n throw new Error(\n \"Failed to resolve a font for the rule '\" + ruleToString(rule) + \"'.\"\n );\n }\n\n return matches;\n}\n\n/**\n * Builds a style id for use with the addFont() method.\n * @param {FontFace} font\n * @private\n */\nexport function toStyleName(font) {\n return [font.weight, font.style, font.stretch].join(\" \");\n}\n\nfunction eatWhiteSpace(input) {\n return input.trimLeft();\n}\n\nfunction parseQuotedFontFamily(input, quote) {\n var index = 0;\n\n while (index < input.length) {\n var current = input.charAt(index);\n\n if (current === quote) {\n return [input.substring(0, index), input.substring(index + 1)];\n }\n\n index += 1;\n }\n\n // Unexpected end of input\n return null;\n}\n\nfunction parseNonQuotedFontFamily(input) {\n // It implements part of the identifier parser here: https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n //\n // NOTE: This parser pretty much ignores escaped identifiers and that there is a thing called unicode.\n //\n // Breakdown of regexp:\n // -[a-z_] - when identifier starts with a hyphen, you're not allowed to have another hyphen or a digit\n // [a-z_] - allow a-z and underscore at beginning of input\n // [a-z0-9_-]* - after that, anything goes\n var match = input.match(/^(-[a-z_]|[a-z_])[a-z0-9_-]*/i);\n\n // non quoted value contains illegal characters\n if (match === null) {\n return null;\n }\n\n return [match[0], input.substring(match[0].length)];\n}\n\nvar defaultFont = [\"times\"];\n\nexport function parseFontFamily(input) {\n var result = [];\n var ch, parsed;\n var remaining = input.trim();\n\n if (remaining === \"\") {\n return defaultFont;\n }\n\n if (remaining in systemFonts) {\n return [systemFonts[remaining]];\n }\n\n while (remaining !== \"\") {\n parsed = null;\n remaining = eatWhiteSpace(remaining);\n ch = remaining.charAt(0);\n\n switch (ch) {\n case '\"':\n case \"'\":\n parsed = parseQuotedFontFamily(remaining.substring(1), ch);\n break;\n\n default:\n parsed = parseNonQuotedFontFamily(remaining);\n break;\n }\n\n if (parsed === null) {\n return defaultFont;\n }\n\n result.push(parsed[0]);\n\n remaining = eatWhiteSpace(parsed[1]);\n\n // We expect end of input or a comma separator here\n if (remaining !== \"\" && remaining.charAt(0) !== \",\") {\n return defaultFont;\n }\n\n remaining = remaining.replace(/^,/, \"\");\n }\n\n return result;\n}\n","/* eslint-disable no-fallthrough */\r\n/* eslint-disable no-console */\r\n/**\r\n * @license\r\n * jsPDF Context2D PlugIn Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\r\n *\r\n * Licensed under the MIT License. http://opensource.org/licenses/mit-license\r\n */\r\n\r\nimport { jsPDF } from \"../jspdf.js\";\r\nimport { RGBColor } from \"../libs/rgbcolor.js\";\r\nimport { console } from \"../libs/console.js\";\r\nimport {\r\n buildFontFaceMap,\r\n parseFontFamily,\r\n resolveFontFace\r\n} from \"../libs/fontFace.js\";\r\n\r\n/**\r\n * This plugin mimics the HTML5 CanvasRenderingContext2D.\r\n *\r\n * The goal is to provide a way for current canvas implementations to print directly to a PDF.\r\n *\r\n * @name context2d\r\n * @module\r\n */\r\n(function(jsPDFAPI) {\r\n \"use strict\";\r\n var ContextLayer = function(ctx) {\r\n ctx = ctx || {};\r\n this.isStrokeTransparent = ctx.isStrokeTransparent || false;\r\n this.strokeOpacity = ctx.strokeOpacity || 1;\r\n this.strokeStyle = ctx.strokeStyle || \"#000000\";\r\n this.fillStyle = ctx.fillStyle || \"#000000\";\r\n this.isFillTransparent = ctx.isFillTransparent || false;\r\n this.fillOpacity = ctx.fillOpacity || 1;\r\n this.font = ctx.font || \"10px sans-serif\";\r\n this.textBaseline = ctx.textBaseline || \"alphabetic\";\r\n this.textAlign = ctx.textAlign || \"left\";\r\n this.lineWidth = ctx.lineWidth || 1;\r\n this.lineJoin = ctx.lineJoin || \"miter\";\r\n this.lineCap = ctx.lineCap || \"butt\";\r\n this.path = ctx.path || [];\r\n this.transform =\r\n typeof ctx.transform !== \"undefined\"\r\n ? ctx.transform.clone()\r\n : new Matrix();\r\n this.globalCompositeOperation = ctx.globalCompositeOperation || \"normal\";\r\n this.globalAlpha = ctx.globalAlpha || 1.0;\r\n this.clip_path = ctx.clip_path || [];\r\n this.currentPoint = ctx.currentPoint || new Point();\r\n this.miterLimit = ctx.miterLimit || 10.0;\r\n this.lastPoint = ctx.lastPoint || new Point();\r\n this.lineDashOffset = ctx.lineDashOffset || 0.0;\r\n this.lineDash = ctx.lineDash || [];\r\n this.margin = ctx.margin || [0, 0, 0, 0];\r\n this.prevPageLastElemOffset = ctx.prevPageLastElemOffset || 0;\r\n\r\n this.ignoreClearRect =\r\n typeof ctx.ignoreClearRect === \"boolean\" ? ctx.ignoreClearRect : true;\r\n return this;\r\n };\r\n\r\n //stub\r\n var f2,\r\n getHorizontalCoordinateString,\r\n getVerticalCoordinateString,\r\n getHorizontalCoordinate,\r\n getVerticalCoordinate,\r\n Point,\r\n Rectangle,\r\n Matrix,\r\n _ctx;\r\n jsPDFAPI.events.push([\r\n \"initialized\",\r\n function() {\r\n this.context2d = new Context2D(this);\r\n\r\n f2 = this.internal.f2;\r\n getHorizontalCoordinateString = this.internal.getCoordinateString;\r\n getVerticalCoordinateString = this.internal.getVerticalCoordinateString;\r\n getHorizontalCoordinate = this.internal.getHorizontalCoordinate;\r\n getVerticalCoordinate = this.internal.getVerticalCoordinate;\r\n Point = this.internal.Point;\r\n Rectangle = this.internal.Rectangle;\r\n Matrix = this.internal.Matrix;\r\n _ctx = new ContextLayer();\r\n }\r\n ]);\r\n\r\n var Context2D = function(pdf) {\r\n Object.defineProperty(this, \"canvas\", {\r\n get: function() {\r\n return { parentNode: false, style: false };\r\n }\r\n });\r\n\r\n var _pdf = pdf;\r\n Object.defineProperty(this, \"pdf\", {\r\n get: function() {\r\n return _pdf;\r\n }\r\n });\r\n\r\n var _pageWrapXEnabled = false;\r\n /**\r\n * @name pageWrapXEnabled\r\n * @type {boolean}\r\n * @default false\r\n */\r\n Object.defineProperty(this, \"pageWrapXEnabled\", {\r\n get: function() {\r\n return _pageWrapXEnabled;\r\n },\r\n set: function(value) {\r\n _pageWrapXEnabled = Boolean(value);\r\n }\r\n });\r\n\r\n var _pageWrapYEnabled = false;\r\n /**\r\n * @name pageWrapYEnabled\r\n * @type {boolean}\r\n * @default true\r\n */\r\n Object.defineProperty(this, \"pageWrapYEnabled\", {\r\n get: function() {\r\n return _pageWrapYEnabled;\r\n },\r\n set: function(value) {\r\n _pageWrapYEnabled = Boolean(value);\r\n }\r\n });\r\n\r\n var _posX = 0;\r\n /**\r\n * @name posX\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"posX\", {\r\n get: function() {\r\n return _posX;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _posX = value;\r\n }\r\n }\r\n });\r\n\r\n var _posY = 0;\r\n /**\r\n * @name posY\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"posY\", {\r\n get: function() {\r\n return _posY;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _posY = value;\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Gets or sets the page margin when using auto paging. Has no effect when {@link autoPaging} is off.\r\n * @name margin\r\n * @type {number|number[]}\r\n * @default [0, 0, 0, 0]\r\n */\r\n Object.defineProperty(this, \"margin\", {\r\n get: function() {\r\n return _ctx.margin;\r\n },\r\n set: function(value) {\r\n var margin;\r\n if (typeof value === \"number\") {\r\n margin = [value, value, value, value];\r\n } else {\r\n margin = new Array(4);\r\n margin[0] = value[0];\r\n margin[1] = value.length >= 2 ? value[1] : margin[0];\r\n margin[2] = value.length >= 3 ? value[2] : margin[0];\r\n margin[3] = value.length >= 4 ? value[3] : margin[1];\r\n }\r\n _ctx.margin = margin;\r\n }\r\n });\r\n\r\n var _autoPaging = false;\r\n /**\r\n * Gets or sets the auto paging mode. When auto paging is enabled, the context2d will automatically draw on the\r\n * next page if a shape or text chunk doesn't fit entirely on the current page. The context2d will create new\r\n * pages if required.\r\n *\r\n * Context2d supports different modes:\r\n * <ul>\r\n * <li>\r\n * <code>false</code>: Auto paging is disabled.\r\n * </li>\r\n * <li>\r\n * <code>true</code> or <code>'slice'</code>: Will cut shapes or text chunks across page breaks. Will possibly\r\n * slice text in half, making it difficult to read.\r\n * </li>\r\n * <li>\r\n * <code>'text'</code>: Trys not to cut text in half across page breaks. Works best for documents consisting\r\n * mostly of a single column of text.\r\n * </li>\r\n * </ul>\r\n * @name Context2D#autoPaging\r\n * @type {boolean|\"slice\"|\"text\"}\r\n * @default false\r\n */\r\n Object.defineProperty(this, \"autoPaging\", {\r\n get: function() {\r\n return _autoPaging;\r\n },\r\n set: function(value) {\r\n _autoPaging = value;\r\n }\r\n });\r\n\r\n var lastBreak = 0;\r\n /**\r\n * @name lastBreak\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"lastBreak\", {\r\n get: function() {\r\n return lastBreak;\r\n },\r\n set: function(value) {\r\n lastBreak = value;\r\n }\r\n });\r\n\r\n var pageBreaks = [];\r\n /**\r\n * Y Position of page breaks.\r\n * @name pageBreaks\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"pageBreaks\", {\r\n get: function() {\r\n return pageBreaks;\r\n },\r\n set: function(value) {\r\n pageBreaks = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name ctx\r\n * @type {object}\r\n * @default {}\r\n */\r\n Object.defineProperty(this, \"ctx\", {\r\n get: function() {\r\n return _ctx;\r\n },\r\n set: function(value) {\r\n if (value instanceof ContextLayer) {\r\n _ctx = value;\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * @name path\r\n * @type {array}\r\n * @default []\r\n */\r\n Object.defineProperty(this, \"path\", {\r\n get: function() {\r\n return _ctx.path;\r\n },\r\n set: function(value) {\r\n _ctx.path = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name ctxStack\r\n * @type {array}\r\n * @default []\r\n */\r\n var _ctxStack = [];\r\n Object.defineProperty(this, \"ctxStack\", {\r\n get: function() {\r\n return _ctxStack;\r\n },\r\n set: function(value) {\r\n _ctxStack = value;\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the color, gradient, or pattern used to fill the drawing\r\n *\r\n * @name fillStyle\r\n * @default #000000\r\n * @property {(color|gradient|pattern)} value The color of the drawing. Default value is #000000<br />\r\n * A gradient object (linear or radial) used to fill the drawing (not supported by context2d)<br />\r\n * A pattern object to use to fill the drawing (not supported by context2d)\r\n */\r\n Object.defineProperty(this, \"fillStyle\", {\r\n get: function() {\r\n return this.ctx.fillStyle;\r\n },\r\n set: function(value) {\r\n var rgba;\r\n rgba = getRGBA(value);\r\n\r\n this.ctx.fillStyle = rgba.style;\r\n this.ctx.isFillTransparent = rgba.a === 0;\r\n this.ctx.fillOpacity = rgba.a;\r\n\r\n this.pdf.setFillColor(rgba.r, rgba.g, rgba.b, { a: rgba.a });\r\n this.pdf.setTextColor(rgba.r, rgba.g, rgba.b, { a: rgba.a });\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the color, gradient, or pattern used for strokes\r\n *\r\n * @name strokeStyle\r\n * @default #000000\r\n * @property {color} color A CSS color value that indicates the stroke color of the drawing. Default value is #000000 (not supported by context2d)\r\n * @property {gradient} gradient A gradient object (linear or radial) used to create a gradient stroke (not supported by context2d)\r\n * @property {pattern} pattern A pattern object used to create a pattern stroke (not supported by context2d)\r\n */\r\n Object.defineProperty(this, \"strokeStyle\", {\r\n get: function() {\r\n return this.ctx.strokeStyle;\r\n },\r\n set: function(value) {\r\n var rgba = getRGBA(value);\r\n\r\n this.ctx.strokeStyle = rgba.style;\r\n this.ctx.isStrokeTransparent = rgba.a === 0;\r\n this.ctx.strokeOpacity = rgba.a;\r\n\r\n if (rgba.a === 0) {\r\n this.pdf.setDrawColor(255, 255, 255);\r\n } else if (rgba.a === 1) {\r\n this.pdf.setDrawColor(rgba.r, rgba.g, rgba.b);\r\n } else {\r\n this.pdf.setDrawColor(rgba.r, rgba.g, rgba.b);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the style of the end caps for a line\r\n *\r\n * @name lineCap\r\n * @default butt\r\n * @property {(butt|round|square)} lineCap butt A flat edge is added to each end of the line <br/>\r\n * round A rounded end cap is added to each end of the line<br/>\r\n * square A square end cap is added to each end of the line<br/>\r\n */\r\n Object.defineProperty(this, \"lineCap\", {\r\n get: function() {\r\n return this.ctx.lineCap;\r\n },\r\n set: function(value) {\r\n if ([\"butt\", \"round\", \"square\"].indexOf(value) !== -1) {\r\n this.ctx.lineCap = value;\r\n this.pdf.setLineCap(value);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the current line width\r\n *\r\n * @name lineWidth\r\n * @default 1\r\n * @property {number} lineWidth The current line width, in pixels\r\n */\r\n Object.defineProperty(this, \"lineWidth\", {\r\n get: function() {\r\n return this.ctx.lineWidth;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n this.ctx.lineWidth = value;\r\n this.pdf.setLineWidth(value);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the type of corner created, when two lines meet\r\n */\r\n Object.defineProperty(this, \"lineJoin\", {\r\n get: function() {\r\n return this.ctx.lineJoin;\r\n },\r\n set: function(value) {\r\n if ([\"bevel\", \"round\", \"miter\"].indexOf(value) !== -1) {\r\n this.ctx.lineJoin = value;\r\n this.pdf.setLineJoin(value);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * A number specifying the miter limit ratio in coordinate space units. Zero, negative, Infinity, and NaN values are ignored. The default value is 10.0.\r\n *\r\n * @name miterLimit\r\n * @default 10\r\n */\r\n Object.defineProperty(this, \"miterLimit\", {\r\n get: function() {\r\n return this.ctx.miterLimit;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n this.ctx.miterLimit = value;\r\n this.pdf.setMiterLimit(value);\r\n }\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"textBaseline\", {\r\n get: function() {\r\n return this.ctx.textBaseline;\r\n },\r\n set: function(value) {\r\n this.ctx.textBaseline = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"textAlign\", {\r\n get: function() {\r\n return this.ctx.textAlign;\r\n },\r\n set: function(value) {\r\n if ([\"right\", \"end\", \"center\", \"left\", \"start\"].indexOf(value) !== -1) {\r\n this.ctx.textAlign = value;\r\n }\r\n }\r\n });\r\n\r\n var _fontFaceMap = null;\r\n\r\n function getFontFaceMap(pdf, fontFaces) {\r\n if (_fontFaceMap === null) {\r\n var fontMap = pdf.getFontList();\r\n\r\n var convertedFontFaces = convertToFontFaces(fontMap);\r\n\r\n _fontFaceMap = buildFontFaceMap(convertedFontFaces.concat(fontFaces));\r\n }\r\n\r\n return _fontFaceMap;\r\n }\r\n\r\n function convertToFontFaces(fontMap) {\r\n var fontFaces = [];\r\n\r\n Object.keys(fontMap).forEach(function(family) {\r\n var styles = fontMap[family];\r\n\r\n styles.forEach(function(style) {\r\n var fontFace = null;\r\n\r\n switch (style) {\r\n case \"bold\":\r\n fontFace = {\r\n family: family,\r\n weight: \"bold\"\r\n };\r\n break;\r\n\r\n case \"italic\":\r\n fontFace = {\r\n family: family,\r\n style: \"italic\"\r\n };\r\n break;\r\n\r\n case \"bolditalic\":\r\n fontFace = {\r\n family: family,\r\n weight: \"bold\",\r\n style: \"italic\"\r\n };\r\n break;\r\n\r\n case \"\":\r\n case \"normal\":\r\n fontFace = {\r\n family: family\r\n };\r\n break;\r\n }\r\n\r\n // If font-face is still null here, it is a font with some styling we don't recognize and\r\n // cannot map or it is a font added via the fontFaces option of .html().\r\n if (fontFace !== null) {\r\n fontFace.ref = {\r\n name: family,\r\n style: style\r\n };\r\n\r\n fontFaces.push(fontFace);\r\n }\r\n });\r\n });\r\n\r\n return fontFaces;\r\n }\r\n\r\n var _fontFaces = null;\r\n /**\r\n * A map of available font-faces, as passed in the options of\r\n * .html(). If set a limited implementation of the font style matching\r\n * algorithm defined by https://www.w3.org/TR/css-fonts-3/#font-matching-algorithm\r\n * will be used. If not set it will fallback to previous behavior.\r\n */\r\n\r\n Object.defineProperty(this, \"fontFaces\", {\r\n get: function() {\r\n return _fontFaces;\r\n },\r\n set: function(value) {\r\n _fontFaceMap = null;\r\n _fontFaces = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"font\", {\r\n get: function() {\r\n return this.ctx.font;\r\n },\r\n set: function(value) {\r\n this.ctx.font = value;\r\n var rx, matches;\r\n\r\n //source: https://stackoverflow.com/a/10136041\r\n // eslint-disable-next-line no-useless-escape\r\n rx = /^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-_,\\\"\\'\\sa-z]+?)\\s*$/i;\r\n matches = rx.exec(value);\r\n if (matches !== null) {\r\n var fontStyle = matches[1];\r\n var fontVariant = matches[2];\r\n var fontWeight = matches[3];\r\n var fontSize = matches[4];\r\n var lineHeight = matches[5];\r\n var fontFamily = matches[6];\r\n } else {\r\n return;\r\n }\r\n var rxFontSize = /^([.\\d]+)((?:%|in|[cem]m|ex|p[ctx]))$/i;\r\n var fontSizeUnit = rxFontSize.exec(fontSize)[2];\r\n\r\n if (\"px\" === fontSizeUnit) {\r\n fontSize = Math.floor(\r\n parseFloat(fontSize) * this.pdf.internal.scaleFactor\r\n );\r\n } else if (\"em\" === fontSizeUnit) {\r\n fontSize = Math.floor(parseFloat(fontSize) * this.pdf.getFontSize());\r\n } else {\r\n fontSize = Math.floor(\r\n parseFloat(fontSize) * this.pdf.internal.scaleFactor\r\n );\r\n }\r\n\r\n this.pdf.setFontSize(fontSize);\r\n var parts = parseFontFamily(fontFamily);\r\n\r\n if (this.fontFaces) {\r\n var fontFaceMap = getFontFaceMap(this.pdf, this.fontFaces);\r\n\r\n var rules = parts.map(function(ff) {\r\n return {\r\n family: ff,\r\n stretch: \"normal\", // TODO: Extract font-stretch from font rule (perhaps write proper parser for it?)\r\n weight: fontWeight,\r\n style: fontStyle\r\n };\r\n });\r\n\r\n var font = resolveFontFace(fontFaceMap, rules);\r\n this.pdf.setFont(font.ref.name, font.ref.style);\r\n return;\r\n }\r\n\r\n var style = \"\";\r\n if (\r\n fontWeight === \"bold\" ||\r\n parseInt(fontWeight, 10) >= 700 ||\r\n fontStyle === \"bold\"\r\n ) {\r\n style = \"bold\";\r\n }\r\n\r\n if (fontStyle === \"italic\") {\r\n style += \"italic\";\r\n }\r\n\r\n if (style.length === 0) {\r\n style = \"normal\";\r\n }\r\n var jsPdfFontName = \"\";\r\n\r\n var fallbackFonts = {\r\n arial: \"Helvetica\",\r\n Arial: \"Helvetica\",\r\n verdana: \"Helvetica\",\r\n Verdana: \"Helvetica\",\r\n helvetica: \"Helvetica\",\r\n Helvetica: \"Helvetica\",\r\n \"sans-serif\": \"Helvetica\",\r\n fixed: \"Courier\",\r\n monospace: \"Courier\",\r\n terminal: \"Courier\",\r\n cursive: \"Times\",\r\n fantasy: \"Times\",\r\n serif: \"Times\"\r\n };\r\n\r\n for (var i = 0; i < parts.length; i++) {\r\n if (\r\n this.pdf.internal.getFont(parts[i], style, {\r\n noFallback: true,\r\n disableWarning: true\r\n }) !== undefined\r\n ) {\r\n jsPdfFontName = parts[i];\r\n break;\r\n } else if (\r\n style === \"bolditalic\" &&\r\n this.pdf.internal.getFont(parts[i], \"bold\", {\r\n noFallback: true,\r\n disableWarning: true\r\n }) !== undefined\r\n ) {\r\n jsPdfFontName = parts[i];\r\n style = \"bold\";\r\n } else if (\r\n this.pdf.internal.getFont(parts[i], \"normal\", {\r\n noFallback: true,\r\n disableWarning: true\r\n }) !== undefined\r\n ) {\r\n jsPdfFontName = parts[i];\r\n style = \"normal\";\r\n break;\r\n }\r\n }\r\n if (jsPdfFontName === \"\") {\r\n for (var j = 0; j < parts.length; j++) {\r\n if (fallbackFonts[parts[j]]) {\r\n jsPdfFontName = fallbackFonts[parts[j]];\r\n break;\r\n }\r\n }\r\n }\r\n jsPdfFontName = jsPdfFontName === \"\" ? \"Times\" : jsPdfFontName;\r\n this.pdf.setFont(jsPdfFontName, style);\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"globalCompositeOperation\", {\r\n get: function() {\r\n return this.ctx.globalCompositeOperation;\r\n },\r\n set: function(value) {\r\n this.ctx.globalCompositeOperation = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"globalAlpha\", {\r\n get: function() {\r\n return this.ctx.globalAlpha;\r\n },\r\n set: function(value) {\r\n this.ctx.globalAlpha = value;\r\n }\r\n });\r\n\r\n /**\r\n * A float specifying the amount of the line dash offset. The default value is 0.0.\r\n *\r\n * @name lineDashOffset\r\n * @default 0.0\r\n */\r\n Object.defineProperty(this, \"lineDashOffset\", {\r\n get: function() {\r\n return this.ctx.lineDashOffset;\r\n },\r\n set: function(value) {\r\n this.ctx.lineDashOffset = value;\r\n setLineDash.call(this);\r\n }\r\n });\r\n\r\n // Not HTML API\r\n Object.defineProperty(this, \"lineDash\", {\r\n get: function() {\r\n return this.ctx.lineDash;\r\n },\r\n set: function(value) {\r\n this.ctx.lineDash = value;\r\n setLineDash.call(this);\r\n }\r\n });\r\n\r\n // Not HTML API\r\n Object.defineProperty(this, \"ignoreClearRect\", {\r\n get: function() {\r\n return this.ctx.ignoreClearRect;\r\n },\r\n set: function(value) {\r\n this.ctx.ignoreClearRect = Boolean(value);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Sets the line dash pattern used when stroking lines.\r\n * @name setLineDash\r\n * @function\r\n * @description It uses an array of values that specify alternating lengths of lines and gaps which describe the pattern.\r\n */\r\n Context2D.prototype.setLineDash = function(dashArray) {\r\n this.lineDash = dashArray;\r\n };\r\n\r\n /**\r\n * gets the current line dash pattern.\r\n * @name getLineDash\r\n * @function\r\n * @returns {Array} An Array of numbers that specify distances to alternately draw a line and a gap (in coordinate space units). If the number, when setting the elements, is odd, the elements of the array get copied and concatenated. For example, setting the line dash to [5, 15, 25] will result in getting back [5, 15, 25, 5, 15, 25].\r\n */\r\n Context2D.prototype.getLineDash = function() {\r\n if (this.lineDash.length % 2) {\r\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/getLineDash#return_value\r\n return this.lineDash.concat(this.lineDash);\r\n } else {\r\n // The copied value is returned to prevent contamination from outside.\r\n return this.lineDash.slice();\r\n }\r\n };\r\n\r\n Context2D.prototype.fill = function() {\r\n pathPreProcess.call(this, \"fill\", false);\r\n };\r\n\r\n /**\r\n * Actually draws the path you have defined\r\n *\r\n * @name stroke\r\n * @function\r\n * @description The stroke() method actually draws the path you have defined with all those moveTo() and lineTo() methods. The default color is black.\r\n */\r\n Context2D.prototype.stroke = function() {\r\n pathPreProcess.call(this, \"stroke\", false);\r\n };\r\n\r\n /**\r\n * Begins a path, or resets the current\r\n *\r\n * @name beginPath\r\n * @function\r\n * @description The beginPath() method begins a path, or resets the current path.\r\n */\r\n Context2D.prototype.beginPath = function() {\r\n this.path = [\r\n {\r\n type: \"begin\"\r\n }\r\n ];\r\n };\r\n\r\n /**\r\n * Moves the path to the specified point in the canvas, without creating a line\r\n *\r\n * @name moveTo\r\n * @function\r\n * @param x {Number} The x-coordinate of where to move the path to\r\n * @param y {Number} The y-coordinate of where to move the path to\r\n */\r\n Context2D.prototype.moveTo = function(x, y) {\r\n if (isNaN(x) || isNaN(y)) {\r\n console.error(\"jsPDF.context2d.moveTo: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.moveTo\");\r\n }\r\n\r\n var pt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n\r\n this.path.push({\r\n type: \"mt\",\r\n x: pt.x,\r\n y: pt.y\r\n });\r\n this.ctx.lastPoint = new Point(x, y);\r\n };\r\n\r\n /**\r\n * Creates a path from the current point back to the starting point\r\n *\r\n * @name closePath\r\n * @function\r\n * @description The closePath() method creates a path from the current point back to the starting point.\r\n */\r\n Context2D.prototype.closePath = function() {\r\n var pathBegin = new Point(0, 0);\r\n var i = 0;\r\n for (i = this.path.length - 1; i !== -1; i--) {\r\n if (this.path[i].type === \"begin\") {\r\n if (\r\n typeof this.path[i + 1] === \"object\" &&\r\n typeof this.path[i + 1].x === \"number\"\r\n ) {\r\n pathBegin = new Point(this.path[i + 1].x, this.path[i + 1].y);\r\n break;\r\n }\r\n }\r\n }\r\n this.path.push({\r\n type: \"close\"\r\n });\r\n this.ctx.lastPoint = new Point(pathBegin.x, pathBegin.y);\r\n };\r\n\r\n /**\r\n * Adds a new point and creates a line to that point from the last specified point in the canvas\r\n *\r\n * @name lineTo\r\n * @function\r\n * @param x The x-coordinate of where to create the line to\r\n * @param y The y-coordinate of where to create the line to\r\n * @description The lineTo() method adds a new point and creates a line TO that point FROM the last specified point in the canvas (this method does not draw the line).\r\n */\r\n Context2D.prototype.lineTo = function(x, y) {\r\n if (isNaN(x) || isNaN(y)) {\r\n console.error(\"jsPDF.context2d.lineTo: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.lineTo\");\r\n }\r\n\r\n var pt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n\r\n this.path.push({\r\n type: \"lt\",\r\n x: pt.x,\r\n y: pt.y\r\n });\r\n this.ctx.lastPoint = new Point(pt.x, pt.y);\r\n };\r\n\r\n /**\r\n * Clips a region of any shape and size from the original canvas\r\n *\r\n * @name clip\r\n * @function\r\n * @description The clip() method clips a region of any shape and size from the original canvas.\r\n */\r\n Context2D.prototype.clip = function() {\r\n this.ctx.clip_path = JSON.parse(JSON.stringify(this.path));\r\n pathPreProcess.call(this, null, true);\r\n };\r\n\r\n /**\r\n * Creates a cubic Bézier curve\r\n *\r\n * @name quadraticCurveTo\r\n * @function\r\n * @param cpx {Number} The x-coordinate of the Bézier control point\r\n * @param cpy {Number} The y-coordinate of the Bézier control point\r\n * @param x {Number} The x-coordinate of the ending point\r\n * @param y {Number} The y-coordinate of the ending point\r\n * @description The quadraticCurveTo() method adds a point to the current path by using the specified control points that represent a quadratic Bézier curve.<br /><br /> A quadratic Bézier curve requires two points. The first point is a control point that is used in the quadratic Bézier calculation and the second point is the ending point for the curve. The starting point for the curve is the last point in the current path. If a path does not exist, use the beginPath() and moveTo() methods to define a starting point.\r\n */\r\n Context2D.prototype.quadraticCurveTo = function(cpx, cpy, x, y) {\r\n if (isNaN(x) || isNaN(y) || isNaN(cpx) || isNaN(cpy)) {\r\n console.error(\r\n \"jsPDF.context2d.quadraticCurveTo: Invalid arguments\",\r\n arguments\r\n );\r\n throw new Error(\r\n \"Invalid arguments passed to jsPDF.context2d.quadraticCurveTo\"\r\n );\r\n }\r\n\r\n var pt0 = this.ctx.transform.applyToPoint(new Point(x, y));\r\n var pt1 = this.ctx.transform.applyToPoint(new Point(cpx, cpy));\r\n\r\n this.path.push({\r\n type: \"qct\",\r\n x1: pt1.x,\r\n y1: pt1.y,\r\n x: pt0.x,\r\n y: pt0.y\r\n });\r\n this.ctx.lastPoint = new Point(pt0.x, pt0.y);\r\n };\r\n\r\n /**\r\n * Creates a cubic Bézier curve\r\n *\r\n * @name bezierCurveTo\r\n * @function\r\n * @param cp1x {Number} The x-coordinate of the first Bézier control point\r\n * @param cp1y {Number} The y-coordinate of the first Bézier control point\r\n * @param cp2x {Number} The x-coordinate of the second Bézier control point\r\n * @param cp2y {Number} The y-coordinate of the second Bézier control point\r\n * @param x {Number} The x-coordinate of the ending point\r\n * @param y {Number} The y-coordinate of the ending point\r\n * @description The bezierCurveTo() method adds a point to the current path by using the specified control points that represent a cubic Bézier curve. <br /><br />A cubic bezier curve requires three points. The first two points are control points that are used in the cubic Bézier calculation and the last point is the ending point for the curve. The starting point for the curve is the last point in the current path. If a path does not exist, use the beginPath() and moveTo() methods to define a starting point.\r\n */\r\n Context2D.prototype.bezierCurveTo = function(cp1x, cp1y, cp2x, cp2y, x, y) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(cp1x) ||\r\n isNaN(cp1y) ||\r\n isNaN(cp2x) ||\r\n isNaN(cp2y)\r\n ) {\r\n console.error(\r\n \"jsPDF.context2d.bezierCurveTo: Invalid arguments\",\r\n arguments\r\n );\r\n throw new Error(\r\n \"Invalid arguments passed to jsPDF.context2d.bezierCurveTo\"\r\n );\r\n }\r\n var pt0 = this.ctx.transform.applyToPoint(new Point(x, y));\r\n var pt1 = this.ctx.transform.applyToPoint(new Point(cp1x, cp1y));\r\n var pt2 = this.ctx.transform.applyToPoint(new Point(cp2x, cp2y));\r\n\r\n this.path.push({\r\n type: \"bct\",\r\n x1: pt1.x,\r\n y1: pt1.y,\r\n x2: pt2.x,\r\n y2: pt2.y,\r\n x: pt0.x,\r\n y: pt0.y\r\n });\r\n this.ctx.lastPoint = new Point(pt0.x, pt0.y);\r\n };\r\n\r\n /**\r\n * Creates an arc/curve (used to create circles, or parts of circles)\r\n *\r\n * @name arc\r\n * @function\r\n * @param x {Number} The x-coordinate of the center of the circle\r\n * @param y {Number} The y-coordinate of the center of the circle\r\n * @param radius {Number} The radius of the circle\r\n * @param startAngle {Number} The starting angle, in radians (0 is at the 3 o'clock position of the arc's circle)\r\n * @param endAngle {Number} The ending angle, in radians\r\n * @param counterclockwise {Boolean} Optional. Specifies whether the drawing should be counterclockwise or clockwise. False is default, and indicates clockwise, while true indicates counter-clockwise.\r\n * @description The arc() method creates an arc/curve (used to create circles, or parts of circles).\r\n */\r\n Context2D.prototype.arc = function(\r\n x,\r\n y,\r\n radius,\r\n startAngle,\r\n endAngle,\r\n counterclockwise\r\n ) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(radius) ||\r\n isNaN(startAngle) ||\r\n isNaN(endAngle)\r\n ) {\r\n console.error(\"jsPDF.context2d.arc: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.arc\");\r\n }\r\n counterclockwise = Boolean(counterclockwise);\r\n\r\n if (!this.ctx.transform.isIdentity) {\r\n var xpt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n x = xpt.x;\r\n y = xpt.y;\r\n\r\n var x_radPt = this.ctx.transform.applyToPoint(new Point(0, radius));\r\n var x_radPt0 = this.ctx.transform.applyToPoint(new Point(0, 0));\r\n radius = Math.sqrt(\r\n Math.pow(x_radPt.x - x_radPt0.x, 2) +\r\n Math.pow(x_radPt.y - x_radPt0.y, 2)\r\n );\r\n }\r\n if (Math.abs(endAngle - startAngle) >= 2 * Math.PI) {\r\n startAngle = 0;\r\n endAngle = 2 * Math.PI;\r\n }\r\n\r\n this.path.push({\r\n type: \"arc\",\r\n x: x,\r\n y: y,\r\n radius: radius,\r\n startAngle: startAngle,\r\n endAngle: endAngle,\r\n counterclockwise: counterclockwise\r\n });\r\n // this.ctx.lastPoint(new Point(pt.x,pt.y));\r\n };\r\n\r\n /**\r\n * Creates an arc/curve between two tangents\r\n *\r\n * @name arcTo\r\n * @function\r\n * @param x1 {Number} The x-coordinate of the first tangent\r\n * @param y1 {Number} The y-coordinate of the first tangent\r\n * @param x2 {Number} The x-coordinate of the second tangent\r\n * @param y2 {Number} The y-coordinate of the second tangent\r\n * @param radius The radius of the arc\r\n * @description The arcTo() method creates an arc/curve between two tangents on the canvas.\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n Context2D.prototype.arcTo = function(x1, y1, x2, y2, radius) {\r\n throw new Error(\"arcTo not implemented.\");\r\n };\r\n\r\n /**\r\n * Creates a rectangle\r\n *\r\n * @name rect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle, in pixels\r\n * @param h {Number} The height of the rectangle, in pixels\r\n * @description The rect() method creates a rectangle.\r\n */\r\n Context2D.prototype.rect = function(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.rect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.rect\");\r\n }\r\n this.moveTo(x, y);\r\n this.lineTo(x + w, y);\r\n this.lineTo(x + w, y + h);\r\n this.lineTo(x, y + h);\r\n this.lineTo(x, y);\r\n this.lineTo(x + w, y);\r\n this.lineTo(x, y);\r\n };\r\n\r\n /**\r\n * Draws a \"filled\" rectangle\r\n *\r\n * @name fillRect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle, in pixels\r\n * @param h {Number} The height of the rectangle, in pixels\r\n * @description The fillRect() method draws a \"filled\" rectangle. The default color of the fill is black.\r\n */\r\n Context2D.prototype.fillRect = function(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.fillRect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.fillRect\");\r\n }\r\n if (isFillTransparent.call(this)) {\r\n return;\r\n }\r\n var tmp = {};\r\n if (this.lineCap !== \"butt\") {\r\n tmp.lineCap = this.lineCap;\r\n this.lineCap = \"butt\";\r\n }\r\n if (this.lineJoin !== \"miter\") {\r\n tmp.lineJoin = this.lineJoin;\r\n this.lineJoin = \"miter\";\r\n }\r\n\r\n this.beginPath();\r\n this.rect(x, y, w, h);\r\n this.fill();\r\n\r\n if (tmp.hasOwnProperty(\"lineCap\")) {\r\n this.lineCap = tmp.lineCap;\r\n }\r\n if (tmp.hasOwnProperty(\"lineJoin\")) {\r\n this.lineJoin = tmp.lineJoin;\r\n }\r\n };\r\n\r\n /**\r\n * Draws a rectangle (no fill)\r\n *\r\n * @name strokeRect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle, in pixels\r\n * @param h {Number} The height of the rectangle, in pixels\r\n * @description The strokeRect() method draws a rectangle (no fill). The default color of the stroke is black.\r\n */\r\n Context2D.prototype.strokeRect = function strokeRect(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.strokeRect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.strokeRect\");\r\n }\r\n if (isStrokeTransparent.call(this)) {\r\n return;\r\n }\r\n this.beginPath();\r\n this.rect(x, y, w, h);\r\n this.stroke();\r\n };\r\n\r\n /**\r\n * Clears the specified pixels within a given rectangle\r\n *\r\n * @name clearRect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle to clear, in pixels\r\n * @param h {Number} The height of the rectangle to clear, in pixels\r\n * @description We cannot clear PDF commands that were already written to PDF, so we use white instead. <br />\r\n * As a special case, read a special flag (ignoreClearRect) and do nothing if it is set.\r\n * This results in all calls to clearRect() to do nothing, and keep the canvas transparent.\r\n * This flag is stored in the save/restore context and is managed the same way as other drawing states.\r\n *\r\n */\r\n Context2D.prototype.clearRect = function(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.clearRect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.clearRect\");\r\n }\r\n if (this.ignoreClearRect) {\r\n return;\r\n }\r\n\r\n this.fillStyle = \"#ffffff\";\r\n this.fillRect(x, y, w, h);\r\n };\r\n\r\n /**\r\n * Saves the state of the current context\r\n *\r\n * @name save\r\n * @function\r\n */\r\n Context2D.prototype.save = function(doStackPush) {\r\n doStackPush = typeof doStackPush === \"boolean\" ? doStackPush : true;\r\n var tmpPageNumber = this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n for (var i = 0; i < this.pdf.internal.getNumberOfPages(); i++) {\r\n this.pdf.setPage(i + 1);\r\n this.pdf.internal.out(\"q\");\r\n }\r\n this.pdf.setPage(tmpPageNumber);\r\n\r\n if (doStackPush) {\r\n this.ctx.fontSize = this.pdf.internal.getFontSize();\r\n var ctx = new ContextLayer(this.ctx);\r\n this.ctxStack.push(this.ctx);\r\n this.ctx = ctx;\r\n }\r\n };\r\n\r\n /**\r\n * Returns previously saved path state and attributes\r\n *\r\n * @name restore\r\n * @function\r\n */\r\n Context2D.prototype.restore = function(doStackPop) {\r\n doStackPop = typeof doStackPop === \"boolean\" ? doStackPop : true;\r\n var tmpPageNumber = this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n for (var i = 0; i < this.pdf.internal.getNumberOfPages(); i++) {\r\n this.pdf.setPage(i + 1);\r\n this.pdf.internal.out(\"Q\");\r\n }\r\n this.pdf.setPage(tmpPageNumber);\r\n\r\n if (doStackPop && this.ctxStack.length !== 0) {\r\n this.ctx = this.ctxStack.pop();\r\n this.fillStyle = this.ctx.fillStyle;\r\n this.strokeStyle = this.ctx.strokeStyle;\r\n this.font = this.ctx.font;\r\n this.lineCap = this.ctx.lineCap;\r\n this.lineWidth = this.ctx.lineWidth;\r\n this.lineJoin = this.ctx.lineJoin;\r\n this.lineDash = this.ctx.lineDash;\r\n this.lineDashOffset = this.ctx.lineDashOffset;\r\n }\r\n };\r\n\r\n /**\r\n * @name toDataURL\r\n * @function\r\n */\r\n Context2D.prototype.toDataURL = function() {\r\n throw new Error(\"toDataUrl not implemented.\");\r\n };\r\n\r\n //helper functions\r\n\r\n /**\r\n * Get the decimal values of r, g, b and a\r\n *\r\n * @name getRGBA\r\n * @function\r\n * @private\r\n * @ignore\r\n */\r\n var getRGBA = function(style) {\r\n var rxRgb = /rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/;\r\n var rxRgba = /rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d.]+)\\s*\\)/;\r\n var rxTransparent = /transparent|rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*0+\\s*\\)/;\r\n\r\n var r, g, b, a;\r\n\r\n if (style.isCanvasGradient === true) {\r\n style = style.getColor();\r\n }\r\n\r\n if (!style) {\r\n return { r: 0, g: 0, b: 0, a: 0, style: style };\r\n }\r\n\r\n if (rxTransparent.test(style)) {\r\n r = 0;\r\n g = 0;\r\n b = 0;\r\n a = 0;\r\n } else {\r\n var matches = rxRgb.exec(style);\r\n if (matches !== null) {\r\n r = parseInt(matches[1]);\r\n g = parseInt(matches[2]);\r\n b = parseInt(matches[3]);\r\n a = 1;\r\n } else {\r\n matches = rxRgba.exec(style);\r\n if (matches !== null) {\r\n r = parseInt(matches[1]);\r\n g = parseInt(matches[2]);\r\n b = parseInt(matches[3]);\r\n a = parseFloat(matches[4]);\r\n } else {\r\n a = 1;\r\n\r\n if (typeof style === \"string\" && style.charAt(0) !== \"#\") {\r\n var rgbColor = new RGBColor(style);\r\n if (rgbColor.ok) {\r\n style = rgbColor.toHex();\r\n } else {\r\n style = \"#000000\";\r\n }\r\n }\r\n\r\n if (style.length === 4) {\r\n r = style.substring(1, 2);\r\n r += r;\r\n g = style.substring(2, 3);\r\n g += g;\r\n b = style.substring(3, 4);\r\n b += b;\r\n } else {\r\n r = style.substring(1, 3);\r\n g = style.substring(3, 5);\r\n b = style.substring(5, 7);\r\n }\r\n r = parseInt(r, 16);\r\n g = parseInt(g, 16);\r\n b = parseInt(b, 16);\r\n }\r\n }\r\n }\r\n return { r: r, g: g, b: b, a: a, style: style };\r\n };\r\n\r\n /**\r\n * @name isFillTransparent\r\n * @function\r\n * @private\r\n * @ignore\r\n * @returns {Boolean}\r\n */\r\n var isFillTransparent = function() {\r\n return this.ctx.isFillTransparent || this.globalAlpha == 0;\r\n };\r\n\r\n /**\r\n * @name isStrokeTransparent\r\n * @function\r\n * @private\r\n * @ignore\r\n * @returns {Boolean}\r\n */\r\n var isStrokeTransparent = function() {\r\n return Boolean(this.ctx.isStrokeTransparent || this.globalAlpha == 0);\r\n };\r\n\r\n /**\r\n * Draws \"filled\" text on the canvas\r\n *\r\n * @name fillText\r\n * @function\r\n * @param text {String} Specifies the text that will be written on the canvas\r\n * @param x {Number} The x coordinate where to start painting the text (relative to the canvas)\r\n * @param y {Number} The y coordinate where to start painting the text (relative to the canvas)\r\n * @param maxWidth {Number} Optional. The maximum allowed width of the text, in pixels\r\n * @description The fillText() method draws filled text on the canvas. The default color of the text is black.\r\n */\r\n Context2D.prototype.fillText = function(text, x, y, maxWidth) {\r\n if (isNaN(x) || isNaN(y) || typeof text !== \"string\") {\r\n console.error(\"jsPDF.context2d.fillText: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.fillText\");\r\n }\r\n maxWidth = isNaN(maxWidth) ? undefined : maxWidth;\r\n if (isFillTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n var degs = rad2deg(this.ctx.transform.rotation);\r\n\r\n // We only use X axis as scale hint\r\n var scale = this.ctx.transform.scaleX;\r\n\r\n putText.call(this, {\r\n text: text,\r\n x: x,\r\n y: y,\r\n scale: scale,\r\n angle: degs,\r\n align: this.textAlign,\r\n maxWidth: maxWidth\r\n });\r\n };\r\n\r\n /**\r\n * Draws text on the canvas (no fill)\r\n *\r\n * @name strokeText\r\n * @function\r\n * @param text {String} Specifies the text that will be written on the canvas\r\n * @param x {Number} The x coordinate where to start painting the text (relative to the canvas)\r\n * @param y {Number} The y coordinate where to start painting the text (relative to the canvas)\r\n * @param maxWidth {Number} Optional. The maximum allowed width of the text, in pixels\r\n * @description The strokeText() method draws text (with no fill) on the canvas. The default color of the text is black.\r\n */\r\n Context2D.prototype.strokeText = function(text, x, y, maxWidth) {\r\n if (isNaN(x) || isNaN(y) || typeof text !== \"string\") {\r\n console.error(\"jsPDF.context2d.strokeText: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.strokeText\");\r\n }\r\n if (isStrokeTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n maxWidth = isNaN(maxWidth) ? undefined : maxWidth;\r\n\r\n var degs = rad2deg(this.ctx.transform.rotation);\r\n var scale = this.ctx.transform.scaleX;\r\n\r\n putText.call(this, {\r\n text: text,\r\n x: x,\r\n y: y,\r\n scale: scale,\r\n renderingMode: \"stroke\",\r\n angle: degs,\r\n align: this.textAlign,\r\n maxWidth: maxWidth\r\n });\r\n };\r\n\r\n /**\r\n * Returns an object that contains the width of the specified text\r\n *\r\n * @name measureText\r\n * @function\r\n * @param text {String} The text to be measured\r\n * @description The measureText() method returns an object that contains the width of the specified text, in pixels.\r\n * @returns {Number}\r\n */\r\n Context2D.prototype.measureText = function(text) {\r\n if (typeof text !== \"string\") {\r\n console.error(\r\n \"jsPDF.context2d.measureText: Invalid arguments\",\r\n arguments\r\n );\r\n throw new Error(\r\n \"Invalid arguments passed to jsPDF.context2d.measureText\"\r\n );\r\n }\r\n var pdf = this.pdf;\r\n var k = this.pdf.internal.scaleFactor;\r\n\r\n var fontSize = pdf.internal.getFontSize();\r\n var txtWidth =\r\n (pdf.getStringUnitWidth(text) * fontSize) / pdf.internal.scaleFactor;\r\n txtWidth *= Math.round(((k * 96) / 72) * 10000) / 10000;\r\n\r\n var TextMetrics = function(options) {\r\n options = options || {};\r\n var _width = options.width || 0;\r\n Object.defineProperty(this, \"width\", {\r\n get: function() {\r\n return _width;\r\n }\r\n });\r\n return this;\r\n };\r\n return new TextMetrics({ width: txtWidth });\r\n };\r\n\r\n //Transformations\r\n\r\n /**\r\n * Scales the current drawing bigger or smaller\r\n *\r\n * @name scale\r\n * @function\r\n * @param scalewidth {Number} Scales the width of the current drawing (1=100%, 0.5=50%, 2=200%, etc.)\r\n * @param scaleheight {Number} Scales the height of the current drawing (1=100%, 0.5=50%, 2=200%, etc.)\r\n * @description The scale() method scales the current drawing, bigger or smaller.\r\n */\r\n Context2D.prototype.scale = function(scalewidth, scaleheight) {\r\n if (isNaN(scalewidth) || isNaN(scaleheight)) {\r\n console.error(\"jsPDF.context2d.scale: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.scale\");\r\n }\r\n var matrix = new Matrix(scalewidth, 0.0, 0.0, scaleheight, 0.0, 0.0);\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Rotates the current drawing\r\n *\r\n * @name rotate\r\n * @function\r\n * @param angle {Number} The rotation angle, in radians.\r\n * @description To calculate from degrees to radians: degrees*Math.PI/180. <br />\r\n * Example: to rotate 5 degrees, specify the following: 5*Math.PI/180\r\n */\r\n Context2D.prototype.rotate = function(angle) {\r\n if (isNaN(angle)) {\r\n console.error(\"jsPDF.context2d.rotate: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.rotate\");\r\n }\r\n var matrix = new Matrix(\r\n Math.cos(angle),\r\n Math.sin(angle),\r\n -Math.sin(angle),\r\n Math.cos(angle),\r\n 0.0,\r\n 0.0\r\n );\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Remaps the (0,0) position on the canvas\r\n *\r\n * @name translate\r\n * @function\r\n * @param x {Number} The value to add to horizontal (x) coordinates\r\n * @param y {Number} The value to add to vertical (y) coordinates\r\n * @description The translate() method remaps the (0,0) position on the canvas.\r\n */\r\n Context2D.prototype.translate = function(x, y) {\r\n if (isNaN(x) || isNaN(y)) {\r\n console.error(\"jsPDF.context2d.translate: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.translate\");\r\n }\r\n var matrix = new Matrix(1.0, 0.0, 0.0, 1.0, x, y);\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Replaces the current transformation matrix for the drawing\r\n *\r\n * @name transform\r\n * @function\r\n * @param a {Number} Horizontal scaling\r\n * @param b {Number} Horizontal skewing\r\n * @param c {Number} Vertical skewing\r\n * @param d {Number} Vertical scaling\r\n * @param e {Number} Horizontal moving\r\n * @param f {Number} Vertical moving\r\n * @description Each object on the canvas has a current transformation matrix.<br /><br />The transform() method replaces the current transformation matrix. It multiplies the current transformation matrix with the matrix described by:<br /><br /><br /><br />a c e<br /><br />b d f<br /><br />0 0 1<br /><br />In other words, the transform() method lets you scale, rotate, move, and skew the current context.\r\n */\r\n Context2D.prototype.transform = function(a, b, c, d, e, f) {\r\n if (isNaN(a) || isNaN(b) || isNaN(c) || isNaN(d) || isNaN(e) || isNaN(f)) {\r\n console.error(\"jsPDF.context2d.transform: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.transform\");\r\n }\r\n var matrix = new Matrix(a, b, c, d, e, f);\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Resets the current transform to the identity matrix. Then runs transform()\r\n *\r\n * @name setTransform\r\n * @function\r\n * @param a {Number} Horizontal scaling\r\n * @param b {Number} Horizontal skewing\r\n * @param c {Number} Vertical skewing\r\n * @param d {Number} Vertical scaling\r\n * @param e {Number} Horizontal moving\r\n * @param f {Number} Vertical moving\r\n * @description Each object on the canvas has a current transformation matrix. <br /><br />The setTransform() method resets the current transform to the identity matrix, and then runs transform() with the same arguments.<br /><br />In other words, the setTransform() method lets you scale, rotate, move, and skew the current context.\r\n */\r\n Context2D.prototype.setTransform = function(a, b, c, d, e, f) {\r\n a = isNaN(a) ? 1 : a;\r\n b = isNaN(b) ? 0 : b;\r\n c = isNaN(c) ? 0 : c;\r\n d = isNaN(d) ? 1 : d;\r\n e = isNaN(e) ? 0 : e;\r\n f = isNaN(f) ? 0 : f;\r\n this.ctx.transform = new Matrix(a, b, c, d, e, f);\r\n };\r\n\r\n /**\r\n * Should only be used if pageWrapYEnabled is true\r\n *\r\n * @name setPageByYPosition\r\n * @function\r\n * @private\r\n * @ignore\r\n * @returns One-based Page Number\r\n */\r\n var setPageByYPosition = function(y) {\r\n if (this.pageWrapYEnabled) {\r\n this.lastBreak = 0;\r\n var manualBreaks = 0;\r\n var autoBreaks = 0;\r\n for (var i = 0; i < this.pageBreaks.length; i++) {\r\n if (y >= this.pageBreaks[i]) {\r\n manualBreaks++;\r\n if (this.lastBreak === 0) {\r\n autoBreaks++;\r\n }\r\n var spaceBetweenLastBreak = this.pageBreaks[i] - this.lastBreak;\r\n this.lastBreak = this.pageBreaks[i];\r\n var pagesSinceLastBreak = Math.floor(\r\n spaceBetweenLastBreak / this.pageWrapY\r\n );\r\n autoBreaks += pagesSinceLastBreak;\r\n }\r\n }\r\n if (this.lastBreak === 0) {\r\n var pagesSinceLastBreak = Math.floor(y / this.pageWrapY) + 1;\r\n autoBreaks += pagesSinceLastBreak;\r\n }\r\n return autoBreaks + manualBreaks;\r\n } else {\r\n return this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n }\r\n };\r\n\r\n var hasMargins = function() {\r\n return (\r\n this.margin[0] > 0 ||\r\n this.margin[1] > 0 ||\r\n this.margin[2] > 0 ||\r\n this.margin[3] > 0\r\n );\r\n };\r\n\r\n /**\r\n * Draws an image, canvas, or video onto the canvas\r\n *\r\n * @function\r\n * @param img {} Specifies the image, canvas, or video element to use\r\n * @param sx {Number} Optional. The x coordinate where to start clipping\r\n * @param sy {Number} Optional. The y coordinate where to start clipping\r\n * @param swidth {Number} Optional. The width of the clipped image\r\n * @param sheight {Number} Optional. The height of the clipped image\r\n * @param x {Number} The x coordinate where to place the image on the canvas\r\n * @param y {Number} The y coordinate where to place the image on the canvas\r\n * @param width {Number} Optional. The width of the image to use (stretch or reduce the image)\r\n * @param height {Number} Optional. The height of the image to use (stretch or reduce the image)\r\n */\r\n Context2D.prototype.drawImage = function(\r\n img,\r\n sx,\r\n sy,\r\n swidth,\r\n sheight,\r\n x,\r\n y,\r\n width,\r\n height\r\n ) {\r\n var imageProperties = this.pdf.getImageProperties(img);\r\n var factorX = 1;\r\n var factorY = 1;\r\n var isClip;\r\n\r\n var clipFactorX = 1;\r\n var clipFactorY = 1;\r\n\r\n if (typeof swidth !== \"undefined\" && typeof width !== \"undefined\") {\r\n isClip = true;\r\n clipFactorX = width / swidth;\r\n clipFactorY = height / sheight;\r\n factorX = ((imageProperties.width / swidth) * width) / swidth;\r\n factorY = ((imageProperties.height / sheight) * height) / sheight;\r\n }\r\n\r\n //is sx and sy are set and x and y not, set x and y with values of sx and sy\r\n if (typeof x === \"undefined\") {\r\n x = sx;\r\n y = sy;\r\n sx = 0;\r\n sy = 0;\r\n }\r\n\r\n if (typeof swidth !== \"undefined\" && typeof width === \"undefined\") {\r\n width = swidth;\r\n height = sheight;\r\n }\r\n if (typeof swidth === \"undefined\" && typeof width === \"undefined\") {\r\n width = imageProperties.width;\r\n height = imageProperties.height;\r\n }\r\n\r\n var decomposedTransformationMatrix = this.ctx.transform.decompose();\r\n var angle = rad2deg(decomposedTransformationMatrix.rotate.shx);\r\n var matrix = new Matrix();\r\n matrix = matrix.multiply(decomposedTransformationMatrix.translate);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.skew);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.scale);\r\n var xRect = matrix.applyToRectangle(\r\n new Rectangle(\r\n x - sx * clipFactorX,\r\n y - sy * clipFactorY,\r\n swidth * factorX,\r\n sheight * factorY\r\n )\r\n );\r\n var pageArray = getPagesByPath.call(this, xRect);\r\n var pages = [];\r\n for (var ii = 0; ii < pageArray.length; ii += 1) {\r\n if (pages.indexOf(pageArray[ii]) === -1) {\r\n pages.push(pageArray[ii]);\r\n }\r\n }\r\n\r\n sortPages(pages);\r\n\r\n var clipPath;\r\n if (this.autoPaging) {\r\n var min = pages[0];\r\n var max = pages[pages.length - 1];\r\n for (var i = min; i < max + 1; i++) {\r\n this.pdf.setPage(i);\r\n\r\n var pageWidthMinusMargins =\r\n this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1];\r\n var topMargin = i === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n var firstPageHeight =\r\n this.pdf.internal.pageSize.height -\r\n this.posY -\r\n this.margin[0] -\r\n this.margin[2];\r\n var pageHeightMinusMargins =\r\n this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n var previousPageHeightSum =\r\n i === 1 ? 0 : firstPageHeight + (i - 2) * pageHeightMinusMargins;\r\n\r\n if (this.ctx.clip_path.length !== 0) {\r\n var tmpPaths = this.path;\r\n clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n this.path = pathPositionRedo(\r\n clipPath,\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n );\r\n drawPaths.call(this, \"fill\", true);\r\n this.path = tmpPaths;\r\n }\r\n var tmpRect = JSON.parse(JSON.stringify(xRect));\r\n tmpRect = pathPositionRedo(\r\n [tmpRect],\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n )[0];\r\n\r\n const needsClipping = (i > min || i < max) && hasMargins.call(this);\r\n\r\n if (needsClipping) {\r\n this.pdf.saveGraphicsState();\r\n this.pdf\r\n .rect(\r\n this.margin[3],\r\n this.margin[0],\r\n pageWidthMinusMargins,\r\n pageHeightMinusMargins,\r\n null\r\n )\r\n .clip()\r\n .discardPath();\r\n }\r\n this.pdf.addImage(\r\n img,\r\n \"JPEG\",\r\n tmpRect.x,\r\n tmpRect.y,\r\n tmpRect.w,\r\n tmpRect.h,\r\n null,\r\n null,\r\n angle\r\n );\r\n if (needsClipping) {\r\n this.pdf.restoreGraphicsState();\r\n }\r\n }\r\n } else {\r\n this.pdf.addImage(\r\n img,\r\n \"JPEG\",\r\n xRect.x,\r\n xRect.y,\r\n xRect.w,\r\n xRect.h,\r\n null,\r\n null,\r\n angle\r\n );\r\n }\r\n };\r\n\r\n var getPagesByPath = function(path, pageWrapX, pageWrapY) {\r\n var result = [];\r\n pageWrapX = pageWrapX || this.pdf.internal.pageSize.width;\r\n pageWrapY =\r\n pageWrapY ||\r\n this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n var yOffset = this.posY + this.ctx.prevPageLastElemOffset;\r\n\r\n switch (path.type) {\r\n default:\r\n case \"mt\":\r\n case \"lt\":\r\n result.push(Math.floor((path.y + yOffset) / pageWrapY) + 1);\r\n break;\r\n case \"arc\":\r\n result.push(\r\n Math.floor((path.y + yOffset - path.radius) / pageWrapY) + 1\r\n );\r\n result.push(\r\n Math.floor((path.y + yOffset + path.radius) / pageWrapY) + 1\r\n );\r\n break;\r\n case \"qct\":\r\n var rectOfQuadraticCurve = getQuadraticCurveBoundary(\r\n this.ctx.lastPoint.x,\r\n this.ctx.lastPoint.y,\r\n path.x1,\r\n path.y1,\r\n path.x,\r\n path.y\r\n );\r\n result.push(\r\n Math.floor((rectOfQuadraticCurve.y + yOffset) / pageWrapY) + 1\r\n );\r\n result.push(\r\n Math.floor(\r\n (rectOfQuadraticCurve.y + rectOfQuadraticCurve.h + yOffset) /\r\n pageWrapY\r\n ) + 1\r\n );\r\n break;\r\n case \"bct\":\r\n var rectOfBezierCurve = getBezierCurveBoundary(\r\n this.ctx.lastPoint.x,\r\n this.ctx.lastPoint.y,\r\n path.x1,\r\n path.y1,\r\n path.x2,\r\n path.y2,\r\n path.x,\r\n path.y\r\n );\r\n result.push(\r\n Math.floor((rectOfBezierCurve.y + yOffset) / pageWrapY) + 1\r\n );\r\n result.push(\r\n Math.floor(\r\n (rectOfBezierCurve.y + rectOfBezierCurve.h + yOffset) / pageWrapY\r\n ) + 1\r\n );\r\n break;\r\n case \"rect\":\r\n result.push(Math.floor((path.y + yOffset) / pageWrapY) + 1);\r\n result.push(Math.floor((path.y + path.h + yOffset) / pageWrapY) + 1);\r\n }\r\n\r\n for (var i = 0; i < result.length; i += 1) {\r\n while (this.pdf.internal.getNumberOfPages() < result[i]) {\r\n addPage.call(this);\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n var addPage = function() {\r\n var fillStyle = this.fillStyle;\r\n var strokeStyle = this.strokeStyle;\r\n var font = this.font;\r\n var lineCap = this.lineCap;\r\n var lineWidth = this.lineWidth;\r\n var lineJoin = this.lineJoin;\r\n this.pdf.addPage();\r\n this.fillStyle = fillStyle;\r\n this.strokeStyle = strokeStyle;\r\n this.font = font;\r\n this.lineCap = lineCap;\r\n this.lineWidth = lineWidth;\r\n this.lineJoin = lineJoin;\r\n };\r\n\r\n var pathPositionRedo = function(paths, x, y) {\r\n for (var i = 0; i < paths.length; i++) {\r\n switch (paths[i].type) {\r\n case \"bct\":\r\n paths[i].x2 += x;\r\n paths[i].y2 += y;\r\n case \"qct\":\r\n paths[i].x1 += x;\r\n paths[i].y1 += y;\r\n case \"mt\":\r\n case \"lt\":\r\n case \"arc\":\r\n default:\r\n paths[i].x += x;\r\n paths[i].y += y;\r\n }\r\n }\r\n return paths;\r\n };\r\n\r\n var sortPages = function(pages) {\r\n return pages.sort(function(a, b) {\r\n return a - b;\r\n });\r\n };\r\n\r\n var pathPreProcess = function(rule, isClip) {\r\n var fillStyle = this.fillStyle;\r\n var strokeStyle = this.strokeStyle;\r\n var lineCap = this.lineCap;\r\n var oldLineWidth = this.lineWidth;\r\n var lineWidth = Math.abs(oldLineWidth * this.ctx.transform.scaleX);\r\n var lineJoin = this.lineJoin;\r\n\r\n var origPath = JSON.parse(JSON.stringify(this.path));\r\n var xPath = JSON.parse(JSON.stringify(this.path));\r\n var clipPath;\r\n var tmpPath;\r\n var pages = [];\r\n\r\n for (var i = 0; i < xPath.length; i++) {\r\n if (typeof xPath[i].x !== \"undefined\") {\r\n var page = getPagesByPath.call(this, xPath[i]);\r\n\r\n for (var ii = 0; ii < page.length; ii += 1) {\r\n if (pages.indexOf(page[ii]) === -1) {\r\n pages.push(page[ii]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var j = 0; j < pages.length; j++) {\r\n while (this.pdf.internal.getNumberOfPages() < pages[j]) {\r\n addPage.call(this);\r\n }\r\n }\r\n sortPages(pages);\r\n\r\n if (this.autoPaging) {\r\n var min = pages[0];\r\n var max = pages[pages.length - 1];\r\n for (var k = min; k < max + 1; k++) {\r\n this.pdf.setPage(k);\r\n\r\n this.fillStyle = fillStyle;\r\n this.strokeStyle = strokeStyle;\r\n this.lineCap = lineCap;\r\n this.lineWidth = lineWidth;\r\n this.lineJoin = lineJoin;\r\n\r\n var pageWidthMinusMargins =\r\n this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1];\r\n var topMargin = k === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n var firstPageHeight =\r\n this.pdf.internal.pageSize.height -\r\n this.posY -\r\n this.margin[0] -\r\n this.margin[2];\r\n var pageHeightMinusMargins =\r\n this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n var previousPageHeightSum =\r\n k === 1 ? 0 : firstPageHeight + (k - 2) * pageHeightMinusMargins;\r\n\r\n if (this.ctx.clip_path.length !== 0) {\r\n var tmpPaths = this.path;\r\n clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n this.path = pathPositionRedo(\r\n clipPath,\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n );\r\n drawPaths.call(this, rule, true);\r\n this.path = tmpPaths;\r\n }\r\n tmpPath = JSON.parse(JSON.stringify(origPath));\r\n this.path = pathPositionRedo(\r\n tmpPath,\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n );\r\n if (isClip === false || k === 0) {\r\n const needsClipping = (k > min || k < max) && hasMargins.call(this);\r\n if (needsClipping) {\r\n this.pdf.saveGraphicsState();\r\n this.pdf\r\n .rect(\r\n this.margin[3],\r\n this.margin[0],\r\n pageWidthMinusMargins,\r\n pageHeightMinusMargins,\r\n null\r\n )\r\n .clip()\r\n .discardPath();\r\n }\r\n drawPaths.call(this, rule, isClip);\r\n if (needsClipping) {\r\n this.pdf.restoreGraphicsState();\r\n }\r\n }\r\n this.lineWidth = oldLineWidth;\r\n }\r\n } else {\r\n this.lineWidth = lineWidth;\r\n drawPaths.call(this, rule, isClip);\r\n this.lineWidth = oldLineWidth;\r\n }\r\n this.path = origPath;\r\n };\r\n\r\n /**\r\n * Processes the paths\r\n *\r\n * @function\r\n * @param rule {String}\r\n * @param isClip {Boolean}\r\n * @private\r\n * @ignore\r\n */\r\n var drawPaths = function(rule, isClip) {\r\n if (rule === \"stroke\" && !isClip && isStrokeTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n if (rule !== \"stroke\" && !isClip && isFillTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n var moves = [];\r\n\r\n //var alpha = (this.ctx.fillOpacity < 1) ? this.ctx.fillOpacity : this.ctx.globalAlpha;\r\n var delta;\r\n var xPath = this.path;\r\n for (var i = 0; i < xPath.length; i++) {\r\n var pt = xPath[i];\r\n\r\n switch (pt.type) {\r\n case \"begin\":\r\n moves.push({\r\n begin: true\r\n });\r\n break;\r\n\r\n case \"close\":\r\n moves.push({\r\n close: true\r\n });\r\n break;\r\n\r\n case \"mt\":\r\n moves.push({\r\n start: pt,\r\n deltas: [],\r\n abs: []\r\n });\r\n break;\r\n\r\n case \"lt\":\r\n var iii = moves.length;\r\n if (xPath[i - 1] && !isNaN(xPath[i - 1].x)) {\r\n delta = [pt.x - xPath[i - 1].x, pt.y - xPath[i - 1].y];\r\n if (iii > 0) {\r\n for (iii; iii >= 0; iii--) {\r\n if (\r\n moves[iii - 1].close !== true &&\r\n moves[iii - 1].begin !== true\r\n ) {\r\n moves[iii - 1].deltas.push(delta);\r\n moves[iii - 1].abs.push(pt);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case \"bct\":\r\n delta = [\r\n pt.x1 - xPath[i - 1].x,\r\n pt.y1 - xPath[i - 1].y,\r\n pt.x2 - xPath[i - 1].x,\r\n pt.y2 - xPath[i - 1].y,\r\n pt.x - xPath[i - 1].x,\r\n pt.y - xPath[i - 1].y\r\n ];\r\n moves[moves.length - 1].deltas.push(delta);\r\n break;\r\n\r\n case \"qct\":\r\n var x1 = xPath[i - 1].x + (2.0 / 3.0) * (pt.x1 - xPath[i - 1].x);\r\n var y1 = xPath[i - 1].y + (2.0 / 3.0) * (pt.y1 - xPath[i - 1].y);\r\n var x2 = pt.x + (2.0 / 3.0) * (pt.x1 - pt.x);\r\n var y2 = pt.y + (2.0 / 3.0) * (pt.y1 - pt.y);\r\n var x3 = pt.x;\r\n var y3 = pt.y;\r\n delta = [\r\n x1 - xPath[i - 1].x,\r\n y1 - xPath[i - 1].y,\r\n x2 - xPath[i - 1].x,\r\n y2 - xPath[i - 1].y,\r\n x3 - xPath[i - 1].x,\r\n y3 - xPath[i - 1].y\r\n ];\r\n moves[moves.length - 1].deltas.push(delta);\r\n break;\r\n\r\n case \"arc\":\r\n moves.push({\r\n deltas: [],\r\n abs: [],\r\n arc: true\r\n });\r\n\r\n if (Array.isArray(moves[moves.length - 1].abs)) {\r\n moves[moves.length - 1].abs.push(pt);\r\n }\r\n break;\r\n }\r\n }\r\n var style;\r\n if (!isClip) {\r\n if (rule === \"stroke\") {\r\n style = \"stroke\";\r\n } else {\r\n style = \"fill\";\r\n }\r\n } else {\r\n style = null;\r\n }\r\n\r\n var began = false;\r\n for (var k = 0; k < moves.length; k++) {\r\n if (moves[k].arc) {\r\n var arcs = moves[k].abs;\r\n\r\n for (var ii = 0; ii < arcs.length; ii++) {\r\n var arc = arcs[ii];\r\n\r\n if (arc.type === \"arc\") {\r\n drawArc.call(\r\n this,\r\n arc.x,\r\n arc.y,\r\n arc.radius,\r\n arc.startAngle,\r\n arc.endAngle,\r\n arc.counterclockwise,\r\n undefined,\r\n isClip,\r\n !began\r\n );\r\n } else {\r\n drawLine.call(this, arc.x, arc.y);\r\n }\r\n began = true;\r\n }\r\n } else if (moves[k].close === true) {\r\n this.pdf.internal.out(\"h\");\r\n began = false;\r\n } else if (moves[k].begin !== true) {\r\n var x = moves[k].start.x;\r\n var y = moves[k].start.y;\r\n drawLines.call(this, moves[k].deltas, x, y);\r\n began = true;\r\n }\r\n }\r\n\r\n if (style) {\r\n putStyle.call(this, style);\r\n }\r\n if (isClip) {\r\n doClip.call(this);\r\n }\r\n };\r\n\r\n var getBaseline = function(y) {\r\n var height =\r\n this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor;\r\n var descent = height * (this.pdf.internal.getLineHeightFactor() - 1);\r\n switch (this.ctx.textBaseline) {\r\n case \"bottom\":\r\n return y - descent;\r\n case \"top\":\r\n return y + height - descent;\r\n case \"hanging\":\r\n return y + height - 2 * descent;\r\n case \"middle\":\r\n return y + height / 2 - descent;\r\n case \"ideographic\":\r\n // TODO not implemented\r\n return y;\r\n case \"alphabetic\":\r\n default:\r\n return y;\r\n }\r\n };\r\n\r\n var getTextBottom = function(yBaseLine) {\r\n var height =\r\n this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor;\r\n var descent = height * (this.pdf.internal.getLineHeightFactor() - 1);\r\n return yBaseLine + descent;\r\n };\r\n\r\n Context2D.prototype.createLinearGradient = function createLinearGradient() {\r\n var canvasGradient = function canvasGradient() {};\r\n\r\n canvasGradient.colorStops = [];\r\n canvasGradient.addColorStop = function(offset, color) {\r\n this.colorStops.push([offset, color]);\r\n };\r\n\r\n canvasGradient.getColor = function() {\r\n if (this.colorStops.length === 0) {\r\n return \"#000000\";\r\n }\r\n\r\n return this.colorStops[0][1];\r\n };\r\n\r\n canvasGradient.isCanvasGradient = true;\r\n return canvasGradient;\r\n };\r\n Context2D.prototype.createPattern = function createPattern() {\r\n return this.createLinearGradient();\r\n };\r\n Context2D.prototype.createRadialGradient = function createRadialGradient() {\r\n return this.createLinearGradient();\r\n };\r\n\r\n /**\r\n *\r\n * @param x Edge point X\r\n * @param y Edge point Y\r\n * @param r Radius\r\n * @param a1 start angle\r\n * @param a2 end angle\r\n * @param counterclockwise\r\n * @param style\r\n * @param isClip\r\n */\r\n var drawArc = function(\r\n x,\r\n y,\r\n r,\r\n a1,\r\n a2,\r\n counterclockwise,\r\n style,\r\n isClip,\r\n includeMove\r\n ) {\r\n // http://hansmuller-flex.blogspot.com/2011/10/more-about-approximating-circular-arcs.html\r\n var curves = createArc.call(this, r, a1, a2, counterclockwise);\r\n\r\n for (var i = 0; i < curves.length; i++) {\r\n var curve = curves[i];\r\n if (i === 0) {\r\n if (includeMove) {\r\n doMove.call(this, curve.x1 + x, curve.y1 + y);\r\n } else {\r\n drawLine.call(this, curve.x1 + x, curve.y1 + y);\r\n }\r\n }\r\n drawCurve.call(\r\n this,\r\n x,\r\n y,\r\n curve.x2,\r\n curve.y2,\r\n curve.x3,\r\n curve.y3,\r\n curve.x4,\r\n curve.y4\r\n );\r\n }\r\n\r\n if (!isClip) {\r\n putStyle.call(this, style);\r\n } else {\r\n doClip.call(this);\r\n }\r\n };\r\n\r\n var putStyle = function(style) {\r\n switch (style) {\r\n case \"stroke\":\r\n this.pdf.internal.out(\"S\");\r\n break;\r\n case \"fill\":\r\n this.pdf.internal.out(\"f\");\r\n break;\r\n }\r\n };\r\n\r\n var doClip = function() {\r\n this.pdf.clip();\r\n this.pdf.discardPath();\r\n };\r\n\r\n var doMove = function(x, y) {\r\n this.pdf.internal.out(\r\n getHorizontalCoordinateString(x) +\r\n \" \" +\r\n getVerticalCoordinateString(y) +\r\n \" m\"\r\n );\r\n };\r\n\r\n var putText = function(options) {\r\n var textAlign;\r\n switch (options.align) {\r\n case \"right\":\r\n case \"end\":\r\n textAlign = \"right\";\r\n break;\r\n case \"center\":\r\n textAlign = \"center\";\r\n break;\r\n case \"left\":\r\n case \"start\":\r\n default:\r\n textAlign = \"left\";\r\n break;\r\n }\r\n\r\n var textDimensions = this.pdf.getTextDimensions(options.text);\r\n var yBaseLine = getBaseline.call(this, options.y);\r\n var yBottom = getTextBottom.call(this, yBaseLine);\r\n var yTop = yBottom - textDimensions.h;\r\n\r\n var pt = this.ctx.transform.applyToPoint(new Point(options.x, yBaseLine));\r\n var decomposedTransformationMatrix = this.ctx.transform.decompose();\r\n var matrix = new Matrix();\r\n matrix = matrix.multiply(decomposedTransformationMatrix.translate);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.skew);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.scale);\r\n\r\n var baselineRect = this.ctx.transform.applyToRectangle(\r\n new Rectangle(options.x, yBaseLine, textDimensions.w, textDimensions.h)\r\n );\r\n var textBounds = matrix.applyToRectangle(\r\n new Rectangle(options.x, yTop, textDimensions.w, textDimensions.h)\r\n );\r\n var pageArray = getPagesByPath.call(this, textBounds);\r\n var pages = [];\r\n for (var ii = 0; ii < pageArray.length; ii += 1) {\r\n if (pages.indexOf(pageArray[ii]) === -1) {\r\n pages.push(pageArray[ii]);\r\n }\r\n }\r\n\r\n sortPages(pages);\r\n\r\n var clipPath, oldSize, oldLineWidth;\r\n if (this.autoPaging) {\r\n var min = pages[0];\r\n var max = pages[pages.length - 1];\r\n for (var i = min; i < max + 1; i++) {\r\n this.pdf.setPage(i);\r\n\r\n var topMargin = i === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n var firstPageHeight =\r\n this.pdf.internal.pageSize.height -\r\n this.posY -\r\n this.margin[0] -\r\n this.margin[2];\r\n var pageHeightMinusBottomMargin =\r\n this.pdf.internal.pageSize.height - this.margin[2];\r\n var pageHeightMinusMargins =\r\n pageHeightMinusBottomMargin - this.margin[0];\r\n var pageWidthMinusRightMargin =\r\n this.pdf.internal.pageSize.width - this.margin[1];\r\n var pageWidthMinusMargins = pageWidthMinusRightMargin - this.margin[3];\r\n var previousPageHeightSum =\r\n i === 1 ? 0 : firstPageHeight + (i - 2) * pageHeightMinusMargins;\r\n\r\n if (this.ctx.clip_path.length !== 0) {\r\n var tmpPaths = this.path;\r\n clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n this.path = pathPositionRedo(\r\n clipPath,\r\n this.posX + this.margin[3],\r\n -1 * previousPageHeightSum + topMargin\r\n );\r\n drawPaths.call(this, \"fill\", true);\r\n this.path = tmpPaths;\r\n }\r\n var textBoundsOnPage = pathPositionRedo(\r\n [JSON.parse(JSON.stringify(textBounds))],\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n )[0];\r\n\r\n if (options.scale >= 0.01) {\r\n oldSize = this.pdf.internal.getFontSize();\r\n this.pdf.setFontSize(oldSize * options.scale);\r\n oldLineWidth = this.lineWidth;\r\n this.lineWidth = oldLineWidth * options.scale;\r\n }\r\n\r\n var doSlice = this.autoPaging !== \"text\";\r\n\r\n if (\r\n doSlice ||\r\n textBoundsOnPage.y + textBoundsOnPage.h <= pageHeightMinusBottomMargin\r\n ) {\r\n if (\r\n doSlice ||\r\n (textBoundsOnPage.y >= topMargin &&\r\n textBoundsOnPage.x <= pageWidthMinusRightMargin)\r\n ) {\r\n var croppedText = doSlice\r\n ? options.text\r\n : this.pdf.splitTextToSize(\r\n options.text,\r\n options.maxWidth ||\r\n pageWidthMinusRightMargin - textBoundsOnPage.x\r\n )[0];\r\n var baseLineRectOnPage = pathPositionRedo(\r\n [JSON.parse(JSON.stringify(baselineRect))],\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum +\r\n topMargin +\r\n this.ctx.prevPageLastElemOffset\r\n )[0];\r\n\r\n const needsClipping =\r\n doSlice && (i > min || i < max) && hasMargins.call(this);\r\n\r\n if (needsClipping) {\r\n this.pdf.saveGraphicsState();\r\n this.pdf\r\n .rect(\r\n this.margin[3],\r\n this.margin[0],\r\n pageWidthMinusMargins,\r\n pageHeightMinusMargins,\r\n null\r\n )\r\n .clip()\r\n .discardPath();\r\n }\r\n\r\n this.pdf.text(\r\n croppedText,\r\n baseLineRectOnPage.x,\r\n baseLineRectOnPage.y,\r\n {\r\n angle: options.angle,\r\n align: textAlign,\r\n renderingMode: options.renderingMode\r\n }\r\n );\r\n\r\n if (needsClipping) {\r\n this.pdf.restoreGraphicsState();\r\n }\r\n }\r\n } else {\r\n // This text is the last element of the page, but it got cut off due to the margin\r\n // so we render it in the next page\r\n\r\n if (textBoundsOnPage.y < pageHeightMinusBottomMargin) {\r\n // As a result, all other elements have their y offset increased\r\n this.ctx.prevPageLastElemOffset +=\r\n pageHeightMinusBottomMargin - textBoundsOnPage.y;\r\n }\r\n }\r\n\r\n if (options.scale >= 0.01) {\r\n this.pdf.setFontSize(oldSize);\r\n this.lineWidth = oldLineWidth;\r\n }\r\n }\r\n } else {\r\n if (options.scale >= 0.01) {\r\n oldSize = this.pdf.internal.getFontSize();\r\n this.pdf.setFontSize(oldSize * options.scale);\r\n oldLineWidth = this.lineWidth;\r\n this.lineWidth = oldLineWidth * options.scale;\r\n }\r\n this.pdf.text(options.text, pt.x + this.posX, pt.y + this.posY, {\r\n angle: options.angle,\r\n align: textAlign,\r\n renderingMode: options.renderingMode,\r\n maxWidth: options.maxWidth\r\n });\r\n\r\n if (options.scale >= 0.01) {\r\n this.pdf.setFontSize(oldSize);\r\n this.lineWidth = oldLineWidth;\r\n }\r\n }\r\n };\r\n\r\n var drawLine = function(x, y, prevX, prevY) {\r\n prevX = prevX || 0;\r\n prevY = prevY || 0;\r\n\r\n this.pdf.internal.out(\r\n getHorizontalCoordinateString(x + prevX) +\r\n \" \" +\r\n getVerticalCoordinateString(y + prevY) +\r\n \" l\"\r\n );\r\n };\r\n\r\n var drawLines = function(lines, x, y) {\r\n return this.pdf.lines(lines, x, y, null, null);\r\n };\r\n\r\n var drawCurve = function(x, y, x1, y1, x2, y2, x3, y3) {\r\n this.pdf.internal.out(\r\n [\r\n f2(getHorizontalCoordinate(x1 + x)),\r\n f2(getVerticalCoordinate(y1 + y)),\r\n f2(getHorizontalCoordinate(x2 + x)),\r\n f2(getVerticalCoordinate(y2 + y)),\r\n f2(getHorizontalCoordinate(x3 + x)),\r\n f2(getVerticalCoordinate(y3 + y)),\r\n \"c\"\r\n ].join(\" \")\r\n );\r\n };\r\n\r\n /**\r\n * Return a array of objects that represent bezier curves which approximate the circular arc centered at the origin, from startAngle to endAngle (radians) with the specified radius.\r\n *\r\n * Each bezier curve is an object with four points, where x1,y1 and x4,y4 are the arc's end points and x2,y2 and x3,y3 are the cubic bezier's control points.\r\n * @function createArc\r\n */\r\n var createArc = function(radius, startAngle, endAngle, anticlockwise) {\r\n var EPSILON = 0.00001; // Roughly 1/1000th of a degree, see below\r\n var twoPi = Math.PI * 2;\r\n var halfPi = Math.PI / 2.0;\r\n\r\n while (startAngle > endAngle) {\r\n startAngle = startAngle - twoPi;\r\n }\r\n var totalAngle = Math.abs(endAngle - startAngle);\r\n if (totalAngle < twoPi) {\r\n if (anticlockwise) {\r\n totalAngle = twoPi - totalAngle;\r\n }\r\n }\r\n\r\n // Compute the sequence of arc curves, up to PI/2 at a time.\r\n var curves = [];\r\n\r\n // clockwise or counterclockwise\r\n var sgn = anticlockwise ? -1 : +1;\r\n\r\n var a1 = startAngle;\r\n for (; totalAngle > EPSILON; ) {\r\n var remain = sgn * Math.min(totalAngle, halfPi);\r\n var a2 = a1 + remain;\r\n curves.push(createSmallArc.call(this, radius, a1, a2));\r\n totalAngle -= Math.abs(a2 - a1);\r\n a1 = a2;\r\n }\r\n\r\n return curves;\r\n };\r\n\r\n /**\r\n * Cubic bezier approximation of a circular arc centered at the origin, from (radians) a1 to a2, where a2-a1 < pi/2. The arc's radius is r.\r\n *\r\n * Returns an object with four points, where x1,y1 and x4,y4 are the arc's end points and x2,y2 and x3,y3 are the cubic bezier's control points.\r\n *\r\n * This algorithm is based on the approach described in: A. Riškus, \"Approximation of a Cubic Bezier Curve by Circular Arcs and Vice Versa,\" Information Technology and Control, 35(4), 2006 pp. 371-378.\r\n */\r\n var createSmallArc = function(r, a1, a2) {\r\n var a = (a2 - a1) / 2.0;\r\n\r\n var x4 = r * Math.cos(a);\r\n var y4 = r * Math.sin(a);\r\n var x1 = x4;\r\n var y1 = -y4;\r\n\r\n var q1 = x1 * x1 + y1 * y1;\r\n var q2 = q1 + x1 * x4 + y1 * y4;\r\n var k2 = ((4 / 3) * (Math.sqrt(2 * q1 * q2) - q2)) / (x1 * y4 - y1 * x4);\r\n\r\n var x2 = x1 - k2 * y1;\r\n var y2 = y1 + k2 * x1;\r\n var x3 = x2;\r\n var y3 = -y2;\r\n\r\n var ar = a + a1;\r\n var cos_ar = Math.cos(ar);\r\n var sin_ar = Math.sin(ar);\r\n\r\n return {\r\n x1: r * Math.cos(a1),\r\n y1: r * Math.sin(a1),\r\n x2: x2 * cos_ar - y2 * sin_ar,\r\n y2: x2 * sin_ar + y2 * cos_ar,\r\n x3: x3 * cos_ar - y3 * sin_ar,\r\n y3: x3 * sin_ar + y3 * cos_ar,\r\n x4: r * Math.cos(a2),\r\n y4: r * Math.sin(a2)\r\n };\r\n };\r\n\r\n var rad2deg = function(value) {\r\n return (value * 180) / Math.PI;\r\n };\r\n\r\n var getQuadraticCurveBoundary = function(sx, sy, cpx, cpy, ex, ey) {\r\n var midX1 = sx + (cpx - sx) * 0.5;\r\n var midY1 = sy + (cpy - sy) * 0.5;\r\n var midX2 = ex + (cpx - ex) * 0.5;\r\n var midY2 = ey + (cpy - ey) * 0.5;\r\n var resultX1 = Math.min(sx, ex, midX1, midX2);\r\n var resultX2 = Math.max(sx, ex, midX1, midX2);\r\n var resultY1 = Math.min(sy, ey, midY1, midY2);\r\n var resultY2 = Math.max(sy, ey, midY1, midY2);\r\n return new Rectangle(\r\n resultX1,\r\n resultY1,\r\n resultX2 - resultX1,\r\n resultY2 - resultY1\r\n );\r\n };\r\n\r\n //De Casteljau algorithm\r\n var getBezierCurveBoundary = function(ax, ay, bx, by, cx, cy, dx, dy) {\r\n var tobx = bx - ax;\r\n var toby = by - ay;\r\n var tocx = cx - bx;\r\n var tocy = cy - by;\r\n var todx = dx - cx;\r\n var tody = dy - cy;\r\n var precision = 40;\r\n var d,\r\n i,\r\n px,\r\n py,\r\n qx,\r\n qy,\r\n rx,\r\n ry,\r\n tx,\r\n ty,\r\n sx,\r\n sy,\r\n x,\r\n y,\r\n minx,\r\n miny,\r\n maxx,\r\n maxy,\r\n toqx,\r\n toqy,\r\n torx,\r\n tory,\r\n totx,\r\n toty;\r\n for (i = 0; i < precision + 1; i++) {\r\n d = i / precision;\r\n px = ax + d * tobx;\r\n py = ay + d * toby;\r\n qx = bx + d * tocx;\r\n qy = by + d * tocy;\r\n rx = cx + d * todx;\r\n ry = cy + d * tody;\r\n toqx = qx - px;\r\n toqy = qy - py;\r\n torx = rx - qx;\r\n tory = ry - qy;\r\n\r\n sx = px + d * toqx;\r\n sy = py + d * toqy;\r\n tx = qx + d * torx;\r\n ty = qy + d * tory;\r\n totx = tx - sx;\r\n toty = ty - sy;\r\n\r\n x = sx + d * totx;\r\n y = sy + d * toty;\r\n if (i == 0) {\r\n minx = x;\r\n miny = y;\r\n maxx = x;\r\n maxy = y;\r\n } else {\r\n minx = Math.min(minx, x);\r\n miny = Math.min(miny, y);\r\n maxx = Math.max(maxx, x);\r\n maxy = Math.max(maxy, y);\r\n }\r\n }\r\n return new Rectangle(\r\n Math.round(minx),\r\n Math.round(miny),\r\n Math.round(maxx - minx),\r\n Math.round(maxy - miny)\r\n );\r\n };\r\n\r\n var getPrevLineDashValue = function(lineDash, lineDashOffset) {\r\n return JSON.stringify({\r\n lineDash: lineDash,\r\n lineDashOffset: lineDashOffset\r\n });\r\n };\r\n\r\n var setLineDash = function() {\r\n // Avoid unnecessary line dash declarations.\r\n if (\r\n !this.prevLineDash &&\r\n !this.ctx.lineDash.length &&\r\n !this.ctx.lineDashOffset\r\n ) {\r\n return;\r\n }\r\n\r\n // Avoid unnecessary line dash declarations.\r\n const nextLineDash = getPrevLineDashValue(\r\n this.ctx.lineDash,\r\n this.ctx.lineDashOffset\r\n );\r\n if (this.prevLineDash !== nextLineDash) {\r\n this.pdf.setLineDash(this.ctx.lineDash, this.ctx.lineDashOffset);\r\n this.prevLineDash = nextLineDash;\r\n }\r\n };\r\n})(jsPDF.API);\r\n","/**\n * @license\n * jsPDF filters PlugIn\n * Copyright (c) 2014 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { zlibSync } from \"../libs/fflate.js\";\n\n(function(jsPDFAPI) {\n \"use strict\";\n\n var ASCII85Encode = function(a) {\n var b, c, d, e, f, g, h, i, j, k;\n // eslint-disable-next-line no-control-regex\n for (\n !/[^\\x00-\\xFF]/.test(a),\n b = \"\\x00\\x00\\x00\\x00\".slice(a.length % 4 || 4),\n a += b,\n c = [],\n d = 0,\n e = a.length;\n e > d;\n d += 4\n )\n (f =\n (a.charCodeAt(d) << 24) +\n (a.charCodeAt(d + 1) << 16) +\n (a.charCodeAt(d + 2) << 8) +\n a.charCodeAt(d + 3)),\n 0 !== f\n ? ((k = f % 85),\n (f = (f - k) / 85),\n (j = f % 85),\n (f = (f - j) / 85),\n (i = f % 85),\n (f = (f - i) / 85),\n (h = f % 85),\n (f = (f - h) / 85),\n (g = f % 85),\n c.push(g + 33, h + 33, i + 33, j + 33, k + 33))\n : c.push(122);\n return (\n (function(a, b) {\n for (var c = b; c > 0; c--) a.pop();\n })(c, b.length),\n String.fromCharCode.apply(String, c) + \"~>\"\n );\n };\n\n var ASCII85Decode = function(a) {\n var c,\n d,\n e,\n f,\n g,\n h = String,\n l = \"length\",\n w = 255,\n x = \"charCodeAt\",\n y = \"slice\",\n z = \"replace\";\n for (\n \"~>\" === a[y](-2),\n a = a[y](0, -2)\n [z](/\\s/g, \"\")\n [z](\"z\", \"!!!!!\"),\n c = \"uuuuu\"[y](a[l] % 5 || 5),\n a += c,\n e = [],\n f = 0,\n g = a[l];\n g > f;\n f += 5\n )\n (d =\n 52200625 * (a[x](f) - 33) +\n 614125 * (a[x](f + 1) - 33) +\n 7225 * (a[x](f + 2) - 33) +\n 85 * (a[x](f + 3) - 33) +\n (a[x](f + 4) - 33)),\n e.push(w & (d >> 24), w & (d >> 16), w & (d >> 8), w & d);\n return (\n (function(a, b) {\n for (var c = b; c > 0; c--) a.pop();\n })(e, c[l]),\n h.fromCharCode.apply(h, e)\n );\n };\n\n var ASCIIHexEncode = function(value) {\n return (\n value\n .split(\"\")\n .map(function(value) {\n return (\"0\" + value.charCodeAt().toString(16)).slice(-2);\n })\n .join(\"\") + \">\"\n );\n };\n\n var ASCIIHexDecode = function(value) {\n var regexCheckIfHex = new RegExp(/^([0-9A-Fa-f]{2})+$/);\n value = value.replace(/\\s/g, \"\");\n if (value.indexOf(\">\") !== -1) {\n value = value.substr(0, value.indexOf(\">\"));\n }\n if (value.length % 2) {\n value += \"0\";\n }\n if (regexCheckIfHex.test(value) === false) {\n return \"\";\n }\n var result = \"\";\n for (var i = 0; i < value.length; i += 2) {\n result += String.fromCharCode(\"0x\" + (value[i] + value[i + 1]));\n }\n return result;\n };\n /*\n var FlatePredictors = {\n None: 1,\n TIFF: 2,\n PNG_None: 10,\n PNG_Sub: 11,\n PNG_Up: 12,\n PNG_Average: 13,\n PNG_Paeth: 14,\n PNG_Optimum: 15\n };\n */\n\n var FlateEncode = function(data) {\n var arr = new Uint8Array(data.length);\n var i = data.length;\n while (i--) {\n arr[i] = data.charCodeAt(i);\n }\n arr = zlibSync(arr);\n data = arr.reduce(function(data, byte) {\n return data + String.fromCharCode(byte);\n }, \"\");\n return data;\n };\n\n jsPDFAPI.processDataByFilters = function(origData, filterChain) {\n \"use strict\";\n var i = 0;\n var data = origData || \"\";\n var reverseChain = [];\n filterChain = filterChain || [];\n\n if (typeof filterChain === \"string\") {\n filterChain = [filterChain];\n }\n\n for (i = 0; i < filterChain.length; i += 1) {\n switch (filterChain[i]) {\n case \"ASCII85Decode\":\n case \"/ASCII85Decode\":\n data = ASCII85Decode(data);\n reverseChain.push(\"/ASCII85Encode\");\n break;\n case \"ASCII85Encode\":\n case \"/ASCII85Encode\":\n data = ASCII85Encode(data);\n reverseChain.push(\"/ASCII85Decode\");\n break;\n case \"ASCIIHexDecode\":\n case \"/ASCIIHexDecode\":\n data = ASCIIHexDecode(data);\n reverseChain.push(\"/ASCIIHexEncode\");\n break;\n case \"ASCIIHexEncode\":\n case \"/ASCIIHexEncode\":\n data = ASCIIHexEncode(data);\n reverseChain.push(\"/ASCIIHexDecode\");\n break;\n case \"FlateEncode\":\n case \"/FlateEncode\":\n data = FlateEncode(data);\n reverseChain.push(\"/FlateDecode\");\n break;\n default:\n throw new Error(\n 'The filter: \"' + filterChain[i] + '\" is not implemented'\n );\n }\n }\n\n return { data: data, reverseChain: reverseChain.reverse().join(\" \") };\n };\n})(jsPDF.API);\n","/**\n * @license\n * jsPDF fileloading PlugIn\n * Copyright (c) 2018 Aras Abbasi (aras.abbasi@gmail.com)\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name fileloading\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * @name loadFile\n * @function\n * @param {string} url\n * @param {boolean} sync\n * @param {function} callback\n * @returns {string|undefined} result\n */\n jsPDFAPI.loadFile = function(url, sync, callback) {\n return browserRequest(url, sync, callback);\n\n };\n\n /**\n * @name loadImageFile\n * @function\n * @param {string} path\n * @param {boolean} sync\n * @param {function} callback\n */\n jsPDFAPI.loadImageFile = jsPDFAPI.loadFile;\n\n function browserRequest(url, sync, callback) {\n sync = sync === false ? false : true;\n callback = typeof callback === \"function\" ? callback : function() {};\n var result = undefined;\n\n var xhr = function(url, sync, callback) {\n var request = new XMLHttpRequest();\n var i = 0;\n\n var sanitizeUnicode = function(data) {\n var dataLength = data.length;\n var charArray = [];\n var StringFromCharCode = String.fromCharCode;\n\n //Transform Unicode to ASCII\n for (i = 0; i < dataLength; i += 1) {\n charArray.push(StringFromCharCode(data.charCodeAt(i) & 0xff));\n }\n return charArray.join(\"\");\n };\n\n request.open(\"GET\", url, !sync);\n // XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]\n request.overrideMimeType(\"text/plain; charset=x-user-defined\");\n\n if (sync === false) {\n request.onload = function() {\n if (request.status === 200) {\n callback(sanitizeUnicode(this.responseText));\n } else {\n callback(undefined);\n }\n };\n }\n request.send(null);\n\n if (sync && request.status === 200) {\n return sanitizeUnicode(request.responseText);\n }\n };\n try {\n result = xhr(url, sync, callback);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n return result;\n }\n\n function nodeReadFile(url, sync, callback) {\n sync = sync === false ? false : true;\n var result = undefined;\n\n var fs = require(\"fs\");\n var path = require(\"path\");\n\n url = path.resolve(url);\n if (sync) {\n try {\n result = fs.readFileSync(url, { encoding: \"latin1\" });\n } catch (e) {\n return undefined;\n }\n } else {\n fs.readFile(url, { encoding: \"latin1\" }, function(err, data) {\n if (!callback) {\n return;\n }\n if (err) {\n callback(undefined);\n }\n callback(data);\n });\n }\n\n return result;\n }\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2018 Erik Koopmans\n * Released under the MIT License.\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { normalizeFontFace } from \"../libs/fontFace.js\";\nimport { globalObject } from \"../libs/globalObject.js\";\n\n/**\n * jsPDF html PlugIn\n *\n * @name html\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n function loadHtml2Canvas() {\n return (function() {\n if (globalObject[\"html2canvas\"]) {\n return Promise.resolve(globalObject[\"html2canvas\"]);\n }\n\n return import(\"html2canvas\");\n\n })()\n .catch(function(e) {\n return Promise.reject(new Error(\"Could not load html2canvas: \" + e));\n })\n .then(function(html2canvas) {\n return html2canvas.default ? html2canvas.default : html2canvas;\n });\n }\n\n function loadDomPurify() {\n return (function() {\n if (globalObject[\"DOMPurify\"]) {\n return Promise.resolve(globalObject[\"DOMPurify\"]);\n }\n\n return import(\"dompurify\");\n\n })()\n .catch(function(e) {\n return Promise.reject(new Error(\"Could not load dompurify: \" + e));\n })\n .then(function(dompurify) {\n return dompurify.default ? dompurify.default : dompurify;\n });\n }\n\n /**\n * Determine the type of a variable/object.\n *\n * @private\n * @ignore\n */\n var objType = function(obj) {\n var type = typeof obj;\n if (type === \"undefined\") return \"undefined\";\n else if (type === \"string\" || obj instanceof String) return \"string\";\n else if (type === \"number\" || obj instanceof Number) return \"number\";\n else if (type === \"function\" || obj instanceof Function) return \"function\";\n else if (!!obj && obj.constructor === Array) return \"array\";\n else if (obj && obj.nodeType === 1) return \"element\";\n else if (type === \"object\") return \"object\";\n else return \"unknown\";\n };\n\n /**\n * Create an HTML element with optional className, innerHTML, and style.\n *\n * @private\n * @ignore\n */\n var createElement = function(tagName, opt) {\n var el = document.createElement(tagName);\n if (opt.className) el.className = opt.className;\n if (opt.innerHTML && opt.dompurify) {\n el.innerHTML = opt.dompurify.sanitize(opt.innerHTML);\n }\n for (var key in opt.style) {\n el.style[key] = opt.style[key];\n }\n return el;\n };\n\n /**\n * Deep-clone a node and preserve contents/properties.\n *\n * @private\n * @ignore\n */\n var cloneNode = function(node, javascriptEnabled) {\n // Recursively clone the node.\n var clone =\n node.nodeType === 3\n ? document.createTextNode(node.nodeValue)\n : node.cloneNode(false);\n for (var child = node.firstChild; child; child = child.nextSibling) {\n if (\n javascriptEnabled === true ||\n child.nodeType !== 1 ||\n child.nodeName !== \"SCRIPT\"\n ) {\n clone.appendChild(cloneNode(child, javascriptEnabled));\n }\n }\n\n if (node.nodeType === 1) {\n // Preserve contents/properties of special nodes.\n if (node.nodeName === \"CANVAS\") {\n clone.width = node.width;\n clone.height = node.height;\n clone.getContext(\"2d\").drawImage(node, 0, 0);\n } else if (node.nodeName === \"TEXTAREA\" || node.nodeName === \"SELECT\") {\n clone.value = node.value;\n }\n\n // Preserve the node's scroll position when it loads.\n clone.addEventListener(\n \"load\",\n function() {\n clone.scrollTop = node.scrollTop;\n clone.scrollLeft = node.scrollLeft;\n },\n true\n );\n }\n\n // Return the cloned node.\n return clone;\n };\n\n /* ----- CONSTRUCTOR ----- */\n\n var Worker = function Worker(opt) {\n // Create the root parent for the proto chain, and the starting Worker.\n var root = Object.assign(\n Worker.convert(Promise.resolve()),\n JSON.parse(JSON.stringify(Worker.template))\n );\n var self = Worker.convert(Promise.resolve(), root);\n\n // Set progress, optional settings, and return.\n self = self.setProgress(1, Worker, 1, [Worker]);\n self = self.set(opt);\n return self;\n };\n\n // Boilerplate for subclassing Promise.\n Worker.prototype = Object.create(Promise.prototype);\n Worker.prototype.constructor = Worker;\n\n // Converts/casts promises into Workers.\n Worker.convert = function convert(promise, inherit) {\n // Uses prototypal inheritance to receive changes made to ancestors' properties.\n promise.__proto__ = inherit || Worker.prototype;\n return promise;\n };\n\n Worker.template = {\n prop: {\n src: null,\n container: null,\n overlay: null,\n canvas: null,\n img: null,\n pdf: null,\n pageSize: null,\n callback: function() {}\n },\n progress: {\n val: 0,\n state: null,\n n: 0,\n stack: []\n },\n opt: {\n filename: \"file.pdf\",\n margin: [0, 0, 0, 0],\n enableLinks: true,\n x: 0,\n y: 0,\n html2canvas: {},\n jsPDF: {},\n backgroundColor: \"transparent\"\n }\n };\n\n /* ----- FROM / TO ----- */\n\n Worker.prototype.from = function from(src, type) {\n function getType(src) {\n switch (objType(src)) {\n case \"string\":\n return \"string\";\n case \"element\":\n return src.nodeName.toLowerCase() === \"canvas\" ? \"canvas\" : \"element\";\n default:\n return \"unknown\";\n }\n }\n\n return this.then(function from_main() {\n type = type || getType(src);\n switch (type) {\n case \"string\":\n return this.then(loadDomPurify).then(function(dompurify) {\n return this.set({\n src: createElement(\"div\", {\n innerHTML: src,\n dompurify: dompurify\n })\n });\n });\n case \"element\":\n return this.set({ src: src });\n case \"canvas\":\n return this.set({ canvas: src });\n case \"img\":\n return this.set({ img: src });\n default:\n return this.error(\"Unknown source type.\");\n }\n });\n };\n\n Worker.prototype.to = function to(target) {\n // Route the 'to' request to the appropriate method.\n switch (target) {\n case \"container\":\n return this.toContainer();\n case \"canvas\":\n return this.toCanvas();\n case \"img\":\n return this.toImg();\n case \"pdf\":\n return this.toPdf();\n default:\n return this.error(\"Invalid target.\");\n }\n };\n\n Worker.prototype.toContainer = function toContainer() {\n // Set up function prerequisites.\n var prereqs = [\n function checkSrc() {\n return (\n this.prop.src || this.error(\"Cannot duplicate - no source HTML.\")\n );\n },\n function checkPageSize() {\n return this.prop.pageSize || this.setPageSize();\n }\n ];\n return this.thenList(prereqs).then(function toContainer_main() {\n // Define the CSS styles for the container and its overlay parent.\n var overlayCSS = {\n position: \"fixed\",\n overflow: \"hidden\",\n zIndex: 1000,\n left: \"-100000px\",\n right: 0,\n bottom: 0,\n top: 0\n };\n var containerCSS = {\n position: \"relative\",\n display: \"inline-block\",\n width:\n (typeof this.opt.width === \"number\" &&\n !isNaN(this.opt.width) &&\n typeof this.opt.windowWidth === \"number\" &&\n !isNaN(this.opt.windowWidth)\n ? this.opt.windowWidth\n : Math.max(\n this.prop.src.clientWidth,\n this.prop.src.scrollWidth,\n this.prop.src.offsetWidth\n )) + \"px\",\n left: 0,\n right: 0,\n top: 0,\n margin: \"auto\",\n backgroundColor: this.opt.backgroundColor\n }; // Set the overlay to hidden (could be changed in the future to provide a print preview).\n\n var source = cloneNode(\n this.prop.src,\n this.opt.html2canvas.javascriptEnabled\n );\n\n if (source.tagName === \"BODY\") {\n containerCSS.height =\n Math.max(\n document.body.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.clientHeight,\n document.documentElement.scrollHeight,\n document.documentElement.offsetHeight\n ) + \"px\";\n }\n\n this.prop.overlay = createElement(\"div\", {\n className: \"html2pdf__overlay\",\n style: overlayCSS\n });\n this.prop.container = createElement(\"div\", {\n className: \"html2pdf__container\",\n style: containerCSS\n });\n this.prop.container.appendChild(source);\n this.prop.container.firstChild.appendChild(\n createElement(\"div\", {\n style: {\n clear: \"both\",\n border: \"0 none transparent\",\n margin: 0,\n padding: 0,\n height: 0\n }\n })\n );\n this.prop.container.style.float = \"none\";\n this.prop.overlay.appendChild(this.prop.container);\n document.body.appendChild(this.prop.overlay);\n this.prop.container.firstChild.style.position = \"relative\";\n this.prop.container.height =\n Math.max(\n this.prop.container.firstChild.clientHeight,\n this.prop.container.firstChild.scrollHeight,\n this.prop.container.firstChild.offsetHeight\n ) + \"px\";\n });\n };\n\n Worker.prototype.toCanvas = function toCanvas() {\n // Set up function prerequisites.\n var prereqs = [\n function checkContainer() {\n return (\n document.body.contains(this.prop.container) || this.toContainer()\n );\n }\n ];\n\n // Fulfill prereqs then create the canvas.\n return this.thenList(prereqs)\n .then(loadHtml2Canvas)\n .then(function toCanvas_main(html2canvas) {\n // Handle old-fashioned 'onrendered' argument.\n var options = Object.assign({}, this.opt.html2canvas);\n delete options.onrendered;\n\n return html2canvas(this.prop.container, options);\n })\n .then(function toCanvas_post(canvas) {\n // Handle old-fashioned 'onrendered' argument.\n var onRendered = this.opt.html2canvas.onrendered || function() {};\n onRendered(canvas);\n\n this.prop.canvas = canvas;\n document.body.removeChild(this.prop.overlay);\n });\n };\n\n Worker.prototype.toContext2d = function toContext2d() {\n // Set up function prerequisites.\n var prereqs = [\n function checkContainer() {\n return (\n document.body.contains(this.prop.container) || this.toContainer()\n );\n }\n ];\n\n // Fulfill prereqs then create the canvas.\n return this.thenList(prereqs)\n .then(loadHtml2Canvas)\n .then(function toContext2d_main(html2canvas) {\n // Handle old-fashioned 'onrendered' argument.\n\n var pdf = this.opt.jsPDF;\n var fontFaces = this.opt.fontFaces;\n\n var scale =\n typeof this.opt.width === \"number\" &&\n !isNaN(this.opt.width) &&\n typeof this.opt.windowWidth === \"number\" &&\n !isNaN(this.opt.windowWidth)\n ? this.opt.width / this.opt.windowWidth\n : 1;\n\n var options = Object.assign(\n {\n async: true,\n allowTaint: true,\n scale: scale,\n scrollX: this.opt.scrollX || 0,\n scrollY: this.opt.scrollY || 0,\n backgroundColor: \"#ffffff\",\n imageTimeout: 15000,\n logging: true,\n proxy: null,\n removeContainer: true,\n foreignObjectRendering: false,\n useCORS: false\n },\n this.opt.html2canvas\n );\n delete options.onrendered;\n\n pdf.context2d.autoPaging =\n typeof this.opt.autoPaging === \"undefined\"\n ? true\n : this.opt.autoPaging;\n pdf.context2d.posX = this.opt.x;\n pdf.context2d.posY = this.opt.y;\n pdf.context2d.margin = this.opt.margin;\n pdf.context2d.fontFaces = fontFaces;\n\n if (fontFaces) {\n for (var i = 0; i < fontFaces.length; ++i) {\n var font = fontFaces[i];\n var src = font.src.find(function(src) {\n return src.format === \"truetype\";\n });\n\n if (src) {\n pdf.addFont(src.url, font.ref.name, font.ref.style);\n }\n }\n }\n\n options.windowHeight = options.windowHeight || 0;\n options.windowHeight =\n options.windowHeight == 0\n ? Math.max(\n this.prop.container.clientHeight,\n this.prop.container.scrollHeight,\n this.prop.container.offsetHeight\n )\n : options.windowHeight;\n\n pdf.context2d.save(true);\n return html2canvas(this.prop.container, options);\n })\n .then(function toContext2d_post(canvas) {\n this.opt.jsPDF.context2d.restore(true);\n\n // Handle old-fashioned 'onrendered' argument.\n var onRendered = this.opt.html2canvas.onrendered || function() {};\n onRendered(canvas);\n\n this.prop.canvas = canvas;\n document.body.removeChild(this.prop.overlay);\n });\n };\n\n Worker.prototype.toImg = function toImg() {\n // Set up function prerequisites.\n var prereqs = [\n function checkCanvas() {\n return this.prop.canvas || this.toCanvas();\n }\n ];\n\n // Fulfill prereqs then create the image.\n return this.thenList(prereqs).then(function toImg_main() {\n var imgData = this.prop.canvas.toDataURL(\n \"image/\" + this.opt.image.type,\n this.opt.image.quality\n );\n this.prop.img = document.createElement(\"img\");\n this.prop.img.src = imgData;\n });\n };\n\n Worker.prototype.toPdf = function toPdf() {\n // Set up function prerequisites.\n var prereqs = [\n function checkContext2d() {\n return this.toContext2d();\n }\n //function checkCanvas() { return this.prop.canvas || this.toCanvas(); }\n ];\n\n // Fulfill prereqs then create the image.\n return this.thenList(prereqs).then(function toPdf_main() {\n // Create local copies of frequently used properties.\n this.prop.pdf = this.prop.pdf || this.opt.jsPDF;\n });\n };\n\n /* ----- OUTPUT / SAVE ----- */\n\n Worker.prototype.output = function output(type, options, src) {\n // Redirect requests to the correct function (outputPdf / outputImg).\n src = src || \"pdf\";\n if (src.toLowerCase() === \"img\" || src.toLowerCase() === \"image\") {\n return this.outputImg(type, options);\n } else {\n return this.outputPdf(type, options);\n }\n };\n\n Worker.prototype.outputPdf = function outputPdf(type, options) {\n // Set up function prerequisites.\n var prereqs = [\n function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }\n ];\n\n // Fulfill prereqs then perform the appropriate output.\n return this.thenList(prereqs).then(function outputPdf_main() {\n /* Currently implemented output types:\n * https://rawgit.com/MrRio/jsPDF/master/docs/jspdf.js.html#line992\n * save(options), arraybuffer, blob, bloburi/bloburl,\n * datauristring/dataurlstring, dataurlnewwindow, datauri/dataurl\n */\n return this.prop.pdf.output(type, options);\n });\n };\n\n Worker.prototype.outputImg = function outputImg(type) {\n // Set up function prerequisites.\n var prereqs = [\n function checkImg() {\n return this.prop.img || this.toImg();\n }\n ];\n\n // Fulfill prereqs then perform the appropriate output.\n return this.thenList(prereqs).then(function outputImg_main() {\n switch (type) {\n case undefined:\n case \"img\":\n return this.prop.img;\n case \"datauristring\":\n case \"dataurlstring\":\n return this.prop.img.src;\n case \"datauri\":\n case \"dataurl\":\n return (document.location.href = this.prop.img.src);\n default:\n throw 'Image output type \"' + type + '\" is not supported.';\n }\n });\n };\n\n Worker.prototype.save = function save(filename) {\n // Set up function prerequisites.\n var prereqs = [\n function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }\n ];\n\n // Fulfill prereqs, update the filename (if provided), and save the PDF.\n return this.thenList(prereqs)\n .set(filename ? { filename: filename } : null)\n .then(function save_main() {\n this.prop.pdf.save(this.opt.filename);\n });\n };\n\n Worker.prototype.doCallback = function doCallback() {\n // Set up function prerequisites.\n var prereqs = [\n function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }\n ];\n\n // Fulfill prereqs, update the filename (if provided), and save the PDF.\n return this.thenList(prereqs).then(function doCallback_main() {\n this.prop.callback(this.prop.pdf);\n });\n };\n\n /* ----- SET / GET ----- */\n\n Worker.prototype.set = function set(opt) {\n // TODO: Implement ordered pairs?\n\n // Silently ignore invalid or empty input.\n if (objType(opt) !== \"object\") {\n return this;\n }\n\n // Build an array of setter functions to queue.\n var fns = Object.keys(opt || {}).map(function(key) {\n if (key in Worker.template.prop) {\n // Set pre-defined properties.\n return function set_prop() {\n this.prop[key] = opt[key];\n };\n } else {\n switch (key) {\n case \"margin\":\n return this.setMargin.bind(this, opt.margin);\n case \"jsPDF\":\n return function set_jsPDF() {\n this.opt.jsPDF = opt.jsPDF;\n return this.setPageSize();\n };\n case \"pageSize\":\n return this.setPageSize.bind(this, opt.pageSize);\n default:\n // Set any other properties in opt.\n return function set_opt() {\n this.opt[key] = opt[key];\n };\n }\n }\n }, this);\n\n // Set properties within the promise chain.\n return this.then(function set_main() {\n return this.thenList(fns);\n });\n };\n\n Worker.prototype.get = function get(key, cbk) {\n return this.then(function get_main() {\n // Fetch the requested property, either as a predefined prop or in opt.\n var val = key in Worker.template.prop ? this.prop[key] : this.opt[key];\n return cbk ? cbk(val) : val;\n });\n };\n\n Worker.prototype.setMargin = function setMargin(margin) {\n return this.then(function setMargin_main() {\n // Parse the margin property.\n switch (objType(margin)) {\n case \"number\":\n margin = [margin, margin, margin, margin];\n // eslint-disable-next-line no-fallthrough\n case \"array\":\n if (margin.length === 2) {\n margin = [margin[0], margin[1], margin[0], margin[1]];\n }\n if (margin.length === 4) {\n break;\n }\n // eslint-disable-next-line no-fallthrough\n default:\n return this.error(\"Invalid margin array.\");\n }\n\n // Set the margin property, then update pageSize.\n this.opt.margin = margin;\n }).then(this.setPageSize);\n };\n\n Worker.prototype.setPageSize = function setPageSize(pageSize) {\n function toPx(val, k) {\n return Math.floor(((val * k) / 72) * 96);\n }\n\n return this.then(function setPageSize_main() {\n // Retrieve page-size based on jsPDF settings, if not explicitly provided.\n pageSize = pageSize || jsPDF.getPageSize(this.opt.jsPDF);\n\n // Add 'inner' field if not present.\n if (!pageSize.hasOwnProperty(\"inner\")) {\n pageSize.inner = {\n width: pageSize.width - this.opt.margin[1] - this.opt.margin[3],\n height: pageSize.height - this.opt.margin[0] - this.opt.margin[2]\n };\n pageSize.inner.px = {\n width: toPx(pageSize.inner.width, pageSize.k),\n height: toPx(pageSize.inner.height, pageSize.k)\n };\n pageSize.inner.ratio = pageSize.inner.height / pageSize.inner.width;\n }\n\n // Attach pageSize to this.\n this.prop.pageSize = pageSize;\n });\n };\n\n Worker.prototype.setProgress = function setProgress(val, state, n, stack) {\n // Immediately update all progress values.\n if (val != null) this.progress.val = val;\n if (state != null) this.progress.state = state;\n if (n != null) this.progress.n = n;\n if (stack != null) this.progress.stack = stack;\n this.progress.ratio = this.progress.val / this.progress.state;\n\n // Return this for command chaining.\n return this;\n };\n\n Worker.prototype.updateProgress = function updateProgress(\n val,\n state,\n n,\n stack\n ) {\n // Immediately update all progress values, using setProgress.\n return this.setProgress(\n val ? this.progress.val + val : null,\n state ? state : null,\n n ? this.progress.n + n : null,\n stack ? this.progress.stack.concat(stack) : null\n );\n };\n\n /* ----- PROMISE MAPPING ----- */\n\n Worker.prototype.then = function then(onFulfilled, onRejected) {\n // Wrap `this` for encapsulation.\n var self = this;\n\n return this.thenCore(onFulfilled, onRejected, function then_main(\n onFulfilled,\n onRejected\n ) {\n // Update progress while queuing, calling, and resolving `then`.\n self.updateProgress(null, null, 1, [onFulfilled]);\n return Promise.prototype.then\n .call(this, function then_pre(val) {\n self.updateProgress(null, onFulfilled);\n return val;\n })\n .then(onFulfilled, onRejected)\n .then(function then_post(val) {\n self.updateProgress(1);\n return val;\n });\n });\n };\n\n Worker.prototype.thenCore = function thenCore(\n onFulfilled,\n onRejected,\n thenBase\n ) {\n // Handle optional thenBase parameter.\n thenBase = thenBase || Promise.prototype.then;\n\n // Wrap `this` for encapsulation and bind it to the promise handlers.\n var self = this;\n if (onFulfilled) {\n onFulfilled = onFulfilled.bind(self);\n }\n if (onRejected) {\n onRejected = onRejected.bind(self);\n }\n\n // Cast self into a Promise to avoid polyfills recursively defining `then`.\n var isNative =\n Promise.toString().indexOf(\"[native code]\") !== -1 &&\n Promise.name === \"Promise\";\n var selfPromise = isNative\n ? self\n : Worker.convert(Object.assign({}, self), Promise.prototype);\n\n // Return the promise, after casting it into a Worker and preserving props.\n var returnVal = thenBase.call(selfPromise, onFulfilled, onRejected);\n return Worker.convert(returnVal, self.__proto__);\n };\n\n Worker.prototype.thenExternal = function thenExternal(\n onFulfilled,\n onRejected\n ) {\n // Call `then` and return a standard promise (exits the Worker chain).\n return Promise.prototype.then.call(this, onFulfilled, onRejected);\n };\n\n Worker.prototype.thenList = function thenList(fns) {\n // Queue a series of promise 'factories' into the promise chain.\n var self = this;\n fns.forEach(function thenList_forEach(fn) {\n self = self.thenCore(fn);\n });\n return self;\n };\n\n Worker.prototype[\"catch\"] = function(onRejected) {\n // Bind `this` to the promise handler, call `catch`, and return a Worker.\n if (onRejected) {\n onRejected = onRejected.bind(this);\n }\n var returnVal = Promise.prototype[\"catch\"].call(this, onRejected);\n return Worker.convert(returnVal, this);\n };\n\n Worker.prototype.catchExternal = function catchExternal(onRejected) {\n // Call `catch` and return a standard promise (exits the Worker chain).\n return Promise.prototype[\"catch\"].call(this, onRejected);\n };\n\n Worker.prototype.error = function error(msg) {\n // Throw the error in the Promise chain.\n return this.then(function error_main() {\n throw new Error(msg);\n });\n };\n\n /* ----- ALIASES ----- */\n\n Worker.prototype.using = Worker.prototype.set;\n Worker.prototype.saveAs = Worker.prototype.save;\n Worker.prototype.export = Worker.prototype.output;\n Worker.prototype.run = Worker.prototype.then;\n\n // Get dimensions of a PDF page, as determined by jsPDF.\n jsPDF.getPageSize = function(orientation, unit, format) {\n // Decode options object\n if (typeof orientation === \"object\") {\n var options = orientation;\n orientation = options.orientation;\n unit = options.unit || unit;\n format = options.format || format;\n }\n\n // Default options\n unit = unit || \"mm\";\n format = format || \"a4\";\n orientation = (\"\" + (orientation || \"P\")).toLowerCase();\n var format_as_string = (\"\" + format).toLowerCase();\n\n // Size in pt of various paper formats\n var pageFormats = {\n a0: [2383.94, 3370.39],\n a1: [1683.78, 2383.94],\n a2: [1190.55, 1683.78],\n a3: [841.89, 1190.55],\n a4: [595.28, 841.89],\n a5: [419.53, 595.28],\n a6: [297.64, 419.53],\n a7: [209.76, 297.64],\n a8: [147.4, 209.76],\n a9: [104.88, 147.4],\n a10: [73.7, 104.88],\n b0: [2834.65, 4008.19],\n b1: [2004.09, 2834.65],\n b2: [1417.32, 2004.09],\n b3: [1000.63, 1417.32],\n b4: [708.66, 1000.63],\n b5: [498.9, 708.66],\n b6: [354.33, 498.9],\n b7: [249.45, 354.33],\n b8: [175.75, 249.45],\n b9: [124.72, 175.75],\n b10: [87.87, 124.72],\n c0: [2599.37, 3676.54],\n c1: [1836.85, 2599.37],\n c2: [1298.27, 1836.85],\n c3: [918.43, 1298.27],\n c4: [649.13, 918.43],\n c5: [459.21, 649.13],\n c6: [323.15, 459.21],\n c7: [229.61, 323.15],\n c8: [161.57, 229.61],\n c9: [113.39, 161.57],\n c10: [79.37, 113.39],\n dl: [311.81, 623.62],\n letter: [612, 792],\n \"government-letter\": [576, 756],\n legal: [612, 1008],\n \"junior-legal\": [576, 360],\n ledger: [1224, 792],\n tabloid: [792, 1224],\n \"credit-card\": [153, 243]\n };\n\n var k;\n // Unit conversion\n switch (unit) {\n case \"pt\":\n k = 1;\n break;\n case \"mm\":\n k = 72 / 25.4;\n break;\n case \"cm\":\n k = 72 / 2.54;\n break;\n case \"in\":\n k = 72;\n break;\n case \"px\":\n k = 72 / 96;\n break;\n case \"pc\":\n k = 12;\n break;\n case \"em\":\n k = 12;\n break;\n case \"ex\":\n k = 6;\n break;\n default:\n throw \"Invalid unit: \" + unit;\n }\n var pageHeight = 0;\n var pageWidth = 0;\n\n // Dimensions are stored as user units and converted to points on output\n if (pageFormats.hasOwnProperty(format_as_string)) {\n pageHeight = pageFormats[format_as_string][1] / k;\n pageWidth = pageFormats[format_as_string][0] / k;\n } else {\n try {\n pageHeight = format[1];\n pageWidth = format[0];\n } catch (err) {\n throw new Error(\"Invalid format: \" + format);\n }\n }\n\n var tmp;\n // Handle page orientation\n if (orientation === \"p\" || orientation === \"portrait\") {\n orientation = \"p\";\n if (pageWidth > pageHeight) {\n tmp = pageWidth;\n pageWidth = pageHeight;\n pageHeight = tmp;\n }\n } else if (orientation === \"l\" || orientation === \"landscape\") {\n orientation = \"l\";\n if (pageHeight > pageWidth) {\n tmp = pageWidth;\n pageWidth = pageHeight;\n pageHeight = tmp;\n }\n } else {\n throw \"Invalid orientation: \" + orientation;\n }\n\n // Return information (k is the unit conversion ratio from pts)\n var info = {\n width: pageWidth,\n height: pageHeight,\n unit: unit,\n k: k,\n orientation: orientation\n };\n return info;\n };\n\n /**\n * @typedef FontFace\n *\n * The font-face type implements an interface similar to that of the font-face CSS rule,\n * and is used by jsPDF to match fonts when the font property of CanvasRenderingContext2D\n * is updated.\n *\n * All properties expect values similar to those in the font-face CSS rule. A difference\n * is the font-family, which do not need to be enclosed in double-quotes when containing\n * spaces like in CSS.\n *\n * @property {string} family The name of the font-family.\n * @property {string|undefined} style The style that this font-face defines, e.g. 'italic'.\n * @property {string|number|undefined} weight The weight of the font, either as a string or a number (400, 500, 600, e.g.)\n * @property {string|undefined} stretch The stretch of the font, e.g. condensed, normal, expanded.\n * @property {Object[]} src A list of URLs from where fonts of various formats can be fetched.\n * @property {string} [src] url A URL to a font of a specific format.\n * @property {string} [src] format Format of the font referenced by the URL.\n */\n\n /**\n * Generate a PDF from an HTML element or string using.\n *\n * @name html\n * @function\n * @param {HTMLElement|string} source The source HTMLElement or a string containing HTML.\n * @param {Object} [options] Collection of settings\n * @param {function} [options.callback] The mandatory callback-function gets as first parameter the current jsPDF instance\n * @param {(number|number[])=} [options.margin] Page margins [top, right, bottom, left]. Default is 0.\n * @param {(boolean|'slice'|'text')=} [options.autoPaging] The auto paging mode.\n * <ul>\n * <li>\n * <code>false</code>: Auto paging is disabled.\n * </li>\n * <li>\n * <code>true</code> or <code>'slice'</code>: Will cut shapes or text chunks across page breaks. Will possibly\n * slice text in half, making it difficult to read.\n * </li>\n * <li>\n * <code>'text'</code>: Trys not to cut text in half across page breaks. Works best for documents consisting\n * mostly of a single column of text.\n * </li>\n * </ul>\n * Default is <code>true</code>.\n * @param {string} [options.filename] name of the file\n * @param {HTMLOptionImage} [options.image] image settings when converting HTML to image\n * @param {Html2CanvasOptions} [options.html2canvas] html2canvas options\n * @param {FontFace[]} [options.fontFaces] A list of font-faces to match when resolving fonts. Fonts will be added to the PDF based on the specified URL. If omitted, the font match algorithm falls back to old algorithm.\n * @param {jsPDF} [options.jsPDF] jsPDF instance\n * @param {number=} [options.x] x position on the PDF document in jsPDF units.\n * @param {number=} [options.y] y position on the PDF document in jsPDF units.\n * @param {number=} [options.width] The target width in the PDF document in jsPDF units. The rendered element will be\n * scaled such that it fits into the specified width. Has no effect if either the <code>html2canvas.scale<code> is\n * specified or the <code>windowWidth</code> option is NOT specified.\n * @param {number=} [options.windowWidth] The window width in CSS pixels. In contrast to the\n * <code>html2canvas.windowWidth</code> option, this option affects the actual container size while rendering and\n * does NOT affect CSS media queries. This option only has an effect, if the <code>width<code> option is also specified.\n *\n * @example\n * var doc = new jsPDF();\n *\n * doc.html(document.body, {\n * callback: function (doc) {\n * doc.save();\n * },\n * x: 10,\n * y: 10\n * });\n */\n jsPDFAPI.html = function(src, options) {\n \"use strict\";\n\n options = options || {};\n options.callback = options.callback || function() {};\n options.html2canvas = options.html2canvas || {};\n options.html2canvas.canvas = options.html2canvas.canvas || this.canvas;\n options.jsPDF = options.jsPDF || this;\n options.fontFaces = options.fontFaces\n ? options.fontFaces.map(normalizeFontFace)\n : null;\n\n // Create a new worker with the given options.\n var worker = new Worker(options);\n\n if (!options.worker) {\n // If worker is not set to true, perform the traditional 'simple' operation.\n return worker.from(src).doCallback();\n } else {\n // Otherwise, return the worker for new Promise-based operation.\n return worker;\n }\n };\n})(jsPDF.API);\n","/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF JavaScript plugin\n *\n * @name javascript\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n var jsNamesObj, jsJsObj, text;\n /**\n * @name addJS\n * @function\n * @param {string} javascript The javascript to be embedded into the PDF-file.\n * @returns {jsPDF}\n */\n jsPDFAPI.addJS = function(javascript) {\n text = javascript;\n this.internal.events.subscribe(\"postPutResources\", function() {\n jsNamesObj = this.internal.newObject();\n this.internal.out(\"<<\");\n this.internal.out(\"/Names [(EmbeddedJS) \" + (jsNamesObj + 1) + \" 0 R]\");\n this.internal.out(\">>\");\n this.internal.out(\"endobj\");\n\n jsJsObj = this.internal.newObject();\n this.internal.out(\"<<\");\n this.internal.out(\"/S /JavaScript\");\n this.internal.out(\"/JS (\" + text + \")\");\n this.internal.out(\">>\");\n this.internal.out(\"endobj\");\n });\n this.internal.events.subscribe(\"putCatalog\", function() {\n if (jsNamesObj !== undefined && jsJsObj !== undefined) {\n this.internal.out(\"/Names <</JavaScript \" + jsNamesObj + \" 0 R>>\");\n }\n });\n return this;\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF Outline PlugIn\n *\n * Generates a PDF Outline\n * @name outline\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var namesOid;\n //var destsGoto = [];\n\n jsPDFAPI.events.push([\n \"postPutResources\",\n function() {\n var pdf = this;\n var rx = /^(\\d+) 0 obj$/;\n\n // Write action goto objects for each page\n // this.outline.destsGoto = [];\n // for (var i = 0; i < totalPages; i++) {\n // var id = pdf.internal.newObject();\n // this.outline.destsGoto.push(id);\n // pdf.internal.write(\"<</D[\" + (i * 2 + 3) + \" 0 R /XYZ null\n // null null]/S/GoTo>> endobj\");\n // }\n //\n // for (var i = 0; i < dests.length; i++) {\n // pdf.internal.write(\"(page_\" + (i + 1) + \")\" + dests[i] + \" 0\n // R\");\n // }\n //\n if (this.outline.root.children.length > 0) {\n var lines = pdf.outline.render().split(/\\r\\n/);\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n var m = rx.exec(line);\n if (m != null) {\n var oid = m[1];\n pdf.internal.newObjectDeferredBegin(oid, false);\n }\n pdf.internal.write(line);\n }\n }\n\n // This code will write named destination for each page reference\n // (page_1, etc)\n if (this.outline.createNamedDestinations) {\n var totalPages = this.internal.pages.length;\n // WARNING: this assumes jsPDF starts on page 3 and pageIDs\n // follow 5, 7, 9, etc\n // Write destination objects for each page\n var dests = [];\n for (var i = 0; i < totalPages; i++) {\n var id = pdf.internal.newObject();\n dests.push(id);\n var info = pdf.internal.getPageInfo(i + 1);\n pdf.internal.write(\n \"<< /D[\" + info.objId + \" 0 R /XYZ null null null]>> endobj\"\n );\n }\n\n // assign a name for each destination\n var names2Oid = pdf.internal.newObject();\n pdf.internal.write(\"<< /Names [ \");\n for (var i = 0; i < dests.length; i++) {\n pdf.internal.write(\"(page_\" + (i + 1) + \")\" + dests[i] + \" 0 R\");\n }\n pdf.internal.write(\" ] >>\", \"endobj\");\n\n // var kids = pdf.internal.newObject();\n // pdf.internal.write('<< /Kids [ ' + names2Oid + ' 0 R');\n // pdf.internal.write(' ] >>', 'endobj');\n\n namesOid = pdf.internal.newObject();\n pdf.internal.write(\"<< /Dests \" + names2Oid + \" 0 R\");\n pdf.internal.write(\">>\", \"endobj\");\n }\n }\n ]);\n\n jsPDFAPI.events.push([\n \"putCatalog\",\n function() {\n var pdf = this;\n if (pdf.outline.root.children.length > 0) {\n pdf.internal.write(\n \"/Outlines\",\n this.outline.makeRef(this.outline.root)\n );\n if (this.outline.createNamedDestinations) {\n pdf.internal.write(\"/Names \" + namesOid + \" 0 R\");\n }\n // Open with Bookmarks showing\n // pdf.internal.write(\"/PageMode /UseOutlines\");\n }\n }\n ]);\n\n jsPDFAPI.events.push([\n \"initialized\",\n function() {\n var pdf = this;\n\n pdf.outline = {\n createNamedDestinations: false,\n root: {\n children: []\n }\n };\n\n /**\n * Options: pageNumber\n */\n pdf.outline.add = function(parent, title, options) {\n var item = {\n title: title,\n options: options,\n children: []\n };\n if (parent == null) {\n parent = this.root;\n }\n parent.children.push(item);\n return item;\n };\n\n pdf.outline.render = function() {\n this.ctx = {};\n this.ctx.val = \"\";\n this.ctx.pdf = pdf;\n\n this.genIds_r(this.root);\n this.renderRoot(this.root);\n this.renderItems(this.root);\n\n return this.ctx.val;\n };\n\n pdf.outline.genIds_r = function(node) {\n node.id = pdf.internal.newObjectDeferred();\n for (var i = 0; i < node.children.length; i++) {\n this.genIds_r(node.children[i]);\n }\n };\n\n pdf.outline.renderRoot = function(node) {\n this.objStart(node);\n this.line(\"/Type /Outlines\");\n if (node.children.length > 0) {\n this.line(\"/First \" + this.makeRef(node.children[0]));\n this.line(\n \"/Last \" + this.makeRef(node.children[node.children.length - 1])\n );\n }\n this.line(\n \"/Count \" +\n this.count_r(\n {\n count: 0\n },\n node\n )\n );\n this.objEnd();\n };\n\n pdf.outline.renderItems = function(node) {\n var getVerticalCoordinateString = this.ctx.pdf.internal\n .getVerticalCoordinateString;\n for (var i = 0; i < node.children.length; i++) {\n var item = node.children[i];\n this.objStart(item);\n\n this.line(\"/Title \" + this.makeString(item.title));\n\n this.line(\"/Parent \" + this.makeRef(node));\n if (i > 0) {\n this.line(\"/Prev \" + this.makeRef(node.children[i - 1]));\n }\n if (i < node.children.length - 1) {\n this.line(\"/Next \" + this.makeRef(node.children[i + 1]));\n }\n if (item.children.length > 0) {\n this.line(\"/First \" + this.makeRef(item.children[0]));\n this.line(\n \"/Last \" + this.makeRef(item.children[item.children.length - 1])\n );\n }\n\n var count = (this.count = this.count_r(\n {\n count: 0\n },\n item\n ));\n if (count > 0) {\n this.line(\"/Count \" + count);\n }\n\n if (item.options) {\n if (item.options.pageNumber) {\n // Explicit Destination\n //WARNING this assumes page ids are 3,5,7, etc.\n var info = pdf.internal.getPageInfo(item.options.pageNumber);\n this.line(\n \"/Dest \" +\n \"[\" +\n info.objId +\n \" 0 R /XYZ 0 \" +\n getVerticalCoordinateString(0) +\n \" 0]\"\n );\n // this line does not work on all clients (pageNumber instead of page ref)\n //this.line('/Dest ' + '[' + (item.options.pageNumber - 1) + ' /XYZ 0 ' + this.ctx.pdf.internal.pageSize.getHeight() + ' 0]');\n\n // Named Destination\n // this.line('/Dest (page_' + (item.options.pageNumber) + ')');\n\n // Action Destination\n // var id = pdf.internal.newObject();\n // pdf.internal.write('<</D[' + (item.options.pageNumber - 1) + ' /XYZ null null null]/S/GoTo>> endobj');\n // this.line('/A ' + id + ' 0 R' );\n }\n }\n this.objEnd();\n }\n for (var z = 0; z < node.children.length; z++) {\n this.renderItems(node.children[z]);\n }\n };\n\n pdf.outline.line = function(text) {\n this.ctx.val += text + \"\\r\\n\";\n };\n\n pdf.outline.makeRef = function(node) {\n return node.id + \" 0 R\";\n };\n\n pdf.outline.makeString = function(val) {\n return \"(\" + pdf.internal.pdfEscape(val) + \")\";\n };\n\n pdf.outline.objStart = function(node) {\n this.ctx.val += \"\\r\\n\" + node.id + \" 0 obj\" + \"\\r\\n<<\\r\\n\";\n };\n\n pdf.outline.objEnd = function() {\n this.ctx.val += \">> \\r\\n\" + \"endobj\" + \"\\r\\n\";\n };\n\n pdf.outline.count_r = function(ctx, node) {\n for (var i = 0; i < node.children.length; i++) {\n ctx.count++;\n this.count_r(ctx, node.children[i]);\n }\n return ctx.count;\n };\n }\n ]);\n\n return this;\n})(jsPDF.API);\n","/**\n * @license\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF jpeg Support PlugIn\n *\n * @name jpeg_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * 0xc0 (SOF) Huffman - Baseline DCT\n * 0xc1 (SOF) Huffman - Extended sequential DCT\n * 0xc2 Progressive DCT (SOF2)\n * 0xc3 Spatial (sequential) lossless (SOF3)\n * 0xc4 Differential sequential DCT (SOF5)\n * 0xc5 Differential progressive DCT (SOF6)\n * 0xc6 Differential spatial (SOF7)\n * 0xc7\n */\n var markers = [0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7];\n\n //takes a string imgData containing the raw bytes of\n //a jpeg image and returns [width, height]\n //Algorithm from: http://www.64lines.com/jpeg-width-height\n var getJpegInfo = function(imgData) {\n var width, height, numcomponents;\n var blockLength = imgData.charCodeAt(4) * 256 + imgData.charCodeAt(5);\n var len = imgData.length;\n var result = { width: 0, height: 0, numcomponents: 1 };\n for (var i = 4; i < len; i += 2) {\n i += blockLength;\n if (markers.indexOf(imgData.charCodeAt(i + 1)) !== -1) {\n height = imgData.charCodeAt(i + 5) * 256 + imgData.charCodeAt(i + 6);\n width = imgData.charCodeAt(i + 7) * 256 + imgData.charCodeAt(i + 8);\n numcomponents = imgData.charCodeAt(i + 9);\n result = { width: width, height: height, numcomponents: numcomponents };\n break;\n } else {\n blockLength =\n imgData.charCodeAt(i + 2) * 256 + imgData.charCodeAt(i + 3);\n }\n }\n return result;\n };\n\n /**\n * @ignore\n */\n jsPDFAPI.processJPEG = function(\n data,\n index,\n alias,\n compression,\n dataAsBinaryString,\n colorSpace\n ) {\n var filter = this.decode.DCT_DECODE,\n bpc = 8,\n dims,\n result = null;\n\n if (\n typeof data === \"string\" ||\n this.__addimage__.isArrayBuffer(data) ||\n this.__addimage__.isArrayBufferView(data)\n ) {\n // if we already have a stored binary string rep use that\n data = dataAsBinaryString || data;\n data = this.__addimage__.isArrayBuffer(data)\n ? new Uint8Array(data)\n : data;\n data = this.__addimage__.isArrayBufferView(data)\n ? this.__addimage__.arrayBufferToBinaryString(data)\n : data;\n\n dims = getJpegInfo(data);\n switch (dims.numcomponents) {\n case 1:\n colorSpace = this.color_spaces.DEVICE_GRAY;\n break;\n case 4:\n colorSpace = this.color_spaces.DEVICE_CMYK;\n break;\n case 3:\n colorSpace = this.color_spaces.DEVICE_RGB;\n break;\n }\n\n result = {\n data: data,\n width: dims.width,\n height: dims.height,\n colorSpace: colorSpace,\n bitsPerComponent: bpc,\n filter: filter,\n index: index,\n alias: alias\n };\n }\n return result;\n };\n})(jsPDF.API);\n","// Generated by CoffeeScript 1.4.0\n\n/**\n * @license\n * PNG.js\n * Copyright (c) 2011 Devon Govett\n * MIT LICENSE\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this\n * software and associated documentation files (the \"Software\"), to deal in the Software\n * without restriction, including without limitation the rights to use, copy, modify, merge,\n * publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons\n * to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\n * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nimport { unzlibSync } from \"./fflate.js\";\nimport { globalObject } from \"./globalObject.js\";\n\nvar PNG = (function() {\n var APNG_BLEND_OP_OVER,\n APNG_BLEND_OP_SOURCE,\n APNG_DISPOSE_OP_BACKGROUND,\n APNG_DISPOSE_OP_NONE,\n APNG_DISPOSE_OP_PREVIOUS,\n makeImage,\n scratchCanvas,\n scratchCtx;\n\n APNG_DISPOSE_OP_NONE = 0;\n\n APNG_DISPOSE_OP_BACKGROUND = 1;\n\n APNG_DISPOSE_OP_PREVIOUS = 2;\n\n APNG_BLEND_OP_SOURCE = 0;\n\n APNG_BLEND_OP_OVER = 1;\n\n function PNG(data) {\n var chunkSize,\n colors,\n palLen,\n delayDen,\n delayNum,\n frame,\n i,\n index,\n key,\n section,\n palShort,\n text,\n _i,\n _j,\n _ref;\n this.data = data;\n this.pos = 8;\n this.palette = [];\n this.imgData = [];\n this.transparency = {};\n this.animation = null;\n this.text = {};\n frame = null;\n while (true) {\n chunkSize = this.readUInt32();\n section = function() {\n var _i, _results;\n _results = [];\n for (i = _i = 0; _i < 4; i = ++_i) {\n _results.push(String.fromCharCode(this.data[this.pos++]));\n }\n return _results;\n }\n .call(this)\n .join(\"\");\n switch (section) {\n case \"IHDR\":\n this.width = this.readUInt32();\n this.height = this.readUInt32();\n this.bits = this.data[this.pos++];\n this.colorType = this.data[this.pos++];\n this.compressionMethod = this.data[this.pos++];\n this.filterMethod = this.data[this.pos++];\n this.interlaceMethod = this.data[this.pos++];\n break;\n case \"acTL\":\n this.animation = {\n numFrames: this.readUInt32(),\n numPlays: this.readUInt32() || Infinity,\n frames: []\n };\n break;\n case \"PLTE\":\n this.palette = this.read(chunkSize);\n break;\n case \"fcTL\":\n if (frame) {\n this.animation.frames.push(frame);\n }\n this.pos += 4;\n frame = {\n width: this.readUInt32(),\n height: this.readUInt32(),\n xOffset: this.readUInt32(),\n yOffset: this.readUInt32()\n };\n delayNum = this.readUInt16();\n delayDen = this.readUInt16() || 100;\n frame.delay = (1000 * delayNum) / delayDen;\n frame.disposeOp = this.data[this.pos++];\n frame.blendOp = this.data[this.pos++];\n frame.data = [];\n break;\n case \"IDAT\":\n case \"fdAT\":\n if (section === \"fdAT\") {\n this.pos += 4;\n chunkSize -= 4;\n }\n data = (frame != null ? frame.data : void 0) || this.imgData;\n for (\n i = _i = 0;\n 0 <= chunkSize ? _i < chunkSize : _i > chunkSize;\n i = 0 <= chunkSize ? ++_i : --_i\n ) {\n data.push(this.data[this.pos++]);\n }\n break;\n case \"tRNS\":\n this.transparency = {};\n switch (this.colorType) {\n case 3:\n palLen = this.palette.length / 3;\n this.transparency.indexed = this.read(chunkSize);\n if (this.transparency.indexed.length > palLen)\n throw new Error(\"More transparent colors than palette size\");\n /*\n * According to the PNG spec trns should be increased to the same size as palette if shorter\n */\n //palShort = 255 - this.transparency.indexed.length;\n palShort = palLen - this.transparency.indexed.length;\n if (palShort > 0) {\n for (\n i = _j = 0;\n 0 <= palShort ? _j < palShort : _j > palShort;\n i = 0 <= palShort ? ++_j : --_j\n ) {\n this.transparency.indexed.push(255);\n }\n }\n break;\n case 0:\n this.transparency.grayscale = this.read(chunkSize)[0];\n break;\n case 2:\n this.transparency.rgb = this.read(chunkSize);\n }\n break;\n case \"tEXt\":\n text = this.read(chunkSize);\n index = text.indexOf(0);\n key = String.fromCharCode.apply(String, text.slice(0, index));\n this.text[key] = String.fromCharCode.apply(\n String,\n text.slice(index + 1)\n );\n break;\n case \"IEND\":\n if (frame) {\n this.animation.frames.push(frame);\n }\n this.colors = function() {\n switch (this.colorType) {\n case 0:\n case 3:\n case 4:\n return 1;\n case 2:\n case 6:\n return 3;\n }\n }.call(this);\n this.hasAlphaChannel = (_ref = this.colorType) === 4 || _ref === 6;\n colors = this.colors + (this.hasAlphaChannel ? 1 : 0);\n this.pixelBitlength = this.bits * colors;\n this.colorSpace = function() {\n switch (this.colors) {\n case 1:\n return \"DeviceGray\";\n case 3:\n return \"DeviceRGB\";\n }\n }.call(this);\n this.imgData = new Uint8Array(this.imgData);\n return;\n default:\n this.pos += chunkSize;\n }\n this.pos += 4;\n if (this.pos > this.data.length) {\n throw new Error(\"Incomplete or corrupt PNG file\");\n }\n }\n }\n\n PNG.prototype.read = function(bytes) {\n var i, _i, _results;\n _results = [];\n for (\n i = _i = 0;\n 0 <= bytes ? _i < bytes : _i > bytes;\n i = 0 <= bytes ? ++_i : --_i\n ) {\n _results.push(this.data[this.pos++]);\n }\n return _results;\n };\n\n PNG.prototype.readUInt32 = function() {\n var b1, b2, b3, b4;\n b1 = this.data[this.pos++] << 24;\n b2 = this.data[this.pos++] << 16;\n b3 = this.data[this.pos++] << 8;\n b4 = this.data[this.pos++];\n return b1 | b2 | b3 | b4;\n };\n\n PNG.prototype.readUInt16 = function() {\n var b1, b2;\n b1 = this.data[this.pos++] << 8;\n b2 = this.data[this.pos++];\n return b1 | b2;\n };\n\n PNG.prototype.decodePixels = function(data) {\n var pixelBytes = this.pixelBitlength / 8;\n var fullPixels = new Uint8Array(this.width * this.height * pixelBytes);\n var pos = 0;\n var _this = this;\n\n if (data == null) {\n data = this.imgData;\n }\n if (data.length === 0) {\n return new Uint8Array(0);\n }\n\n data = unzlibSync(data);\n function pass(x0, y0, dx, dy) {\n var abyte,\n c,\n col,\n i,\n left,\n length,\n p,\n pa,\n paeth,\n pb,\n pc,\n pixels,\n row,\n scanlineLength,\n upper,\n upperLeft,\n _i,\n _j,\n _k,\n _l,\n _m;\n var w = Math.ceil((_this.width - x0) / dx),\n h = Math.ceil((_this.height - y0) / dy);\n var isFull = _this.width == w && _this.height == h;\n scanlineLength = pixelBytes * w;\n pixels = isFull ? fullPixels : new Uint8Array(scanlineLength * h);\n length = data.length;\n row = 0;\n c = 0;\n while (row < h && pos < length) {\n switch (data[pos++]) {\n case 0:\n for (i = _i = 0; _i < scanlineLength; i = _i += 1) {\n pixels[c++] = data[pos++];\n }\n break;\n case 1:\n for (i = _j = 0; _j < scanlineLength; i = _j += 1) {\n abyte = data[pos++];\n left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n pixels[c++] = (abyte + left) % 256;\n }\n break;\n case 2:\n for (i = _k = 0; _k < scanlineLength; i = _k += 1) {\n abyte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n upper =\n row &&\n pixels[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n pixels[c++] = (upper + abyte) % 256;\n }\n break;\n case 3:\n for (i = _l = 0; _l < scanlineLength; i = _l += 1) {\n abyte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n upper =\n row &&\n pixels[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n pixels[c++] = (abyte + Math.floor((left + upper) / 2)) % 256;\n }\n break;\n case 4:\n for (i = _m = 0; _m < scanlineLength; i = _m += 1) {\n abyte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n if (row === 0) {\n upper = upperLeft = 0;\n } else {\n upper =\n pixels[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n upperLeft =\n col &&\n pixels[\n (row - 1) * scanlineLength +\n (col - 1) * pixelBytes +\n (i % pixelBytes)\n ];\n }\n p = left + upper - upperLeft;\n pa = Math.abs(p - left);\n pb = Math.abs(p - upper);\n pc = Math.abs(p - upperLeft);\n if (pa <= pb && pa <= pc) {\n paeth = left;\n } else if (pb <= pc) {\n paeth = upper;\n } else {\n paeth = upperLeft;\n }\n pixels[c++] = (abyte + paeth) % 256;\n }\n break;\n default:\n throw new Error(\"Invalid filter algorithm: \" + data[pos - 1]);\n }\n if (!isFull) {\n var fullPos = ((y0 + row * dy) * _this.width + x0) * pixelBytes;\n var partPos = row * scanlineLength;\n for (i = 0; i < w; i += 1) {\n for (var j = 0; j < pixelBytes; j += 1)\n fullPixels[fullPos++] = pixels[partPos++];\n fullPos += (dx - 1) * pixelBytes;\n }\n }\n row++;\n }\n }\n if (_this.interlaceMethod == 1) {\n /*\n 1 6 4 6 2 6 4 6\n 7 7 7 7 7 7 7 7\n 5 6 5 6 5 6 5 6\n 7 7 7 7 7 7 7 7\n 3 6 4 6 3 6 4 6\n 7 7 7 7 7 7 7 7\n 5 6 5 6 5 6 5 6\n 7 7 7 7 7 7 7 7\n */\n pass(0, 0, 8, 8); // 1\n /* NOTE these seem to follow the pattern:\n * pass(x, 0, 2*x, 2*x);\n * pass(0, x, x, 2*x);\n * with x being 4, 2, 1.\n */\n pass(4, 0, 8, 8); // 2\n pass(0, 4, 4, 8); // 3\n\n pass(2, 0, 4, 4); // 4\n pass(0, 2, 2, 4); // 5\n\n pass(1, 0, 2, 2); // 6\n pass(0, 1, 1, 2); // 7\n } else {\n pass(0, 0, 1, 1);\n }\n return fullPixels;\n };\n\n PNG.prototype.decodePalette = function() {\n var c, i, length, palette, pos, ret, transparency, _i, _ref, _ref1;\n palette = this.palette;\n transparency = this.transparency.indexed || [];\n ret = new Uint8Array((transparency.length || 0) + palette.length);\n pos = 0;\n length = palette.length;\n c = 0;\n for (i = _i = 0, _ref = length; _i < _ref; i = _i += 3) {\n ret[pos++] = palette[i];\n ret[pos++] = palette[i + 1];\n ret[pos++] = palette[i + 2];\n ret[pos++] = (_ref1 = transparency[c++]) != null ? _ref1 : 255;\n }\n return ret;\n };\n\n PNG.prototype.copyToImageData = function(imageData, pixels) {\n var alpha, colors, data, i, input, j, k, length, palette, v, _ref;\n colors = this.colors;\n palette = null;\n alpha = this.hasAlphaChannel;\n if (this.palette.length) {\n palette =\n (_ref = this._decodedPalette) != null\n ? _ref\n : (this._decodedPalette = this.decodePalette());\n colors = 4;\n alpha = true;\n }\n data = imageData.data || imageData;\n length = data.length;\n input = palette || pixels;\n i = j = 0;\n if (colors === 1) {\n while (i < length) {\n k = palette ? pixels[i / 4] * 4 : j;\n v = input[k++];\n data[i++] = v;\n data[i++] = v;\n data[i++] = v;\n data[i++] = alpha ? input[k++] : 255;\n j = k;\n }\n } else {\n while (i < length) {\n k = palette ? pixels[i / 4] * 4 : j;\n data[i++] = input[k++];\n data[i++] = input[k++];\n data[i++] = input[k++];\n data[i++] = alpha ? input[k++] : 255;\n j = k;\n }\n }\n };\n\n PNG.prototype.decode = function() {\n var ret;\n ret = new Uint8Array(this.width * this.height * 4);\n this.copyToImageData(ret, this.decodePixels());\n return ret;\n };\n\n var hasBrowserCanvas = function() {\n if (Object.prototype.toString.call(globalObject) === \"[object Window]\") {\n try {\n scratchCanvas = globalObject.document.createElement(\"canvas\");\n scratchCtx = scratchCanvas.getContext(\"2d\");\n } catch (e) {\n return false;\n }\n return true;\n }\n return false;\n };\n\n hasBrowserCanvas();\n\n makeImage = function(imageData) {\n if (hasBrowserCanvas() === true) {\n var img;\n scratchCtx.width = imageData.width;\n scratchCtx.height = imageData.height;\n scratchCtx.clearRect(0, 0, imageData.width, imageData.height);\n scratchCtx.putImageData(imageData, 0, 0);\n img = new Image();\n img.src = scratchCanvas.toDataURL();\n return img;\n }\n throw new Error(\"This method requires a Browser with Canvas-capability.\");\n };\n\n PNG.prototype.decodeFrames = function(ctx) {\n var frame, i, imageData, pixels, _i, _len, _ref, _results;\n if (!this.animation) {\n return;\n }\n _ref = this.animation.frames;\n _results = [];\n for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {\n frame = _ref[i];\n imageData = ctx.createImageData(frame.width, frame.height);\n pixels = this.decodePixels(new Uint8Array(frame.data));\n this.copyToImageData(imageData, pixels);\n frame.imageData = imageData;\n _results.push((frame.image = makeImage(imageData)));\n }\n return _results;\n };\n\n PNG.prototype.renderFrame = function(ctx, number) {\n var frame, frames, prev;\n frames = this.animation.frames;\n frame = frames[number];\n prev = frames[number - 1];\n if (number === 0) {\n ctx.clearRect(0, 0, this.width, this.height);\n }\n if (\n (prev != null ? prev.disposeOp : void 0) === APNG_DISPOSE_OP_BACKGROUND\n ) {\n ctx.clearRect(prev.xOffset, prev.yOffset, prev.width, prev.height);\n } else if (\n (prev != null ? prev.disposeOp : void 0) === APNG_DISPOSE_OP_PREVIOUS\n ) {\n ctx.putImageData(prev.imageData, prev.xOffset, prev.yOffset);\n }\n if (frame.blendOp === APNG_BLEND_OP_SOURCE) {\n ctx.clearRect(frame.xOffset, frame.yOffset, frame.width, frame.height);\n }\n return ctx.drawImage(frame.image, frame.xOffset, frame.yOffset);\n };\n\n PNG.prototype.animate = function(ctx) {\n var doFrame,\n frameNumber,\n frames,\n numFrames,\n numPlays,\n _ref,\n _this = this;\n frameNumber = 0;\n (_ref = this.animation),\n (numFrames = _ref.numFrames),\n (frames = _ref.frames),\n (numPlays = _ref.numPlays);\n return (doFrame = function() {\n var f, frame;\n f = frameNumber++ % numFrames;\n frame = frames[f];\n _this.renderFrame(ctx, f);\n if (numFrames > 1 && frameNumber / numFrames < numPlays) {\n return (_this.animation._timeout = setTimeout(doFrame, frame.delay));\n }\n })();\n };\n\n PNG.prototype.stopAnimation = function() {\n var _ref;\n return clearTimeout(\n (_ref = this.animation) != null ? _ref._timeout : void 0\n );\n };\n\n PNG.prototype.render = function(canvas) {\n var ctx, data;\n if (canvas._png) {\n canvas._png.stopAnimation();\n }\n canvas._png = this;\n canvas.width = this.width;\n canvas.height = this.height;\n ctx = canvas.getContext(\"2d\");\n if (this.animation) {\n this.decodeFrames(ctx);\n return this.animate(ctx);\n } else {\n data = ctx.createImageData(this.width, this.height);\n this.copyToImageData(data, this.decodePixels());\n return ctx.putImageData(data, 0, 0);\n }\n };\n\n return PNG;\n})();\n\nexport { PNG };\n","/**\n * @license\n *\n * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { zlibSync } from \"../libs/fflate.js\";\nimport { PNG } from \"../libs/png.js\";\n\n/**\n * jsPDF PNG PlugIn\n * @name png_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /*\n * @see http://www.w3.org/TR/PNG-Chunks.html\n *\n Color Allowed Interpretation\n Type Bit Depths\n\n 0 1,2,4,8,16 Each pixel is a grayscale sample.\n\n 2 8,16 Each pixel is an R,G,B triple.\n\n 3 1,2,4,8 Each pixel is a palette index;\n a PLTE chunk must appear.\n\n 4 8,16 Each pixel is a grayscale sample,\n followed by an alpha sample.\n\n 6 8,16 Each pixel is an R,G,B triple,\n followed by an alpha sample.\n */\n\n /*\n * PNG filter method types\n *\n * @see http://www.w3.org/TR/PNG-Filters.html\n * @see http://www.libpng.org/pub/png/book/chapter09.html\n *\n * This is what the value 'Predictor' in decode params relates to\n *\n * 15 is \"optimal prediction\", which means the prediction algorithm can change from line to line.\n * In that case, you actually have to read the first byte off each line for the prediction algorthim (which should be 0-4, corresponding to PDF 10-14) and select the appropriate unprediction algorithm based on that byte.\n *\n 0 None\n 1 Sub\n 2 Up\n 3 Average\n 4 Paeth\n */\n\n var canCompress = function(value) {\n return value !== jsPDFAPI.image_compression.NONE && hasCompressionJS();\n };\n\n var hasCompressionJS = function() {\n return typeof zlibSync === \"function\";\n };\n var compressBytes = function(bytes, lineLength, colorsPerPixel, compression) {\n var level = 4;\n var filter_method = filterUp;\n\n switch (compression) {\n case jsPDFAPI.image_compression.FAST:\n level = 1;\n filter_method = filterSub;\n break;\n\n case jsPDFAPI.image_compression.MEDIUM:\n level = 6;\n filter_method = filterAverage;\n break;\n\n case jsPDFAPI.image_compression.SLOW:\n level = 9;\n filter_method = filterPaeth;\n break;\n }\n\n bytes = applyPngFilterMethod(\n bytes,\n lineLength,\n colorsPerPixel,\n filter_method\n );\n var dat = zlibSync(bytes, { level: level });\n return jsPDFAPI.__addimage__.arrayBufferToBinaryString(dat);\n };\n\n var applyPngFilterMethod = function(\n bytes,\n lineLength,\n colorsPerPixel,\n filter_method\n ) {\n var lines = bytes.length / lineLength,\n result = new Uint8Array(bytes.length + lines),\n filter_methods = getFilterMethods(),\n line,\n prevLine,\n offset;\n\n for (var i = 0; i < lines; i += 1) {\n offset = i * lineLength;\n line = bytes.subarray(offset, offset + lineLength);\n\n if (filter_method) {\n result.set(filter_method(line, colorsPerPixel, prevLine), offset + i);\n } else {\n var len = filter_methods.length,\n results = [];\n\n for (var j; j < len; j += 1) {\n results[j] = filter_methods[j](line, colorsPerPixel, prevLine);\n }\n\n var ind = getIndexOfSmallestSum(results.concat());\n\n result.set(results[ind], offset + i);\n }\n\n prevLine = line;\n }\n\n return result;\n };\n\n var filterNone = function(line) {\n /*var result = new Uint8Array(line.length + 1);\n result[0] = 0;\n result.set(line, 1);*/\n\n var result = Array.apply([], line);\n result.unshift(0);\n\n return result;\n };\n\n var filterSub = function(line, colorsPerPixel) {\n var result = [],\n len = line.length,\n left;\n\n result[0] = 1;\n\n for (var i = 0; i < len; i += 1) {\n left = line[i - colorsPerPixel] || 0;\n result[i + 1] = (line[i] - left + 0x0100) & 0xff;\n }\n\n return result;\n };\n\n var filterUp = function(line, colorsPerPixel, prevLine) {\n var result = [],\n len = line.length,\n up;\n\n result[0] = 2;\n\n for (var i = 0; i < len; i += 1) {\n up = (prevLine && prevLine[i]) || 0;\n result[i + 1] = (line[i] - up + 0x0100) & 0xff;\n }\n\n return result;\n };\n\n var filterAverage = function(line, colorsPerPixel, prevLine) {\n var result = [],\n len = line.length,\n left,\n up;\n\n result[0] = 3;\n\n for (var i = 0; i < len; i += 1) {\n left = line[i - colorsPerPixel] || 0;\n up = (prevLine && prevLine[i]) || 0;\n result[i + 1] = (line[i] + 0x0100 - ((left + up) >>> 1)) & 0xff;\n }\n\n return result;\n };\n\n var filterPaeth = function(line, colorsPerPixel, prevLine) {\n var result = [],\n len = line.length,\n left,\n up,\n upLeft,\n paeth;\n\n result[0] = 4;\n\n for (var i = 0; i < len; i += 1) {\n left = line[i - colorsPerPixel] || 0;\n up = (prevLine && prevLine[i]) || 0;\n upLeft = (prevLine && prevLine[i - colorsPerPixel]) || 0;\n paeth = paethPredictor(left, up, upLeft);\n result[i + 1] = (line[i] - paeth + 0x0100) & 0xff;\n }\n\n return result;\n };\n\n var paethPredictor = function(left, up, upLeft) {\n if (left === up && up === upLeft) {\n return left;\n }\n var pLeft = Math.abs(up - upLeft),\n pUp = Math.abs(left - upLeft),\n pUpLeft = Math.abs(left + up - upLeft - upLeft);\n return pLeft <= pUp && pLeft <= pUpLeft\n ? left\n : pUp <= pUpLeft\n ? up\n : upLeft;\n };\n\n var getFilterMethods = function() {\n return [filterNone, filterSub, filterUp, filterAverage, filterPaeth];\n };\n\n var getIndexOfSmallestSum = function(arrays) {\n var sum = arrays.map(function(value) {\n return value.reduce(function(pv, cv) {\n return pv + Math.abs(cv);\n }, 0);\n });\n return sum.indexOf(Math.min.apply(null, sum));\n };\n\n var getPredictorFromCompression = function(compression) {\n var predictor;\n switch (compression) {\n case jsPDFAPI.image_compression.FAST:\n predictor = 11;\n break;\n\n case jsPDFAPI.image_compression.MEDIUM:\n predictor = 13;\n break;\n\n case jsPDFAPI.image_compression.SLOW:\n predictor = 14;\n break;\n\n default:\n predictor = 12;\n break;\n }\n return predictor;\n };\n\n /**\n * @name processPNG\n * @function\n * @ignore\n */\n jsPDFAPI.processPNG = function(imageData, index, alias, compression) {\n \"use strict\";\n\n var colorSpace,\n filter = this.decode.FLATE_DECODE,\n bitsPerComponent,\n image,\n decodeParameters = \"\",\n trns,\n colors,\n pal,\n smask,\n pixels,\n len,\n alphaData,\n imgData,\n hasColors,\n pixel,\n i,\n n;\n\n if (this.__addimage__.isArrayBuffer(imageData))\n imageData = new Uint8Array(imageData);\n\n if (this.__addimage__.isArrayBufferView(imageData)) {\n image = new PNG(imageData);\n imageData = image.imgData;\n bitsPerComponent = image.bits;\n colorSpace = image.colorSpace;\n colors = image.colors;\n\n /*\n * colorType 6 - Each pixel is an R,G,B triple, followed by an alpha sample.\n *\n * colorType 4 - Each pixel is a grayscale sample, followed by an alpha sample.\n *\n * Extract alpha to create two separate images, using the alpha as a sMask\n */\n if ([4, 6].indexOf(image.colorType) !== -1) {\n /*\n * processes 8 bit RGBA and grayscale + alpha images\n */\n if (image.bits === 8) {\n pixels =\n image.pixelBitlength == 32\n ? new Uint32Array(image.decodePixels().buffer)\n : image.pixelBitlength == 16\n ? new Uint16Array(image.decodePixels().buffer)\n : new Uint8Array(image.decodePixels().buffer);\n len = pixels.length;\n imgData = new Uint8Array(len * image.colors);\n alphaData = new Uint8Array(len);\n var pDiff = image.pixelBitlength - image.bits;\n i = 0;\n n = 0;\n var pbl;\n\n for (; i < len; i++) {\n pixel = pixels[i];\n pbl = 0;\n\n while (pbl < pDiff) {\n imgData[n++] = (pixel >>> pbl) & 0xff;\n pbl = pbl + image.bits;\n }\n\n alphaData[i] = (pixel >>> pbl) & 0xff;\n }\n }\n\n /*\n * processes 16 bit RGBA and grayscale + alpha images\n */\n if (image.bits === 16) {\n pixels = new Uint32Array(image.decodePixels().buffer);\n len = pixels.length;\n imgData = new Uint8Array(\n len * (32 / image.pixelBitlength) * image.colors\n );\n alphaData = new Uint8Array(len * (32 / image.pixelBitlength));\n hasColors = image.colors > 1;\n i = 0;\n n = 0;\n var a = 0;\n\n while (i < len) {\n pixel = pixels[i++];\n\n imgData[n++] = (pixel >>> 0) & 0xff;\n\n if (hasColors) {\n imgData[n++] = (pixel >>> 16) & 0xff;\n\n pixel = pixels[i++];\n imgData[n++] = (pixel >>> 0) & 0xff;\n }\n\n alphaData[a++] = (pixel >>> 16) & 0xff;\n }\n bitsPerComponent = 8;\n }\n\n if (canCompress(compression)) {\n imageData = compressBytes(\n imgData,\n image.width * image.colors,\n image.colors,\n compression\n );\n smask = compressBytes(alphaData, image.width, 1, compression);\n } else {\n imageData = imgData;\n smask = alphaData;\n filter = undefined;\n }\n }\n\n /*\n * Indexed png. Each pixel is a palette index.\n */\n if (image.colorType === 3) {\n colorSpace = this.color_spaces.INDEXED;\n pal = image.palette;\n\n if (image.transparency.indexed) {\n var trans = image.transparency.indexed;\n var total = 0;\n i = 0;\n len = trans.length;\n\n for (; i < len; ++i) {\n total += trans[i];\n }\n\n total = total / 255;\n\n /*\n * a single color is specified as 100% transparent (0),\n * so we set trns to use a /Mask with that index\n */\n if (total === len - 1 && trans.indexOf(0) !== -1) {\n trns = [trans.indexOf(0)];\n\n /*\n * there's more than one colour within the palette that specifies\n * a transparency value less than 255, so we unroll the pixels to create an image sMask\n */\n } else if (total !== len) {\n pixels = image.decodePixels();\n alphaData = new Uint8Array(pixels.length);\n i = 0;\n len = pixels.length;\n\n for (; i < len; i++) {\n alphaData[i] = trans[pixels[i]];\n }\n\n smask = compressBytes(alphaData, image.width, 1);\n }\n }\n }\n\n var predictor = getPredictorFromCompression(compression);\n\n if (filter === this.decode.FLATE_DECODE) {\n decodeParameters = \"/Predictor \" + predictor + \" \";\n }\n decodeParameters +=\n \"/Colors \" +\n colors +\n \" /BitsPerComponent \" +\n bitsPerComponent +\n \" /Columns \" +\n image.width;\n\n if (\n this.__addimage__.isArrayBuffer(imageData) ||\n this.__addimage__.isArrayBufferView(imageData)\n ) {\n imageData = this.__addimage__.arrayBufferToBinaryString(imageData);\n }\n\n if (\n (smask && this.__addimage__.isArrayBuffer(smask)) ||\n this.__addimage__.isArrayBufferView(smask)\n ) {\n smask = this.__addimage__.arrayBufferToBinaryString(smask);\n }\n\n return {\n alias: alias,\n data: imageData,\n index: index,\n filter: filter,\n decodeParameters: decodeParameters,\n transparency: trns,\n palette: pal,\n sMask: smask,\n predictor: predictor,\n width: image.width,\n height: image.height,\n bitsPerComponent: bitsPerComponent,\n colorSpace: colorSpace\n };\n }\n };\n})(jsPDF.API);\n","/**\n * @license\n * (c) Dean McNamee <dean@gmail.com>, 2013.\n *\n * https://github.com/deanm/omggif\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n * omggif is a JavaScript implementation of a GIF 89a encoder and decoder,\n * including animation and compression. It does not rely on any specific\n * underlying system, so should run in the browser, Node, or Plask.\n */\n\n\"use strict\";\n\nimport { console } from \"./console.js\";\n\nfunction GifWriter(buf, width, height, gopts) {\n var p = 0;\n\n var gopts = gopts === undefined ? {} : gopts;\n var loop_count = gopts.loop === undefined ? null : gopts.loop;\n var global_palette = gopts.palette === undefined ? null : gopts.palette;\n\n if (width <= 0 || height <= 0 || width > 65535 || height > 65535)\n throw new Error(\"Width/Height invalid.\");\n\n function check_palette_and_num_colors(palette) {\n var num_colors = palette.length;\n if (num_colors < 2 || num_colors > 256 || num_colors & (num_colors - 1)) {\n throw new Error(\n \"Invalid code/color length, must be power of 2 and 2 .. 256.\"\n );\n }\n return num_colors;\n }\n\n // - Header.\n buf[p++] = 0x47;\n buf[p++] = 0x49;\n buf[p++] = 0x46; // GIF\n buf[p++] = 0x38;\n buf[p++] = 0x39;\n buf[p++] = 0x61; // 89a\n\n // Handling of Global Color Table (palette) and background index.\n var gp_num_colors_pow2 = 0;\n var background = 0;\n if (global_palette !== null) {\n var gp_num_colors = check_palette_and_num_colors(global_palette);\n while ((gp_num_colors >>= 1)) ++gp_num_colors_pow2;\n gp_num_colors = 1 << gp_num_colors_pow2;\n --gp_num_colors_pow2;\n if (gopts.background !== undefined) {\n background = gopts.background;\n if (background >= gp_num_colors)\n throw new Error(\"Background index out of range.\");\n // The GIF spec states that a background index of 0 should be ignored, so\n // this is probably a mistake and you really want to set it to another\n // slot in the palette. But actually in the end most browsers, etc end\n // up ignoring this almost completely (including for dispose background).\n if (background === 0)\n throw new Error(\"Background index explicitly passed as 0.\");\n }\n }\n\n // - Logical Screen Descriptor.\n // NOTE(deanm): w/h apparently ignored by implementations, but set anyway.\n buf[p++] = width & 0xff;\n buf[p++] = (width >> 8) & 0xff;\n buf[p++] = height & 0xff;\n buf[p++] = (height >> 8) & 0xff;\n // NOTE: Indicates 0-bpp original color resolution (unused?).\n buf[p++] = (global_palette !== null ? 0x80 : 0) | gp_num_colors_pow2; // Global Color Table Flag. // NOTE: No sort flag (unused?).\n buf[p++] = background; // Background Color Index.\n buf[p++] = 0; // Pixel aspect ratio (unused?).\n\n // - Global Color Table\n if (global_palette !== null) {\n for (var i = 0, il = global_palette.length; i < il; ++i) {\n var rgb = global_palette[i];\n buf[p++] = (rgb >> 16) & 0xff;\n buf[p++] = (rgb >> 8) & 0xff;\n buf[p++] = rgb & 0xff;\n }\n }\n\n if (loop_count !== null) {\n // Netscape block for looping.\n if (loop_count < 0 || loop_count > 65535)\n throw new Error(\"Loop count invalid.\");\n // Extension code, label, and length.\n buf[p++] = 0x21;\n buf[p++] = 0xff;\n buf[p++] = 0x0b;\n // NETSCAPE2.0\n buf[p++] = 0x4e;\n buf[p++] = 0x45;\n buf[p++] = 0x54;\n buf[p++] = 0x53;\n buf[p++] = 0x43;\n buf[p++] = 0x41;\n buf[p++] = 0x50;\n buf[p++] = 0x45;\n buf[p++] = 0x32;\n buf[p++] = 0x2e;\n buf[p++] = 0x30;\n // Sub-block\n buf[p++] = 0x03;\n buf[p++] = 0x01;\n buf[p++] = loop_count & 0xff;\n buf[p++] = (loop_count >> 8) & 0xff;\n buf[p++] = 0x00; // Terminator.\n }\n\n var ended = false;\n\n this.addFrame = function(x, y, w, h, indexed_pixels, opts) {\n if (ended === true) {\n --p;\n ended = false;\n } // Un-end.\n\n opts = opts === undefined ? {} : opts;\n\n // TODO(deanm): Bounds check x, y. Do they need to be within the virtual\n // canvas width/height, I imagine?\n if (x < 0 || y < 0 || x > 65535 || y > 65535)\n throw new Error(\"x/y invalid.\");\n\n if (w <= 0 || h <= 0 || w > 65535 || h > 65535)\n throw new Error(\"Width/Height invalid.\");\n\n if (indexed_pixels.length < w * h)\n throw new Error(\"Not enough pixels for the frame size.\");\n\n var using_local_palette = true;\n var palette = opts.palette;\n if (palette === undefined || palette === null) {\n using_local_palette = false;\n palette = global_palette;\n }\n\n if (palette === undefined || palette === null)\n throw new Error(\"Must supply either a local or global palette.\");\n\n var num_colors = check_palette_and_num_colors(palette);\n\n // Compute the min_code_size (power of 2), destroying num_colors.\n var min_code_size = 0;\n while ((num_colors >>= 1)) ++min_code_size;\n num_colors = 1 << min_code_size; // Now we can easily get it back.\n\n var delay = opts.delay === undefined ? 0 : opts.delay;\n\n // From the spec:\n // 0 - No disposal specified. The decoder is\n // not required to take any action.\n // 1 - Do not dispose. The graphic is to be left\n // in place.\n // 2 - Restore to background color. The area used by the\n // graphic must be restored to the background color.\n // 3 - Restore to previous. The decoder is required to\n // restore the area overwritten by the graphic with\n // what was there prior to rendering the graphic.\n // 4-7 - To be defined.\n // NOTE(deanm): Dispose background doesn't really work, apparently most\n // browsers ignore the background palette index and clear to transparency.\n var disposal = opts.disposal === undefined ? 0 : opts.disposal;\n if (disposal < 0 || disposal > 3)\n // 4-7 is reserved.\n throw new Error(\"Disposal out of range.\");\n\n var use_transparency = false;\n var transparent_index = 0;\n if (opts.transparent !== undefined && opts.transparent !== null) {\n use_transparency = true;\n transparent_index = opts.transparent;\n if (transparent_index < 0 || transparent_index >= num_colors)\n throw new Error(\"Transparent color index.\");\n }\n\n if (disposal !== 0 || use_transparency || delay !== 0) {\n // - Graphics Control Extension\n buf[p++] = 0x21;\n buf[p++] = 0xf9; // Extension / Label.\n buf[p++] = 4; // Byte size.\n\n buf[p++] = (disposal << 2) | (use_transparency === true ? 1 : 0);\n buf[p++] = delay & 0xff;\n buf[p++] = (delay >> 8) & 0xff;\n buf[p++] = transparent_index; // Transparent color index.\n buf[p++] = 0; // Block Terminator.\n }\n\n // - Image Descriptor\n buf[p++] = 0x2c; // Image Seperator.\n buf[p++] = x & 0xff;\n buf[p++] = (x >> 8) & 0xff; // Left.\n buf[p++] = y & 0xff;\n buf[p++] = (y >> 8) & 0xff; // Top.\n buf[p++] = w & 0xff;\n buf[p++] = (w >> 8) & 0xff;\n buf[p++] = h & 0xff;\n buf[p++] = (h >> 8) & 0xff;\n // NOTE: No sort flag (unused?).\n // TODO(deanm): Support interlace.\n buf[p++] = using_local_palette === true ? 0x80 | (min_code_size - 1) : 0;\n\n // - Local Color Table\n if (using_local_palette === true) {\n for (var i = 0, il = palette.length; i < il; ++i) {\n var rgb = palette[i];\n buf[p++] = (rgb >> 16) & 0xff;\n buf[p++] = (rgb >> 8) & 0xff;\n buf[p++] = rgb & 0xff;\n }\n }\n\n p = GifWriterOutputLZWCodeStream(\n buf,\n p,\n min_code_size < 2 ? 2 : min_code_size,\n indexed_pixels\n );\n\n return p;\n };\n\n this.end = function() {\n if (ended === false) {\n buf[p++] = 0x3b; // Trailer.\n ended = true;\n }\n return p;\n };\n\n this.getOutputBuffer = function() {\n return buf;\n };\n this.setOutputBuffer = function(v) {\n buf = v;\n };\n this.getOutputBufferPosition = function() {\n return p;\n };\n this.setOutputBufferPosition = function(v) {\n p = v;\n };\n}\n\n// Main compression routine, palette indexes -> LZW code stream.\n// |index_stream| must have at least one entry.\nfunction GifWriterOutputLZWCodeStream(buf, p, min_code_size, index_stream) {\n buf[p++] = min_code_size;\n var cur_subblock = p++; // Pointing at the length field.\n\n var clear_code = 1 << min_code_size;\n var code_mask = clear_code - 1;\n var eoi_code = clear_code + 1;\n var next_code = eoi_code + 1;\n\n var cur_code_size = min_code_size + 1; // Number of bits per code.\n var cur_shift = 0;\n // We have at most 12-bit codes, so we should have to hold a max of 19\n // bits here (and then we would write out).\n var cur = 0;\n\n function emit_bytes_to_buffer(bit_block_size) {\n while (cur_shift >= bit_block_size) {\n buf[p++] = cur & 0xff;\n cur >>= 8;\n cur_shift -= 8;\n if (p === cur_subblock + 256) {\n // Finished a subblock.\n buf[cur_subblock] = 255;\n cur_subblock = p++;\n }\n }\n }\n\n function emit_code(c) {\n cur |= c << cur_shift;\n cur_shift += cur_code_size;\n emit_bytes_to_buffer(8);\n }\n\n // I am not an expert on the topic, and I don't want to write a thesis.\n // However, it is good to outline here the basic algorithm and the few data\n // structures and optimizations here that make this implementation fast.\n // The basic idea behind LZW is to build a table of previously seen runs\n // addressed by a short id (herein called output code). All data is\n // referenced by a code, which represents one or more values from the\n // original input stream. All input bytes can be referenced as the same\n // value as an output code. So if you didn't want any compression, you\n // could more or less just output the original bytes as codes (there are\n // some details to this, but it is the idea). In order to achieve\n // compression, values greater then the input range (codes can be up to\n // 12-bit while input only 8-bit) represent a sequence of previously seen\n // inputs. The decompressor is able to build the same mapping while\n // decoding, so there is always a shared common knowledge between the\n // encoding and decoder, which is also important for \"timing\" aspects like\n // how to handle variable bit width code encoding.\n //\n // One obvious but very important consequence of the table system is there\n // is always a unique id (at most 12-bits) to map the runs. 'A' might be\n // 4, then 'AA' might be 10, 'AAA' 11, 'AAAA' 12, etc. This relationship\n // can be used for an effecient lookup strategy for the code mapping. We\n // need to know if a run has been seen before, and be able to map that run\n // to the output code. Since we start with known unique ids (input bytes),\n // and then from those build more unique ids (table entries), we can\n // continue this chain (almost like a linked list) to always have small\n // integer values that represent the current byte chains in the encoder.\n // This means instead of tracking the input bytes (AAAABCD) to know our\n // current state, we can track the table entry for AAAABC (it is guaranteed\n // to exist by the nature of the algorithm) and the next character D.\n // Therefor the tuple of (table_entry, byte) is guaranteed to also be\n // unique. This allows us to create a simple lookup key for mapping input\n // sequences to codes (table indices) without having to store or search\n // any of the code sequences. So if 'AAAA' has a table entry of 12, the\n // tuple of ('AAAA', K) for any input byte K will be unique, and can be our\n // key. This leads to a integer value at most 20-bits, which can always\n // fit in an SMI value and be used as a fast sparse array / object key.\n\n // Output code for the current contents of the index buffer.\n var ib_code = index_stream[0] & code_mask; // Load first input index.\n var code_table = {}; // Key'd on our 20-bit \"tuple\".\n\n emit_code(clear_code); // Spec says first code should be a clear code.\n\n // First index already loaded, process the rest of the stream.\n for (var i = 1, il = index_stream.length; i < il; ++i) {\n var k = index_stream[i] & code_mask;\n var cur_key = (ib_code << 8) | k; // (prev, k) unique tuple.\n var cur_code = code_table[cur_key]; // buffer + k.\n\n // Check if we have to create a new code table entry.\n if (cur_code === undefined) {\n // We don't have buffer + k.\n // Emit index buffer (without k).\n // This is an inline version of emit_code, because this is the core\n // writing routine of the compressor (and V8 cannot inline emit_code\n // because it is a closure here in a different context). Additionally\n // we can call emit_byte_to_buffer less often, because we can have\n // 30-bits (from our 31-bit signed SMI), and we know our codes will only\n // be 12-bits, so can safely have 18-bits there without overflow.\n // emit_code(ib_code);\n cur |= ib_code << cur_shift;\n cur_shift += cur_code_size;\n while (cur_shift >= 8) {\n buf[p++] = cur & 0xff;\n cur >>= 8;\n cur_shift -= 8;\n if (p === cur_subblock + 256) {\n // Finished a subblock.\n buf[cur_subblock] = 255;\n cur_subblock = p++;\n }\n }\n\n if (next_code === 4096) {\n // Table full, need a clear.\n emit_code(clear_code);\n next_code = eoi_code + 1;\n cur_code_size = min_code_size + 1;\n code_table = {};\n } else {\n // Table not full, insert a new entry.\n // Increase our variable bit code sizes if necessary. This is a bit\n // tricky as it is based on \"timing\" between the encoding and\n // decoder. From the encoders perspective this should happen after\n // we've already emitted the index buffer and are about to create the\n // first table entry that would overflow our current code bit size.\n if (next_code >= 1 << cur_code_size) ++cur_code_size;\n code_table[cur_key] = next_code++; // Insert into code table.\n }\n\n ib_code = k; // Index buffer to single input k.\n } else {\n ib_code = cur_code; // Index buffer to sequence in code table.\n }\n }\n\n emit_code(ib_code); // There will still be something in the index buffer.\n emit_code(eoi_code); // End Of Information.\n\n // Flush / finalize the sub-blocks stream to the buffer.\n emit_bytes_to_buffer(1);\n\n // Finish the sub-blocks, writing out any unfinished lengths and\n // terminating with a sub-block of length 0. If we have already started\n // but not yet used a sub-block it can just become the terminator.\n if (cur_subblock + 1 === p) {\n // Started but unused.\n buf[cur_subblock] = 0;\n } else {\n // Started and used, write length and additional terminator block.\n buf[cur_subblock] = p - cur_subblock - 1;\n buf[p++] = 0;\n }\n return p;\n}\n\nfunction GifReader(buf) {\n var p = 0;\n\n // - Header (GIF87a or GIF89a).\n if (\n buf[p++] !== 0x47 ||\n buf[p++] !== 0x49 ||\n buf[p++] !== 0x46 ||\n buf[p++] !== 0x38 ||\n ((buf[p++] + 1) & 0xfd) !== 0x38 ||\n buf[p++] !== 0x61\n ) {\n throw new Error(\"Invalid GIF 87a/89a header.\");\n }\n\n // - Logical Screen Descriptor.\n var width = buf[p++] | (buf[p++] << 8);\n var height = buf[p++] | (buf[p++] << 8);\n var pf0 = buf[p++]; // <Packed Fields>.\n var global_palette_flag = pf0 >> 7;\n var num_global_colors_pow2 = pf0 & 0x7;\n var num_global_colors = 1 << (num_global_colors_pow2 + 1);\n var background = buf[p++];\n buf[p++]; // Pixel aspect ratio (unused?).\n\n var global_palette_offset = null;\n var global_palette_size = null;\n\n if (global_palette_flag) {\n global_palette_offset = p;\n global_palette_size = num_global_colors;\n p += num_global_colors * 3; // Seek past palette.\n }\n\n var no_eof = true;\n\n var frames = [];\n\n var delay = 0;\n var transparent_index = null;\n var disposal = 0; // 0 - No disposal specified.\n var loop_count = null;\n\n this.width = width;\n this.height = height;\n\n while (no_eof && p < buf.length) {\n switch (buf[p++]) {\n case 0x21: // Graphics Control Extension Block\n switch (buf[p++]) {\n case 0xff: // Application specific block\n // Try if it's a Netscape block (with animation loop counter).\n if (\n buf[p] !== 0x0b || // 21 FF already read, check block size.\n // NETSCAPE2.0\n (buf[p + 1] == 0x4e &&\n buf[p + 2] == 0x45 &&\n buf[p + 3] == 0x54 &&\n buf[p + 4] == 0x53 &&\n buf[p + 5] == 0x43 &&\n buf[p + 6] == 0x41 &&\n buf[p + 7] == 0x50 &&\n buf[p + 8] == 0x45 &&\n buf[p + 9] == 0x32 &&\n buf[p + 10] == 0x2e &&\n buf[p + 11] == 0x30 &&\n // Sub-block\n buf[p + 12] == 0x03 &&\n buf[p + 13] == 0x01 &&\n buf[p + 16] == 0)\n ) {\n p += 14;\n loop_count = buf[p++] | (buf[p++] << 8);\n p++; // Skip terminator.\n } else {\n // We don't know what it is, just try to get past it.\n p += 12;\n while (true) {\n // Seek through subblocks.\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n p += block_size;\n }\n }\n break;\n\n case 0xf9: // Graphics Control Extension\n if (buf[p++] !== 0x4 || buf[p + 4] !== 0)\n throw new Error(\"Invalid graphics extension block.\");\n var pf1 = buf[p++];\n delay = buf[p++] | (buf[p++] << 8);\n transparent_index = buf[p++];\n if ((pf1 & 1) === 0) transparent_index = null;\n disposal = (pf1 >> 2) & 0x7;\n p++; // Skip terminator.\n break;\n\n case 0xfe: // Comment Extension.\n while (true) {\n // Seek through subblocks.\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n // console.log(buf.slice(p, p+block_size).toString('ascii'));\n p += block_size;\n }\n break;\n\n default:\n throw new Error(\n \"Unknown graphic control label: 0x\" + buf[p - 1].toString(16)\n );\n }\n break;\n\n case 0x2c: // Image Descriptor.\n var x = buf[p++] | (buf[p++] << 8);\n var y = buf[p++] | (buf[p++] << 8);\n var w = buf[p++] | (buf[p++] << 8);\n var h = buf[p++] | (buf[p++] << 8);\n var pf2 = buf[p++];\n var local_palette_flag = pf2 >> 7;\n var interlace_flag = (pf2 >> 6) & 1;\n var num_local_colors_pow2 = pf2 & 0x7;\n var num_local_colors = 1 << (num_local_colors_pow2 + 1);\n var palette_offset = global_palette_offset;\n var palette_size = global_palette_size;\n var has_local_palette = false;\n if (local_palette_flag) {\n var has_local_palette = true;\n palette_offset = p; // Override with local palette.\n palette_size = num_local_colors;\n p += num_local_colors * 3; // Seek past palette.\n }\n\n var data_offset = p;\n\n p++; // codesize\n while (true) {\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n p += block_size;\n }\n\n frames.push({\n x: x,\n y: y,\n width: w,\n height: h,\n has_local_palette: has_local_palette,\n palette_offset: palette_offset,\n palette_size: palette_size,\n data_offset: data_offset,\n data_length: p - data_offset,\n transparent_index: transparent_index,\n interlaced: !!interlace_flag,\n delay: delay,\n disposal: disposal\n });\n break;\n\n case 0x3b: // Trailer Marker (end of file).\n no_eof = false;\n break;\n\n default:\n throw new Error(\"Unknown gif block: 0x\" + buf[p - 1].toString(16));\n break;\n }\n }\n\n this.numFrames = function() {\n return frames.length;\n };\n\n this.loopCount = function() {\n return loop_count;\n };\n\n this.frameInfo = function(frame_num) {\n if (frame_num < 0 || frame_num >= frames.length)\n throw new Error(\"Frame index out of range.\");\n return frames[frame_num];\n };\n\n this.decodeAndBlitFrameBGRA = function(frame_num, pixels) {\n var frame = this.frameInfo(frame_num);\n var num_pixels = frame.width * frame.height;\n var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices.\n GifReaderLZWOutputIndexStream(\n buf,\n frame.data_offset,\n index_stream,\n num_pixels\n );\n var palette_offset = frame.palette_offset;\n\n // NOTE(deanm): It seems to be much faster to compare index to 256 than\n // to === null. Not sure why, but CompareStub_EQ_STRICT shows up high in\n // the profile, not sure if it's related to using a Uint8Array.\n var trans = frame.transparent_index;\n if (trans === null) trans = 256;\n\n // We are possibly just blitting to a portion of the entire frame.\n // That is a subrect within the framerect, so the additional pixels\n // must be skipped over after we finished a scanline.\n var framewidth = frame.width;\n var framestride = width - framewidth;\n var xleft = framewidth; // Number of subrect pixels left in scanline.\n\n // Output indices of the top left and bottom right corners of the subrect.\n var opbeg = (frame.y * width + frame.x) * 4;\n var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n var op = opbeg;\n\n var scanstride = framestride * 4;\n\n // Use scanstride to skip past the rows when interlacing. This is skipping\n // 7 rows for the first two passes, then 3 then 1.\n if (frame.interlaced === true) {\n scanstride += width * 4 * 7; // Pass 1.\n }\n\n var interlaceskip = 8; // Tracking the row interval in the current pass.\n\n for (var i = 0, il = index_stream.length; i < il; ++i) {\n var index = index_stream[i];\n\n if (xleft === 0) {\n // Beginning of new scan line\n op += scanstride;\n xleft = framewidth;\n if (op >= opend) {\n // Catch the wrap to switch passes when interlacing.\n scanstride = framestride * 4 + width * 4 * (interlaceskip - 1);\n // interlaceskip / 2 * 4 is interlaceskip << 1.\n op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n interlaceskip >>= 1;\n }\n }\n\n if (index === trans) {\n op += 4;\n } else {\n var r = buf[palette_offset + index * 3];\n var g = buf[palette_offset + index * 3 + 1];\n var b = buf[palette_offset + index * 3 + 2];\n pixels[op++] = b;\n pixels[op++] = g;\n pixels[op++] = r;\n pixels[op++] = 255;\n }\n --xleft;\n }\n };\n\n // I will go to copy and paste hell one day...\n this.decodeAndBlitFrameRGBA = function(frame_num, pixels) {\n var frame = this.frameInfo(frame_num);\n var num_pixels = frame.width * frame.height;\n var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices.\n GifReaderLZWOutputIndexStream(\n buf,\n frame.data_offset,\n index_stream,\n num_pixels\n );\n var palette_offset = frame.palette_offset;\n\n // NOTE(deanm): It seems to be much faster to compare index to 256 than\n // to === null. Not sure why, but CompareStub_EQ_STRICT shows up high in\n // the profile, not sure if it's related to using a Uint8Array.\n var trans = frame.transparent_index;\n if (trans === null) trans = 256;\n\n // We are possibly just blitting to a portion of the entire frame.\n // That is a subrect within the framerect, so the additional pixels\n // must be skipped over after we finished a scanline.\n var framewidth = frame.width;\n var framestride = width - framewidth;\n var xleft = framewidth; // Number of subrect pixels left in scanline.\n\n // Output indices of the top left and bottom right corners of the subrect.\n var opbeg = (frame.y * width + frame.x) * 4;\n var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n var op = opbeg;\n\n var scanstride = framestride * 4;\n\n // Use scanstride to skip past the rows when interlacing. This is skipping\n // 7 rows for the first two passes, then 3 then 1.\n if (frame.interlaced === true) {\n scanstride += width * 4 * 7; // Pass 1.\n }\n\n var interlaceskip = 8; // Tracking the row interval in the current pass.\n\n for (var i = 0, il = index_stream.length; i < il; ++i) {\n var index = index_stream[i];\n\n if (xleft === 0) {\n // Beginning of new scan line\n op += scanstride;\n xleft = framewidth;\n if (op >= opend) {\n // Catch the wrap to switch passes when interlacing.\n scanstride = framestride * 4 + width * 4 * (interlaceskip - 1);\n // interlaceskip / 2 * 4 is interlaceskip << 1.\n op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n interlaceskip >>= 1;\n }\n }\n\n if (index === trans) {\n op += 4;\n } else {\n var r = buf[palette_offset + index * 3];\n var g = buf[palette_offset + index * 3 + 1];\n var b = buf[palette_offset + index * 3 + 2];\n pixels[op++] = r;\n pixels[op++] = g;\n pixels[op++] = b;\n pixels[op++] = 255;\n }\n --xleft;\n }\n };\n}\n\nfunction GifReaderLZWOutputIndexStream(code_stream, p, output, output_length) {\n var min_code_size = code_stream[p++];\n\n var clear_code = 1 << min_code_size;\n var eoi_code = clear_code + 1;\n var next_code = eoi_code + 1;\n\n var cur_code_size = min_code_size + 1; // Number of bits per code.\n // NOTE: This shares the same name as the encoder, but has a different\n // meaning here. Here this masks each code coming from the code stream.\n var code_mask = (1 << cur_code_size) - 1;\n var cur_shift = 0;\n var cur = 0;\n\n var op = 0; // Output pointer.\n\n var subblock_size = code_stream[p++];\n\n // TODO(deanm): Would using a TypedArray be any faster? At least it would\n // solve the fast mode / backing store uncertainty.\n // var code_table = Array(4096);\n var code_table = new Int32Array(4096); // Can be signed, we only use 20 bits.\n\n var prev_code = null; // Track code-1.\n\n while (true) {\n // Read up to two bytes, making sure we always 12-bits for max sized code.\n while (cur_shift < 16) {\n if (subblock_size === 0) break; // No more data to be read.\n\n cur |= code_stream[p++] << cur_shift;\n cur_shift += 8;\n\n if (subblock_size === 1) {\n // Never let it get to 0 to hold logic above.\n subblock_size = code_stream[p++]; // Next subblock.\n } else {\n --subblock_size;\n }\n }\n\n // TODO(deanm): We should never really get here, we should have received\n // and EOI.\n if (cur_shift < cur_code_size) break;\n\n var code = cur & code_mask;\n cur >>= cur_code_size;\n cur_shift -= cur_code_size;\n\n // TODO(deanm): Maybe should check that the first code was a clear code,\n // at least this is what you're supposed to do. But actually our encoder\n // now doesn't emit a clear code first anyway.\n if (code === clear_code) {\n // We don't actually have to clear the table. This could be a good idea\n // for greater error checking, but we don't really do any anyway. We\n // will just track it with next_code and overwrite old entries.\n\n next_code = eoi_code + 1;\n cur_code_size = min_code_size + 1;\n code_mask = (1 << cur_code_size) - 1;\n\n // Don't update prev_code ?\n prev_code = null;\n continue;\n } else if (code === eoi_code) {\n break;\n }\n\n // We have a similar situation as the decoder, where we want to store\n // variable length entries (code table entries), but we want to do in a\n // faster manner than an array of arrays. The code below stores sort of a\n // linked list within the code table, and then \"chases\" through it to\n // construct the dictionary entries. When a new entry is created, just the\n // last byte is stored, and the rest (prefix) of the entry is only\n // referenced by its table entry. Then the code chases through the\n // prefixes until it reaches a single byte code. We have to chase twice,\n // first to compute the length, and then to actually copy the data to the\n // output (backwards, since we know the length). The alternative would be\n // storing something in an intermediate stack, but that doesn't make any\n // more sense. I implemented an approach where it also stored the length\n // in the code table, although it's a bit tricky because you run out of\n // bits (12 + 12 + 8), but I didn't measure much improvements (the table\n // entries are generally not the long). Even when I created benchmarks for\n // very long table entries the complexity did not seem worth it.\n // The code table stores the prefix entry in 12 bits and then the suffix\n // byte in 8 bits, so each entry is 20 bits.\n\n var chase_code = code < next_code ? code : prev_code;\n\n // Chase what we will output, either {CODE} or {CODE-1}.\n var chase_length = 0;\n var chase = chase_code;\n while (chase > clear_code) {\n chase = code_table[chase] >> 8;\n ++chase_length;\n }\n\n var k = chase;\n\n var op_end = op + chase_length + (chase_code !== code ? 1 : 0);\n if (op_end > output_length) {\n console.log(\"Warning, gif stream longer than expected.\");\n return;\n }\n\n // Already have the first byte from the chase, might as well write it fast.\n output[op++] = k;\n\n op += chase_length;\n var b = op; // Track pointer, writing backwards.\n\n if (chase_code !== code)\n // The case of emitting {CODE-1} + k.\n output[op++] = k;\n\n chase = chase_code;\n while (chase_length--) {\n chase = code_table[chase];\n output[--b] = chase & 0xff; // Write backwards.\n chase >>= 8; // Pull down to the prefix code.\n }\n\n if (prev_code !== null && next_code < 4096) {\n code_table[next_code++] = (prev_code << 8) | k;\n // TODO(deanm): Figure out this clearing vs code growth logic better. I\n // have an feeling that it should just happen somewhere else, for now it\n // is awkward between when we grow past the max and then hit a clear code.\n // For now just check if we hit the max 12-bits (then a clear code should\n // follow, also of course encoded in 12-bits).\n if (next_code >= code_mask + 1 && cur_code_size < 12) {\n ++cur_code_size;\n code_mask = (code_mask << 1) | 1;\n }\n }\n\n prev_code = code;\n }\n\n if (op !== output_length) {\n console.log(\"Warning, gif stream shorter than expected.\");\n }\n\n return output;\n}\n\nexport { GifReader, GifWriter };\n","/**\n * @license\n Copyright (c) 2008, Adobe Systems Incorporated\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without \n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright notice, \n this list of conditions and the following disclaimer.\n \n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the \n documentation and/or other materials provided with the distribution.\n \n * Neither the name of Adobe Systems Incorporated nor the names of its \n contributors may be used to endorse or promote products derived from \n this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR \n CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n/*\nJPEG encoder ported to JavaScript and optimized by Andreas Ritter, www.bytestrom.eu, 11/2009\n\nBasic GUI blocking jpeg encoder\n*/\n\nfunction JPEGEncoder(quality) {\n var ffloor = Math.floor;\n var YTable = new Array(64);\n var UVTable = new Array(64);\n var fdtbl_Y = new Array(64);\n var fdtbl_UV = new Array(64);\n var YDC_HT;\n var UVDC_HT;\n var YAC_HT;\n var UVAC_HT;\n\n var bitcode = new Array(65535);\n var category = new Array(65535);\n var outputfDCTQuant = new Array(64);\n var DU = new Array(64);\n var byteout = [];\n var bytenew = 0;\n var bytepos = 7;\n\n var YDU = new Array(64);\n var UDU = new Array(64);\n var VDU = new Array(64);\n var clt = new Array(256);\n var RGB_YUV_TABLE = new Array(2048);\n var currentQuality;\n\n var ZigZag = [\n 0,\n 1,\n 5,\n 6,\n 14,\n 15,\n 27,\n 28,\n 2,\n 4,\n 7,\n 13,\n 16,\n 26,\n 29,\n 42,\n 3,\n 8,\n 12,\n 17,\n 25,\n 30,\n 41,\n 43,\n 9,\n 11,\n 18,\n 24,\n 31,\n 40,\n 44,\n 53,\n 10,\n 19,\n 23,\n 32,\n 39,\n 45,\n 52,\n 54,\n 20,\n 22,\n 33,\n 38,\n 46,\n 51,\n 55,\n 60,\n 21,\n 34,\n 37,\n 47,\n 50,\n 56,\n 59,\n 61,\n 35,\n 36,\n 48,\n 49,\n 57,\n 58,\n 62,\n 63\n ];\n\n var std_dc_luminance_nrcodes = [\n 0,\n 0,\n 1,\n 5,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n var std_dc_luminance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n var std_ac_luminance_nrcodes = [\n 0,\n 0,\n 2,\n 1,\n 3,\n 3,\n 2,\n 4,\n 3,\n 5,\n 5,\n 4,\n 4,\n 0,\n 0,\n 1,\n 0x7d\n ];\n var std_ac_luminance_values = [\n 0x01,\n 0x02,\n 0x03,\n 0x00,\n 0x04,\n 0x11,\n 0x05,\n 0x12,\n 0x21,\n 0x31,\n 0x41,\n 0x06,\n 0x13,\n 0x51,\n 0x61,\n 0x07,\n 0x22,\n 0x71,\n 0x14,\n 0x32,\n 0x81,\n 0x91,\n 0xa1,\n 0x08,\n 0x23,\n 0x42,\n 0xb1,\n 0xc1,\n 0x15,\n 0x52,\n 0xd1,\n 0xf0,\n 0x24,\n 0x33,\n 0x62,\n 0x72,\n 0x82,\n 0x09,\n 0x0a,\n 0x16,\n 0x17,\n 0x18,\n 0x19,\n 0x1a,\n 0x25,\n 0x26,\n 0x27,\n 0x28,\n 0x29,\n 0x2a,\n 0x34,\n 0x35,\n 0x36,\n 0x37,\n 0x38,\n 0x39,\n 0x3a,\n 0x43,\n 0x44,\n 0x45,\n 0x46,\n 0x47,\n 0x48,\n 0x49,\n 0x4a,\n 0x53,\n 0x54,\n 0x55,\n 0x56,\n 0x57,\n 0x58,\n 0x59,\n 0x5a,\n 0x63,\n 0x64,\n 0x65,\n 0x66,\n 0x67,\n 0x68,\n 0x69,\n 0x6a,\n 0x73,\n 0x74,\n 0x75,\n 0x76,\n 0x77,\n 0x78,\n 0x79,\n 0x7a,\n 0x83,\n 0x84,\n 0x85,\n 0x86,\n 0x87,\n 0x88,\n 0x89,\n 0x8a,\n 0x92,\n 0x93,\n 0x94,\n 0x95,\n 0x96,\n 0x97,\n 0x98,\n 0x99,\n 0x9a,\n 0xa2,\n 0xa3,\n 0xa4,\n 0xa5,\n 0xa6,\n 0xa7,\n 0xa8,\n 0xa9,\n 0xaa,\n 0xb2,\n 0xb3,\n 0xb4,\n 0xb5,\n 0xb6,\n 0xb7,\n 0xb8,\n 0xb9,\n 0xba,\n 0xc2,\n 0xc3,\n 0xc4,\n 0xc5,\n 0xc6,\n 0xc7,\n 0xc8,\n 0xc9,\n 0xca,\n 0xd2,\n 0xd3,\n 0xd4,\n 0xd5,\n 0xd6,\n 0xd7,\n 0xd8,\n 0xd9,\n 0xda,\n 0xe1,\n 0xe2,\n 0xe3,\n 0xe4,\n 0xe5,\n 0xe6,\n 0xe7,\n 0xe8,\n 0xe9,\n 0xea,\n 0xf1,\n 0xf2,\n 0xf3,\n 0xf4,\n 0xf5,\n 0xf6,\n 0xf7,\n 0xf8,\n 0xf9,\n 0xfa\n ];\n\n var std_dc_chrominance_nrcodes = [\n 0,\n 0,\n 3,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n var std_dc_chrominance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n var std_ac_chrominance_nrcodes = [\n 0,\n 0,\n 2,\n 1,\n 2,\n 4,\n 4,\n 3,\n 4,\n 7,\n 5,\n 4,\n 4,\n 0,\n 1,\n 2,\n 0x77\n ];\n var std_ac_chrominance_values = [\n 0x00,\n 0x01,\n 0x02,\n 0x03,\n 0x11,\n 0x04,\n 0x05,\n 0x21,\n 0x31,\n 0x06,\n 0x12,\n 0x41,\n 0x51,\n 0x07,\n 0x61,\n 0x71,\n 0x13,\n 0x22,\n 0x32,\n 0x81,\n 0x08,\n 0x14,\n 0x42,\n 0x91,\n 0xa1,\n 0xb1,\n 0xc1,\n 0x09,\n 0x23,\n 0x33,\n 0x52,\n 0xf0,\n 0x15,\n 0x62,\n 0x72,\n 0xd1,\n 0x0a,\n 0x16,\n 0x24,\n 0x34,\n 0xe1,\n 0x25,\n 0xf1,\n 0x17,\n 0x18,\n 0x19,\n 0x1a,\n 0x26,\n 0x27,\n 0x28,\n 0x29,\n 0x2a,\n 0x35,\n 0x36,\n 0x37,\n 0x38,\n 0x39,\n 0x3a,\n 0x43,\n 0x44,\n 0x45,\n 0x46,\n 0x47,\n 0x48,\n 0x49,\n 0x4a,\n 0x53,\n 0x54,\n 0x55,\n 0x56,\n 0x57,\n 0x58,\n 0x59,\n 0x5a,\n 0x63,\n 0x64,\n 0x65,\n 0x66,\n 0x67,\n 0x68,\n 0x69,\n 0x6a,\n 0x73,\n 0x74,\n 0x75,\n 0x76,\n 0x77,\n 0x78,\n 0x79,\n 0x7a,\n 0x82,\n 0x83,\n 0x84,\n 0x85,\n 0x86,\n 0x87,\n 0x88,\n 0x89,\n 0x8a,\n 0x92,\n 0x93,\n 0x94,\n 0x95,\n 0x96,\n 0x97,\n 0x98,\n 0x99,\n 0x9a,\n 0xa2,\n 0xa3,\n 0xa4,\n 0xa5,\n 0xa6,\n 0xa7,\n 0xa8,\n 0xa9,\n 0xaa,\n 0xb2,\n 0xb3,\n 0xb4,\n 0xb5,\n 0xb6,\n 0xb7,\n 0xb8,\n 0xb9,\n 0xba,\n 0xc2,\n 0xc3,\n 0xc4,\n 0xc5,\n 0xc6,\n 0xc7,\n 0xc8,\n 0xc9,\n 0xca,\n 0xd2,\n 0xd3,\n 0xd4,\n 0xd5,\n 0xd6,\n 0xd7,\n 0xd8,\n 0xd9,\n 0xda,\n 0xe2,\n 0xe3,\n 0xe4,\n 0xe5,\n 0xe6,\n 0xe7,\n 0xe8,\n 0xe9,\n 0xea,\n 0xf2,\n 0xf3,\n 0xf4,\n 0xf5,\n 0xf6,\n 0xf7,\n 0xf8,\n 0xf9,\n 0xfa\n ];\n\n function initQuantTables(sf) {\n var YQT = [\n 16,\n 11,\n 10,\n 16,\n 24,\n 40,\n 51,\n 61,\n 12,\n 12,\n 14,\n 19,\n 26,\n 58,\n 60,\n 55,\n 14,\n 13,\n 16,\n 24,\n 40,\n 57,\n 69,\n 56,\n 14,\n 17,\n 22,\n 29,\n 51,\n 87,\n 80,\n 62,\n 18,\n 22,\n 37,\n 56,\n 68,\n 109,\n 103,\n 77,\n 24,\n 35,\n 55,\n 64,\n 81,\n 104,\n 113,\n 92,\n 49,\n 64,\n 78,\n 87,\n 103,\n 121,\n 120,\n 101,\n 72,\n 92,\n 95,\n 98,\n 112,\n 100,\n 103,\n 99\n ];\n\n for (var i = 0; i < 64; i++) {\n var t = ffloor((YQT[i] * sf + 50) / 100);\n t = Math.min(Math.max(t, 1), 255);\n YTable[ZigZag[i]] = t;\n }\n var UVQT = [\n 17,\n 18,\n 24,\n 47,\n 99,\n 99,\n 99,\n 99,\n 18,\n 21,\n 26,\n 66,\n 99,\n 99,\n 99,\n 99,\n 24,\n 26,\n 56,\n 99,\n 99,\n 99,\n 99,\n 99,\n 47,\n 66,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99\n ];\n for (var j = 0; j < 64; j++) {\n var u = ffloor((UVQT[j] * sf + 50) / 100);\n u = Math.min(Math.max(u, 1), 255);\n UVTable[ZigZag[j]] = u;\n }\n var aasf = [\n 1.0,\n 1.387039845,\n 1.306562965,\n 1.175875602,\n 1.0,\n 0.785694958,\n 0.5411961,\n 0.275899379\n ];\n var k = 0;\n for (var row = 0; row < 8; row++) {\n for (var col = 0; col < 8; col++) {\n fdtbl_Y[k] = 1.0 / (YTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0);\n fdtbl_UV[k] = 1.0 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0);\n k++;\n }\n }\n }\n\n function computeHuffmanTbl(nrcodes, std_table) {\n var codevalue = 0;\n var pos_in_table = 0;\n var HT = new Array();\n for (var k = 1; k <= 16; k++) {\n for (var j = 1; j <= nrcodes[k]; j++) {\n HT[std_table[pos_in_table]] = [];\n HT[std_table[pos_in_table]][0] = codevalue;\n HT[std_table[pos_in_table]][1] = k;\n pos_in_table++;\n codevalue++;\n }\n codevalue *= 2;\n }\n return HT;\n }\n\n function initHuffmanTbl() {\n YDC_HT = computeHuffmanTbl(\n std_dc_luminance_nrcodes,\n std_dc_luminance_values\n );\n UVDC_HT = computeHuffmanTbl(\n std_dc_chrominance_nrcodes,\n std_dc_chrominance_values\n );\n YAC_HT = computeHuffmanTbl(\n std_ac_luminance_nrcodes,\n std_ac_luminance_values\n );\n UVAC_HT = computeHuffmanTbl(\n std_ac_chrominance_nrcodes,\n std_ac_chrominance_values\n );\n }\n\n function initCategoryNumber() {\n var nrlower = 1;\n var nrupper = 2;\n for (var cat = 1; cat <= 15; cat++) {\n //Positive numbers\n for (var nr = nrlower; nr < nrupper; nr++) {\n category[32767 + nr] = cat;\n bitcode[32767 + nr] = [];\n bitcode[32767 + nr][1] = cat;\n bitcode[32767 + nr][0] = nr;\n }\n //Negative numbers\n for (var nrneg = -(nrupper - 1); nrneg <= -nrlower; nrneg++) {\n category[32767 + nrneg] = cat;\n bitcode[32767 + nrneg] = [];\n bitcode[32767 + nrneg][1] = cat;\n bitcode[32767 + nrneg][0] = nrupper - 1 + nrneg;\n }\n nrlower <<= 1;\n nrupper <<= 1;\n }\n }\n\n function initRGBYUVTable() {\n for (var i = 0; i < 256; i++) {\n RGB_YUV_TABLE[i] = 19595 * i;\n RGB_YUV_TABLE[(i + 256) >> 0] = 38470 * i;\n RGB_YUV_TABLE[(i + 512) >> 0] = 7471 * i + 0x8000;\n RGB_YUV_TABLE[(i + 768) >> 0] = -11059 * i;\n RGB_YUV_TABLE[(i + 1024) >> 0] = -21709 * i;\n RGB_YUV_TABLE[(i + 1280) >> 0] = 32768 * i + 0x807fff;\n RGB_YUV_TABLE[(i + 1536) >> 0] = -27439 * i;\n RGB_YUV_TABLE[(i + 1792) >> 0] = -5329 * i;\n }\n }\n\n // IO functions\n function writeBits(bs) {\n var value = bs[0];\n var posval = bs[1] - 1;\n while (posval >= 0) {\n if (value & (1 << posval)) {\n bytenew |= 1 << bytepos;\n }\n posval--;\n bytepos--;\n if (bytepos < 0) {\n if (bytenew == 0xff) {\n writeByte(0xff);\n writeByte(0);\n } else {\n writeByte(bytenew);\n }\n bytepos = 7;\n bytenew = 0;\n }\n }\n }\n\n function writeByte(value) {\n //byteout.push(clt[value]); // write char directly instead of converting later\n byteout.push(value);\n }\n\n function writeWord(value) {\n writeByte((value >> 8) & 0xff);\n writeByte(value & 0xff);\n }\n\n // DCT & quantization core\n function fDCTQuant(data, fdtbl) {\n var d0, d1, d2, d3, d4, d5, d6, d7;\n /* Pass 1: process rows. */\n var dataOff = 0;\n var i;\n var I8 = 8;\n var I64 = 64;\n for (i = 0; i < I8; ++i) {\n d0 = data[dataOff];\n d1 = data[dataOff + 1];\n d2 = data[dataOff + 2];\n d3 = data[dataOff + 3];\n d4 = data[dataOff + 4];\n d5 = data[dataOff + 5];\n d6 = data[dataOff + 6];\n d7 = data[dataOff + 7];\n\n var tmp0 = d0 + d7;\n var tmp7 = d0 - d7;\n var tmp1 = d1 + d6;\n var tmp6 = d1 - d6;\n var tmp2 = d2 + d5;\n var tmp5 = d2 - d5;\n var tmp3 = d3 + d4;\n var tmp4 = d3 - d4;\n\n /* Even part */\n var tmp10 = tmp0 + tmp3; /* phase 2 */\n var tmp13 = tmp0 - tmp3;\n var tmp11 = tmp1 + tmp2;\n var tmp12 = tmp1 - tmp2;\n\n data[dataOff] = tmp10 + tmp11; /* phase 3 */\n data[dataOff + 4] = tmp10 - tmp11;\n\n var z1 = (tmp12 + tmp13) * 0.707106781; /* c4 */\n data[dataOff + 2] = tmp13 + z1; /* phase 5 */\n data[dataOff + 6] = tmp13 - z1;\n\n /* Odd part */\n tmp10 = tmp4 + tmp5; /* phase 2 */\n tmp11 = tmp5 + tmp6;\n tmp12 = tmp6 + tmp7;\n\n /* The rotator is modified from fig 4-8 to avoid extra negations. */\n var z5 = (tmp10 - tmp12) * 0.382683433; /* c6 */\n var z2 = 0.5411961 * tmp10 + z5; /* c2-c6 */\n var z4 = 1.306562965 * tmp12 + z5; /* c2+c6 */\n var z3 = tmp11 * 0.707106781; /* c4 */\n\n var z11 = tmp7 + z3; /* phase 5 */\n var z13 = tmp7 - z3;\n\n data[dataOff + 5] = z13 + z2; /* phase 6 */\n data[dataOff + 3] = z13 - z2;\n data[dataOff + 1] = z11 + z4;\n data[dataOff + 7] = z11 - z4;\n\n dataOff += 8; /* advance pointer to next row */\n }\n\n /* Pass 2: process columns. */\n dataOff = 0;\n for (i = 0; i < I8; ++i) {\n d0 = data[dataOff];\n d1 = data[dataOff + 8];\n d2 = data[dataOff + 16];\n d3 = data[dataOff + 24];\n d4 = data[dataOff + 32];\n d5 = data[dataOff + 40];\n d6 = data[dataOff + 48];\n d7 = data[dataOff + 56];\n\n var tmp0p2 = d0 + d7;\n var tmp7p2 = d0 - d7;\n var tmp1p2 = d1 + d6;\n var tmp6p2 = d1 - d6;\n var tmp2p2 = d2 + d5;\n var tmp5p2 = d2 - d5;\n var tmp3p2 = d3 + d4;\n var tmp4p2 = d3 - d4;\n\n /* Even part */\n var tmp10p2 = tmp0p2 + tmp3p2; /* phase 2 */\n var tmp13p2 = tmp0p2 - tmp3p2;\n var tmp11p2 = tmp1p2 + tmp2p2;\n var tmp12p2 = tmp1p2 - tmp2p2;\n\n data[dataOff] = tmp10p2 + tmp11p2; /* phase 3 */\n data[dataOff + 32] = tmp10p2 - tmp11p2;\n\n var z1p2 = (tmp12p2 + tmp13p2) * 0.707106781; /* c4 */\n data[dataOff + 16] = tmp13p2 + z1p2; /* phase 5 */\n data[dataOff + 48] = tmp13p2 - z1p2;\n\n /* Odd part */\n tmp10p2 = tmp4p2 + tmp5p2; /* phase 2 */\n tmp11p2 = tmp5p2 + tmp6p2;\n tmp12p2 = tmp6p2 + tmp7p2;\n\n /* The rotator is modified from fig 4-8 to avoid extra negations. */\n var z5p2 = (tmp10p2 - tmp12p2) * 0.382683433; /* c6 */\n var z2p2 = 0.5411961 * tmp10p2 + z5p2; /* c2-c6 */\n var z4p2 = 1.306562965 * tmp12p2 + z5p2; /* c2+c6 */\n var z3p2 = tmp11p2 * 0.707106781; /* c4 */\n\n var z11p2 = tmp7p2 + z3p2; /* phase 5 */\n var z13p2 = tmp7p2 - z3p2;\n\n data[dataOff + 40] = z13p2 + z2p2; /* phase 6 */\n data[dataOff + 24] = z13p2 - z2p2;\n data[dataOff + 8] = z11p2 + z4p2;\n data[dataOff + 56] = z11p2 - z4p2;\n\n dataOff++; /* advance pointer to next column */\n }\n\n // Quantize/descale the coefficients\n var fDCTQuant;\n for (i = 0; i < I64; ++i) {\n // Apply the quantization and scaling factor & Round to nearest integer\n fDCTQuant = data[i] * fdtbl[i];\n outputfDCTQuant[i] =\n fDCTQuant > 0.0 ? (fDCTQuant + 0.5) | 0 : (fDCTQuant - 0.5) | 0;\n //outputfDCTQuant[i] = fround(fDCTQuant);\n }\n return outputfDCTQuant;\n }\n\n function writeAPP0() {\n writeWord(0xffe0); // marker\n writeWord(16); // length\n writeByte(0x4a); // J\n writeByte(0x46); // F\n writeByte(0x49); // I\n writeByte(0x46); // F\n writeByte(0); // = \"JFIF\",'\\0'\n writeByte(1); // versionhi\n writeByte(1); // versionlo\n writeByte(0); // xyunits\n writeWord(1); // xdensity\n writeWord(1); // ydensity\n writeByte(0); // thumbnwidth\n writeByte(0); // thumbnheight\n }\n\n function writeSOF0(width, height) {\n writeWord(0xffc0); // marker\n writeWord(17); // length, truecolor YUV JPG\n writeByte(8); // precision\n writeWord(height);\n writeWord(width);\n writeByte(3); // nrofcomponents\n writeByte(1); // IdY\n writeByte(0x11); // HVY\n writeByte(0); // QTY\n writeByte(2); // IdU\n writeByte(0x11); // HVU\n writeByte(1); // QTU\n writeByte(3); // IdV\n writeByte(0x11); // HVV\n writeByte(1); // QTV\n }\n\n function writeDQT() {\n writeWord(0xffdb); // marker\n writeWord(132); // length\n writeByte(0);\n for (var i = 0; i < 64; i++) {\n writeByte(YTable[i]);\n }\n writeByte(1);\n for (var j = 0; j < 64; j++) {\n writeByte(UVTable[j]);\n }\n }\n\n function writeDHT() {\n writeWord(0xffc4); // marker\n writeWord(0x01a2); // length\n\n writeByte(0); // HTYDCinfo\n for (var i = 0; i < 16; i++) {\n writeByte(std_dc_luminance_nrcodes[i + 1]);\n }\n for (var j = 0; j <= 11; j++) {\n writeByte(std_dc_luminance_values[j]);\n }\n\n writeByte(0x10); // HTYACinfo\n for (var k = 0; k < 16; k++) {\n writeByte(std_ac_luminance_nrcodes[k + 1]);\n }\n for (var l = 0; l <= 161; l++) {\n writeByte(std_ac_luminance_values[l]);\n }\n\n writeByte(1); // HTUDCinfo\n for (var m = 0; m < 16; m++) {\n writeByte(std_dc_chrominance_nrcodes[m + 1]);\n }\n for (var n = 0; n <= 11; n++) {\n writeByte(std_dc_chrominance_values[n]);\n }\n\n writeByte(0x11); // HTUACinfo\n for (var o = 0; o < 16; o++) {\n writeByte(std_ac_chrominance_nrcodes[o + 1]);\n }\n for (var p = 0; p <= 161; p++) {\n writeByte(std_ac_chrominance_values[p]);\n }\n }\n\n function writeSOS() {\n writeWord(0xffda); // marker\n writeWord(12); // length\n writeByte(3); // nrofcomponents\n writeByte(1); // IdY\n writeByte(0); // HTY\n writeByte(2); // IdU\n writeByte(0x11); // HTU\n writeByte(3); // IdV\n writeByte(0x11); // HTV\n writeByte(0); // Ss\n writeByte(0x3f); // Se\n writeByte(0); // Bf\n }\n\n function processDU(CDU, fdtbl, DC, HTDC, HTAC) {\n var EOB = HTAC[0x00];\n var M16zeroes = HTAC[0xf0];\n var pos;\n var I16 = 16;\n var I63 = 63;\n var I64 = 64;\n var DU_DCT = fDCTQuant(CDU, fdtbl);\n //ZigZag reorder\n for (var j = 0; j < I64; ++j) {\n DU[ZigZag[j]] = DU_DCT[j];\n }\n var Diff = DU[0] - DC;\n DC = DU[0];\n //Encode DC\n if (Diff == 0) {\n writeBits(HTDC[0]); // Diff might be 0\n } else {\n pos = 32767 + Diff;\n writeBits(HTDC[category[pos]]);\n writeBits(bitcode[pos]);\n }\n //Encode ACs\n var end0pos = 63; // was const... which is crazy\n while (end0pos > 0 && DU[end0pos] == 0) {\n end0pos--;\n }\n //end0pos = first element in reverse order !=0\n if (end0pos == 0) {\n writeBits(EOB);\n return DC;\n }\n var i = 1;\n var lng;\n while (i <= end0pos) {\n var startpos = i;\n while (DU[i] == 0 && i <= end0pos) {\n ++i;\n }\n var nrzeroes = i - startpos;\n if (nrzeroes >= I16) {\n lng = nrzeroes >> 4;\n for (var nrmarker = 1; nrmarker <= lng; ++nrmarker)\n writeBits(M16zeroes);\n nrzeroes = nrzeroes & 0xf;\n }\n pos = 32767 + DU[i];\n writeBits(HTAC[(nrzeroes << 4) + category[pos]]);\n writeBits(bitcode[pos]);\n i++;\n }\n if (end0pos != I63) {\n writeBits(EOB);\n }\n return DC;\n }\n\n function initCharLookupTable() {\n var sfcc = String.fromCharCode;\n for (var i = 0; i < 256; i++) {\n ///// ACHTUNG // 255\n clt[i] = sfcc(i);\n }\n }\n\n this.encode = function(\n image,\n quality // image data object\n ) {\n if (quality) setQuality(quality);\n\n // Initialize bit writer\n byteout = new Array();\n bytenew = 0;\n bytepos = 7;\n\n // Add JPEG headers\n writeWord(0xffd8); // SOI\n writeAPP0();\n writeDQT();\n writeSOF0(image.width, image.height);\n writeDHT();\n writeSOS();\n\n // Encode 8x8 macroblocks\n var DCY = 0;\n var DCU = 0;\n var DCV = 0;\n\n bytenew = 0;\n bytepos = 7;\n\n this.encode.displayName = \"_encode_\";\n\n var imageData = image.data;\n var width = image.width;\n var height = image.height;\n\n var quadWidth = width * 4;\n\n var x,\n y = 0;\n var r, g, b;\n var start, p, col, row, pos;\n while (y < height) {\n x = 0;\n while (x < quadWidth) {\n start = quadWidth * y + x;\n col = -1;\n row = 0;\n\n for (pos = 0; pos < 64; pos++) {\n row = pos >> 3; // /8\n col = (pos & 7) * 4; // %8\n p = start + row * quadWidth + col;\n\n if (y + row >= height) {\n // padding bottom\n p -= quadWidth * (y + 1 + row - height);\n }\n\n if (x + col >= quadWidth) {\n // padding right\n p -= x + col - quadWidth + 4;\n }\n\n r = imageData[p++];\n g = imageData[p++];\n b = imageData[p++];\n\n /* // calculate YUV values dynamically\n\t\t\t\t\tYDU[pos]=((( 0.29900)*r+( 0.58700)*g+( 0.11400)*b))-128; //-0x80\n\t\t\t\t\tUDU[pos]=(((-0.16874)*r+(-0.33126)*g+( 0.50000)*b));\n\t\t\t\t\tVDU[pos]=((( 0.50000)*r+(-0.41869)*g+(-0.08131)*b));\n\t\t\t\t\t*/\n\n // use lookup table (slightly faster)\n YDU[pos] =\n ((RGB_YUV_TABLE[r] +\n RGB_YUV_TABLE[(g + 256) >> 0] +\n RGB_YUV_TABLE[(b + 512) >> 0]) >>\n 16) -\n 128;\n UDU[pos] =\n ((RGB_YUV_TABLE[(r + 768) >> 0] +\n RGB_YUV_TABLE[(g + 1024) >> 0] +\n RGB_YUV_TABLE[(b + 1280) >> 0]) >>\n 16) -\n 128;\n VDU[pos] =\n ((RGB_YUV_TABLE[(r + 1280) >> 0] +\n RGB_YUV_TABLE[(g + 1536) >> 0] +\n RGB_YUV_TABLE[(b + 1792) >> 0]) >>\n 16) -\n 128;\n }\n\n DCY = processDU(YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n DCU = processDU(UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);\n DCV = processDU(VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);\n x += 32;\n }\n y += 8;\n }\n\n ////////////////////////////////////////////////////////////////\n\n // Do the bit alignment of the EOI marker\n if (bytepos >= 0) {\n var fillbits = [];\n fillbits[1] = bytepos + 1;\n fillbits[0] = (1 << (bytepos + 1)) - 1;\n writeBits(fillbits);\n }\n\n writeWord(0xffd9); //EOI\n\n return new Uint8Array(byteout);\n };\n\n function setQuality(quality) {\n quality = Math.min(Math.max(quality, 1), 100);\n\n if (currentQuality == quality) return; // don't recalc if unchanged\n\n var sf =\n quality < 50 ? Math.floor(5000 / quality) : Math.floor(200 - quality * 2);\n\n initQuantTables(sf);\n currentQuality = quality;\n //console.log('Quality set to: '+quality +'%');\n }\n\n function init() {\n quality = quality || 50;\n // Create tables\n initCharLookupTable();\n initHuffmanTbl();\n initCategoryNumber();\n initRGBYUVTable();\n\n setQuality(quality);\n }\n init();\n}\n\nexport { JPEGEncoder };\n","/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { GifReader } from \"../libs/omggif.js\";\nimport { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\n\n/**\n * jsPDF Gif Support PlugIn\n *\n * @name gif_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n jsPDFAPI.processGIF89A = function(imageData, index, alias, compression) {\n var reader = new GifReader(imageData);\n var width = reader.width,\n height = reader.height;\n var qu = 100;\n var pixels = [];\n\n reader.decodeAndBlitFrameRGBA(0, pixels);\n var rawImageData = {\n data: pixels,\n width: width,\n height: height\n };\n\n var encoder = new JPEGEncoder(qu);\n var data = encoder.encode(rawImageData, qu);\n return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n };\n\n jsPDFAPI.processGIF87A = jsPDFAPI.processGIF89A;\n})(jsPDF.API);\n","/**\n * @author shaozilee\n *\n * Bmp format decoder,support 1bit 4bit 8bit 24bit bmp\n *\n */\n\nimport { console } from \"./console.js\";\n\nfunction BmpDecoder(buffer, is_with_alpha) {\n this.pos = 0;\n this.buffer = buffer;\n this.datav = new DataView(buffer.buffer);\n this.is_with_alpha = !!is_with_alpha;\n this.bottom_up = true;\n this.flag =\n String.fromCharCode(this.buffer[0]) + String.fromCharCode(this.buffer[1]);\n this.pos += 2;\n if ([\"BM\", \"BA\", \"CI\", \"CP\", \"IC\", \"PT\"].indexOf(this.flag) === -1)\n throw new Error(\"Invalid BMP File\");\n this.parseHeader();\n this.parseBGR();\n}\n\nBmpDecoder.prototype.parseHeader = function() {\n this.fileSize = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.reserved = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.offset = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.headerSize = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.width = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.height = this.datav.getInt32(this.pos, true);\n this.pos += 4;\n this.planes = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n this.bitPP = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n this.compress = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.rawSize = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.hr = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.vr = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.colors = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.importantColors = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n\n if (this.bitPP === 16 && this.is_with_alpha) {\n this.bitPP = 15;\n }\n if (this.bitPP < 15) {\n var len = this.colors === 0 ? 1 << this.bitPP : this.colors;\n this.palette = new Array(len);\n for (var i = 0; i < len; i++) {\n var blue = this.datav.getUint8(this.pos++, true);\n var green = this.datav.getUint8(this.pos++, true);\n var red = this.datav.getUint8(this.pos++, true);\n var quad = this.datav.getUint8(this.pos++, true);\n this.palette[i] = {\n red: red,\n green: green,\n blue: blue,\n quad: quad\n };\n }\n }\n if (this.height < 0) {\n this.height *= -1;\n this.bottom_up = false;\n }\n};\n\nBmpDecoder.prototype.parseBGR = function() {\n this.pos = this.offset;\n try {\n var bitn = \"bit\" + this.bitPP;\n var len = this.width * this.height * 4;\n this.data = new Uint8Array(len);\n\n this[bitn]();\n } catch (e) {\n console.log(\"bit decode error:\" + e);\n }\n};\n\nBmpDecoder.prototype.bit1 = function() {\n var xlen = Math.ceil(this.width / 8);\n var mode = xlen % 4;\n var y;\n for (y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < xlen; x++) {\n var b = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 8 * 4;\n for (var i = 0; i < 8; i++) {\n if (x * 8 + i < this.width) {\n var rgb = this.palette[(b >> (7 - i)) & 0x1];\n this.data[location + i * 4] = rgb.blue;\n this.data[location + i * 4 + 1] = rgb.green;\n this.data[location + i * 4 + 2] = rgb.red;\n this.data[location + i * 4 + 3] = 0xff;\n } else {\n break;\n }\n }\n }\n\n if (mode !== 0) {\n this.pos += 4 - mode;\n }\n }\n};\n\nBmpDecoder.prototype.bit4 = function() {\n var xlen = Math.ceil(this.width / 2);\n var mode = xlen % 4;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < xlen; x++) {\n var b = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 2 * 4;\n\n var before = b >> 4;\n var after = b & 0x0f;\n\n var rgb = this.palette[before];\n this.data[location] = rgb.blue;\n this.data[location + 1] = rgb.green;\n this.data[location + 2] = rgb.red;\n this.data[location + 3] = 0xff;\n\n if (x * 2 + 1 >= this.width) break;\n\n rgb = this.palette[after];\n this.data[location + 4] = rgb.blue;\n this.data[location + 4 + 1] = rgb.green;\n this.data[location + 4 + 2] = rgb.red;\n this.data[location + 4 + 3] = 0xff;\n }\n\n if (mode !== 0) {\n this.pos += 4 - mode;\n }\n }\n};\n\nBmpDecoder.prototype.bit8 = function() {\n var mode = this.width % 4;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var b = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 4;\n if (b < this.palette.length) {\n var rgb = this.palette[b];\n this.data[location] = rgb.red;\n this.data[location + 1] = rgb.green;\n this.data[location + 2] = rgb.blue;\n this.data[location + 3] = 0xff;\n } else {\n this.data[location] = 0xff;\n this.data[location + 1] = 0xff;\n this.data[location + 2] = 0xff;\n this.data[location + 3] = 0xff;\n }\n }\n if (mode !== 0) {\n this.pos += 4 - mode;\n }\n }\n};\n\nBmpDecoder.prototype.bit15 = function() {\n var dif_w = this.width % 3;\n var _11111 = parseInt(\"11111\", 2),\n _1_5 = _11111;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var B = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n var blue = (((B & _1_5) / _1_5) * 255) | 0;\n var green = ((((B >> 5) & _1_5) / _1_5) * 255) | 0;\n var red = ((((B >> 10) & _1_5) / _1_5) * 255) | 0;\n var alpha = B >> 15 ? 0xff : 0x00;\n\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = alpha;\n }\n //skip extra bytes\n this.pos += dif_w;\n }\n};\n\nBmpDecoder.prototype.bit16 = function() {\n var dif_w = this.width % 3;\n var _11111 = parseInt(\"11111\", 2),\n _1_5 = _11111;\n var _111111 = parseInt(\"111111\", 2),\n _1_6 = _111111;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var B = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n var alpha = 0xff;\n var blue = (((B & _1_5) / _1_5) * 255) | 0;\n var green = ((((B >> 5) & _1_6) / _1_6) * 255) | 0;\n var red = (((B >> 11) / _1_5) * 255) | 0;\n\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = alpha;\n }\n //skip extra bytes\n this.pos += dif_w;\n }\n};\n\nBmpDecoder.prototype.bit24 = function() {\n //when height > 0\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var blue = this.datav.getUint8(this.pos++, true);\n var green = this.datav.getUint8(this.pos++, true);\n var red = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = 0xff;\n }\n //skip extra bytes\n this.pos += this.width % 4;\n }\n};\n\n/**\n * add 32bit decode func\n * @author soubok\n */\nBmpDecoder.prototype.bit32 = function() {\n //when height > 0\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var blue = this.datav.getUint8(this.pos++, true);\n var green = this.datav.getUint8(this.pos++, true);\n var red = this.datav.getUint8(this.pos++, true);\n var alpha = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = alpha;\n }\n //skip extra bytes\n //this.pos += (this.width % 4);\n }\n};\n\nBmpDecoder.prototype.getData = function() {\n return this.data;\n};\n\nexport { BmpDecoder };\n","import { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\nimport { BmpDecoder } from \"../libs/BMPDecoder.js\";\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @license\n * Copyright (c) 2018 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF bmp Support PlugIn\n * @name bmp_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n jsPDFAPI.processBMP = function(imageData, index, alias, compression) {\n var reader = new BmpDecoder(imageData, false);\n var width = reader.width,\n height = reader.height;\n var qu = 100;\n var pixels = reader.getData();\n\n var rawImageData = {\n data: pixels,\n width: width,\n height: height\n };\n\n var encoder = new JPEGEncoder(qu);\n var data = encoder.encode(rawImageData, qu);\n return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n };\n})(jsPDF.API);\n","function WebPDecoder(imageData) {\n /** @license\n * Copyright 2011 Google Inc.\n *\n * This code is licensed under the same terms as WebM:\n * Software License Agreement: http://www.webmproject.org/license/software/\n * Additional IP Rights Grant: http://www.webmproject.org/license/additional/\n * -----------------------------------------------------------------------------\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -----------------------------------------------------------------------------\n *\n * Copyright 2011-2017 Dominik Homberger\n * Libwebp Javascript / libwebpjs - the libwebp implementation in javascript (v0.6.0)\n *\n * Author: Dominik Homberger (dominik.homberger@gmail.com)\n */\n\n var self = this;\n var UpsampleRgbLinePair,\n UpsampleBgrLinePair,\n UpsampleRgbaLinePair,\n UpsampleBgraLinePair,\n UpsampleArgbLinePair,\n UpsampleArgbLinePair,\n UpsampleRgba4444LinePair,\n UpsampleRgb565LinePair;\n\n function x(F) {\n if (!F) throw Error(\"assert :P\");\n }\n function fa(F, L, J) {\n for (var H = 0; 4 > H; H++) if (F[L + H] != J.charCodeAt(H)) return !0;\n return !1;\n }\n function I(F, L, J, H, Z) {\n for (var O = 0; O < Z; O++) F[L + O] = J[H + O];\n }\n function M(F, L, J, H) {\n for (var Z = 0; Z < H; Z++) F[L + Z] = J;\n }\n function V(F) {\n return new Int32Array(F);\n }\n function wa(F, L) {\n for (var J = [], H = 0; H < F; H++) J.push(new L());\n return J;\n }\n function wb() {\n function F(J, H, Z) {\n for (var O = Z[H], L = 0; L < O; L++) {\n J.push(Z.length > H + 1 ? [] : 0);\n if (Z.length < H + 1) break;\n F(J[L], H + 1, Z);\n }\n }\n var L = [];\n F(L, 0, [3, 11]);\n return L;\n }\n function Ed(F, L) {\n function J(H, O, F) {\n for (var Z = F[O], ma = 0; ma < Z; ma++) {\n H.push(F.length > O + 1 ? [] : new L());\n if (F.length < O + 1) break;\n J(H[ma], O + 1, F);\n }\n }\n var H = [];\n J(H, 0, F);\n return H;\n }\n var _WebPDecoder = function() {\n var self = this;\n function F() {\n V(55);\n }\n function L(a, b) {\n for (var c = (1 << (b - 1)) >>> 0; a & c; ) c >>>= 1;\n return c ? (a & (c - 1)) + c : a;\n }\n function J(a, b, c, d, e) {\n x(!(d % c));\n do (d -= c), (a[b + d] = e);\n while (0 < d);\n }\n function H(a, b, c, d, e, f) {\n var g = b,\n h = 1 << c,\n k,\n l,\n m = V(16),\n n = V(16);\n x(0 != e);\n x(null != d);\n x(null != a);\n x(0 < c);\n for (l = 0; l < e; ++l) {\n if (15 < d[l]) return 0;\n ++m[d[l]];\n }\n if (m[0] == e) return 0;\n n[1] = 0;\n for (k = 1; 15 > k; ++k) {\n if (m[k] > 1 << k) return 0;\n n[k + 1] = n[k] + m[k];\n }\n for (l = 0; l < e; ++l) (k = d[l]), 0 < d[l] && (f[n[k]++] = l);\n if (1 == n[15])\n return (d = new O()), (d.g = 0), (d.value = f[0]), J(a, g, 1, h, d), h;\n var r = -1,\n q = h - 1,\n t = 0,\n v = 1,\n p = 1,\n u,\n w = 1 << c;\n l = 0;\n k = 1;\n for (e = 2; k <= c; ++k, e <<= 1) {\n p <<= 1;\n v += p;\n p -= m[k];\n if (0 > p) return 0;\n for (; 0 < m[k]; --m[k])\n (d = new O()),\n (d.g = k),\n (d.value = f[l++]),\n J(a, g + t, e, w, d),\n (t = L(t, k));\n }\n k = c + 1;\n for (e = 2; 15 >= k; ++k, e <<= 1) {\n p <<= 1;\n v += p;\n p -= m[k];\n if (0 > p) return 0;\n for (; 0 < m[k]; --m[k]) {\n d = new O();\n if ((t & q) != r) {\n g += w;\n r = k;\n for (u = 1 << (r - c); 15 > r; ) {\n u -= m[r];\n if (0 >= u) break;\n ++r;\n u <<= 1;\n }\n u = r - c;\n w = 1 << u;\n h += w;\n r = t & q;\n a[b + r].g = u + c;\n a[b + r].value = g - b - r;\n }\n d.g = k - c;\n d.value = f[l++];\n J(a, g + (t >> c), e, w, d);\n t = L(t, k);\n }\n }\n return v != 2 * n[15] - 1 ? 0 : h;\n }\n function Z(a, b, c, d, e) {\n x(2328 >= e);\n if (512 >= e) var f = V(512);\n else if (((f = V(e)), null == f)) return 0;\n return H(a, b, c, d, e, f);\n }\n function O() {\n this.value = this.g = 0;\n }\n function Fd() {\n this.value = this.g = 0;\n }\n function Ub() {\n this.G = wa(5, O);\n this.H = V(5);\n this.jc = this.Qb = this.qb = this.nd = 0;\n this.pd = wa(xb, Fd);\n }\n function ma(a, b, c, d) {\n x(null != a);\n x(null != b);\n x(2147483648 > d);\n a.Ca = 254;\n a.I = 0;\n a.b = -8;\n a.Ka = 0;\n a.oa = b;\n a.pa = c;\n a.Jd = b;\n a.Yc = c + d;\n a.Zc = 4 <= d ? c + d - 4 + 1 : c;\n Qa(a);\n }\n function na(a, b) {\n for (var c = 0; 0 < b--; ) c |= K(a, 128) << b;\n return c;\n }\n function ca(a, b) {\n var c = na(a, b);\n return G(a) ? -c : c;\n }\n function cb(a, b, c, d) {\n var e,\n f = 0;\n x(null != a);\n x(null != b);\n x(4294967288 > d);\n a.Sb = d;\n a.Ra = 0;\n a.u = 0;\n a.h = 0;\n 4 < d && (d = 4);\n for (e = 0; e < d; ++e) f += b[c + e] << (8 * e);\n a.Ra = f;\n a.bb = d;\n a.oa = b;\n a.pa = c;\n }\n function Vb(a) {\n for (; 8 <= a.u && a.bb < a.Sb; )\n (a.Ra >>>= 8),\n (a.Ra += (a.oa[a.pa + a.bb] << (ob - 8)) >>> 0),\n ++a.bb,\n (a.u -= 8);\n db(a) && ((a.h = 1), (a.u = 0));\n }\n function D(a, b) {\n x(0 <= b);\n if (!a.h && b <= Gd) {\n var c = pb(a) & Hd[b];\n a.u += b;\n Vb(a);\n return c;\n }\n a.h = 1;\n return (a.u = 0);\n }\n function Wb() {\n this.b = this.Ca = this.I = 0;\n this.oa = [];\n this.pa = 0;\n this.Jd = [];\n this.Yc = 0;\n this.Zc = [];\n this.Ka = 0;\n }\n function Ra() {\n this.Ra = 0;\n this.oa = [];\n this.h = this.u = this.bb = this.Sb = this.pa = 0;\n }\n function pb(a) {\n return (a.Ra >>> (a.u & (ob - 1))) >>> 0;\n }\n function db(a) {\n x(a.bb <= a.Sb);\n return a.h || (a.bb == a.Sb && a.u > ob);\n }\n function qb(a, b) {\n a.u = b;\n a.h = db(a);\n }\n function Sa(a) {\n a.u >= Xb && (x(a.u >= Xb), Vb(a));\n }\n function Qa(a) {\n x(null != a && null != a.oa);\n a.pa < a.Zc\n ? ((a.I = (a.oa[a.pa++] | (a.I << 8)) >>> 0), (a.b += 8))\n : (x(null != a && null != a.oa),\n a.pa < a.Yc\n ? ((a.b += 8), (a.I = a.oa[a.pa++] | (a.I << 8)))\n : a.Ka\n ? (a.b = 0)\n : ((a.I <<= 8), (a.b += 8), (a.Ka = 1)));\n }\n function G(a) {\n return na(a, 1);\n }\n function K(a, b) {\n var c = a.Ca;\n 0 > a.b && Qa(a);\n var d = a.b,\n e = (c * b) >>> 8,\n f = (a.I >>> d > e) + 0;\n f ? ((c -= e), (a.I -= ((e + 1) << d) >>> 0)) : (c = e + 1);\n d = c;\n for (e = 0; 256 <= d; ) (e += 8), (d >>= 8);\n d = 7 ^ (e + Id[d]);\n a.b -= d;\n a.Ca = (c << d) - 1;\n return f;\n }\n function ra(a, b, c) {\n a[b + 0] = (c >> 24) & 255;\n a[b + 1] = (c >> 16) & 255;\n a[b + 2] = (c >> 8) & 255;\n a[b + 3] = (c >> 0) & 255;\n }\n function Ta(a, b) {\n return (a[b + 0] << 0) | (a[b + 1] << 8);\n }\n function Yb(a, b) {\n return Ta(a, b) | (a[b + 2] << 16);\n }\n function Ha(a, b) {\n return Ta(a, b) | (Ta(a, b + 2) << 16);\n }\n function Zb(a, b) {\n var c = 1 << b;\n x(null != a);\n x(0 < b);\n a.X = V(c);\n if (null == a.X) return 0;\n a.Mb = 32 - b;\n a.Xa = b;\n return 1;\n }\n function $b(a, b) {\n x(null != a);\n x(null != b);\n x(a.Xa == b.Xa);\n I(b.X, 0, a.X, 0, 1 << b.Xa);\n }\n function ac() {\n this.X = [];\n this.Xa = this.Mb = 0;\n }\n function bc(a, b, c, d) {\n x(null != c);\n x(null != d);\n var e = c[0],\n f = d[0];\n 0 == e && (e = (a * f + b / 2) / b);\n 0 == f && (f = (b * e + a / 2) / a);\n if (0 >= e || 0 >= f) return 0;\n c[0] = e;\n d[0] = f;\n return 1;\n }\n function xa(a, b) {\n return (a + (1 << b) - 1) >>> b;\n }\n function yb(a, b) {\n return (\n (((((a & 4278255360) + (b & 4278255360)) >>> 0) & 4278255360) +\n ((((a & 16711935) + (b & 16711935)) >>> 0) & 16711935)) >>>\n 0\n );\n }\n function X(a, b) {\n self[b] = function(b, d, e, f, g, h, k) {\n var c;\n for (c = 0; c < g; ++c) {\n var m = self[a](h[k + c - 1], e, f + c);\n h[k + c] = yb(b[d + c], m);\n }\n };\n }\n function Jd() {\n this.ud = this.hd = this.jd = 0;\n }\n function aa(a, b) {\n return ((((a ^ b) & 4278124286) >>> 1) + (a & b)) >>> 0;\n }\n function sa(a) {\n if (0 <= a && 256 > a) return a;\n if (0 > a) return 0;\n if (255 < a) return 255;\n }\n function eb(a, b) {\n return sa(a + ((a - b + 0.5) >> 1));\n }\n function Ia(a, b, c) {\n return Math.abs(b - c) - Math.abs(a - c);\n }\n function cc(a, b, c, d, e, f, g) {\n d = f[g - 1];\n for (c = 0; c < e; ++c) f[g + c] = d = yb(a[b + c], d);\n }\n function Kd(a, b, c, d, e) {\n var f;\n for (f = 0; f < c; ++f) {\n var g = a[b + f],\n h = (g >> 8) & 255,\n k = g & 16711935,\n k = k + ((h << 16) + h),\n k = k & 16711935;\n d[e + f] = ((g & 4278255360) + k) >>> 0;\n }\n }\n function dc(a, b) {\n b.jd = (a >> 0) & 255;\n b.hd = (a >> 8) & 255;\n b.ud = (a >> 16) & 255;\n }\n function Ld(a, b, c, d, e, f) {\n var g;\n for (g = 0; g < d; ++g) {\n var h = b[c + g],\n k = h >>> 8,\n l = h >>> 16,\n m = h,\n l = l + ((((a.jd << 24) >> 24) * ((k << 24) >> 24)) >>> 5),\n l = l & 255,\n m = m + ((((a.hd << 24) >> 24) * ((k << 24) >> 24)) >>> 5),\n m = m + ((((a.ud << 24) >> 24) * ((l << 24) >> 24)) >>> 5),\n m = m & 255;\n e[f + g] = (h & 4278255360) + (l << 16) + m;\n }\n }\n function ec(a, b, c, d, e) {\n self[b] = function(a, b, c, k, l, m, n, r, q) {\n for (k = n; k < r; ++k)\n for (n = 0; n < q; ++n) l[m++] = e(c[d(a[b++])]);\n };\n self[a] = function(a, b, h, k, l, m, n) {\n var f = 8 >> a.b,\n g = a.Ea,\n t = a.K[0],\n v = a.w;\n if (8 > f)\n for (a = (1 << a.b) - 1, v = (1 << f) - 1; b < h; ++b) {\n var p = 0,\n u;\n for (u = 0; u < g; ++u)\n u & a || (p = d(k[l++])), (m[n++] = e(t[p & v])), (p >>= f);\n }\n else self[\"VP8LMapColor\" + c](k, l, t, v, m, n, b, h, g);\n };\n }\n function Md(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++];\n d[e++] = (f >> 16) & 255;\n d[e++] = (f >> 8) & 255;\n d[e++] = (f >> 0) & 255;\n }\n }\n function Nd(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++];\n d[e++] = (f >> 16) & 255;\n d[e++] = (f >> 8) & 255;\n d[e++] = (f >> 0) & 255;\n d[e++] = (f >> 24) & 255;\n }\n }\n function Od(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++],\n g = ((f >> 16) & 240) | ((f >> 12) & 15),\n f = ((f >> 0) & 240) | ((f >> 28) & 15);\n d[e++] = g;\n d[e++] = f;\n }\n }\n function Pd(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++],\n g = ((f >> 16) & 248) | ((f >> 13) & 7),\n f = ((f >> 5) & 224) | ((f >> 3) & 31);\n d[e++] = g;\n d[e++] = f;\n }\n }\n function Qd(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++];\n d[e++] = (f >> 0) & 255;\n d[e++] = (f >> 8) & 255;\n d[e++] = (f >> 16) & 255;\n }\n }\n function fb(a, b, c, d, e, f) {\n if (0 == f)\n for (c = b + c; b < c; )\n (f = a[b++]),\n ra(\n d,\n ((f[0] >> 24) |\n ((f[1] >> 8) & 65280) |\n ((f[2] << 8) & 16711680) |\n (f[3] << 24)) >>>\n 0\n ),\n (e += 32);\n else I(d, e, a, b, c);\n }\n function gb(a, b) {\n self[b][0] = self[a + \"0\"];\n self[b][1] = self[a + \"1\"];\n self[b][2] = self[a + \"2\"];\n self[b][3] = self[a + \"3\"];\n self[b][4] = self[a + \"4\"];\n self[b][5] = self[a + \"5\"];\n self[b][6] = self[a + \"6\"];\n self[b][7] = self[a + \"7\"];\n self[b][8] = self[a + \"8\"];\n self[b][9] = self[a + \"9\"];\n self[b][10] = self[a + \"10\"];\n self[b][11] = self[a + \"11\"];\n self[b][12] = self[a + \"12\"];\n self[b][13] = self[a + \"13\"];\n self[b][14] = self[a + \"0\"];\n self[b][15] = self[a + \"0\"];\n }\n function hb(a) {\n return a == zb || a == Ab || a == Ja || a == Bb;\n }\n function Rd() {\n this.eb = [];\n this.size = this.A = this.fb = 0;\n }\n function Sd() {\n this.y = [];\n this.f = [];\n this.ea = [];\n this.F = [];\n this.Tc = this.Ed = this.Cd = this.Fd = this.lb = this.Db = this.Ab = this.fa = this.J = this.W = this.N = this.O = 0;\n }\n function Cb() {\n this.Rd = this.height = this.width = this.S = 0;\n this.f = {};\n this.f.RGBA = new Rd();\n this.f.kb = new Sd();\n this.sd = null;\n }\n function Td() {\n this.width = [0];\n this.height = [0];\n this.Pd = [0];\n this.Qd = [0];\n this.format = [0];\n }\n function Ud() {\n this.Id = this.fd = this.Md = this.hb = this.ib = this.da = this.bd = this.cd = this.j = this.v = this.Da = this.Sd = this.ob = 0;\n }\n function Vd(a) {\n alert(\"todo:WebPSamplerProcessPlane\");\n return a.T;\n }\n function Wd(a, b) {\n var c = a.T,\n d = b.ba.f.RGBA,\n e = d.eb,\n f = d.fb + a.ka * d.A,\n g = P[b.ba.S],\n h = a.y,\n k = a.O,\n l = a.f,\n m = a.N,\n n = a.ea,\n r = a.W,\n q = b.cc,\n t = b.dc,\n v = b.Mc,\n p = b.Nc,\n u = a.ka,\n w = a.ka + a.T,\n y = a.U,\n A = (y + 1) >> 1;\n 0 == u\n ? g(h, k, null, null, l, m, n, r, l, m, n, r, e, f, null, null, y)\n : (g(b.ec, b.fc, h, k, q, t, v, p, l, m, n, r, e, f - d.A, e, f, y),\n ++c);\n for (; u + 2 < w; u += 2)\n (q = l),\n (t = m),\n (v = n),\n (p = r),\n (m += a.Rc),\n (r += a.Rc),\n (f += 2 * d.A),\n (k += 2 * a.fa),\n g(h, k - a.fa, h, k, q, t, v, p, l, m, n, r, e, f - d.A, e, f, y);\n k += a.fa;\n a.j + w < a.o\n ? (I(b.ec, b.fc, h, k, y),\n I(b.cc, b.dc, l, m, A),\n I(b.Mc, b.Nc, n, r, A),\n c--)\n : w & 1 ||\n g(\n h,\n k,\n null,\n null,\n l,\n m,\n n,\n r,\n l,\n m,\n n,\n r,\n e,\n f + d.A,\n null,\n null,\n y\n );\n return c;\n }\n function Xd(a, b, c) {\n var d = a.F,\n e = [a.J];\n if (null != d) {\n var f = a.U,\n g = b.ba.S,\n h = g == ya || g == Ja;\n b = b.ba.f.RGBA;\n var k = [0],\n l = a.ka;\n k[0] = a.T;\n a.Kb &&\n (0 == l ? --k[0] : (--l, (e[0] -= a.width)),\n a.j + a.ka + a.T == a.o && (k[0] = a.o - a.j - l));\n var m = b.eb,\n l = b.fb + l * b.A;\n a = fc(d, e[0], a.width, f, k, m, l + (h ? 0 : 3), b.A);\n x(c == k);\n a && hb(g) && za(m, l, h, f, k, b.A);\n }\n return 0;\n }\n function gc(a) {\n var b = a.ma,\n c = b.ba.S,\n d = 11 > c,\n e = c == Ua || c == Va || c == ya || c == Db || 12 == c || hb(c);\n b.memory = null;\n b.Ib = null;\n b.Jb = null;\n b.Nd = null;\n if (!hc(b.Oa, a, e ? 11 : 12)) return 0;\n e && hb(c) && ic();\n if (a.da) alert(\"todo:use_scaling\");\n else {\n if (d) {\n if (((b.Ib = Vd), a.Kb)) {\n c = (a.U + 1) >> 1;\n b.memory = V(a.U + 2 * c);\n if (null == b.memory) return 0;\n b.ec = b.memory;\n b.fc = 0;\n b.cc = b.ec;\n b.dc = b.fc + a.U;\n b.Mc = b.cc;\n b.Nc = b.dc + c;\n b.Ib = Wd;\n ic();\n }\n } else alert(\"todo:EmitYUV\");\n e && ((b.Jb = Xd), d && Aa());\n }\n if (d && !jc) {\n for (a = 0; 256 > a; ++a)\n (Yd[a] = (89858 * (a - 128) + Ba) >> Wa),\n (Zd[a] = -22014 * (a - 128) + Ba),\n ($d[a] = -45773 * (a - 128)),\n (ae[a] = (113618 * (a - 128) + Ba) >> Wa);\n for (a = ta; a < Eb; ++a)\n (b = (76283 * (a - 16) + Ba) >> Wa),\n (be[a - ta] = ga(b, 255)),\n (ce[a - ta] = ga((b + 8) >> 4, 15));\n jc = 1;\n }\n return 1;\n }\n function kc(a) {\n var b = a.ma,\n c = a.U,\n d = a.T;\n x(!(a.ka & 1));\n if (0 >= c || 0 >= d) return 0;\n c = b.Ib(a, b);\n null != b.Jb && b.Jb(a, b, c);\n b.Dc += c;\n return 1;\n }\n function lc(a) {\n a.ma.memory = null;\n }\n function mc(a, b, c, d) {\n if (47 != D(a, 8)) return 0;\n b[0] = D(a, 14) + 1;\n c[0] = D(a, 14) + 1;\n d[0] = D(a, 1);\n return 0 != D(a, 3) ? 0 : !a.h;\n }\n function ib(a, b) {\n if (4 > a) return a + 1;\n var c = (a - 2) >> 1;\n return ((2 + (a & 1)) << c) + D(b, c) + 1;\n }\n function nc(a, b) {\n if (120 < b) return b - 120;\n var c = de[b - 1],\n c = (c >> 4) * a + (8 - (c & 15));\n return 1 <= c ? c : 1;\n }\n function ua(a, b, c) {\n var d = pb(c);\n b += d & 255;\n var e = a[b].g - 8;\n 0 < e &&\n (qb(c, c.u + 8),\n (d = pb(c)),\n (b += a[b].value),\n (b += d & ((1 << e) - 1)));\n qb(c, c.u + a[b].g);\n return a[b].value;\n }\n function ub(a, b, c) {\n c.g += a.g;\n c.value += (a.value << b) >>> 0;\n x(8 >= c.g);\n return a.g;\n }\n function ha(a, b, c) {\n var d = a.xc;\n b = 0 == d ? 0 : a.vc[a.md * (c >> d) + (b >> d)];\n x(b < a.Wb);\n return a.Ya[b];\n }\n function oc(a, b, c, d) {\n var e = a.ab,\n f = a.c * b,\n g = a.C;\n b = g + b;\n var h = c,\n k = d;\n d = a.Ta;\n for (c = a.Ua; 0 < e--; ) {\n var l = a.gc[e],\n m = g,\n n = b,\n r = h,\n q = k,\n k = d,\n h = c,\n t = l.Ea;\n x(m < n);\n x(n <= l.nc);\n switch (l.hc) {\n case 2:\n pc(r, q, (n - m) * t, k, h);\n break;\n case 0:\n var v = l,\n p = m,\n u = n,\n w = k,\n y = h,\n A = v.Ea;\n 0 == p &&\n (ee(r, q, null, null, 1, w, y),\n cc(r, q + 1, 0, 0, A - 1, w, y + 1),\n (q += A),\n (y += A),\n ++p);\n for (\n var E = 1 << v.b,\n B = E - 1,\n C = xa(A, v.b),\n N = v.K,\n v = v.w + (p >> v.b) * C;\n p < u;\n\n ) {\n var z = N,\n Q = v,\n S = 1;\n for (fe(r, q, w, y - A, 1, w, y); S < A; ) {\n var K = qc[(z[Q++] >> 8) & 15],\n D = (S & ~B) + E;\n D > A && (D = A);\n K(r, q + +S, w, y + S - A, D - S, w, y + S);\n S = D;\n }\n q += A;\n y += A;\n ++p;\n p & B || (v += C);\n }\n n != l.nc && I(k, h - t, k, h + (n - m - 1) * t, t);\n break;\n case 1:\n t = r;\n u = q;\n r = l.Ea;\n q = 1 << l.b;\n w = q - 1;\n y = r & ~w;\n A = r - y;\n p = xa(r, l.b);\n E = l.K;\n for (l = l.w + (m >> l.b) * p; m < n; ) {\n B = E;\n C = l;\n N = new Jd();\n v = u + y;\n for (z = u + r; u < v; )\n dc(B[C++], N), Fb(N, t, u, q, k, h), (u += q), (h += q);\n u < z &&\n (dc(B[C++], N), Fb(N, t, u, A, k, h), (u += A), (h += A));\n ++m;\n m & w || (l += p);\n }\n break;\n case 3:\n if (r == k && q == h && 0 < l.b) {\n y = (n - m) * xa(l.Ea, l.b);\n t = h + (n - m) * t - y;\n u = k;\n r = t;\n q = k;\n w = h;\n A = y;\n p = [];\n for (y = A - 1; 0 <= y; --y) p[y] = q[w + y];\n for (y = A - 1; 0 <= y; --y) u[r + y] = p[y];\n rc(l, m, n, k, t, k, h);\n } else rc(l, m, n, r, q, k, h);\n }\n h = d;\n k = c;\n }\n k != c && I(d, c, h, k, f);\n }\n function ge(a, b) {\n var c = a.V,\n d = a.Ba + a.c * a.C,\n e = b - a.C;\n x(b <= a.l.o);\n x(16 >= e);\n if (0 < e) {\n var f = a.l,\n g = a.Ta,\n h = a.Ua,\n k = f.width;\n oc(a, e, c, d);\n h = [h];\n c = a.C;\n d = b;\n e = h;\n x(c < d);\n x(f.v < f.va);\n d > f.o && (d = f.o);\n if (c < f.j) {\n var l = f.j - c,\n c = f.j;\n e[0] += l * k;\n }\n c >= d\n ? (c = 0)\n : ((e[0] += 4 * f.v),\n (f.ka = c - f.j),\n (f.U = f.va - f.v),\n (f.T = d - c),\n (c = 1));\n if (c) {\n h = h[0];\n c = a.ca;\n if (11 > c.S) {\n for (\n var m = c.f.RGBA,\n d = c.S,\n e = f.U,\n f = f.T,\n l = m.eb,\n n = m.A,\n r = f,\n m = m.fb + a.Ma * m.A;\n 0 < r--;\n\n ) {\n var q = g,\n t = h,\n v = e,\n p = l,\n u = m;\n switch (d) {\n case Ca:\n sc(q, t, v, p, u);\n break;\n case Ua:\n Gb(q, t, v, p, u);\n break;\n case zb:\n Gb(q, t, v, p, u);\n za(p, u, 0, v, 1, 0);\n break;\n case tc:\n uc(q, t, v, p, u);\n break;\n case Va:\n fb(q, t, v, p, u, 1);\n break;\n case Ab:\n fb(q, t, v, p, u, 1);\n za(p, u, 0, v, 1, 0);\n break;\n case ya:\n fb(q, t, v, p, u, 0);\n break;\n case Ja:\n fb(q, t, v, p, u, 0);\n za(p, u, 1, v, 1, 0);\n break;\n case Db:\n Hb(q, t, v, p, u);\n break;\n case Bb:\n Hb(q, t, v, p, u);\n vc(p, u, v, 1, 0);\n break;\n case wc:\n xc(q, t, v, p, u);\n break;\n default:\n x(0);\n }\n h += k;\n m += n;\n }\n a.Ma += f;\n } else alert(\"todo:EmitRescaledRowsYUVA\");\n x(a.Ma <= c.height);\n }\n }\n a.C = b;\n x(a.C <= a.i);\n }\n function yc(a) {\n var b;\n if (0 < a.ua) return 0;\n for (b = 0; b < a.Wb; ++b) {\n var c = a.Ya[b].G,\n d = a.Ya[b].H;\n if (\n 0 < c[1][d[1] + 0].g ||\n 0 < c[2][d[2] + 0].g ||\n 0 < c[3][d[3] + 0].g\n )\n return 0;\n }\n return 1;\n }\n function zc(a, b, c, d, e, f) {\n if (0 != a.Z) {\n var g = a.qd,\n h = a.rd;\n for (x(null != ia[a.Z]); b < c; ++b)\n ia[a.Z](g, h, d, e, d, e, f), (g = d), (h = e), (e += f);\n a.qd = g;\n a.rd = h;\n }\n }\n function Ib(a, b) {\n var c = a.l.ma,\n d = 0 == c.Z || 1 == c.Z ? a.l.j : a.C,\n d = a.C < d ? d : a.C;\n x(b <= a.l.o);\n if (b > d) {\n var e = a.l.width,\n f = c.ca,\n g = c.tb + e * d,\n h = a.V,\n k = a.Ba + a.c * d,\n l = a.gc;\n x(1 == a.ab);\n x(3 == l[0].hc);\n he(l[0], d, b, h, k, f, g);\n zc(c, d, b, f, g, e);\n }\n a.C = a.Ma = b;\n }\n function Jb(a, b, c, d, e, f, g) {\n var h = a.$ / d,\n k = a.$ % d,\n l = a.m,\n m = a.s,\n n = c + a.$,\n r = n;\n e = c + d * e;\n var q = c + d * f,\n t = 280 + m.ua,\n v = a.Pb ? h : 16777216,\n p = 0 < m.ua ? m.Wa : null,\n u = m.wc,\n w = n < q ? ha(m, k, h) : null;\n x(a.C < f);\n x(q <= e);\n var y = !1;\n a: for (;;) {\n for (; y || n < q; ) {\n var A = 0;\n if (h >= v) {\n var v = a,\n E = n - c;\n x(v.Pb);\n v.wd = v.m;\n v.xd = E;\n 0 < v.s.ua && $b(v.s.Wa, v.s.vb);\n v = h + ie;\n }\n k & u || (w = ha(m, k, h));\n x(null != w);\n w.Qb && ((b[n] = w.qb), (y = !0));\n if (!y)\n if ((Sa(l), w.jc)) {\n var A = l,\n E = b,\n B = n,\n C = w.pd[pb(A) & (xb - 1)];\n x(w.jc);\n 256 > C.g\n ? (qb(A, A.u + C.g), (E[B] = C.value), (A = 0))\n : (qb(A, A.u + C.g - 256), x(256 <= C.value), (A = C.value));\n 0 == A && (y = !0);\n } else A = ua(w.G[0], w.H[0], l);\n if (l.h) break;\n if (y || 256 > A) {\n if (!y)\n if (w.nd) b[n] = (w.qb | (A << 8)) >>> 0;\n else {\n Sa(l);\n y = ua(w.G[1], w.H[1], l);\n Sa(l);\n E = ua(w.G[2], w.H[2], l);\n B = ua(w.G[3], w.H[3], l);\n if (l.h) break;\n b[n] = ((B << 24) | (y << 16) | (A << 8) | E) >>> 0;\n }\n y = !1;\n ++n;\n ++k;\n if (\n k >= d &&\n ((k = 0),\n ++h,\n null != g && h <= f && !(h % 16) && g(a, h),\n null != p)\n )\n for (; r < n; )\n (A = b[r++]),\n (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n } else if (280 > A) {\n A = ib(A - 256, l);\n E = ua(w.G[4], w.H[4], l);\n Sa(l);\n E = ib(E, l);\n E = nc(d, E);\n if (l.h) break;\n if (n - c < E || e - n < A) break a;\n else for (B = 0; B < A; ++B) b[n + B] = b[n + B - E];\n n += A;\n for (k += A; k >= d; )\n (k -= d), ++h, null != g && h <= f && !(h % 16) && g(a, h);\n x(n <= e);\n k & u && (w = ha(m, k, h));\n if (null != p)\n for (; r < n; )\n (A = b[r++]),\n (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n } else if (A < t) {\n y = A - 280;\n for (x(null != p); r < n; )\n (A = b[r++]), (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n A = n;\n E = p;\n x(!(y >>> E.Xa));\n b[A] = E.X[y];\n y = !0;\n } else break a;\n y || x(l.h == db(l));\n }\n if (a.Pb && l.h && n < e)\n x(a.m.h),\n (a.a = 5),\n (a.m = a.wd),\n (a.$ = a.xd),\n 0 < a.s.ua && $b(a.s.vb, a.s.Wa);\n else if (l.h) break a;\n else null != g && g(a, h > f ? f : h), (a.a = 0), (a.$ = n - c);\n return 1;\n }\n a.a = 3;\n return 0;\n }\n function Ac(a) {\n x(null != a);\n a.vc = null;\n a.yc = null;\n a.Ya = null;\n var b = a.Wa;\n null != b && (b.X = null);\n a.vb = null;\n x(null != a);\n }\n function Bc() {\n var a = new je();\n if (null == a) return null;\n a.a = 0;\n a.xb = Cc;\n gb(\"Predictor\", \"VP8LPredictors\");\n gb(\"Predictor\", \"VP8LPredictors_C\");\n gb(\"PredictorAdd\", \"VP8LPredictorsAdd\");\n gb(\"PredictorAdd\", \"VP8LPredictorsAdd_C\");\n pc = Kd;\n Fb = Ld;\n sc = Md;\n Gb = Nd;\n Hb = Od;\n xc = Pd;\n uc = Qd;\n self.VP8LMapColor32b = ke;\n self.VP8LMapColor8b = le;\n return a;\n }\n function rb(a, b, c, d, e) {\n var f = 1,\n g = [a],\n h = [b],\n k = d.m,\n l = d.s,\n m = null,\n n = 0;\n a: for (;;) {\n if (c)\n for (; f && D(k, 1); ) {\n var r = g,\n q = h,\n t = d,\n v = 1,\n p = t.m,\n u = t.gc[t.ab],\n w = D(p, 2);\n if (t.Oc & (1 << w)) f = 0;\n else {\n t.Oc |= 1 << w;\n u.hc = w;\n u.Ea = r[0];\n u.nc = q[0];\n u.K = [null];\n ++t.ab;\n x(4 >= t.ab);\n switch (w) {\n case 0:\n case 1:\n u.b = D(p, 3) + 2;\n v = rb(xa(u.Ea, u.b), xa(u.nc, u.b), 0, t, u.K);\n u.K = u.K[0];\n break;\n case 3:\n var y = D(p, 8) + 1,\n A = 16 < y ? 0 : 4 < y ? 1 : 2 < y ? 2 : 3;\n r[0] = xa(u.Ea, A);\n u.b = A;\n var v = rb(y, 1, 0, t, u.K),\n E;\n if ((E = v)) {\n var B,\n C = y,\n N = u,\n z = 1 << (8 >> N.b),\n Q = V(z);\n if (null == Q) E = 0;\n else {\n var S = N.K[0],\n K = N.w;\n Q[0] = N.K[0][0];\n for (B = 1; B < 1 * C; ++B) Q[B] = yb(S[K + B], Q[B - 1]);\n for (; B < 4 * z; ++B) Q[B] = 0;\n N.K[0] = null;\n N.K[0] = Q;\n E = 1;\n }\n }\n v = E;\n break;\n case 2:\n break;\n default:\n x(0);\n }\n f = v;\n }\n }\n g = g[0];\n h = h[0];\n if (f && D(k, 1) && ((n = D(k, 4)), (f = 1 <= n && 11 >= n), !f)) {\n d.a = 3;\n break a;\n }\n var H;\n if ((H = f))\n b: {\n var F = d,\n G = g,\n L = h,\n J = n,\n T = c,\n Da,\n ba,\n X = F.m,\n R = F.s,\n P = [null],\n U,\n W = 1,\n aa = 0,\n na = me[J];\n c: for (;;) {\n if (T && D(X, 1)) {\n var ca = D(X, 3) + 2,\n ga = xa(G, ca),\n ka = xa(L, ca),\n qa = ga * ka;\n if (!rb(ga, ka, 0, F, P)) break c;\n P = P[0];\n R.xc = ca;\n for (Da = 0; Da < qa; ++Da) {\n var ia = (P[Da] >> 8) & 65535;\n P[Da] = ia;\n ia >= W && (W = ia + 1);\n }\n }\n if (X.h) break c;\n for (ba = 0; 5 > ba; ++ba) {\n var Y = Dc[ba];\n !ba && 0 < J && (Y += 1 << J);\n aa < Y && (aa = Y);\n }\n var ma = wa(W * na, O);\n var ua = W,\n va = wa(ua, Ub);\n if (null == va) var la = null;\n else x(65536 >= ua), (la = va);\n var ha = V(aa);\n if (null == la || null == ha || null == ma) {\n F.a = 1;\n break c;\n }\n var pa = ma;\n for (Da = U = 0; Da < W; ++Da) {\n var ja = la[Da],\n da = ja.G,\n ea = ja.H,\n Fa = 0,\n ra = 1,\n Ha = 0;\n for (ba = 0; 5 > ba; ++ba) {\n Y = Dc[ba];\n da[ba] = pa;\n ea[ba] = U;\n !ba && 0 < J && (Y += 1 << J);\n d: {\n var sa,\n za = Y,\n ta = F,\n oa = ha,\n db = pa,\n eb = U,\n Ia = 0,\n Ka = ta.m,\n fb = D(Ka, 1);\n M(oa, 0, 0, za);\n if (fb) {\n var gb = D(Ka, 1) + 1,\n hb = D(Ka, 1),\n Ja = D(Ka, 0 == hb ? 1 : 8);\n oa[Ja] = 1;\n 2 == gb && ((Ja = D(Ka, 8)), (oa[Ja] = 1));\n var ya = 1;\n } else {\n var Ua = V(19),\n Va = D(Ka, 4) + 4;\n if (19 < Va) {\n ta.a = 3;\n var Aa = 0;\n break d;\n }\n for (sa = 0; sa < Va; ++sa) Ua[ne[sa]] = D(Ka, 3);\n var Ba = void 0,\n sb = void 0,\n Wa = ta,\n ib = Ua,\n Ca = za,\n Xa = oa,\n Oa = 0,\n La = Wa.m,\n Ya = 8,\n Za = wa(128, O);\n e: for (;;) {\n if (!Z(Za, 0, 7, ib, 19)) break e;\n if (D(La, 1)) {\n var kb = 2 + 2 * D(La, 3),\n Ba = 2 + D(La, kb);\n if (Ba > Ca) break e;\n } else Ba = Ca;\n for (sb = 0; sb < Ca && Ba--; ) {\n Sa(La);\n var $a = Za[0 + (pb(La) & 127)];\n qb(La, La.u + $a.g);\n var jb = $a.value;\n if (16 > jb) (Xa[sb++] = jb), 0 != jb && (Ya = jb);\n else {\n var lb = 16 == jb,\n ab = jb - 16,\n mb = oe[ab],\n bb = D(La, pe[ab]) + mb;\n if (sb + bb > Ca) break e;\n else\n for (var nb = lb ? Ya : 0; 0 < bb--; )\n Xa[sb++] = nb;\n }\n }\n Oa = 1;\n break e;\n }\n Oa || (Wa.a = 3);\n ya = Oa;\n }\n (ya = ya && !Ka.h) && (Ia = Z(db, eb, 8, oa, za));\n ya && 0 != Ia ? (Aa = Ia) : ((ta.a = 3), (Aa = 0));\n }\n if (0 == Aa) break c;\n ra && 1 == qe[ba] && (ra = 0 == pa[U].g);\n Fa += pa[U].g;\n U += Aa;\n if (3 >= ba) {\n var Pa = ha[0],\n tb;\n for (tb = 1; tb < Y; ++tb) ha[tb] > Pa && (Pa = ha[tb]);\n Ha += Pa;\n }\n }\n ja.nd = ra;\n ja.Qb = 0;\n ra &&\n ((ja.qb =\n ((da[3][ea[3] + 0].value << 24) |\n (da[1][ea[1] + 0].value << 16) |\n da[2][ea[2] + 0].value) >>>\n 0),\n 0 == Fa &&\n 256 > da[0][ea[0] + 0].value &&\n ((ja.Qb = 1), (ja.qb += da[0][ea[0] + 0].value << 8)));\n ja.jc = !ja.Qb && 6 > Ha;\n if (ja.jc) {\n var Ga,\n Ea = ja;\n for (Ga = 0; Ga < xb; ++Ga) {\n var Ma = Ga,\n Na = Ea.pd[Ma],\n vb = Ea.G[0][Ea.H[0] + Ma];\n 256 <= vb.value\n ? ((Na.g = vb.g + 256), (Na.value = vb.value))\n : ((Na.g = 0),\n (Na.value = 0),\n (Ma >>= ub(vb, 8, Na)),\n (Ma >>= ub(Ea.G[1][Ea.H[1] + Ma], 16, Na)),\n (Ma >>= ub(Ea.G[2][Ea.H[2] + Ma], 0, Na)),\n ub(Ea.G[3][Ea.H[3] + Ma], 24, Na));\n }\n }\n }\n R.vc = P;\n R.Wb = W;\n R.Ya = la;\n R.yc = ma;\n H = 1;\n break b;\n }\n H = 0;\n }\n f = H;\n if (!f) {\n d.a = 3;\n break a;\n }\n if (0 < n) {\n if (((l.ua = 1 << n), !Zb(l.Wa, n))) {\n d.a = 1;\n f = 0;\n break a;\n }\n } else l.ua = 0;\n var Qa = d,\n cb = g,\n ob = h,\n Ra = Qa.s,\n Ta = Ra.xc;\n Qa.c = cb;\n Qa.i = ob;\n Ra.md = xa(cb, Ta);\n Ra.wc = 0 == Ta ? -1 : (1 << Ta) - 1;\n if (c) {\n d.xb = re;\n break a;\n }\n m = V(g * h);\n if (null == m) {\n d.a = 1;\n f = 0;\n break a;\n }\n f = (f = Jb(d, m, 0, g, h, h, null)) && !k.h;\n break a;\n }\n f\n ? (null != e ? (e[0] = m) : (x(null == m), x(c)), (d.$ = 0), c || Ac(l))\n : Ac(l);\n return f;\n }\n function Ec(a, b) {\n var c = a.c * a.i,\n d = c + b + 16 * b;\n x(a.c <= b);\n a.V = V(d);\n if (null == a.V) return (a.Ta = null), (a.Ua = 0), (a.a = 1), 0;\n a.Ta = a.V;\n a.Ua = a.Ba + c + b;\n return 1;\n }\n function se(a, b) {\n var c = a.C,\n d = b - c,\n e = a.V,\n f = a.Ba + a.c * c;\n for (x(b <= a.l.o); 0 < d; ) {\n var g = 16 < d ? 16 : d,\n h = a.l.ma,\n k = a.l.width,\n l = k * g,\n m = h.ca,\n n = h.tb + k * c,\n r = a.Ta,\n q = a.Ua;\n oc(a, g, e, f);\n Fc(r, q, m, n, l);\n zc(h, c, c + g, m, n, k);\n d -= g;\n e += g * a.c;\n c += g;\n }\n x(c == b);\n a.C = a.Ma = b;\n }\n function te(a, b) {\n var c = [0],\n d = [0],\n e = [0];\n a: for (;;) {\n if (null == a) return 0;\n if (null == b) return (a.a = 2), 0;\n a.l = b;\n a.a = 0;\n cb(a.m, b.data, b.w, b.ha);\n if (!mc(a.m, c, d, e)) {\n a.a = 3;\n break a;\n }\n a.xb = Cc;\n b.width = c[0];\n b.height = d[0];\n if (!rb(c[0], d[0], 1, a, null)) break a;\n return 1;\n }\n x(0 != a.a);\n return 0;\n }\n function ue() {\n this.ub = this.yd = this.td = this.Rb = 0;\n }\n function ve() {\n this.Kd = this.Ld = this.Ud = this.Td = this.i = this.c = 0;\n }\n function we() {\n this.Fb = this.Bb = this.Cb = 0;\n this.Zb = V(4);\n this.Lb = V(4);\n }\n function Gc() {\n this.Yb = wb();\n }\n function xe() {\n this.jb = V(3);\n this.Wc = Ed([4, 8], Gc);\n this.Xc = Ed([4, 17], Gc);\n }\n function ye() {\n this.Pc = this.wb = this.Tb = this.zd = 0;\n this.vd = new V(4);\n this.od = new V(4);\n }\n function Xa() {\n this.ld = this.La = this.dd = this.tc = 0;\n }\n function Hc() {\n this.Na = this.la = 0;\n }\n function ze() {\n this.Sc = [0, 0];\n this.Eb = [0, 0];\n this.Qc = [0, 0];\n this.ia = this.lc = 0;\n }\n function Kb() {\n this.ad = V(384);\n this.Za = 0;\n this.Ob = V(16);\n this.$b = this.Ad = this.ia = this.Gc = this.Hc = this.Dd = 0;\n }\n function Ae() {\n this.uc = this.M = this.Nb = 0;\n this.wa = Array(new Xa());\n this.Y = 0;\n this.ya = Array(new Kb());\n this.aa = 0;\n this.l = new Oa();\n }\n function Ic() {\n this.y = V(16);\n this.f = V(8);\n this.ea = V(8);\n }\n function Be() {\n this.cb = this.a = 0;\n this.sc = \"\";\n this.m = new Wb();\n this.Od = new ue();\n this.Kc = new ve();\n this.ed = new ye();\n this.Qa = new we();\n this.Ic = this.$c = this.Aa = 0;\n this.D = new Ae();\n this.Xb = this.Va = this.Hb = this.zb = this.yb = this.Ub = this.za = 0;\n this.Jc = wa(8, Wb);\n this.ia = 0;\n new F();\n this.pb = wa(4, ze);\n this.Pa = new xe();\n this.Bd = this.kc = 0;\n this.Ac = [];\n this.Bc = 0;\n this.zc = [0, 0, 0, 0];\n this.Gd = Array(new Ic());\n this.Hd = 0;\n this.rb = Array(new Hc());\n this.sb = 0;\n this.wa = Array(new Xa());\n this.Y = 0;\n this.oc = [];\n this.pc = 0;\n this.sa = [];\n this.ta = 0;\n this.qa = [];\n this.ra = 0;\n this.Ha = [];\n this.B = this.R = this.Ia = 0;\n this.Ec = [];\n this.M = this.ja = this.Vb = this.Fc = 0;\n this.ya = Array(new Kb());\n this.L = this.aa = 0;\n this.gd = Ed([4, 2], Xa);\n this.ga = null;\n this.Fa = [];\n this.Cc = this.qc = this.P = 0;\n this.Gb = [];\n this.Uc = 0;\n this.mb = [];\n this.nb = 0;\n this.rc = [];\n this.Ga = this.Vc = 0;\n }\n function ga(a, b) {\n return 0 > a ? 0 : a > b ? b : a;\n }\n function Oa() {\n this.T = this.U = this.ka = this.height = this.width = 0;\n this.y = [];\n this.f = [];\n this.ea = [];\n this.Rc = this.fa = this.W = this.N = this.O = 0;\n this.ma = \"void\";\n this.put = \"VP8IoPutHook\";\n this.ac = \"VP8IoSetupHook\";\n this.bc = \"VP8IoTeardownHook\";\n this.ha = this.Kb = 0;\n this.data = [];\n this.hb = this.ib = this.da = this.o = this.j = this.va = this.v = this.Da = this.ob = this.w = 0;\n this.F = [];\n this.J = 0;\n }\n function Ce() {\n var a = new Be();\n null != a &&\n ((a.a = 0), (a.sc = \"OK\"), (a.cb = 0), (a.Xb = 0), oa || (oa = De));\n return a;\n }\n function T(a, b, c) {\n 0 == a.a && ((a.a = b), (a.sc = c), (a.cb = 0));\n return 0;\n }\n function Jc(a, b, c) {\n return 3 <= c && 157 == a[b + 0] && 1 == a[b + 1] && 42 == a[b + 2];\n }\n function Kc(a, b) {\n if (null == a) return 0;\n a.a = 0;\n a.sc = \"OK\";\n if (null == b) return T(a, 2, \"null VP8Io passed to VP8GetHeaders()\");\n var c = b.data;\n var d = b.w;\n var e = b.ha;\n if (4 > e) return T(a, 7, \"Truncated header.\");\n var f = c[d + 0] | (c[d + 1] << 8) | (c[d + 2] << 16);\n var g = a.Od;\n g.Rb = !(f & 1);\n g.td = (f >> 1) & 7;\n g.yd = (f >> 4) & 1;\n g.ub = f >> 5;\n if (3 < g.td) return T(a, 3, \"Incorrect keyframe parameters.\");\n if (!g.yd) return T(a, 4, \"Frame not displayable.\");\n d += 3;\n e -= 3;\n var h = a.Kc;\n if (g.Rb) {\n if (7 > e) return T(a, 7, \"cannot parse picture header\");\n if (!Jc(c, d, e)) return T(a, 3, \"Bad code word\");\n h.c = ((c[d + 4] << 8) | c[d + 3]) & 16383;\n h.Td = c[d + 4] >> 6;\n h.i = ((c[d + 6] << 8) | c[d + 5]) & 16383;\n h.Ud = c[d + 6] >> 6;\n d += 7;\n e -= 7;\n a.za = (h.c + 15) >> 4;\n a.Ub = (h.i + 15) >> 4;\n b.width = h.c;\n b.height = h.i;\n b.Da = 0;\n b.j = 0;\n b.v = 0;\n b.va = b.width;\n b.o = b.height;\n b.da = 0;\n b.ib = b.width;\n b.hb = b.height;\n b.U = b.width;\n b.T = b.height;\n f = a.Pa;\n M(f.jb, 0, 255, f.jb.length);\n f = a.Qa;\n x(null != f);\n f.Cb = 0;\n f.Bb = 0;\n f.Fb = 1;\n M(f.Zb, 0, 0, f.Zb.length);\n M(f.Lb, 0, 0, f.Lb);\n }\n if (g.ub > e) return T(a, 7, \"bad partition length\");\n f = a.m;\n ma(f, c, d, g.ub);\n d += g.ub;\n e -= g.ub;\n g.Rb && ((h.Ld = G(f)), (h.Kd = G(f)));\n h = a.Qa;\n var k = a.Pa,\n l;\n x(null != f);\n x(null != h);\n h.Cb = G(f);\n if (h.Cb) {\n h.Bb = G(f);\n if (G(f)) {\n h.Fb = G(f);\n for (l = 0; 4 > l; ++l) h.Zb[l] = G(f) ? ca(f, 7) : 0;\n for (l = 0; 4 > l; ++l) h.Lb[l] = G(f) ? ca(f, 6) : 0;\n }\n if (h.Bb) for (l = 0; 3 > l; ++l) k.jb[l] = G(f) ? na(f, 8) : 255;\n } else h.Bb = 0;\n if (f.Ka) return T(a, 3, \"cannot parse segment header\");\n h = a.ed;\n h.zd = G(f);\n h.Tb = na(f, 6);\n h.wb = na(f, 3);\n h.Pc = G(f);\n if (h.Pc && G(f)) {\n for (k = 0; 4 > k; ++k) G(f) && (h.vd[k] = ca(f, 6));\n for (k = 0; 4 > k; ++k) G(f) && (h.od[k] = ca(f, 6));\n }\n a.L = 0 == h.Tb ? 0 : h.zd ? 1 : 2;\n if (f.Ka) return T(a, 3, \"cannot parse filter header\");\n l = d;\n var m = e;\n e = l;\n d = l + m;\n h = m;\n a.Xb = (1 << na(a.m, 2)) - 1;\n k = a.Xb;\n if (m < 3 * k) c = 7;\n else {\n l += 3 * k;\n h -= 3 * k;\n for (m = 0; m < k; ++m) {\n var n = c[e + 0] | (c[e + 1] << 8) | (c[e + 2] << 16);\n n > h && (n = h);\n ma(a.Jc[+m], c, l, n);\n l += n;\n h -= n;\n e += 3;\n }\n ma(a.Jc[+k], c, l, h);\n c = l < d ? 0 : 5;\n }\n if (0 != c) return T(a, c, \"cannot parse partitions\");\n l = a.m;\n c = na(l, 7);\n e = G(l) ? ca(l, 4) : 0;\n d = G(l) ? ca(l, 4) : 0;\n h = G(l) ? ca(l, 4) : 0;\n k = G(l) ? ca(l, 4) : 0;\n l = G(l) ? ca(l, 4) : 0;\n m = a.Qa;\n for (n = 0; 4 > n; ++n) {\n if (m.Cb) {\n var r = m.Zb[n];\n m.Fb || (r += c);\n } else if (0 < n) {\n a.pb[n] = a.pb[0];\n continue;\n } else r = c;\n var q = a.pb[n];\n q.Sc[0] = Lb[ga(r + e, 127)];\n q.Sc[1] = Mb[ga(r + 0, 127)];\n q.Eb[0] = 2 * Lb[ga(r + d, 127)];\n q.Eb[1] = (101581 * Mb[ga(r + h, 127)]) >> 16;\n 8 > q.Eb[1] && (q.Eb[1] = 8);\n q.Qc[0] = Lb[ga(r + k, 117)];\n q.Qc[1] = Mb[ga(r + l, 127)];\n q.lc = r + l;\n }\n if (!g.Rb) return T(a, 4, \"Not a key frame.\");\n G(f);\n g = a.Pa;\n for (c = 0; 4 > c; ++c) {\n for (e = 0; 8 > e; ++e)\n for (d = 0; 3 > d; ++d)\n for (h = 0; 11 > h; ++h)\n (k = K(f, Ee[c][e][d][h]) ? na(f, 8) : Fe[c][e][d][h]),\n (g.Wc[c][e].Yb[d][h] = k);\n for (e = 0; 17 > e; ++e) g.Xc[c][e] = g.Wc[c][Ge[e]];\n }\n a.kc = G(f);\n a.kc && (a.Bd = na(f, 8));\n return (a.cb = 1);\n }\n function De(a, b, c, d, e, f, g) {\n var h = b[e].Yb[c];\n for (c = 0; 16 > e; ++e) {\n if (!K(a, h[c + 0])) return e;\n for (; !K(a, h[c + 1]); )\n if (((h = b[++e].Yb[0]), (c = 0), 16 == e)) return 16;\n var k = b[e + 1].Yb;\n if (K(a, h[c + 2])) {\n var l = a,\n m = h,\n n = c;\n var r = 0;\n if (K(l, m[n + 3]))\n if (K(l, m[n + 6])) {\n h = 0;\n r = K(l, m[n + 8]);\n m = K(l, m[n + 9 + r]);\n n = 2 * r + m;\n r = 0;\n for (m = He[n]; m[h]; ++h) r += r + K(l, m[h]);\n r += 3 + (8 << n);\n } else\n K(l, m[n + 7])\n ? ((r = 7 + 2 * K(l, 165)), (r += K(l, 145)))\n : (r = 5 + K(l, 159));\n else K(l, m[n + 4]) ? (r = 3 + K(l, m[n + 5])) : (r = 2);\n h = k[2];\n } else (r = 1), (h = k[1]);\n k = g + Ie[e];\n l = a;\n 0 > l.b && Qa(l);\n var m = l.b,\n n = l.Ca >> 1,\n q = (n - (l.I >> m)) >> 31;\n --l.b;\n l.Ca += q;\n l.Ca |= 1;\n l.I -= ((n + 1) & q) << m;\n f[k] = ((r ^ q) - q) * d[(0 < e) + 0];\n }\n return 16;\n }\n function Lc(a) {\n var b = a.rb[a.sb - 1];\n b.la = 0;\n b.Na = 0;\n M(a.zc, 0, 0, a.zc.length);\n a.ja = 0;\n }\n function Je(a, b) {\n for (a.M = 0; a.M < a.Va; ++a.M) {\n var c = a.Jc[a.M & a.Xb],\n d = a.m,\n e = a,\n f;\n for (f = 0; f < e.za; ++f) {\n var g = d;\n var h = e;\n var k = h.Ac,\n l = h.Bc + 4 * f,\n m = h.zc,\n n = h.ya[h.aa + f];\n h.Qa.Bb\n ? (n.$b = K(g, h.Pa.jb[0])\n ? 2 + K(g, h.Pa.jb[2])\n : K(g, h.Pa.jb[1]))\n : (n.$b = 0);\n h.kc && (n.Ad = K(g, h.Bd));\n n.Za = !K(g, 145) + 0;\n if (n.Za) {\n var r = n.Ob,\n q = 0;\n for (h = 0; 4 > h; ++h) {\n var t = m[0 + h];\n var v;\n for (v = 0; 4 > v; ++v) {\n t = Ke[k[l + v]][t];\n for (var p = Mc[K(g, t[0])]; 0 < p; )\n p = Mc[2 * p + K(g, t[p])];\n t = -p;\n k[l + v] = t;\n }\n I(r, q, k, l, 4);\n q += 4;\n m[0 + h] = t;\n }\n } else\n (t = K(g, 156) ? (K(g, 128) ? 1 : 3) : K(g, 163) ? 2 : 0),\n (n.Ob[0] = t),\n M(k, l, t, 4),\n M(m, 0, t, 4);\n n.Dd = K(g, 142) ? (K(g, 114) ? (K(g, 183) ? 1 : 3) : 2) : 0;\n }\n if (e.m.Ka) return T(a, 7, \"Premature end-of-partition0 encountered.\");\n for (; a.ja < a.za; ++a.ja) {\n d = a;\n e = c;\n g = d.rb[d.sb - 1];\n k = d.rb[d.sb + d.ja];\n f = d.ya[d.aa + d.ja];\n if ((l = d.kc ? f.Ad : 0))\n (g.la = k.la = 0),\n f.Za || (g.Na = k.Na = 0),\n (f.Hc = 0),\n (f.Gc = 0),\n (f.ia = 0);\n else {\n var u,\n w,\n g = k,\n k = e,\n l = d.Pa.Xc,\n m = d.ya[d.aa + d.ja],\n n = d.pb[m.$b];\n h = m.ad;\n r = 0;\n q = d.rb[d.sb - 1];\n t = v = 0;\n M(h, r, 0, 384);\n if (m.Za) {\n var y = 0;\n var A = l[3];\n } else {\n p = V(16);\n var E = g.Na + q.Na;\n E = oa(k, l[1], E, n.Eb, 0, p, 0);\n g.Na = q.Na = (0 < E) + 0;\n if (1 < E) Nc(p, 0, h, r);\n else {\n var B = (p[0] + 3) >> 3;\n for (p = 0; 256 > p; p += 16) h[r + p] = B;\n }\n y = 1;\n A = l[0];\n }\n var C = g.la & 15;\n var N = q.la & 15;\n for (p = 0; 4 > p; ++p) {\n var z = N & 1;\n for (B = w = 0; 4 > B; ++B)\n (E = z + (C & 1)),\n (E = oa(k, A, E, n.Sc, y, h, r)),\n (z = E > y),\n (C = (C >> 1) | (z << 7)),\n (w = (w << 2) | (3 < E ? 3 : 1 < E ? 2 : 0 != h[r + 0])),\n (r += 16);\n C >>= 4;\n N = (N >> 1) | (z << 7);\n v = ((v << 8) | w) >>> 0;\n }\n A = C;\n y = N >> 4;\n for (u = 0; 4 > u; u += 2) {\n w = 0;\n C = g.la >> (4 + u);\n N = q.la >> (4 + u);\n for (p = 0; 2 > p; ++p) {\n z = N & 1;\n for (B = 0; 2 > B; ++B)\n (E = z + (C & 1)),\n (E = oa(k, l[2], E, n.Qc, 0, h, r)),\n (z = 0 < E),\n (C = (C >> 1) | (z << 3)),\n (w = (w << 2) | (3 < E ? 3 : 1 < E ? 2 : 0 != h[r + 0])),\n (r += 16);\n C >>= 2;\n N = (N >> 1) | (z << 5);\n }\n t |= w << (4 * u);\n A |= (C << 4) << u;\n y |= (N & 240) << u;\n }\n g.la = A;\n q.la = y;\n m.Hc = v;\n m.Gc = t;\n m.ia = t & 43690 ? 0 : n.ia;\n l = !(v | t);\n }\n 0 < d.L &&\n ((d.wa[d.Y + d.ja] = d.gd[f.$b][f.Za]),\n (d.wa[d.Y + d.ja].La |= !l));\n if (e.Ka) return T(a, 7, \"Premature end-of-file encountered.\");\n }\n Lc(a);\n c = a;\n d = b;\n e = 1;\n f = c.D;\n g = 0 < c.L && c.M >= c.zb && c.M <= c.Va;\n if (0 == c.Aa)\n a: {\n (f.M = c.M), (f.uc = g), Oc(c, f), (e = 1);\n w = c.D;\n f = w.Nb;\n t = Ya[c.L];\n g = t * c.R;\n k = (t / 2) * c.B;\n p = 16 * f * c.R;\n B = 8 * f * c.B;\n l = c.sa;\n m = c.ta - g + p;\n n = c.qa;\n h = c.ra - k + B;\n r = c.Ha;\n q = c.Ia - k + B;\n C = w.M;\n N = 0 == C;\n v = C >= c.Va - 1;\n 2 == c.Aa && Oc(c, w);\n if (w.uc)\n for (E = c, z = E.D.M, x(E.D.uc), w = E.yb; w < E.Hb; ++w) {\n var Q = E;\n y = w;\n A = z;\n var S = Q.D,\n D = S.Nb;\n u = Q.R;\n var S = S.wa[S.Y + y],\n F = Q.sa,\n H = Q.ta + 16 * D * u + 16 * y,\n J = S.dd,\n G = S.tc;\n if (0 != G)\n if ((x(3 <= G), 1 == Q.L))\n 0 < y && Pc(F, H, u, G + 4),\n S.La && Qc(F, H, u, G),\n 0 < A && Rc(F, H, u, G + 4),\n S.La && Sc(F, H, u, G);\n else {\n var L = Q.B,\n O = Q.qa,\n P = Q.ra + 8 * D * L + 8 * y,\n R = Q.Ha,\n Q = Q.Ia + 8 * D * L + 8 * y,\n D = S.ld;\n 0 < y &&\n (Tc(F, H, u, G + 4, J, D),\n Uc(O, P, R, Q, L, G + 4, J, D));\n S.La && (Vc(F, H, u, G, J, D), Wc(O, P, R, Q, L, G, J, D));\n 0 < A &&\n (Xc(F, H, u, G + 4, J, D),\n Yc(O, P, R, Q, L, G + 4, J, D));\n S.La && (Zc(F, H, u, G, J, D), $c(O, P, R, Q, L, G, J, D));\n }\n }\n c.ia && alert(\"todo:DitherRow\");\n if (null != d.put) {\n w = 16 * C;\n C = 16 * (C + 1);\n N\n ? ((d.y = c.sa),\n (d.O = c.ta + p),\n (d.f = c.qa),\n (d.N = c.ra + B),\n (d.ea = c.Ha),\n (d.W = c.Ia + B))\n : ((w -= t),\n (d.y = l),\n (d.O = m),\n (d.f = n),\n (d.N = h),\n (d.ea = r),\n (d.W = q));\n v || (C -= t);\n C > d.o && (C = d.o);\n d.F = null;\n d.J = null;\n if (\n null != c.Fa &&\n 0 < c.Fa.length &&\n w < C &&\n ((d.J = Le(c, d, w, C - w)),\n (d.F = c.mb),\n null == d.F && 0 == d.F.length)\n ) {\n e = T(c, 3, \"Could not decode alpha data.\");\n break a;\n }\n w < d.j &&\n ((t = d.j - w),\n (w = d.j),\n x(!(t & 1)),\n (d.O += c.R * t),\n (d.N += c.B * (t >> 1)),\n (d.W += c.B * (t >> 1)),\n null != d.F && (d.J += d.width * t));\n w < C &&\n ((d.O += d.v),\n (d.N += d.v >> 1),\n (d.W += d.v >> 1),\n null != d.F && (d.J += d.v),\n (d.ka = w - d.j),\n (d.U = d.va - d.v),\n (d.T = C - w),\n (e = d.put(d)));\n }\n f + 1 != c.Ic ||\n v ||\n (I(c.sa, c.ta - g, l, m + 16 * c.R, g),\n I(c.qa, c.ra - k, n, h + 8 * c.B, k),\n I(c.Ha, c.Ia - k, r, q + 8 * c.B, k));\n }\n if (!e) return T(a, 6, \"Output aborted.\");\n }\n return 1;\n }\n function Me(a, b) {\n if (null == a) return 0;\n if (null == b) return T(a, 2, \"NULL VP8Io parameter in VP8Decode().\");\n if (!a.cb && !Kc(a, b)) return 0;\n x(a.cb);\n if (null == b.ac || b.ac(b)) {\n b.ob && (a.L = 0);\n var c = Ya[a.L];\n 2 == a.L\n ? ((a.yb = 0), (a.zb = 0))\n : ((a.yb = (b.v - c) >> 4),\n (a.zb = (b.j - c) >> 4),\n 0 > a.yb && (a.yb = 0),\n 0 > a.zb && (a.zb = 0));\n a.Va = (b.o + 15 + c) >> 4;\n a.Hb = (b.va + 15 + c) >> 4;\n a.Hb > a.za && (a.Hb = a.za);\n a.Va > a.Ub && (a.Va = a.Ub);\n if (0 < a.L) {\n var d = a.ed;\n for (c = 0; 4 > c; ++c) {\n var e;\n if (a.Qa.Cb) {\n var f = a.Qa.Lb[c];\n a.Qa.Fb || (f += d.Tb);\n } else f = d.Tb;\n for (e = 0; 1 >= e; ++e) {\n var g = a.gd[c][e],\n h = f;\n d.Pc && ((h += d.vd[0]), e && (h += d.od[0]));\n h = 0 > h ? 0 : 63 < h ? 63 : h;\n if (0 < h) {\n var k = h;\n 0 < d.wb &&\n ((k = 4 < d.wb ? k >> 2 : k >> 1),\n k > 9 - d.wb && (k = 9 - d.wb));\n 1 > k && (k = 1);\n g.dd = k;\n g.tc = 2 * h + k;\n g.ld = 40 <= h ? 2 : 15 <= h ? 1 : 0;\n } else g.tc = 0;\n g.La = e;\n }\n }\n }\n c = 0;\n } else T(a, 6, \"Frame setup failed\"), (c = a.a);\n if ((c = 0 == c)) {\n if (c) {\n a.$c = 0;\n 0 < a.Aa || (a.Ic = Ne);\n b: {\n c = a.Ic;\n var k = a.za,\n d = 4 * k,\n l = 32 * k,\n m = k + 1,\n n = 0 < a.L ? k * (0 < a.Aa ? 2 : 1) : 0,\n r = (2 == a.Aa ? 2 : 1) * k;\n e = ((3 * (16 * c + Ya[a.L])) / 2) * l;\n f = null != a.Fa && 0 < a.Fa.length ? a.Kc.c * a.Kc.i : 0;\n g = d + 832 + e + f;\n if (g != g) c = 0;\n else {\n if (g > a.Vb) {\n a.Vb = 0;\n a.Ec = V(g);\n a.Fc = 0;\n if (null == a.Ec) {\n c = T(a, 1, \"no memory during frame initialization.\");\n break b;\n }\n a.Vb = g;\n }\n g = a.Ec;\n h = a.Fc;\n a.Ac = g;\n a.Bc = h;\n h += d;\n a.Gd = wa(l, Ic);\n a.Hd = 0;\n a.rb = wa(m + 1, Hc);\n a.sb = 1;\n a.wa = n ? wa(n, Xa) : null;\n a.Y = 0;\n a.D.Nb = 0;\n a.D.wa = a.wa;\n a.D.Y = a.Y;\n 0 < a.Aa && (a.D.Y += k);\n x(!0);\n a.oc = g;\n a.pc = h;\n h += 832;\n a.ya = wa(r, Kb);\n a.aa = 0;\n a.D.ya = a.ya;\n a.D.aa = a.aa;\n 2 == a.Aa && (a.D.aa += k);\n a.R = 16 * k;\n a.B = 8 * k;\n l = Ya[a.L];\n k = l * a.R;\n l = (l / 2) * a.B;\n a.sa = g;\n a.ta = h + k;\n a.qa = a.sa;\n a.ra = a.ta + 16 * c * a.R + l;\n a.Ha = a.qa;\n a.Ia = a.ra + 8 * c * a.B + l;\n a.$c = 0;\n h += e;\n a.mb = f ? g : null;\n a.nb = f ? h : null;\n x(h + f <= a.Fc + a.Vb);\n Lc(a);\n M(a.Ac, a.Bc, 0, d);\n c = 1;\n }\n }\n if (c) {\n b.ka = 0;\n b.y = a.sa;\n b.O = a.ta;\n b.f = a.qa;\n b.N = a.ra;\n b.ea = a.Ha;\n b.Vd = a.Ia;\n b.fa = a.R;\n b.Rc = a.B;\n b.F = null;\n b.J = 0;\n if (!ad) {\n for (c = -255; 255 >= c; ++c) bd[255 + c] = 0 > c ? -c : c;\n for (c = -1020; 1020 >= c; ++c)\n cd[1020 + c] = -128 > c ? -128 : 127 < c ? 127 : c;\n for (c = -112; 112 >= c; ++c)\n dd[112 + c] = -16 > c ? -16 : 15 < c ? 15 : c;\n for (c = -255; 510 >= c; ++c)\n ed[255 + c] = 0 > c ? 0 : 255 < c ? 255 : c;\n ad = 1;\n }\n Nc = Oe;\n Za = Pe;\n Nb = Qe;\n pa = Re;\n Ob = Se;\n fd = Te;\n Xc = Ue;\n Tc = Ve;\n Yc = We;\n Uc = Xe;\n Zc = Ye;\n Vc = Ze;\n $c = $e;\n Wc = af;\n Rc = gd;\n Pc = hd;\n Sc = bf;\n Qc = cf;\n W[0] = df;\n W[1] = ef;\n W[2] = ff;\n W[3] = gf;\n W[4] = hf;\n W[5] = jf;\n W[6] = kf;\n W[7] = lf;\n W[8] = mf;\n W[9] = nf;\n Y[0] = of;\n Y[1] = pf;\n Y[2] = qf;\n Y[3] = rf;\n Y[4] = sf;\n Y[5] = tf;\n Y[6] = uf;\n ka[0] = vf;\n ka[1] = wf;\n ka[2] = xf;\n ka[3] = yf;\n ka[4] = zf;\n ka[5] = Af;\n ka[6] = Bf;\n c = 1;\n } else c = 0;\n }\n c && (c = Je(a, b));\n null != b.bc && b.bc(b);\n c &= 1;\n }\n if (!c) return 0;\n a.cb = 0;\n return c;\n }\n function qa(a, b, c, d, e) {\n e = a[b + c + 32 * d] + (e >> 3);\n a[b + c + 32 * d] = e & -256 ? (0 > e ? 0 : 255) : e;\n }\n function kb(a, b, c, d, e, f) {\n qa(a, b, 0, c, d + e);\n qa(a, b, 1, c, d + f);\n qa(a, b, 2, c, d - f);\n qa(a, b, 3, c, d - e);\n }\n function da(a) {\n return ((20091 * a) >> 16) + a;\n }\n function id(a, b, c, d) {\n var e = 0,\n f;\n var g = V(16);\n for (f = 0; 4 > f; ++f) {\n var h = a[b + 0] + a[b + 8];\n var k = a[b + 0] - a[b + 8];\n var l = ((35468 * a[b + 4]) >> 16) - da(a[b + 12]);\n var m = da(a[b + 4]) + ((35468 * a[b + 12]) >> 16);\n g[e + 0] = h + m;\n g[e + 1] = k + l;\n g[e + 2] = k - l;\n g[e + 3] = h - m;\n e += 4;\n b++;\n }\n for (f = e = 0; 4 > f; ++f)\n (a = g[e + 0] + 4),\n (h = a + g[e + 8]),\n (k = a - g[e + 8]),\n (l = ((35468 * g[e + 4]) >> 16) - da(g[e + 12])),\n (m = da(g[e + 4]) + ((35468 * g[e + 12]) >> 16)),\n qa(c, d, 0, 0, h + m),\n qa(c, d, 1, 0, k + l),\n qa(c, d, 2, 0, k - l),\n qa(c, d, 3, 0, h - m),\n e++,\n (d += 32);\n }\n function Te(a, b, c, d) {\n var e = a[b + 0] + 4,\n f = (35468 * a[b + 4]) >> 16,\n g = da(a[b + 4]),\n h = (35468 * a[b + 1]) >> 16;\n a = da(a[b + 1]);\n kb(c, d, 0, e + g, a, h);\n kb(c, d, 1, e + f, a, h);\n kb(c, d, 2, e - f, a, h);\n kb(c, d, 3, e - g, a, h);\n }\n function Pe(a, b, c, d, e) {\n id(a, b, c, d);\n e && id(a, b + 16, c, d + 4);\n }\n function Qe(a, b, c, d) {\n Za(a, b + 0, c, d, 1);\n Za(a, b + 32, c, d + 128, 1);\n }\n function Re(a, b, c, d) {\n a = a[b + 0] + 4;\n var e;\n for (e = 0; 4 > e; ++e) for (b = 0; 4 > b; ++b) qa(c, d, b, e, a);\n }\n function Se(a, b, c, d) {\n a[b + 0] && pa(a, b + 0, c, d);\n a[b + 16] && pa(a, b + 16, c, d + 4);\n a[b + 32] && pa(a, b + 32, c, d + 128);\n a[b + 48] && pa(a, b + 48, c, d + 128 + 4);\n }\n function Oe(a, b, c, d) {\n var e = V(16),\n f;\n for (f = 0; 4 > f; ++f) {\n var g = a[b + 0 + f] + a[b + 12 + f];\n var h = a[b + 4 + f] + a[b + 8 + f];\n var k = a[b + 4 + f] - a[b + 8 + f];\n var l = a[b + 0 + f] - a[b + 12 + f];\n e[0 + f] = g + h;\n e[8 + f] = g - h;\n e[4 + f] = l + k;\n e[12 + f] = l - k;\n }\n for (f = 0; 4 > f; ++f)\n (a = e[0 + 4 * f] + 3),\n (g = a + e[3 + 4 * f]),\n (h = e[1 + 4 * f] + e[2 + 4 * f]),\n (k = e[1 + 4 * f] - e[2 + 4 * f]),\n (l = a - e[3 + 4 * f]),\n (c[d + 0] = (g + h) >> 3),\n (c[d + 16] = (l + k) >> 3),\n (c[d + 32] = (g - h) >> 3),\n (c[d + 48] = (l - k) >> 3),\n (d += 64);\n }\n function Pb(a, b, c) {\n var d = b - 32,\n e = R,\n f = 255 - a[d - 1],\n g;\n for (g = 0; g < c; ++g) {\n var h = e,\n k = f + a[b - 1],\n l;\n for (l = 0; l < c; ++l) a[b + l] = h[k + a[d + l]];\n b += 32;\n }\n }\n function ef(a, b) {\n Pb(a, b, 4);\n }\n function wf(a, b) {\n Pb(a, b, 8);\n }\n function pf(a, b) {\n Pb(a, b, 16);\n }\n function qf(a, b) {\n var c;\n for (c = 0; 16 > c; ++c) I(a, b + 32 * c, a, b - 32, 16);\n }\n function rf(a, b) {\n var c;\n for (c = 16; 0 < c; --c) M(a, b, a[b - 1], 16), (b += 32);\n }\n function $a(a, b, c) {\n var d;\n for (d = 0; 16 > d; ++d) M(b, c + 32 * d, a, 16);\n }\n function of(a, b) {\n var c = 16,\n d;\n for (d = 0; 16 > d; ++d) c += a[b - 1 + 32 * d] + a[b + d - 32];\n $a(c >> 5, a, b);\n }\n function sf(a, b) {\n var c = 8,\n d;\n for (d = 0; 16 > d; ++d) c += a[b - 1 + 32 * d];\n $a(c >> 4, a, b);\n }\n function tf(a, b) {\n var c = 8,\n d;\n for (d = 0; 16 > d; ++d) c += a[b + d - 32];\n $a(c >> 4, a, b);\n }\n function uf(a, b) {\n $a(128, a, b);\n }\n function z(a, b, c) {\n return (a + 2 * b + c + 2) >> 2;\n }\n function ff(a, b) {\n var c = b - 32,\n c = new Uint8Array([\n z(a[c - 1], a[c + 0], a[c + 1]),\n z(a[c + 0], a[c + 1], a[c + 2]),\n z(a[c + 1], a[c + 2], a[c + 3]),\n z(a[c + 2], a[c + 3], a[c + 4])\n ]),\n d;\n for (d = 0; 4 > d; ++d) I(a, b + 32 * d, c, 0, c.length);\n }\n function gf(a, b) {\n var c = a[b - 1],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 + 96];\n ra(a, b + 0, 16843009 * z(a[b - 1 - 32], c, d));\n ra(a, b + 32, 16843009 * z(c, d, e));\n ra(a, b + 64, 16843009 * z(d, e, f));\n ra(a, b + 96, 16843009 * z(e, f, f));\n }\n function df(a, b) {\n var c = 4,\n d;\n for (d = 0; 4 > d; ++d) c += a[b + d - 32] + a[b - 1 + 32 * d];\n c >>= 3;\n for (d = 0; 4 > d; ++d) M(a, b + 32 * d, c, 4);\n }\n function hf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 - 32],\n g = a[b + 0 - 32],\n h = a[b + 1 - 32],\n k = a[b + 2 - 32],\n l = a[b + 3 - 32];\n a[b + 0 + 96] = z(d, e, a[b - 1 + 96]);\n a[b + 1 + 96] = a[b + 0 + 64] = z(c, d, e);\n a[b + 2 + 96] = a[b + 1 + 64] = a[b + 0 + 32] = z(f, c, d);\n a[b + 3 + 96] = a[b + 2 + 64] = a[b + 1 + 32] = a[b + 0 + 0] = z(g, f, c);\n a[b + 3 + 64] = a[b + 2 + 32] = a[b + 1 + 0] = z(h, g, f);\n a[b + 3 + 32] = a[b + 2 + 0] = z(k, h, g);\n a[b + 3 + 0] = z(l, k, h);\n }\n function kf(a, b) {\n var c = a[b + 1 - 32],\n d = a[b + 2 - 32],\n e = a[b + 3 - 32],\n f = a[b + 4 - 32],\n g = a[b + 5 - 32],\n h = a[b + 6 - 32],\n k = a[b + 7 - 32];\n a[b + 0 + 0] = z(a[b + 0 - 32], c, d);\n a[b + 1 + 0] = a[b + 0 + 32] = z(c, d, e);\n a[b + 2 + 0] = a[b + 1 + 32] = a[b + 0 + 64] = z(d, e, f);\n a[b + 3 + 0] = a[b + 2 + 32] = a[b + 1 + 64] = a[b + 0 + 96] = z(e, f, g);\n a[b + 3 + 32] = a[b + 2 + 64] = a[b + 1 + 96] = z(f, g, h);\n a[b + 3 + 64] = a[b + 2 + 96] = z(g, h, k);\n a[b + 3 + 96] = z(h, k, k);\n }\n function jf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 - 32],\n g = a[b + 0 - 32],\n h = a[b + 1 - 32],\n k = a[b + 2 - 32],\n l = a[b + 3 - 32];\n a[b + 0 + 0] = a[b + 1 + 64] = (f + g + 1) >> 1;\n a[b + 1 + 0] = a[b + 2 + 64] = (g + h + 1) >> 1;\n a[b + 2 + 0] = a[b + 3 + 64] = (h + k + 1) >> 1;\n a[b + 3 + 0] = (k + l + 1) >> 1;\n a[b + 0 + 96] = z(e, d, c);\n a[b + 0 + 64] = z(d, c, f);\n a[b + 0 + 32] = a[b + 1 + 96] = z(c, f, g);\n a[b + 1 + 32] = a[b + 2 + 96] = z(f, g, h);\n a[b + 2 + 32] = a[b + 3 + 96] = z(g, h, k);\n a[b + 3 + 32] = z(h, k, l);\n }\n function lf(a, b) {\n var c = a[b + 0 - 32],\n d = a[b + 1 - 32],\n e = a[b + 2 - 32],\n f = a[b + 3 - 32],\n g = a[b + 4 - 32],\n h = a[b + 5 - 32],\n k = a[b + 6 - 32],\n l = a[b + 7 - 32];\n a[b + 0 + 0] = (c + d + 1) >> 1;\n a[b + 1 + 0] = a[b + 0 + 64] = (d + e + 1) >> 1;\n a[b + 2 + 0] = a[b + 1 + 64] = (e + f + 1) >> 1;\n a[b + 3 + 0] = a[b + 2 + 64] = (f + g + 1) >> 1;\n a[b + 0 + 32] = z(c, d, e);\n a[b + 1 + 32] = a[b + 0 + 96] = z(d, e, f);\n a[b + 2 + 32] = a[b + 1 + 96] = z(e, f, g);\n a[b + 3 + 32] = a[b + 2 + 96] = z(f, g, h);\n a[b + 3 + 64] = z(g, h, k);\n a[b + 3 + 96] = z(h, k, l);\n }\n function nf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 + 96];\n a[b + 0 + 0] = (c + d + 1) >> 1;\n a[b + 2 + 0] = a[b + 0 + 32] = (d + e + 1) >> 1;\n a[b + 2 + 32] = a[b + 0 + 64] = (e + f + 1) >> 1;\n a[b + 1 + 0] = z(c, d, e);\n a[b + 3 + 0] = a[b + 1 + 32] = z(d, e, f);\n a[b + 3 + 32] = a[b + 1 + 64] = z(e, f, f);\n a[b + 3 + 64] = a[b + 2 + 64] = a[b + 0 + 96] = a[b + 1 + 96] = a[\n b + 2 + 96\n ] = a[b + 3 + 96] = f;\n }\n function mf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 + 96],\n g = a[b - 1 - 32],\n h = a[b + 0 - 32],\n k = a[b + 1 - 32],\n l = a[b + 2 - 32];\n a[b + 0 + 0] = a[b + 2 + 32] = (c + g + 1) >> 1;\n a[b + 0 + 32] = a[b + 2 + 64] = (d + c + 1) >> 1;\n a[b + 0 + 64] = a[b + 2 + 96] = (e + d + 1) >> 1;\n a[b + 0 + 96] = (f + e + 1) >> 1;\n a[b + 3 + 0] = z(h, k, l);\n a[b + 2 + 0] = z(g, h, k);\n a[b + 1 + 0] = a[b + 3 + 32] = z(c, g, h);\n a[b + 1 + 32] = a[b + 3 + 64] = z(d, c, g);\n a[b + 1 + 64] = a[b + 3 + 96] = z(e, d, c);\n a[b + 1 + 96] = z(f, e, d);\n }\n function xf(a, b) {\n var c;\n for (c = 0; 8 > c; ++c) I(a, b + 32 * c, a, b - 32, 8);\n }\n function yf(a, b) {\n var c;\n for (c = 0; 8 > c; ++c) M(a, b, a[b - 1], 8), (b += 32);\n }\n function lb(a, b, c) {\n var d;\n for (d = 0; 8 > d; ++d) M(b, c + 32 * d, a, 8);\n }\n function vf(a, b) {\n var c = 8,\n d;\n for (d = 0; 8 > d; ++d) c += a[b + d - 32] + a[b - 1 + 32 * d];\n lb(c >> 4, a, b);\n }\n function Af(a, b) {\n var c = 4,\n d;\n for (d = 0; 8 > d; ++d) c += a[b + d - 32];\n lb(c >> 3, a, b);\n }\n function zf(a, b) {\n var c = 4,\n d;\n for (d = 0; 8 > d; ++d) c += a[b - 1 + 32 * d];\n lb(c >> 3, a, b);\n }\n function Bf(a, b) {\n lb(128, a, b);\n }\n function ab(a, b, c) {\n var d = a[b - c],\n e = a[b + 0],\n f = 3 * (e - d) + Qb[1020 + a[b - 2 * c] - a[b + c]],\n g = mb[112 + ((f + 4) >> 3)];\n a[b - c] = R[255 + d + mb[112 + ((f + 3) >> 3)]];\n a[b + 0] = R[255 + e - g];\n }\n function jd(a, b, c, d) {\n var e = a[b + 0],\n f = a[b + c];\n return U[255 + a[b - 2 * c] - a[b - c]] > d || U[255 + f - e] > d;\n }\n function kd(a, b, c, d) {\n return (\n 4 * U[255 + a[b - c] - a[b + 0]] + U[255 + a[b - 2 * c] - a[b + c]] <= d\n );\n }\n function ld(a, b, c, d, e) {\n var f = a[b - 3 * c],\n g = a[b - 2 * c],\n h = a[b - c],\n k = a[b + 0],\n l = a[b + c],\n m = a[b + 2 * c],\n n = a[b + 3 * c];\n return 4 * U[255 + h - k] + U[255 + g - l] > d\n ? 0\n : U[255 + a[b - 4 * c] - f] <= e &&\n U[255 + f - g] <= e &&\n U[255 + g - h] <= e &&\n U[255 + n - m] <= e &&\n U[255 + m - l] <= e &&\n U[255 + l - k] <= e;\n }\n function gd(a, b, c, d) {\n var e = 2 * d + 1;\n for (d = 0; 16 > d; ++d) kd(a, b + d, c, e) && ab(a, b + d, c);\n }\n function hd(a, b, c, d) {\n var e = 2 * d + 1;\n for (d = 0; 16 > d; ++d) kd(a, b + d * c, 1, e) && ab(a, b + d * c, 1);\n }\n function bf(a, b, c, d) {\n var e;\n for (e = 3; 0 < e; --e) (b += 4 * c), gd(a, b, c, d);\n }\n function cf(a, b, c, d) {\n var e;\n for (e = 3; 0 < e; --e) (b += 4), hd(a, b, c, d);\n }\n function ea(a, b, c, d, e, f, g, h) {\n for (f = 2 * f + 1; 0 < e--; ) {\n if (ld(a, b, c, f, g))\n if (jd(a, b, c, h)) ab(a, b, c);\n else {\n var k = a,\n l = b,\n m = c,\n n = k[l - 2 * m],\n r = k[l - m],\n q = k[l + 0],\n t = k[l + m],\n v = k[l + 2 * m],\n p = Qb[1020 + 3 * (q - r) + Qb[1020 + n - t]],\n u = (27 * p + 63) >> 7,\n w = (18 * p + 63) >> 7,\n p = (9 * p + 63) >> 7;\n k[l - 3 * m] = R[255 + k[l - 3 * m] + p];\n k[l - 2 * m] = R[255 + n + w];\n k[l - m] = R[255 + r + u];\n k[l + 0] = R[255 + q - u];\n k[l + m] = R[255 + t - w];\n k[l + 2 * m] = R[255 + v - p];\n }\n b += d;\n }\n }\n function Fa(a, b, c, d, e, f, g, h) {\n for (f = 2 * f + 1; 0 < e--; ) {\n if (ld(a, b, c, f, g))\n if (jd(a, b, c, h)) ab(a, b, c);\n else {\n var k = a,\n l = b,\n m = c,\n n = k[l - m],\n r = k[l + 0],\n q = k[l + m],\n t = 3 * (r - n),\n v = mb[112 + ((t + 4) >> 3)],\n t = mb[112 + ((t + 3) >> 3)],\n p = (v + 1) >> 1;\n k[l - 2 * m] = R[255 + k[l - 2 * m] + p];\n k[l - m] = R[255 + n + t];\n k[l + 0] = R[255 + r - v];\n k[l + m] = R[255 + q - p];\n }\n b += d;\n }\n }\n function Ue(a, b, c, d, e, f) {\n ea(a, b, c, 1, 16, d, e, f);\n }\n function Ve(a, b, c, d, e, f) {\n ea(a, b, 1, c, 16, d, e, f);\n }\n function Ye(a, b, c, d, e, f) {\n var g;\n for (g = 3; 0 < g; --g) (b += 4 * c), Fa(a, b, c, 1, 16, d, e, f);\n }\n function Ze(a, b, c, d, e, f) {\n var g;\n for (g = 3; 0 < g; --g) (b += 4), Fa(a, b, 1, c, 16, d, e, f);\n }\n function We(a, b, c, d, e, f, g, h) {\n ea(a, b, e, 1, 8, f, g, h);\n ea(c, d, e, 1, 8, f, g, h);\n }\n function Xe(a, b, c, d, e, f, g, h) {\n ea(a, b, 1, e, 8, f, g, h);\n ea(c, d, 1, e, 8, f, g, h);\n }\n function $e(a, b, c, d, e, f, g, h) {\n Fa(a, b + 4 * e, e, 1, 8, f, g, h);\n Fa(c, d + 4 * e, e, 1, 8, f, g, h);\n }\n function af(a, b, c, d, e, f, g, h) {\n Fa(a, b + 4, 1, e, 8, f, g, h);\n Fa(c, d + 4, 1, e, 8, f, g, h);\n }\n function Cf() {\n this.ba = new Cb();\n this.ec = [];\n this.cc = [];\n this.Mc = [];\n this.Dc = this.Nc = this.dc = this.fc = 0;\n this.Oa = new Ud();\n this.memory = 0;\n this.Ib = \"OutputFunc\";\n this.Jb = \"OutputAlphaFunc\";\n this.Nd = \"OutputRowFunc\";\n }\n function md() {\n this.data = [];\n this.offset = this.kd = this.ha = this.w = 0;\n this.na = [];\n this.xa = this.gb = this.Ja = this.Sa = this.P = 0;\n }\n function Df() {\n this.nc = this.Ea = this.b = this.hc = 0;\n this.K = [];\n this.w = 0;\n }\n function Ef() {\n this.ua = 0;\n this.Wa = new ac();\n this.vb = new ac();\n this.md = this.xc = this.wc = 0;\n this.vc = [];\n this.Wb = 0;\n this.Ya = new Ub();\n this.yc = new O();\n }\n function je() {\n this.xb = this.a = 0;\n this.l = new Oa();\n this.ca = new Cb();\n this.V = [];\n this.Ba = 0;\n this.Ta = [];\n this.Ua = 0;\n this.m = new Ra();\n this.Pb = 0;\n this.wd = new Ra();\n this.Ma = this.$ = this.C = this.i = this.c = this.xd = 0;\n this.s = new Ef();\n this.ab = 0;\n this.gc = wa(4, Df);\n this.Oc = 0;\n }\n function Ff() {\n this.Lc = this.Z = this.$a = this.i = this.c = 0;\n this.l = new Oa();\n this.ic = 0;\n this.ca = [];\n this.tb = 0;\n this.qd = null;\n this.rd = 0;\n }\n function Rb(a, b, c, d, e, f, g) {\n a = null == a ? 0 : a[b + 0];\n for (b = 0; b < g; ++b) (e[f + b] = (a + c[d + b]) & 255), (a = e[f + b]);\n }\n function Gf(a, b, c, d, e, f, g) {\n if (null == a) Rb(null, null, c, d, e, f, g);\n else {\n var h;\n for (h = 0; h < g; ++h) e[f + h] = (a[b + h] + c[d + h]) & 255;\n }\n }\n function Hf(a, b, c, d, e, f, g) {\n if (null == a) Rb(null, null, c, d, e, f, g);\n else {\n var h = a[b + 0],\n k = h,\n l = h,\n m;\n for (m = 0; m < g; ++m)\n (h = a[b + m]),\n (k = l + h - k),\n (l = (c[d + m] + (k & -256 ? (0 > k ? 0 : 255) : k)) & 255),\n (k = h),\n (e[f + m] = l);\n }\n }\n function Le(a, b, c, d) {\n var e = b.width,\n f = b.o;\n x(null != a && null != b);\n if (0 > c || 0 >= d || c + d > f) return null;\n if (!a.Cc) {\n if (null == a.ga) {\n a.ga = new Ff();\n var g;\n (g = null == a.ga) ||\n ((g = b.width * b.o),\n x(0 == a.Gb.length),\n (a.Gb = V(g)),\n (a.Uc = 0),\n null == a.Gb\n ? (g = 0)\n : ((a.mb = a.Gb), (a.nb = a.Uc), (a.rc = null), (g = 1)),\n (g = !g));\n if (!g) {\n g = a.ga;\n var h = a.Fa,\n k = a.P,\n l = a.qc,\n m = a.mb,\n n = a.nb,\n r = k + 1,\n q = l - 1,\n t = g.l;\n x(null != h && null != m && null != b);\n ia[0] = null;\n ia[1] = Rb;\n ia[2] = Gf;\n ia[3] = Hf;\n g.ca = m;\n g.tb = n;\n g.c = b.width;\n g.i = b.height;\n x(0 < g.c && 0 < g.i);\n if (1 >= l) b = 0;\n else if (\n ((g.$a = (h[k + 0] >> 0) & 3),\n (g.Z = (h[k + 0] >> 2) & 3),\n (g.Lc = (h[k + 0] >> 4) & 3),\n (k = (h[k + 0] >> 6) & 3),\n 0 > g.$a || 1 < g.$a || 4 <= g.Z || 1 < g.Lc || k)\n )\n b = 0;\n else if (\n ((t.put = kc),\n (t.ac = gc),\n (t.bc = lc),\n (t.ma = g),\n (t.width = b.width),\n (t.height = b.height),\n (t.Da = b.Da),\n (t.v = b.v),\n (t.va = b.va),\n (t.j = b.j),\n (t.o = b.o),\n g.$a)\n )\n b: {\n x(1 == g.$a), (b = Bc());\n c: for (;;) {\n if (null == b) {\n b = 0;\n break b;\n }\n x(null != g);\n g.mc = b;\n b.c = g.c;\n b.i = g.i;\n b.l = g.l;\n b.l.ma = g;\n b.l.width = g.c;\n b.l.height = g.i;\n b.a = 0;\n cb(b.m, h, r, q);\n if (!rb(g.c, g.i, 1, b, null)) break c;\n 1 == b.ab && 3 == b.gc[0].hc && yc(b.s)\n ? ((g.ic = 1),\n (h = b.c * b.i),\n (b.Ta = null),\n (b.Ua = 0),\n (b.V = V(h)),\n (b.Ba = 0),\n null == b.V ? ((b.a = 1), (b = 0)) : (b = 1))\n : ((g.ic = 0), (b = Ec(b, g.c)));\n if (!b) break c;\n b = 1;\n break b;\n }\n g.mc = null;\n b = 0;\n }\n else b = q >= g.c * g.i;\n g = !b;\n }\n if (g) return null;\n 1 != a.ga.Lc ? (a.Ga = 0) : (d = f - c);\n }\n x(null != a.ga);\n x(c + d <= f);\n a: {\n h = a.ga;\n b = h.c;\n f = h.l.o;\n if (0 == h.$a) {\n r = a.rc;\n q = a.Vc;\n t = a.Fa;\n k = a.P + 1 + c * b;\n l = a.mb;\n m = a.nb + c * b;\n x(k <= a.P + a.qc);\n if (0 != h.Z)\n for (x(null != ia[h.Z]), g = 0; g < d; ++g)\n ia[h.Z](r, q, t, k, l, m, b),\n (r = l),\n (q = m),\n (m += b),\n (k += b);\n else\n for (g = 0; g < d; ++g)\n I(l, m, t, k, b), (r = l), (q = m), (m += b), (k += b);\n a.rc = r;\n a.Vc = q;\n } else {\n x(null != h.mc);\n b = c + d;\n g = h.mc;\n x(null != g);\n x(b <= g.i);\n if (g.C >= b) b = 1;\n else if ((h.ic || Aa(), h.ic)) {\n var h = g.V,\n r = g.Ba,\n q = g.c,\n v = g.i,\n t = 1,\n k = g.$ / q,\n l = g.$ % q,\n m = g.m,\n n = g.s,\n p = g.$,\n u = q * v,\n w = q * b,\n y = n.wc,\n A = p < w ? ha(n, l, k) : null;\n x(p <= u);\n x(b <= v);\n x(yc(n));\n c: for (;;) {\n for (; !m.h && p < w; ) {\n l & y || (A = ha(n, l, k));\n x(null != A);\n Sa(m);\n v = ua(A.G[0], A.H[0], m);\n if (256 > v)\n (h[r + p] = v),\n ++p,\n ++l,\n l >= q && ((l = 0), ++k, k <= b && !(k % 16) && Ib(g, k));\n else if (280 > v) {\n var v = ib(v - 256, m);\n var E = ua(A.G[4], A.H[4], m);\n Sa(m);\n E = ib(E, m);\n E = nc(q, E);\n if (p >= E && u - p >= v) {\n var B;\n for (B = 0; B < v; ++B) h[r + p + B] = h[r + p + B - E];\n } else {\n t = 0;\n break c;\n }\n p += v;\n for (l += v; l >= q; )\n (l -= q), ++k, k <= b && !(k % 16) && Ib(g, k);\n p < w && l & y && (A = ha(n, l, k));\n } else {\n t = 0;\n break c;\n }\n x(m.h == db(m));\n }\n Ib(g, k > b ? b : k);\n break c;\n }\n !t || (m.h && p < u) ? ((t = 0), (g.a = m.h ? 5 : 3)) : (g.$ = p);\n b = t;\n } else b = Jb(g, g.V, g.Ba, g.c, g.i, b, se);\n if (!b) {\n d = 0;\n break a;\n }\n }\n c + d >= f && (a.Cc = 1);\n d = 1;\n }\n if (!d) return null;\n if (\n a.Cc &&\n ((d = a.ga), null != d && (d.mc = null), (a.ga = null), 0 < a.Ga)\n )\n return alert(\"todo:WebPDequantizeLevels\"), null;\n }\n return a.nb + c * e;\n }\n function If(a, b, c, d, e, f) {\n for (; 0 < e--; ) {\n var g = a,\n h = b + (c ? 1 : 0),\n k = a,\n l = b + (c ? 0 : 3),\n m;\n for (m = 0; m < d; ++m) {\n var n = k[l + 4 * m];\n 255 != n &&\n ((n *= 32897),\n (g[h + 4 * m + 0] = (g[h + 4 * m + 0] * n) >> 23),\n (g[h + 4 * m + 1] = (g[h + 4 * m + 1] * n) >> 23),\n (g[h + 4 * m + 2] = (g[h + 4 * m + 2] * n) >> 23));\n }\n b += f;\n }\n }\n function Jf(a, b, c, d, e) {\n for (; 0 < d--; ) {\n var f;\n for (f = 0; f < c; ++f) {\n var g = a[b + 2 * f + 0],\n h = a[b + 2 * f + 1],\n k = h & 15,\n l = 4369 * k,\n h = (((h & 240) | (h >> 4)) * l) >> 16;\n a[b + 2 * f + 0] =\n (((((g & 240) | (g >> 4)) * l) >> 16) & 240) |\n ((((((g & 15) | (g << 4)) * l) >> 16) >> 4) & 15);\n a[b + 2 * f + 1] = (h & 240) | k;\n }\n b += e;\n }\n }\n function Kf(a, b, c, d, e, f, g, h) {\n var k = 255,\n l,\n m;\n for (m = 0; m < e; ++m) {\n for (l = 0; l < d; ++l) {\n var n = a[b + l];\n f[g + 4 * l] = n;\n k &= n;\n }\n b += c;\n g += h;\n }\n return 255 != k;\n }\n function Lf(a, b, c, d, e) {\n var f;\n for (f = 0; f < e; ++f) c[d + f] = a[b + f] >> 8;\n }\n function Aa() {\n za = If;\n vc = Jf;\n fc = Kf;\n Fc = Lf;\n }\n function va(a, b, c) {\n self[a] = function(a, e, f, g, h, k, l, m, n, r, q, t, v, p, u, w, y) {\n var d,\n E = (y - 1) >> 1;\n var B = h[k + 0] | (l[m + 0] << 16);\n var C = n[r + 0] | (q[t + 0] << 16);\n x(null != a);\n var z = (3 * B + C + 131074) >> 2;\n b(a[e + 0], z & 255, z >> 16, v, p);\n null != f &&\n ((z = (3 * C + B + 131074) >> 2),\n b(f[g + 0], z & 255, z >> 16, u, w));\n for (d = 1; d <= E; ++d) {\n var D = h[k + d] | (l[m + d] << 16);\n var G = n[r + d] | (q[t + d] << 16);\n var F = B + D + C + G + 524296;\n var H = (F + 2 * (D + C)) >> 3;\n F = (F + 2 * (B + G)) >> 3;\n z = (H + B) >> 1;\n B = (F + D) >> 1;\n b(a[e + 2 * d - 1], z & 255, z >> 16, v, p + (2 * d - 1) * c);\n b(a[e + 2 * d - 0], B & 255, B >> 16, v, p + (2 * d - 0) * c);\n null != f &&\n ((z = (F + C) >> 1),\n (B = (H + G) >> 1),\n b(f[g + 2 * d - 1], z & 255, z >> 16, u, w + (2 * d - 1) * c),\n b(f[g + 2 * d + 0], B & 255, B >> 16, u, w + (2 * d + 0) * c));\n B = D;\n C = G;\n }\n y & 1 ||\n ((z = (3 * B + C + 131074) >> 2),\n b(a[e + y - 1], z & 255, z >> 16, v, p + (y - 1) * c),\n null != f &&\n ((z = (3 * C + B + 131074) >> 2),\n b(f[g + y - 1], z & 255, z >> 16, u, w + (y - 1) * c)));\n };\n }\n function ic() {\n P[Ca] = Mf;\n P[Ua] = nd;\n P[tc] = Nf;\n P[Va] = od;\n P[ya] = pd;\n P[Db] = qd;\n P[wc] = Of;\n P[zb] = nd;\n P[Ab] = od;\n P[Ja] = pd;\n P[Bb] = qd;\n }\n function Sb(a) {\n return a & ~Pf ? (0 > a ? 0 : 255) : a >> rd;\n }\n function bb(a, b) {\n return Sb(((19077 * a) >> 8) + ((26149 * b) >> 8) - 14234);\n }\n function nb(a, b, c) {\n return Sb(\n ((19077 * a) >> 8) - ((6419 * b) >> 8) - ((13320 * c) >> 8) + 8708\n );\n }\n function Pa(a, b) {\n return Sb(((19077 * a) >> 8) + ((33050 * b) >> 8) - 17685);\n }\n function Ga(a, b, c, d, e) {\n d[e + 0] = bb(a, c);\n d[e + 1] = nb(a, b, c);\n d[e + 2] = Pa(a, b);\n }\n function Tb(a, b, c, d, e) {\n d[e + 0] = Pa(a, b);\n d[e + 1] = nb(a, b, c);\n d[e + 2] = bb(a, c);\n }\n function sd(a, b, c, d, e) {\n var f = nb(a, b, c);\n b = ((f << 3) & 224) | (Pa(a, b) >> 3);\n d[e + 0] = (bb(a, c) & 248) | (f >> 5);\n d[e + 1] = b;\n }\n function td(a, b, c, d, e) {\n var f = (Pa(a, b) & 240) | 15;\n d[e + 0] = (bb(a, c) & 240) | (nb(a, b, c) >> 4);\n d[e + 1] = f;\n }\n function ud(a, b, c, d, e) {\n d[e + 0] = 255;\n Ga(a, b, c, d, e + 1);\n }\n function vd(a, b, c, d, e) {\n Tb(a, b, c, d, e);\n d[e + 3] = 255;\n }\n function wd(a, b, c, d, e) {\n Ga(a, b, c, d, e);\n d[e + 3] = 255;\n }\n function ga(a, b) {\n return 0 > a ? 0 : a > b ? b : a;\n }\n function la(a, b, c) {\n self[a] = function(a, e, f, g, h, k, l, m, n) {\n for (var d = m + (n & -2) * c; m != d; )\n b(a[e + 0], f[g + 0], h[k + 0], l, m),\n b(a[e + 1], f[g + 0], h[k + 0], l, m + c),\n (e += 2),\n ++g,\n ++k,\n (m += 2 * c);\n n & 1 && b(a[e + 0], f[g + 0], h[k + 0], l, m);\n };\n }\n function xd(a, b, c) {\n return 0 == c ? (0 == a ? (0 == b ? 6 : 5) : 0 == b ? 4 : 0) : c;\n }\n function yd(a, b, c, d, e) {\n switch (a >>> 30) {\n case 3:\n Za(b, c, d, e, 0);\n break;\n case 2:\n fd(b, c, d, e);\n break;\n case 1:\n pa(b, c, d, e);\n }\n }\n function Oc(a, b) {\n var c,\n d,\n e = b.M,\n f = b.Nb,\n g = a.oc,\n h = a.pc + 40,\n k = a.oc,\n l = a.pc + 584,\n m = a.oc,\n n = a.pc + 600;\n for (c = 0; 16 > c; ++c) g[h + 32 * c - 1] = 129;\n for (c = 0; 8 > c; ++c)\n (k[l + 32 * c - 1] = 129), (m[n + 32 * c - 1] = 129);\n 0 < e\n ? (g[h - 1 - 32] = k[l - 1 - 32] = m[n - 1 - 32] = 129)\n : (M(g, h - 32 - 1, 127, 21),\n M(k, l - 32 - 1, 127, 9),\n M(m, n - 32 - 1, 127, 9));\n for (d = 0; d < a.za; ++d) {\n var r = b.ya[b.aa + d];\n if (0 < d) {\n for (c = -1; 16 > c; ++c) I(g, h + 32 * c - 4, g, h + 32 * c + 12, 4);\n for (c = -1; 8 > c; ++c)\n I(k, l + 32 * c - 4, k, l + 32 * c + 4, 4),\n I(m, n + 32 * c - 4, m, n + 32 * c + 4, 4);\n }\n var q = a.Gd,\n t = a.Hd + d,\n v = r.ad,\n p = r.Hc;\n 0 < e &&\n (I(g, h - 32, q[t].y, 0, 16),\n I(k, l - 32, q[t].f, 0, 8),\n I(m, n - 32, q[t].ea, 0, 8));\n if (r.Za) {\n var u = g;\n var w = h - 32 + 16;\n 0 < e &&\n (d >= a.za - 1\n ? M(u, w, q[t].y[15], 4)\n : I(u, w, q[t + 1].y, 0, 4));\n for (c = 0; 4 > c; c++)\n u[w + 128 + c] = u[w + 256 + c] = u[w + 384 + c] = u[w + 0 + c];\n for (c = 0; 16 > c; ++c, p <<= 2)\n (u = g), (w = h + zd[c]), W[r.Ob[c]](u, w), yd(p, v, 16 * +c, u, w);\n } else if (((u = xd(d, e, r.Ob[0])), Y[u](g, h), 0 != p))\n for (c = 0; 16 > c; ++c, p <<= 2) yd(p, v, 16 * +c, g, h + zd[c]);\n c = r.Gc;\n u = xd(d, e, r.Dd);\n ka[u](k, l);\n ka[u](m, n);\n r = c >> 0;\n p = v;\n u = k;\n w = l;\n r & 255 && (r & 170 ? Nb(p, 256, u, w) : Ob(p, 256, u, w));\n c >>= 8;\n r = m;\n p = n;\n c & 255 && (c & 170 ? Nb(v, 320, r, p) : Ob(v, 320, r, p));\n e < a.Ub - 1 &&\n (I(q[t].y, 0, g, h + 480, 16),\n I(q[t].f, 0, k, l + 224, 8),\n I(q[t].ea, 0, m, n + 224, 8));\n c = 8 * f * a.B;\n q = a.sa;\n t = a.ta + 16 * d + 16 * f * a.R;\n v = a.qa;\n r = a.ra + 8 * d + c;\n p = a.Ha;\n u = a.Ia + 8 * d + c;\n for (c = 0; 16 > c; ++c) I(q, t + c * a.R, g, h + 32 * c, 16);\n for (c = 0; 8 > c; ++c)\n I(v, r + c * a.B, k, l + 32 * c, 8),\n I(p, u + c * a.B, m, n + 32 * c, 8);\n }\n }\n function Ad(a, b, c, d, e, f, g, h, k) {\n var l = [0],\n m = [0],\n n = 0,\n r = null != k ? k.kd : 0,\n q = null != k ? k : new md();\n if (null == a || 12 > c) return 7;\n q.data = a;\n q.w = b;\n q.ha = c;\n b = [b];\n c = [c];\n q.gb = [q.gb];\n a: {\n var t = b;\n var v = c;\n var p = q.gb;\n x(null != a);\n x(null != v);\n x(null != p);\n p[0] = 0;\n if (12 <= v[0] && !fa(a, t[0], \"RIFF\")) {\n if (fa(a, t[0] + 8, \"WEBP\")) {\n p = 3;\n break a;\n }\n var u = Ha(a, t[0] + 4);\n if (12 > u || 4294967286 < u) {\n p = 3;\n break a;\n }\n if (r && u > v[0] - 8) {\n p = 7;\n break a;\n }\n p[0] = u;\n t[0] += 12;\n v[0] -= 12;\n }\n p = 0;\n }\n if (0 != p) return p;\n u = 0 < q.gb[0];\n for (c = c[0]; ; ) {\n t = [0];\n n = [n];\n a: {\n var w = a;\n v = b;\n p = c;\n var y = n,\n A = l,\n z = m,\n B = t;\n y[0] = 0;\n if (8 > p[0]) p = 7;\n else {\n if (!fa(w, v[0], \"VP8X\")) {\n if (10 != Ha(w, v[0] + 4)) {\n p = 3;\n break a;\n }\n if (18 > p[0]) {\n p = 7;\n break a;\n }\n var C = Ha(w, v[0] + 8);\n var D = 1 + Yb(w, v[0] + 12);\n w = 1 + Yb(w, v[0] + 15);\n if (2147483648 <= D * w) {\n p = 3;\n break a;\n }\n null != B && (B[0] = C);\n null != A && (A[0] = D);\n null != z && (z[0] = w);\n v[0] += 18;\n p[0] -= 18;\n y[0] = 1;\n }\n p = 0;\n }\n }\n n = n[0];\n t = t[0];\n if (0 != p) return p;\n v = !!(t & 2);\n if (!u && n) return 3;\n null != f && (f[0] = !!(t & 16));\n null != g && (g[0] = v);\n null != h && (h[0] = 0);\n g = l[0];\n t = m[0];\n if (n && v && null == k) {\n p = 0;\n break;\n }\n if (4 > c) {\n p = 7;\n break;\n }\n if ((u && n) || (!u && !n && !fa(a, b[0], \"ALPH\"))) {\n c = [c];\n q.na = [q.na];\n q.P = [q.P];\n q.Sa = [q.Sa];\n a: {\n C = a;\n p = b;\n u = c;\n var y = q.gb,\n A = q.na,\n z = q.P,\n B = q.Sa;\n D = 22;\n x(null != C);\n x(null != u);\n w = p[0];\n var F = u[0];\n x(null != A);\n x(null != B);\n A[0] = null;\n z[0] = null;\n for (B[0] = 0; ; ) {\n p[0] = w;\n u[0] = F;\n if (8 > F) {\n p = 7;\n break a;\n }\n var G = Ha(C, w + 4);\n if (4294967286 < G) {\n p = 3;\n break a;\n }\n var H = (8 + G + 1) & -2;\n D += H;\n if (0 < y && D > y) {\n p = 3;\n break a;\n }\n if (!fa(C, w, \"VP8 \") || !fa(C, w, \"VP8L\")) {\n p = 0;\n break a;\n }\n if (F[0] < H) {\n p = 7;\n break a;\n }\n fa(C, w, \"ALPH\") || ((A[0] = C), (z[0] = w + 8), (B[0] = G));\n w += H;\n F -= H;\n }\n }\n c = c[0];\n q.na = q.na[0];\n q.P = q.P[0];\n q.Sa = q.Sa[0];\n if (0 != p) break;\n }\n c = [c];\n q.Ja = [q.Ja];\n q.xa = [q.xa];\n a: if (\n ((y = a),\n (p = b),\n (u = c),\n (A = q.gb[0]),\n (z = q.Ja),\n (B = q.xa),\n (C = p[0]),\n (w = !fa(y, C, \"VP8 \")),\n (D = !fa(y, C, \"VP8L\")),\n x(null != y),\n x(null != u),\n x(null != z),\n x(null != B),\n 8 > u[0])\n )\n p = 7;\n else {\n if (w || D) {\n y = Ha(y, C + 4);\n if (12 <= A && y > A - 12) {\n p = 3;\n break a;\n }\n if (r && y > u[0] - 8) {\n p = 7;\n break a;\n }\n z[0] = y;\n p[0] += 8;\n u[0] -= 8;\n B[0] = D;\n } else\n (B[0] = 5 <= u[0] && 47 == y[C + 0] && !(y[C + 4] >> 5)),\n (z[0] = u[0]);\n p = 0;\n }\n c = c[0];\n q.Ja = q.Ja[0];\n q.xa = q.xa[0];\n b = b[0];\n if (0 != p) break;\n if (4294967286 < q.Ja) return 3;\n null == h || v || (h[0] = q.xa ? 2 : 1);\n g = [g];\n t = [t];\n if (q.xa) {\n if (5 > c) {\n p = 7;\n break;\n }\n h = g;\n r = t;\n v = f;\n null == a || 5 > c\n ? (a = 0)\n : 5 <= c && 47 == a[b + 0] && !(a[b + 4] >> 5)\n ? ((u = [0]),\n (y = [0]),\n (A = [0]),\n (z = new Ra()),\n cb(z, a, b, c),\n mc(z, u, y, A)\n ? (null != h && (h[0] = u[0]),\n null != r && (r[0] = y[0]),\n null != v && (v[0] = A[0]),\n (a = 1))\n : (a = 0))\n : (a = 0);\n } else {\n if (10 > c) {\n p = 7;\n break;\n }\n h = t;\n null == a || 10 > c || !Jc(a, b + 3, c - 3)\n ? (a = 0)\n : ((r = a[b + 0] | (a[b + 1] << 8) | (a[b + 2] << 16)),\n (v = ((a[b + 7] << 8) | a[b + 6]) & 16383),\n (a = ((a[b + 9] << 8) | a[b + 8]) & 16383),\n r & 1 ||\n 3 < ((r >> 1) & 7) ||\n !((r >> 4) & 1) ||\n r >> 5 >= q.Ja ||\n !v ||\n !a\n ? (a = 0)\n : (g && (g[0] = v), h && (h[0] = a), (a = 1)));\n }\n if (!a) return 3;\n g = g[0];\n t = t[0];\n if (n && (l[0] != g || m[0] != t)) return 3;\n null != k &&\n ((k[0] = q),\n (k.offset = b - k.w),\n x(4294967286 > b - k.w),\n x(k.offset == k.ha - c));\n break;\n }\n return 0 == p || (7 == p && n && null == k)\n ? (null != f && (f[0] |= null != q.na && 0 < q.na.length),\n null != d && (d[0] = g),\n null != e && (e[0] = t),\n 0)\n : p;\n }\n function hc(a, b, c) {\n var d = b.width,\n e = b.height,\n f = 0,\n g = 0,\n h = d,\n k = e;\n b.Da = null != a && 0 < a.Da;\n if (\n b.Da &&\n ((h = a.cd),\n (k = a.bd),\n (f = a.v),\n (g = a.j),\n 11 > c || ((f &= -2), (g &= -2)),\n 0 > f || 0 > g || 0 >= h || 0 >= k || f + h > d || g + k > e)\n )\n return 0;\n b.v = f;\n b.j = g;\n b.va = f + h;\n b.o = g + k;\n b.U = h;\n b.T = k;\n b.da = null != a && 0 < a.da;\n if (b.da) {\n c = [a.ib];\n f = [a.hb];\n if (!bc(h, k, c, f)) return 0;\n b.ib = c[0];\n b.hb = f[0];\n }\n b.ob = null != a && a.ob;\n b.Kb = null == a || !a.Sd;\n b.da && ((b.ob = b.ib < (3 * d) / 4 && b.hb < (3 * e) / 4), (b.Kb = 0));\n return 1;\n }\n function Bd(a) {\n if (null == a) return 2;\n if (11 > a.S) {\n var b = a.f.RGBA;\n b.fb += (a.height - 1) * b.A;\n b.A = -b.A;\n } else\n (b = a.f.kb),\n (a = a.height),\n (b.O += (a - 1) * b.fa),\n (b.fa = -b.fa),\n (b.N += ((a - 1) >> 1) * b.Ab),\n (b.Ab = -b.Ab),\n (b.W += ((a - 1) >> 1) * b.Db),\n (b.Db = -b.Db),\n null != b.F && ((b.J += (a - 1) * b.lb), (b.lb = -b.lb));\n return 0;\n }\n function Cd(a, b, c, d) {\n if (null == d || 0 >= a || 0 >= b) return 2;\n if (null != c) {\n if (c.Da) {\n var e = c.cd,\n f = c.bd,\n g = c.v & -2,\n h = c.j & -2;\n if (0 > g || 0 > h || 0 >= e || 0 >= f || g + e > a || h + f > b)\n return 2;\n a = e;\n b = f;\n }\n if (c.da) {\n e = [c.ib];\n f = [c.hb];\n if (!bc(a, b, e, f)) return 2;\n a = e[0];\n b = f[0];\n }\n }\n d.width = a;\n d.height = b;\n a: {\n var k = d.width;\n var l = d.height;\n a = d.S;\n if (0 >= k || 0 >= l || !(a >= Ca && 13 > a)) a = 2;\n else {\n if (0 >= d.Rd && null == d.sd) {\n var g = (f = e = b = 0),\n h = k * Dd[a],\n m = h * l;\n 11 > a ||\n ((b = (k + 1) / 2),\n (f = ((l + 1) / 2) * b),\n 12 == a && ((e = k), (g = e * l)));\n l = V(m + 2 * f + g);\n if (null == l) {\n a = 1;\n break a;\n }\n d.sd = l;\n 11 > a\n ? ((k = d.f.RGBA),\n (k.eb = l),\n (k.fb = 0),\n (k.A = h),\n (k.size = m))\n : ((k = d.f.kb),\n (k.y = l),\n (k.O = 0),\n (k.fa = h),\n (k.Fd = m),\n (k.f = l),\n (k.N = 0 + m),\n (k.Ab = b),\n (k.Cd = f),\n (k.ea = l),\n (k.W = 0 + m + f),\n (k.Db = b),\n (k.Ed = f),\n 12 == a && ((k.F = l), (k.J = 0 + m + 2 * f)),\n (k.Tc = g),\n (k.lb = e));\n }\n b = 1;\n e = d.S;\n f = d.width;\n g = d.height;\n if (e >= Ca && 13 > e)\n if (11 > e)\n (a = d.f.RGBA),\n (h = Math.abs(a.A)),\n (b &= h * (g - 1) + f <= a.size),\n (b &= h >= f * Dd[e]),\n (b &= null != a.eb);\n else {\n a = d.f.kb;\n h = (f + 1) / 2;\n m = (g + 1) / 2;\n k = Math.abs(a.fa);\n var l = Math.abs(a.Ab),\n n = Math.abs(a.Db),\n r = Math.abs(a.lb),\n q = r * (g - 1) + f;\n b &= k * (g - 1) + f <= a.Fd;\n b &= l * (m - 1) + h <= a.Cd;\n b &= n * (m - 1) + h <= a.Ed;\n b = b & (k >= f) & (l >= h) & (n >= h);\n b &= null != a.y;\n b &= null != a.f;\n b &= null != a.ea;\n 12 == e && ((b &= r >= f), (b &= q <= a.Tc), (b &= null != a.F));\n }\n else b = 0;\n a = b ? 0 : 2;\n }\n }\n if (0 != a) return a;\n null != c && c.fd && (a = Bd(d));\n return a;\n }\n var xb = 64,\n Hd = [\n 0,\n 1,\n 3,\n 7,\n 15,\n 31,\n 63,\n 127,\n 255,\n 511,\n 1023,\n 2047,\n 4095,\n 8191,\n 16383,\n 32767,\n 65535,\n 131071,\n 262143,\n 524287,\n 1048575,\n 2097151,\n 4194303,\n 8388607,\n 16777215\n ],\n Gd = 24,\n ob = 32,\n Xb = 8,\n Id = [\n 0,\n 0,\n 1,\n 1,\n 2,\n 2,\n 2,\n 2,\n 3,\n 3,\n 3,\n 3,\n 3,\n 3,\n 3,\n 3,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7\n ];\n X(\"Predictor0\", \"PredictorAdd0\");\n self.Predictor0 = function() {\n return 4278190080;\n };\n self.Predictor1 = function(a) {\n return a;\n };\n self.Predictor2 = function(a, b, c) {\n return b[c + 0];\n };\n self.Predictor3 = function(a, b, c) {\n return b[c + 1];\n };\n self.Predictor4 = function(a, b, c) {\n return b[c - 1];\n };\n self.Predictor5 = function(a, b, c) {\n return aa(aa(a, b[c + 1]), b[c + 0]);\n };\n self.Predictor6 = function(a, b, c) {\n return aa(a, b[c - 1]);\n };\n self.Predictor7 = function(a, b, c) {\n return aa(a, b[c + 0]);\n };\n self.Predictor8 = function(a, b, c) {\n return aa(b[c - 1], b[c + 0]);\n };\n self.Predictor9 = function(a, b, c) {\n return aa(b[c + 0], b[c + 1]);\n };\n self.Predictor10 = function(a, b, c) {\n return aa(aa(a, b[c - 1]), aa(b[c + 0], b[c + 1]));\n };\n self.Predictor11 = function(a, b, c) {\n var d = b[c + 0];\n b = b[c - 1];\n return 0 >=\n Ia((d >> 24) & 255, (a >> 24) & 255, (b >> 24) & 255) +\n Ia((d >> 16) & 255, (a >> 16) & 255, (b >> 16) & 255) +\n Ia((d >> 8) & 255, (a >> 8) & 255, (b >> 8) & 255) +\n Ia(d & 255, a & 255, b & 255)\n ? d\n : a;\n };\n self.Predictor12 = function(a, b, c) {\n var d = b[c + 0];\n b = b[c - 1];\n return (\n ((sa(((a >> 24) & 255) + ((d >> 24) & 255) - ((b >> 24) & 255)) << 24) |\n (sa(((a >> 16) & 255) + ((d >> 16) & 255) - ((b >> 16) & 255)) <<\n 16) |\n (sa(((a >> 8) & 255) + ((d >> 8) & 255) - ((b >> 8) & 255)) << 8) |\n sa((a & 255) + (d & 255) - (b & 255))) >>>\n 0\n );\n };\n self.Predictor13 = function(a, b, c) {\n var d = b[c - 1];\n a = aa(a, b[c + 0]);\n return (\n ((eb((a >> 24) & 255, (d >> 24) & 255) << 24) |\n (eb((a >> 16) & 255, (d >> 16) & 255) << 16) |\n (eb((a >> 8) & 255, (d >> 8) & 255) << 8) |\n eb((a >> 0) & 255, (d >> 0) & 255)) >>>\n 0\n );\n };\n var ee = self.PredictorAdd0;\n self.PredictorAdd1 = cc;\n X(\"Predictor2\", \"PredictorAdd2\");\n X(\"Predictor3\", \"PredictorAdd3\");\n X(\"Predictor4\", \"PredictorAdd4\");\n X(\"Predictor5\", \"PredictorAdd5\");\n X(\"Predictor6\", \"PredictorAdd6\");\n X(\"Predictor7\", \"PredictorAdd7\");\n X(\"Predictor8\", \"PredictorAdd8\");\n X(\"Predictor9\", \"PredictorAdd9\");\n X(\"Predictor10\", \"PredictorAdd10\");\n X(\"Predictor11\", \"PredictorAdd11\");\n X(\"Predictor12\", \"PredictorAdd12\");\n X(\"Predictor13\", \"PredictorAdd13\");\n var fe = self.PredictorAdd2;\n ec(\n \"ColorIndexInverseTransform\",\n \"MapARGB\",\n \"32b\",\n function(a) {\n return (a >> 8) & 255;\n },\n function(a) {\n return a;\n }\n );\n ec(\n \"VP8LColorIndexInverseTransformAlpha\",\n \"MapAlpha\",\n \"8b\",\n function(a) {\n return a;\n },\n function(a) {\n return (a >> 8) & 255;\n }\n );\n var rc = self.ColorIndexInverseTransform,\n ke = self.MapARGB,\n he = self.VP8LColorIndexInverseTransformAlpha,\n le = self.MapAlpha,\n pc,\n qc = (self.VP8LPredictorsAdd = []);\n qc.length = 16;\n (self.VP8LPredictors = []).length = 16;\n (self.VP8LPredictorsAdd_C = []).length = 16;\n (self.VP8LPredictors_C = []).length = 16;\n var Fb,\n sc,\n Gb,\n Hb,\n xc,\n uc,\n bd = V(511),\n cd = V(2041),\n dd = V(225),\n ed = V(767),\n ad = 0,\n Qb = cd,\n mb = dd,\n R = ed,\n U = bd,\n Ca = 0,\n Ua = 1,\n tc = 2,\n Va = 3,\n ya = 4,\n Db = 5,\n wc = 6,\n zb = 7,\n Ab = 8,\n Ja = 9,\n Bb = 10,\n pe = [2, 3, 7],\n oe = [3, 3, 11],\n Dc = [280, 256, 256, 256, 40],\n qe = [0, 1, 1, 1, 0],\n ne = [17, 18, 0, 1, 2, 3, 4, 5, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],\n de = [\n 24,\n 7,\n 23,\n 25,\n 40,\n 6,\n 39,\n 41,\n 22,\n 26,\n 38,\n 42,\n 56,\n 5,\n 55,\n 57,\n 21,\n 27,\n 54,\n 58,\n 37,\n 43,\n 72,\n 4,\n 71,\n 73,\n 20,\n 28,\n 53,\n 59,\n 70,\n 74,\n 36,\n 44,\n 88,\n 69,\n 75,\n 52,\n 60,\n 3,\n 87,\n 89,\n 19,\n 29,\n 86,\n 90,\n 35,\n 45,\n 68,\n 76,\n 85,\n 91,\n 51,\n 61,\n 104,\n 2,\n 103,\n 105,\n 18,\n 30,\n 102,\n 106,\n 34,\n 46,\n 84,\n 92,\n 67,\n 77,\n 101,\n 107,\n 50,\n 62,\n 120,\n 1,\n 119,\n 121,\n 83,\n 93,\n 17,\n 31,\n 100,\n 108,\n 66,\n 78,\n 118,\n 122,\n 33,\n 47,\n 117,\n 123,\n 49,\n 63,\n 99,\n 109,\n 82,\n 94,\n 0,\n 116,\n 124,\n 65,\n 79,\n 16,\n 32,\n 98,\n 110,\n 48,\n 115,\n 125,\n 81,\n 95,\n 64,\n 114,\n 126,\n 97,\n 111,\n 80,\n 113,\n 127,\n 96,\n 112\n ],\n me = [\n 2954,\n 2956,\n 2958,\n 2962,\n 2970,\n 2986,\n 3018,\n 3082,\n 3212,\n 3468,\n 3980,\n 5004\n ],\n ie = 8,\n Lb = [\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 17,\n 18,\n 19,\n 20,\n 20,\n 21,\n 21,\n 22,\n 22,\n 23,\n 23,\n 24,\n 25,\n 25,\n 26,\n 27,\n 28,\n 29,\n 30,\n 31,\n 32,\n 33,\n 34,\n 35,\n 36,\n 37,\n 37,\n 38,\n 39,\n 40,\n 41,\n 42,\n 43,\n 44,\n 45,\n 46,\n 46,\n 47,\n 48,\n 49,\n 50,\n 51,\n 52,\n 53,\n 54,\n 55,\n 56,\n 57,\n 58,\n 59,\n 60,\n 61,\n 62,\n 63,\n 64,\n 65,\n 66,\n 67,\n 68,\n 69,\n 70,\n 71,\n 72,\n 73,\n 74,\n 75,\n 76,\n 76,\n 77,\n 78,\n 79,\n 80,\n 81,\n 82,\n 83,\n 84,\n 85,\n 86,\n 87,\n 88,\n 89,\n 91,\n 93,\n 95,\n 96,\n 98,\n 100,\n 101,\n 102,\n 104,\n 106,\n 108,\n 110,\n 112,\n 114,\n 116,\n 118,\n 122,\n 124,\n 126,\n 128,\n 130,\n 132,\n 134,\n 136,\n 138,\n 140,\n 143,\n 145,\n 148,\n 151,\n 154,\n 157\n ],\n Mb = [\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 18,\n 19,\n 20,\n 21,\n 22,\n 23,\n 24,\n 25,\n 26,\n 27,\n 28,\n 29,\n 30,\n 31,\n 32,\n 33,\n 34,\n 35,\n 36,\n 37,\n 38,\n 39,\n 40,\n 41,\n 42,\n 43,\n 44,\n 45,\n 46,\n 47,\n 48,\n 49,\n 50,\n 51,\n 52,\n 53,\n 54,\n 55,\n 56,\n 57,\n 58,\n 60,\n 62,\n 64,\n 66,\n 68,\n 70,\n 72,\n 74,\n 76,\n 78,\n 80,\n 82,\n 84,\n 86,\n 88,\n 90,\n 92,\n 94,\n 96,\n 98,\n 100,\n 102,\n 104,\n 106,\n 108,\n 110,\n 112,\n 114,\n 116,\n 119,\n 122,\n 125,\n 128,\n 131,\n 134,\n 137,\n 140,\n 143,\n 146,\n 149,\n 152,\n 155,\n 158,\n 161,\n 164,\n 167,\n 170,\n 173,\n 177,\n 181,\n 185,\n 189,\n 193,\n 197,\n 201,\n 205,\n 209,\n 213,\n 217,\n 221,\n 225,\n 229,\n 234,\n 239,\n 245,\n 249,\n 254,\n 259,\n 264,\n 269,\n 274,\n 279,\n 284\n ],\n oa = null,\n He = [\n [173, 148, 140, 0],\n [176, 155, 140, 135, 0],\n [180, 157, 141, 134, 130, 0],\n [254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0]\n ],\n Ie = [0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13, 10, 7, 11, 14, 15],\n Mc = [-0, 1, -1, 2, -2, 3, 4, 6, -3, 5, -4, -5, -6, 7, -7, 8, -8, -9],\n Fe = [\n [\n [\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128],\n [189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128],\n [106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128]\n ],\n [\n [1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128],\n [181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128],\n [78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128]\n ],\n [\n [1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128],\n [184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128],\n [77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128]\n ],\n [\n [1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128],\n [170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128],\n [37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128]\n ],\n [\n [1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128],\n [207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128],\n [102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128]\n ],\n [\n [1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128],\n [177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128],\n [80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128]\n ],\n [\n [1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n ]\n ],\n [\n [\n [198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62],\n [131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1],\n [68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128]\n ],\n [\n [1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128],\n [184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128],\n [81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128]\n ],\n [\n [1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128],\n [99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128],\n [23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128]\n ],\n [\n [1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128],\n [109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128],\n [44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128]\n ],\n [\n [1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128],\n [94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128],\n [22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128]\n ],\n [\n [1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128],\n [124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128],\n [35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128]\n ],\n [\n [1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128],\n [121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128],\n [45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128]\n ],\n [\n [1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128],\n [203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128],\n [137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128]\n ]\n ],\n [\n [\n [253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128],\n [175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128],\n [73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128]\n ],\n [\n [1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128],\n [239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128],\n [155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128]\n ],\n [\n [1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128],\n [201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128],\n [69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128]\n ],\n [\n [1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128],\n [223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128],\n [141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128]\n ],\n [\n [1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128],\n [190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128],\n [149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128],\n [213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128],\n [55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n ]\n ],\n [\n [\n [202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255],\n [126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128],\n [61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128]\n ],\n [\n [1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128],\n [166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128],\n [39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128]\n ],\n [\n [1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128],\n [124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128],\n [24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128]\n ],\n [\n [1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128],\n [149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128],\n [28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128]\n ],\n [\n [1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128],\n [123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128],\n [20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128]\n ],\n [\n [1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128],\n [168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128],\n [47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128]\n ],\n [\n [1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128],\n [141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128],\n [42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128]\n ],\n [\n [1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ]\n ]\n ],\n Ke = [\n [\n [231, 120, 48, 89, 115, 113, 120, 152, 112],\n [152, 179, 64, 126, 170, 118, 46, 70, 95],\n [175, 69, 143, 80, 85, 82, 72, 155, 103],\n [56, 58, 10, 171, 218, 189, 17, 13, 152],\n [114, 26, 17, 163, 44, 195, 21, 10, 173],\n [121, 24, 80, 195, 26, 62, 44, 64, 85],\n [144, 71, 10, 38, 171, 213, 144, 34, 26],\n [170, 46, 55, 19, 136, 160, 33, 206, 71],\n [63, 20, 8, 114, 114, 208, 12, 9, 226],\n [81, 40, 11, 96, 182, 84, 29, 16, 36]\n ],\n [\n [134, 183, 89, 137, 98, 101, 106, 165, 148],\n [72, 187, 100, 130, 157, 111, 32, 75, 80],\n [66, 102, 167, 99, 74, 62, 40, 234, 128],\n [41, 53, 9, 178, 241, 141, 26, 8, 107],\n [74, 43, 26, 146, 73, 166, 49, 23, 157],\n [65, 38, 105, 160, 51, 52, 31, 115, 128],\n [104, 79, 12, 27, 217, 255, 87, 17, 7],\n [87, 68, 71, 44, 114, 51, 15, 186, 23],\n [47, 41, 14, 110, 182, 183, 21, 17, 194],\n [66, 45, 25, 102, 197, 189, 23, 18, 22]\n ],\n [\n [88, 88, 147, 150, 42, 46, 45, 196, 205],\n [43, 97, 183, 117, 85, 38, 35, 179, 61],\n [39, 53, 200, 87, 26, 21, 43, 232, 171],\n [56, 34, 51, 104, 114, 102, 29, 93, 77],\n [39, 28, 85, 171, 58, 165, 90, 98, 64],\n [34, 22, 116, 206, 23, 34, 43, 166, 73],\n [107, 54, 32, 26, 51, 1, 81, 43, 31],\n [68, 25, 106, 22, 64, 171, 36, 225, 114],\n [34, 19, 21, 102, 132, 188, 16, 76, 124],\n [62, 18, 78, 95, 85, 57, 50, 48, 51]\n ],\n [\n [193, 101, 35, 159, 215, 111, 89, 46, 111],\n [60, 148, 31, 172, 219, 228, 21, 18, 111],\n [112, 113, 77, 85, 179, 255, 38, 120, 114],\n [40, 42, 1, 196, 245, 209, 10, 25, 109],\n [88, 43, 29, 140, 166, 213, 37, 43, 154],\n [61, 63, 30, 155, 67, 45, 68, 1, 209],\n [100, 80, 8, 43, 154, 1, 51, 26, 71],\n [142, 78, 78, 16, 255, 128, 34, 197, 171],\n [41, 40, 5, 102, 211, 183, 4, 1, 221],\n [51, 50, 17, 168, 209, 192, 23, 25, 82]\n ],\n [\n [138, 31, 36, 171, 27, 166, 38, 44, 229],\n [67, 87, 58, 169, 82, 115, 26, 59, 179],\n [63, 59, 90, 180, 59, 166, 93, 73, 154],\n [40, 40, 21, 116, 143, 209, 34, 39, 175],\n [47, 15, 16, 183, 34, 223, 49, 45, 183],\n [46, 17, 33, 183, 6, 98, 15, 32, 183],\n [57, 46, 22, 24, 128, 1, 54, 17, 37],\n [65, 32, 73, 115, 28, 128, 23, 128, 205],\n [40, 3, 9, 115, 51, 192, 18, 6, 223],\n [87, 37, 9, 115, 59, 77, 64, 21, 47]\n ],\n [\n [104, 55, 44, 218, 9, 54, 53, 130, 226],\n [64, 90, 70, 205, 40, 41, 23, 26, 57],\n [54, 57, 112, 184, 5, 41, 38, 166, 213],\n [30, 34, 26, 133, 152, 116, 10, 32, 134],\n [39, 19, 53, 221, 26, 114, 32, 73, 255],\n [31, 9, 65, 234, 2, 15, 1, 118, 73],\n [75, 32, 12, 51, 192, 255, 160, 43, 51],\n [88, 31, 35, 67, 102, 85, 55, 186, 85],\n [56, 21, 23, 111, 59, 205, 45, 37, 192],\n [55, 38, 70, 124, 73, 102, 1, 34, 98]\n ],\n [\n [125, 98, 42, 88, 104, 85, 117, 175, 82],\n [95, 84, 53, 89, 128, 100, 113, 101, 45],\n [75, 79, 123, 47, 51, 128, 81, 171, 1],\n [57, 17, 5, 71, 102, 57, 53, 41, 49],\n [38, 33, 13, 121, 57, 73, 26, 1, 85],\n [41, 10, 67, 138, 77, 110, 90, 47, 114],\n [115, 21, 2, 10, 102, 255, 166, 23, 6],\n [101, 29, 16, 10, 85, 128, 101, 196, 26],\n [57, 18, 10, 102, 102, 213, 34, 20, 43],\n [117, 20, 15, 36, 163, 128, 68, 1, 26]\n ],\n [\n [102, 61, 71, 37, 34, 53, 31, 243, 192],\n [69, 60, 71, 38, 73, 119, 28, 222, 37],\n [68, 45, 128, 34, 1, 47, 11, 245, 171],\n [62, 17, 19, 70, 146, 85, 55, 62, 70],\n [37, 43, 37, 154, 100, 163, 85, 160, 1],\n [63, 9, 92, 136, 28, 64, 32, 201, 85],\n [75, 15, 9, 9, 64, 255, 184, 119, 16],\n [86, 6, 28, 5, 64, 255, 25, 248, 1],\n [56, 8, 17, 132, 137, 255, 55, 116, 128],\n [58, 15, 20, 82, 135, 57, 26, 121, 40]\n ],\n [\n [164, 50, 31, 137, 154, 133, 25, 35, 218],\n [51, 103, 44, 131, 131, 123, 31, 6, 158],\n [86, 40, 64, 135, 148, 224, 45, 183, 128],\n [22, 26, 17, 131, 240, 154, 14, 1, 209],\n [45, 16, 21, 91, 64, 222, 7, 1, 197],\n [56, 21, 39, 155, 60, 138, 23, 102, 213],\n [83, 12, 13, 54, 192, 255, 68, 47, 28],\n [85, 26, 85, 85, 128, 128, 32, 146, 171],\n [18, 11, 7, 63, 144, 171, 4, 4, 246],\n [35, 27, 10, 146, 174, 171, 12, 26, 128]\n ],\n [\n [190, 80, 35, 99, 180, 80, 126, 54, 45],\n [85, 126, 47, 87, 176, 51, 41, 20, 32],\n [101, 75, 128, 139, 118, 146, 116, 128, 85],\n [56, 41, 15, 176, 236, 85, 37, 9, 62],\n [71, 30, 17, 119, 118, 255, 17, 18, 138],\n [101, 38, 60, 138, 55, 70, 43, 26, 142],\n [146, 36, 19, 30, 171, 255, 97, 27, 20],\n [138, 45, 61, 62, 219, 1, 81, 188, 64],\n [32, 41, 20, 117, 151, 142, 20, 21, 163],\n [112, 19, 12, 61, 195, 128, 48, 4, 24]\n ]\n ],\n Ee = [\n [\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n [249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n [234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255],\n [250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ],\n [\n [\n [217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255],\n [234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255]\n ],\n [\n [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ],\n [\n [\n [186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255],\n [234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255],\n [251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255]\n ],\n [\n [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ],\n [\n [\n [248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255],\n [248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n [248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ]\n ],\n Ge = [0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 0],\n Nc,\n Y = [],\n W = [],\n ka = [],\n Za,\n fd,\n Nb,\n pa,\n Ob,\n Xc,\n Tc,\n Yc,\n Uc,\n Zc,\n Vc,\n $c,\n Wc,\n Rc,\n Pc,\n Sc,\n Qc,\n re = 1,\n Cc = 2,\n ia = [],\n za,\n vc,\n fc,\n Fc,\n P = [];\n va(\"UpsampleRgbLinePair\", Ga, 3);\n va(\"UpsampleBgrLinePair\", Tb, 3);\n va(\"UpsampleRgbaLinePair\", wd, 4);\n va(\"UpsampleBgraLinePair\", vd, 4);\n va(\"UpsampleArgbLinePair\", ud, 4);\n va(\"UpsampleRgba4444LinePair\", td, 2);\n va(\"UpsampleRgb565LinePair\", sd, 2);\n var Mf = self.UpsampleRgbLinePair,\n Nf = self.UpsampleBgrLinePair,\n nd = self.UpsampleRgbaLinePair,\n od = self.UpsampleBgraLinePair,\n pd = self.UpsampleArgbLinePair,\n qd = self.UpsampleRgba4444LinePair,\n Of = self.UpsampleRgb565LinePair,\n Wa = 16,\n Ba = 1 << (Wa - 1),\n ta = -227,\n Eb = 482,\n rd = 6,\n Pf = (256 << rd) - 1,\n jc = 0,\n Yd = V(256),\n ae = V(256),\n $d = V(256),\n Zd = V(256),\n be = V(Eb - ta),\n ce = V(Eb - ta);\n la(\"YuvToRgbRow\", Ga, 3);\n la(\"YuvToBgrRow\", Tb, 3);\n la(\"YuvToRgbaRow\", wd, 4);\n la(\"YuvToBgraRow\", vd, 4);\n la(\"YuvToArgbRow\", ud, 4);\n la(\"YuvToRgba4444Row\", td, 2);\n la(\"YuvToRgb565Row\", sd, 2);\n var zd = [\n 0,\n 4,\n 8,\n 12,\n 128,\n 132,\n 136,\n 140,\n 256,\n 260,\n 264,\n 268,\n 384,\n 388,\n 392,\n 396\n ],\n Ya = [0, 2, 8],\n Qf = [8, 7, 6, 4, 4, 2, 2, 2, 1, 1, 1, 1],\n Ne = 1;\n this.WebPDecodeRGBA = function(a, b, c, d, e) {\n var f = Ua;\n var g = new Cf(),\n h = new Cb();\n g.ba = h;\n h.S = f;\n h.width = [h.width];\n h.height = [h.height];\n var k = h.width;\n var l = h.height,\n m = new Td();\n if (null == m || null == a) var n = 2;\n else\n x(null != m),\n (n = Ad(a, b, c, m.width, m.height, m.Pd, m.Qd, m.format, null));\n 0 != n\n ? (k = 0)\n : (null != k && (k[0] = m.width[0]),\n null != l && (l[0] = m.height[0]),\n (k = 1));\n if (k) {\n h.width = h.width[0];\n h.height = h.height[0];\n null != d && (d[0] = h.width);\n null != e && (e[0] = h.height);\n b: {\n d = new Oa();\n e = new md();\n e.data = a;\n e.w = b;\n e.ha = c;\n e.kd = 1;\n b = [0];\n x(null != e);\n a = Ad(e.data, e.w, e.ha, null, null, null, b, null, e);\n (0 == a || 7 == a) && b[0] && (a = 4);\n b = a;\n if (0 == b) {\n x(null != g);\n d.data = e.data;\n d.w = e.w + e.offset;\n d.ha = e.ha - e.offset;\n d.put = kc;\n d.ac = gc;\n d.bc = lc;\n d.ma = g;\n if (e.xa) {\n a = Bc();\n if (null == a) {\n g = 1;\n break b;\n }\n if (te(a, d)) {\n b = Cd(d.width, d.height, g.Oa, g.ba);\n if ((d = 0 == b)) {\n c: {\n d = a;\n d: for (;;) {\n if (null == d) {\n d = 0;\n break c;\n }\n x(null != d.s.yc);\n x(null != d.s.Ya);\n x(0 < d.s.Wb);\n c = d.l;\n x(null != c);\n e = c.ma;\n x(null != e);\n if (0 != d.xb) {\n d.ca = e.ba;\n d.tb = e.tb;\n x(null != d.ca);\n if (!hc(e.Oa, c, Va)) {\n d.a = 2;\n break d;\n }\n if (!Ec(d, c.width)) break d;\n if (c.da) break d;\n (c.da || hb(d.ca.S)) && Aa();\n 11 > d.ca.S ||\n (alert(\"todo:WebPInitConvertARGBToYUV\"),\n null != d.ca.f.kb.F && Aa());\n if (\n d.Pb &&\n 0 < d.s.ua &&\n null == d.s.vb.X &&\n !Zb(d.s.vb, d.s.Wa.Xa)\n ) {\n d.a = 1;\n break d;\n }\n d.xb = 0;\n }\n if (!Jb(d, d.V, d.Ba, d.c, d.i, c.o, ge)) break d;\n e.Dc = d.Ma;\n d = 1;\n break c;\n }\n x(0 != d.a);\n d = 0;\n }\n d = !d;\n }\n d && (b = a.a);\n } else b = a.a;\n } else {\n a = new Ce();\n if (null == a) {\n g = 1;\n break b;\n }\n a.Fa = e.na;\n a.P = e.P;\n a.qc = e.Sa;\n if (Kc(a, d)) {\n if (((b = Cd(d.width, d.height, g.Oa, g.ba)), 0 == b)) {\n a.Aa = 0;\n c = g.Oa;\n e = a;\n x(null != e);\n if (null != c) {\n k = c.Md;\n k = 0 > k ? 0 : 100 < k ? 255 : (255 * k) / 100;\n if (0 < k) {\n for (l = m = 0; 4 > l; ++l)\n (n = e.pb[l]),\n 12 > n.lc &&\n (n.ia = (k * Qf[0 > n.lc ? 0 : n.lc]) >> 3),\n (m |= n.ia);\n m && (alert(\"todo:VP8InitRandom\"), (e.ia = 1));\n }\n e.Ga = c.Id;\n 100 < e.Ga ? (e.Ga = 100) : 0 > e.Ga && (e.Ga = 0);\n }\n Me(a, d) || (b = a.a);\n }\n } else b = a.a;\n }\n 0 == b && null != g.Oa && g.Oa.fd && (b = Bd(g.ba));\n }\n g = b;\n }\n f = 0 != g ? null : 11 > f ? h.f.RGBA.eb : h.f.kb.y;\n } else f = null;\n return f;\n };\n var Dd = [3, 4, 3, 4, 4, 2, 2, 4, 4, 4, 2, 1, 1];\n };\n new _WebPDecoder();\n\n /** @license\n * Copyright (c) 2017 Dominik Homberger\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nhttps://webpjs.appspot.com\nWebPRiffParser dominikhlbg@gmail.com\n*/\n\n function memcmp(data, data_off, str, size) {\n for (var i = 0; i < size; i++)\n if (data[data_off + i] != str.charCodeAt(i)) return true;\n return false;\n }\n\n function GetTag(data, data_off) {\n var str = \"\";\n for (var i = 0; i < 4; i++) str += String.fromCharCode(data[data_off++]);\n return str;\n }\n\n function GetLE16(data, data_off) {\n return (data[data_off + 0] << 0) | (data[data_off + 1] << 8);\n }\n\n function GetLE24(data, data_off) {\n return (\n ((data[data_off + 0] << 0) |\n (data[data_off + 1] << 8) |\n (data[data_off + 2] << 16)) >>>\n 0\n );\n }\n\n function GetLE32(data, data_off) {\n return (\n ((data[data_off + 0] << 0) |\n (data[data_off + 1] << 8) |\n (data[data_off + 2] << 16) |\n (data[data_off + 3] << 24)) >>>\n 0\n );\n }\n\n function WebPRiffParser(src, src_off) {\n var imagearray = {};\n var i = 0;\n var alpha_chunk = false;\n var alpha_size = 0;\n var alpha_offset = 0;\n imagearray[\"frames\"] = [];\n if (memcmp(src, src_off, \"RIFF\", 4)) return;\n src_off += 4;\n var riff_size = GetLE32(src, src_off) + 8;\n src_off += 8;\n\n while (src_off < src.length) {\n var fourcc = GetTag(src, src_off);\n src_off += 4;\n\n var payload_size = GetLE32(src, src_off);\n src_off += 4;\n var payload_size_padded = payload_size + (payload_size & 1);\n\n switch (fourcc) {\n case \"VP8 \":\n case \"VP8L\":\n if (typeof imagearray[\"frames\"][i] === \"undefined\")\n imagearray[\"frames\"][i] = {};\n var obj = imagearray[\"frames\"][i];\n var height = [0];\n var width = [0];\n obj[\"src_off\"] = alpha_chunk ? alpha_offset : src_off - 8;\n obj[\"src_size\"] = alpha_size + payload_size + 8;\n //var rgba = webpdecoder.WebPDecodeRGBA(src,(alpha_chunk?alpha_offset:src_off-8),alpha_size+payload_size+8,width,height);\n //imagearray[i]={'rgba':rgba,'width':width[0],'height':height[0]};\n i++;\n if (alpha_chunk) {\n alpha_chunk = false;\n alpha_size = 0;\n alpha_offset = 0;\n }\n break;\n case \"VP8X\":\n var obj = (imagearray[\"header\"] = {});\n var feature_flags = (obj[\"feature_flags\"] = src[src_off]);\n var src_off_ = src_off + 4;\n var canvas_width = (obj[\"canvas_width\"] = 1 + GetLE24(src, src_off_));\n src_off_ += 3;\n var canvas_height = (obj[\"canvas_height\"] =\n 1 + GetLE24(src, src_off_));\n src_off_ += 3;\n break;\n case \"ALPH\":\n alpha_chunk = true;\n alpha_size = payload_size_padded + 8;\n alpha_offset = src_off - 8;\n break;\n\n case \"ANIM\":\n var obj = imagearray[\"header\"];\n var bgcolor = (obj[\"bgcolor\"] = GetLE32(src, src_off));\n src_off_ = src_off + 4;\n\n var loop_count = (obj[\"loop_count\"] = GetLE16(src, src_off_));\n src_off_ += 2;\n break;\n case \"ANMF\":\n var offset_x = 0,\n offset_y = 0,\n width = 0,\n height = 0,\n duration = 0,\n blend = 0,\n dispose = 0,\n temp = 0;\n var obj = (imagearray[\"frames\"][i] = {});\n obj[\"offset_x\"] = offset_x = 2 * GetLE24(src, src_off);\n src_off += 3;\n obj[\"offset_y\"] = offset_y = 2 * GetLE24(src, src_off);\n src_off += 3;\n obj[\"width\"] = width = 1 + GetLE24(src, src_off);\n src_off += 3;\n obj[\"height\"] = height = 1 + GetLE24(src, src_off);\n src_off += 3;\n obj[\"duration\"] = duration = GetLE24(src, src_off);\n src_off += 3;\n temp = src[src_off++];\n obj[\"dispose\"] = dispose = temp & 1;\n obj[\"blend\"] = blend = (temp >> 1) & 1;\n break;\n default:\n }\n if (fourcc != \"ANMF\") src_off += payload_size_padded;\n }\n return imagearray;\n }\n\n var height = [0];\n var width = [0];\n var pixels = [];\n var webpdecoder = new _WebPDecoder();\n\n var response = imageData;\n var imagearray = WebPRiffParser(response, 0);\n imagearray[\"response\"] = response;\n imagearray[\"rgbaoutput\"] = true;\n imagearray[\"dataurl\"] = false;\n\n var header = imagearray[\"header\"] ? imagearray[\"header\"] : null;\n var frames = imagearray[\"frames\"] ? imagearray[\"frames\"] : null;\n\n if (header) {\n header[\"loop_counter\"] = header[\"loop_count\"];\n height = [header[\"canvas_height\"]];\n width = [header[\"canvas_width\"]];\n\n var blend = false;\n for (var f = 0; f < frames.length; f++)\n if (frames[f][\"blend\"] == 0) {\n blend = true;\n break;\n }\n }\n\n var frame = frames[0];\n var rgba = webpdecoder.WebPDecodeRGBA(\n response,\n frame[\"src_off\"],\n frame[\"src_size\"],\n width,\n height\n );\n frame[\"rgba\"] = rgba;\n frame[\"imgwidth\"] = width[0];\n frame[\"imgheight\"] = height[0];\n\n for (var i = 0; i < width[0] * height[0] * 4; i++) {\n pixels[i] = rgba[i];\n }\n\n this.width = width;\n this.height = height;\n this.data = pixels;\n return this;\n}\n\nWebPDecoder.prototype.getData = function() {\n return this.data;\n};\n\nexport { WebPDecoder };\n","/**\n * @license\n * Copyright (c) 2019 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\nimport { WebPDecoder } from \"../libs/WebPDecoder.js\";\n\n/**\n * jsPDF webp Support PlugIn\n *\n * @name webp_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n jsPDFAPI.processWEBP = function(imageData, index, alias, compression) {\n var reader = new WebPDecoder(imageData, false);\n var width = reader.width,\n height = reader.height;\n var qu = 100;\n var pixels = reader.getData();\n\n var rawImageData = {\n data: pixels,\n width: width,\n height: height\n };\n\n var encoder = new JPEGEncoder(qu);\n var data = encoder.encode(rawImageData, qu);\n return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n };\n})(jsPDF.API);\n","/**\n * @license\n *\n * Copyright (c) 2021 Antti Palola, https://github.com/Pantura\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF RGBA array PlugIn\n * @name rgba_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * @name processRGBA\n * @function\n *\n * Process RGBA Array. This is a one-dimension array with pixel data [red, green, blue, alpha, red, green, ...].\n * RGBA array data can be obtained from DOM canvas getImageData.\n * @ignore\n */\n jsPDFAPI.processRGBA = function(imageData, index, alias) {\n \"use strict\";\n\n var imagePixels = imageData.data;\n var length = imagePixels.length;\n // jsPDF takes alpha data separately so extract that.\n var rgbOut = new Uint8Array((length / 4) * 3);\n var alphaOut = new Uint8Array(length / 4);\n var outIndex = 0;\n var alphaIndex = 0;\n\n for (var i = 0; i < length; i += 4) {\n var r = imagePixels[i];\n var g = imagePixels[i + 1];\n var b = imagePixels[i + 2];\n var alpha = imagePixels[i + 3];\n rgbOut[outIndex++] = r;\n rgbOut[outIndex++] = g;\n rgbOut[outIndex++] = b;\n alphaOut[alphaIndex++] = alpha;\n }\n\n var rgbData = this.__addimage__.arrayBufferToBinaryString(rgbOut);\n var alphaData = this.__addimage__.arrayBufferToBinaryString(alphaOut);\n\n return {\n alpha: alphaData,\n data: rgbData,\n index: index,\n alias: alias,\n colorSpace: \"DeviceRGB\",\n bitsPerComponent: 8,\n width: imageData.width,\n height: imageData.height\n };\n };\n})(jsPDF.API);\n","/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF setLanguage Plugin\n *\n * @name setLanguage\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * Add Language Tag to the generated PDF\n *\n * @name setLanguage\n * @function\n * @param {string} langCode The Language code as ISO-639-1 (e.g. 'en') or as country language code (e.g. 'en-GB').\n * @returns {jsPDF}\n * @example\n * var doc = new jsPDF()\n * doc.text(10, 10, 'This is a test')\n * doc.setLanguage(\"en-US\")\n * doc.save('english.pdf')\n */\n jsPDFAPI.setLanguage = function(langCode) {\n \"use strict\";\n\n var langCodes = {\n af: \"Afrikaans\",\n sq: \"Albanian\",\n ar: \"Arabic (Standard)\",\n \"ar-DZ\": \"Arabic (Algeria)\",\n \"ar-BH\": \"Arabic (Bahrain)\",\n \"ar-EG\": \"Arabic (Egypt)\",\n \"ar-IQ\": \"Arabic (Iraq)\",\n \"ar-JO\": \"Arabic (Jordan)\",\n \"ar-KW\": \"Arabic (Kuwait)\",\n \"ar-LB\": \"Arabic (Lebanon)\",\n \"ar-LY\": \"Arabic (Libya)\",\n \"ar-MA\": \"Arabic (Morocco)\",\n \"ar-OM\": \"Arabic (Oman)\",\n \"ar-QA\": \"Arabic (Qatar)\",\n \"ar-SA\": \"Arabic (Saudi Arabia)\",\n \"ar-SY\": \"Arabic (Syria)\",\n \"ar-TN\": \"Arabic (Tunisia)\",\n \"ar-AE\": \"Arabic (U.A.E.)\",\n \"ar-YE\": \"Arabic (Yemen)\",\n an: \"Aragonese\",\n hy: \"Armenian\",\n as: \"Assamese\",\n ast: \"Asturian\",\n az: \"Azerbaijani\",\n eu: \"Basque\",\n be: \"Belarusian\",\n bn: \"Bengali\",\n bs: \"Bosnian\",\n br: \"Breton\",\n bg: \"Bulgarian\",\n my: \"Burmese\",\n ca: \"Catalan\",\n ch: \"Chamorro\",\n ce: \"Chechen\",\n zh: \"Chinese\",\n \"zh-HK\": \"Chinese (Hong Kong)\",\n \"zh-CN\": \"Chinese (PRC)\",\n \"zh-SG\": \"Chinese (Singapore)\",\n \"zh-TW\": \"Chinese (Taiwan)\",\n cv: \"Chuvash\",\n co: \"Corsican\",\n cr: \"Cree\",\n hr: \"Croatian\",\n cs: \"Czech\",\n da: \"Danish\",\n nl: \"Dutch (Standard)\",\n \"nl-BE\": \"Dutch (Belgian)\",\n en: \"English\",\n \"en-AU\": \"English (Australia)\",\n \"en-BZ\": \"English (Belize)\",\n \"en-CA\": \"English (Canada)\",\n \"en-IE\": \"English (Ireland)\",\n \"en-JM\": \"English (Jamaica)\",\n \"en-NZ\": \"English (New Zealand)\",\n \"en-PH\": \"English (Philippines)\",\n \"en-ZA\": \"English (South Africa)\",\n \"en-TT\": \"English (Trinidad & Tobago)\",\n \"en-GB\": \"English (United Kingdom)\",\n \"en-US\": \"English (United States)\",\n \"en-ZW\": \"English (Zimbabwe)\",\n eo: \"Esperanto\",\n et: \"Estonian\",\n fo: \"Faeroese\",\n fj: \"Fijian\",\n fi: \"Finnish\",\n fr: \"French (Standard)\",\n \"fr-BE\": \"French (Belgium)\",\n \"fr-CA\": \"French (Canada)\",\n \"fr-FR\": \"French (France)\",\n \"fr-LU\": \"French (Luxembourg)\",\n \"fr-MC\": \"French (Monaco)\",\n \"fr-CH\": \"French (Switzerland)\",\n fy: \"Frisian\",\n fur: \"Friulian\",\n gd: \"Gaelic (Scots)\",\n \"gd-IE\": \"Gaelic (Irish)\",\n gl: \"Galacian\",\n ka: \"Georgian\",\n de: \"German (Standard)\",\n \"de-AT\": \"German (Austria)\",\n \"de-DE\": \"German (Germany)\",\n \"de-LI\": \"German (Liechtenstein)\",\n \"de-LU\": \"German (Luxembourg)\",\n \"de-CH\": \"German (Switzerland)\",\n el: \"Greek\",\n gu: \"Gujurati\",\n ht: \"Haitian\",\n he: \"Hebrew\",\n hi: \"Hindi\",\n hu: \"Hungarian\",\n is: \"Icelandic\",\n id: \"Indonesian\",\n iu: \"Inuktitut\",\n ga: \"Irish\",\n it: \"Italian (Standard)\",\n \"it-CH\": \"Italian (Switzerland)\",\n ja: \"Japanese\",\n kn: \"Kannada\",\n ks: \"Kashmiri\",\n kk: \"Kazakh\",\n km: \"Khmer\",\n ky: \"Kirghiz\",\n tlh: \"Klingon\",\n ko: \"Korean\",\n \"ko-KP\": \"Korean (North Korea)\",\n \"ko-KR\": \"Korean (South Korea)\",\n la: \"Latin\",\n lv: \"Latvian\",\n lt: \"Lithuanian\",\n lb: \"Luxembourgish\",\n mk: \"North Macedonia\",\n ms: \"Malay\",\n ml: \"Malayalam\",\n mt: \"Maltese\",\n mi: \"Maori\",\n mr: \"Marathi\",\n mo: \"Moldavian\",\n nv: \"Navajo\",\n ng: \"Ndonga\",\n ne: \"Nepali\",\n no: \"Norwegian\",\n nb: \"Norwegian (Bokmal)\",\n nn: \"Norwegian (Nynorsk)\",\n oc: \"Occitan\",\n or: \"Oriya\",\n om: \"Oromo\",\n fa: \"Persian\",\n \"fa-IR\": \"Persian/Iran\",\n pl: \"Polish\",\n pt: \"Portuguese\",\n \"pt-BR\": \"Portuguese (Brazil)\",\n pa: \"Punjabi\",\n \"pa-IN\": \"Punjabi (India)\",\n \"pa-PK\": \"Punjabi (Pakistan)\",\n qu: \"Quechua\",\n rm: \"Rhaeto-Romanic\",\n ro: \"Romanian\",\n \"ro-MO\": \"Romanian (Moldavia)\",\n ru: \"Russian\",\n \"ru-MO\": \"Russian (Moldavia)\",\n sz: \"Sami (Lappish)\",\n sg: \"Sango\",\n sa: \"Sanskrit\",\n sc: \"Sardinian\",\n sd: \"Sindhi\",\n si: \"Singhalese\",\n sr: \"Serbian\",\n sk: \"Slovak\",\n sl: \"Slovenian\",\n so: \"Somani\",\n sb: \"Sorbian\",\n es: \"Spanish\",\n \"es-AR\": \"Spanish (Argentina)\",\n \"es-BO\": \"Spanish (Bolivia)\",\n \"es-CL\": \"Spanish (Chile)\",\n \"es-CO\": \"Spanish (Colombia)\",\n \"es-CR\": \"Spanish (Costa Rica)\",\n \"es-DO\": \"Spanish (Dominican Republic)\",\n \"es-EC\": \"Spanish (Ecuador)\",\n \"es-SV\": \"Spanish (El Salvador)\",\n \"es-GT\": \"Spanish (Guatemala)\",\n \"es-HN\": \"Spanish (Honduras)\",\n \"es-MX\": \"Spanish (Mexico)\",\n \"es-NI\": \"Spanish (Nicaragua)\",\n \"es-PA\": \"Spanish (Panama)\",\n \"es-PY\": \"Spanish (Paraguay)\",\n \"es-PE\": \"Spanish (Peru)\",\n \"es-PR\": \"Spanish (Puerto Rico)\",\n \"es-ES\": \"Spanish (Spain)\",\n \"es-UY\": \"Spanish (Uruguay)\",\n \"es-VE\": \"Spanish (Venezuela)\",\n sx: \"Sutu\",\n sw: \"Swahili\",\n sv: \"Swedish\",\n \"sv-FI\": \"Swedish (Finland)\",\n \"sv-SV\": \"Swedish (Sweden)\",\n ta: \"Tamil\",\n tt: \"Tatar\",\n te: \"Teluga\",\n th: \"Thai\",\n tig: \"Tigre\",\n ts: \"Tsonga\",\n tn: \"Tswana\",\n tr: \"Turkish\",\n tk: \"Turkmen\",\n uk: \"Ukrainian\",\n hsb: \"Upper Sorbian\",\n ur: \"Urdu\",\n ve: \"Venda\",\n vi: \"Vietnamese\",\n vo: \"Volapuk\",\n wa: \"Walloon\",\n cy: \"Welsh\",\n xh: \"Xhosa\",\n ji: \"Yiddish\",\n zu: \"Zulu\"\n };\n\n if (this.internal.languageSettings === undefined) {\n this.internal.languageSettings = {};\n this.internal.languageSettings.isSubscribed = false;\n }\n\n if (langCodes[langCode] !== undefined) {\n this.internal.languageSettings.languageCode = langCode;\n if (this.internal.languageSettings.isSubscribed === false) {\n this.internal.events.subscribe(\"putCatalog\", function() {\n this.internal.write(\n \"/Lang (\" + this.internal.languageSettings.languageCode + \")\"\n );\n });\n this.internal.languageSettings.isSubscribed = true;\n }\n }\n return this;\n };\n})(jsPDF.API);\n","/** @license\n * MIT license.\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n * 2014 Diego Casorran, https://github.com/diegocr\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF split_text_to_size plugin\n *\n * @name split_text_to_size\n * @module\n */\n(function(API) {\n \"use strict\";\n /**\n * Returns an array of length matching length of the 'word' string, with each\n * cell occupied by the width of the char in that position.\n *\n * @name getCharWidthsArray\n * @function\n * @param {string} text\n * @param {Object} options\n * @returns {Array}\n */\n var getCharWidthsArray = (API.getCharWidthsArray = function(text, options) {\n options = options || {};\n\n var activeFont = options.font || this.internal.getFont();\n var fontSize = options.fontSize || this.internal.getFontSize();\n var charSpace = options.charSpace || this.internal.getCharSpace();\n\n var widths = options.widths\n ? options.widths\n : activeFont.metadata.Unicode.widths;\n var widthsFractionOf = widths.fof ? widths.fof : 1;\n var kerning = options.kerning\n ? options.kerning\n : activeFont.metadata.Unicode.kerning;\n var kerningFractionOf = kerning.fof ? kerning.fof : 1;\n var doKerning = options.doKerning === false ? false : true;\n var kerningValue = 0;\n\n var i;\n var length = text.length;\n var char_code;\n var prior_char_code = 0; //for kerning\n var default_char_width = widths[0] || widthsFractionOf;\n var output = [];\n\n for (i = 0; i < length; i++) {\n char_code = text.charCodeAt(i);\n\n if (typeof activeFont.metadata.widthOfString === \"function\") {\n output.push(\n (activeFont.metadata.widthOfGlyph(\n activeFont.metadata.characterToGlyph(char_code)\n ) +\n charSpace * (1000 / fontSize) || 0) / 1000\n );\n } else {\n if (\n doKerning &&\n typeof kerning[char_code] === \"object\" &&\n !isNaN(parseInt(kerning[char_code][prior_char_code], 10))\n ) {\n kerningValue =\n kerning[char_code][prior_char_code] / kerningFractionOf;\n } else {\n kerningValue = 0;\n }\n output.push(\n (widths[char_code] || default_char_width) / widthsFractionOf +\n kerningValue\n );\n }\n prior_char_code = char_code;\n }\n\n return output;\n });\n\n /**\n * Returns a widths of string in a given font, if the font size is set as 1 point.\n *\n * In other words, this is \"proportional\" value. For 1 unit of font size, the length\n * of the string will be that much.\n *\n * Multiply by font size to get actual width in *points*\n * Then divide by 72 to get inches or divide by (72/25.6) to get 'mm' etc.\n *\n * @name getStringUnitWidth\n * @public\n * @function\n * @param {string} text\n * @param {string} options\n * @returns {number} result\n */\n var getStringUnitWidth = (API.getStringUnitWidth = function(text, options) {\n options = options || {};\n\n var fontSize = options.fontSize || this.internal.getFontSize();\n var font = options.font || this.internal.getFont();\n var charSpace = options.charSpace || this.internal.getCharSpace();\n var result = 0;\n\n if (API.processArabic) {\n text = API.processArabic(text);\n }\n\n if (typeof font.metadata.widthOfString === \"function\") {\n result =\n font.metadata.widthOfString(text, fontSize, charSpace) / fontSize;\n } else {\n result = getCharWidthsArray\n .apply(this, arguments)\n .reduce(function(pv, cv) {\n return pv + cv;\n }, 0);\n }\n return result;\n });\n\n /**\n returns array of lines\n */\n var splitLongWord = function(word, widths_array, firstLineMaxLen, maxLen) {\n var answer = [];\n\n // 1st, chop off the piece that can fit on the hanging line.\n var i = 0,\n l = word.length,\n workingLen = 0;\n while (i !== l && workingLen + widths_array[i] < firstLineMaxLen) {\n workingLen += widths_array[i];\n i++;\n }\n // this is first line.\n answer.push(word.slice(0, i));\n\n // 2nd. Split the rest into maxLen pieces.\n var startOfLine = i;\n workingLen = 0;\n while (i !== l) {\n if (workingLen + widths_array[i] > maxLen) {\n answer.push(word.slice(startOfLine, i));\n workingLen = 0;\n startOfLine = i;\n }\n workingLen += widths_array[i];\n i++;\n }\n if (startOfLine !== i) {\n answer.push(word.slice(startOfLine, i));\n }\n\n return answer;\n };\n\n // Note, all sizing inputs for this function must be in \"font measurement units\"\n // By default, for PDF, it's \"point\".\n var splitParagraphIntoLines = function(text, maxlen, options) {\n // at this time works only on Western scripts, ones with space char\n // separating the words. Feel free to expand.\n\n if (!options) {\n options = {};\n }\n\n var line = [],\n lines = [line],\n line_length = options.textIndent || 0,\n separator_length = 0,\n current_word_length = 0,\n word,\n widths_array,\n words = text.split(\" \"),\n spaceCharWidth = getCharWidthsArray.apply(this, [\" \", options])[0],\n i,\n l,\n tmp,\n lineIndent;\n\n if (options.lineIndent === -1) {\n lineIndent = words[0].length + 2;\n } else {\n lineIndent = options.lineIndent || 0;\n }\n if (lineIndent) {\n var pad = Array(lineIndent).join(\" \"),\n wrds = [];\n words.map(function(wrd) {\n wrd = wrd.split(/\\s*\\n/);\n if (wrd.length > 1) {\n wrds = wrds.concat(\n wrd.map(function(wrd, idx) {\n return (idx && wrd.length ? \"\\n\" : \"\") + wrd;\n })\n );\n } else {\n wrds.push(wrd[0]);\n }\n });\n words = wrds;\n lineIndent = getStringUnitWidth.apply(this, [pad, options]);\n }\n\n for (i = 0, l = words.length; i < l; i++) {\n var force = 0;\n\n word = words[i];\n if (lineIndent && word[0] == \"\\n\") {\n word = word.substr(1);\n force = 1;\n }\n widths_array = getCharWidthsArray.apply(this, [word, options]);\n current_word_length = widths_array.reduce(function(pv, cv) {\n return pv + cv;\n }, 0);\n\n if (\n line_length + separator_length + current_word_length > maxlen ||\n force\n ) {\n if (current_word_length > maxlen) {\n // this happens when you have space-less long URLs for example.\n // we just chop these to size. We do NOT insert hiphens\n tmp = splitLongWord.apply(this, [\n word,\n widths_array,\n maxlen - (line_length + separator_length),\n maxlen\n ]);\n // first line we add to existing line object\n line.push(tmp.shift()); // it's ok to have extra space indicator there\n // last line we make into new line object\n line = [tmp.pop()];\n // lines in the middle we apped to lines object as whole lines\n while (tmp.length) {\n lines.push([tmp.shift()]); // single fragment occupies whole line\n }\n current_word_length = widths_array\n .slice(word.length - (line[0] ? line[0].length : 0))\n .reduce(function(pv, cv) {\n return pv + cv;\n }, 0);\n } else {\n // just put it on a new line\n line = [word];\n }\n\n // now we attach new line to lines\n lines.push(line);\n line_length = current_word_length + lineIndent;\n separator_length = spaceCharWidth;\n } else {\n line.push(word);\n\n line_length += separator_length + current_word_length;\n separator_length = spaceCharWidth;\n }\n }\n\n var postProcess;\n if (lineIndent) {\n postProcess = function(ln, idx) {\n return (idx ? pad : \"\") + ln.join(\" \");\n };\n } else {\n postProcess = function(ln) {\n return ln.join(\" \");\n };\n }\n\n return lines.map(postProcess);\n };\n\n /**\n * Splits a given string into an array of strings. Uses 'size' value\n * (in measurement units declared as default for the jsPDF instance)\n * and the font's \"widths\" and \"Kerning\" tables, where available, to\n * determine display length of a given string for a given font.\n *\n * We use character's 100% of unit size (height) as width when Width\n * table or other default width is not available.\n *\n * @name splitTextToSize\n * @public\n * @function\n * @param {string} text Unencoded, regular JavaScript (Unicode, UTF-16 / UCS-2) string.\n * @param {number} size Nominal number, measured in units default to this instance of jsPDF.\n * @param {Object} options Optional flags needed for chopper to do the right thing.\n * @returns {Array} array Array with strings chopped to size.\n */\n API.splitTextToSize = function(text, maxlen, options) {\n \"use strict\";\n\n options = options || {};\n\n var fsize = options.fontSize || this.internal.getFontSize(),\n newOptions = function(options) {\n var widths = {\n 0: 1\n },\n kerning = {};\n\n if (!options.widths || !options.kerning) {\n var f = this.internal.getFont(options.fontName, options.fontStyle),\n encoding = \"Unicode\";\n // NOT UTF8, NOT UTF16BE/LE, NOT UCS2BE/LE\n // Actual JavaScript-native String's 16bit char codes used.\n // no multi-byte logic here\n\n if (f.metadata[encoding]) {\n return {\n widths: f.metadata[encoding].widths || widths,\n kerning: f.metadata[encoding].kerning || kerning\n };\n } else {\n return {\n font: f.metadata,\n fontSize: this.internal.getFontSize(),\n charSpace: this.internal.getCharSpace()\n };\n }\n } else {\n return {\n widths: options.widths,\n kerning: options.kerning\n };\n }\n }.call(this, options);\n\n // first we split on end-of-line chars\n var paragraphs;\n if (Array.isArray(text)) {\n paragraphs = text;\n } else {\n paragraphs = String(text).split(/\\r?\\n/);\n }\n\n // now we convert size (max length of line) into \"font size units\"\n // at present time, the \"font size unit\" is always 'point'\n // 'proportional' means, \"in proportion to font size\"\n var fontUnit_maxLen = (1.0 * this.internal.scaleFactor * maxlen) / fsize;\n // at this time, fsize is always in \"points\" regardless of the default measurement unit of the doc.\n // this may change in the future?\n // until then, proportional_maxlen is likely to be in 'points'\n\n // If first line is to be indented (shorter or longer) than maxLen\n // we indicate that by using CSS-style \"text-indent\" option.\n // here it's in font units too (which is likely 'points')\n // it can be negative (which makes the first line longer than maxLen)\n newOptions.textIndent = options.textIndent\n ? (options.textIndent * 1.0 * this.internal.scaleFactor) / fsize\n : 0;\n newOptions.lineIndent = options.lineIndent;\n\n var i,\n l,\n output = [];\n for (i = 0, l = paragraphs.length; i < l; i++) {\n output = output.concat(\n splitParagraphIntoLines.apply(this, [\n paragraphs[i],\n fontUnit_maxLen,\n newOptions\n ])\n );\n }\n\n return output;\n };\n})(jsPDF.API);\n","/** @license\n jsPDF standard_fonts_metrics plugin\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n * MIT license.\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n * \n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * This file adds the standard font metrics to jsPDF.\n *\n * Font metrics data is reprocessed derivative of contents of\n * \"Font Metrics for PDF Core 14 Fonts\" package, which exhibits the following copyright and license:\n *\n * Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\n *\n * This file and the 14 PostScript(R) AFM files it accompanies may be used,\n * copied, and distributed for any purpose and without charge, with or without\n * modification, provided that all copyright notices are retained; that the AFM\n * files are not distributed without this file; that all modifications to this\n * file or any of the AFM files are prominently noted in the modified file(s);\n * and that this paragraph is not modified. Adobe Systems has no responsibility\n * or obligation to support the use of the AFM files.\n *\n * @name standard_fonts_metrics\n * @module\n */\n\n(function(API) {\n \"use strict\";\n API.__fontmetrics__ = API.__fontmetrics__ || {};\n\n var decoded = \"0123456789abcdef\",\n encoded = \"klmnopqrstuvwxyz\",\n mappingUncompress = {},\n mappingCompress = {};\n\n for (var i = 0; i < encoded.length; i++) {\n mappingUncompress[encoded[i]] = decoded[i];\n mappingCompress[decoded[i]] = encoded[i];\n }\n\n var hex = function(value) {\n return \"0x\" + parseInt(value, 10).toString(16);\n };\n\n var compress = (API.__fontmetrics__.compress = function(data) {\n var vals = [\"{\"];\n var value, keystring, valuestring, numberprefix;\n\n for (var key in data) {\n value = data[key];\n\n if (!isNaN(parseInt(key, 10))) {\n key = parseInt(key, 10);\n keystring = hex(key).slice(2);\n keystring =\n keystring.slice(0, -1) + mappingCompress[keystring.slice(-1)];\n } else {\n keystring = \"'\" + key + \"'\";\n }\n\n if (typeof value == \"number\") {\n if (value < 0) {\n valuestring = hex(value).slice(3);\n numberprefix = \"-\";\n } else {\n valuestring = hex(value).slice(2);\n numberprefix = \"\";\n }\n valuestring =\n numberprefix +\n valuestring.slice(0, -1) +\n mappingCompress[valuestring.slice(-1)];\n } else {\n if (typeof value === \"object\") {\n valuestring = compress(value);\n } else {\n throw new Error(\n \"Don't know what to do with value type \" + typeof value + \".\"\n );\n }\n }\n vals.push(keystring + valuestring);\n }\n vals.push(\"}\");\n return vals.join(\"\");\n });\n\n /**\n * Uncompresses data compressed into custom, base16-like format.\n *\n * @public\n * @function\n * @param\n * @returns {Type}\n */\n var uncompress = (API.__fontmetrics__.uncompress = function(data) {\n if (typeof data !== \"string\") {\n throw new Error(\"Invalid argument passed to uncompress.\");\n }\n\n var output = {},\n sign = 1,\n stringparts, // undef. will be [] in string mode\n activeobject = output,\n parentchain = [],\n parent_key_pair,\n keyparts = \"\",\n valueparts = \"\",\n key, // undef. will be Truthy when Key is resolved.\n datalen = data.length - 1, // stripping ending }\n ch;\n\n for (var i = 1; i < datalen; i += 1) {\n // - { } ' are special.\n\n ch = data[i];\n\n if (ch == \"'\") {\n if (stringparts) {\n // end of string mode\n key = stringparts.join(\"\");\n stringparts = undefined;\n } else {\n // start of string mode\n stringparts = [];\n }\n } else if (stringparts) {\n stringparts.push(ch);\n } else if (ch == \"{\") {\n // start of object\n parentchain.push([activeobject, key]);\n activeobject = {};\n key = undefined;\n } else if (ch == \"}\") {\n // end of object\n parent_key_pair = parentchain.pop();\n parent_key_pair[0][parent_key_pair[1]] = activeobject;\n key = undefined;\n activeobject = parent_key_pair[0];\n } else if (ch == \"-\") {\n sign = -1;\n } else {\n // must be number\n if (key === undefined) {\n if (mappingUncompress.hasOwnProperty(ch)) {\n keyparts += mappingUncompress[ch];\n key = parseInt(keyparts, 16) * sign;\n sign = +1;\n keyparts = \"\";\n } else {\n keyparts += ch;\n }\n } else {\n if (mappingUncompress.hasOwnProperty(ch)) {\n valueparts += mappingUncompress[ch];\n activeobject[key] = parseInt(valueparts, 16) * sign;\n sign = +1;\n key = undefined;\n valueparts = \"\";\n } else {\n valueparts += ch;\n }\n }\n }\n }\n return output;\n });\n\n // encoding = 'Unicode'\n // NOT UTF8, NOT UTF16BE/LE, NOT UCS2BE/LE. NO clever BOM behavior\n // Actual 16bit char codes used.\n // no multi-byte logic here\n\n // Unicode characters to WinAnsiEncoding:\n // {402: 131, 8211: 150, 8212: 151, 8216: 145, 8217: 146, 8218: 130, 8220: 147, 8221: 148, 8222: 132, 8224: 134, 8225: 135, 8226: 149, 8230: 133, 8364: 128, 8240:137, 8249: 139, 8250: 155, 710: 136, 8482: 153, 338: 140, 339: 156, 732: 152, 352: 138, 353: 154, 376: 159, 381: 142, 382: 158}\n // as you can see, all Unicode chars are outside of 0-255 range. No char code conflicts.\n // this means that you can give Win cp1252 encoded strings to jsPDF for rendering directly\n // as well as give strings with some (supported by these fonts) Unicode characters and\n // these will be mapped to win cp1252\n // for example, you can send char code (cp1252) 0x80 or (unicode) 0x20AC, getting \"Euro\" glyph displayed in both cases.\n\n var encodingBlock = {\n codePages: [\"WinAnsiEncoding\"],\n WinAnsiEncoding: uncompress(\n \"{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}\"\n )\n };\n var encodings = {\n Unicode: {\n Courier: encodingBlock,\n \"Courier-Bold\": encodingBlock,\n \"Courier-BoldOblique\": encodingBlock,\n \"Courier-Oblique\": encodingBlock,\n Helvetica: encodingBlock,\n \"Helvetica-Bold\": encodingBlock,\n \"Helvetica-BoldOblique\": encodingBlock,\n \"Helvetica-Oblique\": encodingBlock,\n \"Times-Roman\": encodingBlock,\n \"Times-Bold\": encodingBlock,\n \"Times-BoldItalic\": encodingBlock,\n \"Times-Italic\": encodingBlock\n //\t, 'Symbol'\n //\t, 'ZapfDingbats'\n }\n };\n\n var fontMetrics = {\n Unicode: {\n // all sizing numbers are n/fontMetricsFractionOf = one font size unit\n // this means that if fontMetricsFractionOf = 1000, and letter A's width is 476, it's\n // width is 476/1000 or 47.6% of its height (regardless of font size)\n // At this time this value applies to \"widths\" and \"kerning\" numbers.\n\n // char code 0 represents \"default\" (average) width - use it for chars missing in this table.\n // key 'fof' represents the \"fontMetricsFractionOf\" value\n\n \"Courier-Oblique\": uncompress(\n \"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"\n ),\n \"Times-BoldItalic\": uncompress(\n \"{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}\"\n ),\n \"Helvetica-Bold\": uncompress(\n \"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"\n ),\n Courier: uncompress(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Courier-BoldOblique\": uncompress(\n \"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"\n ),\n \"Times-Bold\": uncompress(\n \"{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}\"\n ),\n Symbol: uncompress(\n \"{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}\"\n ),\n Helvetica: uncompress(\n \"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\"\n ),\n \"Helvetica-BoldOblique\": uncompress(\n \"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"\n ),\n ZapfDingbats: uncompress(\"{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Courier-Bold\": uncompress(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Times-Italic\": uncompress(\n \"{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}\"\n ),\n \"Times-Roman\": uncompress(\n \"{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}\"\n ),\n \"Helvetica-Oblique\": uncompress(\n \"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\"\n )\n }\n };\n\n /*\n\tThis event handler is fired when a new jsPDF object is initialized\n\tThis event handler appends metrics data to standard fonts within\n\tthat jsPDF instance. The metrics are mapped over Unicode character\n\tcodes, NOT CIDs or other codes matching the StandardEncoding table of the\n\tstandard PDF fonts.\n\tFuture:\n\tAlso included is the encoding maping table, converting Unicode (UCS-2, UTF-16)\n\tchar codes to StandardEncoding character codes. The encoding table is to be used\n\tsomewhere around \"pdfEscape\" call.\n\t*/\n API.events.push([\n \"addFont\",\n function(data) {\n var font = data.font;\n\n var metrics = fontMetrics[\"Unicode\"][font.postScriptName];\n if (metrics) {\n font.metadata[\"Unicode\"] = {};\n font.metadata[\"Unicode\"].widths = metrics.widths;\n font.metadata[\"Unicode\"].kerning = metrics.kerning;\n }\n\n var encodingBlock = encodings[\"Unicode\"][font.postScriptName];\n if (encodingBlock) {\n font.metadata[\"Unicode\"].encoding = encodingBlock;\n font.encoding = encodingBlock.codePages[0];\n }\n }\n ]); // end of adding event handler\n})(jsPDF.API);\n","/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { atob } from \"../libs/AtobBtoa.js\";\n\n/**\n * @name ttfsupport\n * @module\n */\n(function(jsPDF) {\n \"use strict\";\n\n var binaryStringToUint8Array = function(binary_string) {\n var len = binary_string.length;\n var bytes = new Uint8Array(len);\n for (var i = 0; i < len; i++) {\n bytes[i] = binary_string.charCodeAt(i);\n }\n return bytes;\n };\n\n var addFont = function(font, file) {\n // eslint-disable-next-line no-control-regex\n if (/^\\x00\\x01\\x00\\x00/.test(file)) {\n file = binaryStringToUint8Array(file);\n } else {\n file = binaryStringToUint8Array(atob(file));\n }\n font.metadata = jsPDF.API.TTFFont.open(file);\n font.metadata.Unicode = font.metadata.Unicode || {\n encoding: {},\n kerning: {},\n widths: []\n };\n font.metadata.glyIdsUsed = [0];\n };\n\n jsPDF.API.events.push([\n \"addFont\",\n function(data) {\n var file = undefined;\n var font = data.font;\n var instance = data.instance;\n if (font.isStandardFont) {\n return;\n }\n if (typeof instance !== \"undefined\") {\n if (instance.existsFileInVFS(font.postScriptName) === false) {\n file = instance.loadFile(font.postScriptName);\n } else {\n file = instance.getFileFromVFS(font.postScriptName);\n }\n if (typeof file !== \"string\") {\n throw new Error(\n \"Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('\" +\n font.postScriptName +\n \"').\"\n );\n }\n addFont(font, file);\n } else {\n throw new Error(\n \"Font does not exist in vFS, import fonts or remove declaration doc.addFont('\" +\n font.postScriptName +\n \"').\"\n );\n }\n }\n ]); // end of adding event handler\n})(jsPDF);\n","/** @license\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { console } from \"../libs/console.js\";\nimport { globalObject } from \"../libs/globalObject.js\";\n\n/**\n * jsPDF SVG plugin\n *\n * @name svg\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n function loadCanvg() {\n return (function() {\n if (globalObject[\"canvg\"]) {\n return Promise.resolve(globalObject[\"canvg\"]);\n }\n\n return import(\"canvg\");\n\n })()\n .catch(function(e) {\n return Promise.reject(new Error(\"Could not load canvg: \" + e));\n })\n .then(function(canvg) {\n return canvg.default ? canvg.default : canvg;\n });\n }\n\n /**\n * Parses SVG XML and saves it as image into the PDF.\n *\n * Depends on canvas-element and canvg\n *\n * @name addSvgAsImage\n * @public\n * @function\n * @param {string} SVG-Data as Text\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n * @param {number} width of SVG-Image (in units declared at inception of PDF document)\n * @param {number} height of SVG-Image (in units declared at inception of PDF document)\n * @param {string} alias of SVG-Image (if used multiple times)\n * @param {string} compression of the generated JPEG, can have the values 'NONE', 'FAST', 'MEDIUM' and 'SLOW'\n * @param {number} rotation of the image in degrees (0-359)\n *\n * @returns jsPDF jsPDF-instance\n */\n jsPDFAPI.addSvgAsImage = function(\n svg,\n x,\n y,\n w,\n h,\n alias,\n compression,\n rotation\n ) {\n if (isNaN(x) || isNaN(y)) {\n console.error(\"jsPDF.addSvgAsImage: Invalid coordinates\", arguments);\n throw new Error(\"Invalid coordinates passed to jsPDF.addSvgAsImage\");\n }\n\n if (isNaN(w) || isNaN(h)) {\n console.error(\"jsPDF.addSvgAsImage: Invalid measurements\", arguments);\n throw new Error(\n \"Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage\"\n );\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = w;\n canvas.height = h;\n var ctx = canvas.getContext(\"2d\");\n ctx.fillStyle = \"#fff\"; /// set white fill style\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n var options = {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true\n };\n var doc = this;\n return loadCanvg()\n .then(\n function(canvg) {\n return canvg.fromString(ctx, svg, options);\n },\n function() {\n return Promise.reject(new Error(\"Could not load canvg.\"));\n }\n )\n .then(function(instance) {\n return instance.render(options);\n })\n .then(function() {\n doc.addImage(\n canvas.toDataURL(\"image/jpeg\", 1.0),\n x,\n y,\n w,\n h,\n compression,\n rotation\n );\n });\n };\n})(jsPDF.API);\n","/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF total_pages plugin\n * @name total_pages\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n /**\n * @name putTotalPages\n * @function\n * @param {string} pageExpression Regular Expression\n * @returns {jsPDF} jsPDF-instance\n */\n\n jsPDFAPI.putTotalPages = function(pageExpression) {\n \"use strict\";\n\n var replaceExpression;\n var totalNumberOfPages = 0;\n if (parseInt(this.internal.getFont().id.substr(1), 10) < 15) {\n replaceExpression = new RegExp(pageExpression, \"g\");\n totalNumberOfPages = this.internal.getNumberOfPages();\n } else {\n replaceExpression = new RegExp(\n this.pdfEscape16(pageExpression, this.internal.getFont()),\n \"g\"\n );\n totalNumberOfPages = this.pdfEscape16(\n this.internal.getNumberOfPages() + \"\",\n this.internal.getFont()\n );\n }\n\n for (var n = 1; n <= this.internal.getNumberOfPages(); n++) {\n for (var i = 0; i < this.internal.pages[n].length; i++) {\n this.internal.pages[n][i] = this.internal.pages[n][i].replace(\n replaceExpression,\n totalNumberOfPages\n );\n }\n }\n\n return this;\n };\n})(jsPDF.API);\n","/**\n * @license\n * jsPDF viewerPreferences Plugin\n * @author Aras Abbasi (github.com/arasabbasi)\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * Adds the ability to set ViewerPreferences and by thus\n * controlling the way the document is to be presented on the\n * screen or in print.\n * @name viewerpreferences\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n /**\n * Set the ViewerPreferences of the generated PDF\n *\n * @name viewerPreferences\n * @function\n * @public\n * @param {Object} options Array with the ViewerPreferences<br />\n * Example: doc.viewerPreferences({\"FitWindow\":true});<br />\n * <br />\n * You can set following preferences:<br />\n * <br/>\n * <b>HideToolbar</b> <i>(boolean)</i><br />\n * Default value: false<br />\n * <br />\n * <b>HideMenubar</b> <i>(boolean)</i><br />\n * Default value: false.<br />\n * <br />\n * <b>HideWindowUI</b> <i>(boolean)</i><br />\n * Default value: false.<br />\n * <br />\n * <b>FitWindow</b> <i>(boolean)</i><br />\n * Default value: false.<br />\n * <br />\n * <b>CenterWindow</b> <i>(boolean)</i><br />\n * Default value: false<br />\n * <br />\n * <b>DisplayDocTitle</b> <i>(boolean)</i><br />\n * Default value: false.<br />\n * <br />\n * <b>NonFullScreenPageMode</b> <i>(string)</i><br />\n * Possible values: UseNone, UseOutlines, UseThumbs, UseOC<br />\n * Default value: UseNone<br/>\n * <br />\n * <b>Direction</b> <i>(string)</i><br />\n * Possible values: L2R, R2L<br />\n * Default value: L2R.<br />\n * <br />\n * <b>ViewArea</b> <i>(string)</i><br />\n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox<br />\n * Default value: CropBox.<br />\n * <br />\n * <b>ViewClip</b> <i>(string)</i><br />\n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox<br />\n * Default value: CropBox<br />\n * <br />\n * <b>PrintArea</b> <i>(string)</i><br />\n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox<br />\n * Default value: CropBox<br />\n * <br />\n * <b>PrintClip</b> <i>(string)</i><br />\n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox<br />\n * Default value: CropBox.<br />\n * <br />\n * <b>PrintScaling</b> <i>(string)</i><br />\n * Possible values: AppDefault, None<br />\n * Default value: AppDefault.<br />\n * <br />\n * <b>Duplex</b> <i>(string)</i><br />\n * Possible values: Simplex, DuplexFlipLongEdge, DuplexFlipShortEdge\n * Default value: none<br />\n * <br />\n * <b>PickTrayByPDFSize</b> <i>(boolean)</i><br />\n * Default value: false<br />\n * <br />\n * <b>PrintPageRange</b> <i>(Array)</i><br />\n * Example: [[1,5], [7,9]]<br />\n * Default value: as defined by PDF viewer application<br />\n * <br />\n * <b>NumCopies</b> <i>(Number)</i><br />\n * Possible values: 1, 2, 3, 4, 5<br />\n * Default value: 1<br />\n * <br />\n * For more information see the PDF Reference, sixth edition on Page 577\n * @param {boolean} doReset True to reset the settings\n * @function\n * @returns jsPDF jsPDF-instance\n * @example\n * var doc = new jsPDF()\n * doc.text('This is a test', 10, 10)\n * doc.viewerPreferences({'FitWindow': true}, true)\n * doc.save(\"viewerPreferences.pdf\")\n *\n * // Example printing 10 copies, using cropbox, and hiding UI.\n * doc.viewerPreferences({\n * 'HideWindowUI': true,\n * 'PrintArea': 'CropBox',\n * 'NumCopies': 10\n * })\n */\n jsPDFAPI.viewerPreferences = function(options, doReset) {\n options = options || {};\n doReset = doReset || false;\n\n var configuration;\n var configurationTemplate = {\n HideToolbar: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n HideMenubar: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n HideWindowUI: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n FitWindow: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n CenterWindow: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n DisplayDocTitle: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.4\n },\n NonFullScreenPageMode: {\n defaultValue: \"UseNone\",\n value: \"UseNone\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"UseNone\", \"UseOutlines\", \"UseThumbs\", \"UseOC\"],\n pdfVersion: 1.3\n },\n Direction: {\n defaultValue: \"L2R\",\n value: \"L2R\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"L2R\", \"R2L\"],\n pdfVersion: 1.3\n },\n ViewArea: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n ViewClip: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n PrintArea: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n PrintClip: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n PrintScaling: {\n defaultValue: \"AppDefault\",\n value: \"AppDefault\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"AppDefault\", \"None\"],\n pdfVersion: 1.6\n },\n Duplex: {\n defaultValue: \"\",\n value: \"none\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\n \"Simplex\",\n \"DuplexFlipShortEdge\",\n \"DuplexFlipLongEdge\",\n \"none\"\n ],\n pdfVersion: 1.7\n },\n PickTrayByPDFSize: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.7\n },\n PrintPageRange: {\n defaultValue: \"\",\n value: \"\",\n type: \"array\",\n explicitSet: false,\n valueSet: null,\n pdfVersion: 1.7\n },\n NumCopies: {\n defaultValue: 1,\n value: 1,\n type: \"integer\",\n explicitSet: false,\n valueSet: null,\n pdfVersion: 1.7\n }\n };\n\n var configurationKeys = Object.keys(configurationTemplate);\n\n var rangeArray = [];\n var i = 0;\n var j = 0;\n var k = 0;\n var isValid;\n\n var method;\n var value;\n\n function arrayContainsElement(array, element) {\n var iterator;\n var result = false;\n\n for (iterator = 0; iterator < array.length; iterator += 1) {\n if (array[iterator] === element) {\n result = true;\n }\n }\n return result;\n }\n\n if (this.internal.viewerpreferences === undefined) {\n this.internal.viewerpreferences = {};\n this.internal.viewerpreferences.configuration = JSON.parse(\n JSON.stringify(configurationTemplate)\n );\n this.internal.viewerpreferences.isSubscribed = false;\n }\n configuration = this.internal.viewerpreferences.configuration;\n\n if (options === \"reset\" || doReset === true) {\n var len = configurationKeys.length;\n\n for (k = 0; k < len; k += 1) {\n configuration[configurationKeys[k]].value =\n configuration[configurationKeys[k]].defaultValue;\n configuration[configurationKeys[k]].explicitSet = false;\n }\n }\n\n if (typeof options === \"object\") {\n for (method in options) {\n value = options[method];\n if (\n arrayContainsElement(configurationKeys, method) &&\n value !== undefined\n ) {\n if (\n configuration[method].type === \"boolean\" &&\n typeof value === \"boolean\"\n ) {\n configuration[method].value = value;\n } else if (\n configuration[method].type === \"name\" &&\n arrayContainsElement(configuration[method].valueSet, value)\n ) {\n configuration[method].value = value;\n } else if (\n configuration[method].type === \"integer\" &&\n Number.isInteger(value)\n ) {\n configuration[method].value = value;\n } else if (configuration[method].type === \"array\") {\n for (i = 0; i < value.length; i += 1) {\n isValid = true;\n if (value[i].length === 1 && typeof value[i][0] === \"number\") {\n rangeArray.push(String(value[i] - 1));\n } else if (value[i].length > 1) {\n for (j = 0; j < value[i].length; j += 1) {\n if (typeof value[i][j] !== \"number\") {\n isValid = false;\n }\n }\n if (isValid === true) {\n rangeArray.push([value[i][0] - 1, value[i][1] - 1].join(\" \"));\n }\n }\n }\n configuration[method].value = \"[\" + rangeArray.join(\" \") + \"]\";\n } else {\n configuration[method].value = configuration[method].defaultValue;\n }\n\n configuration[method].explicitSet = true;\n }\n }\n }\n\n if (this.internal.viewerpreferences.isSubscribed === false) {\n this.internal.events.subscribe(\"putCatalog\", function() {\n var pdfDict = [];\n var vPref;\n for (vPref in configuration) {\n if (configuration[vPref].explicitSet === true) {\n if (configuration[vPref].type === \"name\") {\n pdfDict.push(\"/\" + vPref + \" /\" + configuration[vPref].value);\n } else {\n pdfDict.push(\"/\" + vPref + \" \" + configuration[vPref].value);\n }\n }\n }\n if (pdfDict.length !== 0) {\n this.internal.write(\n \"/ViewerPreferences\\n<<\\n\" + pdfDict.join(\"\\n\") + \"\\n>>\"\n );\n }\n });\n this.internal.viewerpreferences.isSubscribed = true;\n }\n\n this.internal.viewerpreferences.configuration = configuration;\n return this;\n };\n})(jsPDF.API);\n","/** ====================================================================\n * @license\n * jsPDF XMP metadata plugin\n * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name xmp_metadata\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var postPutResources = function() {\n var xmpmeta_beginning = '<x:xmpmeta xmlns:x=\"adobe:ns:meta/\">';\n var rdf_beginning =\n '<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"><rdf:Description rdf:about=\"\" xmlns:jspdf=\"' +\n this.internal.__metadata__.namespaceuri +\n '\"><jspdf:metadata>';\n var rdf_ending = \"</jspdf:metadata></rdf:Description></rdf:RDF>\";\n var xmpmeta_ending = \"</x:xmpmeta>\";\n var utf8_xmpmeta_beginning = unescape(\n encodeURIComponent(xmpmeta_beginning)\n );\n var utf8_rdf_beginning = unescape(encodeURIComponent(rdf_beginning));\n var utf8_metadata = unescape(\n encodeURIComponent(this.internal.__metadata__.metadata)\n );\n var utf8_rdf_ending = unescape(encodeURIComponent(rdf_ending));\n var utf8_xmpmeta_ending = unescape(encodeURIComponent(xmpmeta_ending));\n\n var total_len =\n utf8_rdf_beginning.length +\n utf8_metadata.length +\n utf8_rdf_ending.length +\n utf8_xmpmeta_beginning.length +\n utf8_xmpmeta_ending.length;\n\n this.internal.__metadata__.metadata_object_number = this.internal.newObject();\n this.internal.write(\n \"<< /Type /Metadata /Subtype /XML /Length \" + total_len + \" >>\"\n );\n this.internal.write(\"stream\");\n this.internal.write(\n utf8_xmpmeta_beginning +\n utf8_rdf_beginning +\n utf8_metadata +\n utf8_rdf_ending +\n utf8_xmpmeta_ending\n );\n this.internal.write(\"endstream\");\n this.internal.write(\"endobj\");\n };\n\n var putCatalog = function() {\n if (this.internal.__metadata__.metadata_object_number) {\n this.internal.write(\n \"/Metadata \" +\n this.internal.__metadata__.metadata_object_number +\n \" 0 R\"\n );\n }\n };\n\n /**\n * Adds XMP formatted metadata to PDF\n *\n * @name addMetadata\n * @function\n * @param {String} metadata The actual metadata to be added. The metadata shall be stored as XMP simple value. Note that if the metadata string contains XML markup characters \"<\", \">\" or \"&\", those characters should be written using XML entities.\n * @param {String} namespaceuri Sets the namespace URI for the metadata. Last character should be slash or hash.\n * @returns {jsPDF} jsPDF-instance\n */\n jsPDFAPI.addMetadata = function(metadata, namespaceuri) {\n if (typeof this.internal.__metadata__ === \"undefined\") {\n this.internal.__metadata__ = {\n metadata: metadata,\n namespaceuri: namespaceuri || \"http://jspdf.default.namespaceuri/\"\n };\n this.internal.events.subscribe(\"putCatalog\", putCatalog);\n\n this.internal.events.subscribe(\"postPutResources\", postPutResources);\n }\n return this;\n };\n})(jsPDF.API);\n","import { jsPDF } from \"../jspdf.js\";\nimport { toPDFName } from \"../libs/pdfname.js\";\n\n/**\n * @name utf8\n * @module\n */\n(function(jsPDF) {\n \"use strict\";\n var jsPDFAPI = jsPDF.API;\n\n /***************************************************************************************************/\n /* function : pdfEscape16 */\n /* comment : The character id of a 2-byte string is converted to a hexadecimal number by obtaining */\n /* the corresponding glyph id and width, and then adding padding to the string. */\n /***************************************************************************************************/\n var pdfEscape16 = (jsPDFAPI.pdfEscape16 = function(text, font) {\n var widths = font.metadata.Unicode.widths;\n var padz = [\"\", \"0\", \"00\", \"000\", \"0000\"];\n var ar = [\"\"];\n for (var i = 0, l = text.length, t; i < l; ++i) {\n t = font.metadata.characterToGlyph(text.charCodeAt(i));\n font.metadata.glyIdsUsed.push(t);\n font.metadata.toUnicode[t] = text.charCodeAt(i);\n if (widths.indexOf(t) == -1) {\n widths.push(t);\n widths.push([parseInt(font.metadata.widthOfGlyph(t), 10)]);\n }\n if (t == \"0\") {\n //Spaces are not allowed in cmap.\n return ar.join(\"\");\n } else {\n t = t.toString(16);\n ar.push(padz[4 - t.length], t);\n }\n }\n return ar.join(\"\");\n });\n\n var toUnicodeCmap = function(map) {\n var code, codes, range, unicode, unicodeMap, _i, _len;\n unicodeMap =\n \"/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap\\n/CIDSystemInfo <<\\n /Registry (Adobe)\\n /Ordering (UCS)\\n /Supplement 0\\n>> def\\n/CMapName /Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange\\n<0000><ffff>\\nendcodespacerange\";\n codes = Object.keys(map).sort(function(a, b) {\n return a - b;\n });\n\n range = [];\n for (_i = 0, _len = codes.length; _i < _len; _i++) {\n code = codes[_i];\n if (range.length >= 100) {\n unicodeMap +=\n \"\\n\" +\n range.length +\n \" beginbfchar\\n\" +\n range.join(\"\\n\") +\n \"\\nendbfchar\";\n range = [];\n }\n\n if (\n map[code] !== undefined &&\n map[code] !== null &&\n typeof map[code].toString === \"function\"\n ) {\n unicode = (\"0000\" + map[code].toString(16)).slice(-4);\n code = (\"0000\" + (+code).toString(16)).slice(-4);\n range.push(\"<\" + code + \"><\" + unicode + \">\");\n }\n }\n\n if (range.length) {\n unicodeMap +=\n \"\\n\" +\n range.length +\n \" beginbfchar\\n\" +\n range.join(\"\\n\") +\n \"\\nendbfchar\\n\";\n }\n unicodeMap +=\n \"endcmap\\nCMapName currentdict /CMap defineresource pop\\nend\\nend\";\n return unicodeMap;\n };\n\n var identityHFunction = function(options) {\n var font = options.font;\n var out = options.out;\n var newObject = options.newObject;\n var putStream = options.putStream;\n\n if (\n font.metadata instanceof jsPDF.API.TTFFont &&\n font.encoding === \"Identity-H\"\n ) {\n //Tag with Identity-H\n var widths = font.metadata.Unicode.widths;\n var data = font.metadata.subset.encode(font.metadata.glyIdsUsed, 1);\n var pdfOutput = data;\n var pdfOutput2 = \"\";\n for (var i = 0; i < pdfOutput.length; i++) {\n pdfOutput2 += String.fromCharCode(pdfOutput[i]);\n }\n var fontTable = newObject();\n putStream({ data: pdfOutput2, addLength1: true, objectId: fontTable });\n out(\"endobj\");\n\n var cmap = newObject();\n var cmapData = toUnicodeCmap(font.metadata.toUnicode);\n putStream({ data: cmapData, addLength1: true, objectId: cmap });\n out(\"endobj\");\n\n var fontDescriptor = newObject();\n out(\"<<\");\n out(\"/Type /FontDescriptor\");\n out(\"/FontName /\" + toPDFName(font.fontName));\n out(\"/FontFile2 \" + fontTable + \" 0 R\");\n out(\"/FontBBox \" + jsPDF.API.PDFObject.convert(font.metadata.bbox));\n out(\"/Flags \" + font.metadata.flags);\n out(\"/StemV \" + font.metadata.stemV);\n out(\"/ItalicAngle \" + font.metadata.italicAngle);\n out(\"/Ascent \" + font.metadata.ascender);\n out(\"/Descent \" + font.metadata.decender);\n out(\"/CapHeight \" + font.metadata.capHeight);\n out(\">>\");\n out(\"endobj\");\n\n var DescendantFont = newObject();\n out(\"<<\");\n out(\"/Type /Font\");\n out(\"/BaseFont /\" + toPDFName(font.fontName));\n out(\"/FontDescriptor \" + fontDescriptor + \" 0 R\");\n out(\"/W \" + jsPDF.API.PDFObject.convert(widths));\n out(\"/CIDToGIDMap /Identity\");\n out(\"/DW 1000\");\n out(\"/Subtype /CIDFontType2\");\n out(\"/CIDSystemInfo\");\n out(\"<<\");\n out(\"/Supplement 0\");\n out(\"/Registry (Adobe)\");\n out(\"/Ordering (\" + font.encoding + \")\");\n out(\">>\");\n out(\">>\");\n out(\"endobj\");\n\n font.objectNumber = newObject();\n out(\"<<\");\n out(\"/Type /Font\");\n out(\"/Subtype /Type0\");\n out(\"/ToUnicode \" + cmap + \" 0 R\");\n out(\"/BaseFont /\" + toPDFName(font.fontName));\n out(\"/Encoding /\" + font.encoding);\n out(\"/DescendantFonts [\" + DescendantFont + \" 0 R]\");\n out(\">>\");\n out(\"endobj\");\n\n font.isAlreadyPutted = true;\n }\n };\n\n jsPDFAPI.events.push([\n \"putFont\",\n function(args) {\n identityHFunction(args);\n }\n ]);\n\n var winAnsiEncodingFunction = function(options) {\n var font = options.font;\n var out = options.out;\n var newObject = options.newObject;\n var putStream = options.putStream;\n\n if (\n font.metadata instanceof jsPDF.API.TTFFont &&\n font.encoding === \"WinAnsiEncoding\"\n ) {\n //Tag with WinAnsi encoding\n var data = font.metadata.rawData;\n var pdfOutput = data;\n var pdfOutput2 = \"\";\n for (var i = 0; i < pdfOutput.length; i++) {\n pdfOutput2 += String.fromCharCode(pdfOutput[i]);\n }\n var fontTable = newObject();\n putStream({ data: pdfOutput2, addLength1: true, objectId: fontTable });\n out(\"endobj\");\n\n var cmap = newObject();\n var cmapData = toUnicodeCmap(font.metadata.toUnicode);\n putStream({ data: cmapData, addLength1: true, objectId: cmap });\n out(\"endobj\");\n\n var fontDescriptor = newObject();\n out(\"<<\");\n out(\"/Descent \" + font.metadata.decender);\n out(\"/CapHeight \" + font.metadata.capHeight);\n out(\"/StemV \" + font.metadata.stemV);\n out(\"/Type /FontDescriptor\");\n out(\"/FontFile2 \" + fontTable + \" 0 R\");\n out(\"/Flags 96\");\n out(\"/FontBBox \" + jsPDF.API.PDFObject.convert(font.metadata.bbox));\n out(\"/FontName /\" + toPDFName(font.fontName));\n out(\"/ItalicAngle \" + font.metadata.italicAngle);\n out(\"/Ascent \" + font.metadata.ascender);\n out(\">>\");\n out(\"endobj\");\n font.objectNumber = newObject();\n for (var j = 0; j < font.metadata.hmtx.widths.length; j++) {\n font.metadata.hmtx.widths[j] = parseInt(\n font.metadata.hmtx.widths[j] * (1000 / font.metadata.head.unitsPerEm)\n ); //Change the width of Em units to Point units.\n }\n out(\n \"<</Subtype/TrueType/Type/Font/ToUnicode \" +\n cmap +\n \" 0 R/BaseFont/\" +\n toPDFName(font.fontName) +\n \"/FontDescriptor \" +\n fontDescriptor +\n \" 0 R\" +\n \"/Encoding/\" +\n font.encoding +\n \" /FirstChar 29 /LastChar 255 /Widths \" +\n jsPDF.API.PDFObject.convert(font.metadata.hmtx.widths) +\n \">>\"\n );\n out(\"endobj\");\n font.isAlreadyPutted = true;\n }\n };\n\n jsPDFAPI.events.push([\n \"putFont\",\n function(args) {\n winAnsiEncodingFunction(args);\n }\n ]);\n\n var utf8TextFunction = function(args) {\n var text = args.text || \"\";\n var x = args.x;\n var y = args.y;\n var options = args.options || {};\n var mutex = args.mutex || {};\n\n var pdfEscape = mutex.pdfEscape;\n var activeFontKey = mutex.activeFontKey;\n var fonts = mutex.fonts;\n var key = activeFontKey;\n\n var str = \"\",\n s = 0,\n cmapConfirm;\n var strText = \"\";\n var encoding = fonts[key].encoding;\n\n if (fonts[key].encoding !== \"Identity-H\") {\n return {\n text: text,\n x: x,\n y: y,\n options: options,\n mutex: mutex\n };\n }\n strText = text;\n\n key = activeFontKey;\n if (Array.isArray(text)) {\n strText = text[0];\n }\n for (s = 0; s < strText.length; s += 1) {\n if (fonts[key].metadata.hasOwnProperty(\"cmap\")) {\n cmapConfirm =\n fonts[key].metadata.cmap.unicode.codeMap[strText[s].charCodeAt(0)];\n /*\n if (Object.prototype.toString.call(text) === '[object Array]') {\n var i = 0;\n // for (i = 0; i < text.length; i += 1) {\n if (Object.prototype.toString.call(text[s]) === '[object Array]') {\n cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s][0].charCodeAt(0)]; //Make sure the cmap has the corresponding glyph id\n } else {\n\n }\n //}\n\n } else {\n cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s].charCodeAt(0)]; //Make sure the cmap has the corresponding glyph id\n }*/\n }\n if (!cmapConfirm) {\n if (\n strText[s].charCodeAt(0) < 256 &&\n fonts[key].metadata.hasOwnProperty(\"Unicode\")\n ) {\n str += strText[s];\n } else {\n str += \"\";\n }\n } else {\n str += strText[s];\n }\n }\n var result = \"\";\n if (parseInt(key.slice(1)) < 14 || encoding === \"WinAnsiEncoding\") {\n //For the default 13 font\n result = pdfEscape(str, key)\n .split(\"\")\n .map(function(cv) {\n return cv.charCodeAt(0).toString(16);\n })\n .join(\"\");\n } else if (encoding === \"Identity-H\") {\n result = pdfEscape16(str, fonts[key]);\n }\n mutex.isHex = true;\n\n return {\n text: result,\n x: x,\n y: y,\n options: options,\n mutex: mutex\n };\n };\n\n var utf8EscapeFunction = function(parms) {\n var text = parms.text || \"\",\n x = parms.x,\n y = parms.y,\n options = parms.options,\n mutex = parms.mutex;\n var tmpText = [];\n var args = {\n text: text,\n x: x,\n y: y,\n options: options,\n mutex: mutex\n };\n\n if (Array.isArray(text)) {\n var i = 0;\n for (i = 0; i < text.length; i += 1) {\n if (Array.isArray(text[i])) {\n if (text[i].length === 3) {\n tmpText.push([\n utf8TextFunction(Object.assign({}, args, { text: text[i][0] }))\n .text,\n text[i][1],\n text[i][2]\n ]);\n } else {\n tmpText.push(\n utf8TextFunction(Object.assign({}, args, { text: text[i] })).text\n );\n }\n } else {\n tmpText.push(\n utf8TextFunction(Object.assign({}, args, { text: text[i] })).text\n );\n }\n }\n parms.text = tmpText;\n } else {\n parms.text = utf8TextFunction(\n Object.assign({}, args, { text: text })\n ).text;\n }\n };\n\n jsPDFAPI.events.push([\"postProcessText\", utf8EscapeFunction]);\n})(jsPDF);\n","/**\n * @license\n * jsPDF virtual FileSystem functionality\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * Use the vFS to handle files\n *\n * @name vFS\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var _initializeVFS = function() {\n if (typeof this.internal.vFS === \"undefined\") {\n this.internal.vFS = {};\n }\n return true;\n };\n\n /**\n * Check if the file exists in the vFS\n *\n * @name existsFileInVFS\n * @function\n * @param {string} Possible filename in the vFS.\n * @returns {boolean}\n * @example\n * doc.existsFileInVFS(\"someFile.txt\");\n */\n jsPDFAPI.existsFileInVFS = function(filename) {\n _initializeVFS.call(this);\n return typeof this.internal.vFS[filename] !== \"undefined\";\n };\n\n /**\n * Add a file to the vFS\n *\n * @name addFileToVFS\n * @function\n * @param {string} filename The name of the file which should be added.\n * @param {string} filecontent The content of the file.\n * @returns {jsPDF}\n * @example\n * doc.addFileToVFS(\"someFile.txt\", \"BADFACE1\");\n */\n jsPDFAPI.addFileToVFS = function(filename, filecontent) {\n _initializeVFS.call(this);\n this.internal.vFS[filename] = filecontent;\n return this;\n };\n\n /**\n * Get the file from the vFS\n *\n * @name getFileFromVFS\n * @function\n * @param {string} The name of the file which gets requested.\n * @returns {string}\n * @example\n * doc.getFileFromVFS(\"someFile.txt\");\n */\n jsPDFAPI.getFileFromVFS = function(filename) {\n _initializeVFS.call(this);\n\n if (typeof this.internal.vFS[filename] !== \"undefined\") {\n return this.internal.vFS[filename];\n }\n return null;\n };\n})(jsPDF.API);\n","/**\n * @license\n * Unicode Bidi Engine based on the work of Alex Shensis (@asthensis)\n * MIT License\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n(function(jsPDF) {\n \"use strict\";\n /**\n * Table of Unicode types.\n *\n * Generated by:\n *\n * var bidi = require(\"./bidi/index\");\n * var bidi_accumulate = bidi.slice(0, 256).concat(bidi.slice(0x0500, 0x0500 + 256 * 3)).\n * concat(bidi.slice(0x2000, 0x2000 + 256)).concat(bidi.slice(0xFB00, 0xFB00 + 256)).\n * concat(bidi.slice(0xFE00, 0xFE00 + 2 * 256));\n *\n * for( var i = 0; i < bidi_accumulate.length; i++) {\n * \tif(bidi_accumulate[i] === undefined || bidi_accumulate[i] === 'ON')\n * \t\tbidi_accumulate[i] = 'N'; //mark as neutral to conserve space and substitute undefined\n * }\n * var bidiAccumulateStr = 'return [ \"' + bidi_accumulate.toString().replace(/,/g, '\", \"') + '\" ];';\n * require(\"fs\").writeFile('unicode-types.js', bidiAccumulateStr);\n *\n * Based on:\n * https://github.com/mathiasbynens/unicode-8.0.0\n */\n var bidiUnicodeTypes = [\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"S\",\n \"B\",\n \"S\",\n \"WS\",\n \"B\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"B\",\n \"B\",\n \"B\",\n \"S\",\n \"WS\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ES\",\n \"CS\",\n \"ES\",\n \"CS\",\n \"CS\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"B\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"CS\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"N\",\n \"N\",\n \"BN\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"EN\",\n \"EN\",\n \"N\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"EN\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"N\",\n \"N\",\n \"AL\",\n \"ET\",\n \"ET\",\n \"AL\",\n \"CS\",\n \"AL\",\n \"N\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"ET\",\n \"AN\",\n \"AN\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AN\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"L\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"WS\",\n \"B\",\n \"LRE\",\n \"RLE\",\n \"PDF\",\n \"LRO\",\n \"RLO\",\n \"CS\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"WS\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"N\",\n \"LRI\",\n \"RLI\",\n \"FSI\",\n \"PDI\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"EN\",\n \"L\",\n \"N\",\n \"N\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"ES\",\n \"ES\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"ES\",\n \"ES\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"NSM\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"ES\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"CS\",\n \"N\",\n \"CS\",\n \"N\",\n \"N\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"N\",\n \"N\",\n \"ES\",\n \"ES\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"N\",\n \"BN\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ES\",\n \"CS\",\n \"ES\",\n \"CS\",\n \"CS\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\"\n ];\n\n /**\n * Unicode Bidi algorithm compliant Bidi engine.\n * For reference see http://unicode.org/reports/tr9/\n */\n\n /**\n * constructor ( options )\n *\n * Initializes Bidi engine\n *\n * @param {Object} See 'setOptions' below for detailed description.\n * options are cashed between invocation of 'doBidiReorder' method\n *\n * sample usage pattern of BidiEngine:\n * var opt = {\n * \tisInputVisual: true,\n * \tisInputRtl: false,\n * \tisOutputVisual: false,\n * \tisOutputRtl: false,\n * \tisSymmetricSwapping: true\n * }\n * var sourceToTarget = [], levels = [];\n * var bidiEng = Globalize.bidiEngine(opt);\n * var src = \"text string to be reordered\";\n * var ret = bidiEng.doBidiReorder(src, sourceToTarget, levels);\n */\n\n jsPDF.__bidiEngine__ = jsPDF.prototype.__bidiEngine__ = function(options) {\n var _UNICODE_TYPES = _bidiUnicodeTypes;\n\n var _STATE_TABLE_LTR = [\n [0, 3, 0, 1, 0, 0, 0],\n [0, 3, 0, 1, 2, 2, 0],\n [0, 3, 0, 0x11, 2, 0, 1],\n [0, 3, 5, 5, 4, 1, 0],\n [0, 3, 0x15, 0x15, 4, 0, 1],\n [0, 3, 5, 5, 4, 2, 0]\n ];\n\n var _STATE_TABLE_RTL = [\n [2, 0, 1, 1, 0, 1, 0],\n [2, 0, 1, 1, 0, 2, 0],\n [2, 0, 2, 1, 3, 2, 0],\n [2, 0, 2, 0x21, 3, 1, 1]\n ];\n\n var _TYPE_NAMES_MAP = { L: 0, R: 1, EN: 2, AN: 3, N: 4, B: 5, S: 6 };\n\n var _UNICODE_RANGES_MAP = {\n 0: 0,\n 5: 1,\n 6: 2,\n 7: 3,\n 0x20: 4,\n 0xfb: 5,\n 0xfe: 6,\n 0xff: 7\n };\n\n var _SWAP_TABLE = [\n \"\\u0028\",\n \"\\u0029\",\n \"\\u0028\",\n \"\\u003C\",\n \"\\u003E\",\n \"\\u003C\",\n \"\\u005B\",\n \"\\u005D\",\n \"\\u005B\",\n \"\\u007B\",\n \"\\u007D\",\n \"\\u007B\",\n \"\\u00AB\",\n \"\\u00BB\",\n \"\\u00AB\",\n \"\\u2039\",\n \"\\u203A\",\n \"\\u2039\",\n \"\\u2045\",\n \"\\u2046\",\n \"\\u2045\",\n \"\\u207D\",\n \"\\u207E\",\n \"\\u207D\",\n \"\\u208D\",\n \"\\u208E\",\n \"\\u208D\",\n \"\\u2264\",\n \"\\u2265\",\n \"\\u2264\",\n \"\\u2329\",\n \"\\u232A\",\n \"\\u2329\",\n \"\\uFE59\",\n \"\\uFE5A\",\n \"\\uFE59\",\n \"\\uFE5B\",\n \"\\uFE5C\",\n \"\\uFE5B\",\n \"\\uFE5D\",\n \"\\uFE5E\",\n \"\\uFE5D\",\n \"\\uFE64\",\n \"\\uFE65\",\n \"\\uFE64\"\n ];\n\n var _LTR_RANGES_REG_EXPR = new RegExp(\n /^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/\n );\n\n var _lastArabic = false,\n _hasUbatAl,\n _hasUbatB,\n _hasUbatS,\n DIR_LTR = 0,\n DIR_RTL = 1,\n _isInVisual,\n _isInRtl,\n _isOutVisual,\n _isOutRtl,\n _isSymmetricSwapping,\n _dir = DIR_LTR;\n\n this.__bidiEngine__ = {};\n\n var _init = function(text, sourceToTargetMap) {\n if (sourceToTargetMap) {\n for (var i = 0; i < text.length; i++) {\n sourceToTargetMap[i] = i;\n }\n }\n if (_isInRtl === undefined) {\n _isInRtl = _isContextualDirRtl(text);\n }\n if (_isOutRtl === undefined) {\n _isOutRtl = _isContextualDirRtl(text);\n }\n };\n\n // for reference see 3.2 in http://unicode.org/reports/tr9/\n //\n var _getCharType = function(ch) {\n var charCode = ch.charCodeAt(),\n range = charCode >> 8,\n rangeIdx = _UNICODE_RANGES_MAP[range];\n\n if (rangeIdx !== undefined) {\n return _UNICODE_TYPES[rangeIdx * 256 + (charCode & 0xff)];\n } else if (range === 0xfc || range === 0xfd) {\n return \"AL\";\n } else if (_LTR_RANGES_REG_EXPR.test(range)) {\n //unlikely case\n return \"L\";\n } else if (range === 8) {\n // even less likely\n return \"R\";\n }\n return \"N\"; //undefined type, mark as neutral\n };\n\n var _isContextualDirRtl = function(text) {\n for (var i = 0, charType; i < text.length; i++) {\n charType = _getCharType(text.charAt(i));\n if (charType === \"L\") {\n return false;\n } else if (charType === \"R\") {\n return true;\n }\n }\n return false;\n };\n\n // for reference see 3.3.4 & 3.3.5 in http://unicode.org/reports/tr9/\n //\n var _resolveCharType = function(chars, types, resolvedTypes, index) {\n var cType = types[index],\n wType,\n nType,\n i,\n len;\n switch (cType) {\n case \"L\":\n case \"R\":\n _lastArabic = false;\n break;\n case \"N\":\n case \"AN\":\n break;\n\n case \"EN\":\n if (_lastArabic) {\n cType = \"AN\";\n }\n break;\n\n case \"AL\":\n _lastArabic = true;\n _hasUbatAl = true;\n cType = \"R\";\n break;\n\n case \"WS\":\n cType = \"N\";\n break;\n\n case \"CS\":\n if (\n index < 1 ||\n index + 1 >= types.length ||\n ((wType = resolvedTypes[index - 1]) !== \"EN\" && wType !== \"AN\") ||\n ((nType = types[index + 1]) !== \"EN\" && nType !== \"AN\")\n ) {\n cType = \"N\";\n } else if (_lastArabic) {\n nType = \"AN\";\n }\n cType = nType === wType ? nType : \"N\";\n break;\n\n case \"ES\":\n wType = index > 0 ? resolvedTypes[index - 1] : \"B\";\n cType =\n wType === \"EN\" &&\n index + 1 < types.length &&\n types[index + 1] === \"EN\"\n ? \"EN\"\n : \"N\";\n break;\n\n case \"ET\":\n if (index > 0 && resolvedTypes[index - 1] === \"EN\") {\n cType = \"EN\";\n break;\n } else if (_lastArabic) {\n cType = \"N\";\n break;\n }\n i = index + 1;\n len = types.length;\n while (i < len && types[i] === \"ET\") {\n i++;\n }\n if (i < len && types[i] === \"EN\") {\n cType = \"EN\";\n } else {\n cType = \"N\";\n }\n break;\n\n case \"NSM\":\n if (_isInVisual && !_isInRtl) {\n //V->L\n len = types.length;\n i = index + 1;\n while (i < len && types[i] === \"NSM\") {\n i++;\n }\n if (i < len) {\n var c = chars[index];\n var rtlCandidate = (c >= 0x0591 && c <= 0x08ff) || c === 0xfb1e;\n wType = types[i];\n if (rtlCandidate && (wType === \"R\" || wType === \"AL\")) {\n cType = \"R\";\n break;\n }\n }\n }\n if (index < 1 || (wType = types[index - 1]) === \"B\") {\n cType = \"N\";\n } else {\n cType = resolvedTypes[index - 1];\n }\n break;\n\n case \"B\":\n _lastArabic = false;\n _hasUbatB = true;\n cType = _dir;\n break;\n\n case \"S\":\n _hasUbatS = true;\n cType = \"N\";\n break;\n\n case \"LRE\":\n case \"RLE\":\n case \"LRO\":\n case \"RLO\":\n case \"PDF\":\n _lastArabic = false;\n break;\n case \"BN\":\n cType = \"N\";\n break;\n }\n return cType;\n };\n\n var _handleUbatS = function(types, levels, length) {\n for (var i = 0; i < length; i++) {\n if (types[i] === \"S\") {\n levels[i] = _dir;\n for (var j = i - 1; j >= 0; j--) {\n if (types[j] === \"WS\") {\n levels[j] = _dir;\n } else {\n break;\n }\n }\n }\n }\n };\n\n var _invertString = function(text, sourceToTargetMap, levels) {\n var charArray = text.split(\"\");\n if (levels) {\n _computeLevels(charArray, levels, { hiLevel: _dir });\n }\n charArray.reverse();\n sourceToTargetMap && sourceToTargetMap.reverse();\n return charArray.join(\"\");\n };\n\n // For reference see 3.3 in http://unicode.org/reports/tr9/\n //\n var _computeLevels = function(chars, levels, params) {\n var action,\n condition,\n i,\n index,\n newLevel,\n prevState,\n condPos = -1,\n len = chars.length,\n newState = 0,\n resolvedTypes = [],\n stateTable = _dir ? _STATE_TABLE_RTL : _STATE_TABLE_LTR,\n types = [];\n\n _lastArabic = false;\n _hasUbatAl = false;\n _hasUbatB = false;\n _hasUbatS = false;\n for (i = 0; i < len; i++) {\n types[i] = _getCharType(chars[i]);\n }\n for (index = 0; index < len; index++) {\n prevState = newState;\n resolvedTypes[index] = _resolveCharType(\n chars,\n types,\n resolvedTypes,\n index\n );\n newState = stateTable[prevState][_TYPE_NAMES_MAP[resolvedTypes[index]]];\n action = newState & 0xf0;\n newState &= 0x0f;\n levels[index] = newLevel = stateTable[newState][5];\n if (action > 0) {\n if (action === 0x10) {\n for (i = condPos; i < index; i++) {\n levels[i] = 1;\n }\n condPos = -1;\n } else {\n condPos = -1;\n }\n }\n condition = stateTable[newState][6];\n if (condition) {\n if (condPos === -1) {\n condPos = index;\n }\n } else {\n if (condPos > -1) {\n for (i = condPos; i < index; i++) {\n levels[i] = newLevel;\n }\n condPos = -1;\n }\n }\n if (types[index] === \"B\") {\n levels[index] = 0;\n }\n params.hiLevel |= newLevel;\n }\n if (_hasUbatS) {\n _handleUbatS(types, levels, len);\n }\n };\n\n // for reference see 3.4 in http://unicode.org/reports/tr9/\n //\n var _invertByLevel = function(\n level,\n charArray,\n sourceToTargetMap,\n levels,\n params\n ) {\n if (params.hiLevel < level) {\n return;\n }\n if (level === 1 && _dir === DIR_RTL && !_hasUbatB) {\n charArray.reverse();\n sourceToTargetMap && sourceToTargetMap.reverse();\n return;\n }\n var ch,\n high,\n end,\n low,\n len = charArray.length,\n start = 0;\n\n while (start < len) {\n if (levels[start] >= level) {\n end = start + 1;\n while (end < len && levels[end] >= level) {\n end++;\n }\n for (low = start, high = end - 1; low < high; low++, high--) {\n ch = charArray[low];\n charArray[low] = charArray[high];\n charArray[high] = ch;\n if (sourceToTargetMap) {\n ch = sourceToTargetMap[low];\n sourceToTargetMap[low] = sourceToTargetMap[high];\n sourceToTargetMap[high] = ch;\n }\n }\n start = end;\n }\n start++;\n }\n };\n\n // for reference see 7 & BD16 in http://unicode.org/reports/tr9/\n //\n var _symmetricSwap = function(charArray, levels, params) {\n if (params.hiLevel !== 0 && _isSymmetricSwapping) {\n for (var i = 0, index; i < charArray.length; i++) {\n if (levels[i] === 1) {\n index = _SWAP_TABLE.indexOf(charArray[i]);\n if (index >= 0) {\n charArray[i] = _SWAP_TABLE[index + 1];\n }\n }\n }\n }\n };\n\n var _reorder = function(text, sourceToTargetMap, levels) {\n var charArray = text.split(\"\"),\n params = { hiLevel: _dir };\n\n if (!levels) {\n levels = [];\n }\n _computeLevels(charArray, levels, params);\n _symmetricSwap(charArray, levels, params);\n _invertByLevel(DIR_RTL + 1, charArray, sourceToTargetMap, levels, params);\n _invertByLevel(DIR_RTL, charArray, sourceToTargetMap, levels, params);\n return charArray.join(\"\");\n };\n\n // doBidiReorder( text, sourceToTargetMap, levels )\n // Performs Bidi reordering by implementing Unicode Bidi algorithm.\n // Returns reordered string\n // @text [String]:\n // - input string to be reordered, this is input parameter\n // $sourceToTargetMap [Array] (optional)\n // - resultant mapping between input and output strings, this is output parameter\n // $levels [Array] (optional)\n // - array of calculated Bidi levels, , this is output parameter\n this.__bidiEngine__.doBidiReorder = function(\n text,\n sourceToTargetMap,\n levels\n ) {\n _init(text, sourceToTargetMap);\n if (!_isInVisual && _isOutVisual && !_isOutRtl) {\n // LLTR->VLTR, LRTL->VLTR\n _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n } else if (_isInVisual && _isOutVisual && _isInRtl ^ _isOutRtl) {\n // VRTL->VLTR, VLTR->VRTL\n _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n text = _invertString(text, sourceToTargetMap, levels);\n } else if (!_isInVisual && _isOutVisual && _isOutRtl) {\n // LLTR->VRTL, LRTL->VRTL\n _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n } else if (_isInVisual && !_isInRtl && !_isOutVisual && !_isOutRtl) {\n // VLTR->LLTR\n _dir = DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n } else if (_isInVisual && !_isOutVisual && _isInRtl ^ _isOutRtl) {\n // VLTR->LRTL, VRTL->LLTR\n text = _invertString(text, sourceToTargetMap);\n if (_isInRtl) {\n //LLTR -> VLTR\n _dir = DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n } else {\n //LRTL -> VRTL\n _dir = DIR_RTL;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n }\n } else if (_isInVisual && _isInRtl && !_isOutVisual && _isOutRtl) {\n // VRTL->LRTL\n _dir = DIR_RTL;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n } else if (!_isInVisual && !_isOutVisual && _isInRtl ^ _isOutRtl) {\n // LRTL->LLTR, LLTR->LRTL\n var isSymmetricSwappingOrig = _isSymmetricSwapping;\n if (_isInRtl) {\n //LRTL->LLTR\n _dir = DIR_RTL;\n text = _reorder(text, sourceToTargetMap, levels);\n _dir = DIR_LTR;\n _isSymmetricSwapping = false;\n text = _reorder(text, sourceToTargetMap, levels);\n _isSymmetricSwapping = isSymmetricSwappingOrig;\n } else {\n //LLTR->LRTL\n _dir = DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n _dir = DIR_RTL;\n _isSymmetricSwapping = false;\n text = _reorder(text, sourceToTargetMap, levels);\n _isSymmetricSwapping = isSymmetricSwappingOrig;\n text = _invertString(text, sourceToTargetMap);\n }\n }\n return text;\n };\n\n /**\n * @name setOptions( options )\n * @function\n * Sets options for Bidi conversion\n * @param {Object}:\n * - isInputVisual {boolean} (defaults to false): allowed values: true(Visual mode), false(Logical mode)\n * - isInputRtl {boolean}: allowed values true(Right-to-left direction), false (Left-to-right directiion), undefined(Contectual direction, i.e.direction defined by first strong character of input string)\n * - isOutputVisual {boolean} (defaults to false): allowed values: true(Visual mode), false(Logical mode)\n * - isOutputRtl {boolean}: allowed values true(Right-to-left direction), false (Left-to-right directiion), undefined(Contectual direction, i.e.direction defined by first strong characterof input string)\n * - isSymmetricSwapping {boolean} (defaults to false): allowed values true(needs symmetric swapping), false (no need in symmetric swapping),\n */\n this.__bidiEngine__.setOptions = function(options) {\n if (options) {\n _isInVisual = options.isInputVisual;\n _isOutVisual = options.isOutputVisual;\n _isInRtl = options.isInputRtl;\n _isOutRtl = options.isOutputRtl;\n _isSymmetricSwapping = options.isSymmetricSwapping;\n }\n };\n\n this.__bidiEngine__.setOptions(options);\n return this.__bidiEngine__;\n };\n\n var _bidiUnicodeTypes = bidiUnicodeTypes;\n\n var bidiEngine = new jsPDF.__bidiEngine__({ isInputVisual: true });\n\n var bidiEngineFunction = function(args) {\n var text = args.text;\n var x = args.x;\n var y = args.y;\n var options = args.options || {};\n var mutex = args.mutex || {};\n var lang = options.lang;\n var tmpText = [];\n\n options.isInputVisual =\n typeof options.isInputVisual === \"boolean\" ? options.isInputVisual : true;\n bidiEngine.setOptions(options);\n\n if (Object.prototype.toString.call(text) === \"[object Array]\") {\n var i = 0;\n tmpText = [];\n for (i = 0; i < text.length; i += 1) {\n if (Object.prototype.toString.call(text[i]) === \"[object Array]\") {\n tmpText.push([\n bidiEngine.doBidiReorder(text[i][0]),\n text[i][1],\n text[i][2]\n ]);\n } else {\n tmpText.push([bidiEngine.doBidiReorder(text[i])]);\n }\n }\n args.text = tmpText;\n } else {\n args.text = bidiEngine.doBidiReorder(text);\n }\n bidiEngine.setOptions({ isInputVisual: true });\n };\n\n jsPDF.API.events.push([\"postProcessText\", bidiEngineFunction]);\n})(jsPDF);\n","/* eslint-disable no-control-regex */\n/************************************************\n * Title : custom font *\n * Start Data : 2017. 01. 22. *\n * Comment : TEXT API *\n ************************************************/\n\n/******************************\n * jsPDF extension API Design *\n * ****************************/\n\nimport { jsPDF } from \"../jspdf.js\";\n\njsPDF.API.TTFFont = (function() {\n /************************************************************************/\n /* function : open */\n /* comment : Decode the encoded ttf content and create a TTFFont object. */\n /************************************************************************/\n TTFFont.open = function(file) {\n return new TTFFont(file);\n };\n /***************************************************************/\n /* function : TTFFont gernerator */\n /* comment : Decode TTF contents are parsed, Data, */\n /* Subset object is created, and registerTTF function is called.*/\n /***************************************************************/\n function TTFFont(rawData) {\n var data;\n this.rawData = rawData;\n data = this.contents = new Data(rawData);\n this.contents.pos = 4;\n if (data.readString(4) === \"ttcf\") {\n throw new Error(\"TTCF not supported.\");\n } else {\n data.pos = 0;\n this.parse();\n this.subset = new Subset(this);\n this.registerTTF();\n }\n }\n /********************************************************/\n /* function : parse */\n /* comment : TTF Parses the file contents by each table.*/\n /********************************************************/\n TTFFont.prototype.parse = function() {\n this.directory = new Directory(this.contents);\n this.head = new HeadTable(this);\n this.name = new NameTable(this);\n this.cmap = new CmapTable(this);\n this.toUnicode = {};\n this.hhea = new HheaTable(this);\n this.maxp = new MaxpTable(this);\n this.hmtx = new HmtxTable(this);\n this.post = new PostTable(this);\n this.os2 = new OS2Table(this);\n this.loca = new LocaTable(this);\n this.glyf = new GlyfTable(this);\n this.ascender =\n (this.os2.exists && this.os2.ascender) || this.hhea.ascender;\n this.decender =\n (this.os2.exists && this.os2.decender) || this.hhea.decender;\n this.lineGap = (this.os2.exists && this.os2.lineGap) || this.hhea.lineGap;\n return (this.bbox = [\n this.head.xMin,\n this.head.yMin,\n this.head.xMax,\n this.head.yMax\n ]);\n };\n /***************************************************************/\n /* function : registerTTF */\n /* comment : Get the value to assign pdf font descriptors. */\n /***************************************************************/\n TTFFont.prototype.registerTTF = function() {\n var e, hi, low, raw, _ref;\n this.scaleFactor = 1000.0 / this.head.unitsPerEm;\n this.bbox = function() {\n var _i, _len, _ref, _results;\n _ref = this.bbox;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n e = _ref[_i];\n _results.push(Math.round(e * this.scaleFactor));\n }\n return _results;\n }.call(this);\n this.stemV = 0;\n if (this.post.exists) {\n raw = this.post.italic_angle;\n hi = raw >> 16;\n low = raw & 0xff;\n if ((hi & 0x8000) !== 0) {\n hi = -((hi ^ 0xffff) + 1);\n }\n this.italicAngle = +(\"\" + hi + \".\" + low);\n } else {\n this.italicAngle = 0;\n }\n this.ascender = Math.round(this.ascender * this.scaleFactor);\n this.decender = Math.round(this.decender * this.scaleFactor);\n this.lineGap = Math.round(this.lineGap * this.scaleFactor);\n this.capHeight = (this.os2.exists && this.os2.capHeight) || this.ascender;\n this.xHeight = (this.os2.exists && this.os2.xHeight) || 0;\n this.familyClass = ((this.os2.exists && this.os2.familyClass) || 0) >> 8;\n this.isSerif =\n (_ref = this.familyClass) === 1 ||\n _ref === 2 ||\n _ref === 3 ||\n _ref === 4 ||\n _ref === 5 ||\n _ref === 7;\n this.isScript = this.familyClass === 10;\n this.flags = 0;\n if (this.post.isFixedPitch) {\n this.flags |= 1 << 0;\n }\n if (this.isSerif) {\n this.flags |= 1 << 1;\n }\n if (this.isScript) {\n this.flags |= 1 << 3;\n }\n if (this.italicAngle !== 0) {\n this.flags |= 1 << 6;\n }\n this.flags |= 1 << 5;\n if (!this.cmap.unicode) {\n throw new Error(\"No unicode cmap for font\");\n }\n };\n TTFFont.prototype.characterToGlyph = function(character) {\n var _ref;\n return (\n ((_ref = this.cmap.unicode) != null ? _ref.codeMap[character] : void 0) ||\n 0\n );\n };\n TTFFont.prototype.widthOfGlyph = function(glyph) {\n var scale;\n scale = 1000.0 / this.head.unitsPerEm;\n return this.hmtx.forGlyph(glyph).advance * scale;\n };\n TTFFont.prototype.widthOfString = function(string, size, charSpace) {\n var charCode, i, scale, width, _ref;\n string = \"\" + string;\n width = 0;\n for (\n i = 0, _ref = string.length;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n charCode = string.charCodeAt(i);\n width +=\n this.widthOfGlyph(this.characterToGlyph(charCode)) +\n charSpace * (1000 / size) || 0;\n }\n scale = size / 1000;\n return width * scale;\n };\n TTFFont.prototype.lineHeight = function(size, includeGap) {\n var gap;\n if (includeGap == null) {\n includeGap = false;\n }\n gap = includeGap ? this.lineGap : 0;\n return ((this.ascender + gap - this.decender) / 1000) * size;\n };\n return TTFFont;\n})();\n\n/************************************************************************************************/\n/* function : Data */\n/* comment : The ttf data decoded and stored in an array is read and written to the Data object.*/\n/************************************************************************************************/\nvar Data = (function() {\n function Data(data) {\n this.data = data != null ? data : [];\n this.pos = 0;\n this.length = this.data.length;\n }\n Data.prototype.readByte = function() {\n return this.data[this.pos++];\n };\n Data.prototype.writeByte = function(byte) {\n return (this.data[this.pos++] = byte);\n };\n Data.prototype.readUInt32 = function() {\n var b1, b2, b3, b4;\n b1 = this.readByte() * 0x1000000;\n b2 = this.readByte() << 16;\n b3 = this.readByte() << 8;\n b4 = this.readByte();\n return b1 + b2 + b3 + b4;\n };\n Data.prototype.writeUInt32 = function(val) {\n this.writeByte((val >>> 24) & 0xff);\n this.writeByte((val >> 16) & 0xff);\n this.writeByte((val >> 8) & 0xff);\n return this.writeByte(val & 0xff);\n };\n Data.prototype.readInt32 = function() {\n var int;\n int = this.readUInt32();\n if (int >= 0x80000000) {\n return int - 0x100000000;\n } else {\n return int;\n }\n };\n Data.prototype.writeInt32 = function(val) {\n if (val < 0) {\n val += 0x100000000;\n }\n return this.writeUInt32(val);\n };\n Data.prototype.readUInt16 = function() {\n var b1, b2;\n b1 = this.readByte() << 8;\n b2 = this.readByte();\n return b1 | b2;\n };\n Data.prototype.writeUInt16 = function(val) {\n this.writeByte((val >> 8) & 0xff);\n return this.writeByte(val & 0xff);\n };\n Data.prototype.readInt16 = function() {\n var int;\n int = this.readUInt16();\n if (int >= 0x8000) {\n return int - 0x10000;\n } else {\n return int;\n }\n };\n Data.prototype.writeInt16 = function(val) {\n if (val < 0) {\n val += 0x10000;\n }\n return this.writeUInt16(val);\n };\n Data.prototype.readString = function(length) {\n var i, ret;\n ret = [];\n for (\n i = 0;\n 0 <= length ? i < length : i > length;\n i = 0 <= length ? ++i : --i\n ) {\n ret[i] = String.fromCharCode(this.readByte());\n }\n return ret.join(\"\");\n };\n Data.prototype.writeString = function(val) {\n var i, _ref, _results;\n _results = [];\n for (\n i = 0, _ref = val.length;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n _results.push(this.writeByte(val.charCodeAt(i)));\n }\n return _results;\n };\n /*Data.prototype.stringAt = function (pos, length) {\n this.pos = pos;\n return this.readString(length);\n };*/\n Data.prototype.readShort = function() {\n return this.readInt16();\n };\n Data.prototype.writeShort = function(val) {\n return this.writeInt16(val);\n };\n Data.prototype.readLongLong = function() {\n var b1, b2, b3, b4, b5, b6, b7, b8;\n b1 = this.readByte();\n b2 = this.readByte();\n b3 = this.readByte();\n b4 = this.readByte();\n b5 = this.readByte();\n b6 = this.readByte();\n b7 = this.readByte();\n b8 = this.readByte();\n if (b1 & 0x80) {\n return (\n ((b1 ^ 0xff) * 0x100000000000000 +\n (b2 ^ 0xff) * 0x1000000000000 +\n (b3 ^ 0xff) * 0x10000000000 +\n (b4 ^ 0xff) * 0x100000000 +\n (b5 ^ 0xff) * 0x1000000 +\n (b6 ^ 0xff) * 0x10000 +\n (b7 ^ 0xff) * 0x100 +\n (b8 ^ 0xff) +\n 1) *\n -1\n );\n }\n return (\n b1 * 0x100000000000000 +\n b2 * 0x1000000000000 +\n b3 * 0x10000000000 +\n b4 * 0x100000000 +\n b5 * 0x1000000 +\n b6 * 0x10000 +\n b7 * 0x100 +\n b8\n );\n };\n Data.prototype.writeLongLong = function(val) {\n var high, low;\n high = Math.floor(val / 0x100000000);\n low = val & 0xffffffff;\n this.writeByte((high >> 24) & 0xff);\n this.writeByte((high >> 16) & 0xff);\n this.writeByte((high >> 8) & 0xff);\n this.writeByte(high & 0xff);\n this.writeByte((low >> 24) & 0xff);\n this.writeByte((low >> 16) & 0xff);\n this.writeByte((low >> 8) & 0xff);\n return this.writeByte(low & 0xff);\n };\n Data.prototype.readInt = function() {\n return this.readInt32();\n };\n Data.prototype.writeInt = function(val) {\n return this.writeInt32(val);\n };\n /*Data.prototype.slice = function (start, end) {\n return this.data.slice(start, end);\n };*/\n Data.prototype.read = function(bytes) {\n var buf, i;\n buf = [];\n for (\n i = 0;\n 0 <= bytes ? i < bytes : i > bytes;\n i = 0 <= bytes ? ++i : --i\n ) {\n buf.push(this.readByte());\n }\n return buf;\n };\n Data.prototype.write = function(bytes) {\n var byte, i, _len, _results;\n _results = [];\n for (i = 0, _len = bytes.length; i < _len; i++) {\n byte = bytes[i];\n _results.push(this.writeByte(byte));\n }\n return _results;\n };\n return Data;\n})();\n\nvar Directory = (function() {\n var checksum;\n\n /*****************************************************************************************************/\n /* function : Directory generator */\n /* comment : Initialize the offset, tag, length, and checksum for each table for the font to be used.*/\n /*****************************************************************************************************/\n function Directory(data) {\n var entry, i, _ref;\n this.scalarType = data.readInt();\n this.tableCount = data.readShort();\n this.searchRange = data.readShort();\n this.entrySelector = data.readShort();\n this.rangeShift = data.readShort();\n this.tables = {};\n for (\n i = 0, _ref = this.tableCount;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n entry = {\n tag: data.readString(4),\n checksum: data.readInt(),\n offset: data.readInt(),\n length: data.readInt()\n };\n this.tables[entry.tag] = entry;\n }\n }\n /********************************************************************************************************/\n /* function : encode */\n /* comment : It encodes and stores the font table object and information used for the directory object. */\n /********************************************************************************************************/\n Directory.prototype.encode = function(tables) {\n var adjustment,\n directory,\n directoryLength,\n entrySelector,\n headOffset,\n log2,\n offset,\n rangeShift,\n searchRange,\n sum,\n table,\n tableCount,\n tableData,\n tag;\n tableCount = Object.keys(tables).length;\n log2 = Math.log(2);\n searchRange = Math.floor(Math.log(tableCount) / log2) * 16;\n entrySelector = Math.floor(searchRange / log2);\n rangeShift = tableCount * 16 - searchRange;\n directory = new Data();\n directory.writeInt(this.scalarType);\n directory.writeShort(tableCount);\n directory.writeShort(searchRange);\n directory.writeShort(entrySelector);\n directory.writeShort(rangeShift);\n directoryLength = tableCount * 16;\n offset = directory.pos + directoryLength;\n headOffset = null;\n tableData = [];\n for (tag in tables) {\n table = tables[tag];\n directory.writeString(tag);\n directory.writeInt(checksum(table));\n directory.writeInt(offset);\n directory.writeInt(table.length);\n tableData = tableData.concat(table);\n if (tag === \"head\") {\n headOffset = offset;\n }\n offset += table.length;\n while (offset % 4) {\n tableData.push(0);\n offset++;\n }\n }\n directory.write(tableData);\n sum = checksum(directory.data);\n adjustment = 0xb1b0afba - sum;\n directory.pos = headOffset + 8;\n directory.writeUInt32(adjustment);\n return directory.data;\n };\n /***************************************************************/\n /* function : checksum */\n /* comment : Duplicate the table for the tag. */\n /***************************************************************/\n checksum = function(data) {\n var i, sum, tmp, _ref;\n data = __slice.call(data);\n while (data.length % 4) {\n data.push(0);\n }\n tmp = new Data(data);\n sum = 0;\n for (i = 0, _ref = data.length; i < _ref; i = i += 4) {\n sum += tmp.readUInt32();\n }\n return sum & 0xffffffff;\n };\n return Directory;\n})();\n\nvar Table,\n __hasProp = {}.hasOwnProperty,\n __extends = function(child, parent) {\n for (var key in parent) {\n if (__hasProp.call(parent, key)) child[key] = parent[key];\n }\n\n function ctor() {\n this.constructor = child;\n }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n child.__super__ = parent.prototype;\n return child;\n };\n\n/***************************************************************/\n/* function : Table */\n/* comment : Save info for each table, and parse the table. */\n/***************************************************************/\nTable = (function() {\n function Table(file) {\n var info;\n this.file = file;\n info = this.file.directory.tables[this.tag];\n this.exists = !!info;\n if (info) {\n (this.offset = info.offset), (this.length = info.length);\n this.parse(this.file.contents);\n }\n }\n Table.prototype.parse = function() {};\n Table.prototype.encode = function() {};\n Table.prototype.raw = function() {\n if (!this.exists) {\n return null;\n }\n this.file.contents.pos = this.offset;\n return this.file.contents.read(this.length);\n };\n return Table;\n})();\n\nvar HeadTable = (function(_super) {\n __extends(HeadTable, _super);\n\n function HeadTable() {\n return HeadTable.__super__.constructor.apply(this, arguments);\n }\n HeadTable.prototype.tag = \"head\";\n HeadTable.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readInt();\n this.revision = data.readInt();\n this.checkSumAdjustment = data.readInt();\n this.magicNumber = data.readInt();\n this.flags = data.readShort();\n this.unitsPerEm = data.readShort();\n this.created = data.readLongLong();\n this.modified = data.readLongLong();\n this.xMin = data.readShort();\n this.yMin = data.readShort();\n this.xMax = data.readShort();\n this.yMax = data.readShort();\n this.macStyle = data.readShort();\n this.lowestRecPPEM = data.readShort();\n this.fontDirectionHint = data.readShort();\n this.indexToLocFormat = data.readShort();\n return (this.glyphDataFormat = data.readShort());\n };\n HeadTable.prototype.encode = function(indexToLocFormat) {\n var table;\n table = new Data();\n table.writeInt(this.version);\n table.writeInt(this.revision);\n table.writeInt(this.checkSumAdjustment);\n table.writeInt(this.magicNumber);\n table.writeShort(this.flags);\n table.writeShort(this.unitsPerEm);\n table.writeLongLong(this.created);\n table.writeLongLong(this.modified);\n table.writeShort(this.xMin);\n table.writeShort(this.yMin);\n table.writeShort(this.xMax);\n table.writeShort(this.yMax);\n table.writeShort(this.macStyle);\n table.writeShort(this.lowestRecPPEM);\n table.writeShort(this.fontDirectionHint);\n table.writeShort(indexToLocFormat);\n table.writeShort(this.glyphDataFormat);\n return table.data;\n };\n return HeadTable;\n})(Table);\n\n/************************************************************************************/\n/* function : CmapEntry */\n/* comment : Cmap Initializes and encodes object information (required by pdf spec).*/\n/************************************************************************************/\nvar CmapEntry = (function() {\n function CmapEntry(data, offset) {\n var code,\n count,\n endCode,\n glyphId,\n glyphIds,\n i,\n idDelta,\n idRangeOffset,\n index,\n saveOffset,\n segCount,\n segCountX2,\n start,\n startCode,\n tail,\n _j,\n _k,\n _len;\n this.platformID = data.readUInt16();\n this.encodingID = data.readShort();\n this.offset = offset + data.readInt();\n saveOffset = data.pos;\n data.pos = this.offset;\n this.format = data.readUInt16();\n this.length = data.readUInt16();\n this.language = data.readUInt16();\n this.isUnicode =\n (this.platformID === 3 && this.encodingID === 1 && this.format === 4) ||\n (this.platformID === 0 && this.format === 4);\n this.codeMap = {};\n switch (this.format) {\n case 0:\n for (i = 0; i < 256; ++i) {\n this.codeMap[i] = data.readByte();\n }\n break;\n case 4:\n segCountX2 = data.readUInt16();\n segCount = segCountX2 / 2;\n data.pos += 6;\n endCode = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n data.pos += 2;\n startCode = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n idDelta = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n idRangeOffset = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n count = (this.length - data.pos + this.offset) / 2;\n glyphIds = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= count ? _j < count : _j > count;\n i = 0 <= count ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n for (i = _j = 0, _len = endCode.length; _j < _len; i = ++_j) {\n tail = endCode[i];\n start = startCode[i];\n for (\n code = _k = start;\n start <= tail ? _k <= tail : _k >= tail;\n code = start <= tail ? ++_k : --_k\n ) {\n if (idRangeOffset[i] === 0) {\n glyphId = code + idDelta[i];\n } else {\n index = idRangeOffset[i] / 2 + (code - start) - (segCount - i);\n glyphId = glyphIds[index] || 0;\n if (glyphId !== 0) {\n glyphId += idDelta[i];\n }\n }\n this.codeMap[code] = glyphId & 0xffff;\n }\n }\n }\n data.pos = saveOffset;\n }\n CmapEntry.encode = function(charmap, encoding) {\n var charMap,\n code,\n codeMap,\n codes,\n delta,\n deltas,\n diff,\n endCode,\n endCodes,\n entrySelector,\n glyphIDs,\n i,\n id,\n indexes,\n last,\n map,\n nextID,\n offset,\n old,\n rangeOffsets,\n rangeShift,\n searchRange,\n segCount,\n segCountX2,\n startCode,\n startCodes,\n startGlyph,\n subtable,\n _i,\n _j,\n _k,\n _l,\n _len,\n _len1,\n _len2,\n _len3,\n _len4,\n _len5,\n _len6,\n _len7,\n _m,\n _n,\n _name,\n _o,\n _p,\n _q;\n subtable = new Data();\n codes = Object.keys(charmap).sort(function(a, b) {\n return a - b;\n });\n switch (encoding) {\n case \"macroman\":\n id = 0;\n indexes = (function() {\n var _results = [];\n for (i = 0; i < 256; ++i) {\n _results.push(0);\n }\n return _results;\n })();\n map = {\n 0: 0\n };\n codeMap = {};\n for (_i = 0, _len = codes.length; _i < _len; _i++) {\n code = codes[_i];\n if (map[(_name = charmap[code])] == null) {\n map[_name] = ++id;\n }\n codeMap[code] = {\n old: charmap[code],\n new: map[charmap[code]]\n };\n indexes[code] = map[charmap[code]];\n }\n subtable.writeUInt16(1);\n subtable.writeUInt16(0);\n subtable.writeUInt32(12);\n subtable.writeUInt16(0);\n subtable.writeUInt16(262);\n subtable.writeUInt16(0);\n subtable.write(indexes);\n return {\n charMap: codeMap,\n subtable: subtable.data,\n maxGlyphID: id + 1\n };\n case \"unicode\":\n startCodes = [];\n endCodes = [];\n nextID = 0;\n map = {};\n charMap = {};\n last = diff = null;\n for (_j = 0, _len1 = codes.length; _j < _len1; _j++) {\n code = codes[_j];\n old = charmap[code];\n if (map[old] == null) {\n map[old] = ++nextID;\n }\n charMap[code] = {\n old: old,\n new: map[old]\n };\n delta = map[old] - code;\n if (last == null || delta !== diff) {\n if (last) {\n endCodes.push(last);\n }\n startCodes.push(code);\n diff = delta;\n }\n last = code;\n }\n if (last) {\n endCodes.push(last);\n }\n endCodes.push(0xffff);\n startCodes.push(0xffff);\n segCount = startCodes.length;\n segCountX2 = segCount * 2;\n searchRange = 2 * Math.pow(Math.log(segCount) / Math.LN2, 2);\n entrySelector = Math.log(searchRange / 2) / Math.LN2;\n rangeShift = 2 * segCount - searchRange;\n deltas = [];\n rangeOffsets = [];\n glyphIDs = [];\n for (i = _k = 0, _len2 = startCodes.length; _k < _len2; i = ++_k) {\n startCode = startCodes[i];\n endCode = endCodes[i];\n if (startCode === 0xffff) {\n deltas.push(0);\n rangeOffsets.push(0);\n break;\n }\n startGlyph = charMap[startCode][\"new\"];\n if (startCode - startGlyph >= 0x8000) {\n deltas.push(0);\n rangeOffsets.push(2 * (glyphIDs.length + segCount - i));\n for (\n code = _l = startCode;\n startCode <= endCode ? _l <= endCode : _l >= endCode;\n code = startCode <= endCode ? ++_l : --_l\n ) {\n glyphIDs.push(charMap[code][\"new\"]);\n }\n } else {\n deltas.push(startGlyph - startCode);\n rangeOffsets.push(0);\n }\n }\n subtable.writeUInt16(3);\n subtable.writeUInt16(1);\n subtable.writeUInt32(12);\n subtable.writeUInt16(4);\n subtable.writeUInt16(16 + segCount * 8 + glyphIDs.length * 2);\n subtable.writeUInt16(0);\n subtable.writeUInt16(segCountX2);\n subtable.writeUInt16(searchRange);\n subtable.writeUInt16(entrySelector);\n subtable.writeUInt16(rangeShift);\n for (_m = 0, _len3 = endCodes.length; _m < _len3; _m++) {\n code = endCodes[_m];\n subtable.writeUInt16(code);\n }\n subtable.writeUInt16(0);\n for (_n = 0, _len4 = startCodes.length; _n < _len4; _n++) {\n code = startCodes[_n];\n subtable.writeUInt16(code);\n }\n for (_o = 0, _len5 = deltas.length; _o < _len5; _o++) {\n delta = deltas[_o];\n subtable.writeUInt16(delta);\n }\n for (_p = 0, _len6 = rangeOffsets.length; _p < _len6; _p++) {\n offset = rangeOffsets[_p];\n subtable.writeUInt16(offset);\n }\n for (_q = 0, _len7 = glyphIDs.length; _q < _len7; _q++) {\n id = glyphIDs[_q];\n subtable.writeUInt16(id);\n }\n return {\n charMap: charMap,\n subtable: subtable.data,\n maxGlyphID: nextID + 1\n };\n }\n };\n return CmapEntry;\n})();\n\nvar CmapTable = (function(_super) {\n __extends(CmapTable, _super);\n\n function CmapTable() {\n return CmapTable.__super__.constructor.apply(this, arguments);\n }\n CmapTable.prototype.tag = \"cmap\";\n CmapTable.prototype.parse = function(data) {\n var entry, i, tableCount;\n data.pos = this.offset;\n this.version = data.readUInt16();\n tableCount = data.readUInt16();\n this.tables = [];\n this.unicode = null;\n for (\n i = 0;\n 0 <= tableCount ? i < tableCount : i > tableCount;\n i = 0 <= tableCount ? ++i : --i\n ) {\n entry = new CmapEntry(data, this.offset);\n this.tables.push(entry);\n if (entry.isUnicode) {\n if (this.unicode == null) {\n this.unicode = entry;\n }\n }\n }\n return true;\n };\n /*************************************************************************/\n /* function : encode */\n /* comment : Encode the cmap table corresponding to the input character. */\n /*************************************************************************/\n CmapTable.encode = function(charmap, encoding) {\n var result, table;\n if (encoding == null) {\n encoding = \"macroman\";\n }\n result = CmapEntry.encode(charmap, encoding);\n table = new Data();\n table.writeUInt16(0);\n table.writeUInt16(1);\n result.table = table.data.concat(result.subtable);\n return result;\n };\n return CmapTable;\n})(Table);\n\nvar HheaTable = (function(_super) {\n __extends(HheaTable, _super);\n\n function HheaTable() {\n return HheaTable.__super__.constructor.apply(this, arguments);\n }\n HheaTable.prototype.tag = \"hhea\";\n HheaTable.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readInt();\n this.ascender = data.readShort();\n this.decender = data.readShort();\n this.lineGap = data.readShort();\n this.advanceWidthMax = data.readShort();\n this.minLeftSideBearing = data.readShort();\n this.minRightSideBearing = data.readShort();\n this.xMaxExtent = data.readShort();\n this.caretSlopeRise = data.readShort();\n this.caretSlopeRun = data.readShort();\n this.caretOffset = data.readShort();\n data.pos += 4 * 2;\n this.metricDataFormat = data.readShort();\n return (this.numberOfMetrics = data.readUInt16());\n };\n /*HheaTable.prototype.encode = function (ids) {\n var i, table, _i, _ref;\n table = new Data;\n table.writeInt(this.version);\n table.writeShort(this.ascender);\n table.writeShort(this.decender);\n table.writeShort(this.lineGap);\n table.writeShort(this.advanceWidthMax);\n table.writeShort(this.minLeftSideBearing);\n table.writeShort(this.minRightSideBearing);\n table.writeShort(this.xMaxExtent);\n table.writeShort(this.caretSlopeRise);\n table.writeShort(this.caretSlopeRun);\n table.writeShort(this.caretOffset);\n for (i = _i = 0, _ref = 4 * 2; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n table.writeByte(0);\n }\n table.writeShort(this.metricDataFormat);\n table.writeUInt16(ids.length);\n return table.data;\n };*/\n return HheaTable;\n})(Table);\n\nvar OS2Table = (function(_super) {\n __extends(OS2Table, _super);\n\n function OS2Table() {\n return OS2Table.__super__.constructor.apply(this, arguments);\n }\n OS2Table.prototype.tag = \"OS/2\";\n OS2Table.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readUInt16();\n this.averageCharWidth = data.readShort();\n this.weightClass = data.readUInt16();\n this.widthClass = data.readUInt16();\n this.type = data.readShort();\n this.ySubscriptXSize = data.readShort();\n this.ySubscriptYSize = data.readShort();\n this.ySubscriptXOffset = data.readShort();\n this.ySubscriptYOffset = data.readShort();\n this.ySuperscriptXSize = data.readShort();\n this.ySuperscriptYSize = data.readShort();\n this.ySuperscriptXOffset = data.readShort();\n this.ySuperscriptYOffset = data.readShort();\n this.yStrikeoutSize = data.readShort();\n this.yStrikeoutPosition = data.readShort();\n this.familyClass = data.readShort();\n this.panose = (function() {\n var i, _results;\n _results = [];\n for (i = 0; i < 10; ++i) {\n _results.push(data.readByte());\n }\n return _results;\n })();\n this.charRange = (function() {\n var i, _results;\n _results = [];\n for (i = 0; i < 4; ++i) {\n _results.push(data.readInt());\n }\n return _results;\n })();\n this.vendorID = data.readString(4);\n this.selection = data.readShort();\n this.firstCharIndex = data.readShort();\n this.lastCharIndex = data.readShort();\n if (this.version > 0) {\n this.ascent = data.readShort();\n this.descent = data.readShort();\n this.lineGap = data.readShort();\n this.winAscent = data.readShort();\n this.winDescent = data.readShort();\n this.codePageRange = (function() {\n var i, _results;\n _results = [];\n for (i = 0; i < 2; i = ++i) {\n _results.push(data.readInt());\n }\n return _results;\n })();\n if (this.version > 1) {\n this.xHeight = data.readShort();\n this.capHeight = data.readShort();\n this.defaultChar = data.readShort();\n this.breakChar = data.readShort();\n return (this.maxContext = data.readShort());\n }\n }\n };\n /*OS2Table.prototype.encode = function () {\n return this.raw();\n };*/\n return OS2Table;\n})(Table);\n\nvar PostTable = (function(_super) {\n var POSTSCRIPT_GLYPHS;\n __extends(PostTable, _super);\n\n function PostTable() {\n return PostTable.__super__.constructor.apply(this, arguments);\n }\n PostTable.prototype.tag = \"post\";\n PostTable.prototype.parse = function(data) {\n var length, numberOfGlyphs, _results;\n data.pos = this.offset;\n this.format = data.readInt();\n this.italicAngle = data.readInt();\n this.underlinePosition = data.readShort();\n this.underlineThickness = data.readShort();\n this.isFixedPitch = data.readInt();\n this.minMemType42 = data.readInt();\n this.maxMemType42 = data.readInt();\n this.minMemType1 = data.readInt();\n this.maxMemType1 = data.readInt();\n switch (this.format) {\n case 0x00010000:\n break;\n case 0x00020000:\n numberOfGlyphs = data.readUInt16();\n this.glyphNameIndex = [];\n var i;\n for (\n i = 0;\n 0 <= numberOfGlyphs ? i < numberOfGlyphs : i > numberOfGlyphs;\n i = 0 <= numberOfGlyphs ? ++i : --i\n ) {\n this.glyphNameIndex.push(data.readUInt16());\n }\n this.names = [];\n _results = [];\n while (data.pos < this.offset + this.length) {\n length = data.readByte();\n _results.push(this.names.push(data.readString(length)));\n }\n return _results;\n case 0x00025000:\n numberOfGlyphs = data.readUInt16();\n return (this.offsets = data.read(numberOfGlyphs));\n case 0x00030000:\n break;\n case 0x00040000:\n return (this.map = function() {\n var _j, _ref, _results1;\n _results1 = [];\n for (\n i = _j = 0, _ref = this.file.maxp.numGlyphs;\n 0 <= _ref ? _j < _ref : _j > _ref;\n i = 0 <= _ref ? ++_j : --_j\n ) {\n _results1.push(data.readUInt32());\n }\n return _results1;\n }.call(this));\n }\n };\n /*PostTable.prototype.glyphFor = function (code) {\n var index;\n switch (this.format) {\n case 0x00010000:\n return POSTSCRIPT_GLYPHS[code] || '.notdef';\n case 0x00020000:\n index = this.glyphNameIndex[code];\n if (index <= 257) {\n return POSTSCRIPT_GLYPHS[index];\n }\n else {\n return this.names[index - 258] || '.notdef';\n }\n break;\n case 0x00025000:\n return POSTSCRIPT_GLYPHS[code + this.offsets[code]] || '.notdef';\n case 0x00030000:\n return '.notdef';\n case 0x00040000:\n return this.map[code] || 0xFFFF;\n }\n };*/\n /*PostTable.prototype.encode = function (mapping) {\n var id, index, indexes, position, post, raw, string, strings, table, _i, _j, _k, _len, _len1, _len2;\n if (!this.exists) {\n return null;\n }\n raw = this.raw();\n if (this.format === 0x00030000) {\n return raw;\n }\n table = new Data(raw.slice(0, 32));\n table.writeUInt32(0x00020000);\n table.pos = 32;\n indexes = [];\n strings = [];\n for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n id = mapping[_i];\n post = this.glyphFor(id);\n position = POSTSCRIPT_GLYPHS.indexOf(post);\n if (position !== -1) {\n indexes.push(position);\n }\n else {\n indexes.push(257 + strings.length);\n strings.push(post);\n }\n }\n table.writeUInt16(Object.keys(mapping).length);\n for (_j = 0, _len1 = indexes.length; _j < _len1; _j++) {\n index = indexes[_j];\n table.writeUInt16(index);\n }\n for (_k = 0, _len2 = strings.length; _k < _len2; _k++) {\n string = strings[_k];\n table.writeByte(string.length);\n table.writeString(string);\n }\n return table.data;\n };*/\n POSTSCRIPT_GLYPHS = \".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent\\nampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash\\nzero one two three four five six seven eight nine colon semicolon less equal greater\\nquestion at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\\nbracketleft backslash bracketright asciicircum underscore grave\\na b c d e f g h i j k l m n o p q r s t u v w x y z\\nbraceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis\\nUdieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave\\necircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve\\nocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent\\nsterling section bullet paragraph germandbls registered copyright trademark acute\\ndieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu\\npartialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash\\nquestiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft\\nguillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash\\nquotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis\\nfraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered\\nquotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis\\nEgrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute\\nUcircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla\\nhungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth\\neth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior\\nonehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla\\nCacute cacute Ccaron ccaron dcroat\".split(\n /\\s+/g\n );\n return PostTable;\n})(Table);\n\n/*********************************************************************************************************/\n/* function : NameEntry */\n/* comment : Store copyright information, platformID, encodingID, and languageID in the NameEntry object.*/\n/*********************************************************************************************************/\nvar NameEntry = (function() {\n function NameEntry(raw, entry) {\n this.raw = raw;\n this.length = raw.length;\n this.platformID = entry.platformID;\n this.encodingID = entry.encodingID;\n this.languageID = entry.languageID;\n }\n return NameEntry;\n})();\n\nvar NameTable = (function(_super) {\n var subsetTag;\n __extends(NameTable, _super);\n\n function NameTable() {\n return NameTable.__super__.constructor.apply(this, arguments);\n }\n NameTable.prototype.tag = \"name\";\n NameTable.prototype.parse = function(data) {\n var count,\n entries,\n entry,\n i,\n name,\n stringOffset,\n strings,\n text,\n _j,\n _len,\n _name;\n data.pos = this.offset;\n data.readShort(); //format\n count = data.readShort();\n stringOffset = data.readShort();\n entries = [];\n for (\n i = 0;\n 0 <= count ? i < count : i > count;\n i = 0 <= count ? ++i : --i\n ) {\n entries.push({\n platformID: data.readShort(),\n encodingID: data.readShort(),\n languageID: data.readShort(),\n nameID: data.readShort(),\n length: data.readShort(),\n offset: this.offset + stringOffset + data.readShort()\n });\n }\n strings = {};\n for (i = _j = 0, _len = entries.length; _j < _len; i = ++_j) {\n entry = entries[i];\n data.pos = entry.offset;\n text = data.readString(entry.length);\n name = new NameEntry(text, entry);\n if (strings[(_name = entry.nameID)] == null) {\n strings[_name] = [];\n }\n strings[entry.nameID].push(name);\n }\n this.strings = strings;\n this.copyright = strings[0];\n this.fontFamily = strings[1];\n this.fontSubfamily = strings[2];\n this.uniqueSubfamily = strings[3];\n this.fontName = strings[4];\n this.version = strings[5];\n try {\n this.postscriptName = strings[6][0].raw.replace(\n /[\\x00-\\x19\\x80-\\xff]/g,\n \"\"\n );\n } catch (e) {\n this.postscriptName = strings[4][0].raw.replace(\n /[\\x00-\\x19\\x80-\\xff]/g,\n \"\"\n );\n }\n this.trademark = strings[7];\n this.manufacturer = strings[8];\n this.designer = strings[9];\n this.description = strings[10];\n this.vendorUrl = strings[11];\n this.designerUrl = strings[12];\n this.license = strings[13];\n this.licenseUrl = strings[14];\n this.preferredFamily = strings[15];\n this.preferredSubfamily = strings[17];\n this.compatibleFull = strings[18];\n return (this.sampleText = strings[19]);\n };\n subsetTag = \"AAAAAA\";\n /*NameTable.prototype.encode = function () {\n var id, list, nameID, nameTable, postscriptName, strCount, strTable, string, strings, table, val, _i, _len, _ref;\n strings = {};\n _ref = this.strings;\n for (id in _ref) {\n val = _ref[id];\n strings[id] = val;\n }\n postscriptName = new NameEntry(\"\" + subsetTag + \"+\" + this.postscriptName, {\n platformID: 1\n , encodingID: 0\n , languageID: 0\n });\n strings[6] = [postscriptName];\n subsetTag = successorOf(subsetTag);\n strCount = 0;\n for (id in strings) {\n list = strings[id];\n if (list != null) {\n strCount += list.length;\n }\n }\n table = new Data;\n strTable = new Data;\n table.writeShort(0);\n table.writeShort(strCount);\n table.writeShort(6 + 12 * strCount);\n for (nameID in strings) {\n list = strings[nameID];\n if (list != null) {\n for (_i = 0, _len = list.length; _i < _len; _i++) {\n string = list[_i];\n table.writeShort(string.platformID);\n table.writeShort(string.encodingID);\n table.writeShort(string.languageID);\n table.writeShort(nameID);\n table.writeShort(string.length);\n table.writeShort(strTable.pos);\n strTable.writeString(string.raw);\n }\n }\n }\n return nameTable = {\n postscriptName: postscriptName.raw\n , table: table.data.concat(strTable.data)\n };\n };*/\n return NameTable;\n})(Table);\n\nvar MaxpTable = (function(_super) {\n __extends(MaxpTable, _super);\n\n function MaxpTable() {\n return MaxpTable.__super__.constructor.apply(this, arguments);\n }\n MaxpTable.prototype.tag = \"maxp\";\n MaxpTable.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readInt();\n this.numGlyphs = data.readUInt16();\n this.maxPoints = data.readUInt16();\n this.maxContours = data.readUInt16();\n this.maxCompositePoints = data.readUInt16();\n this.maxComponentContours = data.readUInt16();\n this.maxZones = data.readUInt16();\n this.maxTwilightPoints = data.readUInt16();\n this.maxStorage = data.readUInt16();\n this.maxFunctionDefs = data.readUInt16();\n this.maxInstructionDefs = data.readUInt16();\n this.maxStackElements = data.readUInt16();\n this.maxSizeOfInstructions = data.readUInt16();\n this.maxComponentElements = data.readUInt16();\n return (this.maxComponentDepth = data.readUInt16());\n };\n /*MaxpTable.prototype.encode = function (ids) {\n var table;\n table = new Data;\n table.writeInt(this.version);\n table.writeUInt16(ids.length);\n table.writeUInt16(this.maxPoints);\n table.writeUInt16(this.maxContours);\n table.writeUInt16(this.maxCompositePoints);\n table.writeUInt16(this.maxComponentContours);\n table.writeUInt16(this.maxZones);\n table.writeUInt16(this.maxTwilightPoints);\n table.writeUInt16(this.maxStorage);\n table.writeUInt16(this.maxFunctionDefs);\n table.writeUInt16(this.maxInstructionDefs);\n table.writeUInt16(this.maxStackElements);\n table.writeUInt16(this.maxSizeOfInstructions);\n table.writeUInt16(this.maxComponentElements);\n table.writeUInt16(this.maxComponentDepth);\n return table.data;\n };*/\n return MaxpTable;\n})(Table);\n\nvar HmtxTable = (function(_super) {\n __extends(HmtxTable, _super);\n\n function HmtxTable() {\n return HmtxTable.__super__.constructor.apply(this, arguments);\n }\n HmtxTable.prototype.tag = \"hmtx\";\n HmtxTable.prototype.parse = function(data) {\n var i, last, lsbCount, m, _j, _ref, _results;\n data.pos = this.offset;\n this.metrics = [];\n for (\n i = 0, _ref = this.file.hhea.numberOfMetrics;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n this.metrics.push({\n advance: data.readUInt16(),\n lsb: data.readInt16()\n });\n }\n lsbCount = this.file.maxp.numGlyphs - this.file.hhea.numberOfMetrics;\n this.leftSideBearings = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= lsbCount ? _j < lsbCount : _j > lsbCount;\n i = 0 <= lsbCount ? ++_j : --_j\n ) {\n _results.push(data.readInt16());\n }\n return _results;\n })();\n this.widths = function() {\n var _j, _len, _ref1, _results;\n _ref1 = this.metrics;\n _results = [];\n for (_j = 0, _len = _ref1.length; _j < _len; _j++) {\n m = _ref1[_j];\n _results.push(m.advance);\n }\n return _results;\n }.call(this);\n last = this.widths[this.widths.length - 1];\n _results = [];\n for (\n i = _j = 0;\n 0 <= lsbCount ? _j < lsbCount : _j > lsbCount;\n i = 0 <= lsbCount ? ++_j : --_j\n ) {\n _results.push(this.widths.push(last));\n }\n return _results;\n };\n /***************************************************************/\n /* function : forGlyph */\n /* comment : Returns the advance width and lsb for this glyph. */\n /***************************************************************/\n HmtxTable.prototype.forGlyph = function(id) {\n if (id in this.metrics) {\n return this.metrics[id];\n }\n return {\n advance: this.metrics[this.metrics.length - 1].advance,\n lsb: this.leftSideBearings[id - this.metrics.length]\n };\n };\n /*HmtxTable.prototype.encode = function (mapping) {\n var id, metric, table, _i, _len;\n table = new Data;\n for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n id = mapping[_i];\n metric = this.forGlyph(id);\n table.writeUInt16(metric.advance);\n table.writeUInt16(metric.lsb);\n }\n return table.data;\n };*/\n return HmtxTable;\n})(Table);\n\nvar __slice = [].slice;\n\nvar GlyfTable = (function(_super) {\n __extends(GlyfTable, _super);\n\n function GlyfTable() {\n return GlyfTable.__super__.constructor.apply(this, arguments);\n }\n GlyfTable.prototype.tag = \"glyf\";\n GlyfTable.prototype.parse = function() {\n return (this.cache = {});\n };\n GlyfTable.prototype.glyphFor = function(id) {\n var data,\n index,\n length,\n loca,\n numberOfContours,\n raw,\n xMax,\n xMin,\n yMax,\n yMin;\n if (id in this.cache) {\n return this.cache[id];\n }\n loca = this.file.loca;\n data = this.file.contents;\n index = loca.indexOf(id);\n length = loca.lengthOf(id);\n if (length === 0) {\n return (this.cache[id] = null);\n }\n data.pos = this.offset + index;\n raw = new Data(data.read(length));\n numberOfContours = raw.readShort();\n xMin = raw.readShort();\n yMin = raw.readShort();\n xMax = raw.readShort();\n yMax = raw.readShort();\n if (numberOfContours === -1) {\n this.cache[id] = new CompoundGlyph(raw, xMin, yMin, xMax, yMax);\n } else {\n this.cache[id] = new SimpleGlyph(\n raw,\n numberOfContours,\n xMin,\n yMin,\n xMax,\n yMax\n );\n }\n return this.cache[id];\n };\n GlyfTable.prototype.encode = function(glyphs, mapping, old2new) {\n var glyph, id, offsets, table, _i, _len;\n table = [];\n offsets = [];\n for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n id = mapping[_i];\n glyph = glyphs[id];\n offsets.push(table.length);\n if (glyph) {\n table = table.concat(glyph.encode(old2new));\n }\n }\n offsets.push(table.length);\n return {\n table: table,\n offsets: offsets\n };\n };\n return GlyfTable;\n})(Table);\n\nvar SimpleGlyph = (function() {\n /**************************************************************************/\n /* function : SimpleGlyph */\n /* comment : Stores raw, xMin, yMin, xMax, and yMax values for this glyph.*/\n /**************************************************************************/\n function SimpleGlyph(raw, numberOfContours, xMin, yMin, xMax, yMax) {\n this.raw = raw;\n this.numberOfContours = numberOfContours;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n this.compound = false;\n }\n SimpleGlyph.prototype.encode = function() {\n return this.raw.data;\n };\n return SimpleGlyph;\n})();\n\nvar CompoundGlyph = (function() {\n var ARG_1_AND_2_ARE_WORDS,\n MORE_COMPONENTS,\n WE_HAVE_AN_X_AND_Y_SCALE,\n WE_HAVE_A_SCALE,\n WE_HAVE_A_TWO_BY_TWO,\n WE_HAVE_INSTRUCTIONS;\n ARG_1_AND_2_ARE_WORDS = 0x0001;\n WE_HAVE_A_SCALE = 0x0008;\n MORE_COMPONENTS = 0x0020;\n WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;\n WE_HAVE_A_TWO_BY_TWO = 0x0080;\n WE_HAVE_INSTRUCTIONS = 0x0100;\n\n /********************************************************************************************************************/\n /* function : CompoundGlypg generator */\n /* comment : It stores raw, xMin, yMin, xMax, yMax, glyph id, and glyph offset for the corresponding compound glyph.*/\n /********************************************************************************************************************/\n function CompoundGlyph(raw, xMin, yMin, xMax, yMax) {\n var data, flags;\n this.raw = raw;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n this.compound = true;\n this.glyphIDs = [];\n this.glyphOffsets = [];\n data = this.raw;\n while (true) {\n flags = data.readShort();\n this.glyphOffsets.push(data.pos);\n this.glyphIDs.push(data.readUInt16());\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n if (flags & ARG_1_AND_2_ARE_WORDS) {\n data.pos += 4;\n } else {\n data.pos += 2;\n }\n if (flags & WE_HAVE_A_TWO_BY_TWO) {\n data.pos += 8;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n data.pos += 4;\n } else if (flags & WE_HAVE_A_SCALE) {\n data.pos += 2;\n }\n }\n }\n /****************************************************************************************************************/\n /* function : CompoundGlypg encode */\n /* comment : After creating a table for the characters you typed, you call directory.encode to encode the table.*/\n /****************************************************************************************************************/\n CompoundGlyph.prototype.encode = function() {\n var i, result, _len, _ref;\n result = new Data(__slice.call(this.raw.data));\n _ref = this.glyphIDs;\n for (i = 0, _len = _ref.length; i < _len; ++i) {\n result.pos = this.glyphOffsets[i];\n }\n return result.data;\n };\n return CompoundGlyph;\n})();\n\nvar LocaTable = (function(_super) {\n __extends(LocaTable, _super);\n\n function LocaTable() {\n return LocaTable.__super__.constructor.apply(this, arguments);\n }\n LocaTable.prototype.tag = \"loca\";\n LocaTable.prototype.parse = function(data) {\n var format, i;\n data.pos = this.offset;\n format = this.file.head.indexToLocFormat;\n if (format === 0) {\n return (this.offsets = function() {\n var _ref, _results;\n _results = [];\n for (i = 0, _ref = this.length; i < _ref; i += 2) {\n _results.push(data.readUInt16() * 2);\n }\n return _results;\n }.call(this));\n } else {\n return (this.offsets = function() {\n var _ref, _results;\n _results = [];\n for (i = 0, _ref = this.length; i < _ref; i += 4) {\n _results.push(data.readUInt32());\n }\n return _results;\n }.call(this));\n }\n };\n LocaTable.prototype.indexOf = function(id) {\n return this.offsets[id];\n };\n LocaTable.prototype.lengthOf = function(id) {\n return this.offsets[id + 1] - this.offsets[id];\n };\n LocaTable.prototype.encode = function(offsets, activeGlyphs) {\n var LocaTable = new Uint32Array(this.offsets.length);\n var glyfPtr = 0;\n var listGlyf = 0;\n for (var k = 0; k < LocaTable.length; ++k) {\n LocaTable[k] = glyfPtr;\n if (listGlyf < activeGlyphs.length && activeGlyphs[listGlyf] == k) {\n ++listGlyf;\n LocaTable[k] = glyfPtr;\n var start = this.offsets[k];\n var len = this.offsets[k + 1] - start;\n if (len > 0) {\n glyfPtr += len;\n }\n }\n }\n var newLocaTable = new Array(LocaTable.length * 4);\n for (var j = 0; j < LocaTable.length; ++j) {\n newLocaTable[4 * j + 3] = LocaTable[j] & 0x000000ff;\n newLocaTable[4 * j + 2] = (LocaTable[j] & 0x0000ff00) >> 8;\n newLocaTable[4 * j + 1] = (LocaTable[j] & 0x00ff0000) >> 16;\n newLocaTable[4 * j] = (LocaTable[j] & 0xff000000) >> 24;\n }\n return newLocaTable;\n };\n return LocaTable;\n})(Table);\n\n/************************************************************************************/\n/* function : invert */\n/* comment : Change the object's (key: value) to create an object with (value: key).*/\n/************************************************************************************/\nvar invert = function(object) {\n var key, ret, val;\n ret = {};\n for (key in object) {\n val = object[key];\n ret[val] = key;\n }\n return ret;\n};\n\n/*var successorOf = function (input) {\n var added, alphabet, carry, i, index, isUpperCase, last, length, next, result;\n alphabet = 'abcdefghijklmnopqrstuvwxyz';\n length = alphabet.length;\n result = input;\n i = input.length;\n while (i >= 0) {\n last = input.charAt(--i);\n if (isNaN(last)) {\n index = alphabet.indexOf(last.toLowerCase());\n if (index === -1) {\n next = last;\n carry = true;\n }\n else {\n next = alphabet.charAt((index + 1) % length);\n isUpperCase = last === last.toUpperCase();\n if (isUpperCase) {\n next = next.toUpperCase();\n }\n carry = index + 1 >= length;\n if (carry && i === 0) {\n added = isUpperCase ? 'A' : 'a';\n result = added + next + result.slice(1);\n break;\n }\n }\n }\n else {\n next = +last + 1;\n carry = next > 9;\n if (carry) {\n next = 0;\n }\n if (carry && i === 0) {\n result = '1' + next + result.slice(1);\n break;\n }\n }\n result = result.slice(0, i) + next + result.slice(i + 1);\n if (!carry) {\n break;\n }\n }\n return result;\n };*/\n\nvar Subset = (function() {\n function Subset(font) {\n this.font = font;\n this.subset = {};\n this.unicodes = {};\n this.next = 33;\n }\n /*Subset.prototype.use = function (character) {\n var i, _i, _ref;\n if (typeof character === 'string') {\n for (i = _i = 0, _ref = character.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n this.use(character.charCodeAt(i));\n }\n return;\n }\n if (!this.unicodes[character]) {\n this.subset[this.next] = character;\n return this.unicodes[character] = this.next++;\n }\n };*/\n /*Subset.prototype.encodeText = function (text) {\n var char, i, string, _i, _ref;\n string = '';\n for (i = _i = 0, _ref = text.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n char = this.unicodes[text.charCodeAt(i)];\n string += String.fromCharCode(char);\n }\n return string;\n };*/\n /***************************************************************/\n /* function : generateCmap */\n /* comment : Returns the unicode cmap for this font. */\n /***************************************************************/\n Subset.prototype.generateCmap = function() {\n var mapping, roman, unicode, unicodeCmap, _ref;\n unicodeCmap = this.font.cmap.tables[0].codeMap;\n mapping = {};\n _ref = this.subset;\n for (roman in _ref) {\n unicode = _ref[roman];\n mapping[roman] = unicodeCmap[unicode];\n }\n return mapping;\n };\n /*Subset.prototype.glyphIDs = function () {\n var ret, roman, unicode, unicodeCmap, val, _ref;\n unicodeCmap = this.font.cmap.tables[0].codeMap;\n ret = [0];\n _ref = this.subset;\n for (roman in _ref) {\n unicode = _ref[roman];\n val = unicodeCmap[unicode];\n if ((val != null) && __indexOf.call(ret, val) < 0) {\n ret.push(val);\n }\n }\n return ret.sort();\n };*/\n /******************************************************************/\n /* function : glyphsFor */\n /* comment : Returns simple glyph objects for the input character.*/\n /******************************************************************/\n Subset.prototype.glyphsFor = function(glyphIDs) {\n var additionalIDs, glyph, glyphs, id, _i, _len, _ref;\n glyphs = {};\n for (_i = 0, _len = glyphIDs.length; _i < _len; _i++) {\n id = glyphIDs[_i];\n glyphs[id] = this.font.glyf.glyphFor(id);\n }\n additionalIDs = [];\n for (id in glyphs) {\n glyph = glyphs[id];\n if (glyph != null ? glyph.compound : void 0) {\n additionalIDs.push.apply(additionalIDs, glyph.glyphIDs);\n }\n }\n if (additionalIDs.length > 0) {\n _ref = this.glyphsFor(additionalIDs);\n for (id in _ref) {\n glyph = _ref[id];\n glyphs[id] = glyph;\n }\n }\n return glyphs;\n };\n /***************************************************************/\n /* function : encode */\n /* comment : Encode various tables for the characters you use. */\n /***************************************************************/\n Subset.prototype.encode = function(glyID, indexToLocFormat) {\n var cmap,\n code,\n glyf,\n glyphs,\n id,\n ids,\n loca,\n new2old,\n newIDs,\n nextGlyphID,\n old2new,\n oldID,\n oldIDs,\n tables,\n _ref;\n cmap = CmapTable.encode(this.generateCmap(), \"unicode\");\n glyphs = this.glyphsFor(glyID);\n old2new = {\n 0: 0\n };\n _ref = cmap.charMap;\n for (code in _ref) {\n ids = _ref[code];\n old2new[ids.old] = ids[\"new\"];\n }\n nextGlyphID = cmap.maxGlyphID;\n for (oldID in glyphs) {\n if (!(oldID in old2new)) {\n old2new[oldID] = nextGlyphID++;\n }\n }\n new2old = invert(old2new);\n newIDs = Object.keys(new2old).sort(function(a, b) {\n return a - b;\n });\n oldIDs = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = newIDs.length; _i < _len; _i++) {\n id = newIDs[_i];\n _results.push(new2old[id]);\n }\n return _results;\n })();\n glyf = this.font.glyf.encode(glyphs, oldIDs, old2new);\n loca = this.font.loca.encode(glyf.offsets, oldIDs);\n tables = {\n cmap: this.font.cmap.raw(),\n glyf: glyf.table,\n loca: loca,\n hmtx: this.font.hmtx.raw(),\n hhea: this.font.hhea.raw(),\n maxp: this.font.maxp.raw(),\n post: this.font.post.raw(),\n name: this.font.name.raw(),\n head: this.font.head.encode(indexToLocFormat)\n };\n if (this.font.os2.exists) {\n tables[\"OS/2\"] = this.font.os2.raw();\n }\n return this.font.directory.encode(tables);\n };\n return Subset;\n})();\n\njsPDF.API.PDFObject = (function() {\n var pad;\n\n function PDFObject() {}\n pad = function(str, length) {\n return (Array(length + 1).join(\"0\") + str).slice(-length);\n };\n /*****************************************************************************/\n /* function : convert */\n /* comment :Converts pdf tag's / FontBBox and array values in / W to strings */\n /*****************************************************************************/\n PDFObject.convert = function(object) {\n var e, items, key, out, val;\n if (Array.isArray(object)) {\n items = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = object.length; _i < _len; _i++) {\n e = object[_i];\n _results.push(PDFObject.convert(e));\n }\n return _results;\n })().join(\" \");\n return \"[\" + items + \"]\";\n } else if (typeof object === \"string\") {\n return \"/\" + object;\n } else if (object != null ? object.isString : void 0) {\n return \"(\" + object + \")\";\n } else if (object instanceof Date) {\n return (\n \"(D:\" +\n pad(object.getUTCFullYear(), 4) +\n pad(object.getUTCMonth(), 2) +\n pad(object.getUTCDate(), 2) +\n pad(object.getUTCHours(), 2) +\n pad(object.getUTCMinutes(), 2) +\n pad(object.getUTCSeconds(), 2) +\n \"Z)\"\n );\n } else if ({}.toString.call(object) === \"[object Object]\") {\n out = [\"<<\"];\n for (key in object) {\n val = object[key];\n out.push(\"/\" + key + \" \" + PDFObject.convert(val));\n }\n out.push(\">>\");\n return out.join(\"\\n\");\n } else {\n return \"\" + object;\n }\n };\n return PDFObject;\n})();\n"],"names":["globalObject","window","global","self","consoleLog","console","log","apply","arguments","consoleWarn","str","warn","call","consoleError","error","bom","blob","opts","autoBom","test","type","Blob","String","fromCharCode","download","url","name","xhr","XMLHttpRequest","open","responseType","onload","saveAs","response","onerror","send","corsEnabled","e","status","click","node","dispatchEvent","MouseEvent","evt","document","createEvent","initMouseEvent","_global","HTMLAnchorElement","prototype","URL","webkitURL","a","createElement","rel","href","origin","location","target","createObjectURL","setTimeout","revokeObjectURL","navigator","msSaveOrOpenBlob","popup","title","body","innerText","force","isSafari","HTMLElement","safari","isChromeIOS","userAgent","FileReader","reader","onloadend","result","replace","readAsDataURL","RGBColor","color_string","ok","charAt","substr","toLowerCase","channels","simple_colors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","color_defs","re","example","process","bits","parseInt","i","length","processor","exec","r","g","b","isNaN","toRGB","toHex","toString","atob","btoa","bind","md5cycle","x","k","c","d","ff","gg","hh","ii","add32","cmn","q","s","t","md51","n","state","md5blk","substring","tail","charCodeAt","md5blks","hex_chr","split","rhex","j","hex","join","singleToByteString","toByteString","map","md5Bin","md5","md5Check","lsw","msw","repeat","num","Array","rc4","key","data","lastKey","lastState","out","permissionOptions","print","modify","copy","PDFSecurity","permissions","userPassword","ownerPassword","fileId","v","protection","forEach","perm","Error","padding","paddedUserPassword","paddedOwnerPassword","O","processOwnerPassword","P","encryptionKey","lsbFirstWord","hexToBytes","U","toHexString","byteString","byte","slice","bytes","push","encryptor","objectId","generation","toPDFName","strLength","charCode","hexStr","paddingHexStr","PubSub","context","topics","subscribe","topic","callback","once","hasOwnProperty","token","Math","random","unsubscribe","Object","keys","publish","args","tokens","sub","ex","message","getTopics","GState","parameters","supported","p","indexOf","id","objectNumber","equals","other","ignore","count","Pattern","gState","matrix","ShadingPattern","coords","colors","TilingPattern","boundingBox","xStep","yStep","stream","cloneIndex","jsPDF","options","orientation","unit","format","compressPdf","filters","userUnit","precision","floatPrecision","defaultPathOperation","encryptionOptions","compress","encryption","userPermissions","abs","putOnlyUsedFonts","usedFonts","API","internal","__private__","pdfVersion","getPdfVersion","setPdfVersion","value","pageFormats","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","dl","letter","legal","ledger","tabloid","getPageFormats","getPageFormat","ApiMode","COMPAT","ADVANCED","apiMode","advancedAPI","saveGraphicsState","Matrix","scaleFactor","getPageHeight","setFontSize","getFontSize","compatAPI","restoreGraphicsState","combineFontStyleAndFontWeight","fontStyle","fontWeight","doSwitch","isAdvancedAPI","advancedApiModeTrap","methodName","roundToPrecision","number","parmPrecision","tmpPrecision","toFixed","hpf","f2","f3","scale","transformY","y","transformScaleY","setPrecision","getFileId","setFileId","toUpperCase","floor","creationDate","convertDateToPDFDate","parmDate","tzoffset","getTimezoneOffset","tzsign","tzhour","tzmin","timeZoneString","padd2","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","convertPDFDateToDate","parmPDFDate","year","month","date","hour","minutes","seconds","resultingDate","Date","setCreationDate","tmpCreationDateString","regexPDFCreationDate","getCreationDate","padd2Hex","hexString","offsets","content","contentLength","additionalObjects","pages","currentPage","hasCustomDestination","outputDestination","resetDocument","rootDictionaryObjId","newObjectDeferred","resourceDictionaryObjId","setCustomOutputDestination","destination","setOutputDestination","resetCustomOutputDestination","string","write","getArrayBuffer","len","ab","ArrayBuffer","u8","Uint8Array","standardFonts","getStandardFonts","activeFontSize","fontSize","size","R2L","setR2L","getR2L","zoomMode","setZoomMode","zoom","validZoomModes","undefined","getZoomMode","pageMode","setPageMode","pmode","validPageModes","getPageMode","layoutMode","setLayoutMode","layout","validLayoutModes","getLayoutMode","setDisplayMode","documentProperties","subject","author","keywords","creator","getDocumentProperty","getDocumentProperties","setDocumentProperties","setProperties","properties","property","setDocumentProperty","fonts","fontmap","activeFontKey","fontStateStack","patterns","patternMap","gStates","gStatesMap","activeGState","page","pagesContext","events","hotfixes","renderTargets","renderTargetMap","renderTargetStack","pageX","pageY","pageMatrix","sx","shy","shx","sy","tx","ty","_matrix","defineProperty","get","set","atan2","decompose","separator","multiply","f","scaleX","sqrt","shear","scaleY","translate","rotate","skew","inversed","quot","aInv","bInv","cInv","dInv","eInv","fInv","applyToPoint","pt","Point","applyToRectangle","rect","pt1","pt2","w","h","Rectangle","clone","matrixMult","m1","m2","identityMatrix","unitMatrix","addPattern","pattern","prefix","patternKey","addShadingPattern","beginTilingPattern","beginNewRenderTarget","endTilingPattern","pop","restore","newObject","oid","newObjectDeferredBegin","doOutput","newAdditionalObject","objId","obj","decodeColorString","color","colorEncoded","floatVal","parseFloat","colorAsRGB","encodeColorString","ch1","ch2","ch3","ch4","letterArray","pdfColorType","rgbColor","getFilters","putStream","alreadyAppliedFilters","addLength1","valueOfLength1","processedData","keyValues","additionalKeyValues","processDataByFilters","reverseChain","filterAsString","isArray","decodeParmsArray","putPage","pageNumber","pageObjectNumber","pageContentsObjId","contentsObjId","mediaBox","bottomLeftX","bottomLeftY","topRightX","topRightY","cropBox","bleedBox","trimBox","artBox","pageContext","pageContent","putPages","pageObjectNumbers","kids","putFont","font","isAlreadyPutted","postScriptName","encoding","putFonts","fontKey","putXObject","xObject","width","height","putXObjects","xObjectKey","interpolateAndEncodeRGBStream","numberSamples","tValues","dT","offset","unshift","index","aColor","bColor","round","trim","putShadingPattern","funcObjectNumber","putTilingPattern","deferredResourceDictionaryIds","resourcesObjectId","patternObjectId","resourcesOid","objectOid","putPatterns","putGState","putGStates","gStateKey","putXobjectDict","putEncryptionDict","putFontDict","putShadingPatternDict","putTilingPatternDict","putGStatesDict","putResourceDictionary","objectIds","putResources","Number","MAX_SAFE_INTEGER","putAdditionalObjects","addFontToFontDictionary","fontName","addFont","isStandardFont","metadata","instance","addFonts","arrayOfFonts","l","parts","dictionary","SAFE","__safeCall","fn","foo","__safeCallWrapper","stack","m","alert","bar","to8bitStream","text","flags","sourceEncoding","encodingBlock","outputEncoding","newtext","isUnicode","ch","bch","autoencode","codePages","noBOM","pdfEscape","beginPage","_setPage","_addPage","parmFormat","parmOrientation","dimensions","min","setLineWidth","lineWidth","strokeColor","lineCapID","lineJoinID","_deletePage","splice","setPage","getNumberOfPages","getFont","fontNameLowerCase","disableWarning","noFallback","putInfo","version","putCatalog","tmpRootDictionaryObjId","pcn","putTrailer","putHeader","putXRef","buildDocument","offsetOfXRef","getBlob","output","filename","save","dataURI","pdfDocument","unescape","encodeURIComponent","pdfObjectUrl","integrity","htmlForNewWindow","JSON","stringify","nW","pdfJsUrl","htmlForPDFjsNewWindow","PDFjsNewWindow","scope","documentElement","querySelector","contentWindow","PDFViewerApplication","htmlForDataURLNewWindow","dataURLNewWindow","hasHotfix","hotfixName","getEncryptor","getPageInfo","pageNumberOneBased","getPageInfoByObjId","getCurrentPageInfo","addPage","insertPage","beforePage","movePage","targetPage","tmpPages","tmpPagesContext","deletePage","transform","payload","da","angle","align","charSpace","maxWidth","horizontalScale","tmp","transformationMatrix","xtra","isHex","lineHeight","lineHeightFactor","ESC","TabLen","transformTextToSpecialArray","sa","concat","curDa","shift","processTextByFunction","processingFunction","tmpResult","textIsOfTypeString","tmpTextIsOfTypeString","match","descent","baseline","splitTextToSize","reduce","acc","textLine","mutex","PI","rotationDirection","cos","sin","activeCharSpace","setCharSpace","getCharSpace","lang","renderingMode","parmRenderingMode","stroke","usedRenderingMode","leading","pageWidth","pageSize","getWidth","activeFont","lineWidths","assign","wordSpacingPerLine","newY","getStringUnitWidth","doKerning","prevWidth","newX","getHorizontalCoordinate","getVerticalCoordinate","doReversing","posX","posY","reverse","activeFontEncoding","STRING","ARRAY","variant","wordSpacing","generatePosition","parmPosX","parmPosY","parmTransformationMatrix","position","lineIndex","textColor","clip","rule","clipEvenOdd","discardPath","isValidStyle","style","validStyleVariants","setDefaultPathOperation","operator","getStyle","op","close","fill","fillWithOptionalPattern","fillEvenOdd","fillStroke","fillStrokeEvenOdd","fillWithPattern","putStyle","cloneTilingPattern","patternData","patternId","clipRuleFromStyle","setGState","moveTo","lineTo","curveTo","x1","y1","x2","y2","x3","y3","line","lines","closed","scalex","scaley","leg","x4","y4","path","triangle","roundedRect","rx","ry","MyArc","SQRT2","ellipse","lx","ly","circle","setFont","getFontEntry","getFontList","list","encodingOptions","getLineWidth","setLineDash","setLineDashPattern","dashArray","dashPhase","getLineHeight","setLineHeightFactor","getLineHeightFactor","pageHeight","getHorizontalCoordinateString","getVerticalCoordinateString","getStrokeColor","getDrawColor","setStrokeColor","setDrawColor","fillColor","getFillColor","setFillColor","getTextColor","setTextColor","CapJoinStyles","butt","but","miter","rounded","projecting","project","square","bevel","setLineCap","setLineJoin","setLineMiterLimit","setMiterLimit","addGState","duplicate","fontState","setCurrentTransformationMatrix","comment","_x","enumerable","_y","_type","_w","_h","RenderTarget","getPageWidth","setPageWidth","setPageHeight","endFormObject","newXObject","xObjectId","beginFormObject","doFormObject","getFormObject","returnPromise","unload","Promise","resolve","reject","plugin","newEvents","eventname","handler_and_args","getCoordinateString","collections","setWidth","getHeight","setHeight","getPDFVersion","configurable","jsPDFAPI","pdfUnescape","f5","__acroform__","inherit","child","parent","create","constructor","createFormXObject","formObject","xobj","AcroFormXObject","AcroFormAppearance","BBox","setBit","bitPosition","bitMask","clearBit","getBit","getBitForPdf","setBitForPdf","clearBitForPdf","calculateCoordinates","coordinates","lowerLeft_X","lowerLeft_Y","upperRight_X","upperRight_Y","calculateAppearanceStream","appearanceStreamContent","V","DV","_V","calcRes","calculateX","maxFontSize","returnValue","textSplit","multiline","word","lineSpacing","borderPadding","isSmallerThanWidth","lastLine","TextWidth","calculateFontSpace","FieldWidth","FontSize","textHeight","startY","startX","lastY","firstWordInLine","lastWordInLine","lastLength","currWord","lineCount","Line","isWithNewLine","nextLineIsSmaller","isLastWord","currLine","textAlign","acroformPluginTemplate","fields","xForms","acroFormDictionaryRoot","printedOut","isInitialized","annotReferenceCallback","acroformPlugin","Fields","hasAnnotation","createAnnotationReference","putForm","object","findEntry","entry","annotations","find","putCatalogCallback","AcroFormDictionaryCallback","_eventID","createFieldCallback","fieldArray","standardFields","Kids","fieldObject","keyValueList","oldRect","Rect","DA","createDefaultAppearanceStream","getKeyValueListForStream","hasAppearanceStream","appearance","appearanceStreamString","createXFormObjectCallback","initializeAcroForm","AcroFormField","FieldNum","parse","AcroFormDictionary","arrayToPdfArray","array","getMatches","regex","matches","pdfArrayToStringArray","toPdfString","AcroFormPDFObject","_objId","_scope","writable","getOwnPropertyNames","filter","getOwnPropertyDescriptor","_BBox","_stream","_Kids","_DA","_F","Boolean","F","_Ff","_Rect","_FT","_T","AcroFormChildClass","_fontName","_fontStyle","_fontSize","_maxFontSize","_color","AcroFormTextField","_DV","AcroFormButton","_hasAppearanceStream","_page","Ff","_Q","AcroFormChoiceField","FT","_TI","_Opt","getOptions","setOptions","sort","addOption","removeOption","allEntries","combo","AcroFormListBox","AcroFormComboBox","AcroFormEditBox","edit","_MK","CA","_AS","AcroFormPushButton","pushButton","AcroFormRadioButton","radio","_parent","_optionName","caption","appearanceState","_AppearanceType","RadioButton","Circle","createAppearanceStream","optionName","setAppearance","getCA","createOption","Parent","addField","AcroFormCheckBox","CheckBox","_MaxLen","isInteger","AcroFormPasswordField","password","N","On","YesNormal","D","YesPushDown","Off","OffPushDown","encodedColor","DotRadius","Bezier_C","DotRadiusBezier","kc","dc","Cross","cross","calculateCross","AcroForm","ChoiceField","ListBox","ComboBox","EditBox","Button","PushButton","TextField","PasswordField","Appearance","namespace","__addimage__","UNKNOWN","ARRAY_APPLY_BATCH","imageFileTypeHeaders","PNG","TIFF","JPEG","JPEG2000","GIF87a","GIF89a","WEBP","BMP","getImageFileTypeByImageData","imageData","fallbackFormat","headerSchemata","compareResult","fileType","Uint8ClampedArray","isArrayBufferView","putImage","image","colorSpace","color_spaces","INDEXED","palette","sMask","DEVICE_CMYK","bitsPerComponent","decodeParameters","transparency","predictor","arrayBufferToBinaryString","putResourcesCallback","images","putXObjectsDictCallback","checkCompressValue","image_compression","NONE","initialize","getImages","getImageIndex","notDefined","generateAliasFromImageData","sHashCode","isImageTypeSupported","isDOMElement","nodeType","getImageDataFromElement","element","nodeName","hasAttribute","src","getAttribute","tmpImageData","loadFile","mimeType","toDataURL","checkImagesForAlias","alias","determineWidthAndHeight","writeImageToPDF","rotation","dims","coord","vcoord","f4","rotationTransformationMatrix","DEVICE_RGB","DEVICE_GRAY","CAL_GREY","CAL_RGB","LAB","ICC_BASED","PATTERN","SEPARATION","DEVICE_N","decode","DCT_DECODE","FLATE_DECODE","LZW_DECODE","JPX_DECODE","JBIG2_DECODE","ASCII85_DECODE","ASCII_HEX_DECODE","RUN_LENGTH_DECODE","CCITT_FAX_DECODE","FAST","MEDIUM","SLOW","hash","byteLength","validateStringAsBase64","possibleBase64String","extractImageFromDataUrl","dataUrl","dataUrlParts","extractedInfo","charset","supportsArrayBuffer","isArrayBuffer","Uint32Array","Int8Array","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","binaryStringToUint8Array","binary_string","buffer","buf","subarray","addImage","compression","processImageData","dataAsBinaryString","convertBase64ToBinaryString","stringData","throwError","base64Info","rawData","getImageProperties","notEmpty","addPageData","pageInfo","putPageData","pageAnnos","anno","found","escape","objText","objPopup","encryptorText","bounds","contents","popoff","loc","_nameMap","top","finalBounds","info","magFactor","left","createAnnotation","link","textWithLink","totalLineWidth","getTextWidth","linkHeight","linkWidth","numOfLines","ceil","txtWidth","arabicSubstitionA","ligatures","arabic_diacritics","alfletter","noChangeInForm","isolatedForm","finalForm","initialForm","medialForm","__arabicParser__","isInArabicSubstitutionA","isArabicLetter","isArabicEndLetter","isArabicAlfLetter","arabicLetterHasIsolatedForm","arabicLetterHasFinalForm","arabicLetterHasInitialForm","arabicLetterHasMedialForm","resolveLigatures","letters","tmpLigatures","effectedLetters","isArabicDiacritic","getCorrectForm","currentChar","beforeChar","nextChar","parseArabic","currentLetter","prevLetter","nextLetter","words","newWords","processArabic","tmpText","autoPrint","refAutoPrintTag","addJS","Canvas","jsPdfInstance","_width","getContext","pageWrapXEnabled","pageWrapX","_height","pageWrapYEnabled","pageWrapY","_childNodes","_style","contextType","contextAttributes","pdf","context2d","_canvas","canvas","NO_MARGINS","bottom","right","px2pt","printingHeaderRow","_initialize","__cell__","headerFunction","margins","_reset","lastCell","Cell","_text","_lineNumber","_align","lineNumber","toArray","setHeaderFunction","func","getTextDimensions","amountOfLines","tempWidth","max","cellAddPage","cell","currentCell","tableHeaderRow","printHeaders","printHeaderRow","table","headers","config","headerNames","headerLabels","headerAligns","columnMatrix","columnWidths","column","columnMinWidths","tableHeaderConfigs","autoSize","css","headerBackgroundColor","headerTextColor","table_font_size","header","prompt","headerName","rec","row","rowHeight","calculateLineHeight","setTableHeaderRow","pv","cv","rowStart","Function","cellData","cellStart","col","table_x","table_y","model","new_page","tableHeaderCell","tempHeaderConf","currentTextColor","toLookup","arr","lookup","fontStyleOrder","italic","oblique","normal","fontStretchOrder","fontStretchLookup","fontWeights","fontWeightsLookup","normalizeFontStretch","stretch","normalizeFontStyle","normalizeFontWeight","weight","normalizeFontFace","fontFace","family","ref","buildFontFaceMap","fontFaces","normalized","searchFromPivot","matchingSet","order","pivot","dir","resolveFontStretch","resolveFontStyle","ordering","resolveFontWeight","defaultGenericFontFamilies","fixed","monospace","terminal","cursive","fantasy","serif","systemFonts","icon","menu","ruleToString","resolveFontFace","fontFaceMap","rules","defaultFontFamily","genericFontFamilies","eatWhiteSpace","input","trimLeft","parseQuotedFontFamily","quote","current","parseNonQuotedFontFamily","defaultFont","parseFontFamily","parsed","remaining","ContextLayer","ctx","isStrokeTransparent","strokeOpacity","strokeStyle","fillStyle","isFillTransparent","fillOpacity","textBaseline","lineJoin","lineCap","globalCompositeOperation","globalAlpha","clip_path","currentPoint","miterLimit","lastPoint","lineDashOffset","lineDash","margin","prevPageLastElemOffset","ignoreClearRect","_ctx","Context2D","parentNode","_pdf","_pageWrapXEnabled","_pageWrapYEnabled","_posX","_posY","_autoPaging","lastBreak","pageBreaks","_ctxStack","rgba","getRGBA","_fontFaceMap","getFontFaceMap","fontMap","convertedFontFaces","convertToFontFaces","styles","_fontFaces","fontVariant","fontFamily","rxFontSize","fontSizeUnit","jsPdfFontName","fallbackFonts","arial","Arial","verdana","Verdana","helvetica","Helvetica","getLineDash","pathPreProcess","beginPath","closePath","pathBegin","quadraticCurveTo","cpx","cpy","pt0","bezierCurveTo","cp1x","cp1y","cp2x","cp2y","arc","radius","startAngle","endAngle","counterclockwise","isIdentity","xpt","x_radPt","x_radPt0","pow","arcTo","fillRect","strokeRect","clearRect","doStackPush","tmpPageNumber","ctxStack","doStackPop","rxRgb","rxRgba","rxTransparent","isCanvasGradient","getColor","fillText","degs","rad2deg","putText","strokeText","measureText","TextMetrics","scalewidth","scaleheight","setTransform","hasMargins","drawImage","img","swidth","sheight","imageProperties","factorX","factorY","clipFactorX","clipFactorY","decomposedTransformationMatrix","xRect","pageArray","getPagesByPath","sortPages","clipPath","autoPaging","pageWidthMinusMargins","topMargin","firstPageHeight","pageHeightMinusMargins","previousPageHeightSum","tmpPaths","pathPositionRedo","drawPaths","tmpRect","needsClipping","yOffset","rectOfQuadraticCurve","getQuadraticCurveBoundary","rectOfBezierCurve","getBezierCurveBoundary","paths","isClip","oldLineWidth","origPath","xPath","tmpPath","moves","delta","begin","start","deltas","iii","began","arcs","drawArc","drawLine","drawLines","doClip","getBaseline","getTextBottom","yBaseLine","createLinearGradient","canvasGradient","colorStops","addColorStop","createPattern","createRadialGradient","includeMove","curves","createArc","curve","doMove","drawCurve","textDimensions","yBottom","yTop","baselineRect","textBounds","oldSize","pageHeightMinusBottomMargin","pageWidthMinusRightMargin","textBoundsOnPage","doSlice","croppedText","baseLineRectOnPage","prevX","prevY","anticlockwise","EPSILON","twoPi","halfPi","totalAngle","sgn","remain","createSmallArc","q1","q2","k2","ar","cos_ar","sin_ar","ey","midX1","midY1","midX2","midY2","resultX1","resultX2","resultY1","resultY2","ax","ay","bx","by","cx","cy","dx","dy","tobx","toby","tocx","tocy","todx","tody","px","py","qx","qy","minx","miny","maxx","maxy","toqx","toqy","torx","tory","totx","toty","getPrevLineDashValue","prevLineDash","nextLineDash","ASCII85Encode","ASCII85Decode","z","ASCIIHexEncode","ASCIIHexDecode","regexCheckIfHex","RegExp","FlateEncode","zlibSync","origData","filterChain","sync","browserRequest","loadImageFile","request","sanitizeUnicode","dataLength","charArray","StringFromCharCode","overrideMimeType","responseText","loadHtml2Canvas","catch","then","html2canvas","default","loadDomPurify","dompurify","objType","tagName","opt","el","className","innerHTML","sanitize","cloneNode","javascriptEnabled","createTextNode","nodeValue","firstChild","nextSibling","appendChild","addEventListener","scrollTop","scrollLeft","Worker","root","convert","template","setProgress","promise","__proto__","prop","container","overlay","progress","val","enableLinks","backgroundColor","from","getType","from_main","to","toContainer","toCanvas","toImg","toPdf","prereqs","checkSrc","checkPageSize","setPageSize","thenList","toContainer_main","overlayCSS","overflow","zIndex","containerCSS","display","windowWidth","clientWidth","scrollWidth","offsetWidth","source","scrollHeight","offsetHeight","clientHeight","clear","border","float","checkContainer","contains","toCanvas_main","onrendered","toCanvas_post","onRendered","removeChild","toContext2d","toContext2d_main","async","allowTaint","scrollX","scrollY","imageTimeout","logging","proxy","removeContainer","foreignObjectRendering","useCORS","windowHeight","toContext2d_post","checkCanvas","toImg_main","imgData","quality","checkContext2d","toPdf_main","outputImg","outputPdf","checkPdf","outputPdf_main","checkImg","outputImg_main","save_main","doCallback","doCallback_main","fns","set_prop","setMargin","set_jsPDF","set_opt","set_main","cbk","get_main","setMargin_main","toPx","setPageSize_main","getPageSize","inner","ratio","updateProgress","onFulfilled","onRejected","thenCore","then_main","then_pre","then_post","thenBase","isNative","selfPromise","returnVal","thenExternal","thenList_forEach","catchExternal","msg","error_main","using","export","run","format_as_string","err","html","worker","jsNamesObj","jsJsObj","javascript","namesOid","outline","children","render","createNamedDestinations","totalPages","dests","names2Oid","makeRef","add","item","genIds_r","renderRoot","renderItems","objStart","count_r","objEnd","makeString","markers","getJpegInfo","numcomponents","blockLength","processJPEG","bpc","APNG_BLEND_OP_SOURCE","APNG_DISPOSE_OP_BACKGROUND","APNG_DISPOSE_OP_PREVIOUS","makeImage","scratchCanvas","scratchCtx","chunkSize","palLen","delayDen","delayNum","frame","section","palShort","_i","_j","_ref","pos","animation","readUInt32","_results","colorType","compressionMethod","filterMethod","interlaceMethod","numFrames","numPlays","Infinity","frames","read","xOffset","readUInt16","delay","disposeOp","blendOp","indexed","grayscale","rgb","hasAlphaChannel","pixelBitlength","decodePixels","pixelBytes","fullPixels","_this","unzlibSync","pass","x0","y0","abyte","pa","paeth","pb","pc","pixels","scanlineLength","upper","upperLeft","_k","_l","_m","isFull","fullPos","partPos","decodePalette","ret","_ref1","copyToImageData","alpha","_decodedPalette","hasBrowserCanvas","putImageData","Image","decodeFrames","_len","createImageData","renderFrame","prev","animate","doFrame","frameNumber","_timeout","stopAnimation","clearTimeout","_png","canCompress","hasCompressionJS","compressBytes","lineLength","colorsPerPixel","level","filter_method","filterUp","filterSub","filterAverage","filterPaeth","applyPngFilterMethod","dat","filter_methods","getFilterMethods","prevLine","results","ind","getIndexOfSmallestSum","filterNone","up","upLeft","paethPredictor","pLeft","pUp","pUpLeft","arrays","sum","getPredictorFromCompression","processPNG","trns","pal","smask","alphaData","hasColors","pixel","pDiff","pbl","trans","total","GifReader","pf0","global_palette_flag","num_global_colors_pow2","num_global_colors","background","global_palette_offset","global_palette_size","no_eof","transparent_index","disposal","loop_count","block_size","pf1","pf2","local_palette_flag","interlace_flag","num_local_colors_pow2","num_local_colors","palette_offset","palette_size","has_local_palette","data_offset","data_length","interlaced","loopCount","frameInfo","frame_num","decodeAndBlitFrameBGRA","num_pixels","index_stream","GifReaderLZWOutputIndexStream","framewidth","framestride","xleft","opbeg","opend","scanstride","interlaceskip","il","decodeAndBlitFrameRGBA","code_stream","output_length","min_code_size","clear_code","eoi_code","next_code","cur_code_size","code_mask","cur_shift","cur","subblock_size","code_table","prev_code","code","chase_code","chase_length","chase","op_end","JPEGEncoder","ffloor","YTable","UVTable","fdtbl_Y","fdtbl_UV","YDC_HT","UVDC_HT","YAC_HT","UVAC_HT","bitcode","category","outputfDCTQuant","DU","byteout","bytenew","bytepos","YDU","UDU","VDU","clt","RGB_YUV_TABLE","currentQuality","ZigZag","std_dc_luminance_nrcodes","std_dc_luminance_values","std_ac_luminance_nrcodes","std_ac_luminance_values","std_dc_chrominance_nrcodes","std_dc_chrominance_values","std_ac_chrominance_nrcodes","std_ac_chrominance_values","initQuantTables","sf","YQT","UVQT","u","aasf","computeHuffmanTbl","nrcodes","std_table","codevalue","pos_in_table","HT","initHuffmanTbl","initCategoryNumber","nrlower","nrupper","cat","nr","nrneg","initRGBYUVTable","writeBits","bs","posval","writeByte","writeWord","fDCTQuant","fdtbl","d0","d1","d2","d3","d4","d5","d6","d7","dataOff","I8","I64","tmp0","tmp7","tmp1","tmp6","tmp2","tmp5","tmp3","tmp4","tmp10","tmp13","tmp11","tmp12","z1","z5","z2","z4","z3","z11","z13","tmp0p2","tmp7p2","tmp1p2","tmp6p2","tmp2p2","tmp5p2","tmp3p2","tmp4p2","tmp10p2","tmp13p2","tmp11p2","tmp12p2","z1p2","z5p2","z2p2","z4p2","z3p2","z11p2","z13p2","writeAPP0","writeSOF0","writeDQT","writeDHT","o","writeSOS","processDU","CDU","DC","HTDC","HTAC","EOB","M16zeroes","I16","I63","DU_DCT","Diff","end0pos","lng","startpos","nrzeroes","nrmarker","initCharLookupTable","sfcc","encode","setQuality","DCY","DCU","DCV","displayName","quadWidth","fillbits","init","processGIF89A","qu","rawImageData","encoder","processGIF87A","BmpDecoder","is_with_alpha","datav","DataView","bottom_up","flag","parseHeader","parseBGR","fileSize","getUint32","reserved","headerSize","getInt32","planes","getUint16","bitPP","rawSize","hr","vr","importantColors","getUint8","quad","bitn","bit1","xlen","mode","bit4","before","after","bit8","bit15","dif_w","_11111","_1_5","B","bit16","_111111","_1_6","bit24","bit32","getData","processBMP","WebPDecoder","fa","L","J","H","I","Z","M","wa","wb","Ed","ma","_WebPDecoder","Fd","Ub","G","jc","Qb","qb","nd","pd","xb","Ca","Ka","oa","Jd","Yc","Zc","Qa","na","K","ca","cb","Sb","Ra","bb","Vb","ob","db","Gd","Hd","Wb","Sa","Xb","Id","ra","Ta","Yb","Ha","Zb","X","Mb","Xa","$b","ac","bc","xa","yb","ud","hd","jd","aa","eb","Ia","cc","Kd","Ld","ec","Ea","Md","Nd","Od","Pd","Qd","fb","gb","hb","zb","Ab","Ja","Bb","Rd","A","Sd","ea","Tc","Cd","lb","Db","W","Cb","S","RGBA","kb","sd","Td","Ud","fd","ib","bd","cd","Da","Vd","T","Wd","ba","ka","Mc","Nc","fc","Rc","Xd","ya","Kb","za","gc","Ua","Va","memory","Ib","Jb","hc","Oa","ic","Aa","Yd","Ba","Wa","Zd","$d","ae","ta","Eb","be","ga","ce","Dc","lc","mc","nc","de","ua","ub","ha","xc","vc","md","Ya","oc","C","ee","E","Q","fe","qc","Fb","rc","ge","va","Ma","sc","Gb","tc","uc","Hb","wc","yc","zc","qd","rd","ia","tb","he","$","Pb","wd","xd","vb","ie","Ac","Bc","je","Cc","VP8LMapColor32b","ke","VP8LMapColor8b","le","rb","Oc","R","me","qa","Y","la","ja","Fa","ne","sb","La","Za","$a","jb","mb","oe","pe","nb","qe","Pa","Ga","Na","Ec","se","Fc","te","ue","yd","td","Rb","ve","we","Lb","Gc","xe","Wc","Xc","ye","Pc","Tb","zd","vd","od","ld","dd","Hc","ze","Sc","Qc","ad","Ob","Ad","Dd","Ae","Nb","Ic","Be","Kc","ed","$c","Jc","Bd","gd","Uc","Vc","put","Ce","De","Ee","Fe","Ge","He","Ie","Lc","Je","Ke","Le","Me","Ne","Oe","Pe","Qe","Re","Se","Te","Ue","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","df","ef","gf","hf","jf","kf","lf","mf","nf","of","pf","qf","rf","tf","uf","vf","wf","xf","yf","zf","Af","Bf","kd","Cf","Df","Ef","Gf","Hf","If","Jf","Kf","Lf","Mf","Nf","Of","Pf","Predictor0","Predictor1","Predictor2","Predictor3","Predictor4","Predictor5","Predictor6","Predictor7","Predictor8","Predictor9","Predictor10","Predictor11","Predictor12","Predictor13","PredictorAdd0","PredictorAdd1","PredictorAdd2","ColorIndexInverseTransform","MapARGB","VP8LColorIndexInverseTransformAlpha","MapAlpha","VP8LPredictorsAdd","VP8LPredictors","VP8LPredictorsAdd_C","VP8LPredictors_C","UpsampleRgbLinePair","UpsampleBgrLinePair","UpsampleRgbaLinePair","UpsampleBgraLinePair","UpsampleArgbLinePair","UpsampleRgba4444LinePair","UpsampleRgb565LinePair","Qf","WebPDecodeRGBA","memcmp","data_off","GetTag","GetLE16","GetLE24","GetLE32","WebPRiffParser","src_off","imagearray","alpha_chunk","alpha_size","alpha_offset","riff_size","fourcc","payload_size","payload_size_padded","feature_flags","src_off_","canvas_width","canvas_height","bgcolor","offset_x","offset_y","duration","blend","dispose","temp","webpdecoder","processWEBP","processRGBA","imagePixels","rgbOut","alphaOut","outIndex","alphaIndex","rgbData","setLanguage","langCode","langCodes","sq","an","hy","as","ast","az","eu","bn","br","bg","my","zh","co","cr","cs","nl","en","eo","et","fo","fj","fi","fr","fy","fur","gl","gu","ht","hi","hu","is","iu","it","kn","ks","kk","km","ky","tlh","ko","lv","lt","mk","ms","ml","mt","mi","mr","mo","nv","ng","no","nn","or","om","pl","rm","ro","ru","sz","sg","si","sr","sk","sl","so","es","sw","sv","tt","th","tig","ts","tn","tr","tk","uk","hsb","ur","vi","vo","xh","ji","zu","languageSettings","isSubscribed","languageCode","getCharWidthsArray","widths","Unicode","widthsFractionOf","fof","kerning","kerningFractionOf","kerningValue","char_code","prior_char_code","default_char_width","widthOfString","widthOfGlyph","characterToGlyph","splitLongWord","widths_array","firstLineMaxLen","maxLen","answer","workingLen","startOfLine","splitParagraphIntoLines","maxlen","line_length","textIndent","separator_length","current_word_length","spaceCharWidth","lineIndent","pad","wrds","wrd","idx","postProcess","ln","fsize","newOptions","paragraphs","fontUnit_maxLen","__fontmetrics__","decoded","encoded","mappingUncompress","mappingCompress","vals","keystring","valuestring","numberprefix","uncompress","sign","stringparts","activeobject","parentchain","parent_key_pair","keyparts","valueparts","datalen","WinAnsiEncoding","encodings","Courier","fontMetrics","Symbol","ZapfDingbats","metrics","file","TTFFont","glyIdsUsed","existsFileInVFS","getFileFromVFS","loadCanvg","canvg","addSvgAsImage","svg","ignoreMouse","ignoreAnimation","ignoreDimensions","doc","fromString","putTotalPages","pageExpression","replaceExpression","totalNumberOfPages","pdfEscape16","viewerPreferences","doReset","configuration","configurationTemplate","HideToolbar","defaultValue","explicitSet","valueSet","HideMenubar","HideWindowUI","FitWindow","CenterWindow","DisplayDocTitle","NonFullScreenPageMode","Direction","ViewArea","ViewClip","PrintArea","PrintClip","PrintScaling","Duplex","PickTrayByPDFSize","PrintPageRange","NumCopies","configurationKeys","rangeArray","isValid","method","arrayContainsElement","iterator","viewerpreferences","pdfDict","vPref","postPutResources","xmpmeta_beginning","rdf_beginning","__metadata__","namespaceuri","rdf_ending","xmpmeta_ending","utf8_xmpmeta_beginning","utf8_rdf_beginning","utf8_metadata","utf8_rdf_ending","utf8_xmpmeta_ending","total_len","metadata_object_number","addMetadata","padz","toUnicode","toUnicodeCmap","codes","range","unicode","unicodeMap","identityHFunction","subset","pdfOutput","pdfOutput2","fontTable","cmap","cmapData","fontDescriptor","PDFObject","bbox","stemV","italicAngle","ascender","decender","capHeight","DescendantFont","winAnsiEncodingFunction","hmtx","head","unitsPerEm","utf8TextFunction","cmapConfirm","strText","codeMap","utf8EscapeFunction","parms","_initializeVFS","vFS","addFileToVFS","filecontent","bidiUnicodeTypes","__bidiEngine__","_UNICODE_TYPES","_bidiUnicodeTypes","_STATE_TABLE_LTR","_STATE_TABLE_RTL","_TYPE_NAMES_MAP","EN","AN","_UNICODE_RANGES_MAP","_SWAP_TABLE","_LTR_RANGES_REG_EXPR","_lastArabic","_hasUbatB","_hasUbatS","DIR_LTR","DIR_RTL","_isInVisual","_isInRtl","_isOutVisual","_isOutRtl","_isSymmetricSwapping","_dir","_init","sourceToTargetMap","_isContextualDirRtl","_getCharType","rangeIdx","charType","_resolveCharType","chars","types","resolvedTypes","cType","wType","nType","rtlCandidate","_handleUbatS","levels","_invertString","_computeLevels","hiLevel","params","action","condition","newLevel","prevState","condPos","newState","stateTable","_invertByLevel","high","end","low","_symmetricSwap","_reorder","doBidiReorder","isSymmetricSwappingOrig","isInputVisual","isOutputVisual","isInputRtl","isOutputRtl","isSymmetricSwapping","bidiEngine","bidiEngineFunction","Data","readString","Subset","registerTTF","directory","Directory","HeadTable","NameTable","CmapTable","hhea","HheaTable","maxp","MaxpTable","HmtxTable","post","PostTable","os2","OS2Table","loca","LocaTable","glyf","GlyfTable","exists","lineGap","xMin","yMin","xMax","yMax","raw","italic_angle","xHeight","familyClass","isSerif","isScript","isFixedPitch","character","glyph","forGlyph","advance","includeGap","gap","readByte","writeUInt32","readInt32","int","writeInt32","writeUInt16","readInt16","writeInt16","writeString","readShort","writeShort","readLongLong","writeLongLong","readInt","writeInt","checksum","scalarType","tableCount","searchRange","entrySelector","rangeShift","tables","tag","adjustment","directoryLength","headOffset","log2","tableData","__slice","Table","__hasProp","__extends","ctor","__super__","_super","revision","checkSumAdjustment","magicNumber","created","modified","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","CmapEntry","endCode","glyphId","glyphIds","idDelta","idRangeOffset","saveOffset","segCount","segCountX2","startCode","platformID","encodingID","language","charmap","charMap","diff","endCodes","glyphIDs","indexes","last","nextID","old","rangeOffsets","startCodes","startGlyph","subtable","_len1","_len2","_len3","_len4","_len5","_len6","_len7","_n","_name","_o","_p","_q","new","maxGlyphID","LN2","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","numberOfMetrics","averageCharWidth","weightClass","widthClass","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","panose","charRange","vendorID","selection","firstCharIndex","lastCharIndex","ascent","winAscent","winDescent","codePageRange","defaultChar","breakChar","maxContext","numberOfGlyphs","underlinePosition","underlineThickness","minMemType42","maxMemType42","minMemType1","maxMemType1","glyphNameIndex","names","_results1","numGlyphs","NameEntry","languageID","entries","stringOffset","strings","nameID","copyright","fontSubfamily","uniqueSubfamily","postscriptName","trademark","manufacturer","designer","description","vendorUrl","designerUrl","license","licenseUrl","preferredFamily","preferredSubfamily","compatibleFull","sampleText","maxPoints","maxContours","maxCompositePoints","maxComponentContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","lsbCount","lsb","leftSideBearings","cache","glyphFor","numberOfContours","lengthOf","CompoundGlyph","SimpleGlyph","glyphs","mapping","old2new","compound","ARG_1_AND_2_ARE_WORDS","MORE_COMPONENTS","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_SCALE","WE_HAVE_A_TWO_BY_TWO","glyphOffsets","activeGlyphs","glyfPtr","listGlyf","newLocaTable","invert","unicodes","next","generateCmap","roman","unicodeCmap","glyphsFor","additionalIDs","glyID","ids","new2old","newIDs","nextGlyphID","oldID","oldIDs","items","isString","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds"],"mappings":"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"}